Junior
Jak osiąga się relację w relacyjnej bazie danych?
sobes.tech AI
Odpowiedź od AI
Relacje w relacyjnych systemach zarządzania bazami danych (RDBMS) osiąga się za pomocą kluczy obcych (Foreign Keys).
Klucz obcy to kolumna lub zestaw kolumn w jednej tabeli, które odwołują się do klucza głównego w innej tabeli. W ten sposób ustanawia się związek między rekordami w dwóch tabelach.
Przykłady typów relacji:
- Jeden do wielu (One-to-Many): Jeden rekord w pierwszej tabeli jest powiązany z wieloma rekordami w drugiej tabeli. Na przykład, jeden dział może mieć wielu pracowników. W tabeli
Employeesbędzie klucz obcy odwołujący się do klucza głównego w tabeliDepartments. - Wiele do wielu (Many-to-Many): Wiele rekordów w pierwszej tabeli jest powiązanych z wieloma rekordami w drugiej tabeli. Na przykład, jeden student może uczęszczać na wiele kursów, a jeden kurs może być uczęszczany przez wielu studentów. Realizuje się to za pomocą tabeli pośredniczącej (tabeli relacji), zawierającej klucze obce odwołujące się do kluczy głównych obu tabel.
- Jeden do jednego (One-to-One): Jeden rekord w pierwszej tabeli jest powiązany tylko z jednym rekordem w drugiej tabeli. Ten typ relacji jest mniej powszechny i często używany do pionowego podziału tabeli lub przechowywania danych opcjonalnych. Implementuje się to za pomocą klucza obcego w drugiej tabeli, odwołującego się do klucza głównego w pierwszej, często z ograniczeniem unikalności na klucz obcy.
Przykład tworzenia tabeli z kluczem obcym w SQL:
-- Tworzymy tabelę Departments
CREATE TABLE Departments (
department_id INT PRIMARY KEY, -- Klucz główny
department_name VARCHAR(100)
);
-- Tworzymy tabelę Employees z kluczem obcym
CREATE TABLE Employees (
employee_id INT PRIMARY KEY,
employee_name VARCHAR(100),
department_id INT, -- Kolumna dla klucza obcego
FOREIGN KEY (department_id) REFERENCES Departments(department_id) -- Definicja klucza obcego
);
Klucze obce zapewniają integralność referencyjną danych, zapobiegając tworzeniu "wiszących" odwołań (gdy klucz obcy odwołuje się do nieistniejącego rekordu w powiązanej tabeli).