banco de dados - wendel melo - facom.ufu.brwendelmelo/bd201802/3_modelo_relacional.pdf · • para...
TRANSCRIPT
Modelo Relacional
Modelo Relacional
Wendel MeloFaculdade de Computação
Universidade Federal de Uberlândiawww.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• 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
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;
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
• 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
12Modelo 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
13Modelo 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
14Modelo 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
15Modelo 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é-cadastradas em uma relação de cargos;
4) É preciso cadastrar quais os profissionais envolvidos no nas-cimento de cada bebê.
16Modelo Relacional
Exemplo - Modelo Relacional
Diagrama construído usando a ferramenta MySQL Work-bench.
17Modelo Relacional
Exemplo - Modelo Relacional
Considerações so-bre a notação do MySQL Workbench
18Modelo Relacional
Exemplo - Modelo Relacional
A chave indica que o atributo compõe a chave primária da relação.
19Modelo Relacional
Exemplo - Modelo Relacional
Losango cheio indica que o atributo é de preenchimento obrigatório.
20Modelo Relacional
Exemplo - Modelo Relacional
Losango vazado indica que o atributo é de preenchimento não obrigatório.
21Modelo 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.
22Modelo 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
23Modelo 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
24Modelo 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
25Modelo Relacional
Exemplo - Modelo Relacional
Considerações so-bre a modelagem
26Modelo 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.
27Modelo 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)
28Modelo 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.
29Modelo 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.
30Modelo 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.
31Modelo 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.
32Modelo 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.
33Modelo 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ê.
34Modelo 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.
35Modelo 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)
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
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
38Modelo Relacional
Construa um modelo de dados relacional que atenda aos seguintes requisitos de uma loja de eletrodomésticos:
1) É necessário manter um cadastro dos funcionários armazenando nome, CPF, data de nascimento, endereço, telefone, cargo e conta bancária. Cada funcionário está sujeito a supervisão de um único outro funcionário, em um cargo superior.
2) Os produtos vendidos na loja possuem um código único, um título, um fabricante, um modelo e um texto com especificações;
3) A loja repõe o estoque de produtos através de lotes de compra. Em cada lote de compra, é comprada uma determinada quantidade de um único produto. É neces-sário armazenar o produto comprado em cada lote com sua respectiva quantidade e preço unitário de compra, a data da compra e quantidade do produto obtido no respectivo lote ainda disponível no estoque;
4) A loja também deve manter um cadastro de seus clientes com nome, CPF, data de nascimento, endereço e telefone;
5) A cada venda, é preciso gerar e armazenar o número da nota fiscal, a data/hora da venda, a forma de pagamento, o endereço de entrega, o cliente responsável e o funcionário que realizou a venda. Para cada venda, também é preciso saber os produtos vendidos, com seus respectivos lotes de compra, quantidades vendidas e preços unitários de venda. Observe que diversos produtos podem ser vendidos em uma mesma venda sob a mesma nota fiscal;
39Modelo Relacional
Construa um modelo de dados relacional que atenda aos seguintes requisitos de uma loja de eletrodomésticos:
40Modelo Relacional
Construa um modelo de dados relacional que atenda aos seguintes requisitos de uma loja de eletrodomésticos:
Temos um relacionamento da relação Funcionario com ela mesma para espe-cificar o supervisor. É preciso ter o cuidado de marcar a chave estrangeira desse tipo de relacionamento como podendo estar vazia (NULL), pois, do con-trário, a respectiva tabela nunca poderá ser preenchida, pois isto exigiria que, para cada funcionário, já houvesse um supervisor cadastrado!
41Modelo Relacional
Construa um modelo de dados relacional que atenda aos seguintes requisitos de uma loja de eletrodomésticos:
Temos um relacionamento n:n que gerou a relação Venda_has_Lote_compra para cruzar cada venda com os respectivos produtos vendidos em seus lotes de compra.
42Modelo Relacional
nota_fiscal
dthr_venda forma_pgto
endereco_entrega cpf_cliente
cpf_funcionario
00001 11/04/2018 PARC Rua dos Bobos 0 22222 11111
00002 12/08/2018 DIN Rua das Flores 56 33333 11111
00003 12/08/2018 FIADO Rua Gatuno 171 00000 44444
00004 13/08/2018 DEB Av Vieiras 14 555555 11111
codigo_produto dt_compra qtd_compra preco qtd_estoque
5501 01/03/2018 1000 25.00 0
5502 19/04/2018 200 450.00 154
5503 23/04/2018 10000 7.89 651
5501 07/08/2018 500 30.00 432
nota_fiscal codigo_produto dt_compra qtd_vendida preco_unitario
00001 5501 01/03/2018 5 69.99
00001 5503 23/04/2018 2 44.99
00002 5501 07/08/2018 3 84.99
00003 5502 19/04/2018 10 899.99
00003 5503 23/04/2018 5 44.99
Relacionamento n:n na prática
Venda
Lote_compra
Venda_has_Lote_compra
43Modelo Relacional
nota_fiscal
dthr_venda forma_pgto
endereco_entrega cpf_cliente
cpf_funcionario
00001 11/04/2018 PARC Rua dos Bobos 0 22222 11111
00002 12/08/2018 DIN Rua das Flores 56 33333 11111
00003 12/08/2018 FIADO Rua Gatuno 171 00000 44444
00004 13/08/2018 DEB Av Vieiras 14 555555 11111
codigo_produto dt_compra qtd_compra preco qtd_estoque
5501 01/03/2018 1000 25.00 0
5502 19/04/2018 200 450.00 154
5503 23/04/2018 10000 7.89 651
5501 07/08/2018 500 30.00 432
nota_fiscal codigo_produto dt_compra qtd_vendida preco_unitario
00001 5501 01/03/2018 5 69.99
00001 5503 23/04/2018 2 44.99
00002 5501 07/08/2018 3 84.99
00003 5502 19/04/2018 10 899.99
00003 5503 23/04/2018 5 44.99
Relacionamento n:n na prática
Venda
Lote_compra
Venda_has_Lote_compra
44Modelo 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;
45Modelo 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;
46Modelo 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;