Junior
Чӣ тавр муносибат дар базаи додаҳои муносиб ба даст меояд?
sobes.tech AI
Ҷавоб аз AI
Роҳбарият дар системаҳои пойгоҳи додаҳои муносиб (RDBMS) тавассути калидҳои хориҷӣ (Foreign Keys) амалӣ карда мешавад.
Калиди хориҷӣ як сутун ё маҷмӯи сутунҳо дар як ҷадвал аст, ки ба калиди асосии дар ҷадвали дигар ишора мекунад. Бо ин роҳ, робита байни сабтҳо дар ду ҷадвал барқарор мешавад.
Маслиҳатҳои намуди робитаҳо:
- Як ба бисёр (One-to-Many): Як сабт дар ҷадвали аввал бо чанд сабт дар ҷадвали дуввум алоқаманд аст. Масалан, як шӯъба метавонад бисёри кормандон дошта бошад. Дар ҷадвали
Employeesкалиди хориҷӣ ба калиди асосии ҷадвалиDepartmentsишора мекунад. - Бисёр ба бисёр (Many-to-Many): Бисёри сабтҳо дар ҷадвали аввал бо бисёри сабтҳо дар ҷадвали дуввум алоқаманданд. Масалан, як донишҷӯ метавонад дар чанд курси таҳсил кунад ва як курс метавонад бо чанд донишҷӯ таҳсил кунад. Ин тавассути ҷадвали миёна (таблиғи робитаҳо) ки дорои калидҳои хориҷӣ ба калидҳои асосии ҳар ду ҷадвал мебошад, амалӣ мешавад.
- Як ба як (One-to-One): Як сабт дар ҷадвали аввал танҳо бо як сабт дар ҷадвали дуввум алоқаманд аст. Ин навъи робита камтар маъмул аст ва одатан барои тақсимоти амудии ҷадвал ё барои нигоҳдории маълумоти интихобӣ истифода мешавад. Ин тавассути калиди хориҷӣ дар ҷадвали дуввум, ки ба калиди асосии ҷадвали аввал ишора мекунад, амалӣ карда мешавад, бо маҳдудияти ягонагӣ дар калиди хориҷӣ.
Маслиҳат барои сохтани ҷадвал бо калиди хориҷӣ дар SQL:
-- Сохтани ҷадвали Departments
CREATE TABLE Departments (
department_id INT PRIMARY KEY, -- Калиди асосӣ
department_name VARCHAR(100)
);
-- Сохтани ҷадвали Employees бо калиди хориҷӣ
CREATE TABLE Employees (
employee_id INT PRIMARY KEY,
employee_name VARCHAR(100),
department_id INT, -- Сутун барои калиди хориҷӣ
FOREIGN KEY (department_id) REFERENCES Departments(department_id) -- Тавсифи калиди хориҷӣ
);
Калидҳои хориҷӣ кафолат медиҳанд, ки маълумотҳо дар асоси реферативӣ муттаҳид бошанд, ва аз эҷоди пайвандҳои "паранда" ( вақте ки калиди хориҷӣ ба сабти нобуд дар ҷадвали алоқаманд ишора мекунад) пешгирӣ мекунанд.