Você está na página 1de 41

BANCO DE DADOS

O MODELO RELACIONAL

Curso Técnico em Informática


Modalidade Integrado
(APNP – Ciclo 5)

Profa. Danyele Santana


danyele.Santana@ifbaiano.edu.br
SUMÁRIO

Revisando........................................................................................................................3
Modelo Relacional ..........................................................................................................4
Conceitos e características do Modelo Relacional .........................................................9
Restrições no modelo relacional ...................................................................................18
Mapeamento do modelo ER para o Modelo Relacional ...............................................28
Exemplo prático .............................................................................................................36
Exercícios .......................................................................................................................39
Referências ....................................................................................................................41
REVISANDO...
❑Até o momento, vocês estudaram o modelo entidade-
Modelo Conceitual
relacionamento, que corresponde ao modelo conceitual de (Modelo Entidade
Relacionamento
um banco de dados.

❑O modelo entidade-relacionamento apresenta entidades,


Modelo Lógico
atributos e relacionamentos, que caracterizam abstrações (Modelo relacional)

de elementos do mundo real.

❑A partir de agora, estudaremos o modelo relacional, que Modelo Físico


(Implementação do
modelo relacional)
representa um modelo lógico de um banco de dados e sua
implementação usando a Linguagem SQL.
O MODELO RELACIONAL
O modelo relacional é um modelo lógico de banco de dados. Nele, os
dados são apresentados como um conjunto de tabelas, que possuem
linhas e colunas.

PROFESSOR Coluna
COD_PROF NOME DATA_NASCIMENTO RUA BAIRRO CIDADE EMAIL CPF

00001 Silva 18/06/1990 A Centro Bom Jesus da Lapa silvia@gmail.com 5456544965


Ribeiro
Linha 00002 Paulo Silva 25/12/2000 B Sacramento Santo Amaro paulo@gmail.com 4583847532
00003 Clara Santos 04/03/1980 C Centro Guanambi clara@gmail.com 455483734

Cada linha em uma tabela corresponde a um conjunto de dados


relacionados, que representam entidades ou relacionamentos existentes no
mundo real.
O MODELO RELACIONAL
O nome de cada coluna define os dados que compõem as linhas da
tabela. Cada coluna deve conter apenas valores simples, logo, atributos
compostos devem ser divididos e os multivalorados tornam-se novas
tabelas no modelo relacional.
PROFESSOR
COD_PROF NOME DATA_NASCIMENTO RUA BAIRRO CIDADE EMAIL CPF

00001 Silva 18/06/1990 A Centro Bom Jesus da Lapa silvia@gmail.com 5456544965


Ribeiro
00002 Paulo Silva 25/12/2000 B Sacramento Santo Amaro paulo@gmail.com 4583847532
00003 Clara Santos 04/03/1980 C Centro Guanambi clara@gmail.com 455483734

Para cada coluna criada, deve-se especificar um domínio, ou seja, um tipo e


formato de dado que a coluna armazenará, por exemplo (real, data, inteiro,
caracter(45)).
O MODELO RELACIONAL

Na terminologia formal do modelo relacional:

Tabelas são chamadas de relações


As linhas são chamadas de tuplas
As colunas são chamadas de atributos

Nesta apostila iremos adotar a terminologia informal: tabelas,


linhas e colunas.
MODELO ER x MODELO RELACIONAL

Atributo
Entidade Modelo entidade
relacionamento

Modelo
relacional
MODELO ER x MODELO RELACIONAL

O modelo relacional pode ser representado como um Esquema


relacional textual, com a sintaxe: nometabela (coluna:domínio, ...)

Professor (cod_prof: inteiro, nome: caracter(45),


data_nascimento:data, email: caracter(20)),
cpf: inteiro, rua: caracter, bairro:caracter,
cidade: caracter)

Modelo relacional

Modelo Entidade- relacionamento Nota: A coluna chave primária deve ser sublinhada
CARACTERÍSTICAS DO MODELO
RELACIONAL

Em um banco de dados relacional, as tabelas que o compõe e o nomes das


colunas de cada tabela devem possuir nomes distintos entre si.
BD_ESCOLA NÃO!
Aluno Professor
OK!
cod_aluno nome sexo cod_prof Nome Telefone Telefone
00001 Maria Silva F 00002 Claudia 75983473726 7532413493
Santos

