79 Kb
Transcrição
79 Kb
Refinamento de Esquemas e Normalização Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 6-1 Os Maus da Redundância ❖ Redundância é a raiz de diversos problemas associados com esquemas relacionais: – armazenamento , anomalias de inserção, atualização e remoção ❖ ❖ ❖ Restrições de integridade, em particular dependências funcionais, podem ser usadas para identificar esquemas com tal problemas e sugerir refinamentos. Principal técnica de refinamento: decomposição (substituindo ABCD por AB e BCD, ou ACD e ABD). Decomposição deve ser usada com cuidado: – Há razão para decompor uma relação? – Que problemas (se algum) a decomposição causa? Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 6-2 Dependências Funcionais (DFs) ❖ ❖ ❖ Uma dependência funcional X → Y se aplica a R se, para todas instâncias r de R: – t1 ∈ r, t2 ∈ r, π X (t1) = π X (t2) implica π Y (t1) = π Y (t2) – i.e., dadas 2 tuplas em r, se o valor de X concorda, então o valor Y também concordam . (X e Y são conjs. de atributos.) Uma DF é um fato sobre todas relações possíveis. – Tem que ser identificada c/ base na semântica da aplicação. – Dados alguns exemplos possíveis r1 de R, podemos verificar se estes violam algunas DF f, mas não podemos falar se f é verdade sobre R! K é uma chave candidata para R quer dizer que K→ R – No entanto, K →R não requer que K seja mínima ! Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 6-3 Exemplo: Restrições Num Conjunto de Entidades ❖ Considere relação obtida de Hourly_Emps: – Hourly_Emps (ssn, name, lot, rating, hrly_wages, hrs_worked) ❖ Notação: Indicaremos este esquema de relação listando os atributos: SNLRWH – Este é realmente o conjunto de atributos {S,N,L,R,W,H}. – Algumas vezes nos referiremos a todos atributos de uma relação usando o nome da relação. (p.ex., Hourly_Emps para SNLRWH) ❖ Algunas DFs em Hourly_Emps: – ssn é a chave: S → SNLRWH – rating determina hrly_wages: R → W Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 6-4 Exemplo (Cont.) ❖ Problemas devidos a R→ W : S N L – Anomalia de atualização : Podemos 123-22-3666 Attishoo 48 trocar W somente na 1a tupla de 231-31-5368 Smiley 22 SNLRWH? 131-24-3650 Smethurst 35 – Anomalia de inserção : E se nós 35 queremos inserir um empregado e 434-26-3751 Guldu não sabemos o salário por hora 612-67-4134 Madayan 35 para sua avaliação? S N – Anomalia de remoção : Se deletarmos todos empregados com avaliação 5, 123-22-3666 Attishoo perdemos a informação sobre 231-31-5368 Smiley salário para avaliação 5! Wages R W H 8 10 40 8 10 30 5 7 30 5 7 32 8 10 40 L R H 48 8 40 22 8 30 R W 131-24-3650 Smethurst 35 5 30 8 10 434-26-3751 Guldu 5 7 Hourly_Emps2 612-67-4134 Madayan Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 35 5 32 35 8 40 6-5 Refinando Um Diagrama ER ❖ 1o diagrama traduzido: Workers(S,N,L,D,S) Departments(D,M,B) Before: since name – Lots associados a trabalhadores. ssn ❖ ❖ ❖ Supomos todos trabalhadores no departamento são nomeados Employees mesmo lote: D→ L Redundância; corrigida por: Workers2(S,N,D,S) After: Dept_Lots(D,L) Podemos refinar com: name Workers2(S,N,D,S) ssn Departments(D,M,B,L) Employees Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) dname lot did Works_In budget Departments budget since dname did Works_In lot Departments 6-6 Analisando DFs ❖ ❖ ❖ ❖ ❖ Dadas alguns DFs, podemos geralmente inferir DFs adicionais: – ssn → did, did → lot implica ssn → lot Uma DF f é implícita por um conjunto de DFs F se f é verdade quando todas DFs em F são verdade. F + = closure de F é o conjunto de todas DFs que são implicadas por F. Axiomas de Armstrong’s (X, Y, Z são conjuntos de atributos): – Reflexividade : If X ⊆ Y, then X→ Y – Aumentação : If X→ Y, then XZ → YZ for any Z – Transitividade : If X → Y and Y → Z, then X → Z Estas regras de inferência de DFs são robustas e completas. Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 6-7 Analisando DFs (Cont.) ❖ Duplas de regras adicionais (que seguem de AA): ❖ Exemplo: Contracts(cid,sid,jid,did,pid,qty,value), e : ❖ ❖ ❖ – União: If X→ Y and X→ Z, then X→ YZ – Decomposição: If X→ YZ, then X → Y and X → Z – C é a chave : C → CSJDPQV – Projete compras cada parte usando contrato simples: JP → C – Compras departamento no máximo uma parte de um fornecedor: SD→ P JP → C, C → CSJDPQV implica JP → CSJDPQV SD → P implica SDJ→ JP SDJ→ JP, JP → CSJDPQV implica SDJ→ CSJDPQV Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 6-8 Analisando DFs (Contd.) ❖ ❖ Calcular o “closure”” de um conjunto de DFs pode ser caro. (Tamanho de “closure” é exponencial no número de atributos) Tipicamente, só queremos verificar se uma dada DF X→ Y está no “closure de um conjunto de DFs F . Uma verificação eficiente: + X – Compute “closure” de atributos de X (denotada ) wrt F: ◆ ◆ Conjunto de todos atributos A tais que X→ A está em Há um algorítimo de tempo linear para computar isto. F+ + X – Verificar se Y está em ❖ F = {A → B, B → C, C D → E } implica A → E? + F → – i.e, is A E in the closure ? Equivalently, is E in A+ ? Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 6-9 Formas Normais ❖ ❖ ❖ Retornando ao ponto do refinamento de esquema, a 1a questão a ser feita é: algum refinamento é preciso ? Se uma relação está em uma certa forma normal (BCNF, 3NF etc.), é sabido que certos tipos de problemas são evitados/minimizados. Isto pode ser usado para decidir se decompondo a relação irá ajudar. Papel de DFs em detectar redundância: – Considere uma relação R com 3 atributos, ABC. ◆ ◆ Sem DFs: Não há redundância aqui. Dado A → B: Diversas tuplas poderiam ter o mesmo valor A, e se é assim, todas terão o mesmo valor B Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 6-10 Forma Normal de Boyce-Codd (BCNF) ❖ R com DFs F is in BCNF se, p/ todo X → A in F + – A ∈ X (Chamado uma DF trivial), ou – X contem uma chave de R. ❖ I.e., R está em BCNF somente se as únicas DFs não triviais que valem sobre R são restrições de chaves. – Nenhuma depêndencia em R que pode ser predita usando apenas DFs. – Se mostrarmos duas tuplas que concordam X Y A de um valor X, não podemos inferir o valor x y1 a A em uma tupla do valor A de outra – Se a relação exemplo está em BCNF, as 2 x y2 ? tuplas tem que ser idênticas (X é chave). Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 6-11 Terceira Forma Normal (3FN) ❖ ❖ ❖ ❖ R c/ DFs F está em 3NF se, p/todo X → A in F + – A ∈ X (Chamado um FD trivial),ou – X contem uma chave para R, ou – A é parte de algumas chaves para R. Minimalidade de uma chave é crucial na terceira condição acima! Se R está em BCNF, óbviamente está em 3FN. Se R está em 3FN, alguma redundância é possível. É um compromisso, usado quando BCNF não alcançavel (p.ex., decomposição não é “boa”,ou considerações de performances). – Decomposição de R preservando dependência e lossless join em uma coleção de relações de 3NF é sempre possível. Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 6-12 O Que 3FN Conclui? ❖ Se 3FN é violada por X→ A, então: – X é um sub conjunto de alguma chave K ◆ Há pares (X,A) armazenados redundantemente. – X não é um subconjunto próprio de nenhuma chave. ◆ ❖ Há uma cadeia de DFs K → X → A, que quer dizer que não podemos associar um valor de X com um valor de K a menos que nós também associemos um valor A com um valor X. Mas: mesmo se R está em 3FN, estes problemas podem surgir. – e.g., Reserva SBDC, S → C, C → S está em 3FN, mas para cada reserva de marinheiro S, um mesmo par (S,C) é guardado. ❖ Assim, 3FN é na verdade um compromisso relativo para BCNF. Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 6-13 Decomposição de um Esquema de Relação ❖ Supondo que relação R contem atributos A1 ... An. A decomposição de R consiste em substituir R por duas ou mais relações tais que: – Cada novo esquema contem um subconjunto de atributos de R (e não atributos que não aparecem em R), e – Todo atributo de R aparece como um atributo de uma das novas relações. ❖ ❖ Intuitivamente, decompor R quer dizer que vamos guardar instâncias de esquemas produzidas pela decomposição, ao invés da instância de R. P.ex., decompor SNLRWH em SNLRH e RW. Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 6-14 Exemplo de Decomposição ❖ Decomposições devem ser usadas somente quando for preciso. – SNLRWH tem FDs S → SNLRWH e R→ W – Segunda DF causa violação de 3NF; valor W repetidamente associado com valor R. Caminho mais fácil para fixar isto é criar uma relação RW para guardar estas associações, e para remover W do esquema principal: ◆ ❖ i.e., Nós decompomos SNLRWH em SNLRH e RW A informação a ser guardada consiste de tuplas SNLRWH. Se somente guardarmos a projeção destas tuplas em SNLRH e RW, há alguns problemas em potencial p/ os quais deveríamos estar alertas? Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 6-15 Problemas com Decomposição ❖ Há três problemas em potencial para considerar: ❶ Algumas consultas ficam mais caras. ◆ p.ex., Quanto ganhava o marinheiro Joe? (salario= W x H) ❷ Dadas instâncias de relações decompostas, nós talvez não possamos recontruir a instância correspondente da relação original! ◆ ◆ ❖ Não é o caso no exemplo SNLRWH. Checar algumas dependências talvez requeira junções de instâncias de relações decompostas. Novamente, não no exemplo SNLRWH Custo/benefício: Deve considerar estes resultados vs. redundância. Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 6-16 Decomposição Com Junção Sem Perda ❖ Decomposição de R em X e Y permite junção sem perda c/ respeito a um um conjunto de FDs F se, para cada instância r que satisfaz F: – π X (r) π Y (r) = r ❖ É sempre verdade que r ⊆ π X (r) π Y (r) – Em geral, a outra direção não verifica! Se verificasse, a decomposição é junção sem perda. ❖ ❖ Definição extendida para decomposição em 3 ou mais relações em um caminho simples e direto. É essencial que todas decomposições usadas para lidar com redundância sejam sem perda (lossless)! (Evita (2).) Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 6-17 Mais sobre Junção Sem Perda ❖ ❖ A decomposição de R em X e Y é junção sem perda com relação a F se e somente se o fechamento de F contem : – X ∩ Y → X, or – X ∩Y → Y Em particular, a decomposição de R em UV e R - V é junção sem perda se U → V verifica sobre R. Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) A 1 4 7 A 1 4 7 1 7 B 2 5 2 B 2 5 2 2 2 C 3 6 8 C 3 6 8 8 3 A 1 4 7 B 2 5 2 B 2 5 2 C 3 6 8 6-18 Decomposição que Preserva Dependência ❖ Considere CSJDPQV, C chave , JP → C e SD → P. – BCNF decomposição: CSJDQV e SDP – Problema: Checando JP → C requer uma junção ! ❖ Decomposição que preserva dependência (Intuitivo): – Se R é decomposto em X, Y e Z, e impomos as DFs que verificam sobre X, sobre Y e sobre Z, então todas DFs que foram dadas sobre no R devem também verficar. (Evita Problema (3).) ❖ Projeção de conjunto de FDs F: Se R é decomposta em X, ... projeção de F em X (denotado FX )é o conjunto de DFs U → V in F+ (“closure” de F) tais que U, V estão em X. Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 6-19 Decomposição que Preserva Dependência (Cont.) ❖ Decomposição de R em X e Y preserva dependência se (FX union FY ) + = F + – i.e., se considerarmos somente dependências no fechamento F + que podem ser checadas em X sem considerar Y, e em Y sem considerar X, isto implica todas dependências em F +. ❖ ❖ ❖ Importante considerar F +, não F, nesta definição: – ABC, A → B, B → C, C→ A, decompostos em AB e BC. . – Preserva dependência ? C → A é preservada ? Preservar dependência não implica junção sem perda: – ABC, A → B, decomposto em AS e BC. E vice-versa! (Exemplo?) Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 6-20 Decomposição em BCNF ❖ ❖ Considere relação R com DFs F. Se X → Y viola BCNF, decomponha R em R - Y e XY. – Aplicação repetida desta idéia nos dará uma coleção de relações que estão em BCNF; decomposição de junção sem perda, e garante-se a terminação. – e.g., CSJDPQV, chave C, JP→ C, SD → P, J → S – Para lidar com SD→ P, decomponha em SDP, CSJDQV. – Para lidar com J→ S, decomponha CSJDQV em JS e CJDQV Em geral diversar dependências podem causar violações de BCNF. A ordem na qual nos “lidamos com” então poderia levar a conjuntos de relações muitos diferentes ! Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 6-21 BCNF e Preservação de Dependência ❖ Em geral, pode não haver uma decomposição em BCNF que preserve dependência. – e.g., CSZ, CS → Z, Z → C – Não pode decompor dad a 1a DF; não em BCNF. ❖ Similarmente, decomposição de CSJDQV em SDP, JS e CJDQV não preserva dependência (c/ relação as DFs: JP→ C, SD → P and J → S). – No entanto, é uma decomposição de junção sem perda. – Neste caso, adicionando JPC para a coleção de relações nos dá uma decomposição c/ preservação de dependência. ◆ tuplas JPC armazenadas apenas para checar DF! (Redundante!) Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 6-22 Decomposição em 3NF ❖ ❖ Obviamente, o algorítimo para decomposição de junção sem perda em BCNF pode ser usado para obter um decomposição de junção sem perda em 3NF (tipicamente, pode-se parar mais cedo). Para assegurar preservação de dependência: – Se X → Y não é preservado, adicione relação XY. – O problema é que XY pode violar 3NF! P.ex., considere a adição de CJP para `preservar’ JP→ C. E se tambem tivermos J→ C ? ❖ Refinamento: Ao invés de dar conjunto de DFs F, use uma mínima cobertura para F . Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 6-23 Cobertura Mínima para um Conjunto de DFs ❖ Cobertura Mínima G para um conjunto de FDs F: – “closure” de F = “closure” de G. – O lado direito de cada DF em G é um simples atributo. – Se modificarmos G removendo uma DF ou removendo atributos de uma DF em G, o “closure”muda. ❖ ❖ Intuitivamente, toda DF em G é necessária, e é “a menor possível” de modo a termos o mesmo “closure” como F. e.g., A → B, ABCD → E, EF → GH, ACDF → EG Tem as seguintes coberturas mínimas – A→ B, ACD → E, EF → G and EF → H Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 6-24 Resumo de Esquema de Refinamento ❖ ❖ Se uma relação está em BCNF, está livre de redundâncias que podem ser detectadas usando DFs. Assim, tentar assegurar que todas relações estão em BCNF é uma boa heurística . Se uma relação não está em BCNF, podemos tentar decompor a mesma em uma coleção de relações de BCNF. – Deve considerar se todas DFs são preservadas. Se uma junção sem perda , decomposição com preservação de dependência em BCNF não é possível (ou inadequado, dadas consultas típicas), deve considerar decomposição em 3NF. – Decomposição deve ser propagada e/ou re-examinada enquanto se mantém necessidades de performance em mente. Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) 6-25