2011-01-02 9 views
0

Ich habe eine Spalte: "Status" in jeder Tabelle in meiner DB. Der Zweck davon ist es zu zeigen, ob die angegebene Zeile verwendet wird oder ob sie deaktiviert wurde. So können Werte sein (0 = deaktiviert und 1 = aktiv). Zwei Möglichkeiten, die ich sehe: Ich kann enums haben oder ich denke, wenn es besser ist, diese Spalte als eine FK zu behalten, die auf die Hauptsystemdatenwörterbuchtabelle verweist, die alle auf dem System verwendeten Codes hat. (Website)FKs auf allen Tabellen für Statusspalte

Der Vorteil ist jede Tabelle, jede Zeile kann dann durch diese FK zentralisiert werden. Also, wenn ich jemals alle Zeilen überprüfen möchte, die auf meinem System deaktiviert sind, kann ich aus dieser Tabelle wie alle untergeordneten Tabellen wie Status = ID 233 haben, wobei 233 = inaktiv in der Data Dictionary-Tabelle.

Jeder Vorteil oder sollte ich mit der alten Art von enums bleiben ?. Auch ich denke, wenn ich einen weiteren Status für gelöscht brauche oder ist das genauso wie deaktiviert?

+0

Nur eine Sprachnotiz, das Gegenteil von "aktiv" ist "inaktiv". Es gibt kein solches Wort "deactive", obwohl das Verb "deaktivieren" völlig in Ordnung ist. Ich repariere normalerweise nicht die Grammatik der Leute, aber da Sie diese Begriffe sehr oft verwenden werden, dachte ich, Sie könnten das nützlich finden. –

+0

guter Punkt, danke – Jonarch

Antwort

0

Wenn Sie nur zwei Zustände haben (aktiv/inaktiv), dann ist kein Foreign-Schlüssel für eine separate Statustabelle erforderlich. Sie können nur eine Bitspalte verwenden, wenn Ihre Datenbank dies unterstützt.

Wenn Sie mehr Staaten gehen müssen, dann ja, es kann eine gute Idee, eine separate Statustabelle haben, aber es ist nicht wirklich notwendig , wenn Sie Abfragen schreiben mögen, die freundlich und einfach sind zu lesen (where status = 'inactive' ist viel einfacher zu verstehen als where status = 0), oder Sie beabsichtigen zu ändern, was ein Wert bedeutet (in diesem Fall ändern Sie einfach die Beschreibung in der status Tabelle).

Für die Einführung des neuen Werts von deleted - persönlich würde ich darüber nachdenken, das als eine separate Spalte zu haben, da es eine andere Bedeutung als aktiv oder inaktiv hat, und Sie wollen nicht den Zustand Ihrer Zeile überschreiben, wenn es wird gelöscht (Sie behalten beispielsweise die Information, dass eine Spalte aktiv oder inaktiv war, als sie gelöscht wurde).

+0

Hm, für diese Frage funktioniert es. Ich werde eine andere Frage zu den verschiedenen Status stellen, die ich brauche, weil ein Konto so viele Status haben kann. – Jonarch

Verwandte Themen