Professor
cod_prof nome tel_celular tel_fixo
00002 Claudia 75983473726 7532413493
Santos
CARACTERÍSTICAS DO MODELO
RELACIONAL
Em uma tabela, todas as linhas devem ser distintas. Para isso, deve-se
definir uma chave primária, responsável por garantir esta distinção.
Pessoa
cpf nome sexo
Chave primária 0349302932 Maria de Jesus Silva F

3495902111 Maria de Jesus Silva F

No exemplo acima, as duas pessoas possuem o mesmo nome e sexo. Mas a


coluna CPF é responsável por garantir que são duas pessoas diferentes!
CHAVE PRIMÁRIA

❑Uma chave primária representa uma coluna (ou conjunto colunas)


responsável por identificar de forma única uma linha numa tabela.

❑Usa-se uma chave primária composta (representada por mais de uma


coluna) quando não é possível identificar unicamente uma linha
usando apenas uma coluna.

(HEUSER, 2009)
CHAVE PRIMÁRIA
A escolha de uma coluna para chave primária de uma tabela deve
atentar para a unicidade de seus valores em todas as linhas que a
tabela poderá ter.

Qual seria a chave primária da tabela abaixo?


Professor
COD_PROF NOME DATA_NASCIMENTO RUA BAIRRO CIDADE EMAIL CPF

Chave primária
00001 Silva 18/06/1990 A Centro Bom Jesus da Lapa silvia@gmail.com 5456544965
Ribeiro

Mas e o CPF? Ele também é um valor único para cada professor


CHAVE ALTERNATIVA
Neste cenário, CPF seria uma chave alternativa. Uma chave
alternativa representa uma coluna que também é capaz de
identificar unicamente uma linha na tabela, porém não foi escolhida
como chave primária.

Professor
COD_PROF NOME DATA_NASCIMENTO RUA BAIRRO CIDADE EMAIL CPF

00001 Silva 18/06/1990 A Centro Bom Jesus da Lapa silvia@gmail.com 5456544965


Ribeiro

CPF é a chave alternativa


RELACIONAMENTO ENTRE TABELAS

O desenho ao lado mostra um mãe com seu filho. Um filho recebe


o sobrenome da mãe, e isso identifica o relacionamento entre eles!

E se uma mãe tiver vários filhos? Todos eles receberão o sobrenome da mãe!

Nesta história, o relacionamento entre mãe e filhos acontece


por meio da adição do sobrenome da mãe na certidão de nascimento
de cada um de seus filhos.

E em banco de dados relacional, como as tabelas se relacionam?


CHAVE ESTRANGEIRA
❑O relacionamento entre as tabelas é estabelecido por meio de suas
colunas chave.

Relacionamento no modelo entidade-


O que é uma chave estrangeira?
relacionamento
CHAVE ESTRANGEIRA
Uma chave estrangeira (foreign key (FK)) é uma coluna que define o
relacionamento entre tabelas.

Chave Primária cod_professor nome email


00001 Pedro Paim pedro@gmail.com

cod_turma nome cod_professor Chave Estrangeira


20021 Informática - A 00001

Uma chave estrangeira deve obrigatoriamente estar relacionada a uma chave


primária de outra tabela ou da mesma tabela (em casos de
autorrelacionamento). Ela também precisa ter o mesmo domínio (tipo de dado)
da chave primária da tabela a qual faz referência.
CHAVE ESTRANGEIRA
Modelo relacional (notação textual)

Professor ( cod_professor: inteiro, nome:caracter(45),


email: caracter(20))

Turma ( cod_turma:inteiro, nome:caracter(45),


qtd_alunos: inteiro, cod_professor: inteiro)
cod_professor referencia Professor

Na tabela Turma, a coluna cod_professor é uma chave estrangeira


que faz relação com a chave primária cod_professor da
Modelo entidade-relacionamento tabela Professor.
RESTRIÇÕES NO MODELO
RELACIONAL

Durante a definição de um banco de dados, deve-se buscar garantir a


integridade dos dados armazenados. Os Sistemas Gerenciadores de Bancos
de Dados (SGBDs) fornecem o mecanismo de restrições de integridade,
regras que devem ser aplicadas para garantir a consistência dos dados.

(HEUSER, 2009)
RESTRIÇÕES DE DOMÍNIO
As restrições de domínio definem que o valor de cada coluna deve ser simples
(atômico) e pertencer ao tipo/formato de dado especificado como seu
domínio.

Professor (cod_professor: inteiro, nome: caracter(45), data_nascimento:data,


rua:caracter(45), bairro: caracter(45), email: caracter(45), cpf: inteiro (11))

PROFESSOR
COD_PROF NOME DATA_NASCIMENTO RUA BAIRRO CIDADE EMAIL CPF

