Faculté de Sciences Économiques et de Gestion. Bases de données. Maîtrise de Sciences Économiques Année 2001-2002 Jérôme Darmont



Documents pareils
Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

16H Cours / 18H TD / 20H TP

Les bases de données

Bases de données relationnelles

1 Introduction et installation

Le langage SQL Rappels

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

Langage SQL : créer et interroger une base

Cours Base de données relationnelles. M. Boughanem, IUP STRI

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD

Mejdi BLAGHGI & Anis ASSÈS

Bases de Données relationnelles et leurs systèmes de Gestion

BASES DE DONNÉES. CNAM Centre associé de Clermont-Ferrand Cycle A Année J. Darmont I. INTRODUCTION II. LES SYSTÈMES HIÉRARCHIQUES

Le Langage SQL version Oracle

Introduction au Système de Gestion de Base de Données et aux Base de Données

SQL Historique

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

Information utiles. webpage : Google+ : digiusto/

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres.

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Introduction aux Bases de Données

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Rappel sur les bases de données

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.

Vincent Augusto

A QUOI SERVENT LES BASES DE DONNÉES?

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

INTRODUCTION : Données structurées et accès simplifié

Les bases de données Page 1 / 8

Bases de Données. Plan

Bases de Données Avancées

Le Langage De Description De Données(LDD)

Bases de données. Yamine AIT AMEUR. INPT-ENSEEIHT DIMA 2 Rue Charles Camichel Toulouse Cedex 7

1 Modélisation d une base de données pour une société de bourse

CREATION WEB DYNAMIQUE

Cours SQL. Base du langage SQL et des bases de données

Le langage SQL (première partie) c Olivier Caron

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

Bases de données relationnelles & SQL

Conception des bases de données : Modèle Entité-Association

Chapitre 5 LE MODELE ENTITE - ASSOCIATION

Présentation du module Base de données spatio-temporelles

Systèmes de Gestion de Bases de Données

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

A QUOI SERVENT LES BASES DE DONNÉES?

Patrice BOURSIER. Professeur, Univ. de La Rochelle. Bases de Données. Notes de cours

LE LANGAGE SQL2 1. INTRODUCTION

TP Contraintes - Triggers

Durée : 4 heures Le sujet se présente sous la forme de deux dossiers indépendants

Chapitre 1 Généralités sur les bases de données

Bases de données élémentaires Maude Manouvrier

Cours 4 : Agrégats et GROUP BY

Formation à l utilisation des Systèmes de Gestion de Bases de Données Relationnelles. organisée avec la collaboration du

Modélisation des données

Faculté des sciences de gestion et sciences économiques BASE DE DONNEES

Introduction aux bases de données Cours 1 : Généralités sur les bases de données

clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE

TP Bases de données réparties

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Bases de Données. Le cas des BD relationnelles ouverture sur les BD relationnelles spatiales Séance 2 : Mise en oeuvre

Intégrité des données

I4 : Bases de Données

UML et les Bases de Données

Compétences Business Objects

Bases de données - Modèle relationnel

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

Dossier I Découverte de Base d Open Office

Administration des bases de données. Jean-Yves Antoine

COURS de BASES de DONNEES

Cours Bases de données

MySQL / SQL EXEMPLES

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Chapitre VIII. Les bases de données. Orientées Objet. Motivation

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Cours SGBD 1. Concepts et langages des Bases de Données Relationnelles

TD n 10 : Ma première Base de Données

CONCEPTION Support de cours n 3 DE BASES DE DONNEES

Olivier Mondet

Bases de données Cours 4 : Le langage SQL pour ORACLE

Modélisation de bases de données : Le modèle relationnel

1 Position du problème

TP3 : Creation de tables 1 seance

FileMaker 13. Guide de référence SQL

Conception d une base de données

Bases de Données Relationnelles. Le Modèle Relationnel

Bases de données et sites WEB Licence d informatique LI345

Gestion des transactions et accès concurrents dans les bases de données relationnelles

