Sobes.tech
Middle

Come implementare una relazione uno a uno in un database?

sobes.tech AI

Risposta dell'AI

La relazione "uno a uno" in un database relazionale viene implementata tramite una restrizione unica e una chiave esterna. I metodi più comuni:

  1. Utilizzo di una chiave primaria comune: Due tabelle usano lo stesso campo come chiave primaria, che è anche una chiave esterna che fa riferimento alla chiave primaria dell'altra tabella.

  2. Utilizzo di una chiave esterna unica: In una delle tabelle si crea un campo che è una chiave esterna che fa riferimento alla chiave primaria di un'altra tabella, e a questo campo viene applicata una restrizione di unicità.

Esempio con chiave primaria comune (in SQL Server):

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

CREATE TABLE UserDetails (
    UserId INT PRIMARY KEY, // È anche la chiave primaria e la chiave esterna
    Address NVARCHAR(100),
    Phone NVARCHAR(20),
    CONSTRAINT FK_UserDetails_UserProfiles FOREIGN KEY (UserId) REFERENCES UserProfiles(UserId)
);

Esempio con chiave esterna unica (in SQL Server):

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

CREATE TABLE UserInfo (
    UserInfoId INT PRIMARY KEY, // Chiave primaria di UserInfo
    UserId INT UNIQUE,         // Chiave esterna unica che fa riferimento a Users
    Email NVARCHAR(100),
    CONSTRAINT FK_UserInfo_Users FOREIGN KEY (UserId) REFERENCES Users(UserId)
);

La scelta tra questi approcci dipende dalla semantica dei dati e dalla comodità di accesso. La connessione tramite chiave primaria comune viene spesso usata quando i dati della seconda tabella sono un'estensione opzionale della prima. La chiave esterna unica è più flessibile se le chiavi primarie delle tabelle non coincidono inizialmente.