Modelo Relacional
Modelo Relacional
Wendel Melo
Faculdade de Computação Universidade Federal de Uberlândia
www.facom.ufu.br/~wendelmelo
2 Modelo Relacional
Modelo Relacional
• Proposto por Ted Codd em 1970;
• Se tornou padrão nos principais SGBD’s de uso geral devi-do a sua simplicidade e embasamento matemático;
• O modelo relacional abre mão de algumas funcionalida-des presentes em outros tipos de modelo, como o Entida-de Relacionamento.
• Esse foco na simplicidade permite implementações efici-entes para a manipulação dos dados, o que contribuiu for-temente para o sucesso dos SGBD’s relacionais.
3 Modelo Relacional
Modelo Relacional - Limitações
Em nome da eficiência na manipulação dos dados, as seguin-tes limitações são impostas no modelo relacional:
• Todo atributo deve ser monovalorado; Atributos multivalo-rados não são permitidos.
• Apenas entidades (relações) podem possuir atributos. Não há atributos de relacionamento;
• Cada relacionamento envolve, no máximo, duas entidades (relações) distintas;
4 Modelo Relacional
Modelo Relacional - Limitações
Em nome da eficiência na manipulação dos dados, as seguin-tes limitações são impostas no modelo relacional:
• Apenas relacionamentos do tipo um para um ou um para muitos são permitidos;
• Assim, relacionamentos do tipo muitos para muitos preci-sam ser decompostos em dois relacionamentos um para muitos com uma entidade (relação) auxiliar.
5 Modelo Relacional
Modelo Relacional
• O modelo relacional representa o banco de dados como um conjunto de relações.
– Podemos encarar o termo relação como sendo si-nônimo de tabela. Ex: a relação de alunos do curso de BD (a tabela (listagem) de alunos de BD).
• Assim, o modelo relacional é baseado em tabelas bidi-mensionais (linha e coluna);
• Uma relação é a representação de uma entidade do mun-do real (um objeto, conceito ou fato), e pode ser encarada como uma tabela.
6 Modelo Relacional
Modelo Relacional
Dada uma tabela associada à uma relação R:
• As linhas (tuplas) representam instâncias da relação (enti-dade) sendo modelada;
• As colunas representam os atributos da relação;
• Cada célula armazena um valor de atributo para uma instân-cia da relação (entidade);
Pessoa nome cpf sexo dt_nasc altura
Laura G 77777777777 F 30/03/1992 1.62 Camila C 22222222222 F
7 Modelo Relacional
Modelo Relacional
Pessoa nome cpf sexo dt_nasc altura
Laura G 77777777777 F 30/03/1992 1.62 Camila C 22222222222 F
Fernanda P 33333333333 07/01/1993 1.68
• Pelo fato do modelo ser baseado em tabela bidimensionais, cada célula armazena um valor atômico (que não pode ser subdividido em seu domínio);
• Assim, não há suporte para atributos multivalorados;
• Para armazenar 3 telefones de uma pessoa, seria preciso criar 3 atributos distintos, ou uma nova relação apenas para telefones;
8 Modelo Relacional
Modelo Relacional
• Formalmente, cada linha da tabela é chamada de tupla ou
n-tupla (lista composta por n valores);
• Cada componente da tupla pode conter um dado de um de-terminado tipo sujeito a um domínio de possíveis valores;
• Um domínio pode receber um nome, um tipo de dado e um formato. Ex: o atributo cpf pode estar em um domínio cha-mado cpf_brasil com o tipo sequência de 11 dígitos.
Pessoa
char[200] cpf_brasil {F, M} date float
nome cpf sexo dt_nasc altura
Laura G 77777777777 F 30/03/1992 1.62 Camila C 22222222222 F
9 Modelo Relacional
Modelo Relacional
• Um esquema para descrever uma relação R é indicado por: R(A1, A2, …, An)
• dom(Ai) representa o domínio do atributo Ai;
Pessoa nome cpf sexo dt_nasc altura
Laura G 77777777777 F 30/03/1992 1.62 Camila C 22222222222 F
Fernanda P 33333333333 07/01/1993 1.68
10 Modelo Relacional
Modelo Relacional
• Um esquema para descrever uma relação R é indicado por: R(A1, A2, …, An)
• dom(Ai) representa o domínio do atributo Ai;
• Para o nosso exemplo, temos:
Pessoa(nome, cpf, sexo, dt_nasc, altura)
Pessoa nome cpf sexo dt_nasc altura
Laura G 77777777777 F 30/03/1992 1.62 Camila C 22222222222 F
Fernanda P 33333333333 07/01/1993 1.68
11 Modelo Relacional
Modelo Relacional
• O(s) atributo(s) sublinhado(s) compõe(m) a chave primária da relação;
• Pode-se detalhar melhor indicando os tipos dos atributos: Pessoa(nome: char[200], cpf: char[11],
sexo: char, dt_nasc: date, altura: float)
Pessoa nome cpf sexo dt_nasc altura
Laura G 77777777777 F 30/03/1992 1.62 Camila C 22222222222 F
12 Modelo Relacional
Modelo Relacional
• Podemos representar relações graficamente:Pessoa nome cpf sexo dt_nasc altura
Laura G 77777777777 F 30/03/1992 1.62 Camila C 22222222222 F
13 Modelo Relacional
Modelo Relacional
• A definição de uma relação não inclui uma ordem específica para as tuplas (linhas);
• Assim, as tuplas da tabela Pessoa poderiam ser apresentadas em qualquer ordem, que, ainda assim, o estado corrente da re-lação seria o mesmo;
Pessoa nome cpf sexo dt_nasc altura
Laura G 77777777777 F 30/03/1992 1.62 Camila C 22222222222 F
14 Modelo Relacional
Exemplo - Modelo Relacional
Construa um modelo de dados relacional que atenda aos se-guintes requisitos de um berçário:
1) É necessário manter um cadastro dos pais com nome, RG, sexo, data de nascimento, telefone e endereço;
2) A cada bebê que nasce, são cadastrados nome, data/hora de nascimento, sexo, peso, altura, tipo de parto, pai (quando for conhecido) e mãe;
3) Para cada profissional de saúde, são armazenados nome, RG, CPF, data de nascimento, registro de ordem (se houver) e um dos cargos pré-cadastrados em uma relação de cargos;
4) É preciso cadastrar quais os profissionais envolvidos no nas-cimento de cada bebê.
15 Modelo Relacional
Exemplo - Modelo Relacional
Diagrama construído usandoa ferramenta MySQL Work-bench.
16 Modelo Relacional
Exemplo - Modelo Relacional
Considerações
so-bre a notação do
MySQL Workbench
17 Modelo Relacional
Exemplo - Modelo Relacional
A chave indica que o atributocompõe a chave primária da relação.
18 Modelo Relacional
Exemplo - Modelo Relacional
Losango cheio indica que oatributo é de preenchimento obrigatório.
19 Modelo Relacional
Exemplo - Modelo Relacional
Losango vazado indica que oatributo é de preenchimento
20 Modelo Relacional
Exemplo - Modelo Relacional
Losango ou chave vermelhaindica chave estrangeira. Quando a chave estrangeira é parte também da chave pri-mária, é usada a chave. Quando a chave estrangeira não é parte da chave, é usado losango.
21 Modelo Relacional
Exemplo - Modelo Relacional
Relacionamento 1:nidentifica-dor (chave estrangeira participa da chave primária, preenchi-mento obrigatório).
Dois traços verticais: 1
22 Modelo Relacional
Exemplo - Modelo Relacional
Relacionamento 1:n nãoidenti-ficador (chave estrangeira par-ticipa da chave primária), preenchimento não obrigatório. A bola ao lado esquerdo indica que o bebê pode ter 0 ou 1 pai. Traço vertical com bola: 0 ou 1 Um vertical e dois diagonais: n
23 Modelo Relacional
Exemplo - Modelo Relacional
Relacionamento 1:n nãoiden-tificador (chave estrangeira
não participa da chave
primá-ria) com preenchimento obri-gatório.
Dois traços verticais: 1
24 Modelo Relacional
Exemplo - Modelo Relacional
Considerações
25 Modelo Relacional
Exemplo - Modelo Relacional
O modelo prevê doisgenito-res para cada bebê (pai e mãe). Por essa razão, há dois relacionamentos entre Geni-tor e Bebe, com duas chaves estrangeiras em Bebe.
26 Modelo Relacional
Exemplo - Modelo Relacional
Cada genitor pode ter váriosbebês. Por sua vez, cada bebê só terá um genitor como mãe e um ou zero genitor como pai. Por essa razão, es-ses relacionamentos são 1:n (um para muitos)
27 Modelo Relacional
Exemplo - Modelo Relacional
Observe que a chave primáriade Bebe é composta de nome e mãe. Isso porque é possível que vários bebês tenham o mesmo nome. Observe que Bebe é uma entidade fraca, pois por não possuir chave candidata própria, pega carona chave primária de Genitor.
28 Modelo Relacional
Exemplo - Modelo Relacional
Cada profissional de saúdedeve ter um cargo. Em cada cargo, podemos ter vários profissionais. Por essa razão, esse relacionamento é 1:n.
29 Modelo Relacional
Exemplo - Modelo Relacional
Note que a chave estrangeiraem Profissional_saude não faz parte da chave primária. Por essa razão, o uso da linha pontilhada.
30 Modelo Relacional
Exemplo - Modelo Relacional
Note que cargo não possuiuma chave candidata própria. Por essa razão, criamos uma chave primária artificial cha-mada idCargo.
31 Modelo Relacional
Exemplo - Modelo Relacional
Para cada bebê nascer.Po-demos ter vários profissionais envolvidos. Por sua vez, cada profissional pode trabalhar no nascimento de vários bebês. Desse modo, temos um rela-cionamento n:n entre Bebe e Profissional_saude.
32 Modelo Relacional
Exemplo - Modelo Relacional
Como o modelo relacional nãosuporta relacionamentos n:n diretamente, foi necessário cri-ar uma relação auxilicri-ar Profis-sional_saude_has_Bebe. Em cada linha dessa relação, te-mos uma par profissional, bebê. Assim, é possível listar todos os profissionais que atu-aram com cada bebê.
33 Modelo Relacional
Exemplo - Modelo Relacional
Assim, ambos Bebe eProfis-sional_saude terão relaciona-mento 1:n com a relação auxi-liar
34 Modelo Relacional
Exemplo - Modelo Relacional
• Podemos representar o esquema modelado da seguinte forma: Genitor(RG, nome, sexo, dt_nasc, telefone, endereco)
Bebe(nome, Genitor_mae_RG, Genitor_pai_RG, dthr_nasc, sexo, peso, altura, tipo_parto) Profissional_saude_has_Bebe(Bebe_nome, Bebe_Genitor_mae,
Profissional_saude_CPF) Profissional_saude(CPF, RG, nome, dt_nasc, registro, Cargo_idCargo)
35 Modelo Relacional
nome Genitor_
mae_RG _pai_RGGenitor dthr_nasc sexo peso altura tipo_parto
Joãozinho 1111111 2222222 07-09-2017 12:41 M 3.1 50 Normal Mariazinha 333333 2222222 19-04-2018 09:26 F 2.9 48 Normal Zequinha 1111111 21-08-2018 21:57 M 3 51 Normal Joãozinho 555555 6666666 30-08-2018 16:38 3.3 50 Normal
CPF RG nome dt_nasc registro Cargo_idCargo
10101 100001 Cesar M 07-02-1987 55555 1 99800 232323 Cristine S 22-02-1986 44444 2 20202 234000 Camila R 16-10-1986 44044 1 31333 777000 Viviane Z 18-06-1988 54004 2
Profissional_saude Bebe_nome Bebe_Genitor_mae
10101 Joãozinho 1111111 31333 Joãozinho 1111111 31333 Mariazinha 333333 99800 Mariazinha 333333 20202 Mariazinha 333333
Relacionamento n:n na prática
Bebe
Profissional
_saude
Profissional_saude
_has_Bebe
36 Modelo Relacional
nome Genitor_
mae_RG _pai_RGGenitor dthr_nasc sexo peso altura tipo_parto
Joãozinho 1111111 2222222 07-09-2017 12:41 M 3.1 50 Normal Mariazinha 333333 2222222 19-04-2018 09:26 F 2.9 48 Normal Zequinha 1111111 21-08-2018 21:57 M 3 51 Normal Joãozinho 555555 6666666 30-08-2018 16:38 3.3 50 Normal
CPF RG nome dt_nasc registro Cargo_idCargo
10101 100001 Cesar M 07-02-1987 55555 1 99800 232323 Cristine S 22-02-1986 44444 2 20202 234000 Camila R 16-10-1986 44044 1 31333 777000 Viviane Z 18-06-1988 54004 2
Profissional_saude Bebe_nome Bebe_Genitor_mae
10101 Joãozinho 1111111 31333 Joãozinho 1111111 31333 Mariazinha 333333 99800 Mariazinha 333333 20202 Mariazinha 333333
Relacionamento n:n na prática
Bebe
Profissional
_saude
Profissional_saude
_has_Bebe
37 Modelo Relacional
Restrições do Modelo Relacional
• Restrição de integridade das instâncias de relações: exige quenenhum valor de chave primária possa estar vazio (NULL), pois isso impediria a identificação de uma instância da relação;
• Restrição de chave: estabelece que cada instância da relação possui um valor de chave primária diferente de todas as de-mais que existem, ou já existiram no BD;
• Restrição de integridade referencial: impõe consistência no re-lacionamento entre relações, isto é, que cada chave estrangeira em um exemplar de uma relação possua um valor que de fato seja chave primária de alguma instância de outra relação;
38 Modelo Relacional
Restrições do Modelo Relacional
• Restrição de domínio: especifica que cada valor deve estar nodomínio do seu respectivo atributo;
• Restrição de não-nulidade (NOT NULL): impõe que atributos de uma relação marcados como NOT NULL não podem estar vazios em nenhuma das suas instâncias.
• As restrições anteriores são especificadas no esquema de BD relacional através da Linguagem de Definição de Dados (DDL);
• A Linguagem de Consulta Estruturada (SQL) contém instruções que atuam como DDL;
39 Modelo Relacional
Restrições do Modelo Relacional
• Um esquema de banco de dados é um conjunto de esquemasde relação e um conjunto de restrições de integridade;
• Se todas as instâncias de relações presentes no BD obedecem a todas as restrições anteriores, dizemos que o BD está em um estado válido.