Exercício resolvido normalização

4
Universidade Federal do Ceará Bacharelado em Sistemas e Mídias Digitais Bancos de Dados Multimídia Ticianne Darin Introdução a Bancos de Dados: Normalização Exercício Resolvido 1. Considere o esquema de relação MATRICULA ( D, P, S, H, E, N), onde: D = disciplina; P = professor; S= sala; H = horário (dia e hora); E= Estudante e N = Nota a) Indique todas as FDs que você identifica na relação MATRICULA. Explique o significado de cada FD. b) Encontre as chaves da relação MATRICULA. c) Em qual forma normal se encontra a relação MATRICULA? d) Como você normalizaria a relação MATRICULA? Justifique sua resposta. RESPOSTAS a) Indique todas as FDs que você identifica na relação MATRICULA. D -> P (Uma Disciplina só pode ser lecionada por um único professor) E, D -> N (um estudante só pode ter uma nota em uma determinada disciplina) S, H -> D (uma sala só pode ser alocada para uma disciplina em uma determinada hora) E, H -> S (um estudante só pode estar em uma única sala em uma determinada hora) E, H -> D (um estudante só pode estar matriculado em uma única disciplina em uma determinada hora) S, H -> P (uma dada sala só pode ser alocada para um único professor em um dado horário) E, H -> P (O estudante só pode ter aula com um professor em um determinado horário) P, H -> D (O professor só pode ministrar uma disciplina em um determinado horário) P, H -> S (O professor só pode lecionar em uma sala em um dado horário) b) Encontre as chaves da relação MATRICULA. Para encontrar as chaves da relação devemos observar qual o conjunto mínimo de atributos determinam todos os outros atributos. A primeira dica é observar nas FDs quais atributos não são encontrados por

Transcript of Exercício resolvido normalização

Page 1: Exercício resolvido normalização

Universidade Federal do Ceará Bacharelado em Sistemas e Mídias Digitais

Bancos de Dados Multimídia Ticianne Darin

Introdução a Bancos de Dados: Normalização

Exercício Resolvido 1. Considere o esquema de relação MATRICULA ( D, P, S, H, E, N), onde:

D = disciplina; P = professor; S= sala; H = horário (dia e hora); E= Estudante e N = Nota

a) Indique todas as FDs que você identifica na relação MATRICULA.

Explique o significado de cada FD. b) Encontre as chaves da relação MATRICULA. c) Em qual forma normal se encontra a relação MATRICULA? d) Como você normalizaria a relação MATRICULA? Justifique sua

resposta.

RESPOSTAS a) Indique todas as FDs que você identifica na relação MATRICULA.

D -> P (Uma Disciplina só pode ser lecionada por um único

professor) E, D -> N (um estudante só pode ter uma nota em uma determinada

disciplina) S, H -> D (uma sala só pode ser alocada para uma disciplina em uma

determinada hora) E, H -> S (um estudante só pode estar em uma única sala em uma

determinada hora) E, H -> D (um estudante só pode estar matriculado em uma única

disciplina em uma determinada hora) S, H -> P (uma dada sala só pode ser alocada para um único

professor em um dado horário) E, H -> P (O estudante só pode ter aula com um professor em um

determinado horário) P, H -> D (O professor só pode ministrar uma disciplina em um

determinado horário) P, H -> S (O professor só pode lecionar em uma sala em um dado

horário)

b) Encontre as chaves da relação MATRICULA.

Para encontrar as chaves da relação devemos observar qual o conjunto mínimo de atributos determinam todos os outros atributos. A primeira dica é observar nas FDs quais atributos não são encontrados por

Page 2: Exercício resolvido normalização

nenhum outro (os atributos que não estão na “parte direita” de nenhuma FD). Após isso, vamos verificar quais os atributos são candidatos a fazerem parte da chave. No nosso exemplo, vamos iniciar incluindo os atributos não encontrados em nenhuma FD: - HE Vamos agora, encontrar o fecho de (HE) e verificar se achamos todos os atributos (utilizando a cobertura mínima do item anterior): (HE)+ = {H,E, S, D, P, N} De fato, apenas com esses atributos eu consigo encontrar todos os outros. Logo, (HE) é chave da relação MATRÍCULA. Nota: Uma relação pode conter uma ou mais chaves.

c) Em qual forma normal se encontra a relação MATRICULA?

