Okay, also mache ich gerade einen Tisch für "Box Items".Widersprüchliche Wünsche im Datenbank Design, mit Feldern von zwei ähnlichen Funktionen
Nun kann ein Box Item, abhängig davon, was es für den/den Status des Items verwendet, am Ende mit einem "Versand" oder einem "Retouren" Feld in Verbindung gebracht werden.
Ein Box Item ist möglicherweise defekt: Wenn dies der Fall ist, wird in der Zeile des Box Items (IsDefective) ein Flag gesetzt und das Box Item wird in ein "Returns" Feld gesetzt dieser Verkäufer). Andernfalls wird das Box Item eventuell in eine "Versand" Box (mit anderen zu versendenden Artikeln) gelegt. (Beachten Sie, dass die Versand- und Rückgabeboxen ihre eigenen Tabellen haben: es gibt nicht eine gemeinsame Tabelle für alle Boxen ... aber vielleicht sollte ich das als dritte Möglichkeit in Betracht ziehen?)
Vielleicht denke ich einfach nicht klar heute, aber ich begann zu fragen, was in dieser Situation getan werden sollte.
Mein Bauch sagt mir, dass ich ein eigenes Feld für jede mögliche Beziehung haben sollte, selbst wenn nur eine der Beziehungen kann zu einem bestimmten Zeitpunkt geschehen, die das Schema für Box Artikel machen würden wie folgt aussehen:
BoxItemID Beschreibung IsDefective ShippingBoxID ReturnBoxID etc ...
Dies würde die Beziehungen deutlich machen, aber es scheint verschwenderisch (da nur eine der Beziehungen wird jederzeit verwendet werden). Also dachte ich, ich nur ein Feld für die BoxID haben könnte, und bestimmen, welche BoxID es mit Bezug auf (eine Lieferung oder eine Rückgabe Box ID) basierend auf dem IsDefective Feld:
BoxItemID Beschreibung IsDefective BoxID usw. ..
Dies scheint weniger verschwenderisch, aber sitzt nicht richtig mit mir. Die Beziehung ist nicht offensichtlich.
Also, ich habe es Ihnen, Datenbank-Gurus von Stackoverflow. Was würdest du in dieser Situation tun?
EDIT: Vielen Dank für Ihre Eingabe! Es gibt mir viel zu denken. Zum einen werde ich nächstes Mal ein ORM verwenden, wenn ich ein solches Projekt starte. =) Für zwei, da ich gerade nicht bin, beiße ich die vier Bytes und benutze zwei Felder.
Vielen Dank nochmal!
Aye ... Ich denke du hast Recht damit. Ich kann definitiv sehen, was die anderen Jungs davon halten, wenn ich ein ORM hätte ... und ich muss * wirklich * anfangen, eins zu benutzen. =) Aber für den Moment ist alles Handarbeit ... und das scheint für diese Aufgabe besser geeignet zu sein. – EdgarVerona