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
War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top