Bases de Données Relationnelles (à partir du cours de G.Cécé ) Samir Chouali [email protected] -1- Bibliographie « Conception et architecture des Bases de Données», R. Elmasri, S. Navathe et D. Serain, Pearson Education, 2004. « Des Bases de Données à l'Internet », P. Mathieu, Vuibert, 2000. http://www.lifl.fr/~mathieu/bdd « Bases de Données Objet & Relationnel », G. Gardarin, Eyrolles, 1999. -2- Plan Généralités - Définitions - Propriétés des SGBD Modélisation - Le Modèle Conceptuel de Données (MCD) - Le Modèle Relationnel (MR) - Passage du MCD au Modèle Relationnel Contraintes d’intégrité Algèbre relationnelle Langage de requêtes SQL Normalisation des relations -3- Définitions Base de données : - Ensemble de données qui modélisent une partie du monde réel pour une application informatique. Système de Gestion de Base de Données (SGBD) : - Outil qui permet d’insérer, modifier, retirer et rechercher des données ; le tout de façon efficace. - Interface entre les utilisateurs et l’information brute - Présente les informations dans une forme exploitable -4- Les Trois Couches d’un SGBD Système de gestion de fichiers : - gère le stockage physique des informations (dépend du matériel). SGBD interne : - assemble et place les données, gère les liens entre les données et y garantit un accès rapide. SGBD externe : - s’occupe de la présentation et de la manipulation des données. Permet l’utilisation de langages de requêtes élaborés et d’outils de présentation adaptés. -5- Propriétés des SGBD (1) Indépendance physique - transparence de la gestion des données au niveau physique. Indépendance logique - chacun possède sa propre vue des données. Manipulable par des non informaticiens - utilisation de langages non procéduraux (pas de programmation). -6- Propriétés des SGBD (2) Accès aux données efficaces - optimisation des accès aux données. Administration centralisées des données - outils de sauvegarde des données, de réplication, ... Non redondance des données. - évite la duplication des informations ce qui facilite la gestion. Cohérence des données - gestion automatique des contraintes d’intégrité. -7- Propriétés des SGBD (3) Partage des données - plusieurs personnes peuvent accéder aux données simultanément tout en conservant l’intégrité de la base. Sécurité des données - protection contre les accès non autorisés. - tolérance aux pannes. -8- Types de Bases de Données (1) Les bases hiérarchiques Les bases réseaux (CODASYL) Les bases relationnelles - données sous formes de tables basées sur l’algèbre relationnelle et un langage, de manipulation, déclaratif (SQL). Les bases déductives - données sous formes de tables (prédicats), le langage d’interrogation est basé sur le calcul des prédicats et la logique du premier ordre. -9- Types de Bases de Données (2) Les bases objets - données représentées sous forme d’instances de classes hiérarchisées. 75% des SGBD sont des bases relationnelles Les bases objets gagnent du terrain - 10 - 4. Le marché des SGBD Marché en 2003 : 7 milliards de dollars Aujourd’hui 3 leaders : IBM, Oracle, Microsoft Parts de m arché 2003 IBM Oracle Microsoft NCR Inform ix Autres source: www.gartner.com Mai 2004 Modélisation Modèle Conceptuel de Données (MCD) - 12 - Modélisation Réalité perçue Modélisation conceptuelle Transformation dans un modèle supporté par un SGBD Définition de la structure de données de la base Modèle entité association Modèle relationnel SQL - 13 - Modélisation Le résultat de l’analyse est le Modèle Conceptuel de Données (MCD) qui décrit la future base de données à l’aide d’entités et d’associations. Employé Numéro d’employé Nom Prénom Date d’embauche Fonction Rémunération 0,n participe Date début Date fin 1,n Tâche Nom de la tâche Coût de la tâche - 14 - Vocabulaire (1) Entité : - représentation d’un objet, matériel ou immatériel (ex. : Étudiant, Voiture, Vin, etc...). - une entité est composée de propriétés. Propriété : - donnée élémentaire et indécomposable (ex. : age, note, nom, adresse, date de naissance, etc...). - 15 - Vocabulaire (2) Association - représentation d’un lien entre différentes entités. - des propriétés peuvent être attachées à une association. Dimension - nombre d’entités intervenants dans l’association (1 : association réflexive; 2 : association binaire; n : association n-aire) Cardinalité - caractérise le lien entre une entité et une association. Elle est constituée d’une borne minimale et d’une borne maximale. - 16 - Vocabulaire (3) Cardinalité (suite) - Nombre de fois qu’une occurrence de l’entité participe aux occurrences de l’association. Identifiant - une ou plusieurs propriétés d’une entité telles qu’à chaque valeur de l’identifiant correspond une et une seule occurrence de l’entité. - l’identifiant d’une association est constitué de la réunion des identifiants des entités qui participent à l’association. - 17 - Exemple de MCD encadre a pour chef 0,1 0,n est chef de Employé Numéro d’employé Nom Prénom Date d’embauche Fonction Rémunération Projet coordonne 0,n 1,1 Numéro du projet Thème du projet Titre du projet Date de début Date de fin 1,n 0,n participe Date début Date fin 1,n Tâche Nom de la tâche Coût de la tâche Constitué_de 1,1 - 18 - Modèle Conceptuel des Données • Exemple "KaafKaaf" – – PARTIE 1 La société "KaafKaaf" désire informatiser son système de facturation. Les factures devraient se présenter de la façon suivante – Créez un MCD, qui permet de modéliser correctement le système d'information nécessaire, sachant que: – Un client peut bien sûr recevoir plusieurs factures, mais il est uniquement considéré comme tel à partir du moment où il reçoit sa première facture. – Une facture concerne un et un seul client. Modèle Conceptuel des Données • Remarque: – Bien que le numéro du client n'apparaisse pas en tant que tel sur la facture, il est préférable d'ajouter cette propriété artificielle à l'entité Client, et de la définir comme identifiant de cette entité. Cela nous empêche de devoir définir un identifiant composé de trop de propriétés. Modèle Conceptuel des Données • PARTIE 2 – Il s'agit d'étendre le MCD de la partie 1. – Le responsable de la facturation de la société désire rendre les factures plus informatives. Comme un client peut acheter plusieurs articles différents en même temps, la facture devrait indiquer pour chaque article le numéro , un libellé, le prix unitaire, la quantité vendue et le prix total pour ce type d'article. – Voici l'aspect que la facture devrait avoir: – Proposez un nouveau MCD qui reflète ces modifications, en respectant que: – Tous les articles disponibles sont stockés (p.ex. No=234 Libellé="Marteau" PU=470 Luf.). Même si un article n'est pas encore considéré par une facture, il existe dans le système d'information. Modèle Conceptuel des Données • Remarques: – L'entité Facture ne contient plus la propriété Montant. Il existe une règle générale de conception qui dit: • Aucune propriété qui peut être calculée à partir d'autres propriétés existantes, ne devra être stockée dans le MCD. – Pour la même raison, on n'a pas besoin de modéliser explicitement le prix à payer pour l'achat d'une quantité d'articles donnés. Le prix pour chaque article figurant sur la facture peut être calculé à partir du prix unitaire et de la quantité Modèle Conceptuel des Données • Exemple "Gestion d'école" – – – – – – – PARTIE 1 Dans une école, on veut informatiser le système d'information qui gère les classes. Elaborez un MCD sachant que: Un élève est caractérisé par son no. matricule, son nom et prénom, ainsi que sa date de naissance. Une classe est caractérisée par le nom de la classe et par une indication du cycle. Il faudra prévoir de connaître la fréquentation des classes des élèves sur plusieurs années consécutives. Un élève enregistré dans le système fréquente au moins une classe au cours des années. Modèle Conceptuel des Données • PARTIE 2 • Il s'agit maintenant de concevoir une extension au MCD précédent qui permet de représenter la situation suivante: • La direction de l'école désire également saisir tous les professeurs dans le système d'information. Un professeur est caractérisé par un code interne unique , son nom et prénom et la matière qu'il enseigne. Nous supposons que chaque professeur enseigne une seule matière. • Modélisez le fait que chaque classe est enseignée chaque année par un ou plusieurs enseignants. Un enseignant peut bien sûr donner des cours dans plusieurs classes, mais peut également ne pas donner des cours pendant une ou plusieurs années. Exercices Exercice 1 Un magasin de sport a besoin de stocker ses informations principales dans une base de données. Il s'agit de stocker toutes les informations relatives à ses produits, ses clients et ses fournisseurs. Il souhaite que l'organisation soit facilitée par le regroupement des produits en différentes catégories. Et il souhaite à partir de là pouvoir facilement consulter ses stocks, la liste de ses meilleurs clients, le top 10 de ses produits vendus. Créer le MCD correspondant. - 25 - Exercices Exercice 2 Une agence immobilière a besoin d'une base de données pour gérer ses locations. Il faut entre autres qu'elle soit capable de cibler les logements pouvant convenir à un client donné. Elle souhaite également pouvoir facilement dresser la facture d'un client donné, savoir ce qu'elle doit verser à un propriétaire donné, ou calculer les primes de ses agents. Créer le MCD correspondant. - 26 - Le Modèle Relationnel - 27 - Modèle Relationnel Les SGBD relationnels - organisent les données en tables - sont basés sur l’algèbre relationnelle (théorie des ensembles). - 28 - Exemple NoProf NoCours Intitule 1 Supervision 2 Base de données 3 Introduction Réseaux Nom 1 Cécé 2 Bourgeois NoProf NoCours 1 1 2 Nom Prof Cécé Bourgeois Cécé 2 3 1 VolumeHoraire 7.5 9 6 Intitule Cours Base de données Supervision Introduction Réseaux VolumeHoraire 7.5 6 9 - 29 - Domaines Exemples - ENTIER REEL CHAINES DE CARACTERES - SALAIRE = {4 000..100 000} COULEUR= {BLEU, BLANC, ROUGE} - POINT = {(X:REEL,Y:REEL)} TRIANGLE = {(P1:POINT, P2:POINT, P3:POINT)} - 30 - Produit Cartésien Le produit cartésien D1x D2x ... x Dn est l'ensemble des tuples (n-uplets) : <V1,V2, …, Vn> tel que Vi Di Exemple - D1 = {Bleu, Blanc, Rouge} D2 = {Vrai, Faux} Bleu Vrai Bleu Faux Blanc Vrai Blanc Faux Rouge Vrai Rouge Faux - 31 - Relation (ou Table) Sous-ensemble du produit cartésien d'une liste de domaines Une relation est caractérisée par un nom Exemple - D1 = COULEUR - D2 = BOOLEEN CoulVins Coul Choix Bleu Faux Blanc Vrai Rouge Vrai - 32 - Exemple de Relation VINS CRU MILL REGION CHENAS 1983 BEAUJOLAIS TOKAY 1980 ALSACE TAVEL 1986 RHONE CHABLIS 1986 BOURGOGNE ST-EMILION 1987 BORDELAIS COULEUR ROUGE BLANC ROSE BLANC ROUGE - 33 - Attribut Vision tabulaire du relationnel - Une relation est une table à deux dimensions - Une ligne est un tuple - Un nom est associé à chaque colonne afin de la repérer autrement que par sa position Attribut - nom donné à une colonne d'une relation - prend ses valeurs dans un domaine - 34 - Clé Groupe d'attributs minimum qui détermine un tuple unique dans une relation Exemples - {CRU,MILLESIME} dans VINS - NSS dans PERSONNE Clé étrangère - Groupe d'attributs formant la clé d’une autre relation - 35 - Schéma D’une relation - Nom de la relation, liste des attributs avec domaines et clés de la relation Exemple - VINS(NV :entier, CRU :texte, MILL :entier, DEGRE :réel, REGION :texte) - Par convention, la clé primaire est soulignée Schéma d'une bd relationnelle - C’est l'ensemble des schémas des relations composantes - 36 - Exemple de Schéma Exemple BUVEURS (NB, NOM, PRENOM, TYPE) VINS (NV, CRU, MILL, DEGRE) ABUS (NB, NV, DATE, QUANTITE) Clés étrangères ABUS.NV fait référence à VINS.NV ABUS.NB fait référence à BUVEURS.NB - 37 - Diagramme des Liens BUVEURS NB NOM PRENOM ABUS TYPE NB NV VINS DATE NV CRU MILL. DEGRE QUANTITE - 38 - Vocabulaire comparé MCD Modèle Relationnel Entité Propriété Identifiant Association Table Attribut, Colonne Clé Relation - 39 - Du MCD vers les Tables Relationnelles - 40 - Transformation Traitement des entités - Chaque entité devient une table. - Chaque propriété devient une colonne de cette table. - L’identifiant d’une entité devient la clé primaire de la table correspondante. Traitement des associations - Le traitement des associations dépend des cardinalités des ces associations. - 41 - Association binaire Cardinalités (*,n) - (*,n) (*,*) - (*,1) Traitement Création d’une nouvelle table dont la clé contient nécessairement les identifiants des deux entités. Les propriétés de l’association migrent aussi vers la nouvelle table. La clé étrangère du coté (*,*) migre vers le coté (*,1). Les propriétés de l’association migrent aussi vers le coté (*,1). - 42 - Exemple : (*,1) - (*,*) De : Vin 1,1 NoVin Cru Mill. Degré 1,n Recolte Producteur NoP Nom Région Quantite À: NoVin 1 2 Cru Mill. Volnay 1983 Chenay 1996 Degre 12 12,5 NoP* 2 1 Quantite 15 25 NoP 1 2 Nom Gerardus Toeuf Région Monbien Besancit - 43 - Association n-aires - création d’une nouvelle table dont la clé est au moins composée des identifiants des différentes entités. - les propriétés de cette association migrent aussi vers la nouvelle table. - 44 - Exemple De : Prof NoProf Nom 1,n Enseigne 1,n VolumeHoraire Cours NoCours Intitulé À: NoProf Nom 1 Cece 2 Bourgeois NoCours Intitule 1 Supervision 2 Base de données 3 Introduction Réseaux NoProf NoCours VolumeHoraire 1 2 7.5 1 3 9 2 1 6 - 45 - Exercice encadre a pour chef 0,1 0,n est chef de Employé Numéro d’employé Nom Prénom Date d’embauche Fonction Rémunération Projet coordonne 0,n 1,1 Numéro du projet Thème du projet Titre du projet Date de début Date de fin 1,n 0,n participe Date début Date fin 1,n Tâche Nom de la tâche Coût de la tâche Constitué_de 1,1 - 46 - Contraintes - 47 - Contraintes d’Intégrité Une contrainte d’intégrité est une assertion (c-à-d une propriété) qui doit être vérifiée par les données de la base Si une contrainte d’intégrité n’est pas respectée lors d’une modification des données, la modification est rejetée et l’utilisateur est averti - 48 - Contraintes de Clé Tous les constituants d’une clé primaire doivent être renseignés. Il ne peuvent prendre la valeur Null. Deux enregistrements différents ne peuvent avoir de valeurs de clé identiques. - 49 - Contraintes de Types de Données Permet de spécifier le domaine de validité des valeurs des attributs. - Exemples : une note doit être comprise entre 0 et 20. la date d’emprunt d’un livre est antérieure à sa date de retour - 50 - Contraintes d’Intégrité Référentielle BUVEURS NB NOM PRENOM ABUS TYPE NB NV VINS DATE NV CRU MILL. DEGRE QUANTITE - 51 - Contraintes d’Intégrité Référentielle Un constituant d’une clé étrangère doit limiter ses valeurs à l’ensemble des valeurs présentes dans la table d’origine de la clé. Si un enregistrement d’une table est supprimé, tous les enregistrements des autres tables faisant référence à cet enregistrement, à travers des clés étrangères, doivent normalement être supprimés. - 52 - Algèbre Relationnelle - 53 - Concepts Manipulatoires Un ensemble d'opérations formelles Ces opérations permettent d'exprimer toutes les requêtes sous forme d'expressions algébriques Elles sont la base du langage SQL (SQL est un paraphrasage en anglais des expressions algébriques) - 54 - Opérations Ensemblistes Opération ensembliste pour des relations de même schéma - UNION notée - INTERSECTION notée - DIFFERENCE notée — ou \ - 55 - Projection Élimination des attributs non désirés et suppression des tuples en double notée A1,A2,...Ap (R) VINS Cru VOLNAY VOLNAY CHENAS JULIENAS Mill 1983 1979 1983 1986 Région BOURGOGNE BOURGOGNE BEAUJOLAIS BEAUJOLAIS Qualité A B A C Cru,Région Cru,Région(VINS) Cru Région VOLNAY BOURGOGNE CHENAS BEAUJOLAIS JULIENAS BEAUJOLAIS - 56 - Restriction Sélection des tuples de R satisfaisant un critère Q notée Q(R) Q est le critère de qualification de la forme : - Ai Valeur - avec : { =, <, >=, >, <=} Il est possible de réaliser des "ou" (union) et des "et" (intersection) de critères simples - 57 - Exemple de Restriction VINS Cru VOLNAY VOLNAY CHENAS JULIENAS Mill 1983 1979 1983 1986 Région Qualité BOURGOGNE A BOURGOGNE B BEAUJOLAIS A BEAUJOLAIS C MILL>1983 VINS Cru Mill JULIENAS 1986 Région Qualité BEAUJOLAIS C CRU="VOLNAY" CRU="CHENAS" - 58 - Produit Cartésien Soient R1 et R2 deux relations. Le produit cartésien R3 = R1 x R2 est une relation qui a pour ensemble d'attributs l'union de ceux de R1 et de ceux de R2 et pour tuples toutes les combinaisons possibles des lignes de R1 et de lignes de R2. - 59 - Exemple de Produit Cartésien R A 1 4 7 B 2 5 8 RxS C 3 6 9 S A 1 1 4 4 7 7 B 2 2 5 5 8 8 C 3 3 6 6 9 9 D 3 6 3 6 3 6 D 3 6 E 1 2 E 1 2 1 2 1 2 - 60 - Jointure Soient R(A1, …, An) et S(B1, …, Bm) deux relations et Q un critère impliquant les attributs Ai et Bj. La jointure de R et de S suivant le critère Q est l’ensemble des éléments du produits cartésien RxS satisfaisant le critère Q Elle se note : R S Q - 61 - Exemple de Jointure R A 1 4 7 B 2 5 8 R C 3 6 9 S B<D S A 1 1 4 B 2 2 5 C 3 3 6 D 3 6 D 3 6 6 E 1 2 E 1 2 2 - 62 - Jointures Particulières L’équi-jointure est une jointure avec pour critère l’égalité de certaines colonnes. La jointure naturelle est une equi-jointure où le critère est l’égalité entre colonnes de même nom, suivie de la projection qui ne conserve qu’une colonne par nom. - 63 - Exemple de Jointure Naturelle VINS Cru VOLNAY VOLNAY CHABLIS JULIENAS LOCALISATION VINSREG Cru VOLNAY VOLNAY CHABLIS CHABLIS Mill 1983 1979 1983 1983 Mill 1983 1979 1983 1986 Cru VOLNAY CHABLIS CHABLIS Qualité A B A A Qualité A B A C Région Bourgogne Bourgogne Californie Région Bourgogne Bourgogne Bourgogne Californie - 64 - Utilisation Pratique Prof NoProf Nom 0,n Enseigne VolumeHoraire 0,n Cours NoCours Intitulé - 65 - Utilisation Pratique (suite) Tables de l’exemple : NoProf Nom 1 Cece 2 Bourgeois NoCours Intitule 1 Supervision 2 Base de données 3 Introduction Réseaux NoProf NoCours VolumeHoraire 1 2 7.5 1 3 9 2 1 6 Jointure naturelle : NoProf Nom 1 Cece 2 Bourgeois 1 Cece Projection, (Nom, Intitule, VolumeHoraire) puis renommage des colonnes : NoCours Intitule 2 Base de données 1 Supervision 3 Introduction Réseaux VolumeHoraire 7.5 6 9 Nom Prof Intitule Cours Cece Base de données Bourgeois Supervision Cece Introduction Réseaux VolumeHoraire 7.5 6 9 - 66 - Structured Query Language (SQL) - 67 - Définition SQL (Structured Query Language) est un langage de définition et de manipulation de bases de données relationnelles. - 68 - Les Trois Niveaux DDL (Data Definition Language) - permet de créer, modifier, supprimer les tables DML (Data Manipulation Language) - permet de manipuler les données contenues dans les tables (sélection, ajout, modification, suppression) DCL (Data Control Language) - permet de gérer les accès des utilisateurs aux tables - 69 - Principaux ordres SQL DDL ALTER CREATE COMMENT DROP RENAME DML DELETE INSERT SELECT UPDATE DCL GRANT REVOKE - 70 - Tables des exemples Fournisseur fno 10 11 12 13 14 15 16 17 19 Produit nom adresse v ille Dupo nt Lille Martin Amie ns Jaquet Lyon Durand Lyon Martin Nice Durand Lille Dupo nt Paris Lefebvre Lille Maurice Paris pno 101 102 103 104 105 106 107 108 cno 1001 1003 1005 1007 1011 1013 1017 1019 1023 1029 fno 17 15 17 15 19 13 19 14 10 17 design fauteuil fauteuil bureau bureau armoire caison caison classeur pno 103 103 102 108 107 107 105 103 102 108 qute 10 2 1 1 12 5 3 10 8 15 prix 2,000.00 1,500.00 3,500.00 4,000.00 2,500.00 1,000.00 1,000.00 1,500.00 poids F F F F F F F F couleur 7 gris 9 rouge 30 vert 40 gris 35 rouge 12 gris 12 ja une 20 ble u Commande - 71 - Sélection simple (1) SELECT DISTINCT design FROM Produit ; design armoire bureau caison classeur fauteuil SELECT DISTINCT design FROM Produit WHERE prix > 2000 design armoire bureau ; - 72 - Sélection simple (2) SELECT DISTINCT design, prix FROM Produit ; SELECT * FROM Produit ; design armoire bureau bureau caison classeur fauteuil fauteuil pno design 101 fauteuil 102 fauteuil 103 bureau 104 bureau 105 armoire 106 caison 107 caison 108 classeur prix 2,500.00 EUR 3,500.00 EUR 4,000.00 EUR 1,000.00 EUR 1,500.00 EUR 1,500.00 EUR 2,000.00 EUR prix 2,000.00 1,500.00 3,500.00 4,000.00 2,500.00 1,000.00 1,000.00 1,500.00 F F F F F F F F poids couleur 7 gris 9 rouge 30 vert 40 gris 35 rouge 12 gris 12 ja une 20 ble u - 73 - Sélection simple ordonnée Présentation SELECT DISTINCT design, couleur FROM Produit WHERE couleur IN ("rouge", "vert") ORDER BY design DESC; SELECT DISTINCT design AS Nom du produit FROM Produit WHERE couleur IN ("rouge", "vert") ORDER BY design ASC; design fauteuil bureau armoire couleur rouge vert rouge Nom du produit armoire bureau fauteuil - 74 - Jointure Produit cartésien SELECT * FROM Produit, Commande, Fournisseur ; Jointure - « Donner toutes les informations concernant les commandes » SELECT * FROM Produit, Commande, Fournisseur WHERE Produit.pno = Commande.pno AND Fournisseur.fno = Commande.fno; - 75 - Jointure Jointure (résultat) SELECT * FROM Produit, Commande, Fournisseur WHERE Produit.pno = Commande.pno AND Fournisseur.fno = Commande.fno; P roduits. pno 103 103 102 108 107 107 105 103 102 108 de sign bureau bureau fauteuil c las s eur c ais on c ais on arm oire bureau fauteuil c las s eur prix 3,500.00 3,500.00 1,500.00 1,500.00 1,000.00 1,000.00 2,500.00 3,500.00 1,500.00 1,500.00 poids F F F F F F F F F F 30 30 9 20 12 12 35 30 9 20 coule ur vert vert rouge bleu jaune jaune rouge vert rouge bleu cno 1001 1003 1005 1007 1011 1013 1017 1019 1023 1029 co m m ande co m m ande qute Fournisse urs. .fno .pno fno 17 103 10 17 15 103 2 15 17 102 1 17 15 108 1 15 19 107 12 19 13 107 5 13 19 105 3 19 14 103 10 14 10 102 8 10 17 108 15 17 no m adre sse Lefebvre D urand Lefebvre D urand Mauric e D urand Mauric e Martin D upont Lefebvre v ille Lille Lille Lille Lille P aris Lyon P aris Nic e Lille Lille - 76 - Jointure Jointure - projection SELECT cno, design, nom AS Nom fournisseur, qute FROM Produit, Commande, Fournisseur WHERE Produit.pno = Commande.pno AND Fournisseur.fno = Commande.fno; cno design 1001 bureau 1003 bureau 1005 fauteuil 1007 classeur 1011 caison 1013 caison 1017 armoire 1019 bureau 1023 fauteuil 1029 classeur Nom fournisseur qute Lefebvre 10 Durand 2 Lefebvre 1 Durand 1 Maurice 12 Durand 5 Maurice 3 Martin 10 Dupo nt 8 Lefebvre 15 - 77 - Calcul Jointure - projection - calcul SELECT no, design, nom AS Nom fournisseur, prix, qute, prix*qute AS Total FROM Produit, Commande, Fournisseur WHERE Produit.pno = Commande.pno AND Fournisseur.fno = Commande.fno; cno design 1001 bureau 1003 bureau 1005 fauteuil 1007 classeur 1011 caison 1013 caison 1017 armoire 1019 bureau 1023 fauteuil 1029 classeur Nom fournisseur Lefebvre Durand Lefebvre Durand Maurice Durand Maurice Martin Dupo nt Lefebvre prix 3,500.00 3,500.00 1,500.00 1,500.00 1,000.00 1,000.00 2,500.00 3,500.00 1,500.00 1,500.00 F F F F F F F F F F qute 10 2 1 1 12 5 3 10 8 15 Total 35,000 7,000 1,500 1,500 12,000 5,000 7,500 35,000 12,000 22,500 F F F F F F F F F F - 78 - Sous requête Question liste des numéros de fournisseurs livrant au moins un produit en quantité supérieure à chacun des produits livrés par le fournisseur 19 SELECT fno FROM Commande WHERE qute > ALL (SELECT qute FROM Commande WHERE fno = 19) fno 17 - 79 - Fonctions statistiques AVG Moyenne COUNT Nombre d’éléments MAX Maximum MIN Minimum SUM Somme - 80 - Exemples d'agrégats (Regroupements) VINS CRU MILL DEGRE CHABLIS 1977 10.9 100 CHABLIS 1987 11.9 250 VOLNAY 1977 10.8 400 VOLNAY 1986 11.2 300 MEDOC 1985 11.2 200 SELECT CRU, SUM(QUANTITE) FROM VINS GROUP BY CRU; SELECT AVG(DEGRE) FROM VINS; AVG QUANTITE DEGRE 11.2 SUM CRU SUM(QUANTITE) CHABLIS 350 VOLNAY 700 MEDOC 200 - 81 - COUNT Comptage de tuples - compter le nombre de commandes passées SELECT COUNT(*) FROM Commande; COUNT(*) 10 NbRouge compter le nombre de produits de couleur rouge SELECT COUNT(*) AS NbRouge FROM Produit WHERE couleur = ‘ rouge ’; 2 - 82 - SUM Sommations - Total des quantités commandées de produits de couleur rouge. SELECT SUM(qute) AS QuteCmdRouge FROM Commande, Produit WHERE Commande.pno = Produit.pno AND couleur = rouge; QuteCmdRouge 12 - 83 - SUM et agrégats Calculs sur les tuples et regroupement - Total des quantités commandées par numéro de produit. SELECT SUM(qute) AS QuteCmd , pno FROM Commande GROUP BY pno; QuteCmd pno 9 102 22 103 3 105 17 107 16 108 - 84 - Forme générale Consultation de tables SELECT [ALL | DISTINCT] <attributs> FROM <tables> [ WHERE <conditions> GROUP BY <attributs> HAVING <conditions> ORDER BY <attributs> ] ; - 85 - Autres Exemples (1) Calcul sur les tuples - « Donner le nom des buveurs ayant consommé plus que la moyenne » SELECT Buveurs.nom FROM Buveurs, Abus WHERE AND Buveurs.nb = Abus.nb Abus.qte > ( SELECT AVG(Abus.qte) FROM Abus ) ; - 86 - Autres Exemples (2) Calcul sur les tuples et regroupements - « Donner le nom et la quantité de vin bue par chaque buveur ayant consommé plus de 10 litres » SELECT Buveurs.nom, SUM(Abus.qte) FROM Buveurs, Abus WHERE Buveurs.nb = Abus.nb GROUP BY Buveurs.nom HAVING SUM(Abus.qte) > 10 ; - 87 - Autres Exemples (3) Requête d’insertion - « Ajouter un buveur » INSERT INTO Buveurs (nb, nom, ville, type) VALUES (8, Dupont, Lyon, Petit) - 88 - Autres Exemples (4) Requête d’insertion - « Ajouter dans la table Petit_Buveurs, les petits buveurs contenus dans la table Buveurs » INSERT INTO Petit_Buveurs (nb, nom) SELECT Buveurs.nb, Buveurs.nom FROM Buveurs WHERE Buveurs.type = ‘ Petit ’ ; - 89 - Autres Exemples (5) Requête de mise à jour - « Modifier le type des buveurs habitant Bordeaux en gros buveurs » UPDATE Buveurs SET Buveurs.type = ‘ gros ’ WHERE Buveurs.ville = ‘ Bordeaux ’ ; - 90 - Autres Exemples (6) Requête de suppression - « Supprimer tous les petits buveurs » DELETE FROM Buveurs WHERE Buveurs.type = ‘ Petit ’ ; - 91 - Normalisations - 92 - Nécessité des Normalisations Considérons le schéma de la relation suivante : Article(NomFnsr, AdresseFnsr, NomArt, PrixArt). Une table correspondante est : NomFnsr Dupont AdresseFnsr Lille NomArt Fauteuil PrixArt 1500 Martin Nice Bureau 5600 Dupont Lille Bureau 6000 Dupont Lille Armoire 4400 - 93 - Anomalies de Mises à Jour Anomalie d’insertion : - On ne peut mémoriser (insérer) les coordonnées d’un fournisseur s’il ne fourni pas au moins un article. Anomalie de suppression : - La suppression d’un article qui est l’unique article fourni par un fournisseur entraîne la perte des informations relatives à ce fournisseur. Anomalies de modification : - Si un fournisseur change de coordonnées, il faudra répercuter cette modification à tous les articles dont il est le fournisseur. - 94 - Normalisation de l’exemple La relation Article(NomFnsr, AdresseFnsr, NomArt, PrixArt) contient certaines dépendances : NomFnsr AdresseFnsr NomFnsr, NomArt PrixArt Elle devrait se décomposer en deux relations : Fournisseur(NomFnsr, AdresseFnsr) et Article(NomFnsr, NomArt, PrixArt) - 95 - Normalisation Les règles de normalisation permettent de concevoir un schéma de base de données correct : - sans redondance d’information. - sans anomalie de mise à jour. Elles se basent sur - les dépendances fonctionnelles (DF) qui traduisent les relations entre les données. - les formes normales qui définissent les relations bien conçues. - 96 - Normalisation Il existe plusieurs niveaux de normalisation : - Première forme normale (1FN) - Deuxième forme normale (2FN) - Troisième forme normale (3FN) ... Un modèle relationnel est dit normalisé quand toutes ses tables sont en 3FN. - 97 - Dépendance fonctionnelle (DF) Soient - R (A1, A2, …, An) un schéma de relation. - X et Y des sous-ensembles d’attributs de la relation R. X Y qui se lit X détermine Y ou Y dépend (fonctionnellement) de X signifie que si on connaît la valeur de X alors la valeur de Y est automatiquement déduite. PERSONNE - N° SS --> NOM ? - NOM --> N° SS ? - 98 - Normalisation Première forme normale - But : garantir la manipulation de données élémentaires (indivisibles) Deuxième forme normale - But : éliminer certaines redondances en s’assurant qu’aucun attribut n’est déterminé par une sous partie de la clé. Troisième forme normale - But : Elimination des dépendances dues à la transitivité des dépendances transitives. - 99 - Première forme normale Définition - Une relation est en 1ère forme normale si tout attribut contient une valeur atomique (unique) Exemple d’une relation non en 1NF PERSONNE NOM DUPONT MARTIN PROFESSION Ingénieur, Professeur Géomètre Une telle relation doit être décomposée en répétant les noms pour chaque profession - 100 - Première forme normale Décomposition : PERSONNE NOM PROFESSION DUPONT Ingénieur DUPONT Professeur MARTIN Géomètre - 101 - Deuxième forme normale une relation est en 2e forme normale ssi : 1) elle est en 1ère forme normale 2) tout attribut non clé ne dépend pas d'une partie de la clé Schéma d’une relation non en 2NF : R K1 K2 X Y Une telle relation doit être décomposée en R1(K1,K2,X) et R2(K2,Y) - 102 - Exemple Article(NomFnsr, AdresseFnsr, NomArt, PrixArt). NomFnsr Dupont AdresseFnsr Lille NomArt Fauteuil PrixArt 1500 Martin Nice Bureau 5600 Dupont Lille Bureau 6000 Dupont Lille Armoire 4400 NomFnsr AdresseFnsr NomFnsr, NomArt PrixArt - 103 - Troisième forme normale une relation est en 3e forme normale ssi : 1) elle est en 2e forme normale 2) tout attribut n'appartenant pas a une clé ne dépend pas d’attribut ne faisant pas partie de la clé Schéma d’une relation non en 3NF : R K X Y Z Une telle relation doit être décomposée en R1(K, X, Y) et R2(X,Z) - 104 - Exemple 3ième Forme Normale Exemple Voiture (NV, marque, type, puissance, couleur) Type --> marque Type --> puissance Pas en 3eme forme normale ! Devra se décomposer en : Voiture(NV, type, couleur) et TypeVoiture(type, marque, puissance) - 105 -