Hallo, ich versuche im Moment, in einem kleinen SW-Projekt meine Programmierkenntnisse zu erweitern. Dabei kommt auch eine DB zur Nutzung (SQLITE3), wo ich nun allerdings vor einem Problem stehe. Das Problem ist sicherlich trivial, mir würde der passende Recherchebegriff reichen. Ich habe einen Datensatz in der Tabelle Leute. Jeder davon besitzt Bücher. ID Name Bücher 1 Hans 1,1,3 2 Lukas 1,3,4 ID Buchname 1 Harry 2 Potter 3 Der Stein 4 Der Weisen So, über die Spalte Bücher weise ich den Leuten Ihre Besitztümer zu. Allerdings ist das Handling programmiertechnisch schwer: - Es sind immer Listen, die ich auswerten muss (1,1,3) - ich muss immer die Anzahlen zählen, sortieren, und dann wieder auf die nächste Tabelle referenzieren (gebe mir Name von Buch 1,....) - Die Zuweisung kann schnell fehlerbehaftet sein (z.B. gibt Nutzer 1,1.3 ein) .... Gibt es für solche Referenzierungsthemen andere/bessere Methoden? Objektzuweisungen, keine Ahnung? Falls von Relevanz: Sprache ist Python. VG
So etwas macht man normalerweise mit einer x:y Relation. Du erstellst eine extra Tabelle die nur die Zuordnungen enthaelt. In Deinem Bsp. IDName IDBuch 1 1 1 3 2 1 2 3 2 4 Darf jemand das gleiche Buch 2x haben (wg. Hans 1,1,3)?
Du brauchst eine n:m Beziehung. Eine zusätzliche Tabelle "UserID" und "BookID" für jedes Exemplar. Lies ein Buch über relationale Datenbanken...
Soweit ich es kenne, sollte man eine Datenbank normalisieren: https://de.wikipedia.org/wiki/Normalisierung_(Datenbank) Die Listen wie 1,1,3 haben dann in einer Tabelle nichts zu tun. Du hast dann 3 Tabellen: Tabelle 1 Bücher BuchID Buchname (ISBN, Autor, Erscheinungsdatum) Tabelle 2 Person PersonenID Personenname (Adresse, Geburtsdatum) Tabelle3 Besitz PersonenID BuchID
DB-Bär schrieb: > Das Problem ist sicherlich trivial, Würde ich nicht sagen, nein. > mir würde der passende Recherchebegriff reichen. "Normalisierung (Datenbank)".
Interpretiere ich Dich da richtig? Du hast eine Datenbanktabelle für die "Leute" und eine für die "Bücher" - und in der Tabelle der "Leute" hast Du eine Spalte bzw. ein Feld "Bücher", das eine durch Kommata getrennte Liste der Bücher enthält, welche diese Person besitzt? Falls ja: Das macht man so nicht - eine derartige Beziehung zwischen Leuten und Büchern wird "m:n" bzw "Many-to-many" genannt - und in Datenbanken mit einer zusätzlichen Tabelle umgesetzt, die in diesem Fall die Daten enthalten würde, welche Person welches Buch besitzt: ("Leute"-Tabelle) ID Name 1 Hans 2 Lukas ("Bücher"-Tabelle) ID Buchname 1 Harry 2 Potter 3 Der Stein 4 Der Weisen ("Person-besitzt-Buch"-Tabelle) ID Person Buch 1 1 1 2 1 1 3 1 3 4 2 1 5 2 3 5 2 4
:
Bearbeitet durch User
Joachim S. schrieb: > ("Person-besitzt-Buch"-Tabelle) > ID Person Buch Die Spalte "ID" wird gerne weggelassen. Sieht man auch an den anderen Beispielen hier. Ich empfehle, sie anzulegen, weil man sich bei UPDATE und DELETE damit schon einfacher tut. Besonders, wenn eine Person ein Buch mehrfach ausleihen kann.
Jan H. schrieb: > Joachim S. schrieb: >> ("Person-besitzt-Buch"-Tabelle) >> ID Person Buch > > Die Spalte "ID" wird gerne weggelassen. Sieht man auch an den anderen > Beispielen hier. Ich empfehle, sie anzulegen, weil man sich bei UPDATE > und DELETE damit schon einfacher tut. Besonders, wenn eine Person ein > Buch mehrfach ausleihen kann. Oder noch weitere Attribute relevant werden, so dass aus dieser simplen Zuordnung noch etwas mehr wird, beispielsweise "ausgeliehen bis" und man dann sowas hat Buch - Ausleihe - Person
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.