Bonsoir,
Envoyé par
pacmann
Pour moi, j'aurai dit que la clause JOIN, c'est la définition de la relation.
Alors que la clause WHERE est une définition de sous-ensemble.
Tout d’abord, pour Codd, une relation est un sous-ensemble (Cf. "A Relational Model of Data for Large Shared Data Banks”). Je traduis ce qu’il a écrit à ce sujet :
"Le terme de relation est utilisé ici dans son acception mathématique. Étant donnés les ensembles S1, S2, ..., Sn (non nécessairement distincts), R est une relation sur ces n ensembles si c’est un ensemble de n-uplets, le 1er élément de chacun d’eux tirant sa valeur de S1, le 2e de S2, et ainsi de suite (de manière plus concise, R est un sous-ensemble du produit cartésien S1 X S2 X ... X Sn). On fera référence à Sj comme étant le jième domaine de R... De manière plus concise, R est un sous-ensemble du produit cartésien S1 X S2 X ... X Sn".
Concernant la clause WHERE et pour changer un peu de référence, je cite Georges Gardarin ("Bases de données. Les systèmes et leurs langages". (Eyrolles, 1988)) :
La restriction de la relation R par une qualification Q est une relation R’ de même schéma, dont les tuples sont ceux de R satisfaisant la qualification Q.
Ainsi, quand vous dites que la clause WHERE est une définition de sous-ensemble, je suppose que cette clause représente pour vous la qualification Q au sens de Gardarin, c'est-à-dire une conjonction de qualifications (ou conditions) élémentaires : Q1 ET Q2 ET ... ET Qn.
Conceptuellement parlant, je pense ne pas trahir la pensée de Don Chamberlin (un des pères de SQL), en disant que le résultat d’un FROM est une valeur de table qui devient un opérande pour WHERE, qui pond à son tour une valeur de table qui servira pour la projection finale (SELECT col1, col2, ...). WHERE est en fait le pendant de l’opérateur RESTRICT (ou θ-RESTRICT, ou θ-SELECT, etc.) de la théorie relationnelle, laquelle adhère totalement au principe de fermeture, selon lequel le résultat d’une opération relationnelle est toujours une relation. Le résultat d’un FROM, d’un WHERE, d’un SELECT n’est pas forcément toujours une relation et c’est bien malheureux car alors la fermeture chancelle, mais ceci est une autre histoire...
Partager