Mehrere Spalten oder eher mehrere Zeilen (keys)

GoatMachine

Benutzer
Beiträge
23
Hallo, immer häufiger sehe ich in verschiedenen Systemen (WordPress, WBB Forum,...), wo die Datenbank anders strukturiert ist, als ich das mal gelernt habe. Da ich nämlich dabei bin, mein aktuelles Projekt komplett neu zu machen, überlege ich, in wie weit man die Datenbank verbessern/optimieren kann.

Gelernt habe ich eher:
Post (ID, Titel, Passwort, Status, Aktiv)

Immer häufiger sehe ich:
Post (ID, Titel, Aktiv)
Post_Meta (ID, Post_ID, Key, Wert)

Also nicht mehr, für jede Eigenschaft eine extra Spalte, sondern eine Tabelle, wo alle Daten aufgelistet werden. Des Weiteren stehen die Eigenschaften auch als String in der Tabelle und ziehen somit ja eigentlich mehr Speicher?

Positive Dinge, die mir Einfallen, wären z.B. das man, wenn es eine weitere Eigenschaft gibt später, man diese durch einen weiteren Eintrag schnell und einfach hinzufügen kann, ohne die Datenbankstruktur zu verändern.

Nachteil wäre aber auch, dass durch die ganzen Eigenschaften, wo der Wert nicht immer INT ist, der Speicherplatzbedarf höher wird, da man dann ja VARCHAR nehmen müsste und z.B. dort dann '111' Einträgt, anstelle der Zahl 111.

Gibt es da noch andere Vorteile oder gibt es da Nachteile?
Die Frage stellt sich eigentlich unabhängig vom DBMS. Gesehen habe ich das allerdings eher bei mysql.

Gruß
 
Werbung:
Gibt es da noch andere Vorteile oder gibt es da Nachteile?
Die Frage stellt sich eigentlich unabhängig vom DBMS. Gesehen habe ich das allerdings eher bei mysql.

Ja, nennt sich EAV. Das machen auch Shopsysteme so, Magento zum Beispiel. Du hast die Vor- und Nachteile eigentlich (finde ich) recht gut beschrieben. Nachzutragen wäre, daß man das in modernen Datenbanken (PostgreSQL ab 9.4) auch via JSONB lösen kann. Und zwar besser.
 
Zurück
Oben