Podemos dizer que a forma normal de uma relação corresponde ao nível mais alto de normalização em que ela se encontra. Portanto, começamos perguntando: Está em BCNF? Não! Para ser BCNF deve-se satisfazer:

- A FD é trivial ou - A1 ... An é uma superchave.

Note que apenas a FD4 não viola BCNF, as demais violam BCNF. Então não está em BCNF! Então passamos para a próxima forma normal: Está em 3NF? Não! Uma relação R está em 3NF se para cada FD A1...An → B1...Bm que é válida em R, uma das condições é satisfeita:

1) A1 ... An → B1 ... Bm é trivial (Bi’s Ai’s), 2) A1 ... An inclui uma chave de R, ou 3) Cada Bi ocorre na chave de R.

Análogo ao caso de BCNF apenas a FD4 corresponde a condição 2 enquanto que as outras FDs não se enquadram em nenhuma das condições acima. Logo, não está em 3NF! Está em 2NF? Nenhuma das dependências possui é parcial e todos os atributos são atômicos. Logo, MATRICULA está na Segunda Forma Normal.

d) Como você normalizaria a relação MATRICULA? Justifique sua resposta.

Aplicamos o algoritmos de decomposição em 3NF. PASSO 1: Calcula a cobertura mínima:

A: Reescreve todas as FDs com apenas um elemento do lado direito

B: Remove FDs redundantes (através do cálculo do fecho dos atributos do lado esquerdo, para ver se – sem utilizar a DF em questão, é possível chegar até o atributo do lado direito):

E, H -> D S, H -> P E, H -> P P, H -> D

C: Remove os atributos redundantes Não há. D: Reagrupa os atributos do lado direito. Logo, a cobertura mínima é:

Page 3: Exercício resolvido normalização

FD1: D -> P FD2: E, D -> N FD3: S, H -> D FD4: E, H -> S FD5: P, H -> S

PASSO 2: Para cada X do lado esquerdo de uma FD em G, crie um esquema de relação {XA1... An} em D, onde: X -> A1, ..., X -> An são todas as FDs em G com

X do lado esquerdo. R1 (D,P)

R2 (E,D,N) R3 (S,H,D) R4 (E,H,S) R5 (P,H,S)

PASSO 3: Coloque todos os atributos restantes em uma única relação. Todos os atributos foram contemplados. PASSO 4: Se uma chave de R não está contida em nenhum dos esquemas de relação, crie uma relação que contenha os atributos da chave. A chave encontrada (EH) já está contida na relação R4. Após obter a decomposição 3NF para MATRICULA, devemos testar se ela está em BCNF ou se pode obter uma decomposição BCNF, por ser uma forma mais forte. Caso contrário (isto é, caso se percam dependências funcionais) a relação deve permanecer em 3NF. Para verificar se as DFs resultantes violam BCNF, devemos testar para cada uma se o determinante (lado esquerdo da DF) é uma superchave da relação (isto é, a partir do fecho dele é possível encontrar todos os atributos da relação MATRICULA). Percebemos, neste caso, que todas as DFs, exceto EH->S, violam a BCNF. Para decompor em BCNF basta escolher uma das DFs que viola a BCNF na relação Matrícula, para decompor Matrícula em duas relações: R1 (contendo todos os atributos da dependência funcional escolhida) e R2 (contendo todos os atributos de Matrícula, exceto o atributo que está sendo determinado na DF escolhida). Repetir isto para a relação R2 gerada, até que não haja mais violação da BCNF no resultado. Escolheremos a DF SH->D. Neste caso, a decomposição de matrícula seria: R1(S,H,D): ok R2(S,H,P,E,N) Decompõe R2 por P,H->S: R21(P,H,S): ok R22(H,P,E,N)

Page 4: Exercício resolvido normalização

Não é mais possível decompor utilizando as DFs escolhidas, por isso haveria aqui perda de DFs, embora fosse possível fazer uma decomposição sem perda na junção. Iniciando por outra DF, como exemplo: Escolheremos a DF D->P. Neste caso, a decomposição de matrícula seria: R1(DP): ok R2(D,S,H,E,N) Decompõe R2 por S,H>D: R21(S,H,D): ok R22(S,H,E,N): não é possível decompor por mais nenhuma DF que viole BCNF Realizado este teste para as demais DFs, percebe-se que ao decompor em BCNF há perda de dependências funcionais para esta relação. Por isso, deve permanecer em 3NF.