Le calcul relationnel

Un système de gestion de bases de données doit aussi proposer un langage, pour exprimer des requêtes, facilement utilisable par des êtres humains. Ces exigences forment le point de départ du modèle relationnel, proposé par Ted Codd, un chercheur d'IBM, dans les années 1970. Des mathématiciens avaient développé à la fin du 19e siècle (bien avant l'invention de l'informatique et des bases de données) la logique du premier ordre, pour formaliser le langage des mathématiques. Codd a eu l'idée d'adapter cette logique pour définir un modèle de gestion de données, le modèle relationnel.

Film

Titre

Directeur

Acteur

Casablanca

M. Curtiz

Humphrey Bogart

Casablanca

M. Curtiz

Peter Lore

Les 400 coups

F. Truffaut

J.-P. Leaud

Star Wars

G. Lucas

Harrison Ford

Séance

Titre

Salle

Heure

Casablanca

Lucernaire

19:00

Casablanca

Studio

20:00

Star Wars

Sel

20:30

Star Wars

Sel

22:15

Dans le modèle relationnel, les données sont organisées en tableaux à deux dimensions que nous appellerons des relations. À la différence des mathématiciens, nous supposons les relations de taille finie. Comme illustration, nous utiliserons une base de données consistant en une relation Film et une relation Séance. Une ligne de ces relations est appelée un n-uplet (ou tuple en anglais). Par exemple, ⟨Star Wars, Sel, 22:15⟩ est un n-uplet d'arité 3, c'est-à-dire un triplet, dans la relation Séance. Les colonnes ont des noms, appelés attributs, comme Titre. Un n-uplet est noté de la manière suivante : ⟨ “Casablanca”, “M. Curtiz”, “Humphrey Bogart”⟩

Les données sont interrogées en utilisant comme langage le calcul relationnel. Le calcul relationnel (très fortement inspiré de la logique du premier ordre) s'appuie sur des noms qui représentent des relations comme Film ou Séance, des entrées de ces relations comme Star Wars, des variables comme t,h, et des symboles logiques, ∧ (et), ∨ (ou), ¬ (non), ⇒ (implique), ∃ (existe), ∀ (pour tout). À partir de ces ingrédients, des formules logiques peuvent être construites telles que :

  • qHB = ∃t,r; (Film (t,r,“Humphrey Bogart”)∧ Séance (t,s,h))

Si cela vous parait cryptique, en français, cela se lit : il existe un titre t et un Directeur r tels que le n-uplet ⟨ t, r, “Humphrey Bogart” ⟩ se trouve dans la relation Film, et le n-uplet ⟨ t, s, h ⟩ dans Séance. Observez que s et h ne sont pas quantifiées dans la formule précédente ; nous dirons que ces deux variables sont libres. La formule qHB peut être vue comme une requête du calcul relationnel. Elle se lit alors : donnez-moi les salles s et les horaires h, s'il existe un Directeur r et un titre t tels que... En d'autres termes,

Où et à quelle heure puis-je voir un film avec Humphrey Bogart ?