# Introduction

Jusqu'au présent, nous avons interrogé des bases de données existantes en regardant des schémas déjà faites.

Pendant vos carrières, vous allez devoir **concevoir** aussi des bases de données. Cette tâche parait simple au début, mais on aimerait que notre base :

* répond de façon rapide et efficace de toutes les interrogations (requêtes temps réelles, la génération de rapports)
* représente la *vérité* sans fautes ou inconsistances.
* évolue correctement avec le business

Ceci n'est pas toujours facile ni intuitif, et les besoins peuvent-être difficile à anticiper.

Surtout en plus, souvent le client même ne comprend pas totalement son domaine. Il nous demande de concevoir un modèle de son entreprise en connaissant encore moins que lui ! (oui, cela m'est arrivé à plusieurs reprises !!).

La modélisation des données (ou *data modeling*) donc est une activité multivalente :

* étudier et comprendre le domaine
* extraire des informations critiques nécessaires pour la tâche en question
* concevoir votre modèle, nettoyer le modèle,
* réanalyser et tester le modèle

{% hint style="info" %}
**Exemple concret**

Nous cherchons toujours à éviter deux problèmes principaux :

* **la redondance** : avoir plusieurs copies de la même information dans plusieurs relations
* **les données incomplètes** : avoir un design qui empêche de représenter toutes les informations correctement

Prenons la base de données **sakila**. Imaginons si le nom du genre de chaque film était stocké directement dans la table `film`. Cette représentation peut être problématique :

* Si on voulait modifier simplement corriger une faute d’orthographe dans le nom d’un genre, mais 534 films sont de ce genre. Il y aura 534 lignes à mettre à jour !
* Si on voulait ajouter un nouveau genre, ce genre ne serait pas représenté dans la base tant qu’il n’y a pas au moins un film de ce genre !
  {% endhint %}

Depuis des années, des chercheurs, experts et pratiquants ont développé plusieurs techniques ou façons de modéliser les données, pour essayer d'anticiper un grand nombre de problèmes. Dans ce chapitre, nous allons apprendre certaines étapes utiles dans la conception de données :

* Design conceptuel
  * Livrable : ER-diagram
* Design logique
  * Livrable : Schéma ou diagram classe
* Normalisation
  * Livrable : Schéma robuste qui évite de redondances, inconsistances
* Design physique
  * Livrable : SQL DDL / Schéma


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.glassworks.tech/sgbdr/data-modeling/001-introduction.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
