IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Cours complet pour apprendre les différents types de bases de données et le langage SQL


précédentsommairesuivant

IV. Modèle relationnel

IV-A. Introduction

Proposé par E.F. Codd d'IBM en 1969, le modèle relationnel a fait l'objet d'un grand nombre de travaux de recherche qui, depuis le début des années 1980, ont débouché sur des produits commerciaux ou libres :

  • DB2 d'IBM, Oracle, Sybase, Access ou SQL-Server de Microsoft, PostgreSQL, MySQL…

Le succès du modèle relationnel est dû à :

  • sa simplicité pour l'utilisateur : une BD est vue comme un ensemble de tables ;
  • ses fondements théoriques : l'algèbre relationnelle et la logique des prédicats.

IV-B. Constitution d'une BD relationnelle

Une BD relationnelle est constituée par :

  • un ensemble de domaines ;
  • un ensemble de relations ;
  • un ensemble de contraintes d'intégrité.

IV-B-1. Domaines

Un domaine est un ensemble de valeurs atomiques.

On distingue :

  • les domaines prédéfinis :

    • l'ensemble des chaînes de caractères (texte),
    • l'ensemble des nombres entiers (entier),
    • l'ensemble des booléens :

      • booléen = {vrai, faux},
    • l'ensemble des dates…
  • les domaines définis :

    • en extension, c'est-à-dire en énumérant les valeurs :

      • couleur = {"rouge", "vert", "bleu", "jaune"},
    • en intention, c'est-à-dire en spécifiant la formule que doit vérifier chaque valeur :

      • mois = {m| m ∈ entier ⋀ 1 ≤ m ≤ 12}.

IV-B-2. Relations

Une relation R est un sous-ensemble du produit cartésien de n domaines D1, … , Dn :

  • R ∈ D1 x … x Dn

Une relation est définie par son nom, par son schéma et par son extension.

IV-B-2-a. Schéma d'une relation

Le schéma d'une relation définit les domaines sur lesquels elle est construite et donne un nom à ces domaines.

Nous noterons :

  • (A1: D1, …, An: Dn)

le schéma d'une relation où

  • Di est un nom de domaine ;
  • Ai est un nom d'attribut qui indique le rôle du domaine Di dans la relation ;
  • les noms d'attributs d'un même schéma doivent être tous différents.

Par exemple :

  • (nom: texte, âge: entier, marié: booléen)

est le schéma d'une relation :

  • construite sur les domaines texte, entier et booléen ;
  • qui peut représenter un ensemble de personnes décrites respectivement par leur nom, leur âge et leur état civil (marié ou non marié).

Il est souvent pratique de noter à la fois le nom d'une relation et son schéma. La notation :

  • R(A1: D1, …, An: Dn)

désignera une relation :

  • de nom R ;
  • et de schéma (A1: D1, …, An: Dn).

Lorsque l'indication des domaines n'est pas requise, un schéma de relation pourra être noté :

  • (A1, …, An)
IV-B-2-b. Extension d'une relation

L'extension d'une relation de schéma :

  • (A1: D1, …, An: Dn)

