Sobes.tech
Middle

Πώς υλοποιείται μια σχέση ένα προς ένα σε μια βάση δεδομένων;

sobes.tech AI

Απάντηση από AI

Η σχέση "ένα προς ένα" σε μια σχεσιακή βάση δεδομένων υλοποιείται με τη βοήθεια ενός μοναδικού περιορισμού και ενός ξένου κλειδιού. Οι πιο συνηθισμένοι τρόποι:

  1. Χρήση κοινού πρωτεύοντος κλειδιού: Δύο πίνακες χρησιμοποιούν το ίδιο πεδίο ως πρωτεύον κλειδί, το οποίο επίσης λειτουργεί ως ξένο κλειδί που αναφέρεται στο πρωτεύον κλειδί του άλλου πίνακα.

  2. Χρήση μοναδικού ξένου κλειδιού: Σε έναν από τους πίνακες δημιουργείται ένα πεδίο που λειτουργεί ως ξένο κλειδί που αναφέρεται στο πρωτεύον κλειδί ενός άλλου πίνακα, και εφαρμόζεται περιορισμός μοναδικότητας σε αυτό το πεδίο.

Παράδειγμα με κοινό πρωτεύον κλειδί (σε SQL Server):

CREATE TABLE UserProfiles (
    UserId INT PRIMARY KEY,
    FirstName NVARCHAR(50),
    LastName NVARCHAR(50)
);

CREATE TABLE UserDetails (
    UserId INT PRIMARY KEY, // Αυτό είναι και το πρωτεύον κλειδί και το ξένο κλειδί
    Address NVARCHAR(100),
    Phone NVARCHAR(20),
    CONSTRAINT FK_UserDetails_UserProfiles FOREIGN KEY (UserId) REFERENCES UserProfiles(UserId)
);

Παράδειγμα με μοναδικό ξένο κλειδί (σε SQL Server):

CREATE TABLE Users (
    UserId INT PRIMARY KEY,
    Username NVARCHAR(50) UNIQUE
);

CREATE TABLE UserInfo (
    UserInfoId INT PRIMARY KEY, // Πρωτεύον κλειδί του UserInfo
    UserId INT UNIQUE, // Μοναδικό ξένο κλειδί που αναφέρεται στους Users
    Email NVARCHAR(100),
    CONSTRAINT FK_UserInfo_Users FOREIGN KEY (UserId) REFERENCES Users(UserId)
);

Η επιλογή μεταξύ αυτών των προσεγγίσεων εξαρτάται από τη σημασιολογία των δεδομένων και την ευκολία πρόσβασης. Η σύνδεση μέσω κοινού πρωτεύοντος κλειδιού χρησιμοποιείται συχνά όταν τα δεδομένα του δεύτερου πίνακα αποτελούν προαιρετική επέκταση του πρώτου. Το μοναδικό ξένο κλειδί είναι πιο ευέλικτο αν τα πρωτεύοντα κλειδιά των πινάκων δεν ταιριάζουν αρχικά.