3.2 Calul Relationnel à Variables n-uplets C'est un langage de la logique des prédiats ave plusieurs Une variable x aura un type T et on note Les valeurs des variables sont des n-uplets Lien intuitif ave SQL ; 27 x : T. de la base. sortes ou types. Relation CINEMA, dont deux des attributs sont nom_inema et adresse, relation SEANCE, dont deux des attributs sont nom_inema et id_lm, et relation FILM dont deux des attributs sont id_lm et nom_realisateur. Quel inémas ne projettent auun lm réalisé par Tarantino ? Donner aussi les adresses. SELECT .nom_inema, .adresse FROM inema WHERE NOT EXISTS (SELECT s.nom_inema FROM seane s, film f WHERE f.nom_realisateur = 'Tarantino' AND f.id_film = s.id_film AND s.nom_inema = .nom_inema); Ii, est une variable dont les valeurs (suessives) sont les n-uplets (lignes) de la table SEANCE. NOT EXISTS (...) ode une formule logique qui s'évalue à Vrai ou Faux, selon les valeurs de c. 28 Deux diérenes ave la logique des prédiats du ours de logique du L2. 1) La valeur d'une variable n'est pas un individu indéomposable, mais un n-uplet. Elle a don des omposantes : si x : ABC vaut ha1 : A, b1 : B, c1 : Ci, alors on a une syntaxe permettant d'aéder à la omposante a1, à la omposante b1 et à la omposante c1. On peut voir le .Attribut omme un symbole de fontion qui assoie à un individu, le triplet x,un autre individu du domaine de disours, sa omposante x.Attribut (ours de logique du L2). 29 2) Les variables sont typées. Utilité ? {A, B, C, ..., Z}. Parmi les tables, on a r , de shéma {A, B, C} (souvent on note juste ABC ). On veut exprimer, en logique : tous les n-uplets de r ont une propriété Q. Par ex. on a : univers = Si on ne type pas : ∀x(si x ∈ r alors Q(x)) tous les n-uplets possibles : Pour évaluer, on examine ave une seule omposante, sur A, ave une seule omposante, sur Z, AB , sur AC ,.....,W Z une seule omposante, sur ave 2 omposantes, sur . . . ave 26 omposantes, sur AB...Z Mais on est intéressé seulement aux n-uplets sur ABC ! Alors : ∀x : ABC(si x ∈ r alors Q(x)) 30 B, · · · ave Enore sur les prinipes du Calul Relationnel à variables n-uplets (CR à n-uplets). • Une variable aura omme valeur un n-uplet qui PEUT apparaître dans la base (bon type), mais qui n'y est pas forement. • Notation : si x est une variable (n-uplet) et indique la valeur pour l'attribut A du pour aéder aux omposantes). 31 A n-uplet un attribut, l'expression qui est la valeur de x x.A (syntaxe Pour un shéma de base S donné sur un univers U, le voabulaire des formules du alul relationnel est : • V= • C • ensemble inni de variables. = ensemble de onstantes = Symboles de prédiat : =, On a aussi une fontion de type S Ai ∈U Dom(Ai ) >, ≥, <, ≤, et tout nom de relation dans qui assoie à ertaines variables des sous-ensembles U. Pour t∈V, lire type(t) S. omme le type de 32 t. Syntaxe des 1. Formules Atomiques (F.A.) : Si : t, t′ ∈ V , A est un attribut ∈ type(t) alors le mot t.A = t′ .B est une F.A. 2. 3. et B est un attribut Si t ∈ V , A est un attribut ∈ type(t), k ∈ C alors le mot t.A = k est une F.A. et ∈ type(t′ ) k ∈ Dom(A) Si : t ∈ V , R est type(t) = S alors un nom de relation, le mot R(t) S est le shéma de relation assoié à est une F.A. 33 R et Exemples de F.A.. P rojection un nom de relation, dont le shéma est {N omF ilm, N omCinema, Horaire} et soit Aime une relation {Spectateur, N omF ilm}. ′ Soient t et t des variables, ave type(t) = type(t′ ) = {N omF ilm, N omCinema, Horaire}. Soit Les mots : 1. t.N omCinema = t′ .N omCinema 2. t.N omCinema 3. P rojection(t) = Gaumont Alésia sont des F.A. Le mot Aime(t) n'est pas une F.A. : erreur de typage ! 34 de shéma Signiation (sémantique) des F.A. Soit B une base sur le shéma variable 1. t et soit n2 un t.A = t′ .B est vraie n1 est la même que 2. t.A = k est k . 3. R(t) S. n-uplet Soit par rapport à n-uplet B N.B. Si type(t) = E , où E hoisi omme valeur de la B B B par n ssi la valeur assoiée à l'attribut ssi la relation de nom R A ontient n1 . n-uplet sur n'appartient à auune relation ! 35 A par n2 . est un ensemble d'attributs, tout même si t′ . ssi la valeur assoiée à l'attribut elle assoiée à l'attribut est vraie par rapport à t, un hoisi omme valeur de la variable est vraie par rapport à être une valeur de n1 par E n1 peut Exemple. Base B : AimeLivre Personne Livre NomLivre NomLivre p1 l1 l1 p2 l2 l2 p1 l2 Donnons la valeur hp1, l1i à t.N omLivre = t′ .N omLivre t.N omLivre = l2 est fausse. AimeLivre(t) est vraie. Assoions hp2, l1i à t et hl2i t.N omLivre = t′ .N omLivre t.N omLivre = l1 est vraie. AimeLivre(t) est fausse. t et hl1i à t′ . est vraie par rapport à à t′ . est fausse. 36 B. Formules E ⊆ U =ensemble d'attributs • Toute F.A. est une formule. • Si F • Si F1 • Si est une formule alors et F2 (¬F ) sont des formules et F est une formule et t ∈ V (∀t : E F ) et (∃t : E F ) l'est aussi. ∗ ∈ {∧, ∨, →} alors : sont des formules. 37 alors (F1 ∗ F2 ) est une formule. Formules : suite Leture intuitive de ∀t pour : quelque soit le n-uplet t de type E, F est vraie t. Leture intuitive de ∃t F : E FF est vraie pour : E F : il existe au moins un t. 38 n-uplet t de type E tel que Formules : suite La même dénition de l'ensemble des formules par une grammaire : F ormule := F.A. | (¬F ormule) | (F ormule ∗ F ormule) | (∀t : E F ormule) | (∃t : E F ormule) où ∗ ∈ {∧, ∨, →}. Conventions : F1 ∧ F2 ∧ F3 droit de ne pas érire les à la plae de () (F1 ∧ F2 ) ∧ F3 le plus à l'extérieur. Autres droits : ou F1 ∧ (F2 ∧ F3 ); idem pour ∨. Lien ave le ours de logique du L2 : syntaxe du alul des prédiats (mais types en plus). 39 (∀t : E F ) et (∃t : E F ) portée de ∀t (resp. ∃t). Pour F= : Variables Libres d'une Formule F d'un quantiateur (∀ ou : elles qui ne sont pas dans la portée ∃). Exemple. F : ∃t : P ersonne, N omLivre (AimeLivre(t) ∧ t.P ersonne =′′ Jean′′ ∧ t′ .N omLivre = t.N omLivre) Ensemble des variables libres de F = {t′ } F va être vraie pour ertain valeurs de t′ , 40 fausse pour d'autres. Signiation (Sémantique)des formules F : formule, B : base. s : hoix de t : variable n-uplet, type(t) = E . Par rapport à B et s on a : valeurs pour les variables libres de • Si F est une F.A. , • Si F est (¬F1 ) , F • Si F est (F1 ∧ F2 ) , F est vraie ssi • Si F est (F1 ∨ F2 ) , F est vraie si au moins une de • Si F est (F1 → F2 ) , F • Si F ∀t : E F1 , F est vraie E ), F1 est vraie pour t. type • Si F type est F F. est vraie ou fausse selon les ritères déjà vus. est vraie ssi F1 est fausse. F1 est vraie et est vraie ssi ou F1 F2 aussi. F1 , F2 est fausse ou F2 est vraie. est vraie. ssi, quelle que soit la valeur de ∃t : E F1 , F est vraie ssi il existe E ) telle que F1 est vraie pour t. est 41 t (ayant le au moins une valeur de t (ayant le Lien ave le ours de logique du L2 : ii B 42 est une interprétation (partiulière) ! Révenons à la syntaxe et au typage. Erreurs d'ériture possibles : Non-Formules : 1. (Aime(t) ∧ Livre(t′ ) Erreur de syntaxe, pas (forement) de typage. 2. Aime(t) ∧ t.age = 40 où type(t) = {N omP ersonne, N omLivre} Erreur de typage! 3. (Rappel : le shéma de Livre est {N omLivre}) ∀t : P ersonne ¬Livre(t) Erreur de typage! 43 Les exemples qui vont suivre utilisent le shéma de base du premier ours : U= {N omF ilm, Realizateur, Acteur, P roducteur, N omCinema, Horaire, Spectateur} S= { F ilm(N omF ilm, Realizateur, Acteur, P roducteur), P rojection(N omF ilm, N omCinema, Horaire), Aime(Spectateur, N omF ilm) } 44 Formulation d'une requête dans le alul relationnel à variables n-uplets. • Format : {t : E | F (t)} où t est une variable, ayant t E est le type délaré pour t et F (t) est une formule omme seule variable libre. • Réponse : l'ensemble des des valeurs de • Exemple : Quels sont les (titres des) lms projetés au Gaumont Alésia ? t pour lesquelles F (t) est vraie. {t : N omF ilm | ∃t′ : N omF ilm, N omCinema, Horaire (P rojection(t′ ) ∧t′ .N omCinema = “GaumontAlesia′′ ∧ t.N omF ilm = t′ .N omF ilm)} 45 Un autre exemple. Quels sont les titres et les ateurs des lms projetés au Gaumont Alésia ? {t : N omF ilm, Acteur | ∃t′′ : N omF ilm, Acteur, Realisateur, P roducteur ∃t′ : N omF ilm, N omCinema, Horaire (F ilm(t′′ ) ∧ (P rojection(t′ ) ∧ t′ .N omCinema =′′ GaumontAlesia′′ ∧ t′′ .N omF ilm = t′ .N omF ilm ∧ t.N omF ilm = t′ .N omF ilm ∧ t.Acteur = t′′ .Acteur)} NB : En algèbre on aurait érit : πN omF ilm,Acteur σN omCinema=‘′′ GaumontAlesia′′ (F ilm 1 P rojection) 46 Question. Même base B, mais domaines des attributs 6=. A-t-on forement une réponse unique à une requête dans le alul ? NON. Exemple : shéma est Shéma de la base ={R(A)}, .-à-d. on a une seule table, dont le {A}. A Trois Cas 1 1) Dom(A) = {1, 2, 3} 2 2) Dom(A) = {1, 2, 3, 4} 3 3) Dom(A) = {1, 2, 3, 4, 5, 6, ...} Requête : R, {t : A | ¬R(t)} Réponses respetives dans les trois as : ∅, {4}, {n | n est un entier positif et n > 3}. Dans le troisième as, la réponse n'est même pas une relation nie ! Pas de orrespondane ave l'algèbre relationnelle. Cette requête est dépendante du domaine. Not Good ! 47 • ∃ restrition syntaxique sur la forme d'une requête que R R du alul qui assure est indépendante du domaine et équivalente à une expression algébrique : notion de requête saine : saine. • Dénition de • Mais : exemples de réériture d'une requête dépendante du domaine (D.D.) tehniquement ompliquée, pas donnée ii. de façon qu'elle soit indépendante du domaine (I.D.). 48 Exemples { F ilm(N omF ilm, Realizateur, Acteur, P roducteur), P rojection(N omF ilm, N omCinema, Horaire), Aime(Spectateur, N omF ilm) } Shéma de la base : Quels lms ne sont aimés par personne ? {t : N omF ilm | ∀x : Spectateur, N omF ilm (x.N omF ilm = t.N omF ilm → ¬Aime(x))} D.D. : Aime = {hs1, f 1i, hs2, f 2i} Dom(N omF ilm) = {f 1, f 2, f 3, ...}. Evaluer, par exemple, sur ave {t : N omF ilm | ∃t′ : N omF ilm, Realizateur, Acteur, P roducteur [F ilm(t′ ) ∧ ∀x : Spectateur, N omF ilm (x.N omF ilm = t′ .N omF ilm → ¬Aime(x)) ∧ t′ .N omF ilm = t.N omF ilm]} I.D. : 49 Exemples, suite Quels lms ne sont pas projettés au Gaumont-Alésia ? {t : N omF ilm | ¬∃t′′ : N omF ilm, N omCinema, Horaire (P rojection(t′′ ) ∧ t′′ .N omCinema = “Gau.Al.′′ ∧ t′′ .N omF ilm = t.N omF ilm)} D.D. : P rojection = {hf 1, c1, h1i, hf 2, G.A., h22i} Dom(N omF ilm) = {f 1, f 2, f 3, ...}. Evaluer, par exemple, sur ave {t : N omF ilm | ∃t′ : N omF ilm, Realizateur, Acteur, P roducteur [F ilm(t′ ) ∧ ¬∃t′′ : N omF ilm, N omCinema, Horaire (P rojection(t′′ ) ∧ t′′ .N omCinema = “Gau.Al.′′ ∧ t′′ .N omF ilm = t′ .N omF ilm) ∧ t′ .N omF ilm = t.N omF ilm]} I.D. : 50 Exemples, suite Enore : Quels lms ne sont pas projettés au Gaumont-Alésia ? Les deux formules suivantes sont I.D. et sont équivalentes : {t : N omF ilm | ∃t′ : N omF ilm, Realizateur, Acteur, P roducteur [F ilm(t′ ) ∧ ¬∃t′′ : N omF ilm, N omCinema, Horaire [P rojection(t′′ ) ∧ t′′ .N omCinema = “Gau.Al.′′ ∧ t′′ .N omF ilm = t′ .N omF ilm] ∧ t′ .N omF ilm = t.N omF ilm)]} (déjà vue). {t : N omF ilm | ∃t′ : N omF ilm, Realizateur, Acteur, P roducteur [F ilm(t′ ) ∧ ∀t′′ : N omF ilm, N omCinema, Horaire ¬[P rojection(t′′ ) ∧ t′′ .N omCinema = “Gau.Al.′′ ∧ t′′ .N omF ilm = t′ .N omF ilm] ∧ t′ .N omF ilm = t.N omF ilm)]} Pourquoi ? ¬∃xF (x) ≡ ∀x¬F (x). 51 Et enore une autre ériture équivalente si on remarque que ¬(A ∧ B ∧ C) ≡ ((A ∧ B) → ¬C). 52 • algèbre relationnelle et alul relationnel à variables n-uplets (requêtes I.D.) : expression des mêmes requêtes. • Un langage ommerial est dit relationnellement omplet ssi il peut exprimer toutes les requêtes que l'algèbre peut exprimer. • SQL est relationnellement omplet. • SQL utilise des opérateurs de l'algèbre, mais aussi des variables 53 n-uplets.