TP base de données SQLite. 1 Différents choix possibles et choix de SQLite : 2 Définir une base de donnée avec SQLite Manager

TP 8: LES OPERATEURS ENSEMBLISTES

Construction d un EDD avec SQL 2008 R2. D. Ploix - M2 Miage - EDD - Création

Bases de données Cours 1 : Généralités sur les bases de données

Bases de données avancées Introduction

Bases de données. PTSI Lycée Eiffel. 28 février 2014

Transcription:

Faculté de Sciences Économiques et de Gestion Bases de données Maîtrise de Sciences Économiques Année 2001-2002 Jérôme Darmont http://eric.univ-lyon2.fr/~jdarmont/ Plan du cours I. Introduction II. Le modèle E/A III. Le modèle relationnel IV. Le langage SQL Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 1

Plan du cours! I. Introduction II. Le modèle E/A III. Le modèle relationnel IV. Le langage SQL Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 2 I.1. Limites des systèmes à fichiers Saisie Traitement Fichier Utilisateur Fichier Utilisateur Saisie Traitement État de sortie Utilisateur Organisation en fichiers Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 3

I.1. Limites des systèmes à fichiers Particularisation de la saisie et des traitements en fonction des fichiers un ou plusieurs programmes par fichier Contrôle en différé des données augmentation des délais et du risque d erreur Particularisation des fichiers en fonction des traitements grande redondance des données Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 4 I.2. Organisation base de données Utilisateur Saisie + Contrôles Base de Données Traitements États de sortie Utilisateur Utilisateur Organisation base de données Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 5

I.2. Organisation base de données Uniformisation de la saisie et standardisation des traitements (ex. tous les résultats de consultation sous forme de listes et de tableaux) Contrôle immédiat de la validité des données Partage de données entre plusieurs traitements limitation de la redondance des données Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 6 I.3. Définitions Base de données (BD) : Collection de données cohérentes et structurées Système de Gestion de Bases de Données (SGBD) : Logiciel(s) assurant structuration, stockage, maintenance, mise à jour et consultation des données d une BD Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 7

I.4. Objectifs des SGBD Indépendance physique : un remaniement de l organisation physique des données n entraîne pas de modification dans les programmes d application (traitements) Indépendance logique : un remaniement de l organisation logique des fichiers (ex. nouvelle rubrique) n entraîne pas de modification dans les programmes d application non concernés Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 8 I.4. Objectifs des SGBD Manipulation facile des données : un utilisateur non-informaticien doit pouvoir manipuler simplement les données (interrogation et mise à jour) Administration facile des données : un SGBD doit fournir des outils pour décrire les données, permettre le suivi de ces structures et autoriser leur évolution (tâche de l administrateur de BD) Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 9

I.4. Objectifs des SGBD Efficacité des accès aux données : garantie d un bon débit (nombre de transactions exécutées par seconde) et d un bon temps de réponse (temps d attente moyen pour une transaction) Redondance contrôlée des données : diminution du volume de stockage, pas de mise à jour multiple ni d incohérence Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 10 I.4. Objectifs des SGBD Cohérence des données : ex. L âge d une personne doit être un nombre entier positif. Le SGBD doit veiller à ce que les applications respectent cette règle (contrainte d intégrité). Partage des données : utilisation simultanée des données par différentes applications Sécurité des données : les données doivent être protégées contre les accès non-autorisés ou en cas de panne Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 11

I.5. Fonctions des SGBD Description des données : Langage de Définition de Données (LDD) Recherche des données Mise à jour des données Transformation des données Contrôle de l intégrité des données Gestion de transactions et sécurité } Langage de Manipulation de Données (LMD) Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 12 I.6. Processus de conception d une base de données Monde réel Analyse Spécifications de la BD Indépendant d'un SGBD Conception Schéma conceptuel Transformation en modèle logique Schéma logique Conception physique Spécifique à un SGBD Schéma interne Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 13

