Sobes.tech
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)
);