Envoyé par
wang_xue
Je n'ai pas compris le mot relvar
Relvar est un terme qui est au coeur de la théorie relationnelle mais qui est absent du langage SQL. Pour l'expliquer, je partirai des fondements, mais sans être rigoureux pour ne pas vous faire fuir. Dans un programme, vous pouvez par exemple déclarer une variable Montant, de type entier :
Int Montant ;
et lui affecter une valeur, par exemple :
Montant = 12000 ;
Vous noterez bien que Montant n’est pas une valeur, mais une variable qui accueille à un moment donné la valeur 12000 laquelle est immuable. Ensuite, quand votre programme exécute par exemple l’instruction :
Montant = Montant + 2000
alors la variable Montant accueille maintenant la valeur 14000 à la place de la valeur précédente 12000.
Ce qu’il faut retenir, c’est que des valeurs comme 12000 ou 14000 sont immuables, tandis que, par définition, la variable Montant est un lieu d’accueil pour ces valeurs, chacune à son tour, l'une chassant l'autre.
Passons à SQL. Quand vous exécutez l’instruction :
CREATE TABLE R (A Integer, B Char(4), PRIMARY KEY (A)) ;
Alors vous définissez une variable de type relation (en abrégé : relvar) que vous nommez R. Cette déclaration de variable est conservée dans le catalogue du SGBDR, ce qui permet d’y faire à nouveau référence ultérieurement. R héberge une valeur de type relation (ou plus simplement relation), ce que l’on peut illustrer à l’aide d’une image :
La relvar R héberge ici une valeur qui est une relation de degré 2 et de cardinalité 0. Le type de cette relation (qui est aussi celui de la relvar) est le suivant :
RELATION {A Integer, B Char(4)}
Quand vous exécutez ensuite une instruction du genre :
INSERT INTO R (A, B) VALUES (1, "ABCD") ;
Alors la relvar R accueille une nouvelle relation constituée d’un seul tuple, ce que l’on peut illustrer à l’aide d’une image :
R héberge maintenant une autre valeur qui est une relation de degré 2, de cardinalité 1 et du même type que précédemment.
Quand vous exécutez ensuite l’instruction
INSERT INTO R (A, B) VALUES (5, "EFGH") ;
Alors la relvar R accueille une nouvelle relation, constituée de deux tuples, ce qui peut être illustré à l’aide d’une nouvelle image :
R héberge maintenant une valeur qui est une relation de degré 2 et de cardinalité 2, toujours du même type.
Puis, si vous exécutez l’instruction
UPDATE R SET B = "EFGI" WHERE B = "EFGH" ;
la relvar R héberge à nouveau une autre relation, toujours du même type :
Puis, si vous exécutez l’instruction
DELETE FROM R ;
la relvar R héberge à nouveau la relation initiale :
Etc.
Partager