Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL Server 2016:criar um relacionamento


Você pode criar um relacionamento entre tabelas usando a GUI ou o script SQL. Aqui, demonstro os dois métodos.

No projeto de banco de dados relacional, um relacionamento é onde duas ou mais tabelas estão vinculadas porque contêm dados relacionados. Isso permite que os usuários executem consultas de dados relacionados em várias tabelas.

Aqui, criaremos os seguintes relacionamentos.

O Método


Veja como faremos:
  • Usaremos SQL para criar os Álbuns tabela e um relacionamento.
  • Usaremos a GUI para criar o outro relacionamento.

Dessa forma, você verá os dois métodos de criar um relacionamento.

Só precisamos criar uma tabela porque já criamos duas dessas tabelas anteriormente neste tutorial (os Artistas table via GUI e os Genres tabela usando SQL).

Criar um relacionamento usando SQL


Abra uma nova janela de consulta no SSMS e execute o seguinte código:
CREATE TABLE Albums
 (
  AlbumId int IDENTITY(1,1) NOT NULL PRIMARY KEY,
  AlbumName nvarchar(255) NOT NULL,
  ReleaseDate date NOT NULL,
  ArtistId int NOT NULL,
  GenreId int NOT NULL
  
  CONSTRAINT FK_Albums_Artists FOREIGN KEY (ArtistId)     
    REFERENCES dbo.Artists (ArtistId)     
    ON DELETE NO ACTION    
    ON UPDATE NO ACTION    
);

A primeira parte dessa instrução cria a tabela.

A última parte define o relacionamento. Esta parte:
CONSTRAINT FK_Albums_Artists FOREIGN KEY (ArtistId)     
    REFERENCES dbo.Artists (ArtistId)     
    ON DELETE NO ACTION    
    ON UPDATE NO ACTION

As duas primeiras linhas criam o relacionamento. Eles criam uma restrição de chave estrangeira entre o Albums.ArtistId coluna e o Artists.ArtistId coluna.

As duas últimas linhas especificam o que o SQL Server deve fazer se alguém tentar excluir ou atualizar um registro pai que está sendo referenciado por um registro na tabela filho. Neste caso, NO ACTION significa que a exclusão/atualização não será realizada. O usuário receberá apenas um erro.

Você pode alterar isso para ON DELETE CASCADE se você quiser excluir o pai e o filho de uma só vez (ou seja, a exclusão será em cascata do pai para o filho). A mesma lógica se aplica às atualizações, usando ON UPDATE CASADE .

NO ACTION é o valor padrão, então poderíamos ter feito sem essas duas últimas linhas de código. No entanto, eu o incluí, porque é um fator importante a ser considerado ao criar restrições de chave estrangeira.

O que é uma restrição de chave estrangeira?


Uma restrição de chave estrangeira define um relacionamento entre esta tabela e outra tabela. Ao criar uma restrição de chave estrangeira, você a cria em uma coluna específica no filho tabela, para referenciar uma coluna específica em pai tabela.

Isso torna a coluna na tabela filha uma chave estrangeira . A restrição garante que qualquer valor que vá para essa coluna (chave estrangeira) corresponda a um valor na coluna de chave primária da tabela pai. Se alguém tentar inserir um valor que não corresponda a um valor na coluna de chave primária da tabela pai, o SQL Server gerará um erro.

Isso ajuda a reforçar a integridade referencial. Isso nos impede de ter registros órfãos (registros filhos que não têm pai). Ou em nosso exemplo, álbuns que não estão associados a nenhum artista.

Criar um relacionamento por meio da GUI


Agora vamos criar o outro relacionamento por meio da GUI do SQL Server Mangement Studio.

Teria sido mais fácil incluir isso no script acima, mas eu queria demonstrar os dois métodos de criação de um relacionamento.
  1. Abra a tabela filha no designer de tabela


    Clique com o botão direito na tabela filha (nossos Álbuns recém-criados tabela) e selecione Design a partir do menu contextual.

    Se você não puder ver sua tabela recém-criada no Pesquisador de objetos, provavelmente precisará atualizar o Pesquisador de objetos.

    Clique com o botão direito em Tabelas nó e selecione Atualizar .
  2. Abra a caixa de diálogo Relações de chave estrangeira


    Selecione Designer de tabela> Relacionamentos... do menu superior.
  3. Adicione o relacionamento


    A caixa de diálogo Relações de chave estrangeira mostrará quaisquer relações existentes para a tabela. Podemos ver a relação que estabelecemos antes, quando criamos a tabela.

    Clique em Adicionar para adicionar outro relacionamento.
  4. Selecione a especificação de tabelas e colunas


    Uma nova relação aparece acima da outra na Relação selecionada lista com o nome FK_Albums_Albums .

    Garantindo que o novo relacionamento esteja selecionado, clique em Especificação de tabelas e colunas no painel direito. Uma elipse aparece à direita da propriedade.

    Clique nas reticências (... ) para iniciar a caixa de diálogo Tabelas e Colunas.
  5. A caixa de diálogo Tabelas e colunas


    Aqui, você seleciona a tabela de chave primária no painel esquerdo e a tabela de chave estrangeira à direita.
    • Em Tabela de chave primária: selecione Gêneros como a tabela e GenreId como a coluna.
    • Em Tabela de chave estrangeira: selecione Álbuns como a tabela e GenreId como a coluna.

    Clique em OK .

    O SQL Server sugerirá um nome para o relacionamento. Você pode editar isso se desejar. Caso contrário, deixe como está.
  6. O relacionamento


    Seu relacionamento agora será exibido corretamente na caixa de diálogo Relações de Chave Estrangeira.

    Clique em Fechar .
  7. Salvando o relacionamento


    Seu relacionamento não será salvo até que você salve a mesa. Ao salvar a tabela, você provavelmente receberá um aviso de que duas tabelas serão salvas. Isso é esperado, pois o relacionamento afeta duas tabelas.

    Clique em Sim para salvar ambas as tabelas.

    Se você selecionar Designer de tabela> Relacionamentos... para a tabela pai, você também verá o relacionamento lá.