Outils pour utilisateurs

Outils du site


nsi:terminales:bdd_relationnelle

Base de données relationnelles

Fiche à imprimer, pour ce cours et le précédent

Il existe plusieurs modèles de base de données. Nous allons étudier le modèle relationnel qui domine de loin.

Le modèle relationnel est mis au point par Edgar Franck Codd en 1970.

Tables

Une BdD relationnelle est constituée de relationson dit souvent tables au lieu de relations – qui sont comme nos fichiers .csv.

Reprenons l'exemple vu dans l'exercice. Nous avions deux tables correspondant à deux fichiers, films.csv et actors.csv.

table FILMS

Réalisateur Titre Titre français Année
ALLEN Lewis Unseen Invisible meurtrier 1944
ALTMAN Robert Thieves like us Nous sommes tous des voleurs 1974

table ACTEURS

Nom Prénom Naissance
Menjou Adolph 1925
Swayze Patrick 1971

Chacune de ses tables liste des entités :

  • 1 ligne = 1 film dans le premier,
  • 1 ligne = 1 acteur dans le second.

En l'état, dans le fichier films.csv, chaque film contient une liste d'acteurs ce qui est une mauvaise façon de procéder – problème de doublons et de cohérence.

Il est préférable de traiter à part ce lien entre les deux tables. On parle d'association.

Représentation graphique des entités / associations

Utilisation d'un outil graphique : Mocodo

Allez sur le site Mocodo qui permet de représenter graphiquement l'organisation d'une base de données.

Notre but n'est pas d'apprendre les subtilités de Mocodo. Nous utilisons l'outil parce qu'il est facile à prendre en main et produit de bonnes illustrations. Je ne demanderai jamais en devoir de faire un diagramme Mocodo.

À faire :Faites un copier-coller du code suivant dans Mocodo et visualisez le graphique produit.

% Films - acteurs - tout ce qui suit % est un commentaire
FILM:Titre original, Réalisateur, Titre français, année, Couleur/NB, Année, Pays
JOUE DANS, 0n> FILM, 0n ACTEUR
ACTEUR:Nom Prénom, année naissance

Dans ce graphique, les cadres FILM et ACTEUR sont des entités et JOUE DANS est une association.

FILM et ACTEUR donnent lieu chacun à une table. Nous verrons ensuite que l'association JOUE DANS nécessite également une table. Cela correspond à extraire de films.csv les liens vers les acteurs et à les placer dans un fichier à part.

Clés primaires

Dans le diagramme précédent, certains éléments sont soulignés. Ce sont les clés primaires. Dans une table, une valeur de clé primaire est unique.

Par exemple le titre original d'un film est sa clé primaire. Cela veut dire que le film est identifié de façon unique par son titre original ou dit autrement qu'il ne peut pas y avoir deux films avec le même titre original. C'est un problème !

À faire : Faites un copier-coller du code suivant dans Mocodo et constatez la différence.

% Films - acteurs avec identifiants
FILM:Id Film, Titre original, Réalisateur, Titre français, année,   Couleur/NB, Année, Pays
JOUE DANS, 0n> FILM, 0n ACTEUR
ACTEUR: Id Acteur, Nom, Prénom, année naissance

Dans ce graphique, la pointe de la flèche ne sert qu'à dire dans quel sens il faut comprendre la déclaration JOUE DANS. S'il n'y a pas d'ambiguïté et on pourrait supprimer la pointe de flèche qui n'aura de toute façon aucun effet dans l'organisation de la base de données.

Cardinalité

Vous pouvez voir des 0,n ici et là. Ce sont des cardinalités.

  • À gauche, côté FILM, 0,n se comprend par : un même film peut être lié à plusieurs acteurs (n) ou éventuellement aucun (0),
  • À droite, côté ACTEUR, 0,n se comprend par : un même acteur peut être lié à plusieurs films (n) ou éventuellement aucun (0)

Attributs dans une association

Une association peut être plus qu'un simple lien, elle peut contenir des attributs. Par exemple, quand un acteur joue dans un film, il a un rôle et un temps d'apparition à l'écran. Ces deux attributs sont liés à l'association FILM - ACTEUR.

À faire : Faites un copier-coller du code suivant dans Mocodo et constatez la différence.

% Films - acteurs avec attribut dans l'association 
FILM:Id Film, Titre original, Réalisateur, Titre français, année, Couleur/NB, Année, Pays
JOUE DANS, 0n> FILM, 0n ACTEUR:Temps d'apparition, Rôle
ACTEUR: Id Acteur, Nom, Prénom, année naissance

