Bonsoir,
Cela fait près de vingt ans que je n’ai pas utilisé la notation qui vous donne des boutons, mais on va tâcher moyen de démêler l’écheveau.
Remarque préalable : dans la formule hermétique, il apparaît que les parenthèses ne sont pas balancées, mais bon...
Je suppose que l’opérateur ρ sert à renommer la relation Lot (disons en PNL), en faire une relation immatérielle, une image, et pouvoir ainsi effectuer une auto-jointure.
Manifestement Num_Lot→NL correspond à une opération de renommage de l’attribut Num_Lot en NL pour la relation PNL. Même principe pour Loyer_Mensuel qui serait renommé en Loyer. Cette opération permet d’éviter les ambiguïtés du genre Num_Lot = Num_Lot dans l’opération de jointure à suivre.
Sans renommage, on écrirait en effet quelque chose qui embarrasserait l’analyseur syntaxique :
Lot ⋈ Num_Lot = Num_Lot ∧ Loyer_Mensuel < Loyer_Mensuel PNL(...)
Avec renommage, c’est plus clair pour l’analyseur :
Lot ⋈ Num_Lot = NL ∧ Loyer_Mensuel < Loyer PNL(...)
Cette opération de jointure entre les relations Lot et PNL vise à obtenir l’ensemble des lignes de la relation Lot pour lesquelles le loyer est inférieur aux loyers figurant dans les lignes de la relation PNL.
Dans l’expression ci-dessus "Num_Lot = NL ∧ Loyer_Mensuel < Loyer", le symbole « ∧ » correspond au connecteur ET (en SQL : Num_Lot = NL AND Loyer_Mensuel < Loyer).
Toutefois cette expression compare chaque lot seulement avec lui-même et ne correspond pas à la requête SQL (dans laquelle chaque lot est comparé avec chaque lot) et devrait être reformulée ainsi :
Lot ⋈ Loyer_Mensuel < Loyer PNL(...)
Par exemple, si la relation Lot contient les lignes <'lot1', 1000>, <'lot2', 2000>, <'lot3', 3000>, avec l’expression corrigée on aura au résultat : <'lot1', 1000>, <'lot2', 2000>.
N.B. Si on ne modifie pas l'expression, et si la relation Lot contient les lignes <'lot1', 1000>, <'lot2', 2000>, <'lot3', 3000>, ,<'lot3', 3500>, le résultat sera vide...
En tout cas, après modification de l'expression, la projection du résultat sur l’attribut Num_Lot donne : <'lot1'>, <'lot2'>.
Pour connaître le lot ayant le loyer le plus élevé, il suffit d’effectuer une opération de différence ‘symbolisée par « — » entre la projection de la relation Lot sur Num_Lot et la projection précédente. Dans l'exemple, le résultat sera égal à 'lot3'.
Pour résumer :
1) Mise en œuvre d’une relation immatérielle PNL, image de la relation Lot,
2) Renommage des attributs de cette relation pour lever les ambiguïtés,
3) (Auto-)jointure de Lot et de son image PNL avec pour condition de jointure : "Loyer_Mensuel < Loyer",
4) Projection du résultat sur l’attribut Loyer_Mensuel,
5) Projection de la relation Lot sur l’attribut Loyer_Mensuel,
6) Opération de différence.
Partager