Sobes.tech
Middle

Como implementar uma relação um para um numa base de dados?

sobes.tech IA

Resposta da IA

A relação "um para um" numa base de dados relacional é implementada através de uma restrição única e de uma chave estrangeira. As formas mais comuns:

  1. Utilização de uma chave primária comum: Duas tabelas usam o mesmo campo como chave primária, que também é uma chave estrangeira referindo-se à chave primária da outra tabela.

  2. Utilização de uma chave estrangeira única: Em uma das tabelas, cria-se um campo que é uma chave estrangeira referindo-se à chave primária de outra tabela, e a este campo é aplicada uma restrição de unicidade.

Exemplo com chave primária comum (no SQL Server):

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

CREATE TABLE UserDetails (
    UserId INT PRIMARY KEY, // É também a chave primária e a chave estrangeira
    Address NVARCHAR(100),
    Phone NVARCHAR(20),
    CONSTRAINT FK_UserDetails_UserProfiles FOREIGN KEY (UserId) REFERENCES UserProfiles(UserId)
);

Exemplo com chave estrangeira única (no SQL Server):

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

CREATE TABLE UserInfo (
    UserInfoId INT PRIMARY KEY, // Chave primária do UserInfo
    UserId INT UNIQUE,         // Chave estrangeira única referindo-se aos Users
    Email NVARCHAR(100),
    CONSTRAINT FK_UserInfo_Users FOREIGN KEY (UserId) REFERENCES Users(UserId)
);

A escolha entre estas abordagens depende da semântica dos dados e da conveniência do acesso. A ligação por chave primária comum é frequentemente usada quando os dados da segunda tabela são uma extensão opcional da primeira. A chave estrangeira única é mais flexível se as chaves primárias das tabelas não coincidirem inicialmente.