class: center, middle, inverse, title-slide .title[ # Normalització de bases de dades ] --- # Dependència funcional Si `\(x\)` i `\(y\)` son dos atributs d'una relació `\(R\)`, direm que `\(y\)` depen funcionalment de `\(x\)` si cada valor de `\(x\)` té associat un únic valor de `\(y\)`. Escrivim: `$$x \rightarrow y$$` En aquest cas direm que `\(x\)` és *determinant* de `\(y\)`. La dependència funcional entre atributs d'una taula és la base del procés de normalització de bases de dades relacionals, que garanteix la integritat de les dades. --- # Objectius de la normalització - Minimitzar la redundància de les dades - Evitar problemes d'actualització de les dades a les taules - Protegir la integritat de dades --- # Exemple | DNI | Treballador | Departament | Responsable | | -------- | ------- | ---------- | ----------- | | 9999999 | Pere | Marketing | Laura | | 1111111 | Maria | Marketing | Laura | | 1111111 | Maria | RRHH | Joan | --- # Propietats de la dependència funcional *Dependència funcional reflexiva:* Si `\(y \in x\)`, aleshores $$ x \rightarrow y $$ --- # Propietats de la dependència funcional *Dependència funcional augmentativa:* Si $$ x \rightarrow y $$ aleshores $$ xz \rightarrow yz $$ --- # Propietats de la dependència funcional *Dependència funcional transitiva:* Si `\(X\)`, `\(Y\)` i `\(Z\)` son tres atributs (o grups d'atributs) de la mateixa entitat i es compleix: $$ x \rightarrow y $$ $$ y \rightarrow z $$ Aleshores, $$ x \rightarrow z $$ --- # Primera forma normal Una taula està en primera forma normal (1FN) si: - Tots els atributs són atòmics (indivisibles). - Els camps no clau han de ser identificats per la clau (dependència funcional). - Hi ha d'haver una independència de l'ordre tant de les files com de les columnes; és a dir, si les dades canvien d'ordre no han de canviar els seus significats. Aquesta forma normal elimina els valors repetits dins una base de dades. --- # Primera forma normal Situacions en què una taula no està en primera forma normal: - Una taula que no té una clau primària. - Segons alguns autors, una taula amb algun atribut que pugui ser nul. La majoria d'autors, no obstant, consideren que una taula pot estar a 1FN si cap clau candidata pot contenir valors nuls, però s'accepten aquests per a atributs que no siguin clau. --- # Exemple | ID client| Nom | Cognom | Telèfon | | -------- | ------- | ---------- | ----------- | | 123 | Rachel | Ingram | 555-861-2025 | | 456 | James | Wright | 555-403-1659, 555-776-4100, 555-888-6366 | | 789 | Cesar | Dure | 555-808-9633 | --- # Exemple | ID client| Nom | Cognom | Telèfon 1 | Telèfon 2 | Telèfon 3 | | -------- | ------- | ---------- | ----------- | ----------- | ----------- | | 123 | Rachel | Ingram | 555-861-2025| | | 456 | James | Wright | 555-403-1659| 555-776-4100 | 555-888-6366 | | 789 | Cesar | Dure | 555-808-9633| | | --- # Més enllà de la 1FN | ID client| Nom | Cognom | | -------- | ------- | ---------- | | 123 | Rachel | Ingram | | 456 | James | Wright | | 789 | Cesar | Dure | | ID client| Telèfon | | -------- | ------- | | 123 | 555-861-2025| | 456 | 555-403-1659| | 456 | 555-776-4100| | 456 | 555-888-6366 | | 789 | 555-808-9633| --- # Segona forma normal Una taula està en segona forma normal (2FN) si està en 1FN i si els atributs que no formen part de cap clau depenen de forma completa de la clau principal. És a dir, que no hi ha dependències parcials. Tots els atributs que no son clau principal només han de dependre de la clau principal. --- # Exemple | ID client| Nom | Cognom | email | | -------- | ------- | ---------- | ----------- | | 123 | Rachel | Ingram | ringram@gmail.com | | 456 | James | Wright | jwright@gmail.com | | 456 | James | Wright | jwright@hotmail.com | | 789 | Cesar | Dure | cdure@gmail.com | --- # Exemple | ID client| Nom | Cognom | | -------- | ------- | ---------- | | 123 | Rachel | Ingram | | 456 | James | Wright | | 789 | Cesar | Dure | | ID client| email | | -------- | ----------- | | 123 | ringram@gmail.com | | 456 | jwright@gmail.com | | 456 | jwright@hotmail.com | | 789 | cdure@gmail.com | --- # Exemple | Fabricant| Model | Nom complet | Pais | | -------- | ------- | ---------- | ----------- | | Toyota | Prius | Toyota Prius | Japó | | Dodge | Challenger | Dodge Challenger | USA | | Toyota | Yaris | Toyota Yaris | Japó | | Mercedes Benz | Class A | Mercedes Benz Class A | Alemanya | --- # Tercera forma normal Una taula es troba en tercera forma normal (3FN) si està en 2FN i si no hi ha cap dependència funcional transitiva en els atributs que no són clau. Dit d'una altra manera, les columnes a la taula només han de contenir informació sobre l'entitat definida per la clau primària. --- # Exemple | Torneig| Any | Guanyador | Data naixement | | -------- | ------- | ---------- | ----------- | | Des Moines Masters | 1998 | Chip Masterson | 14 de març de 1977 | | Indiana Invitational | 1998 | Al Fredrickson | 21 de juliol de 1975 | | Cleveland Open | 1999 | Bob Albertson | 28 de setembre de 1968 | | Des Moines Masters | 1999 | Al Fredrickson | 21 de juliol de 1975 | | Indiana Invitational | 1999 | Chip Masterson | 14 de març de 1977 | --- # Exemple |idTorneig | Torneig| Any | | -------- | ------- | ------- | | 1 | Des Moines Masters | 1998 | | 2 | Indiana Invitational | 1998 | | 3 | Cleveland Open | 1999 | | 4 | Des Moines Masters | 1999 | | 5 | Indiana Invitational | 1999 | --- # Exemple |idGuanyador | Guanyador | Data naixement | | ------- | ---------- | ----------- | | 1 | Chip Masterson | 14 de març de 1977 | | 2 | Al Fredrickson | 21 de juliol de 1975 | | 3 | Bob Albertson | 28 de setembre de 1968 | --- # Exemple |idTorneig | idGuanyador | | ------- | ---------- | | 1 | 1 | | 2 | 2 | | 3 | 3 | | 4 | 2 | | 5 | 1 | --- # Forma normal de Boyce-Codd Una taula es troba en la forma normal de Boyce-Codd (FNBC) si cada determinant (atribut que determina completament a un altre), és clau candidata. --- # Forma normal de Boyce-Codd Una forma senzilla de comprovar si una relació es troba a FNBC consisteix a comprovar, a més que estigui a 3FN, el següent: - Si no hi ha claus candidates compostes (amb diversos atributs), està en FNBC. - Si hi ha diverses claus candidates compostes i aquestes tenen un element comú, pot no estar en FNBC. Només si, per a cada dependència funcional en la relació, el determinant és una clau candidata, estarà en FNBC. --- # Exemple |IDTrabajador | IDDepartamento | IDResponsable | | ------- | ---------- | ----------- | | 001 | Marketing | 123 | | 002 | Comptabilitat | 456 | | 003 | Comptabilitat | 456 | | 004 | RRHH | 789 | --- # Relació entre les formes normals 