2016-12-01 2 views
-1
INSERT INTO customers (ID, NAME, AGE, ADDRESS, SALARY) 
VALUES(3, 'sin', 21, 'bangalore', 10000); 

INSERT INTO orders (orderid, orderno) 
VALUES (3, 21); 

ID Hier ist der Primärschlüssel in der Tabelle customer ist orderid der Primärschlüssel in der Tabelle orders.Fremdschlüssel wird für Inner Join in SQL benötigt?

Ich würde gerne wissen, ob es zwingend erforderlich ist, id als Fremdschlüssel in orders Tabelle für die Durchführung von SQL-Join hinzufügen?

+0

Die Antwort ist NEIN ... Sie können einen SQL-Join auf etwas tun, solange es korrekt auf den gleichen Typ umgewandelt wird. Es bietet möglicherweise keine gute Leistung, da der SQL-Fremdschlüssel Leistungsvorteile bietet. – Gwasshoppa

+0

Eine deklarierte Fremdschlüsselbeziehung ist für die Verwendung von 'Join' nicht erforderlich. –

Antwort

0

Es ist nicht notwendig, einen Fremdschlüssel einzurichten, um einen inneren Join der Kunden- und Auftragstabelle durchzuführen. Es stellt sich jedoch die Frage, welche Bedeutung eine solche Join-Operation ohne einen Fremdschlüssel hätte.

Vermutlich ist das Ziel, eine Art Beziehung zwischen Kunden und Bestellungen zu modellieren. Unter der Annahme, dass die aufgelisteten Attribute alle Attribute in den beiden Tabellen umfassen, gibt es nichts, was eine Beziehung zwischen Kunden und Aufträgen in der Art und Weise, wie die Tabellen definiert sind, herstellt. Das Hinzufügen eines Kunden-ID-Felds als Fremdschlüssel in der Auftragstabelle würde diese Beziehung herstellen. Dann würde ein innerer Join der Bedingung customers.ID = orders.customerID die Bestellinformationen mit den entsprechenden Kundeninformationen in der verbundenen Tabelle verknüpfen.

+0

nette erklärung, da ich neu zu diesem sql hatte eine verwirrung, dass ob es obligatorisch ist. ich danke dir sehr. –