• Aucun résultat trouvé

9.2.4

Abstraction des bases de données

L’algèbre relationnelle, théorie inventée en 1970, est une théorie mathématique, proche de la théorie des ensembles, qui définit les opérations pouvant être effectuées sur des relations (ensemble de n-uplets). C’est cette théorie qui est le cœur des logiciels de base de données1, bien qu’elle n’en soit qu’une abstraction. Dans ce cours, nous verrons les requêtes dans des bases de données à la fois d’un point de vue pratique (SQL) et d’un point de vue théorique (opérations en algèbre relationnelle).

9.3

Vocabulaire des bases de données

9.3.1

Modélisation en tableau

Le modèle utilisé est très simple : c’est celui d’un tableau à deux dimensions. Celui-ci se recontre souvent lorsque l’on traite de données, par exemple :

— un répertoire (nom, téléphone, adresse, ...) — une fiche de bibliothèque (auteur, titre, année,...)

— un carnet de commande (client, article, quantité, date, prix,...)

On représente ces données dans un tableau, par exemple dans un tableur. Par convention, dans ce cours, les données d’un élément (une fiche de bibliothèque, une commande, un individu du répertoire) seront sur une même ligne, les colonnes donnant les différents attributs (auteur, titre, année, par exemple). Voici un exemple dont on se servira tout au long de ce cours.

Table eleve

prenom nom filiere numero lycee_origine note_bac Mathilde Dufour PCSI 2 Calmette 18

Léa Dupond MPSI 2 Massena 14

Paul Dugommier PCSI 1 Massena 12 Mathilde Dugommier MPSI 1 Calmette 15 Clément Durand PCSI 1 Parc Imperial 13

9.3.2

Vocabulaire

Attributs. Les différents titres de colonnes sont appelés attributs. On notera formellement A1, A2, · · · , Ap les attri-

buts. Les attributs forment un ensemble : il n’y a pas d’attribut en double. L’ordre des attributs n’est pas fixé : on ne parle pas du premier attribut mais de l’attribut nom (par exemple). La table précédente présente 6 attributs. Domaine. L’ensemble des valeurs que peut prendre un attribut A est son domaine Dom(A). Par exemple, pour la table ci-dessus, quatre attributs peuvent avoir pour domaine des chaînes de caractères, mais on peut imaginer que le domaine des classes est réduit à l’ensemble des sigles dénotant une filière de classe préparatoire (MPSI,PCSI, BCPST, PSI...), le numéro est un entier, et la note du bac un flottant (qu’on peut imposer dans l’intervalle [0, 20] avec éventuellement un certain nombre de chiffres significatifs...). Tout cela a été fixé à la création de la base, et ne va donc pas nous concerner dans nos requêtes de recherche.

Schéma relationnel. On appelle schéma relationnel un p-uplet d’attributs, vérifiant toujours la contrainte que les attributs sont distincts deux à deux. On notera S dans ce cours un schéma relationnel.

Tuple. Chaque ligne s’appelle un p-uplet (ou tuple en anglais). C’est donc un élément de Dom(A1) × Dom(A2) ×

· · · × Dom(Ap). En fait, puisque l’ordre des attributs n’est pas fixé, une ligne est plutôt une fonction

` : {A1, . . . , Ap} −→ Dom(A1) ∪ Dom(A2) ∪ · · · ∪ Dom(Ap)

avec comme contrainte le fait que `(Ai) ∈ Dom(Ai). Comme il est plus facile de parler du tuple (Mathilde, Dufour,

PCSI, 2, Calmette, 18) que de l’application qui a chacun des attributs de la table associe sa valeur, on sacrifiera un peu à la rigueur mathématique ici.

Relation. On appelle relation (ou table) un ensemble fini de p-uplets de Dom(A1) × · · · ∪ × Dom(Ap), qu’on notera

souvent R dans ce cours. Pour préciser que la relation est associée au schéma relationnel S, on notera R(S). Les éléments de R(S) (les lignes dans le tableau ci-dessus) sont appelés valeurs ou enregistrements.

9.3.3

Contraintes

On a déja dit qu’il n’y avait pas d’attribut en double. Il n’en est en effet pas question, ils risqueraient d’être affectés de valeurs différentes dans des tuples. Pour t un tuple de R(S), on note t[Ai] la composante du couple associée à

l’attribut Ai. Par extension, si X = (B1, . . . , Bn) ⊆ S, on note t[X] le n-uplet (t[B1], . . . , t[Bn])

Définition 9.1. Dans une relation R(S), les enregistrements forment un ensemble. Ceci a deux implications :

— Visuellement, on ne peut avoir deux lignes égales dans le tableau (ce qui serait d’ailleurs synonyme de redondance des données). Ceci correspond à l’aspect fonctionnel des tuples : avec S = {A1, . . . , Ap}, si t[A1, . . . , Ap] =

t0[A1, . . . , Ap] alors t = t0. Une autre caractérisation est que deux enregistrements doivent différer d’au moins un

attribut.

— L’ordre des lignes n’est pas fixé. Bien entendu une présentation des données dans un tableau aura un ordre des attributs et un ordre des tuple mais ces ordres de présentations sont du à l’ordre physique des données, ou le résultat d’un traitement particulier lors d’une requête. En particulier, il n’est pas garanti a priori par le SGBD.

9.3.4

Clés

Pour garantir la non-répétition des enregistrement, les bases de données réelles contiennent un concept de clé qui doit être pensé dès la conception des bases de données, et indiqué à la création. Ce concept a également son imporance lors de l’utilisation de relations multiples.

Définition 9.2. Une super-clé d’une relation R est un ensemble X d’attributs tel que ∀t, t0 ∈ R t[X] = t0[X] =⇒ (t = t0)

Ainsi, si les deux enregistrements sont égaux sur les attributs de X alors ils sont égaux partout. En raison de la contrainte d’ensemble pour les enregistrements, l’ensemble de tous les attributs est toujours une super-clé. Dans l’exemple ci-dessus {prenom} et {nom} ne sont pas des super-clés, contrairement à {nom, prenom}, par exemple. Définition 9.3. Une clé candidate d’une relation r est une super-clé minimale (pour l’inclusion).

K est donc une clé candidate si — K est une super-clé.

— Pour tout K0 inclus dans K, K0 n’est pas une super-clé. Dans l’exemple ci-dessus, {nom, prenom} est une clé candidate.

Proposition 9.4. Une super-clé qui ne contient qu’un seul attribut est toujours une clé candidate.

Par contre une telle super-clé n’existe pas toujours, il n’y en a pas dans le tableau Éleves ci-dessus. À Masséna, le numéro d’une classe (831, 833...) est une super-clé :

Table Classes classe filière numéro

831 MPSI 1 832 MPSI 2 833 PCSI 1 834 PCSI 2

Définition 9.5. Parmi les clés candidates on en choisit une : c’est la clé primaire.

Pour indiquer la clé primaire on souligne les attributs correspondants dans la table. Indiquer au système 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. Cette indication doit se faire à la création de la table.

Dans la pratique on évitera les clés primaires qui ne seraient primaires que « par accident » : on pourrait insérer des données supplémentaires qui feraient perdre le caractère primaire des clés (en pratique, le serveur interdira le rajout