Plan du cours I. Introduction! II. Le modèle E/A III. Le modèle relationnel IV. Le langage SQL Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 14 II.1. Généralités E/A signifie Entité-Association, traduction de E/R (Entity-Relationship). Le modèle E/A est un modèle conceptuel conçu dans les années 1970. Il utilise une représentation graphique. Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 15

II.2. Entités et attributs Entité : objet de l univers du discours (ex. CLIENT) CLIENT Attribut : propriété de l entité (ex. Nom et Prénom du client) Attribut simple : non divisible (ex. Nom) Nom Prénom Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 16 II.2. Entités et attributs Attribut composé : subdivisé en attributs simples (ex. Adresse) Adresse Rue Code Postal Ville Attribut dérivé : dont la valeur est calculée (ex. Âge d après la date de naissance) Âge Pays Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 17

II.2. Entités et attributs Valeur nulle (NULL) pour un attribut : la valeur n est pas connue ex. Un client dont on ne connaît pas la date de naissance. Domaine : ensemble des valeurs que peut prendre un attribut ex. Prix des produit de 1 à 10.000 F Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 18 II.2. Entités et attributs Nom Prénom Date de naissance CLIENT Âge Rue Code postal Ville Exemple d entité avec ses attributs Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 19

II.3. Types et occurrences Type d entité : ex. CLIENT Occurrences du type CLIENT : les clients Albert Dupont James West Marie Martin Gaston Durand... Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 20 II.3. Types et occurrences Type d attribut Nom et Prénom sont des chaînes de caractères Date de naissance est une date Âge est un nombre entier Occurrences d attribut : valeur particulière d un attribut ex. Bleu, Rouge sont des occurrences d un attribut Couleur. Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 21

II.4. Identifiants Liste des clients Nom Prénom Date de Naissance Etc. Dupont Albert 01/06/70... West James 03/09/63... Martin Marie 05/06/78... Durand Gaston 15/11/80... Titgoutte Justine 28/02/75... Dupont Noémie 18/09/57... Dupont Albert 23/05/33... Problème : Comment distinguer les Dupont? Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 22 II.4. Identifiants Solution : Ajouter un attribut Numéro de client Numéro Nom Prénom Date de Naissance 1 Dupont Albert 01/06/70 2 West James 03/09/63 3 Martin Marie 05/06/78 4 Durand Gaston 05/11/80 5 Titgoutte Justine 28/02/75 6 Dupont Noémie 18/09/57 7 Dupont Albert 23/05/33 Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 23

II.4. Identifiants Le numéro de client est un identifiant. Un identifiant caractérise de façon unique les occurrences d un type d entité. Notation graphique : CLIENT Numéro Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 24 II.4. Associations et cardinalités Association : liaison perçue entre des entités ex. Les clients commandent des produits. CLIENT COMMANDE PRODUIT Les entités CLIENT et PRODUIT sont dites participantes à la relation COMMANDE. Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 25

II.4. Associations et cardinalités Association 1-1 ex. Un client donné ne commande qu un seul produit. Un produit donné n est commandé que par un seul client. CLIENT 1,1 COMMANDE 1,1 PRODUIT X,Y - X : cardinalité mini - Y : cardinalité maxi Lire : Un client commande X à Y produits. Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 26 II.4. Associations et cardinalités Association 1-N ex. Un client donné commande plusieurs produits. Un produit donné n est commandé que par un seul client. CLIENT 1,N COMMANDE 1,1 PRODUIT La cardinalité «un à plusieurs» (1-N) peut aussi être «zéro à plusieurs» (0-N). Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 27

II.4. Associations et cardinalités Association 0 ou 1-N ex. Un client donné commande plusieurs produits. Un produit donné est commandé au maximum par un client, mais peut ne pas être commandé. CLIENT 1,N COMMANDE 0,1 PRODUIT La cardinalité «un à plusieurs» (1-N) peut aussi être «zéro à plusieurs» (0-N). Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 28 II.4. Associations et cardinalités Association M-N ex. Un client donné commande plusieurs produits. Un produit donné est commandé par plusieurs clients. CLIENT 1,N COMMANDE 1,N PRODUIT Les cardinalités «un à plusieurs» (1-N) peuvent aussi être «zéro à plusieurs» (0-N). Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 29

