O que é um relacionamento de banco de dados?

Índice:

O que é um relacionamento de banco de dados?
O que é um relacionamento de banco de dados?
Anonim

Um relacionamento é estabelecido entre duas tabelas de banco de dados quando uma tabela usa uma chave estrangeira que referencia a chave primária de outra tabela. Este é o conceito básico por trás do termo banco de dados relacional.

Como uma chave estrangeira funciona para estabelecer um relacionamento

Uma chave primária identifica exclusivamente cada registro na tabela. É um tipo de chave candidata que geralmente é a primeira coluna em uma tabela e pode ser gerada automaticamente pelo banco de dados para garantir que seja exclusiva. Uma chave estrangeira é outra chave candidata (não a chave primária) usada para vincular um registro a dados em outra tabela.

Por exemplo, considere estas duas tabelas que identificam qual professor ensina qual curso. Aqui, a chave primária da tabela Courses é Course_ID. Sua chave estrangeira é Teacher_ID:

Course_ID Nome_Curso Teacher_ID
Curso_001 Biologia Teacher_001
Curso_002 Matemática Professor_002
Curso_003 Inglês Professor_003

Você pode ver que a chave estrangeira em Cursos corresponde a uma chave primária em Professores:

Teacher_ID Nome_do professor
Teacher_001 Carmen
Professor_002 Verônica
Professor_003 Jorge

Podemos dizer que a chave estrangeira Teacher_ID ajudou a estabelecer uma relação entre as tabelas Cursos e Professores.

Image
Image

Tipos de relacionamentos de banco de dados

Usando chaves estrangeiras ou outras chaves candidatas, você pode implementar três tipos de relacionamentos entre tabelas:

Um para Um

Este tipo de relacionamento permite apenas um registro em cada lado do relacionamento. A chave primária refere-se a apenas um registro (ou nenhum) em outra tabela. Por exemplo, em um casamento, cada cônjuge tem apenas um outro cônjuge. Esse tipo de relacionamento pode ser implementado em uma única tabela e, portanto, não utiliza chave estrangeira.

Um-para-muitos

Um relacionamento um-para-muitos permite que um único registro em uma tabela seja relacionado a vários registros em outra tabela. Considere uma empresa com um banco de dados que possui tabelas Clientes e Pedidos.

Um único cliente pode comprar vários pedidos, mas um único pedido não pode ser vinculado a vários clientes. Portanto, a tabela Orders conteria uma chave estrangeira que correspondesse à chave primária da tabela Customers, enquanto a tabela Customers não teria nenhuma chave estrangeira apontando para a tabela Orders.

Muitos-para-Muitos

Esta é uma relação complexa na qual muitos registros em uma tabela podem se vincular a muitos registros em outra tabela. Por exemplo, nossa empresa provavelmente precisa das tabelas Clientes e Pedidos e provavelmente também precisa de uma tabela Produtos.

Novamente, o relacionamento entre a tabela Clientes e Pedidos é um para muitos, mas considere o relacionamento entre a tabela Pedidos e Produtos. Um pedido pode conter vários produtos e um produto pode estar vinculado a vários pedidos, pois vários clientes podem enviar um pedido que contenha alguns dos mesmos produtos. Esse tipo de relacionamento requer no mínimo três tabelas.

Por que os relacionamentos de banco de dados são importantes?

Estabelecer relacionamentos consistentes entre as tabelas do banco de dados ajuda a garantir a integridade dos dados, contribuindo para a normalização do banco de dados. Por exemplo, e se não vinculássemos nenhuma tabela por meio de uma chave estrangeira e, em vez disso, combinássemos os dados nas tabelas Cursos e Professores, assim:

Teacher_ID Nome_do professor Curso
Teacher_001 Carmen Biologia, Matemática
Professor_002 Verônica Matemática
Professor_003 Jorge Inglês

Este design é inflexível e viola o primeiro princípio de normalização de banco de dados, First Normal Form, que afirma que cada célula da tabela deve conter um único e discreto pedaço de dados.

Ou talvez tenhamos decidido adicionar um segundo registro para Carmen, para reforçar 1NF:

Teacher_ID Nome_do professor Curso
Teacher_001 Carmen Biologia
Teacher_001 Carmen Matemática
Professor_002 Verônica Matemática
Professor_003 Jorge Inglês

Este ainda é um design fraco, introduzindo duplicação desnecessária e o que é chamado de anomalias de inserção de dados, o que significa que pode contribuir para dados inconsistentes. Por exemplo, se um professor tiver vários registros, e se alguns dados precisarem ser editados, mas a pessoa que estiver realizando a edição de dados não perceber que existem vários registros? A tabela conteria dados diferentes para o mesmo indivíduo, sem nenhuma maneira clara de identificá-lo ou evitá-lo.

Quebrar esta tabela em duas tabelas, Professores e Cursos, cria o relacionamento adequado entre os dados e, portanto, ajuda a garantir a consistência e a precisão dos dados.

Recomendado: