© Your Copyright
L’objectif de ces exercices est de savoir représenter sous forme d’arbre de requêtes une requête sur une plusieurs tables de la base de données « Aux pays des bières ».
TablesOpérateurs unairesOpérateurs binaires |
Vue d'ensemble | |
---|---|
|
id_biere | biere | couleur | origine | id_bar | bar | pays | stock |
---|---|---|---|---|---|---|---|
1 | Kronenbourg | Blonde | France | 1 | Bar du Coin | France | 1000 |
2 | Guinness | Brune | Irlande | 1 | Bar du Coin | France | 250 |
3 | Heineken | Blonde | Hollande | 1 | Bar du Coin | France | 50 |
4 | Newcastle | Rousse | UK | 1 | Bar du Coin | France | 10 |
5 | Spaten | Blonde | Allemagne | 1 | Bar du Coin | France | 10 |
6 | Bush | Blonde | USA | 1 | Bar du Coin | France | 10 |
7 | Kanterbrau | Blonde | France | 1 | Bar du Coin | France | 20 |
8 | Kronenbourg | Brune | France | 1 | Bar du Coin | France | 20 |
1 | Kronenbourg | Blonde | France | 2 | Corners Pub | USA | 100 |
6 | Bush | Blonde | USA | 2 | Corners Pub | USA | 1500 |
5 | Spaten | Blonde | Allemagne | 3 | Cafe der Ecke | Allemagne | 5000 |
On utilise ici l’opération de jointure naturelle \(\Join_{[]}\) entre deux tables (\(S,T\)) :
- \(\Join_{[]}(S,T)\).
On réalise une première jointure naturelle (\(NJ_1\)) entre les tables bars,services
:
- \(NJ_1=\Join_{[]}(bars,services)\)
suivi d’une deuxième jointure (\(NJ_2\)) entre le résultat précédent et la table des bieres
:
- \(NJ_2=\Join_{[]}(NJ_1,bieres)\)
Qu’obtient-on avec les arbres de requêtes suivants :
Arbre de requêtes : bars-6.json
- \(Q_2 = \Join_{[]}(\Join_{[]}(bieres,services),bars)\)
- \(Q_3 = \Join_{[]}(\Join_{[]}(bars,bieres),services)\)
TablesOpérateurs unairesOpérateurs binaires |
Vue d'ensemble | |
---|---|
|
id_biere | biere | couleur | origine | id_bar | bar | pays | stock |
---|---|---|---|---|---|---|---|
1 | Kronenbourg | Blonde | France | 1 | Bar du Coin | France | 1000 |
2 | Guinness | Brune | Irlande | 1 | Bar du Coin | France | 250 |
3 | Heineken | Blonde | Hollande | 1 | Bar du Coin | France | 50 |
4 | Newcastle | Rousse | UK | 1 | Bar du Coin | France | 10 |
5 | Spaten | Blonde | Allemagne | 1 | Bar du Coin | France | 10 |
6 | Bush | Blonde | USA | 1 | Bar du Coin | France | 10 |
7 | Kanterbrau | Blonde | France | 1 | Bar du Coin | France | 20 |
8 | Kronenbourg | Brune | France | 1 | Bar du Coin | France | 20 |
1 | Kronenbourg | Blonde | France | 2 | Corners Pub | USA | 100 |
6 | Bush | Blonde | USA | 2 | Corners Pub | USA | 1500 |
5 | Spaten | Blonde | Allemagne | 3 | Cafe der Ecke | Allemagne | 5000 |
Construire un arbre de requêtes pour créer une vue (\(barsdumonde\)) sur les informations “métier” (sans les clés id_bar et id_biere) répondant à la question :
- « récupérer les bars qui servent de la bière ».
TablesOpérateurs unairesOpérateurs binaires |
Vue d'ensemble | |
---|---|
|
bar | pays | stock | biere | couleur | origine |
---|---|---|---|---|---|
Bar du Coin | France | 1000 | Kronenbourg | Blonde | France |
Bar du Coin | France | 250 | Guinness | Brune | Irlande |
Bar du Coin | France | 50 | Heineken | Blonde | Hollande |
Bar du Coin | France | 10 | Newcastle | Rousse | UK |
Bar du Coin | France | 10 | Spaten | Blonde | Allemagne |
Bar du Coin | France | 10 | Bush | Blonde | USA |
Bar du Coin | France | 20 | Kanterbrau | Blonde | France |
Bar du Coin | France | 20 | Kronenbourg | Brune | France |
Corners Pub | USA | 100 | Kronenbourg | Blonde | France |
Corners Pub | USA | 1500 | Bush | Blonde | USA |
Cafe der Ecke | Allemagne | 5000 | Spaten | Blonde | Allemagne |
On utilise ici l’opération de jointure naturelle \(\Join_{[]}\) entre deux tables (\(S,T\)) :
- \(\Join_{[]}(S,T)\).
On réalise une première jointure naturelle (\(NJ_1\)) entre les tables bars,services
:
- \(NJ_1=\Join_{[]}(bars,services)\)
suivi d’une deuxième jointure (\(NJ_2\)) entre le résultat précédent et la table des bieres
:
- \(NJ_2=\Join_{[]}(NJ_1,bieres)\)
Le résultat final (\(barsdumonde\)) s’exprimera en appliquant une projection sur les informations “métier” issues de la jointure précédente :
- \(barsdumonde=\Pi_{(bar,pays,stock,biere,couleur,origine)}(NJ_2)\)
Ecriture en algèbre relationnelle :
Arbre de requêtes : bars-7.json
- \(Q_1=barsdumonde=\Pi_{(bar,pays,stock,biere,couleur,origine)}(\Join_{[]}(\Join_{[]}(bars,services),bieres))\)
TablesOpérateurs unairesOpérateurs binaires |
Vue d'ensemble | |
---|---|
|
bar | pays | stock | biere | couleur | origine |
---|---|---|---|---|---|
Bar du Coin | France | 1000 | Kronenbourg | Blonde | France |
Bar du Coin | France | 250 | Guinness | Brune | Irlande |
Bar du Coin | France | 50 | Heineken | Blonde | Hollande |
Bar du Coin | France | 10 | Newcastle | Rousse | UK |
Bar du Coin | France | 10 | Spaten | Blonde | Allemagne |
Bar du Coin | France | 10 | Bush | Blonde | USA |
Bar du Coin | France | 20 | Kanterbrau | Blonde | France |
Bar du Coin | France | 20 | Kronenbourg | Brune | France |
Corners Pub | USA | 100 | Kronenbourg | Blonde | France |
Corners Pub | USA | 1500 | Bush | Blonde | USA |
Cafe der Ecke | Allemagne | 5000 | Spaten | Blonde | Allemagne |