Sobes.tech
Junior

Kā tiek panākts attiecība relāciju datu bāzē?

sobes.tech AI

Atbilde no AI

Attiecības relāciju datu bāzēs tiek panāktas ar ārējiem atslēgām (Foreign Keys):

Ārējā atslēga ir kolonna vai kolonnas vienā tabulā, kas norāda uz citas tabulas primāro atslēgu (Primary Key). Tādējādi tiek izveidots saistījums starp ierakstiem divās tabulās:

Dažādu attiecību piemēri:

  • Viens pret daudz (One-to-Many): Viens ieraksts pirmajā tabulā ir saistīts ar vairākiem ierakstiem otrajā tabulā. Piemēram, viens nodaļa var ietvert daudz darbinieku. Employees tabulā būs ārējā atslēga, kas norāda uz Departments tabulas primāro atslēgu:
  • Daudz pret daudz (Many-to-Many): Vairāki ieraksti pirmajā tabulā ir saistīti ar vairākiem ierakstiem otrajā tabulā. Piemēram, viens students var mācīties vairākos kursos, un viens kurss var mācīties vairāki studenti. Šim tiek izmantota starptabulu tabula, kas satur abu tabulu ārējās atslēgas:
  • Viens pret vienu (One-to-One): Viens ieraksts pirmajā tabulā ir saistīts tikai ar vienu ierakstu otrajā tabulā. Tas ir retāk sastopams attiecību veids un bieži tiek izmantots tabulas vertikālai sadalīšanai vai opcijai datu glabāšanai. To realizē ar ārējo atslēgu otrajā tabulā, kas norāda uz pirmās tabulas primāro atslēgu, bieži ar unikālu ierobežojumu ārējai atslēgai:

SQL piemērs ārējās atslēgas izveidei:

-- Izveidojam `Departments` tabulu
CREATE TABLE Departments (
    department_id INT PRIMARY KEY, -- Primārā atslēga
    department_name VARCHAR(100)
);

-- Izveidojam `Employees` tabulu ar ārējo atslēgu
CREATE TABLE Employees (
    employee_id INT PRIMARY KEY,
    employee_name VARCHAR(100),
    department_id INT, -- Ārējā atslēga
    FOREIGN KEY (department_id) REFERENCES Departments(department_id) -- Ārējās atslēgas definīcija
);

Ārējās atslēgas nodrošina datu atsauces integritāti, novēršot "aizķērusas" saites (kad ārējā atslēga norāda uz neesošu ierakstu).