La normalització és un procés sistemàtic per organitzar les dades en una base de dades per evitar la redundància i assegurar la integritat de les dades. Aquest procés implica dividir una base de dades en taules més petites i definir les relacions entre elles. La normalització generalment es fa en diverses etapes, anomenades formes normals.
Objectius de la Normalització
- Eliminar la redundància de dades: Reduir la duplicació de dades per minimitzar l'espai d'emmagatzematge i evitar inconsistències.
- Assegurar la integritat de les dades: Mantenir la precisió i la consistència de les dades.
- Millorar l'eficiència de les operacions: Optimitzar les operacions de consulta, inserció, actualització i eliminació.
Passos del Procés de Normalització
Primera Forma Normal (1NF)
Una taula està en la Primera Forma Normal si:
- Tots els valors de les columnes són atòmics (no divisibles).
- No hi ha files duplicades.
- Cada camp conté només un valor per fila.
Exemple:
Suposem una taula Clients amb les següents dades:
| ClientID | Nom | Telèfons |
|---|---|---|
| 1 | Joan | 123456789, 987654321 |
| 2 | Maria | 555555555 |
Taula en 1NF:
| ClientID | Nom | Telèfon |
|---|---|---|
| 1 | Joan | 123456789 |
| 1 | Joan | 987654321 |
| 2 | Maria | 555555555 |
Segona Forma Normal (2NF)
Una taula està en la Segona Forma Normal si:
- Està en 1NF.
- Tots els atributs no clau depenen completament de la clau primària.
Exemple:
Suposem una taula Comandes amb les següents dades:
| ComandaID | ClientID | NomClient | DataComanda | ProducteID | Quantitat |
|---|---|---|---|---|---|
| 1 | 1 | Joan | 2023-01-01 | 101 | 2 |
| 2 | 2 | Maria | 2023-01-02 | 102 | 1 |
Taula en 2NF:
Clients
| ClientID | Nom |
|---|---|
| 1 | Joan |
| 2 | Maria |
Comandes
| ComandaID | ClientID | DataComanda |
|---|---|---|
| 1 | 1 | 2023-01-01 |
| 2 | 2 | 2023-01-02 |
DetallsComanda
| ComandaID | ProducteID | Quantitat |
|---|---|---|
| 1 | 101 | 2 |
| 2 | 102 | 1 |
Tercera Forma Normal (3NF)
Una taula està en la Tercera Forma Normal si:
- Està en 2NF.
- No hi ha dependències transitives (un atribut no clau no depèn d'un altre atribut no clau).
Exemple:
Suposem una taula Productes amb les següents dades:
| ProducteID | NomProducte | Preu | Categoria |
|---|---|---|---|
| 101 | Llibre | 10 | Educació |
| 102 | Llapis | 1 | Oficina |
Taula en 3NF:
Productes
| ProducteID | NomProducte | Preu |
|---|---|---|
| 101 | Llibre | 10 |
| 102 | Llapis | 1 |
Categories
| CategoriaID | Categoria |
|---|---|
| 1 | Educació |
| 2 | Oficina |
Exercici Pràctic
Exercici 1
Donada la següent taula Empleats:
| EmpleatID | Nom | Departament | CapDepartament |
|---|---|---|---|
| 1 | Anna | IT | Joan |
| 2 | Marc | Vendes | Maria |
| 3 | Laura | IT | Joan |
- Converteix la taula a 1NF.
- Converteix la taula resultant a 2NF.
- Converteix la taula resultant a 3NF.
Solució
1. Taula en 1NF:
| EmpleatID | Nom | Departament | CapDepartament |
|---|---|---|---|
| 1 | Anna | IT | Joan |
| 2 | Marc | Vendes | Maria |
| 3 | Laura | IT | Joan |
2. Taula en 2NF:
Empleats
| EmpleatID | Nom | DepartamentID |
|---|---|---|
| 1 | Anna | 1 |
| 2 | Marc | 2 |
| 3 | Laura | 1 |
Departaments
| DepartamentID | Departament | CapDepartament |
|---|---|---|
| 1 | IT | Joan |
| 2 | Vendes | Maria |
3. Taula en 3NF:
Empleats
| EmpleatID | Nom | DepartamentID |
|---|---|---|
| 1 | Anna | 1 |
| 2 | Marc | 2 |
| 3 | Laura | 1 |
Departaments
| DepartamentID | Departament | CapDepartamentID |
|---|---|---|
| 1 | IT | 1 |
| 2 | Vendes | 2 |
CapsDepartament
| CapDepartamentID | NomCapDepartament |
|---|---|
| 1 | Joan |
| 2 | Maria |
Conclusió
La normalització és un procés essencial per dissenyar bases de dades eficients i consistents. A través de les diferents formes normals, podem assegurar-nos que les dades estan organitzades de manera òptima, evitant la redundància i mantenint la integritat de les dades. Aquest procés és fonamental per a qualsevol professional que treballi amb bases de dades, ja que millora la qualitat i l'eficiència de les operacions de la base de dades.
Fonaments de Bases de Dades
Mòdul 1: Introducció a les Bases de Dades
- Conceptes Bàsics de Bases de Dades
- Tipus de Bases de Dades
- Història i Evolució de les Bases de Dades
Mòdul 2: Bases de Dades Relacionals
Mòdul 3: Bases de Dades No Relacionals
- Introducció a NoSQL
- Tipus de Bases de Dades NoSQL
- Comparació entre Bases de Dades Relacionals i No Relacionals
Mòdul 4: Disseny d'Esquemes
- Principis de Disseny d'Esquemes
- Diagrames Entitat-Relació (ER)
- Transformació de Diagrames ER a Esquemes Relacionals