est un ensemble de n-uplets notés :

  • soit (v1, … , vn) (dans l'ordre du schéma) ;
  • soit {A1 = v1, … , An = vn} (dans un ordre quelconque).

et tels que :

  • v1 ∈ D1, …, vn ∈ Dn

L'extension d'une relation est variable au cours de la vie d'une BD.

Par exemple, une extension possible de la relation de schéma :

  • (nom: texte, age: entier, marié: booléen)

est :

  • {("Dupont", 36, vrai), ("Durand", 22, faux)}
IV-B-2-c. En résumé : anatomie d'une relation
Image non disponible
IV-B-2-d. Deux visions d'une relation

Une relation peut être vue sous deux formes :

  • tabulaire ;
  • prédicative.
IV-B-2-d-i. Vision tabulaire

Une relation :

  • R(A1: D1, …, An: Dn)

peut être vue comme :

  • une table de nom R ;
  • possédant n colonnes nommées A1, …, An ;
  • dont chaque ligne représente un n-uplet de l'extension de cette relation.

Par exemple :

personne

nom

âge

marié

Dupont

36

vrai

Durand

22

faux

IV-B-2-d-ii. Vision prédicative

À toute relation de schéma :

  • R(A1: D1, …, An: Dn)

il peut être associé un prédicat R tel que l'assertion R t est vraie si le n-uplet t appartient à l'extension de R et fausse sinon.

Par exemple, pour l'extension considérée, l'assertion :

  • personne("Dupont", 36, vrai)

est vraie.

IV-B-2-e. Valeurs nulles

Il peut arriver que certaines informations soient inconnues ou non pertinentes.

Par exemple, une conférence dont la date n'est pas encore fixée ou bien le nombre de couleurs pour un écran noir et blanc.

Pour représenter une telle absence d'information, on utilise une valeur particulière :

  • la valeur nulle que nous noterons _.

Par exemple, le triplet :

  • ("L'avenir des bases de données", "Paul Durand", _)

peut indiquer que la date de la conférence « L'avenir des bases de données », donnée par Paul Durand, n'est pas encore connue.

IV-B-2-f. Constituants d'une relation

Nous appellerons constituant d'une relation un sous-ensemble, éventuellement vide, des attributs de cette relation.

Par exemple, l'ensemble d'attributs {nom, âge} est un constituant de la relation personne.

IV-B-2-g. Entités, associations et clés

Dans le modèle relationnel :

  • les entités sont identifiées au travers des clés primaires ;
  • les associations sont décrites au moyen des clés étrangères.
IV-B-2-g-i. Clés candidates et clé primaire

Un constituant X est la clé candidate d'une relation R si :

  • pour chaque n-uplet de R, la valeur de X identifie de façon unique ce n-uplet ;
  • aucun attribut de X ne peut être supprimé sans détruire la propriété précédente.

Une relation peut avoir une ou plusieurs clés candidates : l'une est choisie comme clé primaire.

Soit, par exemple, la relation :

  • personne(nom, prénom, numss, pays)

numss est le numéro de sécurité sociale.

Si une personne est identifiée :

  • soit par son nom et son prénom (et donc qu'elle ne l'est pas par son nom seul ou son prénom seul),
  • soit par son numéro de sécurité sociale,

les clés candidates de la relation personne sont :

  • {nom, prénom}
  • numss

numss pourra être choisi comme clé primaire.

Par convention, dans le schéma d'une relation, on souligne les attributs de la clé primaire :

  • personne(nom, prénom, numss, pays)
IV-B-2-g-ii. Clés étrangères

Un constituant Y d'une relation R1 est une clé étrangère de R1 s'il existe une relation R2 possédant une clé primaire X et que Y a pour domaine l'ensemble des valeurs de X.

On dit que Y réfère la relation R2.

Soient par exemple les relations :

  • personne(nom, prénom, âge) ;
  • livre(cote, titre, nom_auteur, prénom_auteur).

Pour indiquer que l'auteur d'un livre est une personne de la BD, on déclare que le constituant :

  • {nom_auteur, prénom_auteur}

est une clé étrangère de la relation livre qui réfère la relation personne.

IV-B-3. Contraintes d'intégrité

Les contraintes d'intégrité d'une BD relationnelle peuvent s'exprimer par :

  • l'appartenance des valeurs d'attributs à des domaines ;
  • la définition des clés ;
  • la normalisation des relations ;
  • un ensemble d'assertions ;
  • des conditions associées aux opérations de mise à jour.

Concernant les clés, deux formes d'intégrité jouent un rôle important :

  • L'intégrité d'entité qui est vérifiée si les valeurs des attributs de la clé primaire ne sont pas nulles.
  • L'intégrité référentielle qui est vérifiée si chaque valeur d'une clé étrangère Y :

    • soit existe comme valeur de la clé primaire d'un n-uplet de la relation que Y réfère,
    • soit est nulle.

IV-C. Exemple : la BD plus8000

Cette BD concerne les premières ascensions des 14 sommets de plus de 8000 m.

Nous l'appellerons : plus8000.

IV-C-1. Quelques photos !

(photos extraites de Wikimedia Commons)

Image non disponible

Image non disponible

Image non disponible

IV-C-2. Les faits

On veut représenter les faits suivants :

  • Le nom, l'altitude, l'année de la 1re ascension de chaque sommet et l'orientation de la face (ou de l'arête) empruntée. Un sommet est identifié par son nom.
  • La localisation d'un sommet, c'est à dire le nom du ou des pays dans lequel il se trouve. Un sommet peut se trouver dans plusieurs pays quand il appartient à la frontière de chacun de ces pays.
  • Le nom, le prénom et le pays de chaque grimpeur ayant réalisé la 1re ascension d'un sommet de plus 8000 m. Un grimpeur est identifié par son nom et son prénom.
  • Le nom et le prénom du grimpeur et le nom du sommet gravi pour chaque 1re ascension.

Par exemple :

  • L'Everest a une altitude de 8848 m, sa 1re ascension a été réalisée par son arête SE, en 1953.
  • L'Everest est situé sur la frontière du Népal et de la Chine (Tibet).
  • Edmund Hillary est un grimpeur de Nouvelle-Zélande.
  • Tenzing Norgay est un grimpeur du Népal.
  • Edmund Hillary a réalisé la 1re ascension de l'Everest.
  • Tenzing Norgay a réalisé la 1re ascension de l'Everest.

