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