Sobes.tech
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) -- Ορισμός ξένου κλειδιού
);

Τα ξένα κλειδιά διασφαλίζουν την αναφορική ακεραιότητα των δεδομένων, αποτρέποντας τη δημιουργία "φανταστικών" συνδέσεων (όταν ένα ξένο κλειδί αναφέρεται σε μη υπαρκή εγγραφή στον σχετικό πίνακα).