4 - Calcul relationnel
* Variable : nuplet
* Requête : { t / F (t) }
ensemble des nuplets t tels que F(t) est vraie
* Variable non quantifiée t : libre
quantifiée ∀x ou ∃x : liée
Exercice : exprimer en calcul relationnel chaque opération relationnelle
4 - Calcul relationnel
Atomes :
(i) R(s) où R est nom de relation et s variable - nuplet
(ii) s.A θ t.B
où s et t sont des variables nuplets,
A, attribut de la relation où s est défini,
B, attribut de la relation où t est défini,
θ, comparateur =, >, ≥, < , ≤, ≠
(iii) s.A θ c
où s est variable - nuplet,
A, attribut de la relation où s est défini
c, constante de même domaine que A
θ, comparateur =, >, ≥, < , ≤, ≠
4 - Calcul relationnel
Formules :
(i) Un atome est une formule
(ii) Si F est une formule
(F) et ¬F sont des formules
(iii) Si F et G sont des formules
F ^ G et F V G sont des formules
(iv) Si F est une formule où t est une variable libre alors
∃t F(t) et ∀t F(t) sont des formules
Calcul relationnel – Formules saines
Domaine de la formule {t / F(t)} :
Dom( F) : { valeurs } qui
* soit apparaissent comme constantes dans F(t),
* soit existent dans un nuplet quelconque des relations référencées
dans F(t)
Une formule est saine si :
(i) toutes les valeurs de son résultat appartiennent à son domaine
(ii) pour toute sous-formule de la forme ∃ s F1(s), la sous-formule est
vraie s'il existe un nuplet s dont les valeurs sont dans Dom(F1) tel que
F1(s) est vraie
(iii) pour toute sous-formule de la forme ∀s F1(s), la sous-formule est
vraie si F1(s) est vraie pour tous les nuplets s qui ont leurs valeurs dans
Dom(F1)
Chapitre 3
SQL
Histoire
Création SEQUEL 1978,
Normes : SQL en 1986 puis 89, SQL2 en 1992, SQL3 en 1999 puis 2003
Chaque SGBD a son propre dialecte évolutif et plus ou moins conforme à la norme en cours.
Conclusion pratique
Lorsqu'on utilise un SGBD il faut toujours se reporter à la documentation SQL correspondante.
Bonne pratique : si on cherche la portabilité, utiliser au maximum les formes normalisées des
phrases SQL.
Avertissement
Ce document présente des formes simples des phrases SQL les plus communément utilisées
sans viser à l'exhaustivité qui le rendrait illisible. Pour plus de détails et d'exhaustivité se
reporter à : SQL in a nutshell de KLINE Kevin, KLINE Daniel, BRAND Hunt ; 2 ème édition
traduite en français "SQL en concentré" édition O'Reilly, 690 pages .
LANGAGES COMMERCIAUX de BD
* définition et évolution du schéma logique
* interrogation de la base
* mise à jour des données
* maintien de la cohérence :
contraintes
transactions, validation/abandon
* schéma externe : vues, autorisations d'accès
* schéma physique : chemins d'accès rapides aux données,
index
SQL
Convention d'écriture de la grammaire
MAJUSCULES : mots réservés de SQL
minuscules : mots réécrits dans une autre règle ou
noms et valeurs de la base de données
(= mots terminaux non réécrits)
::= : "est réécrit"
[ ] : optionnel
/ : ou
{} : ensemble* : tous les attributs de la relation
SQL - Interrogation
select_de_base ::=
SELECT [ALL | DISTINCT] attributs_sélectionnés
FROM tables_sélectionnées
[WHERE prédicat ]
[ORDER BY spécification_tri ]
attributs_sélectionnés::= *| liste_attributs
tables_sélectionnées ::= nom_table [ [AS] var ] var-nuplet
prédicat::= [NOT] prédicat _de _base | prédicat_général
| prédicat_between | prédicat_in
| prédicat_like | prédicat_null
| prédicat_quantifié
| prédicat_exists
SQL - Interrogation
spécification_tri::= ORDER BY liste_spécif[ication]_élementair
spécif[ication]_élem[entaire] ::=
{entier_non_signé |nom_attribut} [ASC | DESC]
prédicat _de _base ::= prédicat_élem[entaire] AND | OR
prédicat_élem[entaire]
prédicat_élem ::= attribut comparateur {attribut |constante}
comparateur ::= = | <> | != | > | >= | < | <=