In einem Bug / Fehler-Status-Modell, wo befinden würde der Fremdschlüssel?
-
23-08-2019 - |
Frage
ich immer auf Fremdschlüssel stecken, damit ich eine Frage zu haben, wo der Fremdschlüssel in einem Bug-Tracking-System befinden soll, in dem ein Fehler einen einzelnen Status zu einem bestimmten Zeitpunkt hat, während nur eine geringe Anzahl von Zuständen existiert (Open, Under Investigation, gelöst, Genehmigung ausstehend). So hat jeder Status viele Fehler mit ihm verbunden ist. Meine Vermutung ist, der Fremdschlüssel in der Bug-Tabelle als status_id Spalt Verweise auf die ID-Spalte in der Statustabelle befinden soll. Ist dies eine sichere Annahme?
TABLE:
Bug
id integer
desc string
status_id integer fk
Status
id integer
desc string
RAILS MODEL:
Bug
has_one :status
Status
has_and_belongs_to_many :bugs
Lösung
Sie richtig sind in Ihrer Annahme, was noch wichtiger ist dann die Beziehung (One-Many / One-One / Many-Many) ist zu entscheiden, welche Tabelle die Primärschlüsseltabelle ist und welcher die Fremdschlüsseltabelle?
In diesem Fall wird die Statustabelle hier den Primärschlüssel der FK Beziehung eindeutig enthält. Wenn es umgekehrt wäre, dann würde jeder Status in der Bug-Tabelle existiert, bevor es in der Statustabelle existieren könnte, was eindeutig nicht beabsichtigt ist.
Andere Tipps
Ja, Sie sind richtig in dieser Annahme. Solange jeder Bug nur einen einzigen Der Status hat, können Sie einfach den Fremdschlüssel die Tabelle enthalten.
Ja, das wäre richtig. Die Art und Weise zu denken wäre, dass Ihr Fehler einen Status hat; es gibt viele Fehler mit einem bestimmten Status.