39
Modelo Relacional Modelo Relacional Wendel Melo Faculdade de Computação Universidade Federal de Uberlândia www.facom.ufu.br/~wendelmelo Banco de Dados I

Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

Modelo Relacional

Modelo Relacional

Wendel Melo

Faculdade de Computação

Universidade Federal de Uberlândia

www.facom.ufu.br/~wendelmelo

Banco de Dados I

Page 2: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

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.

Page 3: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

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;

Page 4: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

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.

Page 5: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

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.

Page 6: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

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

Page 7: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

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;

Page 8: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

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

Page 9: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

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

Page 10: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

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

Page 11: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

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

Page 12: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

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

Page 13: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

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

Page 14: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

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ê.

Page 15: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

15Modelo Relacional

Exemplo - Modelo Relacional

Diagrama construído usando a ferramenta MySQL Work-bench.

Page 16: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

16Modelo Relacional

Exemplo - Modelo Relacional

Considerações so-bre a notação do MySQL Workbench

Page 17: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

17Modelo Relacional

Exemplo - Modelo Relacional

A chave indica que o atributo compõe a chave primária da relação.

Page 18: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

18Modelo Relacional

Exemplo - Modelo Relacional

Losango cheio indica que o atributo é de preenchimento obrigatório.

Page 19: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

19Modelo Relacional

Exemplo - Modelo Relacional

Losango vazado indica que o atributo é de preenchimento não obrigatório.

Page 20: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

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.

Page 21: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

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

Page 22: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

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

Page 23: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

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

Page 24: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

24Modelo Relacional

Exemplo - Modelo Relacional

Considerações so-bre a modelagem

Page 25: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

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.

Page 26: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

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)

Page 27: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

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.

Page 28: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

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.

Page 29: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

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.

Page 30: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

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.

Page 31: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

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.

Page 32: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

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ê.

Page 33: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

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.

Page 34: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

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)

Page 35: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

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

Page 36: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

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

Page 37: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

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;

Page 38: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

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;

Page 39: Banco de Dados - Wendel Melo - FACOMwendelmelo/bd201902/3_modelo_relacional.pdf · BD (a tabela (listagem) de alunos de BD). • Assim, o modelo relacional é baseado em tabelas bidi-mensionais

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;