Cours basé sur ce document et cette doc.
(Type-)Entité = population d'individus homogènes.
Exemple : clients, produits, fournisseurs...
(Type-)Association = lien logique entre plusieurs entités.
Exemple : acteur — jouer dans — film.
Remarque : pas de lien direct client — fournisseur.
Attribut = propriété d'une entité ou d'une association.
Exemple pour un article : prix, date de péremption...
Identifiant = attribut unique pour une (instance d') entité.
Exemples : numéro de client, numéro de commande.
Remarques :
Une entité est faible si sa clé contient un attribut d'une autre entité, ou + généralement si elle n'a de sens qu'en lien avec une autre entité.
La cardinalité d'un lien entre une entité et une association précise le minimum et le maximum de fois qu'un individu de l'entité peut être concerné par l'association $-$ dans un certain contexte.
Deux même entités peuvent être plusieurs fois en association.
Association d'une entité avec elle-même.
Une entité en relation 1,1 avec k autres où k ≥ 2 est susceptible d'être remplacée par une association d'arité k.
Toute entité remplaçable par une association doit être remplacée.
Un nom d'entité, d'association ou d'attribut doit être unique.
Conseils :
Chaque entité doit posséder un identifiant.
Conseils :
Un attribut d'association dépend des identifiants de toutes les entités en relation.
...fantômes, redondantes ou en plusieurs exemplaires :
S'il existe deux chemins pour se rendre d'une entité à une autre, alors ils doivent avoir deux significations ou deux durées de vie différentes. Sinon on supprime le plus court.
Exemple : relation de parenté "version généalogique"
Les attributs prennent des valeurs atomiques.
Remarque : écrire les noms d'attributs au singulier aide à respecter cette règle
1NF et les attributs non identifiants de l'entité dépendent de l'identifiant en entier (éventuellement composé).
2NF et les attributs non identifiants d'une entité dépendent uniquement de l'identifiant (éventuellement composé).
Mnémotechnique : "The key, the whole key, nothing but the key" (Chris Date / Shakespeare)
3NF et aucun attribut de l'identifiant ne dépend d'un attribut non identifiant.
Manager | Project | Branch |
---|---|---|
Brown | Mars | Chicago |
Green | Jupiter | Birmingham |
Green | Mars | Birmingham |
Hoskins | Saturn | Birmingham |
Hoskins | Venus | Birmingham |
Un attribut $Y$ dépend fonctionnellement d'un attribut $X$
$\Leftrightarrow$ une valeur de $X$ induit une
unique valeur de $Y$ : $X \rightarrow Y$
Ex. : si $X$ est le numéro d'un client et $Y$ son nom, alors $X \rightarrow Y$
Si $X$ = groupe d'attributs : DF non élémentaire.
Exercice : réexprimer les formes normales 2 et 3 en terme de DFs.
Relation : ensemble d'attributs formant une unité logique.
Exemple : R(numéro article, nom article, prix unitaire)
Soient $X$ et $Y$ deux ensembles d'attributs.
Dépendance fonctionnelle totale (DFT) $\Leftrightarrow \forall X' \subset X, X' \nrightarrow Y$
Clé minimale (ou irréductible) :
$X$ est une clé minimale de $R$ ssi. $\forall X' \subset X$, $X'$ n'est pas une clé
Exercice : exprimer "X,Y est une clé minimale de R(X,Y,Z,W)" à l'aide de connecteurs logiques
$(X,Y \rightarrow Z,W) \land \lnot (X \rightarrow Y,Z,W) \land \lnot (Y \rightarrow X,Z,W)$
Soient X, Y, Z, W des ensembles d'attributs (entités diverses)
Réflexivité | $Y \subseteq X \Rightarrow X \rightarrow Y$ |
Augmentation | $X \rightarrow Y \land W \subseteq Z \Rightarrow X,Z \rightarrow Y,W$ |
Transitivité | $X \rightarrow Y \land Y \rightarrow Z \Rightarrow X \rightarrow Z$ |
Pseudo-transitivité | $X \rightarrow Y \land Y,Z \rightarrow W \Rightarrow X,Z \rightarrow W$ |
Union | $X \rightarrow Y \land X \rightarrow Z \Rightarrow X \rightarrow Y,Z$ |
Décomposition | $X \rightarrow Y,Z \Rightarrow X \rightarrow Y \land X \rightarrow Z$ |
Soient $R(X_1,...,X_n)$ une relation et $\mathcal{D}$ un ensemble de DF sur R.
Une dépendance fonctionnelle de $\mathcal{D}$ est dite canonique si son terme de droite ne contient qu'un attribut. Par exemple $A \rightarrow B$.
Fermeture transitive $\mathcal{F}(R)$ = ensemble des dépendances fonctionnelles
engendrées par $\mathcal{D}$ (notation non standard).
On note $\mathcal{D}^+$ la fermeture obtenue à partir de $\mathcal{D}$
Couverture minimale $\mathcal{C}(R)$ = ensemble de DF canoniques sur R permettant de reconstruire $\mathcal{D}^+$ par fermeture transitive, et telle qu'aucune de ses DF ne soit redondante ($\forall f \in \mathcal{C}, (\mathcal{C} \backslash f)^+ \neq \mathcal{D}^+$)
Exemple : $R(A,B,C,D), \mathcal{D} = \{A,B \rightarrow C, C \rightarrow D\}$
Fermeture transitive = $\{A,B \rightarrow C,D ; C \rightarrow D\}$
Couverture minimale = $\mathcal{D}$
Graphe de couverture minimale : graphe orienté dont les noeuds représentent des attributs (atomiques), et les arêtes des dépendances fonctionnelles directes (non transitives).
Remarque :
En réalité il faut déjà connaître les entités en présence pour établir correctement le graphe de
couverture minimale, ne serait-ce que pour y faire figurer leurs identifiants.
Donc cette technique est surtout une aide pour établir les associations entre les entités et pour
normaliser les entités et leurs associations.
La conception d'une base de données peut démarrer par l'élaboration d'un schéma entités-associations.
Ce schéma doit respecter un certain nombre de règles pour éviter la redondances de données et permettre des évolutions sans repenser toute la structure, facilitant ainsi la maintenance de la base.
Des extensions existent pour mieux modéliser certaines situations :
L'étape suivante consiste à traduire un schéma E/A en un schéma intermédiaire (modèle logique) puis à l'implémenter dans un SGBD comme PostGreSQL (modèle physique).