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:

  1. Integritat de les dades: Assegurar que les dades siguin correctes i consistents.
  2. Eficiència: Optimitzar l'emmagatzematge i l'accés a les dades.
  3. Escalabilitat: Permetre que la base de dades creixi i s'adapti a les necessitats futures.
  4. Mantenibilitat: Facilitar l'actualització i el manteniment de la base de dades.

Principis Clau del Disseny de Bases de Dades

  1. 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.?

  1. 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)  |
+-----------------+       +-----------------+

  1. 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               |
+-----------------+-----------------+

  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.

  1. Í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.

  1. 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

Mòdul 7: Seguretat i gestió d'usuaris

Mòdul 8: Treballant amb JSON i funcionalitats NoSQL

Mòdul 9: Extensions i eines avançades

Mòdul 10: Estudis de cas i aplicacions del món real

© Copyright 2024. Tots els drets reservats