Kutumia Constraints ya FOREIGN KEY ya SQL

Kutumia Constraints ya FOREIGN KEY ya SQL

Mfano wa FOREIGN KEY katika tablica moja inaonesha PRIMARY KEY katika tablica nyingine

Tukifua mbinu yenye maelezo kuhusu FOREIGN KEY. Tukana na tablica mbili zifuatazo:

Tablica "Persons":

Id_P LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

Tablica "Orders":

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1

Tafadhali tukumbuka kwamba koma Id_P katika tablica "Orders" inapendekeza koma Id_P katika tablica "Persons"

Koma Id_P katika tablica "Persons" inaonekana kama chaguo kimoja katika tablica "Persons"

Koma Id_P katika tablica "Orders" inaonekana kama FOREIGN KEY katika tablica "Orders"

Mfano wa FOREIGN KEY inaendelea kusaidia kusikia kufikiria kusababisha uharibifu wa muungano kati ya tablica

Mfano wa FOREIGN KEY inaendelea kusaidia kusikia data ya viwango vya bila kufikiria kwamba lazima iwe na thamani moja ya tablica inayopendekeza

Mfano wa FOREIGN KEY katika kumengenia tablica

SQL inayotengenezwa kwenye tablica "Orders" inaunda mfano wa FOREIGN KEY kwa koma Id_P:

MySQL:

CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
Muhtasari wa chaguo cha msingi (Id_O),
Mfano wa Id_P wa anahodha ya mifano kwa Id_P
)

SQL Server / Oracle / MS Access:

CREATE TABLE Orders
(
Id_O int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
Id_P int FOREIGN KEY REFERENCES Persons(Id_P)
)

Kama unaitaka kuwaajabika kina chaguo cha mbinu mwingine kwa jina na kuweka kina chaguo cha mbinu mwingine kwa mitaabu mingi, tumekuwa na uharibifu wa SQL hapa chini:

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
Muhtasari wa chaguo cha msingi (Id_O),
Kina chaguo cha mbinu mwingine fk_PerOrders FOREIGN KEY (Id_P)
Marejeo wa kuzingatia Persons(Id_P)
)

Kina chaguo cha mbinu mwingine ya FOREIGN KEY katika ALTER TABLE

Kama unaitaka kugeza kina chaguo cha mbinu mwingine kwa 'Id_P' kwa 'Orders' tabia iliyotengwa, tumekuwa na uharibifu wa SQL hapa chini:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
Kigeza kina chaguo cha mbinu mwingine (Id_P)
Marejeo wa kuzingatia Persons(Id_P)

Kama unaitaka kuwaajabika kina chaguo cha mbinu mwingine kwa jina na kuweka kina chaguo cha mbinu mwingine kwa mitaabu mingi, tumekuwa na uharibifu wa SQL hapa chini:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
Kigeza kina chaguo cha mbinu mwingine fk_PerOrders
Kina chaguo cha mbinu mwingine (Id_P)
Marejeo wa kuzingatia Persons(Id_P)

Kuondoa kina chaguo cha mbinu mwingine

Kuondoa kina chaguo cha mbinu mwingine, tumekuwa na SQL inayotumiwa hapa chini:

MySQL:

ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders

SQL Server / Oracle / MS Access:

ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders