allynson praxedes soares [email protected] java avançado projetando uma base de dados

36
Allynson Praxedes Soares [email protected] Java Avançado Projetando uma base de dados

Upload: internet

Post on 21-Apr-2015

113 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares

[email protected]

Java Avançado

Projetando uma base de dados

Page 2: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Modelo Relacional

• Chave candidata– Um conjunto de atributos pode identificar uma única

ocorrência em uma tabela, mas, um atributo deve ser identificado como chave primária.

• Chave Estrangeira– Um atributo que corresponde a uma chave primária

em uma relação.

Page 3: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Modelo Relacional

• Restrições de integridade– Integridade de Domínio: diz respeito ao controle

sintático e semântico de um dado e faz referência ao tipo de definição do domínio.

– Integridade de Entidade: diz respeito aos valores de chave primária que devem ser únicos e não nulos.

– Integridade Referencial: diz respeito aos valores de um atributo chave estrangeira e os valores do atributo chave primária correspondente.

Page 4: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Álgebra Relacional

• Operadores clássicos sobre conjuntos

– União, interseção e diferença

• Operadores relacionais

– Seleção, projeção, junção e divisão

Page 5: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Álgebra relacional

• Seleção e projeção

Page 6: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Álgebra Relacional

Junção

Page 7: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Álgebra Relacional

• Divisão

Page 8: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Normalização

• As formas normais que serão trabalhadas:

• 1 NF• 2 NF• 3 NF• 4 NF

Page 9: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Normalização

Esta tabela está mal projetada!

• 1) Se Pelé mudar de endereço ? (anomalia de atualização)

• 2)Um novo esporte para Pelé ? (anomalia de inclusão)

• 3) Retirar Pelé do Banco de Dados (anomalia de remoção)

HABILIDADES-ESPORTIVASIdentidade Nome Endereço Habilidade8795835 Édson Arantes Ponta da Praia Futebol8795835 Édson Arantes Ponta da Praia Voleibol8795835 Édson Arantes Ponta da Praia Basquete8795835 Édson Arantes Ponta da Praia Atletismo8795835 Édson Arantes Ponta da Praia Tênis

Page 10: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Normalização

• Idealmente:

Mas o atributo habilidade não é atômico, o que é possível fazer dentro do modelo relacional?

Idealmente:

HABILIDADES-ESPORTIVASIdentidade Nome Endereço Habilidade

8795835 Édson Arantes Ponta daPraia

{Futebol,

Voleibol,Basquete,Atletismo,Tênis}

Mas isto não é uma tabela (atributo habilidadenão é atômico)! O que é possível fazer, dentrodo modelo relacional?

Page 11: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Normalização

• Primeira forma normal:• Uma relação está na primeira forma normal, quando todos os

seus atributos são atômicos.ESPORTISTASIdentidade Nome Endereço

8795835 Édson Arantes Ponta da Praia... ... ...

HABILIDADESIdentidade Esporte

8795835 Futebol8795835 Voleibol8795835 Basquetebol8795835 Atletismo8795835 Tênis

A repetição da coluna Identidade é uma redundâncianecessária

Atleta

Habilidade

Page 12: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Normalização

• Dependência funcional– Um atributo é funcionalmente dependente de outro se um

valor do primeiro corresponde a um único valor do segundo.

Ncli CPF end tel Pcod Nprod Vunit qtd tot

Zé 111 ABC 123 A Lápis 0,50 2 1,00

Ana 222 XYZ 456 B Caneta 1,00 3 3,00

João 333 XPT 789 C Régua 1,00 2 2,00

Pedro 444 KZZ Null A Lápis 0,50 20 10,00

CPF Ncli, End, Tel Pcod Nprod, Vunit CPF, Pcod Qtd, Tot

Page 13: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Normalização

• Super ChaveUma super-chave de uma relação R é qualquer subconjunto dos atributos de R cujos valores não se repetem em R.

Ncli CPF Id Tel

Zé 111 100 123

Ana 222 300 456

Maria 777 400 123

Pedro 444 200 Null

Exemplo: São exemplos de super-chave:

(CPF, Id),(CPF, Tel),(CPF, Ncli),

(Id,Ncli),(Id, Id, Tel)

(CPF),(Id)

Page 14: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Normalização

• Chave candidata

Uma chave candidata de uma relação R é uma super-chave que possua a menor quantidade possível de atributos.

Ncli CPF Id Tel

Zé 111 100 123

Ana 222 300 456

Maria 777 400 123

Pedro 444 200 Null

Exemplo:

São exemplos de Chaves-Candidatas:

(CPF),(Id)

Uma das Chaves-Candidatas deve ser

“eleita” como PK

Page 15: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Normalização

• Segunda forma normal– Uma relação está na Segunda Forma Normal (2NF)

se ela está na 1NF e todo atributo não chave é plenamente dependente da chave primária.

Ncli CPF end tel Pcod Nprod Vunit qtd tot

Zé 111 ABC 123 A Lápis 0,50 2 1,00

Ana 222 XYZ 456 B Caneta 1,00 3 3,00

Zé 111 ABC 123 C Régua 1,00 5 5,00

Pedro 444 KZZ Null A Lápis 0,50 20 10,00

CPF Ncli, End, Tel

Pcod Nprod, Vunit

CPF, Pcod Ncli, End, Tel, Nprod, Vunit

Page 16: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Normalização

• Dependência funcional Total– A, B, C => D (D é totalmente funcionalmente

dependente de {A, B, C}) se para todo valor de {A, B, C} só existe um valor de D, e se D não é funcionalmente dependente de A, ou B, ou C.

Ncli CPF end tel Pcod Nprod Vunit qtd tot

Zé 111 ABC 123 A Lápis 0,50 2 1,00

Ana 222 XYZ 456 B Caneta 1,00 3 3,00

João 333 XPT 789 C Régua 1,00 2 2,00

Pedro 444 KZZ Null A Lápis 0,50 20 10,00

CPF, Pcod Qtd, Tot CPF não determina Qtd, Tot Pcod não determina Qtd, Tot

Page 17: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Normalização

• Dependência funcional Transitiva

– Ocorre quando Y depende de X e Z depende de Y.– Logo, Z também depende de X.

Page 18: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Normalização

• Dependência funcional TransitivaMat Nome End CodCargo CNome Salario

A relação Funcionário está na 2FN pois possui somente atributos atômicos e não apresenta dependência parcial da PK.

CodCargo CNome, Salario

Mat CodCargo Há dependência transitiva da PK !!!

Page 19: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Normalização

• Terceira forma normal• Uma relação está na Terceira Forma Normal

(3NF) se ela está na 2NF e nenhum atributo não-chave é transitivamente dependente da chave primária.

Page 20: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Normalização

A relação Funcionario não está na 3FN pois possui dependência transitiva com relação à PK.

Pergunta-se: como normalizá-la para a 3FN ?

Separando a relação em duas ou mais de forma a eliminar a dependência transitiva:

Funcionario(Mat, Nome, End, CodCargo)

Cargo(Cod, CNome, Salario)

Exemplo: Relação FUNCIONARIO

Mat Nome End CodCargo CNome Salario

Page 21: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Normalização

• Forma normal de Boyce-Codd• Uma relação está na Forma Normal de

Boyce/Codd (BCNF) se está na 3FN e todo determinante é uma chave candidata.

Aluno Disciplina Tutor

Tutor Disciplina

Aluno, Disciplina Tutor

Há dependência transitiva da PK !!!

Tutoria(Tutor, Disciplina)

Cursa(Tutor, Aluno)

Page 22: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Normalização

• Dependência Multivalorada– Dada uma relação R com atributos A, B, C,

existe uma dependência multivalorada do atributo A no atributo B (A à B) se um valor de A é associado a uma coleção específica de valores de B, independente de quaisquer valores de C.

Page 23: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Normalização

• Dependência MultivaloradaTem-se as dependências multivaloradas

Nome | Matéria

e

Nome | Orientando.

Page 24: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Normalização

• Dependência Multivalorada

– > A DMV só existe se R tem no mínimo 3 atributos

– > Dada R(A, B, C), a DMV existe se também existir. Daí a notação:

Page 25: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Normalização

• Quarta forma normal– Uma relação está na Quarta Forma Normal

(4NF) se ela está na 3NF (BCNF) e não existem dependências multivaloradas.

– Como corrigir?• Separar a relação em relações, cada uma

contendo o atributo (A) que multidetermina os outros (B, C), ou seja, R1 (A, B) e R2 (A, C).

Page 26: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Normalização

• Quarta forma normal

Page 27: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Modelo Relacional

• Exercício

Page 28: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Modelo Relacional

• Passo 1:Para cada entidade regular E no esquema ER,

criar uma relação R que inclui todos os

atributos de R.

• Exemplo:

Page 29: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Modelo Relacional

• Passo 2:Para cada entidade fraca W no esquema E-R que tenha como entidade proprietária E, criar uma relação R e incluir todos os atributos de W como atributos de R, incluir o(s) atributo(s) chave primária da relação proprietária E.

• A chave primária de R é a combinação da chave primária de E e da chave parcial de W.

Page 30: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Modelo Relacional

• Passo 3:• Para cada relacionamento R de 1:1 no esquema ER,

– identificar as relações das entidades participando do relacionamento R,

– escolher uma das relações e incluir como chave estrangeira, a chave primária da outra relação,

– incluir todos os atributos do relacionamento na relação escolhida.

Page 31: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Modelo Relacional

Note que um mapeamento alternativo de umrelacionamento 1:1 é possível juntando as duasentidades em uma única relação. Isto é apropriadoquando as entidades não participam de outrosrelacionamentos.

Page 32: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Modelo Relacional

• Passo 4:– Para cada relacionamento regular (não fraco) 1:N,– identificar a relação S que representa a entidade do

lado N,– incluir como chave estrangeira a chave primária da

relação que representa a entidade do lado 1,– incluir os atributos do relacionamento em S.

Page 33: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Modelo Relacional

• Passo 5:– Para cada relacionamento R de M:N,– criar uma nova relação para representar R,– incluir como chave estrangeira as chaves primárias

das relações que participam em R, estas chaves combinadas formarão a chave primária da relação,

– incluir também eventuais atributos de R.

Page 34: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Normalização

• Passo 6:• Para cada atributo multivalorado A, criar uma nova

relação R, incluindo um atributo correspondendo a A mais a chave primária K da relação que tem A como atributo.

• A chave primária de R é a combinação de A e K.

Page 35: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Modelo Relacional

Page 36: Allynson Praxedes Soares aps2@cin.ufpe.br Java Avançado Projetando uma base de dados

Allynson Praxedes Soares – [email protected]

Ferramentas Case

• DB Design

– Desenvolver o modelo acima nesta ferramenta case e criar o script SQL