# Les bases de données/Modélisation d'une base de données

Maintenant que l'on sait comment est constituée une base de données, on peut passer à un peu de pratique. Dans ce chapitre, nous allons apprendre à créer ce qu'on appelle le schéma conceptuel d'une base de données. Ce schéma décrit les tables de la BDD ainsi que leurs liens. La description de la table est relativement simple : elle se borne à leur donner un nom, à décrire chaque colonne (nom et type) et à dire quelles sont les clés primaires. Les liens ne sont pas traduit en clés étrangères, qui ne sont d'ailleurs pas présentes dans ce schéma. Ce schéma conceptuel n'est qu'une première étape dans la modélisation d'une base de données. La seconde étape consiste à prendre le schéma et traduire les liens entre tables sous la forme de clés étrangères : on obtient alors le modèle logique de la base de données. Une fois cela fait, on peut traduire le tout dans un langage de programmation qui permet de gérer des bases de données (le SQL, par exemple) : c'est la troisième étape.
Dans ce chapitre, nous allons surtout voir les deux premières étapes. Le schéma d'une BDD s'écrit avec un certain symbolisme, qu'il faut connaître par cœur, et qui décrit les tables et leurs relations. C'est ce symbolisme que nous allons décrire dans ce chapitre.

## Tables

Les tables sont représentées par des rectangles, décomposées en trois cadres : un pour le nom de la table, un autre pour les attributs, et un autre pour les clés primaires. On note le nom de la table au sommet du rectangle, à l'intérieur du premier cadre. Les attributs sont notés à l'intérieur du rectangle, dans le cadre en-dessous du nom de la table : on précise non seulement leur nom, mais aussi leur type. Les clés primaires sont notées dans le dernier cadre, et précisent quels sont les attributs de la clé : ils font référence à des attributs décrits dans le cadre au-dessus.

## Relations

Les relations entre tables sont indiquées par une flèche ou un trait entre deux tables. Le type de la relation (correspondance un à un, un à plusieurs, plusieurs à plusieurs), n'est pas indiqué directement sur le trait qui relie les deux tables. Par contre, ce qu'on appelle la cardinalité de la relation le sera. Cette cardinalité porte sur la relation entre une table A et une autre table B, et indique à combien de lignes de B fait référence une ligne de A. Il existe une cardinalité maximale et une minimale.
* Le premier cas est celui de la correspondance un vers un : chaque ligne de A pointe vers une ligne de B, et seulement une seule. Dans ce cas, la cardinalité est de 1, que ce soit pour la cardinalité minimale ou maximale.
* Le second cas est une petite variante du premier cas : il se peut que des lignes de A ne pointent pas vers une ligne de B. Dans ce cas, la cardinalité maximale ne change pas : elle est de 1. Mais la cardinalité minimale est de 0.
* Le troisième cas est celui de la correspondance un vers plusieurs : chaque ligne de A pointe vers au moins une ligne de B, potentiellement plusieurs. Dans ce cas, la cardinalité maximale n'est pas connue, mais on sait qu'elle est supérieure à 1. La cardinalité minimale est de 1.
* Le quatrième cas est une variante du cas précédent, sauf qu'il est possible qu'une ligne de A ne pointe pas vers une ligne de B.
Pour résumer, la cardinalité minimale est soit de 0, soit de 1, tandis que la maximale est soit de 1 soit de plusieurs. Ces cardinalités doivent être indiquées sur le trait de la relation, séparées par une virgule : la cardinalité minimale doit être indiquée avant la maximale. Attention : si on doit indiquer les cardinalités pour la liaison de A vers B, il faut aussi indiquer celle de B vers A sur le trait.