00001 Silva Ribeiro 18/06/1990 A Centro Bom Jesus da Lapa silvia@gmail.com 5456544965

No exemplo, o domínio da coluna nome é um conjunto de 45 caracteres. Logo, não será


permitida a inclusão de nomes com mais de 45 letras.
RESTRIÇÃO DE VALORES NULL
A restrição de valores NULL (vazio)
especifica se os valores da coluna são
obrigatórios ou opcionais. Colunas com CADASTRO DE PROFESSOR
valores obrigatórios serão sempre não
nulas (NOT NULL) NOME:* Paulo Gonçalves

RG*: 9568472645
No exemplo, a coluna email é opcional,
pois um professor pode não possuir EMAIL:
email ou não indica-lo no momento no
cadastro. Enviar
Professor
cod_professor nome email rg
00001 Vilma Santomé /
vilma@gmail.com 1234356754
00002 Paulo Gonçalves NULL 9568472645
RESTRIÇÕES DE CHAVE

A restrição de chave define que os valores de chave primária de uma


tabela deve ser único, ou seja, nunca pode se repetir.

PROFESSOR
COD_PROF NOME DATA_NASCIMENTO RUA BAIRRO CIDADE EMAIL CPF

00001 Silva Ribeiro 18/06/1990 A Centro Bom Jesus da Lapa silvia@gmail.com 5456544965

No exemplo, a coluna cod_professor é a chave primaria da tabela, logo,


cada uma das linhas deve possuir um valor distinto nesta coluna,
garantindo assim que as linhas da tabela serão distintas entre si.
INTEGRIDADE DE ENTIDADE
A restrição de integridade de entidade indica que os valores de
chave primária em uma tabela não podem ser nulos.

PROFESSOR
COD_PROF NOME DATA_NASCIMENTO RUA BAIRRO CIDADE EMAIL CPF

00001 Silva Ribeiro 18/06/1990 A Centro Bom Jesus da Lapa silvia@gmail.com 5456544965

No exemplo acima, a coluna cod_professor não pode possuir valores nulos,


pois dessa forma seria impossível identificar cada professor na tabela.
INTEGRIDADE REFERENCIAL
A restrição de integridade referencial define que o valor de uma chave
estrangeira (FK) em uma tabela deve, necessariamente, existir como chave
primária (PK) da tabela relacionada ou ser um valor NULL.
PROFESSOR
Chave COD_PROF NOME DATA_NASCIMENTO RUA BAIRRO CIDADE EMAIL CPF
primária
00001 Silva Ribeiro 18/06/1990 A Centro Bom Jesus da Lapa silvia@gmail.com 5456544965

TURMA
COD_TURMA NOME_TURMA COD_PROF
Chave
01 Informática 01 00001
estrangeira
02 Informática 02 00001

No exemplo acima, a chave estrangeira cod_prof na tabela Turma deve referenciar um valor
existente como chave primária na tabela Professor.
INTEGRIDADE REFERENCIAL
Com base nas tabelas abaixo, você acha que é possível adicionar uma nova
turma, com um cod_professor ‘00234’?
PROFESSOR
COD_PROF NOME DATA_NASCIMENTO RUA BAIRRO CIDADE EMAIL CPF

00001 Silva Ribeiro 18/06/1990 A Centro Bom Jesus da Lapa silvia@gmail.com 5456544965

TURMA
COD_TURMA NOME_TURMA COD_PROF
01 Informática 01 00001
02 Banco de Dados 00234
?
INTEGRIDADE REFERENCIAL
Com base nas tabelas abaixo, você acha que é possível adicionar uma nova
turma, com um cod_professor ‘00234’?
PROFESSOR
COD_PROF NOME DATA_NASCIMENTO RUA BAIRRO CIDADE EMAIL CPF

00001 Silva Ribeiro 18/06/1990 A Centro Bom Jesus da Lapa silvia@gmail.com 5456544965

TURMA
COD_TURMA NOME COD_PROF
01 Informática 01 00001
02 Banco de Dados 00234

Não é possível pois violaria a restrição integridade referencial. Não existe um Professor
X
cadastrado com o cod_prof (PK) igual a ‘00234’.
HORA DE PRATICAR
Observe a tabela abaixo:

PROFESSOR
COD_PROF NOME DATA_NASCIMENTO RUA BAIRRO CIDADE EMAIL CPF