II.4. Associations et cardinalités Attribut d association : Dans une association M-N, il est possible de caractériser l association par des attributs. ex. Une commande est passée à une Date donnée et concerne une Quantité de produit fixée. CLIENT 1,N COMMANDE 1,N PRODUIT Date Quantité Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 30 II.5. Exemple VPC complet Spécifications Les clients sont caractérisés par un numéro de client, leur nom, prénom, date de naissance, rue, code postal et ville. Ils commandent des produits à une date donnée et dans une quantité donnée. Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 31

II.5. Exemple VPC complet Spécifications (suite) Les produits sont caractérisés par un numéro de produit, leur désignation et leur prix unitaire. Chaque produit est fourni par un fournisseur unique (mais un fournisseur peut fournir plusieurs produits). Les fournisseurs sont caractérisés par un numéro de fournisseur et leur raison sociale. Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 32 II.5. Exemple VPC complet Marche à suivre pour produire un schéma E/A 1) Identifier les entités. 2) Identifier les associations entre les entités. 3) Identifier les attributs de chaque entité et de chaque association. 4) Evaluer les cardinalités des associations. Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 33

II.5. Exemple VPC complet Nom Prénom DateNaiss Rue CP NumCli Date Quantité CLIENT 1,N COMMANDE 1,N PRODUIT Ville NumFour RaisonSoc NumProd FOURNIT Schéma E/A de l exemple VPC 1,1 1,N FOUR- NISSEUR Dési PrixUni Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 34 Plan du cours I. Introduction II. Le modèle E/A! III. Le modèle relationnel IV. Le langage SQL Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 35

III.1. Généralités Le modèle relationnel est un modèle logique associé aux SGBD relationnels (ex. Oracle, DB2, SQLServer, Access, Paradox, dbase ). Objectifs du modèle relationnel : indépendance physique traitement du problème de redondance des données LMD non procéduraux (faciles à utiliser) devenir un standard Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 36 III.2. Relations, attributs et tuples Une relation R est un ensemble d attributs {A 1, A 2,, A n }. ex. La relation PRODUIT est l ensemble des attributs {NumProd, Dési, PrixUni} Chaque attribut A i prend ses valeurs dans un domaine dom(a i ). ex. PrixUni ]0, 10.000] Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 37

III.2. Relations, attributs et tuples Un tuple t est un ensemble de valeurs t = <V 1, V 2,, V n > où V i dom(a i ) ou V i est la valeur nulle (NULL). ex. <112, Raquette de tennis, 300> est un tuple de la relation PRODUIT. Notation : R (A 1, A 2,, A n ) ex. PRODUIT (NumProd, Dési, PrixUni) Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 38 III.3. Contraintes d intégrité Clé primaire : Ensemble d attributs dont les valeurs permettent de distinguer les tuples les uns des autres (identifiant). ex. NumProd clé primaire de la relation PRODUIT Clé étrangère : Attribut qui est clé primaire d une autre relation. ex. Connaître le fournisseur de chaque produit ajout de l attribut NumFour à la relation PRODUIT Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 39

III.3. Contraintes d intégrité Notations : clés primaires soulignées, clés étrangères en italiques ex. PRODUIT (NumProd, Dési, PrixUni, NumFour) Contraintes de domaine : les attributs doivent respecter une condition logique ex. PrixUni > 0 ET PrixUni 10000 Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 40 III.4. Traduction E/A-Relationnel 1) Chaque entité devient une relation. Les attributs de l entité deviennent attributs de la relation. Seuls les attributs simples des attributs composés sont inclus. L identifiant de l entité devient clé primaire de la relation. ex. CLIENT (NumCli, Nom, Prénom, DateNaiss, Rue, CP, Ville) Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 41

