Os termos do banco de dados relacional e relacionamento descrevem a maneira como os dados nas tabelas são conectados. Um banco de dados relacional consiste em uma série de duas ou mais tabelas vinculadas por uma chave específica. Um banco de dados relacional difere de bancos de dados não estruturados, que são comuns em iniciativas de big data. Bancos de dados relacionais tendem a exigir regras rígidas sobre como as tabelas são definidas e o que constitui um relacionamento válido entre as tabelas.
Tipos de Relacionamentos de Banco de Dados
Relacionamentos permitem que você descreva as conexões entre as tabelas do banco de dados de maneiras poderosas. Esses relacionamentos podem ser aproveitados para realizar consultas poderosas entre tabelas, conhecidas como JOINs.
Existem três tipos de relacionamentos de banco de dados, cada um nomeado de acordo com o número de linhas da tabela envolvidas no relacionamento. Cada um desses três tipos de relacionamento existe entre duas tabelas.
- Relações um para um ocorrem quando cada entrada na primeira tabela tem apenas uma contraparte na segunda tabela. Relacionamentos um para um raramente são usados porque geralmente é mais eficiente colocar todas as informações em uma única tabela. Alguns designers de banco de dados aproveitam esse relacionamento criando tabelas que contêm um subconjunto dos dados de outra tabela.
- Relacionamentos um-para-muitos são o tipo mais comum de relacionamento de banco de dados. Ocorrem quando cada registro da Tabela A corresponde a um ou mais registros da Tabela B, mas cada registro da Tabela B corresponde a apenas um registro da Tabela A. Por exemplo, a relação entre uma tabela Professores e uma tabela Alunos em uma escola de ensino fundamental banco de dados provavelmente seria um relacionamento um-para-muitos porque cada aluno tem apenas um professor, mas cada professor tem vários alunos. Esse design de um para muitos ajuda a eliminar dados duplicados.
- Relações muitos-para-muitos ocorrem quando cada registro na Tabela A corresponde a um ou mais registros na Tabela B, e cada registro na Tabela B corresponde a um ou mais registros na Tabela A. Por exemplo, a relação entre uma tabela Professores e uma tabela Cursos provavelmente seria de muitos para muitos porque cada professor pode ministrar mais de um curso e cada curso pode ter mais de um instrutor.
Linha de fundo
Os relacionamentos de auto-referência ocorrem quando há apenas uma tabela envolvida. Um exemplo comum é uma tabela Employees que contém informações sobre o supervisor de cada funcionário. Cada supervisor também é um funcionário e tem um supervisor. Nesse caso, há uma relação de autorreferência de um para muitos, pois cada funcionário tem um supervisor, mas cada supervisor pode ter mais de um funcionário.
Criando relacionamentos com chaves estrangeiras
Você cria relacionamentos entre tabelas especificando uma chave estrangeira. Essa chave informa ao banco de dados relacional como as tabelas estão relacionadas. Em muitos casos, uma coluna na Tabela A contém chaves primárias que são referenciadas na Tabela B.
Considere o exemplo das tabelas Professores e Alunos. A tabela Professores contém um ID, um nome e uma coluna de curso:
InstructorID | Nome_do professor | Curso |
001 | John Doe | Inglês |
002 | Jane Schmoe | Matemática |
A tabela Alunos inclui uma coluna de ID, nome e chave estrangeira:
ID Aluno | Nome_Aluno | Teacher_FK |
0200 | Lowell Smith | 001 |
0201 | Brian Short | 001 |
0202 | Corky Mendez | 002 |
0203 | Monica Jones | 001 |
A coluna Teacher_FK na tabela Alunos faz referência ao valor da chave primária de um instrutor na tabela Professores. Freqüentemente, os designers de banco de dados usam PK ou FK no nome da coluna para identificar uma coluna de chave primária ou chave estrangeira.
Estas duas tabelas ilustram uma relação um-para-muitos entre os professores e os alunos.
Relacionamentos e Integridade Referencial
Após adicionar uma chave estrangeira a uma tabela, crie uma restrição de banco de dados que imponha a integridade referencial entre as duas tabelas. Essa etapa garante que os relacionamentos entre as tabelas permaneçam consistentes. Quando uma tabela tem uma chave estrangeira para outra tabela, a integridade referencial exige que qualquer valor de chave estrangeira na Tabela B deve se referir a um registro existente na Tabela A.
Implementando Relacionamentos
Dependendo do seu banco de dados, você implementará relacionamentos entre tabelas de diferentes maneiras. O Microsoft Access fornece um assistente que permite vincular tabelas e também impor integridade referencial.
Se você estiver escrevendo SQL diretamente, primeiro crie a tabela Teachers, declarando uma coluna de ID para ser a chave primária:
CREATE TABLE Professores (InstructorID INT AUTO_INCREMENT PRIMARY KEY, Teacher_Name VARCHAR(100), Course VARCHAR(100));
Ao criar a tabela Alunos, você declara a coluna Teacher_FK como uma chave estrangeira referenciando a coluna InstructorID na tabela Teachers:
CREATE TABLE Alunos (StudentID INT AUTO_INCREMENT PRIMARY KEY, Student_Name VARCHAR(100), Teacher_FK INT, FOREIGN KEY (Teacher_FK) REFERENCES Teachers(InstructorID)));
Usando relacionamentos para unir tabelas
Depois de criar um ou mais relacionamentos em seu banco de dados, aproveite seu poder usando consultas SQL JOIN para combinar informações de várias tabelas. O tipo mais comum de junção é um SQL INNER JOIN, que é uma junção simples. Esse tipo de junção retorna todos os registros que atendem à condição de junção de uma ou mais tabelas.
Por exemplo, esta condição JOIN retorna Student_Name, Teacher_Name e Course, onde a chave estrangeira na tabela Students corresponde à chave primária na tabela Teachers:
SELECT Students. Student_Name, Teachers. Teacher_Name, Teachers. Course
FROM Students
INNER JOIN TeachersON Students. Teacher_FK=Teachers. InstructorID;
Esta declaração produz uma tabela mais ou menos assim:
Student_Name | Nome_do professor | Curso |
Lowell Smith | John Doe | Inglês |
Brian Short | John Doe | Inglês |
Corky Mendez | Jane Schmoe | Matemática |
Monica Jones | John Doe | Inglês |