Formalisation du modèle de données relationnel

Le concept mathématique fondamental du modèle relationnel est la relation définie dans la théorie des ensembles, qui est un sous-ensemble d'un produit cartésien d'une liste de domaines. Cette relation dépendante de la théorie des ensembles donne son nom au modèle (ne pas le confondre avec le modèle entité-relation). Formellement, un domaine est un simple ensemble de valeurs. Par exemple un ensemble de nombres entiers est un domaine. Ainsi l'ensemble de chaînes de caractères de longueur 20 et les nombres réels sont des exemples de domaines.

Le produit cartésien des domaines D1, D2, ... Dk, écrits D1 × D2 × ... × Dk est l'ensemble de tous les k-tuples v1, v2, ... vk, tel que v1D1, v1D1, ... vkDk.

Par exemple, nous avons k=2, D1={0,1} et D2={a,b,c} quand D1 × D2 is {(0,a),(0,b),(0,c),(1,a),(1,b),(1,c)}.

Une relation est un sous-ensemble du produit cartésien d'un ou plusieurs domaines : RD1 × D2 × ... × Dk.

Par exemple {(0,a),(0,b),(1,a)} est une relation; c'est en fait un sous-ensemble de D1 × D2 mentionné ci-dessus.

Les membres d'une relation sont appelés tuples. Chaque relation d'un produit cartésien D1 × D2 × ... × Dkest dite arité k et est par conséquent un ensemble de k-tuples.

Une relation peut être considérée comme une table où chaque tuple est représenté par une ligne et chaque colonne correspond à une composante d'un tuple. Les noms de colonnes (appelés attributs) conduisent à la définition d'un schéma de relation (relation scheme).

Un schéma de relation R est un ensemble fini d'attributs A1, A2, ... Ak. Il y a un domaine Di, pour chaque attribut Ai, 1 <= i <= k, où les valeurs des attributs sont définies. Nous écrivons souvent un schéma de relation comme R(A1, A2, ... Ak).

Note

Un schéma de relation est juste une sorte de gabarit vu qu'une relation est une instance d'un schéma de relation. La relation consiste en tuples (et peut être vue comme une table); ce n'est pas le cas de son schéma.

Domaines contre données types

Nous avons souvent, dans la dernière section, utilisé le terme domaines. Rappelons qu'un domaine est un ensemble de valeurs (ex. l'ensemble des nombres entiers). En terme de système de bases de données nous parlons souvent de types de données au lieu de domaines. Quand nous définissons le contenu d'une table nous avons à prendre une décision sur les attributs à inclure et quelles sortes de données y seront stockées (en tant que valeurs d'attributs, donc). Par exemple les valeurs de SNAME de la table SUPPLIER seront des chaînes de caractères, et SNO stockera des entiers. Nous définissons ceci en assignant une donnée type pour chaque attribut. Le type de SNAME sera VARCHAR(20) (VARCHAR est un type SQL pour les chaînes de caractères), le type de SNO sera INTEGER. Chaque déclaration de type d'attribut correspond bien à un domaine : celui de SNAME est l'ensemble de toutes les chaînes de caractères de longueur <= 20, celui de SNO est l'ensemble de tous les nombres entiers.