Dies ist eine direkte Kopie und einfügen aus einer anderen Frage, die heute in diesem Thread aufgetaucht ist, aber es fühlt sich auch hier nützlich an. Is there ever a time where using a database 1:1 relationship makes sense?
Ich benutze sie hauptsächlich aus ein paar Gründen. Eine davon ist eine signifikante Änderung der Datenänderungsrate. Einige meiner Tabellen haben möglicherweise Audit-Trails, in denen ich frühere Versionen von Datensätzen verfolge, wenn ich nur vorherige Versionen von 5 von 10 Spalten verfolgen möchte, die diese 5 Spalten in eine separate Tabelle aufteilen, wobei ein Audit-Trail-Mechanismus effizienter ist. Außerdem kann ich Aufzeichnungen haben (sagen wir für eine Buchhaltungs-App), die nur schreiben. Sie können die Dollarbeträge oder das Konto, für das sie erstellt wurden, nicht ändern. Wenn Sie einen Fehler gemacht haben, müssen Sie einen entsprechenden Datensatz erstellen, um den falschen Datensatz anzupassen, und dann einen Korrektureintrag erstellen. Ich habe Beschränkungen für die Tabelle, die die Tatsache durchsetzt, dass sie nicht aktualisiert oder gelöscht werden können, aber ich kann ein paar Attribute für das Objekt haben, die formbar sind, die in einer separaten Tabelle ohne die Einschränkung der Modifikation gehalten werden. Ein anderes Mal mache ich das in Krankenakten. Es gibt Daten, die sich auf einen Besuch beziehen, der nach der Abmeldung nicht geändert werden kann, und andere Daten, die sich auf einen Besuch beziehen, der nach der Abmeldung geändert werden kann. In diesem Fall werde ich die Daten teilen und einen Trigger auf die gesperrte Tabelle setzen, der die Aktualisierungen der gesperrten Tabelle ablehnt, wenn ich mich abgemeldet habe, aber Aktualisierungen der Daten erlauben, die der Arzt nicht abmeldet.
Ein anderes Plakat kommentierte auf 1: 1, das nicht normalisiert wird, würde ich in einigen Situationen, insbesondere subtyping dem widersprechen. Angenommen, ich habe eine Angestelltentabelle und der Primärschlüssel ist ihre SSN (es ist ein Beispiel, lass uns die Debatte speichern, ob das ein guter Schlüssel ist oder nicht für einen anderen Thread). Die Mitarbeiter können unterschiedlicher Art sein, zum Beispiel vorübergehend oder dauerhaft, und wenn sie dauerhaft sind, müssen sie mehr Felder ausfüllen, z. B. eine Bürotelefonnummer, die nur nicht null sein sollte, wenn der Typ = "Permanent" ist. In einer dritten Normalform-Datenbank sollte die Spalte nur vom Schlüssel abhängen, dh vom Angestellten, aber sie hängt tatsächlich vom Angestellten und vom Typ ab, so dass eine 1: 1 Beziehung vollkommen normal und in diesem Fall wünschenswert ist. Es verhindert auch übermäßig dünne Tabellen, wenn ich 10 Spalten habe, die normalerweise gefüllt sind, aber 20 zusätzliche Spalten nur für bestimmte Typen.
Mögliche Duplikate von [Gibt es jemals eine Zeit, in der die Verwendung einer Datenbank-1: 1-Beziehung sinnvoll ist?] (Http://stackoverflow.com/questions/517417/is-there-ever-a-time-where-using) -a-Datenbank-11-Beziehung-macht-Sinn) – Tripartio