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:
-
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.
-
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.