III.4. Traduction E/A-Relationnel 2) Chaque association 1-1 est prise en compte en incluant la clé primaire d une des relations comme clé étrangère dans l autre relation. ex. Si un client peut posséder un compte, on aura : COMPTE (NumCom, Solde) CLIENT (NumCli, Nom, Prénom, DateNaiss, Rue, CP, Ville, NumCom) Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 42 III.4. Traduction E/A-Relationnel 3) Chaque association 1-N est prise en compte en incluant la clé primaire de la relation dont la cardinalité maximale est N comme clé étrangère dans l autre relation. ex. PRODUIT (NumProd, Dési, PrixUni, NumFour) FOURNISSEUR (NumFour, RaisonSoc) Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 43

III.4. Traduction E/A-Relationnel 4) Chaque association M-N est prise en compte en créant une nouvelle relation dont la clé primaire et la concaténation des clés primaires des relations participantes. Les attributs de l association sont insérés dans cette nouvelle relation. ex. COMMANDE (NumCli, NumProd, Date, Quantité) Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 44 III.4. Traduction E/A-Relationnel Schéma relationnel complet de l exemple VPC CLIENT (NumCli, Nom, Prénom, DateNaiss, Rue, CP, Ville) PRODUIT (NumProd, Dési, PrixUni, NumFour) FOURNISSEUR (NumFour, RaisonSoc) COMMANDE (NumCli, NumProd, Date, Quantité) Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 45

III.5. Problème de la redondance [En dehors des clés étrangères] ex. Soit la relation COMMANDE_PRODUIT. NumProd Quantité NumFour Adresse 101 300 901 Quai des brumes 104 1000 902 Quai Claude Bernard 112 78 904 Quai des Marans 103 250 901 Quai des brumes Cette relation présente différentes anomalies. Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 46 III.5. Problème de la redondance Anomalies de modification : Si l on souhaite mettre à jour l adresse d un fournisseur, il faut le faire pour tous les tuples concernés. Anomalies d insertion : Pour ajouter un fournisseur nouveau, il faut obligatoirement fournir des valeurs pour NumProd et Quantité. Anomalies de suppression : ex. La suppression du produit 104 fait perdre toutes les informations concernant le fournisseur 902. Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 47

III.6. Normalisation Objectifs de la normalisation : Suppression des problèmes de mise à jour Minimisation de l espace de stockage (élimination des redondances) Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 48 III.6. Normalisation Les dépendances fonctionnelles (DF) Soit R (X, Y, Z) une relation où X, Y, et Z sont des ensembles d attributs. Z peut être vide. Définition : Y dépend fonctionnellement de X (X Y) si c est toujours la même valeur de Y qui est associée à X dans la relation R. ex. PRODUIT (NumProd, Dési, PrixUni) NumProd Dési, Dési PrixUni Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 49

III.6. Normalisation Propriétés des dépendances fonctionnelles Réflexivité : Si Y X alors X Y. Augmentation : Si W Z et X Y alors X, Z Y, W. Transitivité : Si X Y et Y Z alors X Z. (Règles d inférence d Armstrong) Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 50 III.6. Normalisation Propriétés des dépendances fonctionnelles Pseudo-transitivité : Si X Y et Y, Z T alors X, Z T. Union : Si X Y et X Z alors X Y, Z. Décomposition : Si Z Y et X Y alors X Z. NB : La notation X, Y signifie X Y. Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 51

III.6. Normalisation Première forme normale (1FN) Une relation est en 1FN si tout attribut n est pas décomposable. ex. Les relations PERSONNE (Nom, Prénoms, Age) et DEPARTEMENT (Nom, Adresse, Tel) ne sont pas en 1FN si les attributs Prénoms et Adresse peuvent être du type [Jean, Paul] ou [Rue de Marseille, Lyon]. Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 52 III.6. Normalisation Deuxième forme normale (2FN) Une relation est en 2FN si : - elle est en 1FN ; - tout attribut non clé primaire est dépendant de la clé primaire entière. ex. La relation CLIENT (NumCli, Nom, Prénom, DateNaiss, Rue, CP, Ville) est en 2FN. Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 53

