Kleines Verständnisproblem

dartox

Erfahrenes Mitglied
Hallo Leute.

Gleich mal vorweg. Ich bin noch nicht so gut in Sachen MySQL und Datenbanken, da ich dem Thema früher immer aus dem Weg ging.

Allerdings möchte ich mich jetzt doch einarbeiten und habe gleich ein kleines Verständnisproblem.

Ich habe ein Projekt, indem User Ihre Bücher anhand einer Liste auswählen können welche Sie besitzen.

Also es gibt ja vorgegebene Bücher (Autor, Titel, Verlag, etc.) und User, die eine unterschiedliche Anzahl an Büchern haben.

Jetzt hab ich mich schon soweit eingelesen dass es sinnvoll ist die Datenbank zu normalisieren, was ich auch schon getan habe. Also ne Tabelle mit Bücher (eine ID für jedes Buch, als Primärschlüssel), darin beschrieben der Buchtitel und Autor. Eine zweite Tabelle mit Verlag (mehrere Verlage können das gleiche Buch haben, etc).

So. Aber jetz zu meinem Problem. User x hat 2 Bücher, User y hat 10 Bücher, User z hat 30 Bücher. Wie kann ich das jetzt in ne Tabelle einfügen? Für jeden User eine eigene Tabelle zu erstellen ist nicht sinnvoll oder? Aber ich kann ja nicht eine Tabelle "user" erstellen, die dann soviele Spalten wie es Bücher gibt hat.

Also ich stell mir das so vor.

Tabelle_user ......... buch A ......... buch B ........ buch ...
-------------------
user x: .................... x .................. x
user y: .................... x ..................................... x
user z: .................... x .................. x................ x
user ...:

Versteht man meine Frage? Oder kann ich einfach eine User-Tabelle machen in der eine einzige Spalte namens "Bücher" existiert, um dann in diese Spalte die Bücher-IDs eines Users einzutragen? Aber was ist wenn ein User an die Hunderte von Büchern besitzt, ist das für einen Spalteneintrag dann noch zumutbar?

Kleine Nebenfrage: Gibt es Projekte in denen mehrere Datenbanken verwendet werden, oder ist es üblich nur mit einer Datenbank, und verschiedenen Tabellen zu arbeiten? Wenn ja, bei welchen Projekten z.B. arbeitet man mit mehreren Datenbanken?

Vielen Dank.
LG, dartox
 
Zuletzt bearbeitet:
Du erstellst zwei Tabellen:

- Tabelle USER mit sämtlichen Angaben zu den einzelnen Usern und einer eindeutigen ID pro User
- Tabelle USER_BOOKS und hier kommt immer die ID des Users und die ID des entsprechenden Buches rein.

Für User X gibt es dann 2 Datensätze, für User Y gibt es 10 und für User Z gibt es 30.
 
Danke für deine schnelle Antwort.

Ok, das mit der Tabelle USER und den Daten des einzelnen users verstehe ich. Nur verstehe ich das mit USER_BOOKS wiederrum nicht (wie Anfangs auch).

Also ich erstell ne Tabelle USER_BOOKS, mit zwei Spalten, links user_id, rechts book_id?

Also visuell so:

user_id ...... book_id
-------------------------
user.x ........ book1
user.x ........ book2
user.y ........ book1
user.y ........ book4
user.z ........ book5
user.z ........ book6
...

?
 
Genau so habe ich es gemeint.

Du kannst dann z.B. Abfragen welche Bücher welcher User hat:

SQL:
SELECT user_id, book_id FROM user_books WHERE user_id = 'x'

oder welche/wieviele User ein bestimmtes Buch haben:

SQL:
SELECT user_id, book_id FROM user_books WHERE book_id = 'book5'
 
Ok, danke. Hab's verstanden :)

Momentan hab ich keine Frage mehr die mir einfällt, werde aber nicht lang auf mich warten lassen! :)

Lg, dartox.
 

Neue Beiträge

Zurück