Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
public:std-3:cm2:interrogation_des_bases_de_donnees:3.2.2_operateurs_multi-tables [2016/10/03 12:45] – [Jointure] edauce | public:std-3:cm2:interrogation_des_bases_de_donnees:3.2.2_operateurs_multi-tables [2018/01/17 13:26] (Version actuelle) – edauce | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ===== 3.2.2 Opérateurs multi-tables ===== | ||
+ | Principe : recoupement d' | ||
+ | * Croisement des critères de sélection : **Jointure** | ||
+ | * Recherche ciblée : **Division** | ||
+ | |||
+ | ==== Jointure : ⋈ ==== | ||
+ | |||
+ | <note important> | ||
+ | **Union de deux éléments :** | ||
+ | * Soient les relations r et s de schémas R et S. | ||
+ | * On note R ⋂ S la liste des attributs communs aux deux schémas et R ⋃ S la liste des attributs appartenant à R ou à S. | ||
+ | * soit t ∈ r et q ∈ s tels que t(R ⋂ S) = q(R ⋂ S) | ||
+ | On note t ⋃ q le tuple formé des valeurs de t et de q étendues au schéma R ⋃ S | ||
+ | </ | ||
+ | |||
+ | <note important> | ||
+ | **Produit cartésien ** | ||
+ | * Soient r et s (de schémas R et S), avec R ⋂ S = Ø | ||
+ | Le produit cartésien r × s est une nouvelle table de schéma R ⋃ S combinant les tuples de r et de s de toutes les façons possibles : | ||
+ | r×s={t∪q:t∈r,q∈s} | ||
+ | </ | ||
+ | |||
+ | * La **jointure** est une opération qui consiste à effectuer un produit cartésien des tuples de deux relations pour lesquelles certaines valeurs correspondent. | ||
+ | * Le résultat de l' | ||
+ | |||
+ | <note important> | ||
+ | **Jointure** | ||
+ | * Soient r et s (de schémas R et S), avec R ⋂ S ≠ Ø | ||
+ | * La **jointure** | ||
+ | r⋈s={t∪q:t∈r,q∈s,t(R∩S)=q(R∩S)} | ||
+ | </ | ||
+ | |||
+ | <note tip> | ||
+ | **Exemple** | ||
+ | |||
+ | |||
+ | **Matière_première :** | ||
+ | ^nom_matière^unité^prix^ | ||
+ | |pétrole|baril|45$| | ||
+ | |gaz|GJ|3$| | ||
+ | |uranium|lb|12$| | ||
+ | |||
+ | |||
+ | **Exportations :** | ||
+ | ^nom_pays^nom_matière^quantité^ | ||
+ | |Algérie|pétrole|180.000| | ||
+ | |Algérie|gaz|20.000| | ||
+ | |Niger|uranium|30.000| | ||
+ | |Arabie Saoudite|pétrole|2.000.000| | ||
+ | |Arabie Saoudite|gaz|750.000| | ||
+ | |||
+ | **Matière_première ⋈ Exportations **: | ||
+ | ^nom_pays^nom_matière^quantité^unité^prix^ | ||
+ | |Algérie|pétrole|180.000|baril|45$| | ||
+ | |Algérie|gaz|20.000|GJ|3$| | ||
+ | |Niger|uranium|30.000|lb|12$| | ||
+ | |Arabie Saoudite|pétrole|2.000.000|baril|45$| | ||
+ | |Arabie Saoudite|gaz|750.000|GJ|3$| | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | **Exemples de requêtes ** | ||
+ | |||
+ | |||
+ | |||
+ | * “//Donner la liste des PIB/hab des pays exportateurs de pétrole// | ||
+ | ΠPIB/hab(σnom_matière = pétrole(Pays⋈Exportations)) | ||
+ | |||
+ | < | ||
+ | **Schéma de base relationnelle** : | ||
+ | |||
+ | * **Clients** ( __nom_client__, | ||
+ | * **Commandes** ( __num_Commande__, | ||
+ | * **Fournisseurs** ( __nom_fournisseur__, | ||
+ | * **Catalogue** ( __nom_fournisseur, | ||
+ | </ | ||
+ | |||
+ | * “//Donner le nom et l' | ||
+ | Πnom_client,adresse_client(σcomposant = 'micro-controller'(Client⋈Commandes)) | ||
+ | |||
+ | |||
+ | ====Requêtes multi-tables en SQL==== | ||
+ | |||
+ | <code sql> | ||
+ | SELECT | ||
+ | FROM R1, …, Rm // liste de tables | ||
+ | WHERE F1 AND … AND Fl // liste de conditions sur les attributs | ||
+ | // (en particulier conditions sur les attributs | ||
+ | // sur lesquel | ||
+ | </ | ||
+ | |||
+ | Pour exprimer la jointure sur l’attribut ' | ||
+ | |||
+ | **Exemples :** | ||
+ | |||
+ | <code sql> | ||
+ | SELECT PIB_par_hab | ||
+ | FROM Pays NATURAL JOIN Exportations | ||
+ | WHERE nom_matiere = ' | ||
+ | </ | ||
+ | |||
+ | <code sql> | ||
+ | SELECT PIB_par_hab | ||
+ | FROM Pays, Exportations | ||
+ | WHERE nom_matiere = ' | ||
+ | AND Pays.nom_pays = Exportations.nom_pays | ||
+ | </ | ||
+ | |||
+ | <code sql> | ||
+ | SELECT PIB_par_hab | ||
+ | FROM Pays | ||
+ | WHERE nom_pays IN ( | ||
+ | select | ||
+ | FROM Exportations | ||
+ | WHERE nom_matiere = ' | ||
+ | ) | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ==== Division==== | ||
+ | <note important> | ||
+ | * Soient r (de schémas R) et s (de schémas S), avec S ⊆ R : | ||
+ | La division r ÷ s est la relation (table) u de schéma R-S maximale contenant des tuples tels que u × s ⊆ r (avec × représentant le produit cartésien) | ||
+ | |||
+ | r÷s={t|∀q∈s,t∪q∈r} | ||
+ | |||
+ | → on cherche les éléments de t qui “correspondent” à s | ||
+ | </ | ||
+ | |||
+ | {{public: | ||
+ | |||
+ | |||
+ | |||
+ | __Previous__ : [[public: | ||
+ | __Up__ : [[public: | ||
+ | __Next__ : [[public: |