Vinzenz Mai: MySQL 5: Felder updaten, die es nicht gibt

Beitrag lesen

Hallo,

» Entweder man normalisiert sich die Konstruktion "Gerät kann beliebig viele Eigenschaften haben" im DB-Design heraus - dann hat man zur Abfrage des Geräts noch ein paar JOINs durchzuführen.

Ich denke, du hast mein Problem gar nicht verstanden. Vielleicht, weil mein Beispiel nicht IT- gerecht war.

doch sicher. Du hast vermutlich Sven nicht verstanden :-)

Nehmen wir wieder Dein (zugegeben konstruiertes) Auto-/Fahrradproblem:
Du hast mit Fahrrädern angefangen, deswegen hast Du jetzt die Tabelle "Ware":

Bezeichnung | Sitz       | Lenker | Gangschaltung | Licht vorn | Licht hinten
-----------------------------------------------------------------------------
Hollandrad  | superweich | hoch   | NULL          | Standard   | Standard
BMX-Bike    | sichtbar   | gerade | NULL          | NULL       | NULL
Rennrad     | hart       | tief   | 27-Gang       | NULL       | NULL

Eine neue Programmversion soll fehlende Tabellen- Felder tolerieren. Und du meinst, mit JOINS auf nicht vorhandene Tabellen (weil älterer DB- Stand) ist das zu beheben?

Dein nächster Kunde verkauft Autos, Du benötigst zusätzliche Spalten:;

Bezeichnung | Sitz    | Lenker | Gangschaltung | Licht vorn | Licht hinten | Schiebedach | Ersatzreifen | Kofferaumdeckel
------------------------------------------------------------------------------------------------------------------------
R4          | Camping | Rad    | Knüppel       | vorhanden  | vorhanden    | NULL        | Notrad       | Standard

Statt dessen meint Sven, dass Du für die Eigenschaften eine eigene Tabelle "Eigenschaften" anlegen solltest:

id | Eigenschaft
----------------
 1 | Sitz
 2 | Lenker
 3 | Gangschaltung
 4 | Licht vorn
 5 | Licht hinten

und eine Zuordnungstabelle:

id_ware | id_eigenschaft | wert
-------------------------------------
      1 |              1 | superweich
      1 |              2 | hoch
      1 |              4 | Standard
      1 |              5 | Standard

Welche Eigenschaften Deine Ware hat, bekommst Du nun über die von Sven angesprochenen JOINs heraus, neue Eigenschaften (wegen neuer Ware) benötigen keine neuen Spalten, sondern einfach neue Einträge in der Eigenschaftentabelle. Ein Nachteil bei dieser Geschichte ist, dass der Datentyp meiner Spalte "wert" alles Mögliche aufnehmen können muss, d.h. es wird ein Zeichenketten-Datentyp werden, während man bei eigenen Spalten den Datentyp auswählen kann, der am besten passt.

Ilja hat mich verstanden.

Ich gehe davon aus, dass Ilja mit

» » ein Monitor braucht nicht die werte einer festplatte, etc. man baut sich eben das daten-design so, dass man neue hardware (in falle von kalle fahrrad und auto) in das bestehende layout hinzufügen kann inklusive seiner eigenschaften in eine zweite tabelle. musst halt schauen kalle, ob das ein möglicher weg für dich wäre.

prinzipiell das gleiche gemeint hat.

Freundliche Grüße

Vinzenz