Middle
177
Шетел кілттері дерекқорда болуы керек пе, ал егер иә болса, неге?
AI-дан жауап
sobes.tech AI
Иә, тиіс.
Себептері
- Деректер тұтастығы. Сілтеме тұтастығын қамтамасыз етеді, ата-аналық кестедегі негізгі кілттерді жою немесе өзгерту кезінде, егер сәйкес әрекет анықталмаса (
ON DELETE CASCADE,ON UPDATE CASCADE), жазбалар баламалы кестеде өзгермейді. - Сұрауларды оңтайландыру. Дерекқор басқару жүйесі (DBMS) сыртқы кілттер туралы ақпаратты сұрауларды орындау жоспарын оңтайландыру үшін пайдалана алады, әсіресе кестелерді біріктіру кезінде (JOIN).
- Схема құжаттамасы. Олар кестелер арасындағы байланыстарды нақты көрсетеді, бұл оны әзірлеушілер мен әкімшілер үшін түсінікті етеді.
- Жасақтау қарапайымдылығы. Байланыстарды қолдаудың кейбір логикасын дерекқорға жүктеуге мүмкіндік береді, бұл оны қолданба деңгейінде жүзеге асыру қажеттілігін азайтады.
Мысал
-- "Тапсырыс берушілер" кестесін құру
CREATE TABLE ТапсырысБерушілер (
ТапсырысБерушіID INT PRIMARY KEY,
Аты VARCHAR(100)
);
-- "Тапсырыстар" кестесін құру
CREATE TABLE Тапсырыстар (
ТапсырысID INT PRIMARY KEY,
ТапсырысКүні DATE,
ТапсырысБерушіID INT,
-- Тапсырыс берушінің ТапсырысБерушіID бағанына сілтеме жасайтын сыртқы кілтті анықтау
FOREIGN KEY (ТапсырысБерушіID) REFERENCES ТапсырысБерушілер(ТапсырысБерушіID)
);