Logique du premier ordre

Base de données

Florent Capelli

Rappels d’Algèbre Relationnelle

Algèbre relationnelle

  • Relations : R(x1,…,xn) ⊆ DX finies sur des attributs X et un domaine D.
  • Représentés par des tables
Personnes
id nom prénom âge
1 Cooper Alice 22
2 Moran Bob 54
3 Prade Caroline 32

On manipule les relartions via des opérateurs :

  • Union
  • Différence \
  • Produit Cartésien ×
  • Projection Π
  • Sélection σ
  • Renommage ρ

Union

R ∪ S : les lignes qui sont à la fois dans R et S.

Personnes1
id nom prénom âge
1 Cooper Alice 22
2 Moran Bob 54
3 Prade Caroline 32
Personnes2
id nom prénom âge
1 Cooper Alice 22
4 LaMalice Denis 8
Personnes1 Personnes2
id nom prénom âge
1 Cooper Alice 22
2 Moran Bob 54
3 Prade Caroline 32
4 LaMalice Denis 8
(SELECT * FROM Personnes1) UNION (SELECT * FROM Personnes2)

Différences

R \ S : les lignes qui ne sont que dans R.

Personnes1
id nom prénom âge
1 Cooper Alice 22
2 Moran Bob 54
3 Prade Caroline 32
Personnes2
id nom prénom âge
1 Cooper Alice 22
4 LaMalice Denis 8
Personnes1 \ Personnes2
id nom prénom âge
2 Moran Bob 54
3 Prade Caroline 32
(SELECT * FROM Personnes1) MINUS (SELECT * FROM Personnes2)

Produit Cartésien

R × S : on a les colonnes de R et de S et toutes les paires de tuples possibles.

Personnes
idPersonnes nom prénom âge
1 Cooper Alice 22
2 Moran Bob 54
3 Prade Caroline 32
Langages
idLangages nomLangage
1 C
2 Haskell
Personnes × Langages
idPersonnes nom prénom âge idLangages nomLangage
1 Cooper Alice 22 1 C
1 Cooper Alice 22 2 Haskell
2 Moran Bob 54 1 C
2 Moran Bob 54 2 Haskell
3 Prade Caroline 32 1 C
3 Prade Caroline 32 2 Haskell
(SELECT * FROM Personnes, Langages)

Sélection

σF(R) : on ne sélectionne que les tuples de R qui satisfont une formule F.

Personnes
idPersonnes nom prénom âge
1 Cooper Alice 22
2 Moran Bob 54
3 Prade Caroline 32
σage > 30(Personnes)
idPersonnes nom prénom âge
2 Moran Bob 54
3 Prade Caroline 32
SELECT * FROM Personnes WHERE age>30

Join

Rx = xS souvent utilisé est un raccourci à σx = x(R(x,yS(x′,y′))

Projection

ΠC(R) : on ne garde que les attributs (colonnes) c ∈ C dans R

Personnes
idPersonnes nom prénom âge
1 Cooper Alice 22
2 Moran Bob 54
3 Prade Caroline 32
Πnom, prénom(Personnes)
nom prénom
Moran Bob
Prade Caroline
SELECT nom,prénom FROM Personnes

Renommage

ρA → B(R) : on renomme l’attribut (colonne) A de R en B.

Personnes
idPersonnes nom prénom âge
1 Cooper Alice 22
2 Moran Bob 54
3 Prade Caroline 32
ρnom → lname(ρprénom → fname(ρâge → age(Personnes)))
idPersonnes lname fname age
1 Cooper Alice 22
2 Moran Bob 54
3 Prade Caroline 32
SELECT idPersonnes, 
       nom AS lname, 
       prénom AS fname, 
       âge AS age 
FROM Personnes

LPO et Algèbre Relationnelle

Correspondance

SELECT id, nom, prénom 
FROM ((SELECT id,nom,prénom,âge as x FROM Personnes1) UNION (SELECT id,nom,prénom,âge as x FROM Personne2)) 
WHERE x>30

Πid, nom, prénom(σx > 30(ρâge → x(Personnes1∪Personnes2)))

pareil que

R(id,nom,prénom) ≡ ∃x.((P1(id,nom,prénom,x)∨P2(id,nom,prénom,x))∧x>30)

dans une interprétation où le prédicat P1 correspond à la table Personnes1 et P2 correspond à la table Personnes2.

Toute expression de l’algèbre relationnelle peut s’écrire en logique du premier ordre avec seulement des quantificateurs existentiels!

Table de correspondance

LPO A.R
Prédicat Nom de Relation
Interprétation d’un prédicat Relation / Table
Variables Attributs
S(x) ∧ ¬T(x) S \ T
x.S(x,y,z) Πy, zS(x,y,z)
S(x,y,z) ∧ F(x,y,z) σF(S)
Renommer variable libre ρ

Quelques différences

  1. Dynamique différente
    • L’algèbre relationnelle décrit une procédure : comment transformer des relations en d’autres relations
    • La LPO : décrit des relations entre les différentes variables libres.
  2. Modèles finis
    • Les bases de données n’utilisent que des tables **finies
    • Les interprétations des prédicats peuvent être infinies.
  3. Symbole de fonctions
    • L’algèbre relationnelle n’utilise pas de fonction (sauf parfois dans σ(⋅))
  4. Domaine d’interprétation
    • une interprétation en LPO fixe un domaine : x(R(x,y)) n’a de sens que si le domaine de x est fixé !
    • l’algèbre relationnelle utilise le domaine actif, celui présent dans les tables.

Contraintes et théories

Contraintes de base de données :

  • Unicité : UNIQUE(R,x) ≡ ∀xyz.R(x,y,z) ⇒ (∀uv.R(x,u,v)⇒(u=yv=z))
  • Clé étrangère: FKEY(x,R,S) ≡ ∀xyz.R(x,y,z) ⇒ ∃u(S(x,u)).

Une base de données respectant des contraintes peut être vue comme un modèle fini d’une théorie encodant ces contraintes !

Exercices

Traduire vers LPO

  1. σx = 4(Πx, y(R(x,zS(y,t)))
  2. σx = ′Bob(R(x,z)∪S(x,z)) × T(a,b)
  3. Πy((T(xS(y))\R(x,y))
  4. σsqrt(x) > 5(R(x,y,z) ∪ ρu → z(T(x,y,u))
  5. Πx(σx = 3 ∧ y < 3(R(x,yS(y,z)))