
CPGE TSI – Lycée P.-P. Riquet – St-Orens de Gameville - 4 -
C'est donc un élément de Dom(A1) × Dom(A2) × Dom(A3) ×… L'ensemble des n-uplets de la table constitue la relation.
Deux n-uplets de la même relation diffèrent au moins sur un attribut.
Si t est le n-uplet (Les 400 coups, F. Truffaut, J.-P. Léaud), on note t[Réalisateur, Acteur] = (F. Truffaut, J.-P.
Léaud), t[Titre] = (Les 400 coups) et ainsi de suite. On peut aussi noter t.Titre = Les 400 coups.
• Une base de données est constituée d’un ensemble de relations R(S), chacune associée à son schéma de relation S.
2/ Clé primaire
• Pour une relation R(S), une clé est le plus petit ensemble d'attributs de R(S) qui permet de distinguer 2 n-uplets.
Par exemple, Titre, Réalisateur ou (Titre, Réalisateur) ne sont pas des clés de la relation FILM(Titre, Réalisateur,
Acteur). Par contre, Acteur est une clé, tant qu'on ne rajoute pas un autre film d'un des 4 acteurs !
Ex : Donner une clé pour la relation suivante :
• Une clé primaire est simplement un choix d'une clé.
Pour l'indiquer, on souligne les attributs correspondants dans la table. On la nomme souvent id, ce qui a été fait dans
quatre des cinq tables de la base de données de la bibliothèque p.2. Pour la table Emprunts, c'est le triplet (qui, quoi,
date) qui peut servir de clé primaire.
• Indiquer au SGBD une clé primaire pour chaque table permet une indexation des données à l'aide de cette clé, ce qui
renforce l'efficacité des procédures d'interrogation de la table. En effet, une clé primaire A permet d'identifier un n-
uplet t uniquement par la donnée de t.A.
Grâce à cela, on pourra créer des liens entre plusieurs relations.
3/ Comment interroger une base de données ?
• Les bases de données sont interrogées en utilisant comme langage le "calcul relationnel".
Le calcul relationnel s’appuie sur des noms qui représentent les relations comme FILM ou SEANCE, des entrées de
ces relations comme Star Wars, des variables comme ti, h, et des symboles logiques, (et), (ou), (non),
(implique), (existe), (pour tout). À partir de ces ingrédients, des formules logiques, ou "requêtes", peuvent être
construites telles que :
{res(s, h)| ti, r ; (FILM(ti, r, "Humphrey Bogart") SEANCE(ti, s, h))}
qui se lit :
"Donnez-moi les résultats couples (salle s, heure h) pour lesquels il existe un titre ti et un réalisateur r tels que le n-uplet
(ti, r, "Humphrey Bogart") se trouve dans la relation FILM, et le n-uplet (ti, s, h) dans SEANCE".
Les variables s et h sont dites libres, car on n'impose pas leur valeur : ce sont elles que l'auteur de la requête cherche à
connaître. On peut donc lire plus clairement : "Où et à quelle heure puis-je voir un film avec Humphrey Bogart ?".
• En pratique, les machines utilisent le langage SQL (pour Structured Query Language) qui exprime différemment les
mêmes questions. Par exemple la question précédente s’exprime en requête SQL comme :
SELECT Salle, Heure
FROM FILM ⋈ SEANCE
WHERE FILM.Titre = SEANCE.Titre AND Acteur = "Humphrey Bogart"
Que l'utilisateur de la base de données s’exprime en français ou qu’il utilise une interface graphique, le SGBD
transforme sa question en requête SQL.