III.6. Normalisation Deuxième forme normale (2FN) ex. La relation COMMANDE_PRODUIT (NumProd, Quantité, NumFour, Ville) n est pas en 2FN car on a NumProd, NumFour Quantité et NumFour Ville. La décomposition suivante donne deux relations en 2FN : COMMANDE (NumProd, NumFour, Quantité) ; FOURNISSEUR (NumFour, Ville). Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 54 III.6. Normalisation Troisième forme normale (3FN) Une relation est en 3FN si : - elle est en 2FN ; - il n existe aucune DF entre deux attributs non clé primaire. ex. La relation COMPAGNIE (Vol, Avion, Pilote) avec les DF Vol Avion, Avion Pilote et Vol Pilote est en 2FN, mais pas en 3FN. Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 55

III.6. Normalisation Troisième forme normale (3FN) Anomalies de mise à jour sur la relation COMPAGNIE : il n est pas possible d introduire un nouvel avion sur un nouveau vol sans préciser le pilote correspondant. La décomposition suivante donne deux relations en 3FN qui permettent de retrouver (par transitivité) toutes les DF : R1 (Vol, Avion) ; R2 (Avion, Pilote). Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 56 III.7. Algèbre relationnelle Ensemble d opérateurs qui s appliquent aux relations Résultat : nouvelle relation qui peut à son tour être manipulée L algèbre relationnelle permet d effectuer des recherches dans les relations. Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 57

III.7. Algèbre relationnelle Opérateurs ensemblistes Union : T = R S ou T = UNION (R, S) R et S doivent avoir même schéma. ex. R et S sont les relations PRODUIT de deux sociétés qui fusionnent et veulent unifier leur catalogue. T Notation graphique : Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 58 R S III.7. Algèbre relationnelle Opérateurs ensemblistes Intersection : T = R S ou T = INTERSECT (R, S) R et S doivent avoir même schéma. ex. Permet de trouver les produits communs aux catalogues de deux sociétés. T Notation graphique : Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 59 R S

III.7. Algèbre relationnelle Opérateurs ensemblistes Différence : T = R - S ou T = MINUS (R, S) R et S doivent avoir même schéma. ex. Permet de retirer les produits de la relation S existant dans la relation R. T Notation graphique : R S Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 60 III.7. Algèbre relationnelle Opérateurs ensemblistes Produit cartésien : T = R x S ou T = PRODUCT (R, S) Associe chaque tuple de R à chaque tuple de S. Notation graphique : R x T S Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 61

III.7. Algèbre relationnelle ex. NumProd Dési 0 P1 1 P2 X NumFour RaisonSoc 10 F1 20 F2 30 F3 = NumProd Dési NumFour RaisonSoc 0 P1 10 F1 1 P2 10 F1 0 P1 20 F2 1 P2 20 F2 0 P1 30 F3 1 P2 30 F3 Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 62 III.7. Algèbre relationnelle Opérateurs spécifiques Projection : T = Π <A, B, C> (R) ou T = PROJECT (R / A, B, C) T ne contient que les attributs A, B et C de R. ex. Noms et prénoms des clients. T Notation graphique : A, B, C R Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 63

III.7. Algèbre relationnelle Opérateurs spécifiques Restriction : T = σ <C> (R) ou T = RESTRICT (R / C) T ne contient que les attributs de R qui satisfont la condition C. ex. C = Clients qui habitent Lyon. T C Notation graphique : R Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 64 III.7. Algèbre relationnelle Opérateurs spécifiques Jointure naturelle : T = R >< S ou T = JOIN (R, S) Produit cartésien R x S et restriction A = B sur les attributs A R et B S. T Notation graphique : Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 65 R A = B S

III.7. Algèbre relationnelle ex. Commandes avec le nom du client et pas seulement son numéro NumCli CLIENT Nom, Date, Quantite = NumCli COMMANDE NB : Requête = enchaînement d opérations Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 66 III.7. Algèbre relationnelle Décomposition des opérations CL NumCli Nom 1 C1 2 C2 3 C3 X CO NumCli Date Quantité 1 22/09/99 1 3 22/09/99 5 3 22/09/99 2 Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 67

