relationale Terminologie: Fremdschlüssel Quelle, Ziel?
-
06-07-2019 - |
Frage
Ich mache einige FK Analyse unserer Tabellen durch einen gerichteten machen Graph, der Abhängigkeiten FK und dann die Verfahrbewegung Graph. In meinem Code, nenne ich alles gerichtete Graphen mit Terminologie, aber ich möchte etwas ein bisschen mehr haben "Benutzerfreundlich" in dem Bericht.
In diesem Szenario:
create table t1(a varchar2(20));
alter table t1 add constraint t1_fk foreign key(a) references t2(b);
t1.a muss existieren in t2.b. Also, was Worte sollte ich die Lücken?
t1 is the _______ of t2.
t2 is the _______ of t1.
Viele TIA!
Lösung
Ich würde sagen, (Dinge zwischen Klammern sind optional, aber ich würde sie benutzen)
[Column a of] table t1 references [column b of] table t2
und
[Column b of] table t2 is referenced by [column a of] table t1
Ich würde auch die Aktion angeben, die auf Lösch- / Update passiert, wenn jeder.
Column b of table t2 is referenced by column a of table t1. Deleting a record in table t2 will delete matching records on table t1
Andere Tipps
t1 is the parent of t2.
t2 is the child of t1.
Was ist das Publikum für diese? Wenn es Menschen gibt, die ein relationales Schema verstehen, dann wird das wohl tun. Wenn es technisch nicht versierte Menschen ist, dann in der Regel habe ich in meinem Modellierungswerkzeug (ERWin) die Bedeutung der Beziehungen dokumentierte spezifisch.
InvoiceLineItem is a part of Invoice.
Invoice has one or more InvoiceLineItems.
Oder:
User must belong to a Business.
Business has zero or more Users.
würde ich etwas entlang der Linien von
sagent1 is the master of t2. An ID must be in t1, before it can be mentioned in t2. t2 is the slave of t1. It cannot refer to an ID that does not exist in t1.
Die meisten nicht-technische Menschen die Master / Slave-Terminologie sehr intuitiv erfassen wird.
Sie können die folgenden Satz Form annehmen:
- Jede t1 Zeile muss genau eine t2 Reihe verknüpft werden
- Jede t2 Reihe mit einer beliebigen Anzahl von t1 Reihen verbunden sein können, oder keine
In dem erläuterten Szenario denke ich, dass die richtige Benennung sein sollte (technisch gesehen):
t2
is die Eltern von t1
t1
ist das Kind von t2
Die Tabelle der eingeschränkten Spalte heißt Kind , während die Tabelle der referenzierten Spalte genannt wird Eltern .
Persönlich mag ich diese Benennung, in SQL Server, wenn Sie für die sys.foreign_keys
abfragen sehen das Kind Tabelle parent_object_id
genannt wird, während die referenzierte Tabelle referenced_object_id
.. aus der Sicht der Beschränkung genannt wird selbst könnte richtig sein. ., aber am Ende das ist sehr verwirrend.