Banco de Dados - Wendel Melo - facom.ufu.brwendelmelo/bd201802/3_modelo_relacional.pdf · • Para...

Post on 26-Jan-2019

220 views 0 download

Transcript of Banco de Dados - Wendel Melo - facom.ufu.brwendelmelo/bd201802/3_modelo_relacional.pdf · • Para...

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;