1) Sendo a coluna cod_prof a chave primária da tabela, é possível que ela tenha
um valor null ?
2) Ao criar a tabela, um conjunto de valores numéricos foram definidos como
domínio da coluna CPF. É possível armazenar um conjunto de letras nesta
coluna?
3) Faz sentido definir que a coluna email possa aceitar valores NULL?
RESPOSTA
PROFESSOR
COD_PROF NOME DATA_NASCIMENTO RUA BAIRRO CIDADE EMAIL CPF

1) Sendo a coluna cod_prof a chave primária da tabela, é possível que ela tenha um
valor null ?
Não, pois violaria a restrição de integridade de entidade. Colunas chave primária
nunca poderão ser nulas.
2) Ao criar a tabela, um conjunto de valores numéricos foram definidos como domínio
da coluna CPF. É possível armazenar um conjunto de letras nesta coluna?
Não. Esta ação violaria a restrição de domínio.
3) Faz sentido definir que a coluna email poderá aceitar valores NULL?
Sim. Um professor pode não possuir um email
O QUE ESTUDAMOS ATÉ AGORA?
Até o momento, estudamos sobre o modelo relacional, no qual o banco de
dados é representado por meio de tabelas que possuem colunas e linhas.
Além disso, vimos os tipos de restrições aplicáveis a banco de dados
relacionais para garantir a integridade dos dados armazenados.

Mas... como as entidades criadas no modelo entidade-relacionamento e


todos os relacionamentos podem ser representados no modelo relacional???

Vamos começar a estudar agora a conversão do modelo


entidade relacionamento para o modelo relacional!
ENTIDADE = TABELA

Todas as entidades criadas no modelo


entidade-relacionamento, obrigatoriamente
tornam-se tabelas no modelo relacional

Os atributos e a chave primária determinados


no modelo ER são mantidos no modelo
relacional.

Atributos compostos como endereço devem ser Professor (cod_prof: inteiro, nome: caracter(45),
decompostos, e os atributos multivalorados, data_nasc:data, rua: caracter(45), bairro:caracter(45),
como telefone, viram uma nova tabela. cidade: caracter(45))

Telefone (cod_prof: inteiro, telefone:caracter(20))


Os nomes das colunas não devem conter cod_prof referencia Professor
espaços. Além disso, prefira nomes curtos. Ex:
Data de Nascimento → data_nasc ou DataNasc
ENTIDADE FRACA
Para cada entidade fraca criada
no modelo entidade-
relacionamento deve criar uma
tabela no modelo relacional.

A chave primária da tabela que


representa a entidade fraca será Empregado (cod_empregado: inteiro, nome: caracter(45))
composta pela PK da tabela que
Dependente(cod_empregado :inteiro,
a identifica mais alguma outra num_sequencia:inteiro, nome: caracter(45))
coluna da própria tabela. cod_empregado referencia Empregado
RELACIONAMENTOS 1..N
No relacionamento entre entidades com cardinalidade 1..N, deve-se adicionar
uma chave-estrangeira na tabela com cardinalidade N. A chave estrangeira
deve fazer referência à chave primária da entidade com cardinalidade 1

Professor (cod_prof: inteiro, nome: caracter(45),


data_nascimento:data, email: caracter(20)),
cpf: inteiro, rua: caracter, bairro:caracter,
cidade: caracter)

Turma (cod_turma: inteiro, nome: caracter,


qtd_alunos: inteiro, cod_prof: inteiro)

cod_prof referencia Professor


RELACIONAMENTOS 1..1

No relacionamento entre entidades


com cardinalidade 1..1, deve-se
escolher uma das tabelas para receber
como chave estrangeira, a chave
primaria da tabela relacionada.

Deve-se preferencialmente escolher a


Professor (cod_professor: inteiro, nome:
entidade com participação total no caracter(45))
relacionamento para receber a chave
estrangeira, evitando assim a Escola(cod_escola: inteiro, nome: caracter(45),
ocorrência de valores nulos. cod_professor_diretor:inteiro)

cod_prof_diretor referencia Professor


(ANGELLOTI, 2010)
RELACIONAMENTOS N..N
E os relacionamentos com cardinalidade muitos para muitos (N..N)? Deve ser criada uma
nova tabela sempre! Essa nova tabela deve ter as chaves primárias das tabelas
relacionadas, como chave estrangeira. A chave primária desta tabela será composta pelas
chaves estrangeiras, mais alguma coluna da tabela gerada, se necessário.

Professor (cod_prof: inteiro, nome: caracter(45),


data_nascimento:data, email: caracter(20)),
cpf: inteiro, rua: caracter, bairro:caracter,
cidade: caracter)

