Modèle relationnel
Les bases de données relationnelles ont été mises au point en 1970 par Edgar Franck Codd, informaticien britannique (1923-2003).
Ces bases de données sont basées sur la théorie mathématique des ensembles.
Le modèle de données relationnel représente une base de données comme un ensemble de :
- relations (tables à deux dimensions) qui contiennent
- un ensemble de n-uplets ou tuples (les lignes – ou enregistrements – de la table)
- dont les entrées (des valeurs qui peuvent être de type nombre, texte, booléen ou bien NULL) appartiennent à un domaine.
- des attributs (les colonnes de la table), dont les noms peuvent servir de clefs.
- un ensemble de n-uplets ou tuples (les lignes – ou enregistrements – de la table)
On appelle ordre (ou degré) le nombre d’attributs d’une relation.
Par exemple : la relation Produits est d’ordre 4.
On appelle cardinal le nombre d’enregistrements d’une relation.
Par exemple : la relation Produits est de cardinal 5.
Dans une même base de données, plusieurs relations peuvent avoir des attributs de même nom. Pour désigner l’attribut attr1
d’une relation rel1
, on le notera : rel1.attr1
.
Par exemple : Produits.Référence
Domaines
Le domaine d’un attribut est un ensemble, fini ou infini, de valeurs admissibles.
Par exemple :
le domaine de l’attribut « Prix » est l’ensemble des nombres à virgule flottante (FLOAT
) exprimés avec deux chiffres après la virgule.
le domaine de l’attribut « Nom » correspond à l’ensemble des chaînes de caractères (TEXT
).
Le domaine d’un attribut est renseigné au moment de la création de la relation. Le SGBD s’assure par la suite qu’un élément ajouté à une relation respecte bien le domaine de l’attribut correspondant.
Relations et clés
Pour qu’un groupe d’attributs forme une clé, il faut être sûr que deux enregistrements n’auront jamais des valeurs identiques pour ces attributs : on parle d’unicité de la clé.
- clé primaire : c’est l’une des clés candidates de la relation, choisie pour être utilisée comme clé étrangère dans une autre relation :
- clé étrangère : attribut d’une relation dont les valeurs sont des références à une clé primaire d’une autre relation.
Pour préserver l’intégrité d’une base de données, le SGBD se charge de vérifier que toutes les valeurs d’une clef étrangère d’une relation correspondent bien à des valeurs présentes dans la clef primaire de l’autre relation.
Schéma relationnel
Les tables constituent la structure logique du modèle.
Exemple : Produits (Référence, Nom, En stock, Prix)
Le schéma relationnel d’une base de données est l’ensemble des schémas des relations qui la composent.
Exemple :
-
- Produits (Référence, Nom, En stock, Prix)
- Ventes (Numéro, Référence produit, Date, Quantité)
Il est possible de faire apparaitre sur un schéma relationnel les clé primaires et étrangères des relations :
Exemple :
-
- Produits (Référence, Nom, En stock, Prix)
- Ventes (Numéro, #Référence produit, Date, Quantité)
Dans cette notation,
- les clés primaires apparaissent soulignées,
- les clés étrangères précédées (ou suivies) d’un # .
On peut également préciser les domaines des différents attributs :
Exemple :
-
- Produits (Référence : TEXT, Nom : TEXT, En stock : BOOL, Prix : FLOAT)
- Ventes (Numéro : INT, #Référence produit : TEXT, Date : DATE, Quantité : INT)
On peut représenter un schéma de relation sous une forme graphique, par exemple à l’aide d’un diagramme :
Contraintes d’intégrité
Une contrainte d’intégrité est une règle, établie à la création d’une base de données, qui définit la cohérence des données de la base.
Une contrainte peut agir au niveau de la valeur d’une donnée, de la relation où elle est enregistrée, ou encore d’un ensemble de relations.
Contrainte de domaine
Elle est définie par le domaine que l’on spécifie pour chaque attribut d’une relation.
Le choix du domaine est important pour assurer l’intégrité des données.
Exemple, pour l’attribut Prix
de la relation Produits
Si on choisit le domaine FLOAT
(ensemble des nombres entiers), on autorise la possibilité d’avoir des prix qui n’ont pas le bon nombre de chiffres après la virgule.
Il faut préférer le domaine DECIMAL(5,2)
(ensemble des nombres décimaux à compris entre -999.99 et 999.99)
Selon les SGBD, on pourra également limiter les nombres à des entiers positifs, les chaînes de caractère à un ensemble fini de mots, …
Contrainte de relation
Il faut spécifier une clé primaire pour chaque relation d’une base de données. Ainsi le SGBD pourra s’assurer qu’il sera possible avec cette clé d’accéder à un unique enregistrement, et interdira la création de doublons.
Exemple : le SGBD renverra un message d’erreur si l’on tente de créer deux Produits
ayant la même Référence
.
Si on omet de spécifier une clé primaire pour une relation, l’application qui exploite les données pourrait avoir de graves dysfonctionnements !
Contrainte de clé étrangère
Les clé étrangères d’une relation doivent être définie lors de la création de la relation. Ainsi, le SGBD sera chargé de vérifier qu’une valeur de clé étrangère correspond bien à une des valeur de clé primaire de la table à laquelle elle se réfère.
Exemple :
Chaque valeur de l’attribut Référence produit
de la relation Ventes
doit obligatoirement figurer parmi les valeurs de l’attribut Produit
de la relation Produits
.
Si on tente de donner la valeur 536124 à à la Référence produit
d’une vente, cela provoquera une erreur !
Contrainte d’intégrité référentielle
Elle est définie par trois règles :
- une clé étrangère doit être une valeur qui fait partie des valeurs de clé primaire de la relation à laquelle elle se réfère
- un enregistrement d’une relation ne peut pas être supprimé s’il possède des enregistrements liés
- la clé primaire d’un enregistrement d’une relation ne peut pas être modifié s’il possède des enregistrements liés
Sources :
http://www.ai.univ-paris8.fr/~lysop/bd/seance4-ModeleRel.pdf
https://fr.wikipedia.org/wiki/Base_de_données_relationnelle
https://openclassrooms.com/courses/initiez-vous-a-lalgebre-relationnelle-avec-le-langage-sql/comprenez-limportance-des-cles
https://pixees.fr/informatiquelycee/n_site/nsi_term_bd_rela.html