Structure
Les bases de données relationnelles sont structurées à partir des notions de clef primaires et de clef étrangère. Ces notions se retrouvent à la création des bases de données lors de la définition des relations.
Voici la commande SQL permettant de créer la relation
LesRealisateurs
vue précédemment :
CREATE TABLE LesRealisateurs
(film_id int, realisateur text,
CONSTRAINT PK_realisateurs PRIMARY KEY (film_id),
CONSTRAINT FK_id FOREIGN KEY (film_id) REFERENCES LesFilms(film_id));
Cette commande pose la structure de la relation, sans y insérer de données. Cependant cette commande imposera ensuite plusieurs types de contraintes :
- Des contraintes référentielles (la clef étrangère fait référenceà une clef primaire)
- Des contraintes de domaine (ici le
film_id
est un entier et le réalisateur
est un texte)
- Des contraintes relationnelles (contraintes liées au modèle relationnel, vues précédemment)
L'ensemble des ces contraintes permet de maintenir l'intégrité de la structure relationnelle de la base.
Relever dans la commande SQL précédente:
- La commande qui garanti l'unicité de la clef primaire
- La commande qui garanti la référence de la clef secondaire
- Les domaines des deux attributs de la relation
SOLUTION
Nous constatons ici qu'il est essentiel de séparer la
structure d'une base de données de son
contenu.
La structure est un ensemble de schémas relationnels qui respecte les contraintes du modèle relationnel.
Reprenons le schéma de base de données vu précédemment :
Relations :
- LesAnimaux(nomA, sexe, type, anNais, pays, noCage)
- LesMaladies(nomA, nomM)
- LesCages(noCage, fonction, allée)
Références
- LesMaladies[nomA] est pris dans LesAnimaux[nomA]
- LesAnimaux[noCage] est pris dans LesCages[noCage]
Dans cette structure de base :
- Déterminer les deux contraintes référentielles
- Proposer des contraintes de domaine pour les différents attributs
- En s'inspirant de l'exemple ci-dessus, proposer la commande
SQL
permettant de créer la relation LesAnimaux
(vous pouvez la tester avec DbBrowser).
SOLUTION
Anomalies
L'ensemble des contraintes de
structure vues précédemment impose aux
données de respecter les règles mises en places dans la cadre du modèles relationnel.
Le système de gestion de bases de données (SGBD) veillera à faire respecter ces contraintes et signalera des anomalies en cas d'erreur. Son unique objectif est la
cohérence des données.
Les anomalies peuvent être :
- des redondances de données
- des anomalies d’insertion
- des anomalies de suppression
- des anomalies de mise à jour
Redondances de données
Apparition de données identiques dans la base de données
Anomalies d’insertion
Tentative d'insertion de données non conformes, soit pour une raison de domaine, soit pour un problème de clef
Anomalies de suppression
Tentative de suppression de données porteuses d'une clef primaire entraînant un incohérence référentielle sur une clef secondaire.
Anomalies de mise à jour
La modification d'une clef primaire peut entraîner un doublon, ou une rupture de contrainte référentielle avec une clef étrangère.
Vous trouverez ci dessous une structure de base de données avec l'ensemble des données présentes dans les relations (c'est bien sur une base "exemple", il n'y a que très peu de données)
Vous devez :
- Proposer sur papier 2 requêtes pour chaque catégories (insertion, suppression, mise à jour) générant une anomalie
- Récupérer ici la petite base de données correspondante
- Tester vos requêtes sur la base grâce à DbBrowser
SOLUTION
QCM d'entraînement