Une erreur hélas très courante est de désigner par le terme relation un lien entre deux tables, comme par exemple une contrainte d'intégrité référentielle ou une jointure. Mais d'où vient cette confusion ?
Les bases de données relationnelles reposent sur l'algèbre relationnelle inventée dans les années 70 par Frank Edgar Codd alors chercheur chez IBM. L'algèbre relationnelle est une branche des mathématique proposant des objets porteurs de données dits "relation" associés à des opérations (union, intersection, différence, jointure...).
Une relation au sens mathématique du terme est un objet conteneur de données qui est caractérisé par :
- un nom, par exemple la relation "client", la relation "commande", la relation "automobile", la relation "employé"...
- un ensemble d'attributs ayant chacun un nom et un domaine, par exemple le nom de famille, la date de naissance, le matricule, le n° de sécurité sociale pour une relation "employé"
- une clef, c'est à dire un ensemble d'attributs dont les valeurs sont toujours distinctes de ligne en ligne afin de retrouver une ligne unique au sein de la relation. Par exemple le matricule pour la relation employé, la marque + le modèle pour la relation automobile.
Notons que le domaine exprime l'ensemble des valeurs que peut prendre un attribut. Par exemple de 0 à 100 pour un attribut exprimant un pourcentage, supérieur ou égal à 0 pour un prix, combinaison des lettres de A à Z pour un nom, etc...
Au niveau de la base de données, une relation est traduite en table.
Nous pouvons dire donc que :
RELATION = TABLE !
Une erreur commune est de penser que relation signifie lien entre une table et une autre.
En fait cette erreur très commune vient de la traduction du terme association. En effet dans les travaux de Peter Chen, père de la conception des modèles relationnels, on trouve un article fondateur intitulé : "The Entity Relationship Model - Toward A Unified View of Data" visible à http://www.csc.lsu.edu/~chen/pdf/erd-5-pages.pdf.
Chen propose de modéliser les bases de données relationnelles à l'aide d'association (qui est la traduction de relationship). C'est là que vient l'erreur, savamment entretenue depuis de nombreuses années par des articles plus ou moins corrects...
Et la plupart des jeunes développeurs parlent malheureusement de relations en lieu et place de la notion de contrainte d'intégrité référentielles qui renforce la notion de clef étrangère qui sont les outils pour lier les relations (tables) entres elles par des liens sémantiques.
Exemple : client (relation) |===| passe (association) |===| commande (relation).
Désormais, sachez causer relationnel !
---
Frédéric BROUARD, Spécialiste modélisation, bases de données, optimisation, langage SQL.
Le site sur le langage SQL et les S.G.B.D. relationnels : http://sqlpro.developpez.com/
Expert SQL Server http://www.sqlspot.com : audit, optimisation, tuning, formation
* * * * * Enseignant au CNAM PACA et à l'ISEN à Toulon * * * * *
Vous devez être identifié pour poster un commentaire.
Copyright © 2000-2012 - www.developpez.com