Erstellen einer Tabeller in MySQL DB für Login,Posten und Bildern

Code46

Erfahrenes Mitglied
Hi Leute,

ich bin ziehmlich schlecht was es in DB angeht. Deswegen wollte ich euch um Rat bitten,ob ihr vielleicht mir mal ein Feedback geben könntet ob meine DB richtig gestalltet ist.

Ich habe eine Webseite programmiert die ein Login bereich hat. Der User soll in seinem Login bereich etwas Posten können. Das Posten besteht aus einem Titel und einer Beschreibung und zusätzlich kann der User auch Bilder hochladen/löschen.

Ich habe 3 tabellen erstellt: users,item,image
Die habe ich verlinkt, aber bin mir nicht sicher ob ich das alles richtig gemacht habe.

Hier mal ein Screenshot:
DB_Design.jpg

DB_image.jpg

DB_item.jpg

DB_users.jpg

Wenn ihr mir weiterhelfen könntet währe ich sehr dankbar.
 
Die Verbindung imag e- users ist nicht notwendig. Diese Info hast bereits aus users->item->image

Tipp am Rande: Benenne die Tabellen entweder alle in Einzahl oder alle in Mehrzahl.
 
Eigentlich brauchst du in item keine image_id und in image keine user_id.

Ein oder mehrere images sind immer genau einem item zugeordnet, wenn ich das richtig verstanden habe. Deswegen bringt dir image_id in item nichts, denn was machst du, wenn zu einem Post mehrere Bilder hochgeladen wurden?

Die Angabe der user_id in image ist redundant; die braucht du hier nicht. ein image soll sich eindeutig einem item zuordnen lassen, und in item steht ja schon die user_id.

Ich würde im Übrigen empfehlen, das Bild nicht als Blob in die DB, sondern dort nur die URL des hochgeladenen Bildes zu speichern.
 
Ok macht sinn. Der User sollte auch mehrere Bilder hochladen können. Also entferne ich dann die sachen die du mir genannt hast. Muss ich da noch FOREIGN KEY und PRIMARY Key setzten ?

Ich habe das jetzt so gemacht ?
users: user_id(Primary Key und Auto-Incremant)
item: item_id(Primary Key und Auto-Incremant),user_id(Foreign Key)
image: image_id(Primary Key und Auto-Incremant), item_id(Foreign Key)

DB_Design.jpg
 
Zuletzt bearbeitet:
Nö das sollte so passen. Je nachdem wie nachher abgerufen werden soll könntest du noch Indizes auf einige Spalten setzen und, falls du InnoDB nutzt, könntest du noch den ON UPDATE/ON DELETE-Kram hinzufügen, aber an sich sollte das reichen.
 

Neue Beiträge

Zurück