Introducció
La desnormalització és el procés invers a la normalització. Mentre que la normalització busca eliminar la redundància i assegurar la integritat de les dades, la desnormalització introdueix redundància per millorar el rendiment de les consultes. En aquesta secció, explorarem els conceptes clau de la desnormalització, els seus avantatges i desavantatges, i quan és apropiat utilitzar-la.
Conceptes Clau
Què és la Desnormalització?
- Definició: La desnormalització és el procés de combinar taules normalitzades en una base de dades relacional per reduir la complexitat de les consultes i millorar el rendiment.
- Objectiu: Millorar el rendiment de les consultes a costa d'introduir redundància en les dades.
Avantatges de la Desnormalització
- Millora del Rendiment de les Consultes: Redueix el nombre de joins necessaris per obtenir dades, accelerant les consultes.
- Simplificació de Consultes: Les consultes es tornen més senzilles perquè les dades necessàries es troben en una sola taula.
- Reducció de la Càrrega de Processament: Menys operacions de join redueixen la càrrega de processament del servidor de bases de dades.
Desavantatges de la Desnormalització
- Redundància de Dades: La duplicació de dades pot portar a inconsistències si no es gestiona correctament.
- Manteniment Complex: Les actualitzacions i eliminacions de dades es tornen més complicades i poden requerir més temps.
- Augment de l'Espai d'Emmagatzematge: La redundància de dades augmenta la quantitat d'espai necessari per emmagatzemar la base de dades.
Quan Utilitzar la Desnormalització
Escenaris Comuns
- Aplicacions de Lectura Intensiva: Quan les aplicacions realitzen moltes més operacions de lectura que d'escriptura, la desnormalització pot millorar significativament el rendiment.
- Consultes Complexes i Freqüents: Si les consultes requereixen múltiples joins i són freqüents, la desnormalització pot simplificar aquestes consultes i millorar el temps de resposta.
- Bases de Dades de Gran Volum: En bases de dades molt grans, la desnormalització pot ajudar a gestionar millor el rendiment.
Exemples Pràctics
Exemple 1: Desnormalització d'una Base de Dades de Vendes
Taules Normalitzades:
- Clients:
client_id
,nom
,adreça
- Productes:
producte_id
,nom
,preu
- Comandes:
comanda_id
,client_id
,data
- Detalls de Comanda:
comanda_id
,producte_id
,quantitat
Taula Desnormalitzada:
- Comandes:
comanda_id
,client_id
,nom_client
,adreça_client
,producte_id
,nom_producte
,preu_producte
,quantitat
,data
Avantatge: Les consultes per obtenir informació completa d'una comanda són més ràpides perquè no necessiten múltiples joins.
Exemple 2: Desnormalització en una Base de Dades de Llibres
Taules Normalitzades:
- Autors:
autor_id
,nom
- Llibres:
llibre_id
,títol
,autor_id
Taula Desnormalitzada:
- Llibres:
llibre_id
,títol
,autor_id
,nom_autor
Avantatge: Les consultes per obtenir informació del llibre i el seu autor són més ràpides i senzilles.
Exercici Pràctic
Exercici 1: Desnormalització d'una Base de Dades d'Empleats
Taules Normalitzades:
- Empleats:
empleat_id
,nom
,departament_id
- Departaments:
departament_id
,nom_departament
Tasques:
- Desnormalitza les taules anteriors en una sola taula.
- Escriu una consulta SQL per obtenir el nom de l'empleat i el nom del departament.
Solució:
Taula Desnormalitzada:
- Empleats:
empleat_id
,nom
,departament_id
,nom_departament
Consulta SQL:
Conclusió
La desnormalització és una tècnica poderosa per millorar el rendiment de les consultes en bases de dades relacionals, especialment en aplicacions de lectura intensiva. Tot i això, cal utilitzar-la amb precaució per evitar problemes de redundància i manteniment. En aquesta secció hem explorat els conceptes clau, avantatges, desavantatges i exemples pràctics de desnormalització, així com un exercici per aplicar els coneixements adquirits.
Amb això, hem completat el tema de la desnormalització i els seus usos. En el següent mòdul, ens centrarem en exercicis pràctics per reforçar els conceptes apresos fins ara.
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