Tedd Codd a défini un opérateur de division dont on peut trouver la définition formelle donnée par Chris Date ici:
http://www.dbdebunk.com/page/page/772076.htm
Voici la traduction telle qu'elle est écrite dans Introduction aux bases de données (8ème édition):
Soient les relations A et B, ayant respectivement les en-têtes {X, Y} et {Y}, où X et Y peuvent être composites.
L'expression A DIVIDEBY B donne une relation dotée de l'en-tête {X} et d'un corps qui consiste en tous les n-uplets {X x} tel qu'un n-uplet {X x, Y y} apparaît dans A pour tout n-uplet {Y y} qui apparaît dans B.
Donc l'en-tête du diviseur est un sous-ensemble de l'en-tête du dividende, et le résultat de l'opération est une relation dont l'en-tête est égale à l'en-tête du diviseur, moins l'en-tête du dividende.
En supposant que votre opérateur DIVISION se comporte comme DIVIDEBY, pour trouver les invités qui ont participé à tous les repas, il suffirait de faire ceci:
R1. PROJECT(REPAS, DATE)
R2. DIVISION(REPAS, R1)
Partager