Base de données
Florent Capelli
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 :
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 |
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 |
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 |
σ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 |
R⋈x = x′S souvent utilisé est un raccourci à σx = x′(R(x,y)×S(x′,y′))
Π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 |
ρ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 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!
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 | ρ |
Contraintes de base de données :
Une base de données respectant des contraintes peut être vue comme un modèle fini d’une théorie encodant ces contraintes !