III.7. Algèbre relationnelle = CL.NumCli Nom CO.NumCli Date Quantité 1 C1 1 22/09/99 1 2 C2 1 22/09/99 1 3 C3 1 22/09/99 1 1 C1 3 22/09/99 5 2 C2 3 22/09/99 5 3 C3 3 22/09/99 5 1 C1 3 22/09/99 2 2 C2 3 22/09/99 2 3 C3 3 22/09/99 2 Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 68 III.7. Algèbre relationnelle CL >< CO CL.NumCli Nom CO.NumCli Date Quantité 1 C1 1 22/09/99 1 3 C3 3 22/09/99 5 3 C3 3 22/09/99 2 Nom Date Quantité C1 22/09/99 1 C3 22/09/99 5 C3 22/09/99 2 Π <Nom, Date, Quantité> (CL >< CO) (Projection sur les attributs Nom, Date, Quantité) Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 69

Plan du cours I. Introduction II. Le modèle E/A III. Le modèle relationnel! IV. Le langage SQL Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 70 IV.1. Généralités SQL = Structured Query Language SQL permet la définition, la manipulation et le contrôle d une base de données relationnelle. Il se base sur l algèbre relationnelle. SQL est un standard depuis 1986. Nous adoptons dans ce chapitre la syntaxe de SQL*Plus (Oracle). Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 71

IV.2. Définition des données ex. CREATE TABLE CLIENT ( NumCli NUMBER(3), Nom CHAR(30), DateNaiss DATE, Salaire NUMBER(8,2), NumEmp NUMBER(3), CONSTRAINT cle_pri PRIMARY KEY (NumCli), CONSTRAINT cle_etr FOREIGN KEY (NumEmp) REFERENCES EMPLOYEUR(NumEmp), CONSTRAINT date_ok CHECK (DateNaiss < SYSDATE)); Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 72 IV.2. Définition des données Types de données NUMBER(n) : nombre entier à n chiffres NUMBER(n, m) : nombre réel à n chiffres au total (virgule comprise) et m chiffres après la virgule CHAR(n) : chaîne de caractères de taille n DATE : date au format JJ-MM-AAAA Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 73

IV.2. Définition des données Contraintes d intégrité Mot clé CONSTRAINT Identification par un nom de contrainte Clé primaire PRIMARY KEY (clé) Clé étrangère (clé) REFERENCES table(attribut) Contrainte de domaine CHECK (condition) Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 74 IV.3. Mise à jour des données Ajout d un tuple ex. INSERT INTO PRODUIT VALUES (400, Nouveau produit, 78.90); Mise à jour d un attribut ex. UPDATE CLIENT SET Nom= Dudule WHERE NumCli = 3; Suppression de tuples ex. DELETE FROM CLIENT WHERE Ville = Lyon ; Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 75

IV.4. Interrogation des données Tous les tuples d une table ex. SELECT * FROM CLIENT; Tri du résultat ex. Par ordre alphabétique [inverse] de nom SELECT * FROM CLIENT ORDER BY Nom [DESC]; Calculs ex. Calcul de prix TTC SELECT PrixUni+PrixUni*0.206 FROM PRODUIT; Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 76 IV.4. Interrogation des données Projection ex. Noms et Prénoms des clients, uniquement SELECT Nom, Prenom FROM CLIENT; Restriction ex. Clients qui habitent à Lyon SELECT * FROM CLIENT WHERE Ville = Lyon ; Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 77

IV.4. Interrogation des données ex. Commandes en quantité au moins égale à 3 SELECT * FROM COMMANDE WHERE Quantite >= 3; ex. Produits dont le prix est compris entre 50 et 100 F SELECT * FROM PRODUIT WHERE PrixUni BETWEEN 50 AND 100; ex. Commandes en quantité indéterminée SELECT * FROM Commande WHERE Quantite IS NULL; Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 78 IV.4. Interrogation des données ex. Clients habitant une ville dont le nom se termine par sur-saône SELECT * FROM CLIENT WHERE Ville LIKE %sur-saône ; sur-saône% commence par sur-saône %sur% contient le mot sur Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 79

