Derselbe foreign-key in mehrere Tabellen
Ich habe gesehen, Beiträge auf SO und über google, die besagt, dass mit Mysql kann mehrere Fremdschlüssel mit dem gleichen Namen. Mein Problem ist, wie kann ich auf die gleiche Spalte aus einer Tabelle in mehrere andere Tabellen. In meinem Fall habe ich eine FAMILIE Tabelle enthält FAM_ID. Ich will, dass das ein foreign key in meine DOKUMENTE und KONTAKTIEREN Sie Zeilen in Tabellen, weil diese eine Beziehung mit FAM_ID. Also, wenn ich verstehe, was ich gelesen habe, richtig ich brauche, um den Namen der Spalte in DOKUMENTE und KONTAKTIEREN Sie unterschiedliche Namen (als FAM_ID) um diese Karte als Fremdschlüssel zu FAM_ID in der FAMILIE Tabelle. Bin ich einfach nur etwas nicht zu verstehen oder ist das meine einzige option? Es scheint so, das wäre eine Recht häufige Anforderung an ein Datenmodell.
InformationsquelleAutor Matt Phillips | 2010-07-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Brauchen Sie nicht zu nennen Sie verschiedene Dinge. Sie können eine FAM_ID Spalte in der FAMILIE, ein FAM_ID Spalte unter " DOKUMENTE und eine FAM_ID Spalte in KONTAKT.
In diesem Fall benennen Sie die gleiche Sache macht es klar, dass Sie sich auf das gleiche beziehen. Aber, Sie könnte auch kommen mit einer anderen Namenskonvention Ihre eigenen, wenn Sie möchten.
Verwende ich zum Beispiel etwas entlang der Linien von
family_ID
im Familie Tisch, undcontact_familyID
,document_familyID
wenn er von der Kontakt-und Dokument-Tabellen.Ist der einzige Nachteil, benennen Sie die gleichen, soweit ich das sehen kann, ist, dass, wenn dabei verbindet Sie nicht nur finden Sie über den Spaltennamen, müssen Sie alias Sie oder auf Sie hinweisen, durch tablename.columnname.
Edit: ich glaube ich habe gefunden was du meinst, wenn du nicht in der Lage, den gleichen Namen haben. Dies ist der Fall, wenn Sie eine foreign key-Beziehung in einer einzigen Tabelle, wie hier beschrieben: http://bugs.mysql.com/bug.php?id=46363
InformationsquelleAutor thomasrutter
fk_family_documents
fk_family_contact
Einstellung der foreign key-Namen, so wie die oben genannten wäre eine Möglichkeit, es zu tun, ich bin nicht sicher, ob das alias, aber ja. Hier ist eine Beispiel-syntax, wenn Sie hinzufügen, Sie als ein Hindernis:
ALTER TABLE documents ADD CONSTRAINT fk_family_documents_id FOREIGN KEY (fam_id) REFERENCES family(id)
Gewährt, die Sie haben können, um maßgeschneiderte, aber sollte Ihnen eine Vorstellung davon, wie es wäre setup.
InformationsquelleAutor Brad F Jacobs
Ich habe das gleiche Problem, noch nicht wirklich aufgefallen war, gute Lösungen. Ursprünglich wollte ich, um meine foreign key-Namen der gleiche wie der primäre Schlüssel, den Sie verwiesen, um Natürliche Verknüpfungen möglich. So werde ich die Umbenennung meiner Fremdschlüssel zu so etwas wie {reference_primary_key}_1, {reference_primary_key}_2, etc..
Wenn der CONSTRAINT-symbol-Klausel angegeben ist, wird der symbol-Wert muss eindeutig sein in der Datenbank. Wenn die Klausel nicht gegeben, InnoDB erstellt die Namen automatisch.
dev.mysql.com/doc/refman/5.0/en/...
Gut, ich habe gerade herausgefunden, wie thomasrutter gesagt, Sie KÖNNEN die gleiche foreign-key-Namen in verschiedenen Tabellen, die auf den gleichen Primärschlüssel. Die Fehler, die ich bekam war, als ich (mysql workbench) wurde versucht, mit der gleichen EINSCHRÄNKUNG name. Ich habe nur die Zeile hatte "EINSCHRÄNKUNG
my_contraint_name
" und es funktionierte Prima.InformationsquelleAutor targnation