Entschuldigung für den schlechten Titel, aber ich habe keine Ahnung, wie man das kurz fasst. Das Problem ist das folgende:Mit instanzartigen Verhalten in Datenbanken
Ich habe ein generisches Element, das eine Gruppe darstellt, lassen Sie uns Car anrufen. Jetzt hat diese Auto Attribute, die innerhalb bestimmter Grenzen, sagen wir zum Beispiel Geschwindigkeit ist zwischen 0 und 180 für eine übliche Car. Stellen Sie sich einige weitere Attribute mit Bereichen vor, z. B. Farbe liegt zwischen 0 und 255, wofür dieser Wert auch stehen mag.
Also in meinem Tisch GenericItems ich habe:
ID Name
1 Car
Und in meinem Attribute ich habe:
ID Name Min_Value Max Value
1 Speed 0 180
2 Color 0 255
Die Beziehung zwischen Auto und Attribute ist also 1: n.
Jetzt beginne ich sehr spezifische Instanzen meiner Auto zum Beispiel ein FordMustang, ein FerrariF40 und ein DodgeViper. Dies sind spezifische Instanzen und jetzt möchte ich ihnen spezifische Werte für ihre Attribute geben.
Also in meinem Tisch SpecificItem ich habe:
ID Name GenericItem_ID
1 FordMustang 1
2 DodgeViper 1
3 FerrariF40 1
Jetzt brauche ich eine dritte Tabelle SpecificAttributes2SpecificItems, Attribute SpecificItems passen:
ID SpecificItem_ID Attribute_ID Value
1 1 1 120 ;Ford Mustang goes 120 only
2 1 2 123 ;Ford Mustang is red
3 2 1 150 ;Dodge Viper goes 150
4 2 2 255 ;Dodge Viper is white
5 3 1 180 ;FerrariF40 goes 180
6 3 2 0 ;FerrariF40 is black
Das Problem dabei Design ist, wie Sie sehen können, dass ich im Grunde immer über alle Reihen von Attributen kopiere, und ich fühle mich wie th Es ist schlechtes Design, inkonsistent usw. Wie kann ich diese Logik auf korrekte, normalisierte Weise erreichen?
Ich möchte in der Lage sein, mehr generischen Elemente zu haben, mit mehreren Attributen mit Min/Max-Wert als Intervall, das „instanziiert“ mit bestimmten Werten
upvote für sein lustig;) Was mir Sorgen macht, ist, dass mein Design einfach falsch anfühlt. Wenn ich meine Inserts schreibe ... alle "Template" -Attribute durchlaufen und sie in meine Kreuztabelle kopieren, spezialisiere sie mit einem Wert. Ich habe das Gefühl, hier etwas zu simulieren, das sollte besser gemacht werden. – Tom