Nous allons montrer les limites de la représentation d’informations complexes dans des structures de données plates et introduire le vocabulaire des schémas relationnels.
I. Limites des structures plates
1) Exemple : représentation d’un jeu multi-joueurs
Dans un jeu multi-joueurs, chaque joueur possède un pseudonyme, appartient à un peuple et à une alliance. Il dirige par ailleurs un ou plusieurs villages, qui ont chacun un nom qu’il choisit ; ces villages possèdent, entre autres choses, une certaine population et ont des coordonnées spatiales.
Une représentation en Python pourrait consister en un dictionnaire où les clés sont les joueurs et leurs valeurs associées sont une liste contenant leur peuple, leur alliance et une liste de villages, ceux-ci étant eux-mêmes codés par une liste. Par exemple :
2) Les limites de la représentation
Le choix de cette représentation n’est pas anodin : il est facile de déterminer l’alliance à laquelle appartient un joueur ou la population totale des villages qu’il contrôle :
Cependant, il est plus malaisé d’extraire certaines informations comme la population totale des villages contrôlés par un peuple :
Dans cette représentation de données, dite plate, une appartenance est privilégiée par rapport aux autres (l’appartenance à une alliance, à un peuple, à un joueur, etc.).
Or, on peut être amené à effectuer des recherches indépendamment de tout lien. Un nouveau modèle s’avère donc nécessaire dans lequel les données sont représentées dans plusieurs tables, sans hiérarchie particulière, et liées entre elles.
II. Vocabulaire des schémas relationnels
Un attribut est un couple (nom, domaine) où le nom (représentant un titre de colonne) prend ses valeurs dans un domaine.
Un domaine est donc un ensemble de valeurs que peut prendre une donnée, à rapprocher de la notion de type en Python, par exemple des entiers (ensemble noté N), des chaînes de caractères (noté S), des dates (noté D), des booléens (noté B), etc.
On appelle schéma d’une relation un ensemble ordonné d’attributs de la forme S=(A1, A2, …, An), où les Ai sont des attributs deux à deux distincts, le schéma précisant en général les domaines de chaque attribut.
Une table, ou relation, de schéma S=(A1, A2, …, An) est un ensemble fini de n-uplets (x1, …, xn) où les xi prennent leurs valeurs dans Ai.
Les éléments d’une table R sont appelés les enregistrements de la relation. Leur nombre (fini) est appelé le cardinal de R et est noté #R.
III. Exemple de schéma
Représentons quelques données relatives aux élèves d’une classe de Terminale.
Le schéma de cette relation est :
Il est indépendant de la notion de relation qui lui est associée, qui est représentée par une table (on parlera indifféremment de relation ou de table dans la suite).
La relation R comporte 3 enregistrements (ou valeurs), on a donc #R = 3.
Mot-clé
Lorsqu’une base de données comporte plusieurs tables, l’ensemble des schémas de ces relations s’appelle le schéma relationnel de la base de données.