Bonsoir,
Envoyé par
Kakashisenc
Sql s'est construit sur de l'algebre relationnel
Faux ! Historiquement les choses se sont passées ainsi :
En 1971, Ted Codd (père du modèle relationnel de données) a proposé ALPHA, langage calé sur le calcul relationnel (implémentation du calcul des prédicats). Voici le résumé qu’il donne dans son article A Data Base Sublanguage Founded on the Relational Calculus :
« Three principal types of language for data base manipulation are identified: the low-level, procedure-oriented (typified by the CODASYL-proposed DML), the intermediate level, algebraic (typified by the Project MAC MacAIMS language), and the high level, relational calculus-based data sublanguage, an example of which is described in this paper. The language description is informal and stresses concepts and principles. Following this, arguments are presented for the superiority of the calculus-based type of data base sub-language over the algebraic, and for the algebraic over the low-level procedural. These arguments are particularly relevant to the questions of inter-system compatibility and standardization. »
Ainsi, pour Codd le calcul relationnel est supérieur à l’algèbre relationnelle car le calcul permet de déclarer le QUOI de façon non procédurale, c'est-à-dire en une fois, en vertu de quoi l’optimiseur d’un SGBD pourra estimer la meilleure séquence des opérations à effectuer sous le capot pour obtenir le résultat dans les meilleurs délais. En revanche, l’algèbre étant procédurale, le processus d’optimisation est du ressort de l’utilisateur, ce qui n’est pas idéal, car car telle séquence d'opérations peut avoir de bonnes performances aujourd’hui et catastrophiques le lendemain, nécessitant une intervention manuelle (voyez Pénélope !). Le seul avantage qu’offre l’algèbre est que l’on n’a pas à utiliser les quantificateurs nécessaires au calcul (∀, ∃). Calcul et algèbre sont décrits dans l’article de Codd Relational completeness of data base sublanguages (1972).
En 1973, dans leur article Specifying Queries as Relational Expressions: The SQUARE Data Sublanguage des collègues de Codd chez IBM, Raymond Boyce (mort trop tôt en 1974 d’une rupture d’anévrisme) et Donald Chamberlin proposèrent le langage SQUARE, non algébrique (pour les raisons évoquées ci-dessus), mais orienté ALPHA, débarrassé toutefois des quantificateurs, des variables liées et autres joyeusetés du calcul (tandis qu’à l’époque, le langage QUEL de M. Stonebraker et E. Wong reste conforme au calcul). Je cite :
« SQUARE is intended for use by the nonprogramming professional »
En même temps, Boyce et Chamberlin proposèrent SEQUEL, je cite à nouveau :
« An unsophisticated user would feel more comfortable with an English-like notation. Therefore, a block-structured English-keyword syntax, based like SQUARE on the concept of mapping, has been developed. This syntax, called SEQUEL, is described elsewhere. A direct translation of most SQUARE queries to SEQUEL is possible, as illustrated below by several examples. A prototype implementation of the SEQUEL language is now operational at the IBM Research Laboratory in San Jose, California. »
Vous retrouverez tout ça dans l’article rafraîchi et paru en 1975 (Specifying Queries as Relational Expressions: The SQUARE Data Sublanguage). Plus tard, pour des problèmes de copyright, SEQUEL a perdu ses voyelles pour devenir SQL, mais ça c’est une autre histoire...
Vous aurez remarqué que vos réponses à l’exercice sont déclaratives et non pas procédurales, votre langage mime donc SEQUEL, lequel, comme on vient de le voir, n’a manifestement pas été conçu pour être un langage algébrique.
CQFD
Partager