IV-C-3. Domaines et relations

Domaine

 
Sélectionnez
1.
2.
3.
orientation =   {"N", "S", "O", "E", "NO", "SO", "NE", "SE"}
pays_himalayen = {"Chine", "Inde", "Népal", "Pakistan"}
pays = {"Afghanistan", "Afrique du Sud", "Albanie", ...}

Relations

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
sommet(nom_sommet: texte,
       altitude: entier
       année: entier,
       face: orientation)
localisation( nom_sommet: texte, pays: pays_himalayen)
grimpeur(nom: texte, prénom: texte, pays: pays)
ascension(nom_grimpeur: texte,
          prénom_grimpeur: texte,
          nom_sommet: orientation)

IV-C-4. Clés

Relation sommet(nom, altitude, année, face) :

  • un sommet est identifié par son nom : l'attribut nom est donc la clé primaire.

Relation localisation(nom_sommet, pays) :

  • un sommet peut être sur une ligne frontière et donc appartenir à plusieurs pays : le constituant {nom_sommet, pays} est donc la clé primaire
  • un sommet localisé doit être décrit dans la relation sommet : l'attribut nom_sommet est donc une clé étrangère qui réfère l'attribut nom de la relation sommet.

Relation grimpeur(nom_grimpeur, prénom_grimpeur, pays) :

  • un grimpeur est identifié par son nom et son prénom : le constituant {nom, prénom} est donc la clé primaire.

Relation gravir(nom_grimpeur, prénom_grimpeur, nom_sommet) :

  • plusieurs grimpeurs peuvent avoir réalisé la 1re ascension d'un sommet : le constituant {nom_grimpeur, prénom_grimpeur, nom_sommet} est donc la clé primaire.
  • un grimpeur ayant réalisé une ascension doit être décrit dans la relation grimpeur : le constituant {nom_grimpeur, prénom_grimpeur} est donc une clé étrangère qui réfère le constituant {nom, prénom} de la relation grimpeur.
  • un sommet sur lequel a été réalisée une ascension doit être décrit dans la relation sommet : l'attribut nom_sommet est donc une clé étrangère qui réfère l'attribut nom de la relation sommet.

IV-C-5. Vision tabulaire

localisation

nom_sommet

pays

Everest

Népal

Everest

Chine

Nanga Parbat

Pakistan

Broad Peak

Pakistan

Broad Peak

Chine

sommet

nom

altitude

année

face

Everest

8848

1953

SE

NangaParbat

8126

1953

N

Broad Peak

8047

1957

O

grimpeur

nom

prénom

pays

Hillary

Edmund

Nouvelle-Zélande

Norgay

Tensing

Népal

Bull

Hermann

Autriche

Schmuck

Marcus

Autriche

Wintersteller

Fritz

Autriche

Diemberger

Kurt

Autriche

ascension

nom_grimpeur

prénom_grimpeur

nom_sommet

Hillary

Edmund

Everest

Norgay

Tensing

Everest

Bull

Hermann

Nanga Parbat

Bull

Hermann

Broad Peak

Diemberger

Kurt

Broad Peak

Schmuck

Marcus

Broad Peak

Wintersteller

Fritz

Broad Peak

IV-C-6. Vision prédicative

L'extension de la relation sommet est formée de l'ensemble des quadruplets (x, y, z, t) exprimant le fait qu'il y a un sommet de nom x, d'altitude y dont la 1re ascension a été réalisée l'année z par la face t.

L'extension de la relation localisation est formée de l'ensemble des doublets (x, y) exprimant le fait que le sommet de nom x se trouve dans le pays de nom y.

L'extension de la relation grimpeur est formée de l'ensemble des triplets (x, y, z) exprimant le fait qu'il y a un grimpeur de nom x, de prénom y et de pays z.

L'extension de la relation ascension est formée de l'ensemble des triplets (x, y, z) exprimant le fait que le grimpeur de nom x et de prénom y a réalisé la 1re ascension du sommet z.

IV-C-7. Contraintes d'intégrité

Ce sont les contraintes autres que celles exprimées par l'appartenance à un domaine ou par une clé :

  • L'altitude d'un sommet doit être supérieure ou égale à 8000 mètres.
  • Tout sommet doit avoir été gravi par au moins un grimpeur.
  • Tout grimpeur doit avoir gravi au moins un sommet.
  • Tout sommet doit avoir une localisation.

précédentsommairesuivant