El disseny de bases de dades és una part fonamental del desenvolupament d'aplicacions que requereixen emmagatzematge i gestió de dades. Un bon disseny de bases de dades assegura que les dades es poden emmagatzemar de manera eficient, accedir-hi ràpidament i mantenir la integritat i consistència. En aquesta secció, explorarem els principis clau del disseny de bases de dades.
Objectius del Disseny de Bases de Dades
Abans de començar amb els principis específics, és important entendre els objectius generals del disseny de bases de dades:
- Integritat de les dades: Assegurar que les dades siguin correctes i consistents.
- Eficiència: Optimitzar l'emmagatzematge i l'accés a les dades.
- Escalabilitat: Permetre que la base de dades creixi i s'adapti a les necessitats futures.
- Mantenibilitat: Facilitar l'actualització i el manteniment de la base de dades.
Principis Clau del Disseny de Bases de Dades
- Identificació dels Requisits
Abans de començar a dissenyar, és crucial entendre els requisits de l'aplicació:
- Requisits funcionals: Quines operacions es necessiten (insercions, consultes, actualitzacions, eliminacions)?
- Requisits no funcionals: Quins són els requisits de rendiment, seguretat, escalabilitat, etc.?
- Modelatge de Dades
El modelatge de dades és el procés de crear un model abstracte que representa les dades i les seves relacions:
- Model Entitat-Relació (ER): Un diagrama ER és una representació visual de les entitats (taules) i les seves relacions.
- Atributs: Cada entitat té atributs que representen les seves propietats.
- Relacions: Defineixen com les entitats estan connectades entre si.
Exemple de Diagrama ER
+-----------------+ +-----------------+ | Clients | | Comandes | +-----------------+ +-----------------+ | id_client (PK) |<----->| id_comanda (PK) | | nom | | data | | adreça | | id_client (FK) | +-----------------+ +-----------------+
- Normalització
La normalització és el procés d'organitzar les dades per minimitzar la redundància i evitar anomalies d'actualització:
- Primera Forma Normal (1NF): Eliminar grups repetitius i assegurar que cada camp conté només un valor.
- Segona Forma Normal (2NF): Assegurar que tots els atributs no clau depenen completament de la clau primària.
- Tercera Forma Normal (3NF): Eliminar dependències transitives, assegurant que els atributs no clau no depenen d'altres atributs no clau.
Exemple de Normalització
Suposem que tenim una taula no normalitzada:
+-----------------+-----------------+-----------------+ | id_comanda | nom_client | adreça_client | +-----------------+-----------------+-----------------+ | 1 | Joan | Carrer A, 123 | | 2 | Maria | Carrer B, 456 | | 3 | Joan | Carrer A, 123 | +-----------------+-----------------+-----------------+
Després de normalitzar:
Taula Clients: +-----------------+-----------------+-----------------+ | id_client | nom | adreça | +-----------------+-----------------+-----------------+ | 1 | Joan | Carrer A, 123 | | 2 | Maria | Carrer B, 456 | +-----------------+-----------------+-----------------+ Taula Comandes: +-----------------+-----------------+ | id_comanda | id_client | +-----------------+-----------------+ | 1 | 1 | | 2 | 2 | | 3 | 1 | +-----------------+-----------------+
- Claus Primàries i Estrangeres
- Clau Primària (PK): Un identificador únic per a cada registre en una taula.
- Clau Estrangera (FK): Un camp que enllaça una taula amb una altra, establint una relació entre elles.
- Índexs
Els índexs milloren la velocitat de les operacions de consulta a costa d'un major ús d'espai i temps d'inserció/actualització:
- Índexs simples: Basats en un sol camp.
- Índexs compostos: Basats en múltiples camps.
- Denormalització (quan sigui necessari)
En alguns casos, pot ser necessari denormalitzar per millorar el rendiment de les consultes, especialment en sistemes de lectura intensiva.
Exercici Pràctic
Enunciat
Dissenya una base de dades per a una aplicació de biblioteca que gestioni llibres, autors i préstecs. La base de dades ha de permetre:
- Emmagatzemar informació sobre llibres (títol, any de publicació, gènere).
- Emmagatzemar informació sobre autors (nom, data de naixement).
- Gestionar els préstecs de llibres als usuaris (data de préstec, data de retorn).
Solució
Diagrama ER
+-----------------+ +-----------------+ +-----------------+ | Llibres | | Autors | | Préstecs | +-----------------+ +-----------------+ +-----------------+ | id_llibre (PK) | | id_autor (PK) | | id_préstec (PK) | | títol | | nom | | id_llibre (FK) | | any_publicació | | data_naixement | | data_préstec | | gènere | +-----------------+ | data_retorna | +-----------------+ +-----------------+
Taules Normalitzades
Taula Llibres: +-----------------+-----------------+-----------------+-----------------+ | id_llibre | títol | any_publicació | gènere | +-----------------+-----------------+-----------------+-----------------+ | 1 | Llibre A | 2001 | Ficció | | 2 | Llibre B | 1999 | No Ficció | +-----------------+-----------------+-----------------+-----------------+ Taula Autors: +-----------------+-----------------+-----------------+ | id_autor | nom | data_naixement | +-----------------+-----------------+-----------------+ | 1 | Autor A | 1970-01-01 | | 2 | Autor B | 1980-02-02 | +-----------------+-----------------+-----------------+ Taula Préstecs: +-----------------+-----------------+-----------------+-----------------+ | id_préstec | id_llibre | data_préstec | data_retorna | +-----------------+-----------------+-----------------+-----------------+ | 1 | 1 | 2023-01-01 | 2023-01-15 | | 2 | 2 | 2023-02-01 | 2023-02-15 | +-----------------+-----------------+-----------------+-----------------+
Conclusió
En aquesta secció, hem explorat els principis fonamentals del disseny de bases de dades, incloent la identificació de requisits, el modelatge de dades, la normalització, l'ús de claus primàries i estrangeres, i la creació d'índexs. Aquests principis són essencials per crear bases de dades eficients, escalables i mantenibles. En el proper mòdul, aprofundirem en la normalització i veurem exemples pràctics de com aplicar aquests principis.
Curs de PostgreSQL
Mòdul 1: Introducció a PostgreSQL
Mòdul 2: Operacions bàsiques de SQL
Mòdul 3: Consultes SQL avançades
Mòdul 4: Disseny de bases de dades i normalització
Mòdul 5: Funcionalitats avançades de PostgreSQL
Mòdul 6: Optimització i millora del rendiment
- Optimització de consultes
- Estratègies d'indexació
- Analitzant el rendiment de les consultes
- Vacuuming i manteniment
Mòdul 7: Seguretat i gestió d'usuaris
- Rols d'usuari i permisos
- Mètodes d'autenticació
- Encriptació de dades
- Còpia de seguretat i restauració
Mòdul 8: Treballant amb JSON i funcionalitats NoSQL
Mòdul 9: Extensions i eines avançades
- PostGIS per a dades geoespacials
- Cerca de text complet
- Wrappers de dades externes
- PL/pgSQL i altres llenguatges procedimentals