Turma (cod_turma: inteiro, nome: caracter,


qtd_alunos: inteiro)

Professor_Turma(cod:turma:inteiro,
cod_professor:inteiro)
cod_turma referencia Turma
cod_professor referencia Professor
ENTIDADE ASSOCIATIVA
.
Uma entidade associativa é transformada em uma tabela no modelo
relacional. A chave primária desta tabela será composta pelas chaves
primárias das tabelas relacionadas, que também serão suas chaves
estrangeiras.
Cliente (codigo: inteiro, nome: caracter(45))

Produto (código:inteiro, nome: caracter(45), valor:real)

Compra(cod_produto:inteiro, cod_cliente: inteiro,


data_compra:data, valor_compra: real)
cod_produto referencia Produto
cod_cliente referencia Cliente

Prestacao(codigo:inteiro, valor:real, data: data,


cod_cliente:inteiro, cod_produto:inteiro,
data_compra:data)
(cod_cliente, cod_produto, data_compra) referencia
(ANGELLOTI, 2010) Compra
RELACIONAMENTO TERNÁRIO
.
Um relacionamento ternário gera uma nova tabela que terá como chaves
primárias e estrangeiras, as chaves primárias das tabelas relacionadas,
mias os atributos do relacionamento, se houver.
Professor (cod_prof: inteiro, nome: caracter(45))

Turma (cod_turma:inteiro, nome: caracter(45))

Disciplina(cod_disc:inteiro, nome: caracter(45))

TurmaProfDisciplina(cod_prof:inteiro, cod_turma:inteiro,
cod_disc:inteiro, ano:caracter(4))

cod_prof referencia Professor


cod_turma referencia Turma
cod_disc referencia Disciplina

(ANGELLOTI, 2010)
EXEMPLO PRÁTICO

Você foi contratad@ para projetar o banco de dados de uma escola profissionalizante.
Sabe-se que:

❑Dos professores deve-se armazenar um código identificador, nome, CPF, data de


nascimento, endereço e email.
❑Dos cursos deve-se cadastrar um código identificador, nome, carga horária, data de
início e data de finalização do curso.
❑Um professor pode ofertar vários cursos e um curso é ofertado por apenas um
professor.
❑Um professor pode não optar por não informar o email no momento do cadastro
do sistema.
EXEMPLO PRÁTICO - CRIAÇÃO DO
MODELO ER
❑Dos professores deve-se armazenar um
código identificador, nome, CPF, data de
nascimento, endereço e email.

❑Dos cursos deve-se cadastrar um código


identificador, nome, carga horária, data de
início e data de finalização do curso.

❑Um professor pode ofertar vários cursos e um


curso é ofertado por apenas um professor.

❑Um professor pode não optar por não


informar o email no momento do cadastro do
sistema.
EXEMPLO PRÁTICO – CRIAÇÃO DO
MODELO RELACIONAL

Professor (cod_prof: inteiro, nome: caracter(45),


data_nascimento:data, email: caracter(20)),
cpf: inteiro, rua: caracter(45), bairro:caracter(45),
cidade: caracter(45))

Curso (cod_curso: inteiro, nome: caracter(45),


qtd_alunos: inteiro, data_inicio: data,
data_fim:data, carga_horaria:inteiro,
cod_prof:inteiro)

cod_prof referencia Professor


HORA DE PRATICAR!
Para cada modelo entidade relacionamento apresentado, realize a transformação para o modelo
relacional (Esquema textual) indicando o nome da tabela, colunas e seu domínio (tipo/formato de dado),
chaves primárias, e chaves estrangeiras, fazendo o relacionamento entre as tabelas corretamente,
conforme estudamos.

a) b)
HORA DE PRATICAR!
Para cada modelo entidade relacionamento apresentado, realize a transformação para o modelo
relacional (Esquema textual) indicando o nome da tabela, colunas e seu domínio (tipo/formato de dado),
chaves primárias, e chaves estrangeiras, fazendo o relacionamento entre as tabelas corretamente,
conforme estudamos.

c) d)
REFERÊNCIAS

ANGELOTTI, Elaini Simoni. Banco de Dados. Curitiba: Editora do Livro


Técnico, 2010. 120 p. ISBN: 978-85-63687-02-9.

ELMASRI, Ramez et al. Sistemas de banco de dados. 2011.

HEUSER, Carlos Alberto. Projeto de banco de dados: Volume 4 da Série


Livros didáticos informática UFRGS. Bookman Editora, 2009.

Você também pode gostar