Junior
Ինչպես է հասնում հարաբերությունը ռելացիոնալ տվյալների բազայում?
sobes.tech AI
Պատասխան AI-ից
Հարաբերություններ ռելացիոնալ տվյալների բազաներում հասնում են արտաքին բանալիների (Foreign Keys) միջոցով:
Արտաքին բանալին - դա սյունակ կամ սյունակների հավաքածու է մեկ աղյուսակում, որը հղում է կատարում մյուս աղյուսակի հիմնական բանալուն (Primary Key): Այսպիսով, հաստատվում է կապ երկու աղյուսակների գրառումների միջև:
Տարբեր հարաբերությունների տեսակների օրինակներ:
- Մի-կամ-շատ (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) -- Արտաքին բանալի սահմանում
);
Արտաքին բանալիները ապահովում են տվյալների հղումային ամբողջականությունը, կանխելով "կիսատ" հղումների ստեղծումը (երբ արտաքին բանալին հղում է կատարվում չհաստատված գրառման վրա):