Cela n'est pas évident ici, mais en l'état une association est liée à une paire (Id Film, Id Acteur) de sorte qu'il ne sera pas possible de lié plusieurs fois un même acteur à un même film – acteur jouant différents rôles. Il faudra modifier un peu l'organisation si on veut que ce soit possible.

Exercice : ajout d'une entité RÉALISATEUR

On souhaite consacrer une table pour les informations concernant les réalisateurs.

À faire : Dessinez un schéma représentant cette nouvelle situation.

Pour vous aider, une base à compléter sur Mocodo - notez que Réalisateur a été enlevé de FILM.

Le : dans le code ci-dessous sert à passer une colonne, chaque élément étant aligné sur une grille.
FILM:Id Film, Titre original, Titre français, année, Couleur/NB, Année, Pays
JOUE DANS, 0n> FILM, 0n ACTEUR:Temps d'apparition, Rôle
ACTEUR: Id Acteur, Nom, Prénom, année naissance

:
ASSO, 0n FILM, 0n TABLE
TABLE:attribut 1, attribut 2

À faire : En réfléchissant, on se dit que les réalisateurs sont souvent des acteurs. Proposez une amélioration.

Tables

Sur Mocodo, vous pouvez voir une liste indiquant les tables correspondant à un graphique donné.


FILM ( Id Film, Titre original, Réalisateur, Titre français, année, Couleur/NB, Année, Pays )

JOUE DANS ( Id Film, Id Acteur, Temps d'apparition, Rôle )

ACTEUR ( Id Acteur, Nom, Prénom, année naissance )

Ce sont les tables nécessaires pour la base de données correspondant à ce diagramme entité - association. Il faut donc une table pour l'association JOUE DANS. C'est le cas quand les cardinalité sont en n des deux côtés.

Clé primaire

Elles sont indiquées en souligné.

  • un item de FILM est identifié par Id Film
  • un item de ACTEUR est identifié par Id Acteur
  • un item de JOUE DANS est identifié par la paire (Id Film, Id Acteur)

On voit donc qu'il ne peut pas y avoir deux items de JOUE DANS associé à une même paire film – acteur.

Clé étrangère

Id Film est défini dans FILM ; Id Acteur est défini dans ACTEUR.

L'association JOUE DANS utilise Id Film et Id Acteur pour faire son lien mais ces attributs sont empruntés aux deux autres tables. On parle de clé étrangère.

Cette idée souligne la nécessité d'une cohérence :

  • On ne peut pas créer une association JOUE DANS avec un Id Film inexistant dans FILM,
  • on ne peut pas supprimer un film si son id est présent dans JOUE DANS.

Exercice : ajout d'une entité PAYS

On souhaite placez les pays dans une entité à part.

  • Cette entité contiendra les attributs : Id Pays, Nom complet, Abréviation
  • Chaque film et chaque artiste pourra être associé à 1 ou plusieurs pays.

À faire : Faites les modifications.

Exercice : trafic aérien

Une base de donnée concerne le trafic aérien. On y trouve :

  • des avions : modèle, année de mise en service, compagnie propriétaire
  • des compagnie aériennes : nom, chiffre d'affaire
  • des aéroports : nom, pays, latitude, longitude
  • des vols : nombre de passagers, avion, aéroport départ, date départ, aéroport d'arrivée, date arrivée

À faire : Faites le diagramme entités / associations pour cette base de données.
Réfléchissez bien à la cardinalité des associations.

Exercice : bibliothèque

Une base de donnée concerne l'utilisation des livres d'une bibliothèque.

  • Les livres ont un titre, une année d'édition, un éditeur, un auteur, un résumé, un code ISBN ;
  • Les auteurs ont un nom, prénom, une date de naissance, une biographie ;
  • Les éditeurs ont un nom, un siège social, une adresse ;
  • Les usagers de la bibliothèque ont un nom, prénom, numéro de téléphone, adresse postale, adresse mail
  • Les usagers empruntent des livres. Ces emprunts ont une date d'emprunt et une date de retour s'ils ont été rendus.

À faire : Faites le diagramme entités / associations pour cette base de données.
Réfléchissez bien à la cardinalité des associations.

nsi/terminales/bdd_relationnelle.txt · Dernière modification : de goupillwiki