Datenbank - mehrere "Objekte" zuweisen

Gast #5505029
Lesenswert?
• ▲
▼
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
#5505043
Lesenswert?
• ▲
▼
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
Gast #5505356
Lesenswert?
• ▲
▼
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.