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.
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 |
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 ?