O termo de banco de dados "relacional" ou "relacionamento" descreve a maneira como os dados nas tabelas são conectados.
Os recém-chegados ao mundo dos bancos de dados geralmente têm dificuldade em ver a diferença entre um banco de dados e uma planilha. Eles vêem tabelas de dados e reconhecem que os bancos de dados permitem que você organize e consulte os dados de novas maneiras, mas não consegue captar o significado dos dados. relações entre dados que dão à tecnologia de banco de dados relacional seu nome.
Relacionamentos permitem que você descreva as conexões entre diferentes tabelas de banco de dados de maneiras poderosas. Esses relacionamentos podem ser aproveitados para executar consultas eficientes de várias tabelas, conhecidas como junções.
Tipos de Relacionamentos de Banco de Dados
Existem três tipos diferentes de relacionamentos de banco de dados, cada um nomeado de acordo com o número de linhas da tabela que podem estar envolvidas no relacionamento. Cada um desses três tipos de relacionamento existe entre duas tabelas.
- Relações um-para-um ocorre quando cada entrada na primeira tabela possui uma e somente uma contraparte na segunda tabela. Relacionamentos um-para-um raramente são usados porque geralmente é mais eficiente simplesmente 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.
- Relações um-para-muitos são o tipo mais comum de relacionamento com o banco de dados. Elas ocorrem quando cada registro na Tabela A corresponde a um ou mais registros na Tabela B, mas cada registro na Tabela B corresponde a apenas um registro na Tabela A. Por exemplo, o relacionamento entre uma tabela Professores e uma tabela Alunos em uma escola primária 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.
- Muitos-para-muitos relacionamentos 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 a tabela Professores e Cursos seria provavelmente para muitos, porque cada professor pode instruir mais de um curso, e cada curso pode ter mais de um instrutor.
Relacionamentos auto-referenciados: um caso especial
As relações de auto-referência ocorrem quando há apenas uma tabela envolvida. Um exemplo comum é uma tabela de funcionários que contém informações sobre o supervisor de cada funcionário. Cada supervisor também é funcionário e tem seu próprio supervisor. Nesse caso, há um relacionamento de auto-referê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 referenciadas da Tabela B.
Considere novamente o exemplo das tabelas Professores e Alunos. A tabela Teachers contém apenas 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 um ID, nome e uma coluna de chave estrangeira:
Identidade estudantil | Nome do 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 usarão "PK" ou "FK" no nome da coluna para identificar facilmente uma chave primária ou uma coluna de chave estrangeira.
Observe que essas duas tabelas ilustram um relacionamento um-para-muitos entre os professores e os alunos.
Relacionamentos e Integridade Referencial
Depois de adicionar uma chave estrangeira a uma tabela, você poderá criar uma restrição de banco de dados que imponha a integridade referencial entre as duas tabelas. Isso garante que os relacionamentos entre as tabelas permaneçam consistentes. Quando uma tabela possui uma chave estrangeira para outra tabela, o conceito de integridade referencial afirma 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ê implementa os relacionamentos entre as tabelas de diferentes maneiras. O Microsoft Access fornece um assistente que permite facilmente vincular tabelas e também impor integridade referencial.
Se você estiver escrevendo SQL diretamente, primeiro crie a tabela Professores, declarando que uma coluna de ID é a chave primária:
CREATE TABLE Professores (
InstructorID INT AUTO_INCREMENT PRIMARY KEY, Teacher_Name VARCHAR (100), Curso VARCHAR (100));
Ao criar a tabela Alunos, você declara a coluna Professor_FK como uma chave estrangeira fazendo referência à coluna InstructorID na tabela Teachers ':
CREATE TABLE Students ( CHAVE PRIMÁRIA DO AUTO_INCREMENTO INT. Student_Name VARCHAR (100), Teacher_FK INT, CHAVE ESTRANGEIRA (Teacher_FK) REFERÊNCIAS Professores (InstructorID)))
;
Usando relacionamentos para unir tabelas
Depois de criar um ou mais relacionamentos no banco de dados, você pode aproveitar o poder deles usando consultas SQL JOIN para combinar informações de várias tabelas. O tipo mais comum de junção é um SQL INNER JOIN ou uma junção simples. Esse tipo de junção retorna todos os registros que atendem à condição de junção de várias tabelas.Por exemplo, essa condição de JOIN retornará o Student_Name, o Teacher_Name e o Course, onde a chave estrangeira na tabela Students corresponderá à chave primária na tabela Teachers:
SELECT Students.Student_Name, Teachers.Teacher_Name, Teachers.CourseDe estudantesProfessores do INNER PARTICIPAMEm Students.Teacher_FK = Teachers.InstructorID;
Esta declaração produz uma tabela algo como isto:
Tabela retornada da instrução de associação do SQL
Student_NameTeacher_NameCursoLowell SmithJohn DoeInglêsBrian ShortJohn DoeInglêsCorky MendezJane SchmoeMatemáticaMonica JonesJohn DoeInglês