Base de données
Transcription
Base de données
Base de données Bases de données L2 sciences et technologies, mention informatique les requêtes conjonctives ou : comment extraire de l’information de ceci? films titre starwars nikita locataires dune réalisateur lucas besson ki-duk lynch année 1977 1990 2005 1984 réalisateurs [email protected] http://www.info.univ-tours.fr/˜marcel nom lucas lynch besson ki-duk nationalité américaine américaine française coréenne Base de données requête exemple de requêtes : 1. qui est le réalisateur de “dune”? 2. en quelle année est sorti “nikita”? 3. quelle est la nationalité du réalisateur de “locataires”? 4. lister les films réalisés par des américains Base de données la requête 4 “lister les films réalisés par des américains” avec des variables portant sur les tuples : si il y a des tuples t1 , t2 dans films et réalisateurs tels que nationalité de t2 est ”américaine” et réalisateur de t1 = nom de t2 alors le résultat contient titre de t1 Base de données la requête 4 “lister les films réalisés par des américains” avec des variables portant sur les constantes du domaine : si il y a des tuples (r ,”américaine”),(t,r ,a) dans réalisateurs et films alors le tuple (t) fait partie du résultat Base de données la requête 4 sous forme de règle : film américain(t) ←réalisateurs(r ,”américaine”),films(t,r ,a). si il existe une valeur de r associée à “américaine” dans l’instance de réalisateurs, et I on retrouve cette valeur dans l’instance de films alors la valeur de t associée à la valeur de r dans l’instance de films fait partie du résultat I Base de données requête conjonctive exprimée sous forme de règle requête conjonctive exprimée sous forme de règle Base de données requête conjonctive exprimée sous forme de règle langage à base de règles une requête conjonctive sur un schéma de base de données D est une expression de la forme : ans(u) ← R1 (u1 ), . . . ,Rn (un ) Base de données requête conjonctive exprimée sous forme de règle langage à base de règles une requête conjonctive sur un schéma de base de données D est une expression de la forme : ans(u) ← R1 (u1 ), . . . ,Rn (un ) I I I ans(u) est appelé la tête de la règle R1 (u1 ), . . . ,Rn (un ) est appelé le corps de la règle les R(ui ) sont appelés des atomes Base de données requête conjonctive exprimée sous forme de règle dans cette règle Ri est un nom de relation de D ans 6∈ D est un nom de relation ui est une expression de la forme e1 , . . . ,emi les ej sont des variables de var ou constantes de dom Base de données requête conjonctive exprimée sous forme de règle les variables de cette règle condition de champs restreint : chaque variable apparaissant dans u doit apparaitre au moins une fois dans u1 , . . . ,un on note var (q) l’ensemble des variables de la requête q Base de données requête conjonctive exprimée sous forme de règle exemple “qui est le réalisateur de dune?” ans(r ) ← films(“dune 00 ,r ,a). Base de données requête conjonctive exprimée sous forme de règle exemple “qui est le réalisateur de dune?” ans(r ) ← films(“dune 00 ,r ,a). “en quelle année est sorti nikita?” ans(a) ← films(“nikita00 ,r ,a). Base de données requête conjonctive exprimée sous forme de règle valuation soit V ⊂ var une valuation v sur V est une fonction de V dans dom Base de données requête conjonctive exprimée sous forme de règle valuation soit V ⊂ var une valuation v sur V est une fonction de V dans dom une valuation v associe une valeur à chaque variable Base de données requête conjonctive exprimée sous forme de règle tuple libre soit U un ensemble d’attributs, dans l’approche nommée un tuple libre sur U est une fonction de U dans var ∪ dom Base de données requête conjonctive exprimée sous forme de règle tuple libre soit U un ensemble d’attributs, dans l’approche nommée un tuple libre sur U est une fonction de U dans var ∪ dom t un tuple libre et v une valuation v (t) est le tuple t où les variables sont remplacées par leur valuation Base de données requête conjonctive exprimée sous forme de règle exemple soit V = {t,r ,a} ⊂ var v1 ,v2 ,v3 sont trois valuations : I v1 (t) = starwars, v1 (r ) = lucas, v1 (a) = 1977 Base de données requête conjonctive exprimée sous forme de règle exemple soit V = {t,r ,a} ⊂ var v1 ,v2 ,v3 sont trois valuations : I I v1 (t) = starwars, v1 (r ) = lucas, v1 (a) = 1977 v2 (t) = dune, v2 (r ) = lynch, v2 (a) = 1984 Base de données requête conjonctive exprimée sous forme de règle exemple soit V = {t,r ,a} ⊂ var v1 ,v2 ,v3 sont trois valuations : I I I v1 (t) = starwars, v1 (r ) = lucas, v1 (a) = 1977 v2 (t) = dune, v2 (r ) = lynch, v2 (a) = 1984 v3 (t) = 1977, v3 (r ) = 1984, v3 (a) = 1977 Base de données requête conjonctive exprimée sous forme de règle l’image d’une requête q q une requête ans(u) ← R1 (u1 ), . . . ,Rn (un ) I une instance de base de données de schéma D l’image de (la réponse à) q sur I est : q(I ) = {v (u)|v est une valuation sur var (q) et v (ui ) ∈ I (Ri ) pour tout i ∈ [1,n] } Base de données requête conjonctive exprimée sous forme de règle exemple la requête 4 : film américain(t) ←réalisateurs(r ,”américaine”),films(t,r ,a). Base de données requête conjonctive exprimée sous forme de règle exemple la requête 4 : film américain(t) ←réalisateurs(r ,”américaine”),films(t,r ,a). I : l’instance de base de données suivante : I ={films(starwars,lucas,1977),films(nikita,besson,1990), films(locataires,ki-duk,2005),films(dune,lynch,1984) réalisateurs(lucas,américaine),réalisateurs(lynch,américaine), réalisateurs(ki-duk,coréenne),réalisateurs(besson,française)} Base de données requête conjonctive exprimée sous forme de règle exemple les valuations v1 et v2 telles que : I I v1 (t) = starwars, v1 (r) = lucas, v1 (a) = 1977 v2 (t) = dune, v2 (r) = lynch, v2 (a) = 1984 Base de données requête conjonctive exprimée sous forme de règle exemple q(I ) = {film américain(“starwars”),film américain(“dune”)} constitue la réponse à la requête Base de données requête conjonctive exprimée sous forme de règle exemple ans(w ) ← films(x,y ,z) n’est pas à champs restreint la réponse à cette requête est infinie... Base de données requête conjonctive exprimée sous forme de règle domaine actif pour I une instance de base de données, q une requête on note : adom(I ) l’ensemble des constantes apparaissant dans I domaine actif de l’instance adom(q) l’ensemble des constantes apparaissant dans q domaine actif de la requête Base de données requête conjonctive exprimée sous forme de règle exemple dans l’exemple précédent : adom(I )={starwars, lucas, américaine, 1984, dune, . . . } adom(q)={américaine} Base de données requête conjonctive exprimée sous forme de règle qu’est-ce que q(I )? on note adom(q,I ) = adom(q) ∪ adom(I ) q est une requête à champs restreint sur I donc adom(q(I )) ⊆ adom(q,I ) donc q(I ) est un ensemble fini donc c’est une instance Base de données requête conjonctive exprimée sous forme de règle extension et intention ans(u) ← R1 (u1 ), . . . ,Rn (un ) si les relations Ri sont stockées on dit qu’elles sont définies en extension Base de données requête conjonctive exprimée sous forme de règle extension et intention ans(u) ← R1 (u1 ), . . . ,Rn (un ) si les relations Ri sont stockées on dit qu’elles sont définies en extension si ans n’est pas stockée c’est une relation définie en intention Base de données requête conjonctive exprimée sous forme de règle requête booléenne exemple : connaı̂t-on un film sorti en 1990? Base de données requête conjonctive exprimée sous forme de règle requête booléenne exemple : connaı̂t-on un film sorti en 1990? ans() ← film(t,r ,1990) réponse {()} si oui ∅ sinon Base de données le calcul conjonctif le calcul conjonctif Base de données le calcul conjonctif calcul conjonctif ans(e1 , . . . ,em ) ← R1 (u1 ), . . . ,Rn (un ) variante syntaxique : {e1 , . . . ,em |∃x1 , . . . ,xk (R1 (u1 ) ∧ . . . ∧ Rn (un ))} Base de données le calcul conjonctif calcul conjonctif ans(e1 , . . . ,em ) ← R1 (u1 ), . . . ,Rn (un ) variante syntaxique : {e1 , . . . ,em |∃x1 , . . . ,xk (R1 (u1 ) ∧ . . . ∧ Rn (un ))} I I I x1 , . . . ,xk sont les variables apparaissant dans le corps et pas dans la tête ∧ est la conjonction (“et”) ∃ est la quantification existentielle (“il existe”) Base de données le calcul conjonctif exemple la requête 4 exprimée dans le calcul conjonctif : {t|∃r ,a, réalisateurs(r ,”américaine”) ∧ films(t,r ,a)} Base de données le calcul conjonctif la syntaxe du calcul conjonctif soit D un schéma de base de données une formule sur D est une expression de la forme : 1. un atome R(e1 , . . . ,en ) sur D 2. (ϕ ∧ ψ) où ϕ et ψ sont des formules sur D, ou 3. ∃xϕ où x est une liste de variables et ϕ une formule sur D Base de données le calcul conjonctif exemple des formules du calcul : films(”starwars”,r ,”1977”) Base de données le calcul conjonctif exemple des formules du calcul : films(”starwars”,r ,”1977”) réalisateur(”lucas”,n) ∧ réalisateur(”lynch”,n) Base de données le calcul conjonctif exemple des formules du calcul : films(”starwars”,r ,”1977”) réalisateur(”lucas”,n) ∧ réalisateur(”lynch”,n) ∃y réalisateur(x,”française”) ∧ films(”starwars”,y ,x) Base de données le calcul conjonctif variable libre/liée une 1. 2. 3. (occurrence de) variable x dans une formule ϕ est libre si ϕ est un atome, ou ϕ = (ψ ∧ ξ) où x est libre dans ψ ou ξ ϕ = ∃y ψ où y est distinct de x et x est libre dans ψ Base de données le calcul conjonctif variable libre/liée une 1. 2. 3. (occurrence de) variable x dans une formule ϕ est libre si ϕ est un atome, ou ϕ = (ψ ∧ ξ) où x est libre dans ψ ou ξ ϕ = ∃y ψ où y est distinct de x et x est libre dans ψ une variable qui n’est pas libre est liée free(ϕ) : ensemble des variables libres de ϕ Base de données le calcul conjonctif requête du calcul conjonctif un requête est une expression de la forme {e1 , . . . ,en |ϕ} où ϕ est une formule du calcul, et les variables de (e1 , . . . ,en ) sont exactement free(ϕ) Base de données le calcul conjonctif exemple dans {t|∃r ,a (réalisateurs(r ,”américaine”)∧ films(t,r ,a))} t est libre r et a sont liées Base de données le calcul conjonctif valuation définie comme précédemment, pouvant s’écrire {x1 /a1 , . . . ,xn /an } on note v |V la restriction de v à l’ensemble V Base de données le calcul conjonctif valuation définie comme précédemment, pouvant s’écrire {x1 /a1 , . . . ,xn /an } on note v |V la restriction de v à l’ensemble V v une valuation sur V , x 6∈ V , c ∈ dom, v ∪ {x/c} est une valuation sur V ∪ {x} I I identique à v sur V associant x avec c Base de données le calcul conjonctif satisfaction d’une formule I une instance de base de données satisfait une formule ϕ sous une valuation v (noté I |= ϕ[v ]) si 1. ϕ = R(u) est un atome et v (u) ∈ I (R), ou Base de données le calcul conjonctif satisfaction d’une formule I une instance de base de données satisfait une formule ϕ sous une valuation v (noté I |= ϕ[v ]) si 1. ϕ = R(u) est un atome et v (u) ∈ I (R), ou 2. ϕ = (ψ ∧ ξ) et I |= ψ[v |free(ψ) ] et I |= ξ[v |free(ξ) ], ou Base de données le calcul conjonctif satisfaction d’une formule I une instance de base de données satisfait une formule ϕ sous une valuation v (noté I |= ϕ[v ]) si 1. ϕ = R(u) est un atome et v (u) ∈ I (R), ou 2. ϕ = (ψ ∧ ξ) et I |= ψ[v |free(ψ) ] et I |= ξ[v |free(ξ) ], ou 3. ϕ = ∃xψ et il existe c ∈ dom, I |= ψ[v ∪ {x/c}] Base de données le calcul conjonctif exemple soit l’instance de base de donnée I de la diapo 1 soit la formule ϕ = ∃r ,a (réalisateurs(r ,”américaine”)∧ films(t,r ,a)) I satisfait ϕ sous v si v est telle que v (t) = starwars Base de données le calcul conjonctif exemple soit l’instance de base de donnée I de la diapo 1 soit la formule ϕ = ∃r ,a (réalisateurs(r ,”américaine”)∧ films(t,r ,a)) I satisfait ϕ sous v si v est telle que v (t) = starwars I ne satisfait pas ϕ sous v 0 telle que v 0 (t) = nikita Base de données le calcul conjonctif image soit q = {e1 , . . . ,em |ϕ} une requête conjonctive sur D et I une instance de D l’image de I par q, notée q(I ), est : q(I ) = {v ((e1 , . . . ,em ))|I |= ϕ[v ] et v est une valuation sur free(ϕ)} Base de données le calcul conjonctif exemple soit la requête q = {t|∃r ,a (réalisateurs(r ,”américaine”)∧ films(t,r ,a))} soit l’instance I de la diapo 1 q(I ) ={(“starwars”),(“dune”)} Base de données propriétés des requêtes conjonctives propriétés des requêtes conjonctives Base de données propriétés des requêtes conjonctives pourquoi étudie-t-on les requêtes conjonctives? I I I elles sont simples elles représentent une part importante des requêtes usuelles elles ont de bonnes propriétés Base de données propriétés des requêtes conjonctives monotonie une requête q sur D est monotone si pour toute instance I ,J de D : I ⊆ J implique q(I ) ⊆ q(J) Base de données propriétés des requêtes conjonctives exemple la requête q=film américain(t) ←réalisateurs(r ,”américaine”),films(t,r ,a). Base de données propriétés des requêtes conjonctives exemple la requête q=film américain(t) ←réalisateurs(r ,”américaine”),films(t,r ,a). I et J : deux instances de base de données avec I ={films(starwars,lucas,1977),films(nikita,besson,1990), films(locataires,ki-duk,2005),films(dune,lynch,1984), réalisateurs(lucas,américaine),réalisateurs(lynch,américaine), réalisateurs(ki-duk,coréenne),réalisateurs(besson,française)} Base de données propriétés des requêtes conjonctives exemple J={films(nikita,besson,1990),films(locataires,ki-duk,2005), films(dune,lynch,1984), réalisateurs(lynch,américaine), réalisateurs(ki-duk,coréenne),réalisateurs(besson,française)} J⊂I Base de données propriétés des requêtes conjonctives exemple q(I ) = {film américain(“starwars”),film américain(“dune”)} q(J) = {film américain(“dune”)} Base de données propriétés des requêtes conjonctives exemple q(I ) = {film américain(“starwars”),film américain(“dune”)} q(J) = {film américain(“dune”)} q(J) ⊂ q(I ) Base de données propriétés des requêtes conjonctives requête non monotone exemple de requête non monotone : soit la relation acteurs de schéma acteur[nom,a tourné avec] quels sont les acteurs qui n’ont tourné que avec lucas? Base de données propriétés des requêtes conjonctives requête non monotone exemple de requête non monotone : soit la relation acteurs de schéma acteur[nom,a tourné avec] quels sont les acteurs qui n’ont tourné que avec lucas? I (acteur) = {(ford,lucas),(ford,spielberg)}, q(I ) = ∅ J(acteur) = {(ford,lucas)}, q(J) = {ford} Base de données propriétés des requêtes conjonctives satisfiabilité une requête q est satisfiable si il existe une instance I telle que q(I ) est non vide Base de données propriétés des requêtes conjonctives requête non satisfiable exemple de requête non satisfiable : est-ce qu’il existe un film qui s’appelle “starwars” et “dune”? Base de données propriétés des requêtes conjonctives propriétés des requêtes conjonctives théorème : les requêtes conjonctives sont monotones et satisfiables Base de données propriétés des requêtes conjonctives propriétés des requêtes conjonctives théorème : les requêtes conjonctives sont monotones et satisfiables à démontrer en TD... Base de données propriétés des requêtes conjonctives propriétés des requêtes conjonctives toute requête conjonctive q peut être écrite sous la forme {e1 , . . . ,em |∃x1 , . . . ,xp (R1 (u1 ) ∧ . . . ∧ Rn (un ))} évaluer q sur une instance I demande juste à regarder dans adom(q,I ) Base de données propriétés des requêtes conjonctives propriétés (suite) soient q = {u|ϕ} et q 0 = {w |ψ} une autre requête conjonctive avec free(q) = free(q 0 ) q est équivalente à q 0 (q ≡ q 0 ) si quelles que soient I et v , I |= ϕ[v ] ⇐⇒ I |= ψ[v ] Base de données propriétés des requêtes conjonctives exemple {x|∃y ,z films(y ,x,z) ∧ réalisateur(x,coréenne) } et {a|∃b,c réalisateur(a,coréenne) ∧ films(b,a,c) } sont 2 requêtes équivalentes Base de données propriétés des requêtes conjonctives propriétés (suite) le langage à base de règles pour décrire des requêtes conjonctives Q1 et le calcul conjonctif Q2 sont équivalents ils permettent d’exprimer exactement les même requêtes formellement : ∀q1 ∈ Q1 ,∃q2 ∈ Q2 ,q1 ≡ q2 ∀q1 ∈ Q2 ,∃q2 ∈ Q1 ,q1 ≡ q2 Base de données propriétés des requêtes conjonctives ajout de l’égalité l’égalité entre variables ou entre variables et constantes peut être utilisée exemples : film américain(t) ←réalisateurs(r1 ,n),n=”américaine”,films(t,r2 ,a),r1 = r2 . Base de données propriétés des requêtes conjonctives ajout de l’égalité problème : quelle est la réponse à ans(x,y ) ← R(x),y = z où x,y ,z ∈ var Base de données propriétés des requêtes conjonctives ajout de l’égalité problème : quelle est la réponse à ans(x,y ) ← R(x),y = z où x,y ,z ∈ var on considère seulement les règles à champs restreint : toute variable du corps doit être égale à I une constante, ou I une variable apparaissant dans un atome Base de données propriétés des requêtes conjonctives ajout de l’égalité problème : quelle est la réponse à ans(x) ← R(x),a = b où x ∈ var,a,b ∈ dom Base de données propriétés des requêtes conjonctives ajout de l’égalité problème : quelle est la réponse à ans(x) ← R(x),a = b où x ∈ var,a,b ∈ dom on considère seulement les règles satisfiables toute requête satisfiable avec égalité peut s’écrire sous une forme sans égalité Base de données propriétés des requêtes conjonctives composition de requêtes un programme conjonctif P sur une base de données D est une séquence de requêtes conjonctives S1 (u1 ) ← body1 S2 (u2 ) ← body2 ... Sn (un ) ← bodyn tous les Si sont distincts, n’appartiennent pas à D Base de données propriétés des requêtes conjonctives composition de requêtes les relations pouvant apparaitre dans bodyi sont I I les relations de D et S1 , . . . ,Si−1 tout programme conjonctif peut être réécrit sous la forme d’une seule règle Base de données propriétés des requêtes conjonctives exemple le programme S(x,y ) ← R(x,y ),Q(y ). T (y ) ← Q(x),S(x,y ). U(x,y ) ← T (x),R(x,y ). peut être réécrit en U(x,y ) ← R(x,y ),Q(z),R(z,x),Q(x). Base de données propriétés des requêtes conjonctives clôture par composition théorème : la composition de requêtes conjonctives est une requête conjonctive