IV.4. Interrogation des données ex. Prénoms des clients dont le nom est Dupont, Durand ou Martin SELECT Prenom FROM CLIENT WHERE Nom IN ( Dupont, Durand, Martin ); NB : Possibilité d utiliser la négation pour tous ces prédicats : NOT BETWEEN, NOT NULL, NOT LIKE, NOT IN. Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 80 IV.4. Interrogation des données Fonctions d agrégat Elles opèrent sur un ensemble de valeurs. AVG() : moyenne des valeurs SUM() : somme des valeurs MIN(), MAX() : valeur minimum, valeur maximum COUNT() : nombre de valeurs ex. Moyenne des prix des produits SELECT AVG(PrixUni) FROM PRODUIT; Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 81

IV.4. Interrogation des données Opérateur DISTINCT ex. Nombre total de commandes SELECT COUNT(*) FROM COMMANDE; SELECT COUNT(NumCli) FROM COMMANDE; ex. Nombre de clients ayant passé commande SELECT COUNT( DISTINCT NumCli) FROM COMMANDE; Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 82 IV.4. Interrogation des données Table COMMANDE (simplifiée) NumCli Date Quantite 1 22/09/99 1 3 22/09/99 5 3 22/09/99 2 COUNT(NumCli) Résultat = 3 COUNT(DISTINCT NumCli) Résultat = 2 Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 83

IV.4. Interrogation des données Jointure ex. Liste des commandes avec le nom des clients SELECT Nom, Date, Quantite FROM CLIENT, COMMANDE WHERE CLIENT.NumCli = COMMANDE.NumCli; Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 84 IV.4. Interrogation des données ex. Idem avec le numéro de client en plus SELECT C1.NumCli, Nom, Date, Quantite FROM CLIENT C1, COMMANDE C2 WHERE C1.NumCli = C2.NumCli ORDER BY Nom; NB : Utilisation d alias (C1 et C2) pour alléger l écriture + tri par nom. Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 85

IV.4. Interrogation des données Jointure exprimée avec le prédicat IN ex. Nom des clients qui ont commandé le 23/09 SELECT Nom FROM CLIENT WHERE NumCli IN ( SELECT NumCli FROM COMMANDE WHERE Date = 23-09-1999 ); NB : Il est possible d imbriquer des requêtes. Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 86 IV.4. Interrogation des données Prédicats EXISTS / NOT EXISTS ex. Clients qui ont passé au moins une commande [n ont passé aucune commande] SELECT * FROM CLIENT C1 WHERE [NOT] EXISTS ( SELECT * FROM COMMANDE C2 WHERE C1.NumCli = C2.NumCli ); Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 87

IV.4. Interrogation des données Prédicats ALL / ANY ex. Numéros des clients qui ont commandé au moins un produit en quantité supérieure à chacune [à au moins une] des quantités commandées par le client n 1. SELECT DISTINCT NumCli FROM COMMANDE WHERE QUANTITE > ALL [ANY] ( SELECT QUANTITE FROM COMMANDE WHERE NumCli = 1 ); Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 88 IV.4. Interrogation des données Groupement ex. Quantité totale commandée par chaque client SELECT NumCli, SUM(Quantite) FROM COMMANDE GROUP BY NumCli; ex. Nombre de produits différents commandés... SELECT NumCli, COUNT(DISTINCT NumProd) FROM COMMANDE GROUP BY NumCli; Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 89

IV.4. Interrogation des données ex. Quantité moyenne commandée pour les produits faisant l objet de plus de 3 commandes Attention : SELECT NumProd, AVG(Quantite) FROM Commande GROUP BY NumProd HAVING COUNT(*)>3; La clause HAVING ne s utilise qu avec GROUP BY. Bases de données http://eric.univ-lyon2.fr/~jdarmont/ 90