© Your Copyright
L’objectif de ces exercices est de savoir formuler une requête sur plusieurs tables et de créer une vue sur les informations « métier » « Aux pays des bières ».
Ecrire une requête SQL répondant à la question : - \(Q_1\) : « Rechercher les bars qui servent de la bière ».
On peut faire un produit cartésien (\(\times\)) entre les tables bars,services,bieres
en vérifiant que chaque bar dans l’ensemble des bars
est bien lié aux bieres
qu’il sert par les services
:
\([bars.id\_bar = services.id\_bar \land services.id\_biere=bieres.id\_biere]\)
Ecriture en algèbre relationnelle :
- \(T_1 = \times(bars,services)\)
- \(T_2 = \times(bieres,T_1)\)
- \(Q_1 = \sigma_{[m=ba.id\_bar=s.id\_bar \land s.id\_biere=bi.id\_biere]}(T_2)\)
On peut aussi faire cette requête par une jointure naturelle (\(\Join_{[]}\))
puisque les bars sont liés aux bières par des noms de colonnes communes (id_bar,id_biere
)
sur la table services
.
Ecriture en algèbre relationnelle :
- \(NJ_1 = \Join_{[]}(bars,services)\)
- \(Q_1 = \Join_{[]}(bieres,NJ_1)\)
Créer une vue barsdumonde sur les informations “métier” (sans les clés id_bar,id_biere
)
des « bars qui servent de la bière ».
On “encapsule” dans une vue (CREATE VIEW barsdumonde AS
) une requête SQL
pour consulter plus simplement les informations “métier” (sans les clés primaires et étrangères).
(bar,pays,stock,biere,couleur,origine
).
Ecriture en algèbre relationnelle de la requête à mettre dans une vue :
- \(NJ_1 = \Join_{[]}(bars,services)\)
- \(NJ_2 = \Join_{[]}(bieres,NJ_1)\)
- \(Q_1 = \Pi_{(bar,pays,stock,biere,couleur,origine)}(NJ_1)\)