Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
Modelo Relacional
Modelo Relacional
Wendel Melo
Faculdade de Computação
Universidade Federal de Uberlândia
www.facom.ufu.br/~wendelmelo
Banco de Dados I
2Modelo 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.
3Modelo 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;
4Modelo 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.
5Modelo 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.
6Modelo 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
Fernanda P 33333333333 07/01/1993 1.68
7Modelo 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;
8Modelo 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.
Pessoachar[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
Fernanda P 33333333333 07/01/1993 1.68
9Modelo 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
atributos
10Modelo 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
atributos
11Modelo 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
Fernanda P 33333333333 07/01/1993 1.68
12Modelo 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
Fernanda P 33333333333 07/01/1993 1.68
13Modelo 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
Fernanda P 33333333333 07/01/1993 1.68
14Modelo Relacional
Exemplo - Modelo RelacionalConstrua 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ê.
15Modelo Relacional
Exemplo - Modelo Relacional
Diagrama construído usando a ferramenta MySQL Work-bench.
16Modelo Relacional
Exemplo - Modelo Relacional
Considerações so-bre a notação do MySQL Workbench
17Modelo Relacional
Exemplo - Modelo Relacional
A chave indica que o atributo compõe a chave primária da relação.
18Modelo Relacional
Exemplo - Modelo Relacional
Losango cheio indica que o atributo é de preenchimento obrigatório.
19Modelo Relacional
Exemplo - Modelo Relacional
Losango vazado indica que o atributo é de preenchimento não obrigatório.
20Modelo Relacional
Exemplo - Modelo Relacional
Losango ou chave vermelha indica 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.
21Modelo Relacional
Exemplo - Modelo Relacional
Relacionamento 1:n identifica-dor (chave estrangeira participa da chave primária, preenchi-mento obrigatório). Dois traços verticais: 1Um vertical e dois diagonais: n
22Modelo Relacional
Exemplo - Modelo RelacionalRelacionamento 1:n não identi-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 1Um vertical e dois diagonais: n
23Modelo Relacional
Exemplo - Modelo Relacional
Relacionamento 1:n não iden-tificador (chave estrangeira não participa da chave primá-ria) com preenchimento obri-gatório. Dois traços verticais: 1Um vertical e dois diagonais: n
24Modelo Relacional
Exemplo - Modelo Relacional
Considerações so-bre a modelagem
25Modelo Relacional
Exemplo - Modelo Relacional
O modelo prevê dois genito-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.
26Modelo Relacional
Exemplo - Modelo Relacional
Cada genitor pode ter vários bebê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)
27Modelo Relacional
Exemplo - Modelo RelacionalObserve que a chave primária de 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.
28Modelo Relacional
Exemplo - Modelo Relacional
Cada profissional de saúde deve ter um cargo. Em cada cargo, podemos ter vários profissionais. Por essa razão, esse relacionamento é 1:n.
29Modelo Relacional
Exemplo - Modelo Relacional
Note que a chave estrangeira em Profissional_saude não faz parte da chave primária. Por essa razão, o uso da linha pontilhada.
30Modelo Relacional
Exemplo - Modelo Relacional
Note que cargo não possui uma chave candidata própria. Por essa razão, criamos uma chave primária artificial cha-mada idCargo.
31Modelo 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.
32Modelo Relacional
Exemplo - Modelo RelacionalComo o modelo relacional não suporta relacionamentos n:n diretamente, foi necessário cri-ar uma relação auxiliar 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ê.
33Modelo Relacional
Exemplo - Modelo Relacional
Assim, ambos Bebe e Profis-sional_saude terão relaciona-mento 1:n com a relação auxi-liar Profissional_saude_has_Bebe.
34Modelo 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)
Cargo(idCargo, nome_cargo, descricao)
35Modelo Relacional
nome Genitor_mae_RG
Genitor_pai_RG
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
36Modelo Relacional
nome Genitor_mae_RG
Genitor_pai_RG
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
37Modelo Relacional
Restrições do Modelo Relacional
• Restrição de integridade das instâncias de relações: exige que nenhum 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;
38Modelo Relacional
Restrições do Modelo Relacional
• Restrição de domínio: especifica que cada valor deve estar no domí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;
39Modelo Relacional
Restrições do Modelo Relacional
• Um esquema de banco de dados é um conjunto de esquemas de 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.
• Caso contrário, dizemos que o BD está em um estado inválido;