Éléments de bases de données IFT187

Dimension: px
Commencer à balayer dès la page:

Download "Éléments de bases de données IFT187"

Transcription

1 Université de Sherbrooke Département d informatique Éléments de bases de données IFT187 Notes complémentaires et synthétiques Marc Frappier, Ph.D. professeur UNIVERSITÉ DE SHERBROOKE

2 i

3 Avertissement Ce document n est pas un substitut au livre de référence du cours ni aux manuels de référence des différents langages utilisés dans le cadre du cours. ii

4 Contents 1 Les bases de données et leurs usages Introduction Rôle des BDs Définitions de concepts de base Un exemple de BD Services offerts par une BD Description des données Encapsulation des données Partage des données entre plusieurs utilisateurs Intervenants dans les systèmes de BD Conséquences de l usage de SGBD Bref historique des BD Usage inapproprié des BDs Concepts et architecture des bases de données Modèles de BD Catégories de modèle de données Schéma Architecture Langages Composantes d un SGBD Le langage SQL Langage de définition des données Table Types en SQL Définition des tables Syntaxe générale Définition des attributs Définition des contraintes Clé primaire Clé unique Clé étrangère Modification des tables Ajout d attributs iii

5 Modification d attributs Suppression d attributs Ajout de contraintes Suppression de contraintes Suppression des tables L exemple de la bibliothèque Langage de manipulation des données Insert Update Delete Select Syntaxe générale Sémantique La valeur spéciale NULL Expressions Conditions (Expressions booléennes) Autres expressions (arithmétique, caractères, dates) Fonctions d agrégation Opérations ensemblistes Jointures Quelques exemples de SELECT Divers Table virtuelle : vue Contraintes d intégrité Index Schéma Oracle et la norme SQL Le modèle entité-association Définition des concepts Convention nominative Notation de Chen Notation UML adaptée Exemples Gestion des cours Gestion de projets Gestion des statistiques au hockey Erreurs fréquentes dans la modélisation entité-association Traduction d un schéma E-R en un schéma relationnel Algorithmes de traduction Exemples de traduction iv

6 10 Conception et normalisation d une BD Critères informels de conception de schéma Sémantique des relations Information redondantes Valeur nulle Tuples erronés Dépendance fonctionnelle Définition Règles d inférence pour les dépendances fonctionnelles Équivalence de dépendances fonctionnelles Formes normales Introduction Première forme normale (1NF) Deuxième forme normale (2NF) Troisième forme normale (3NF) Forme normale de Boyce-Codd (BCNF) Autres formes normales Quatrième forme normale Cinquième forme normale Décomposition et préservation Algorithmes de décomposition de schéma Algorithme 13.1 : décomposition en 3NF avec préservation des dépendances fonctionnelles Algorithme 13.3 : décomposition en BCNF avec jointure non additive Algorithme 13.4 : décomposition en 3NF avec préservation des dépendances fonctionnelles et jointure non additive Algorithme 13.5 : décomposition en 4NF avec jointure non additive Algorithme de décomposition en 5NF avec jointure non additive A Diapositives de patrons de traduction 74 B Diapositives de normalisation 83 C Exercices de normalisation 118 v

7 Chapter 1 Les bases de données et leurs usages 1.1 Introduction Rôle des BDs les BD jouent un rôle central dans les systèmes informatiques systèmes d information traditionnels gouvernement banque assurances commerce de détail nouveaux domaines d application systèmes téléphoniques systèmes multimédias (image, son, video) géomatique (base de données géographiques) entrepôt de données concepts de base communs à tous débute l étude avec les systèmes traditionnels Définitions de concepts de base données : information pertinente pour un utilisateur du système. base de données (BD) : collection de données structurée de manière à être exploitée. taille d une BD varie beaucoup, de bytes à gigabytes (2 30 bytes), et même térabytes (2 40 bytes) 1 KB = 1024 bytes = 2 10 bytes 1 MB = 1024 KB = bytes = 2 20 bytes 1

8 1 GB = 1024 MB = bytes = 2 30 bytes 1 TB = 1024 GB = bytes = 2 40 bytes de type manuelle (Exemple: registre de naissance d une paroisse) de type automatisée (Exemple: nouveau système québécois d enregistrement des naissances) système de gestion de BD (SGBD) : collection de programmes qui permettent de créer et de maintenir une base de données. ex: Oracle (relationnel), Object Store (orienté objets), MS Access (relationnel), Informix (relationnel), IMS (hiérarchique), IDMS (réseau). concevoir une BD : consiste à définir la structure des données (regroupement, type, contraintes). construire une BD : consiste à stocker les données dans la BD. manipuler une BD : ajouter, modifier, supprimer, interroger les données de la BD. naviguer dans une BD : parcourir les données en utilisant leurs liens. Exemple: À partir d un étudiant, accéder aux cours où il est inscrit, ensuite accéder à la description de ces cours, aux professeurs qui les enseignent, aux locaux utilisés, aux notes de l étudiants. application : programme qui fournit des services à l utilisateur d un système. Il ne fait pas partie du SGBD. Il est développé par des informaticiens d une organisation. Il utilise les services du SGBD pour accéder à une BD. Synonyme : système d information Exemple: programme qui permet de gérer les inscription des étudiants, programme de préparation des payes, système de gestion des comptes d une banque système de BD : comprend l application, le SGBD et la BD. Voir figure Un exemple de BD Voir figure Services offerts par une BD percevoir les distinctions entre le traitement de fichier et les bases de données 2

9 1.3.1 Description des données catalogue : partie d un SGBD; contient une description des données (méta-données : données à propos des données); leur regroupement (structure); leur type; leur contrainte Encapsulation des données le SGBD encapsule les données (masque la manière dont les données sont stockées sur disque); le SGBD offre des services (interface) pour accéder facilement aux données et les maintenir; interface : ensemble d opérations avec leurs paramètres et leurs types; les programmes d une application utilisent les services du SGBD; les utilisateurs peuvent aussi utiliser directement les services d une BD (ex; requête SQL). les programmes sont indépendants de la manière dont les données sont stockées sur disque (BD locale, répartie, réseau local, réseau internet, etc); facilite la maintenance des programmes d une application; permet de présenter les données de plusieurs manières (vues ( view )); Voir figure 1.4 permet de définir des contraintes d intégrité sur les données; permet d assurer la persistence des objets des programmes d application (BD orientée objets); facilite l archivage des données et les copies de sécurité Partage des données entre plusieurs utilisateurs une BD doit typiquement être utilisée par plusieurs personnes en même temps; le SGBD permet à plusieurs utilisateurs d accéder (lecture et écriture) aux données en même temps, tout en préservant l intégrité des données; le SGBD assure la sécurité et la confidentialité des données. 3

10 1.4 Intervenants dans les systèmes de BD administrateur de BDs (DBA) : s occupe de la sécurité des données; la coordination et du contrôle de l usage de la BD; la gestion du matériel et du logiciel du SGBD. concepteur de BDs : s occupe de définir la structure des données. analystes et programmeurs : développent les systèmes de BD. utilisateur : accède à la DB pour l interroger et la modifier. plusieurs niveaux de familiarité avec la BD paramétrique : utilise les programmes d application pour accéder à la BD. sophistiqué : utilise directement les services du SGBD pour accéder à la BD. autonome : développe et utilise de manière autonome ses propres systèmes de BD. 1.5 Conséquences de l usage de SGBD normalisation; facilite la communication entre les systèmes et les utilisateurs; nom des données type des données contraintes réduction des coûts et des délais de développement des applications; flexibilité : plus facile de modifier la structure des données pour répondre aux changements des besoins des utilisateurs; accès aux données en temps réel; économies d échelle. 1.6 Bref historique des BD fichier indexé : fichier permettant un accès direct à un enregistrement en fonction d une clef, qui est un sous-ensemble des attributs de l enregistrement. Accès très rapide à un enregistrement pour la mise à jour et l interrogation. Peu souple pour l interrogation à partir d un attribut autre que la clef, ou pour joindre plusieurs fichiers ensemble. Utilisé aujourd hui dans l implémentation des bases de données relationnelles et objets. 4

11 BD hiérarchique : stockage efficace des données pour favoriser certains accès, en utilisant les liens de hiérarchie entre les données. Moins souple pour l interrogation des données et la navigation à travers les données. Encore en opération aujourd hui dans plusieurs grandes organisation (banques, assurances, gouvernement), à cause de leur efficacité, mais aussi à cause des investissements majeurs requis pour les remplacer. BD réseau : les liens entre les données sont prédéterminés et spécifié dans le schéma de base de données. Navigation plus souple que dans les BD hiérarchiques, mais moins flexible que celles des BD relationnelles. BD relationnelle : les données sont regroupées sous formes de relations (tables). La navigation est très souple; les liens entre les tables ne sont pas prédéfinis; ils sont établis de manière dynamique, directement dans la requête d interrogation. En contre-partie, si les requêtes ne sont pas optimisées, elles peuvent être très longues à exécuter. BD orientée objets : les données sont représentées par des objets. Plus souple que les BD relationnelles au niveau des structures de données admises. On peut y stocker les objets d un programme orienté objets. Permet le partage des données entre plusieurs programmes à la fois. Simplifie la programmation orientée objets pour assurer la persistance des données, par rapport à une BD relationnelle. Navigation parfois plus compliquée qu une BD relationnelle. Moins standardisée que les BD relationnelles. Dépendante des languages de programmation. BD relationnel objets : BD relationnel offrant en plus des mécanismes pour stocker des objets, ou pour stocker des structures plus complexes. Par exemple, une table peut contenir une autre table, ou stocker un objet d un programme Java ou C++. Toutefois, les mécanismes d accès aux objets sont moins souples que ceux des bases de données orientées objets. XML : Extensible Markup Language fichier texte ordinaire contenant des données structurées sous forme de balises que l on peut imbriquer les unes dans les autres. On peut visualiser son contenu, à l aide d outils, sous forme d un arbre. Issu de SGML Standard Generalised Markup Language, et frère de HTML HyperText Makup Language. On peut l utiliser pour échanger des données entre des applications, ou pour stocker de manière simple des données d une application. 1.7 Usage inapproprié des BDs coûts fixes importants (SGBD, matériel, DBA); il faut que ce soit un investissement rentable; faire une analyse coûts-bénéfices temps de réponse très rapide requis : on peut obtenir un temps de réponse plus court en implantant le système à l aide de traitement de fichiers séquentiels indexés; très haute fiabilité requise : centrale nucléaire, avion, train, navette spatiale, etc.; peut-on garantir la fiabilité du SGBD? 5

12 Chapter 2 Concepts et architecture des bases de données 2.1 Modèles de BD modèle de données : collection de concepts qui permettent de caractériser la structure d une BD type de données relation entre les groupe de données contraintes sur les données services offerts (opérations, commandes du SGBD). 2.2 Catégories de modèle de données conceptuel : représentation abstraite de l information; utilise, entre autres, les notions d entité, d attribut et de relations pour décrire la structure d une BD; représentationnel : représentation fréquemment utilisée dans les SGBD commerciaux; synonyme : modèle logique. Exemple: modèle relationnel, modèle hiérarchique, modèle réseau modèle objet : plus près des modèles conceptuels; représente une BD en terme d objets, de relations entre les objets et de méthodes. modèle physique : plus près de l implémentation; décrit la structure interne de la BD: ses index, sa répartition physique sur les processeurs, etc. 2.3 Schéma établir une distinction entre la description de la structure de la BD et du contenu de la BD. 6

13 schéma : description de la structure d une BD; typiquement représenté en partie par un diagramme; stocké dans le catalogue du SGBD. Voir figure 2.1 état d une BD : l ensemble des données contenues dans une BD à un moment particulier aussi appelé instance du schéma de BD; les opérations de mise à jour modifient l état d une BD. 2.4 Architecture Architecture peut être décrite à trois niveaux. interne : stockage physique des données; conceptuel : décrit les entités, les relations, les opérations, les contraintes; externe : décrit les vues des utilisateurs (pour une classe d utilisateurs, on définit et regroupe les entités désirées). Cette séparation en trois facilite la maintenance du SGBD et des BDs. Voir figure Langages langage de définition des données (LDD) : permet de définir un schéma de BD; Exemple: SQL (relationnel), ODL (orienté objets) langage de manipulation des données (LMD) : l état d une BD; Exemple: SQL (relationnel) permet de modifier ou d interroger langage hôte (host language) : expression utilisée pour dénoter les langages externes aux LMD qui permettent de programmer des applications; Exemple: Java, C++, COBOL, Visual Basic, PL/SQL langage de requête (query language) : expression utilisée pour dénoter un LMD lorsqu il est utilisé de manière autonome; Exemple: SQL avec SQL/PLUS d Oracle (relationnel), OQL (orienté objets). 7

14 2.6 Composantes d un SGBD compilateur pour le LDD : met à jour le catalogue du SGBD en traitant un schéma; compilateur pour le LMD : génère le code pour modifier l état de la BD; pré-compilateur pour un langage hôte : génère le code en langage hôte pour les énoncés de LMD d un programme d application; compilateur de requête : génère le code pour exécuter une requête d interrogation de la BD; processeur de requête : exécute les requêtes de mise à jour et d interrogation de la BD; gestionnaire des données stockées : gère les accès au disque pour le SGBD; utilitaires : divers programmes permettant d archiver, de prendre des copies de sécurité, de charger une BD à partir de fichiers séquentiels, de réorganiser l espace physique d une BD, de faire le suivi de la performance; outils d aide au développement : permettent de générer des schémas à partir de modèles de haut niveau (Exemple: modèle relationnel à partir du modèle E-R) et de développer des applications utilisant la BD (Exemple: Designer 2000 et Developper 2000 d Oracle). Voir figure 2.3 8

15 Chapter 8 Le langage SQL le langage SQL est une norme de l ANSI et de l ISO pour les SGBD relationnels il comporte à la fois des énoncés de définitions des données (LDD) et de manipulation des données (LMD). les fabricants de SGBD essaient de se conformer à cette norme, mais ils le font chacun à des niveaux différents de conformité; la version Oracle 10 est conforme à plusieurs éléments de la norme SQL, mais pas complètement; dans le cours, nous utilisons Oracle et Postgres; il est possible que des requêtes SQL exécutant sur d autres SGBD (comme Microsoft Access) ne puisse être exécutées sous Oracle, et vice-versa; pour maximiser la portabilité des applications, il est préférable de se limiter au SQL normalisé et ne pas utiliser de caractéristiques spécifiques à Oracle ou un autre SGBD. 8.1 Langage de définition des données Table une table est un ensemble de tuples; on utilise aussi relation comme synonyme de table, et ligne ou enregistrement comme synonymes de tuple; tous les tuples d une table ont le même format; ce format est défini par un ensemble d attributs; on peut représenter graphiquement une table par une matrice ou les colonnes sont les attributs; la première ligne comporte les noms des attributs, et les autres lignes représentent les tuples; l ordre d énumération des tuples ou des attributs n a pas d importance; la définition en SQL d une table comporte les éléments suivants: 9

16 son nom ses attributs ses contraintes d intégrité; il y a plusieurs types de contraintes d intégrité: clé primaire, clé unique, clé étrangère condition sur les valeurs des attributs (check(...), [not] null) Types en SQL La norme ANSI SQL définit des types de données. Il appartient aux fabricant de bases de données (comme Oracle, IBM, Microsoft) de suivre cette norme. Le tableau 8.1 donne les principaux types ANSI SQL. char(n) représente une chaîne de caractères de longueur fixe n; une chaîne de caractères est mise entre des apostrophes simples ( ); pour inclure un dans une chaîne de caractères, on utilise deux. Exemple 8.1 La chaîne abc12 est une valeur du type char(5). La chaîne ab 12 contient un au milieu. numeric(p,s) p indique le nombre total de chiffres stockés pour un nombre; la valeur de p doit être entre 1 et 38; s > 0 indique le nombre total de chiffres après la virgule; s < 0 indique un arrondissement du nombre de s chiffre avant la virgule; Exemple 8.2 numeric(5,2) peut contenir une valeur comportant 5 chiffres, dont 3 avant la virgule (soit 5-2) et 2 chiffres après la virgule; exemple de valeur : 123,45 numeric(2,5) peut contenir une valeur comportant de 2 chiffres; comme p < s dans ce cas, on a seulement des chiffres après la virgule; les 3 premiers (soit 5-2) ont comme valeur 0; exemple de valeur : 0,00012 numeric(5,-2) peut contenir une valeur comportant de 7 chiffres avant la virgule (soit 5 2), mais seulement les 5 premiers chiffres sont stockés, les 2 derniers sont toujours 0; il n y aucun chiffre après la virgule; exemple de valeur : ;lorsqu on stocke une valeur dans la base de données, elle est toujours arrondie à deux chiffres avant la virgule; exemple est stockée comme et est stocké comme

17 real numeric(2,-5) peut contenir une valeur comportant de 7 chiffres avant la virgule (soit 2 5), mais seulement les 2 premiers chiffres sont stockés, les 5 derniers sont toujours 0; il n y aucun chiffre après la virgule; exemple de valeur : ; permet de stocker un nombre en virgule flottant (c-a-d une valeur représentée par une mantisse et un exposant) varchar(n) permet de stocker une chaîne de caractères de longueur maximale n; par rapport à char(n), permet de mieux gérer l espace disque si les chaînes de caractères ne sont pas toujours de longueur n; date et heure le type date de la norme SQL2 comprend seulement une date en format YYYY-MM-DD; le type time de la norme SQL2 comprend seulement une heure en format HH:MM:SS; le type timestamp de la norme SQL2 comprend la date et l heure en format (YYYY-MM-DD HH:MM:SS.ffffff), où ffffff représente une fraction de seconde; le type date d Oracle est presque équivalent au type timestamp de SQL2; il comprend la date et l heure (YYYY-MM-DD HH:MM:SS), mais sans fraction de seconde; la valeur d une date varie entre le 1 er janvier 4712 avant J-C et 31 décembre 4712 après J-C. la date sous Oracle est affichée selon le format donné par le paramètre global nls_date_format; il existe plusieurs fonctions pour manipuler des dates en Oracle; Exemple 8.3 to_date( , DD-MM-YYYY ) retourne la valeur de la date 29 février 2000 selon le type DATE d Oracle. Le tableau 8.2 donne les types spécifique à Oracle qui ne font pas partie de la norme et qu il faut éviter d utiliser par souci de portabilité; il est préférable d utiliser les type ANSI SQL supportés par Oracle. 11

18 Types de la norme SQL Nom Espace Description Valeurs Exemples de constantes smallint 2 bytes entier to et -312 integer bigint 4 bytes entier 8 bytes entier numeric(p,s) et decimal(p,s)! variable virgule fixe (ie, nombre fixe de positions décimales) to à jusqu à chiffres avant la virgule et après real 4 bytes virgule flottante 6 chiffres de précision double precision char(n) varchar(n) date time timestamp 8 bytes virgule flottante 15 chiffres de précision n bytes n+2 bytes 4 bytes 8 bytes 8 bytes chaine de caractères de longueur fixe n chaine de caractères de longueur variable maximum n YYYY-MM-DD (année, mois, jour) HH:MM:SS (heures,mins,secs) YYYY-MM-DD HH:MM:SS.ffffff 4713 avant JC, après JC ffffff représente une fraction de seconde 518 et et et e 3 (ie, 0, x 10 3 ) e-3 (ie, -0,515 x 10-3 ) e3 (ie, 0, x 10 3 ) e-3 (ie, -0,515 x 10-3 ) 'coucou' 'aujourd''hui' 'coucou' 'aujourd''hui' date ' ' time '23:59:59' timestamp ' :59:59.123' boolean 1 bit booléen true et false! Table 8.1: Les types de la norme SQL 12

19 Type de données ANSI SQL Type spécifique à Oracle (à éviter si possible, car non standard) char(n) varchar(n) varchar2(n) numeric(p, s), decimal(p, s) number(p, s) integer, int, smallint number(38) real, double precision number date date contient une date et une heure; pas d autre choix pour représenter une date en Oracle time inexistant timestamp boolean inexistant Définition des tables Table 8.2: Types spécifiques à Oracle à éviter Notation utilisée pour décrire la syntaxe du langage SQL mot_cle : mot réservé du langage SQL; symbole terminal : peut être remplacé par un identificateur ou une constante (nombre, chaîne de caractère, etc); symbole non terminal : doit être remplacé par sa définition; symbole non terminal ::=... : définition d un symbole non terminal; "{" et "}" : équivalent des parenthèses en mathématiques; + : une ou plusieurs occurrences; : zéro ou plusieurs occurrences; [ élément optionnel ] : choix entre plusieurs options Syntaxe générale creation-table ::= create table nom-table ( liste-attributs [, liste-contraintes ] ) 13

20 Définition des attributs liste-attributs ::= attribut {, attribut } attribut ::= nom-attribut type [ default expression ] [ not null ] [ check ( condition ) ] la valeur par défaut est utilisée si la valeur de l attribut n est pas spécifiée lors de la création d un tuple; la condition doit être vérifiée lors de la création ou de la mise à jour d un tuple; not null : la valeur de l attribut ne peut contenir la valeur spéciale null; exemples de condition nom-attribut { = > >=... } expression nom-attribut in ( liste-valeurs ) condition { and or } condition not condition plusieurs autres (voir manuel Oracle) Définition des contraintes liste-contraintes ::= contrainte {, contrainte } contrainte ::= cle-primaire cle-unique cle-etrangere Clé primaire cle-primaire ::= constraint nom-contrainte primary key ( liste-noms-attribut ) il ne peut y avoir deux tuples avec les mêmes valeurs pour les attributs de la clé primaire; on peut définit une seule clé primaire pour une table; la valeur d un attribut d une clé primaire ne peut être null dans un tuple. 14

21 Clé unique cle-unique ::= constraint nom-contrainte unique ( liste-noms-attribut ) il ne peut y avoir deux tuples dans la table avec les mêmes valeurs pour les attributs de la clé unique; on peut définir plusieurs clés uniques pour une table; un attribut d une clé unique peut être null, toutefois, la combinaison de tous les attributs non null doit être unique Clé étrangère On dénote deux cas possibles: 1. faire référence à la clé primaire d une autre table cle-etrangere ::= constraint nom-contrainte foreign key ( liste-attributs ) references nom-table-referencee [ on delete cascade ] les types de liste-attributs doivent être les mêmes que les types des attributs de la clé primaire de nom-table-référencée ; pour chaque tuple de la table dont les attributs de clé étrangère sont tous différents de null, il doit exister un tuple dans nom-table-référencée avec la même valeur pour liste-attributs ; on delete cascade : si un tuple dans nom-table-référencée est supprimé, tous les tuples de la table qui le référence sont aussi supprimés. 2. faire référence à une clé unique d une autre table cle-etrangere ::= constraint nom-contrainte foreign key ( liste-attributs ) references nom-table-referencee [ ( liste-attributs-cle-unique ) ] [ on delete cascade ] les types de liste-attributs doivent être les mêmes que les types liste-attributsclé-unique ; pour chaque tuple de la table dont les attributs de clé étrangère sont tous différents de null, il doit exister un tuple dans nom-table-référencée avec la même valeur pour liste-attributs ; on delete cascade : si un tuple dans nom-table-référencée est supprimé, tous les tuples de la table qui le référence sont aussi supprimés. 15

22 8.1.4 Modification des tables alter table relation { ajout-attribut modification-attribut suppression-attribut ajout-contrainte suppression-contrainte } Ajout d attributs ajout-attribut ::= add ( liste-attributs ) ajoute les attributs de la liste à la table; Modification d attributs modification-attribut ::= modify ( liste-attributs ) modifie le type, la valeur par défaut ou l option null or not null des attributs de la liste; on spécifie seulement les parties à modifier; pour modifier le type, la valeur de chaque attribut doit être null pour tous les tuples de la table; pour spécifier not null, il faut que l attribut satisfasse déjà cette condition Suppression d attributs ajout-attribut ::= drop ( liste-noms-attribut ) supprime les attributs; non disponible en Oracle Ajout de contraintes ajout-attribut ::= add ( liste-contraintes ) ajoute les contraintes; les tuples de la table doivent satisfaire la contrainte. 16

23 Suppression de contraintes ajout-attribut ::= drop nom-contrainte [ cascade ] supprime la contrainte; cascade : supprime aussi toutes les contraintes qui dépendent de la contrainte supprimée Suppression des tables drop table nom-table [ cascade constraints ] 17

24 L exemple de la bibliothèque Voici le schéma relationnel. 1. editeur idediteur nom pays 2. auteur idauteur nom 3. livre idlivre titre idauteur idediteur dateacquisition prix 4. membre idmembre nom telephone limitepret 5. pret idmembre idlivre datepret 6. reservation idreservation idmembre idlivre datereservation 18

25 Voici le diagramme relationnel. editeur PK idediteur nom pays livre reservation PK idlivre PK FK1,U1 FK2,U1 idreservation idmembre idlivre datereservation U2,U1 FK1,U1 FK2,U2 titre idauteur idediteur dateacquisition prix auteur PK idauteur nom PK membre idmembre nom telephone limitepret pret PK,FK1 idmembre PK,FK2 idlivre PK datepret Figure 8.1: Diagramme relationnel de l exemple de la bibliothèque 19

26 Voici les énoncés de création des tables une ligne de commentaire commence par deux Exemple de la bibliotheque -- Marc Frappier, Universite de Sherbrooke drop table editeur cascade constraints ; create table editeur ( idediteur numeric (3), nom varchar (10) not null, pays varchar (10) not null, constraint PKediteur primary key ( idediteur ) ); drop table auteur cascade constraints ; create table auteur ( idauteur numeric (3), nom varchar (10) not null, constraint PKauteur primary key ( idauteur ) ); drop table livre cascade constraints ; create table livre ( idlivre numeric (3), titre varchar (10) not null check ( upper ( substr (titre,1,1)) = substr (titre,1,1)), idauteur numeric (3) not null, idediteur numeric (3) not null, dateacquisition date, prix numeric (7,2), constraint PKlivre primary key ( idlivre ), constraint UtitreAuteur unique ( titre, idauteur ), constraint UtitreEditeur unique ( titre, idediteur ), constraint FKlivreAuteur foreign key ( idauteur ) references auteur, constraint FKlivreEditeur foreign key ( idediteur ) references editeur ); drop table membre cascade constraints ; create table membre ( idmembre numeric (3), nom varchar (10) not null, telephone numeric (10) 20

27 check ( telephone >= and telephone <= ), limitepret numeric (2) check ( limitepret > 0 and limitepret <= 10), constraint PKmembre primary key ( idmembre ) ); drop table pret cascade constraints ; create table pret ( idmembre numeric (3), idlivre numeric (3), datepret date not null, constraint PKpret primary key ( idmembre, idlivre, datepret ), constraint FKpretMembre foreign key ( idmembre ) references membre, constraint FKpretLivre foreign key ( idlivre ) references livre ); drop table reservation cascade constraints ; create table reservation ( idreservation numeric (3), idmembre numeric (3), idlivre numeric (3), datereservation date not null, constraint PKreservation primary key ( idreservation ), constraint Ureservation unique ( idmembre, idlivre ), constraint FKreservMembre foreign key ( idmembre ) references membre, constraint FKreservLivre foreign key ( idlivre ) references livre ); 8.2 Langage de manipulation des données Insert insert into nom-table [ ( liste-noms-attribut ) ] { values ( liste-expressions ) select } Update update nom-table set { liste-affectation affectation-select } [ where condition ] liste-affectation ::= 21

28 affectation [, affectation ] affectation ::= nom-attribut = expression affectation-select ::= ( liste-noms-attribut ) = select expression peut être un énoncé select Delete delete from nom-table [ where condition ] si where n est pas spécifié, l énoncé delete supprime tous les tuples. 22

29 8.2.4 Select Syntaxe générale enonce-select-base ::= select [ distinct ] liste-expressions-colonne from liste-expressions-table [ where condition-tuple ] [ group by liste-expressions-colonne ] [ having condition-groupe ] [ order by liste-expressions-colonne ] enonce-select-compose ::= enonce-select-base { union [ all ] intersect minus } enonce-select-compose Sémantique Le résultat d un énoncé select est égal au résultat des opérations suivantes. Note: chaque SGBD utilise un algorithme propre pour exécuter un énoncé select. Toutefois, le résultat est le même que celui donné par la procédure ci-dessous. 1. évalue le produit cartésien des relations du from; 2. sélectionne les tuples satisfaisant la clause where; 3. tuples regroupés selon la clause group by; 4. sélectionne les groupes selon la condition having; 5. évalue les expressions du select; 6. élimine les doublons si clause distinct; 7. évalue l union, l intersection, ou la différence des selects (si nécessaire); 8. trie les tuples selon la clause order by La valeur spéciale NULL on utilise is null pour tester si une expression vaut null; on utilise is not null pour tester si une expression ne vaut pas null; une fonction évaluée sur une valeur null retourne une null (sauf la fonction nvl(e 1, e 2 ) qui retourne e 2 si e 1 vaut null, sinon elle retourne e 1 ; de manière plus générale, la fonction coalesce(e 1,..., e n ) retourne la première expression e i qui ne vaut pas null. dans toutes les fonctions de groupe sauf count(*), les valeurs null sont ignorées; 23

30 count(*) compte le nombre de tuple (doublons inclus), incluant les valeurs NULL; une expression booléenne atomique utilisant une valeur null retourne la valeur inconnu; une expression booléenne composée est définie selon les tables suivantes: not vrai faux inconnu faux vrai inconnu and vrai faux inconnu vrai vrai faux inconnu faux faux faux faux inconnu inconnu faux inconnu or vrai faux inconnu vrai vrai vrai vrai faux vrai faux inconnu inconnu vrai inconnu inconnu une clé primaire ne peut contenir de valeurs null pour les attributs d un tuple; une clé unique peut contenir des valeurs null pour un tuple. Toutefois, l unicité doit être préservée pour les valeurs non null Expressions expression élémentaire : nom d attribut, fonction, constante; expression composée : opérateur ou fonction appliqué sur expressions élémentaires ou composées; alias : renommer une expression ou une relation (table); * : retourne tous les attributs de toutes les tables du from R.* : retourne tous les attributs de la table R Conditions (Expressions booléennes) opérateurs logique : not, and, or opérateurs de comparaison : =,!=, <>, <, <=, >, >= is null, is not null (on écrit A is null, plutôt que A = null, qui retourne toujours INCONNU; idem pour A is not null, plutôt que A!= null). 24

31 expr 1 like expr 2 : vrai si expr 1 satisfait le patron expr 2 ; un patron est une chaîne de caractères pouvant contenir des caractères ayant une signification particulière: % dénote n importe quelle chaîne de caractères, y compris la chaîne vide (i.e., une chaîne de longueur 0), _ dénote n importe quel caractère (i.e., une chaîne de caractères de longueur 1 exactement). Par exemple, l expression A like %abc%def_8 retourne vrai ssi A contient la chaîne abc puis la chaîne def suivie de n importe quel caractère et ensuite du caractère 8 ; A peut contenir n importe quelle chaîne de caractères avant l occurrence du premier abc (premier % ) et entre abc et def (deuxième % ), et exactement un caractère (mais n importe lequel) entre def et 8. Voici des exemples de valeurs de A qui satisfont le patron %abc%def_8 abcdefz8 qabc(deft8 qsxabc*h$def=8 condition appliquée à un subselect expr in ( select ) : vrai si expr est un élément de l ensemble des tuples retournés par le select; expr not in ( select ) : vrai si expr n appartient pas aux tuples retournés par le select; expr >any ( select ) : vrai s il existe un tuple t select tel que expr > t; valable aussi pour tous les opérateurs de comparaison. expr >all ( select ) : vrai si pour tous les tuples t select, expr > t; exists ( select ) : retourne vrai ssi le select retourne au moins un tuple; not exists ( select ) : retourne vrai ssi le select ne retourne aucun tuple; Autres expressions (arithmétique, caractères, dates) tous les opérateurs arithmétiques de base et la plupart des fonctions mathématiques sont disponibles (voir le manuel de référence d Oracle). sysdate retourne la date et l heure courante. to_date(c, f) retourne la date correspondant à la chaîne de caractères c exprimée dans le format f. Par exemple, to_date( , YYYY-MM-DD ) retourne la date correspondant au 27 août

32 to_char(d, f) retourne la chaîne de caractères correspondant à la date d exprimée dans le format f. Par exemple, to_char(sysdate, YYYY-MM-DD ) retourne la date courante sous forme d une chaîne de caractères. l expression d + n, où d est une date et n un nombre en point flottant (ie, un nombre rationnel) représentant un nombre de jours, retourne la date d incrémentée de n jours. Par exemple to_date( , yyyy-mm-dd )+1 vaut le 28 août De manière similaire, l expression d n retourne la date d decrémentée de n jours. Par exemple to_date( , yyyy-mm-dd )-1 vaut le 26 août l expression c 1 c 1 retourne la concaténation des chaînes de caractères c 1 et c 2. Par exemple, a b vaut ab. la fonction substring(c, i, j) retourne la sous-chaîne de caractères de c commençant à la position i et de longueur j. Par exemple, substring( abcdef,2,3) vaut bcd. la fonction decode(e 0, e 1, v 1,..., e n, v n, v n+1 ) se comporte commme suit: si e 0 = e 1, alors elle retourne v 1, sinon si e 0 = e 2, alors elle retourne v 2, et ainsi de suite. Si e 0 e i pour tout i de 1 à n, alors elle retourne v n+1. Il existe plusieurs autres fonctions; voir le manuel d Oracle Fonctions d agrégation appliquée à l ensemble des tuples d un select ou aux tuples d un groupe quand la clause group by est utilisée. count( expr ), sum( expr ), avg( expr ), min( expr ), max( expr ), etc; count(*) : compte aussi les valeurs null; count(attribut) : compte seulement les valeurs non null; count(distinct attribut) : une valeur est comptée une seule fois, même si plusieurs tuples ont cette valeur; les autres fonction de groupe comme sum(x) ignorent les valeurs null; si toutes les valeurs sont null dans le groupe, alors la valeur null est retournée; utilisez nvl ou coalesce pour contourner ce problème. 26

33 Opérations ensemblistes 1. union : union de tous les tuples des subselects avec élimination des doublons; 2. union all : union de tous les tuples des subselects sans élimination des doublons; 3. intersect : intersection avec élimination doublon; 4. minus : différence, avec élimination doublon Jointures La norme SQL propose une syntaxe pour exprimer les jointures dans la clause from. CROSS JOIN Le cross join retourne le produit cartésien de deux tables. select... from livre CROSS JOIN membre est équivalent à select... from livre, membre JOIN, INNER JOIN et NATURAL JOIN inner join est un synonyme de join. Il retourne le produit cartésien de deux tables suivi d une sélection des lignes en fonction d une égalité entre des attributs (clause using (...)) ou d une condition spécifique (clause on condition ). Voici un exemple utilisant using. select... from livre JOIN pret USING ( idlivre ) est équivalent à select... from livre, pret where livre. idlivre = pret. idlivre Voici un exemple utilisant ON. select... from livre JOIN pret ON livre. idlivre = pret. idlivre and livre. dateacquisition < pret. datepret est équivalent à 27

34 select... from livre, pret where livre. idlivre = pret. idlivre and livre. dateacquisition < pret. datepret Le natural join est équivalent à un using sur tous les attributs communs entre deux tables (ie, les colonnes portant le même nom dans les deux tables). select... from livre NATURAL JOIN pret est équivalent à select... from livre JOIN pret USING ( idlivre ) OUTER JOIN Le outer join permet d ajouter au résultat d un join les lignes d une des tables (left pour la table de gauche, right pour la table de droite, full pour les deux tables) qui n apparaissent pas dans le résultat d un join. L exemple suivant retourne tous les livres de la table des livres, même ceux qui n ont pas de prêt, et qui donc n apparaitraient pas si on utilisait simplement un join. Les colonnes de l autre table contiennent des valeurs null pour les lignes ajoutées (ie, vu qu elles n ont pas de correspondance dans l autre table). select livre. idlivre, pret. datepret from livre LEFT OUTER JOIN pret USING ( idlivre ) est équivalent à select livre. idlivre, pret. datepret from livre, pret where livre. idlivre = pret. idlivre UNION ( select livre. idlivre, null from livre where NOT EXISTS ( select idlivre from pret where pret. idlivre = livre. idlivre ) ); Oracle permet aussi d utiliser une syntaxe abbréviée pour un outer join, en utilisant un + dans la clause where. Un left outer join s exprime en mettant un + du côté droit (et oui, c est l inverse...). Un right outer join s exprime en mettant un + du côté gauche. Un full outer join s exprime en mettant un + de chaque côté. L exemple précédent s exprime comme suit: 28

35 select livre. idlivre, pret. datepret from livre, pret where livre. idlivre = pret. idlivre (+) 29

36 Quelques exemples de SELECT 1. Sélection de colonnes d une table : Afficher la liste des livres avec leur titre. select idlivre, titre from livre 2. Sélection de lignes d une table avec une condition élémentaire : Afficher la liste des livres avec leur titre pour l auteur idauteur = 3. select idlivre, titre from livre where idauteur = 3 3. Sélection de lignes d une table avec une condition composée : Afficher la liste des livres avec leur titre pour les auteurs d idauteur = 3 ou 5. select idlivre, titre from livre where idauteur = 3 or idauteur = 5 ou bien select idlivre, titre from livre where idauteur in (3,5) 4. Ordonnancement du résultat : Afficher la liste des livres avec leur titre pour les livres des auteurs d idauteur = 3 ou 5, triée en ordre croissant de idauteur et titre. select idlivre, titre from livre where idauteur in (3,5) order by idauteur, titre 5. Spécification de colonnes calculées : Afficher la liste des livres avec leur titre et le prix incluant la TPS et la TVQ, pour les livres des auteurs d idauteur = 3 ou 5, triée en ordre croissant de idauteur et titre. select idlivre, titre, prix *1.075*1.07 PrixTTC from livre where idauteur in (3,5) order by idauteur, titre 6. Sélection de lignes à partir d expressions : Afficher la liste des livres avec leur titre et le prix incluant la TPS et la TVQ, pour les livres des auteurs d idauteur = 3 ou 5 et dont le prix TTC est 100 $, triée en ordre croissant de idauteur et titre. 30

37 select idlivre, titre, prix *1.075*1.07 PrixTTC from livre where idauteur in (3,5) and prix *1.075*1.07 <= 100 order by idauteur, titre 7. Fonction d agrégation : Afficher le nombre d éditeurs dans la base de données. select count ( idediteur ) "nb editeurs " from editeur 8. Fonction d agrégation avec élimination des doublons : Afficher le nombre d éditeurs et le nombre d auteurs dans la base de données. select count ( distinct idediteur ) " nb editeurs ", count ( distinct idauteur ) "nb auteurs " from editeur, auteur 9. Jointure de plusieurs tables : Afficher la liste des livres avec leur titre, nom de l auteur et nom de l éditeur, pour les idauteur = 3 ou 5, triée en ordre croissant de idauteur et titre select livre. idlivre, livre.titre, auteur.nom, editeur. nom from livre, auteur, editeur where livre. idauteur = auteur. idauteur and livre. idediteur = editeur. idediteur and livre. idauteur in (3,5) order by livre. idauteur, livre. titre 10. Calcul d expressions de groupe : Afficher la liste des éditeurs avec le nombre de livres édités. select editeur. idediteur, editeur.nom, count (*) "nb livres " from editeur, livre where editeur. idediteur = livre. idediteur group by editeur. idediteur, editeur. nom order by editeur. idediteur On note que si un éditeur n a pas de livre édité, il n apparaît pas dans le résultat du select. 11. Sélection de groupes : Afficher la liste des éditeurs avec le nombre de livres édités, en sélectionnant les éditeurs qui ont édité 5 livres ou plus. select editeur. idediteur, editeur. nom, count ( livre. idlivre ) "nb livres " from editeur, livre where editeur. idediteur = livre. idediteur 31

38 group by editeur. idediteur, editeur. nom having count ( livre. idlivre ) >= 5 order by editeur. idediteur 12. Jointure externe (outer join) : Afficher la liste des éditeurs avec le nombre de livres édités. Si un éditeur n a aucun livre, afficher 0. select editeur. idediteur, editeur. nom, count ( livre. idlivre ) "nb livres " from editeur LEFT OUTER JOIN livre USING ( idediteur ) group by editeur. idediteur, editeur. nom order by editeur. idediteur Avec Oracle, on utilise parfois la notation (+), qui ne fait pas partie de la norme SQL. select editeur. idediteur, editeur. nom, count ( livre. idlivre ) "nb livres " from editeur, livre where editeur. idediteur = livre. idediteur (+) group by editeur. idediteur, editeur. nom order by editeur. idediteur 13. Opérateur any : Afficher les auteurs qui ont au moins un éditeur en commun avec l auteur d idauteur 1. select distinct auteur. nom, auteur. idauteur from auteur, livre where auteur. idauteur = livre. idauteur and livre. idediteur = any ( select editeur. idediteur from editeur, livre l where editeur. idediteur = l. idediteur and l. idauteur = 1) 14. Opérateur all : Afficher le (ou les) livre(s) dont le prix est le plus élevé (les éléments maximaux) pour chaque éditeur. select editeur. idediteur, editeur. nom, livre. idlivre, livre. titre, livre. prix from editeur, livre where editeur. idediteur = livre. idediteur and livre. prix >= all ( select l. prix from livre l where l. idediteur = livre. idediteur ) order by editeur. idediteur, livre. idlivre Si plusieurs livres ont le prix le plus élevé pour un éditeur donné, chacun est affiché. 32

39 15. Opérateur all Afficher le livre le plus cher (le supremum) de chaque éditeur, s il existe. select editeur. idediteur, editeur. nom, livre. idlivre, livre. titre, livre. prix from editeur editeur, livre livre where editeur. idediteur = livre. idediteur and livre. prix >all ( select l. prix from livre l where l. idediteur = livre. idediteur and l. idlivre!= livre. idlivre ) order by editeur. idediteur, livre. idlivre 16. Opérateur exists : Afficher les auteurs qui ont publié au moins un livre avec l éditeur 1. select auteur. idauteur, auteur. nom from auteur where exists ( select * from livre where livre. idauteur = auteur. idauteur and livre. idediteur = 1) L énoncé ci-dessous est équivalent. select distinct auteur. idauteur, auteur. nom from auteur, livre where auteur. idauteur = livre. idauteur and livre. idediteur = Opérateur not exists : Afficher le (ou les) livre(s) dont le prix est le plus élevé (les éléments maximaux) pour chaque éditeur. select editeur. idediteur, editeur. nom, livre. idlivre, livre. titre, livre. prix from editeur, livre where editeur. idediteur = livre. idediteur and not exists ( select * from livre l where l. idediteur = livre. idediteur and livre. prix < l. prix ) order by editeur. idediteur, livre. idlivre Si plusieurs livres ont le prix le plus élevé pour un éditeur donné, chacun est affiché. 33

40 18. Opérateur not exists Afficher le livre le plus cher (le supremum) de chaque éditeur, s il existe. select editeur. idediteur, editeur. nom, livre. idlivre, livre. titre, livre. prix from editeur, livre where editeur. idediteur = livre. idediteur and not exists ( select * from livre l where l. idediteur = livre. idediteur and not ( l. idlivre = livre. idlivre ) and livre. prix <= l. prix ) order by editeur. idediteur, livre. idlivre 19. Requête de type pour tous (Quantification universelle) Afficher les auteurs qui ont publié un livre avec chaque éditeur. select auteur. idauteur, auteur. nom from auteur where not exists ( select * from editeur where not exists ( select * from livre where livre. idauteur = auteur. idauteur and livre. idediteur = editeur. idediteur )) 20. select imbriqué (clause from) : Afficher le (ou les) livre(s) ayant le plus grand nombre de prêts pour chaque éditeur (éléments maximaux). select nbpretediteurlivre. idediteur, nbpretediteurlivre. nom, nbpretediteurlivre. idlivre, nbpretediteurlivre. titre, nbpretediteurlivre. nbpret from ( select editeur. idediteur, editeur. nom, livre. idlivre, livre. titre, count ( pret. idlivre ) nbpret from editeur, livre, pret where editeur. idediteur = livre. idediteur (+) and livre. idlivre = pret. idlivre (+) group by editeur. idediteur, editeur. nom, livre. idlivre, livre. titre ) nbpretediteurlivre where not exists ( select * 34

41 from livre l, pret p where l. idediteur = nbpretediteurlivre. idediteur and l. idlivre = p. idlivre (+) group by l. idlivre having count ( p. idlivre ) > nbpretediteurlivre. nbpret ) order by nbpretediteurlivre. idediteur 21. Operation ensemblistes (union) Afficher la liste de tous les auteurs et de tous les editeurs en indiquant leur type ( auteur ou editeur ). select a. nom nom_a_e, auteur type from auteur a union ( select e. nom nom_a_e, editeur type from editeur e ) order by nom_a_e 22. Requête pour tous : Afficher les membres m1, m2 tels que m1 a emprunté tous les livres que m2 a emprunté. Effectué avec un double not exists select m1. idmembre, m2. idmembre from membre m1, membre m2 where m1. idmembre!= m2. idmembre AND not exists ( select * from pret p2 where p2. idmembre = m2. idmembre and not exists ( select * from pret p1 where p1. idmembre = m1. idmembre AND p1. idlivre = p2. idlivre ) ) order by m1. idmembre, m2. idmembre ; 23. Même requête pour tous que la précédente, effectuée avec un count 35

42 select m1. idmembre, m2. idmembre from membre m1, membre m2 where m1. idmembre!= m2. idmembre AND exists ( select p1. idmembre from pret p1, pret p2 where -- calcule les livres que m1 et m2 ont empruntes p1. idlivre = p2. idlivre AND p1. idmembre = m1. idmembre AND p2. idmembre = m2. idmembre group by p1. idmembre having -- nb total de livres que m1 et m2 ont en commun count ( distinct p1. idlivre ) = -- calcule les livres que m2 a empruntes ( select count ( distinct p3. idlivre ) from pret p3 where p3. idmembre = m2. idmembre ) ) order by m1. idmembre, m2. idmembre ; 36

43 24. Double requête pour tous : Afficher les membres m1, m2 tels que m1 et m2 ont emprunté exactement les mêmes livres. Effectuée avec un double not exists select m1. idmembre, m2. idmembre from membre m1, membre m2 where m1. idmembre!= m2. idmembre AND -- m1 a emprunte tous les livres de m2 not exists ( select * from pret p2 where p2. idmembre = m2. idmembre and not exists ( select * from pret p1 where p1. idmembre = m1. idmembre AND p1. idlivre = p2. idlivre ) ) AND -- m2 a emprunte tous les livres de m1 not exists ( select * from pret p1 where p1. idmembre = m1. idmembre and not exists ( select * from pret p2 where p2. idmembre = m2. idmembre AND p2. idlivre = p1. idlivre ) ) order by m1. idmembre, m2. idmembre ; 37

44 8.3 Divers Table virtuelle : vue une vue est construite à partir d un select; create view nom-vue as select ; une vue peut-être utilisée dans un select; la vue est évaluée au moment où le from du select est évalué; elle peut-être utilisé dans un update si la vue réfère à une seule table, et qu un tuple de la vue correspond à exactement un tuple de la table originale (clé (primaire ou unique) incluse); elle permet de restreindre l accès aux tables (Chap 20) Contraintes d intégrité create assertion nom-contrainte check ( condition ) condition comme dans un where d un select pas disponible en Oracle Oracle CREATE [ OR REPLACE ] TRIGGER nom-trigger { BEFORE AFTER } { INSERT DELETE UPDATE } ON nom-table [ FOR EACH ROW [ WHEN ( condition )]] enonce PL/SQL Index CREATE [ UNIQUE ] INDEX <nom - index > ON TABLE <nom - table > (< liste -nom - attributs >) Schéma schéma : ensemble de tables, vues, domaines, séquences, procédures, synonymes, index, contraintes d intégrité, et autres. create schema nom-schéma catalogue (dictionnaire de données en Oracle): ensemble de schémas. domaine : create domain nom-du-domaine as type [ default valeur ]; (pas disponible en Oracle) 38

45 8.3.5 Oracle et la norme SQL Quelques différences entre la syntaxe SQL d Oracle et la syntaxe SQL de la norme SQL. Oracle from R1 u, R2 v inexistant select * from R, S where R.B = S.C (+) select * from R, S where R.B (+) = S.C select * from R, S where R.B(+) = S.C(+) SQL R1 as u, R2 as v create domain select * from R left outer join S on R.B = S.C select * from R right outer join S on R.B = S.C select * from R full outer join S on R.B = S.C 39

46 Chapter 3 Le modèle entité-association Le modèle entité-association est plus abstrait que le modèle relationnel (SQL). Il est réalisé dans les phases d analyse des besoins. Il peut être traduit durant la phase d implémentation d un système en un modèle relationnel en SQL, ou bien orienté-objet, ou tout autre modèle de base de données (hiérarchique, réseau, XML, documentaire, etc) 3.1 Définition des concepts Synonyme d entité-association : entité-relation, tiré de l anglais entity relationship entité : c est un objet qui permet à une application de fournir l information désirée par l utilisateur du système. Il peut être physique, virtuel, conceptuel, imaginaire, artificiel, etc. Le seul critère qui permet de juger de la pertinence d une entité dans un modèle est son utilité pour l utilisateur. Exemple: un livre, un étudiant, un dieu de la mythologie grecque, etc type d entité : c est la collection de toutes les entités de même structure. Exemple: L ensemble de tous les étudiants que l on pourrait potentiellement stocker dans un système Exemple: L ensemble de tous les livres publiés et qui pourront être publiés dans toute l histoire de l Humanité. ensemble d entités : c est l ensemble des entités contenues dans un système à un moment donné. Exemple: L ensemble de tous les étudiants inscrits à l Université de Sherbrooke en janvier Exemple: L ensemble de tous les livres contenus dans le catalogue de la bibliothèque de l Université de Sherbrooke en décembre Remarque: Il est courant d entendre les expressions entité et instance au lieu de type d entité et entité. C est une confusion fort malheureuse, à laquelle nous n échapperons pas. 40

47 attribut : c est une fonction A qui associe une valeur v V à une entité E. A : E V Exemple: Le nom d un étudiant est un attribut d un étudiant. type d un attribut : c est le domaine de la valeur d un attribut; donc, c est le codomaine de la fonction A, c est-à-dire V ). Voici quelques catégories de types d attribut atomique (synonyme : univalent) composé (agrégat) multivalué (synonyme : multivalent, plurivalent) dérivé mémorisé clé d un type d entité : attribut injectif. Soit K un attribut. Alors K est une clé ssi K : E P(V ) et (K est injective) ou bien K(e 1 ) = K(e 2 ) e 1 = e 2 K K 1 = Id type d association relationship type : un type d association de degré n > 1 met en relation n types d entité E 1,..., E n. C est donc une relation mathématique R définie par le produit cartésien E 1... E n. instance d association : c est un tuple (e 1,..., e n ) de E 1... E n. ensemble d association : c est l ensemble des instances (e 1,..., e n ) contenus dans un système à un moment donné. Chaque tuple associe n entités e 1,..., e n. Remarque: On dit qu une association est récursive si E 1 = E 2. cardinalité d un type d association : Elle indique le nombre d instances auxquelles une entité peut participer. Il existe trois manières de représenter ces contraintes. 1. La première, proposée par Chen, consiste à spécifier une borne maximale; elle ne s applique qu aux associations binaires; les associations k-aire, avec k > 2 ne comportent pas de cardinalités. Il y a donc trois cas de figure : 1:1, 1:N, N:N. E 1 1 A 1 E 2 : une instance de E 1 est reliée par l association A à au plus une instance de E 2 ; une instance de E 2 est reliée à au plus une instance de E 1. 41

48 E 1 1 A N E 2 : une instance E 1 est reliée par l association A à un nombre arbitraire d instances de E 2 (par convention, N indique qu il n y a pas de maximum); le nombre 1 indique qu une instance de E 2 est reliée à au plus une instance de E 1. E 1 N A N E 2 : une instance de E 1 est reliée par l association A à un nombre arbitraire d instances de E 2 ; une instance de E 2 est reliée à un nombre arbitraire d instances de E La deuxième, utilisée en UML, consiste à utiliser un intervalle i..j où i est une borne inférieure et j une borne supérieure, avec j = s il n y a pas de borne supérieure. Ainsi, une cardinalité E 1 i 2..j 2 A i 1..j 1 E 2 indique qu une instance de E 1 est reliée par l association A à au moins i 1 et au plus j 1 instances de E 2 ; une instance de E 2 est reliée à au moins i 2 et au plus j 2 d instances de E 1. Quanfd 3. La troisième manière, proposée par Jean-Raymond Abrial en 1974, et beaucoup moins usitée, consiste à spécifier un couple (min, max) pour chaque composante E i de l association A, avec la signification suivante: chaque instance e de E i doit apparaître dans au moins i tuples de l association, et au plus j fois. Lorsque j =, il n y a pas de borne supérieure sur le nombre de tuples où e peut apparaître. Cette notation s applique à une association de degré arbitraire (c-à-d, pas seulement les binaires). Remarque: La notation UML utilise malheureusement de manière inappropriée cette notation. En UML, le couple min..max est spécifié sur le côté opposé de l association, ce qui fait qu il ne peut s appliquer qu aux associations binaires, en plus d introduire une autre confusion dont la communauté informatique se passerait bien :-). type d entité faible : une entité faible ne possède pas une clé complète, seulement d une clé partielle; une entité faible doit hériter des clés de ses entités propriétaires pour former une clé complète; un type d entité faible dépend d un ou plusieurs type d entités propriétaires (pères); les entités propriétaires doivent exister avant que l entité faible existe; il existe une relation d identification entre l entité faible et les entités propriétaires; cette relation est totale. 3.2 Convention nominative type d entité : nom association : verbe ou nom 42

49 disposition : lecture des associations de gauche à droite et de haut en bas (si possible) 3.3 Notation de Chen Voir figure elmasri Notation UML adaptée CHEN modèle ER nosession description code MEQ sigle titre cours N N accessible session N codemeq discipline type c sigle (c titre (c discipline type comprend no evaluation type N programme facultés evaluation no (cp1) description description no Programme titre Figure 3.1: Modèle entité-association exprimé E avec la notation Cas d'une declé Chen formée etde correspondant au K1 modèle UML de la Figure 3.2 plusieurs attributs : dans cet exemple, on a deux K11 K12 clés, chacune formée de 2 attributs K2 K21 K22 ratio de cardinalité et totalité 1 N E1 A E2 E N E1 A E2 E N 1 E1 A E2 E1 1..* 43

50 UML nosession description ssible session N codemeq discipline type cours sigle (c1) titre (c2) * accessible * * session nosession (c1) descrip[tion N programme facultés evaluation no (cp1) description comprend type * programme noprogramme (c1) titre (c2) facultés : Set no rogramme titre Cas d'une clé formée de plusieurs attributs : dans cet exemple, on a deux clés, chacune formée de 2 attributs Figure 3.2: Modèle entité-association exprimé avec la notation UML et correspondant au modèle de la Figure 3.1 E K11 (c1) association_sans_attribut 0..* K12 (c1) K21 (c2) 1..1 K22 (c2) Entité * Entité Attribut1 (c1) AttriMultiv : Set Entité Attribut1 (c1) Attribut2 (c1,c2) Attribut1 (c1) Attribut3 (c2) Attribut2 Attribut4 AssociationBinaire é Attribut1 N E2 E A Attribut2 0..* E2 N EntitéFaible E2 E AEntitéFaible 0..* E2 Attribut1 (cp1) Attribut1 (cp1) Attribut2 Attribut2 1 Attribut3 E2 E1 1..* A 0..1 E2 AttributComposé Attribut1 Attribut2 Attribut3 Entité Attribut1 (c1) Attribut2 Entité Attribut1 (c1) Attribut2 AssocNAire Attribut1 Attribut2 Figure 3.3: Modèle entité-association exprimé avec la notation UML illustrant une association ternaire, ainsi que des entités faibles ayant plus d un père 44

51 nosession evaluation sible description session E N K2N programme 21 K22 description type facultés facultés no evaluation N no (cp1) N type programme evaluation description evaluation type no evaluation UML programme noprogramme (c1) no (cp1) programme no description no (cp1) Programme titre titre (c2) description description facultés : Set no codemeq cours description Programme session titre titre no Programme discipline type K1 Cas d'une clé formée K11 K1 de K12 plusieurs attributs : dans cet exemple, K11 on a deux K12 clés, chacune formée de 2 attributs evaluation no (cp1) sigle (c1) titre (c2) accessible E nosession Cas d'une (c1) * * clé formée de descrip[tion plusieurs attributs : E dans cet exemple, on a deux * Cas d'une clé formée de clés, chacune E plusieurs attributs formée : de 2 attributs K2 dans cet K11 exemple, (c1) on a deux clés, chacune K12 (c1) formée de 2 K21 (c2) K21 K2comprend attributs * K22 K22 (c2) programme type K21 K22 noprogramme (c1) titre (c2) ratio de cardinalité et totalité facultés : Set Figure 3.4: À gauche, description une entité E possédant deux clés, K1 et K2, chacune formée de deux attributs; à droite, E représentée en UML 1 N no E1 ratio de cardinalité A et totalité E2 E1 ogramme titre ratio de cardinalité et totalité 1 N A N E1 A E2 1 N E1 E1 E2 E A 0..* A E2 E2 E1 E Cas d'une clé formée de 1 N A N E1 A E2 N 1 E1 E1 E2 E1 1.. plusieurs attributs : K11 (c1) 1..1 A 0..* dans cet exemple, on a deux K12 (c1) A E2 E2 E1 clés, chacune formée de 2 K21 (c2) attributs N 1 1 E1 K22 (c2) A E2 E1 1.. A E2 E1 1..* A 0..1 E2 Figure 3.5: Cardinalité exprimé avec la notation de Chen et correspondant au modèle UML de la Figure 3.6 N E2 E A 0..* E2 N E2 E A 0..* E2 1 E2 E1 A 1..* 0..1 E2 Figure 3.6: Modèle entité-association exprimé avec la notation UML et correspondant au modèle de la Figure Exemples Gestion des cours On désire développer un système pour gérer les inscriptions aux cours dans une université. Les cours offerts sont décrits dans l annuaire de l université. On désire affecter les cours selon les disponibilités des professeurs, leur compétence et l accessibilité des cours par session. Un étudiant s inscrit à un cours pour une session donnée s il a complété tous ses préalables. On désire également y consigner la note d un étudiant. On affecte un groupe-cours à un 45

52 étudiant inscrit à un cours. Un groupe-cours est donné par un professeur. Le modèle entitéassociation correspondant est représenté dans la Figure 3.7 avec la notation de Chen, et dans la Figure 3.8 avec la notation UML. sigle titre session N préalables N cours N accessib ilité 1 N N session 1 N clé sigle session N compétences N groupe N donne 1 groupe affecte N inscription N 1 étudiant note matricule matricule 1 professeur matricule N disponibilités N nom coter Figure 3.7: Modèle entité-association pour la gestion des cours selon la notation de Chen Gestion de projets Un projet est réalisé sur plusieurs phases, chaque phase ayant des dates de début et de fin. Un projet est géré par un et un seul gestionnaire de projet. Le gestionnaire peut toutefois autoriser d autres personnes à modifier ou interroger son projet. Chaque phase d un projet se décompose en itérations. Une itération dure environ deux semaines. Chaque itération comporte des tâches. Une tâche est affectée à une ou plusieurs personnes. Une tâche comporte un effort estimé (le nombre d heures nécessaires pour réaliser la tâche). On désire connaître aussi le temps travaillé à chaque jour sur les tâches pour chaque personne. Chaque tâche est d un certain type : analyse, programmation, test, formation, etc. On doit pouvoir spécifier pour chaque personne les types de tâches qu elle peut accomplir. On peut affecter une tâche à une personne seulement si cette personne peut réaliser ce type de tâche. Votre modèle doit pouvoir supporter les requêtes suivantes : connaître le temps total travaillé pour chaque projet, chaque phase, chaque itération et chaque tâche; déterminer la liste des tâches complétées; connaître l effort total estimé d un projet, d une phase et d une itération; connaître le nombre d heures travaillées pour chaque personne par semaine, par mois et par année; connaître le coût total estimé d un projet (pour chaque type de tâche, on a un taux horaire prévu) et connaître le coût total réel; connaître le gestionnaire du projet et les personnes qu il a autorisées pour modifier ou interroger le projet (pour chacune de 46

53 préalables donne Cours sigle (c1) titre (c2) compétences 0..* Professeur matricule (c1) 0..* salaire 0..* nom accessibilité disponibilités 0..* 0..* Session nosession (c1) Etudiant matricule (c1) coter nom GroupeCours 0..1 affecte 0..* Inscription nogroupe (cp1) note Figure 3.8: Modèle entité-association pour la gestion des cours selon la notation UML ces personnes, on doit savoir s il peut seulement interroger, ou bien interroger et modifier; si une personne peut modifier, elle peut alors interroger). Le modèle entité-association correspondant est représenté dans la Figure 3.9 avec la notation UML Gestion des statistiques au hockey La Figure 3.10 illustre le modèle relationel (SQL) d une BD de gestion des statistiques au hockey; la Figure 3.11 illustre le modèle entité-association correspondant. On suppose qu une équipe ne peut jouer qu une seule partie par jour. Notez que de meilleurs modèles existent pour cet exemple; celui-ci illustre assez bien les entités faibles et les associations entre entités faibles. 3.6 Erreurs fréquentes dans la modélisation entité-association 1. Un clé apparait dans plusieurs entités: Dans un modèle entité-association, si une clé d une entité apparait aussi comme un attribut d une autre entité, il s agit généralement d une erreur de modélisation; dans ce cas, on devrait plutôt utiliser une association entres ces deux entités. En général, une clé d une entité n apparaît pas dans une autre entité. Cette remarque ne s applique pas aux attributs génériques comme titre ou description, qui apparaissent dans plusieurs entités, mais avec des sens différents (il ne s agit pas du même titre ou de la même description). Ce problème est aussi symptomatique d une mauvaise compréhension du 47

54 modèle entité-association, que l on a souvent tendance à confondre avec le diagramme relationnel, et de mettre des clés étrangères pour représenter les associations. Les clés étrangères sont déduites du modèle entité-association; elles n apparaissent pas explicitement. La traduction d un modèle E-A en un modèle relationnel est l objet du prochain chapitre. Voir la figure 3.12, où l attribut idmembre est ajouté par erreur à l entité livre. C est une erreur, car l association pret identifie déjà l emprunteur du livre. Au prochain chapitre, nous verrons qu une association de cardinalité 0..* 0..1 peut être représentée dans une table en ajoutant la clé de l entité référencée au plus une fois en l ajoutant comme clé étrangère (i.e., après traduction, l attribut idmembre est ajouté dans la table représentant l entité livre en tant que clé étrangère vers membre). 2. Mauvaise cardinalité projet noprojet (c1) desccription phase nophase (cp1) description datedebut datefin itération noiteration (cp1) description datedebut datefin gère 0..* 1..1 consulte 0..* 1..1 mode accès affectée personne nopersonne (c1) nom 0..* 0..* 0..* typedetâche notype (c1) description tauxhoraire 1..1 peut accomplir tempstravaillé tâche notache (cp1) description effortestimé complétée 0..* date (cp1) effortréel type de la tâche 0..* Figure 3.9: Modèle entité-association pour la gestion de projets selon la notation UML 48

55 PK joueur nojoueur nom PK equipe noequipe nom ville marqueur contrat partie PK,FK1 PK nojoueur datepartie nbbuts nbpasses PK,FK1 PK FK2 nojoueur datedebut noequipe datefin salaire PK,FK1 PK,FK2 PK noequipe1 noequipe2 datejouee Figure 3.10: Modèle relationnel pour la gestion des statistiques au hockey signe 1..1 Équipe noequipe (c1) ville nom 0..* Contrat datedebut (cp1) datefin salaire joueur nojoueur (c1) nom Partie datejouee (cp1) marqueur datepartie (cp1) nbbuts nbpasses Figure 3.11: Modèle entité-association pour la gestion des statistiques au hockey 3. Cardinalités inversées 4. Confusion de deux concepts distincts qui sont représentés avec une seule entité (ex: pièce et interprétation d une pièce dans une bibliothèque de musique). 5. Distinction inutile entre deux entités, qui peuvent être fusionnées en une seule entité. 6. Incapacité de répondre à une requête en parcourant les associations. 7. Perte d information en parcourant les associations: par exemple, on désire identifier le professeur donnant un groupe-cours comme ift187-groupe1, mais en naviguant dans un mauvais modèle, on obtient tous les profs qui donnent ift

56 Livre& idlivre& (tre& idmembre& 0..*& pret& 0..1& Membre& idmembre& nom& limitepret& Figure 3.12: Erreur typique : l attribut idmembre est incorrectement ajouté à l entité livre 8. Noms inappropriés pour les entités, les attributs et les associations. 9. Redondance : une association peut être déduite d une autre association, avec exactement le même sens. 10. Confusion: une seule association est utilisée pour représenter deux concepts distincts. 11. Représenter une clé formée de deux attributs par deux attributs, chacun étant identifié comme une clé. Pour valider un modèle, simulez les instances des entités et des associations. 50

57 Chapter 7 Traduction d un schéma E-R en un schéma relationnel 7.1 Algorithmes de traduction 1. un type d entité E avec attributs univalents atomiques (A 1,..., A i,..., A n ) et clé A i devient un schéma de relation R(A 1,..., A i,..., A n ); Si la clé n est pas atomique (i.e., A i = (A i1,..., A im )), alors on génère un attribut pour chaque attribut atomique A ij formant la clé; la clé primaire est alors constituée de tous ces attributs atomiques. S il existe plusieurs clés pour une entité, on en choisit une comme clé primaire, et les autres deviennent des clés candidates (mot clé SQL UNIQUE). La traduction des attributs multivalués est décrite dans la suite de cette section. Voir étape 6 2. type d entité faible E avec attributs univalents atomiques (A 1,..., A i,..., A n ), clé partielle A i m entités propriétaires F 1,..., F m de clés A F1,..., A Fm devient un schéma de relation R(A 1,..., A i,..., A n, A F1,..., A Fm ) avec clés étrangères A F1 vers F 1 et... et A Fm vers F m 3. association binaire E 1 : E 2 de cardinalité 1:1 choisir entre E 1 et E 2 (choisir celle dont la participation est totale, s il y a lieu, e.g., relation manages avec department et employees); soit S la relation choisie et T l autre relation; ajouter la clé primaire de T au schéma de S; la définir comme clé étrangère; ajouter les attributs univalents de la relation au schéma de S. 51

58 Question 1: Nommez autre possibilité Réponse: Une seule relation; inconvénients: mise à jour plus complexe 4. association binaire E 1 1 R N E 2, avec clé K 1 de E 1 et K 2 de E 2 et attributs univalents A 1,..., A n de l association R. Il y a deux options: première option : importer la clé de E 1 dans E 2 ajouter la clé K 1 de E 1 au schéma de E 2 et en faire une clé étrangère ce(k 1 ) réf. E 1. ajouter les attributs univalents A 1,..., A n au schéma de E 2. Si la participation de E 2 est totale, alors ajouter la contrainte NOT NULL sur K 1 dans E 2 deuxième option : créer une table pour l association R créer un schéma de relation R(K 1, K 2, A 1,..., A n ) avec les clés étrangères ce(k 1 ) réf. E 1 et ce(k 2 ) réf. E 2. notons que la clé candidate ne comprend que K 2, à cause du ratio 1 : N. Ajouter la contrainte NOT NULL sur K 1 5. association binaire E 1 M R N E 2, avec clé K 1 de E 1 et K 2 de E 2 et attributs univalents A 1,..., A n de l association R. créer un schéma de relation R(K 1, K 2, A 1,..., A n ) avec les clés étrangères ce(k 1 ) réf. E 1 et ce(k 2 ) réf. E attribut multivalué créer une relation R avec clé primaire les clés de l entité (ou de l association) et l attribut multivalué. Ajouter une clé étrangère vers l entité ou l association. 7. relation n-aire E 1 :... : E n avec n > 2 créer une relation R de clé primaire formée avec les clés de E 1,..., E n et les clés étrangères vers E 1,..., E n. ajouter les attributs univalents pour les attributs multivalués, voir étape Exemples de traduction Les figures 7.2 et 7.3 donnent la traduction en modèle relationnel du modèle entité-association de la figure 7.1. Dans la figure 7.2, on a utilisé une table pour représenter les associations r2 et r4, ce qui donne des tables qui se référencent mutuellement, à cause de la cardinalité Le code SQL de ces tables est ensuite donné. 52

59 R2 E1 A1 (c1) A2 (c1) A3 (c2) A4 : Set 0..* E2 A5 (c1) A * R5 0..* R1 A7_1 A7_2 : Set E3 A8 (c1) A9 (c1) A10 1 A * E4 0..* E5 A11_1 A11_2 0..* role1 A12 (cp1) A13 A14 (cp1) A15 R role2 E6 A18 (c1) A19 R3 A16 A17 Figure 7.1: Modèle E-A traduit dans les figures 7.2 et

60 e1 PK a1 PK a2 U1 a3 e1a4 PK,FK1 a3 PK a4 e4 PK,FK1,FK3 a3 PK,FK2,FK3 a5 PK,FK3 a12 a13 r4 PK,FK1 a3_role1 PK,FK1 a5_role1 PK,FK1 a12_role1 FK2 a3_role2 FK2 a5_role2 FK2 a12_role2 e2 PK,FK1 a5 a6 e5 PK,FK1 a3 PK,FK1 a5 PK,FK1 a12 PK a14 a15 r1a7_2 PK a7_2 PK,FK1 a8 PK,FK1 a9 a5 r2 PK,FK1 a5 FK2 a8 FK2 a9 r1 PK,FK2 a8 PK,FK2 a9 a7_1 FK1 a5 r5 PK,FK1 a8 PK,FK1 a9 PK,FK2 a3 PK,FK2 a5 PK,FK2 a12 PK,FK2 a14 e3 PK a8 PK a9 a10 r3 PK,FK1 a3 PK,FK1 a5 PK,FK1 a12 PK,FK1 a14 PK,FK3 a8 PK,FK3 a9 PK,FK2 a18 a16 a17 e3a11 PK,FK1 a8 PK,FK1 a9 PK a11_1 PK a11_2 e6 PK a18 a19 Figure 7.2: Traduction du modèle E-A de la figure

61 e1 PK a1 PK a2 U1 a3 e1a4 PK,FK1 a3 PK a4 e4 PK,FK1 a3 PK,FK2 a5 PK a12 a13 FK3 a3_role2 FK3 a5_role2 FK3 a12_role2 e2 PK a5 a6 a8 a9 r1a7_2 PK a7_2 PK,FK1 a8 PK,FK1 a9 a5 r1 PK,FK2 a8 PK,FK2 a9 a7_1 FK1 a5 r5 PK,FK1 a8 PK,FK1 a9 PK,FK2 a3 PK,FK2 a5 PK,FK2 a12 PK,FK2 a14 e5 PK,FK1 a3 PK,FK1 a5 PK,FK1 a12 PK a14 a15 e3 PK a8 PK a9 a10 r3 PK,FK1 a3 PK,FK1 a5 PK,FK1 a12 PK,FK1 a14 PK,FK3 a8 PK,FK3 a9 PK,FK2 a18 a16 a17 e3a11 PK,FK1 a8 PK,FK1 a9 PK a11_1 PK a11_2 e6 PK a18 a19 Figure 7.3: Traduction du modèle E-A de la figure

62 Code SQL du modèle de la figure drop table E1 cascade ; create table E1 ( a1 int, a2 int, a3 int, primary key (a1,a2), unique (a3) ); drop table E1A4 cascade ; create table E1A4 ( a3 int, a4 int, primary key (a3,a4), foreign key ( a3) references E1 ( a3) ); drop table E2 cascade ; create table E2 ( a5 int, a6 int, primary key ( a5) ); drop table E3 cascade ; create table E3 ( a8 int, a9 int, a10 int, primary key (a8,a9) ); drop table E3A11 cascade ; create table E3A11 ( a8 int, a9 int, a11_1 int, a11_2 int, primary key (a8,a9, a11_1, a11_2 ), foreign key ( a8, a9) references E3 ); 56

63 drop table R1 cascade ; create table R1 ( a7_1 int, a5 int, a8 int, a9 int, primary key (a8,a9), foreign key ( a5) references E2, foreign key ( a8, a9) references E3 ); drop table R1A7_2 cascade ; create table R1A7_2 ( a7_2 int, a5 int, a8 int, a9 int, primary key (a8,a9, a7_2 ), foreign key ( a8, a9) references R1 ); drop table R2 cascade ; create table R2 ( a5 int, a8 int not null, a9 int not null, primary key (a5), foreign key ( a5) references E2 ( a5), foreign key ( a8, a9) references E3 ); alter table E2 add constraint fke2_r2 foreign key ( a5) references R2; drop table E4 cascade ; create table E4 ( a3 int, a5 int, a12 int, a13 int, primary key (a3,a5, a12 ), foreign key ( a3) references E1 ( a3), foreign key ( a5) references E2 ); drop table R4 cascade ; 57

64 create table R4 ( a3_role1 int, a5_role1 int, a12_role1 int, a3_role2 int not null, a5_role2 int not null, a12_role2 int not null, primary key ( a3_role1, a5_role1, a12_role1 ), foreign key ( a3_role1, a5_role1, a12_role1 ) references E4, foreign key ( a3_role2, a5_role2, a12_role2 ) references E4 ); alter table E4 add constraint fke4_r4 foreign key ( a3, a5, a12 ) references R ; drop table E5 cascade ; create table E5 ( a3 int, a5 int, a12 int, a14 int, a15 int, primary key (a3,a5,a12, a14 ), foreign key ( a3, a5, a12 ) references E4 ); drop table E6 cascade ; create table E6 ( a18 int, a19 int, primary key ( a18 ) ); drop table R3 cascade ; create table R3 ( a3 int, a5 int, a12 int, a14 int, a8 int, a9 int, a18 int, a16 int, a17 int, primary key (a3,a5,a12,a14,a18,a8,a9), 58

65 foreign key (a3,a5,a12, a14 ) references E5, foreign key ( a18 ) references E6, foreign key ( a8, a9) references E3 ); drop table R5 cascade ; create table R5 ( a8 int, a9 int, a3 int, a5 int, a12 int, a14 int, primary key (a8,a9,a3,a5,a12, a14 ), foreign key ( a8, a9) references R1, foreign key (a3,a5,a12, a14 ) references E5 );

66 Code SQL du modèle de la figure drop table E1 cascade ; create table E1 ( a1 int, a2 int, a3 int, primary key (a1,a2), unique (a3) ); drop table E1A4 cascade ; create table E1A4 ( a3 int, a4 int, primary key (a3,a4), foreign key ( a3) references E1 ( a3) ); drop table E2 cascade ; create table E2 ( a5 int, a6 int, a8 int not null, a9 int not null, primary key (a5), foreign key ( a8, a9) references E3 ); drop table E3 cascade ; create table E3 ( a8 int, a9 int, a10 int, primary key (a8,a9) ); drop table E3A11 cascade ; create table E3A11 ( a8 int, a9 int, a11_1 int, a11_2 int, primary key (a8,a9, a11_1, a11_2 ), 60

67 foreign key ( a8, a9) references E3 ); drop table R1 cascade ; create table R1 ( a7_1 int, a5 int, a8 int, a9 int, primary key (a8,a9), foreign key ( a5) references E2, foreign key ( a8, a9) references E3 ); drop table R1A7_2 cascade ; create table R1A7_2 ( a7_2 int, a5 int, a8 int, a9 int, primary key (a8,a9, a7_2 ), foreign key ( a8, a9) references R1 ); drop table E4 cascade ; create table E4 ( a3 int, a5 int, a12 int, a13 int, a3_role2 int not null, a5_role2 int not null, a12_role2 int not null, primary key (a3,a5, a12 ), foreign key ( a3) references E1 ( a3), foreign key ( a5) references E2, foreign key ( a3_role2, a5_role2, a12_role2 ) references E4 ); drop table E5 cascade ; create table E5 ( a3 int, a5 int, a12 int, a14 int, 61

68 a15 int, primary key (a3,a5,a12, a14 ), foreign key ( a3, a5, a12 ) references E4 ); drop table E6 cascade ; create table E6 ( a18 int, a19 int, primary key ( a18 ) ); drop table R3 cascade ; create table R3 ( a3 int, a5 int, a12 int, a14 int, a8 int, a9 int, a18 int, a16 int, a17 int, primary key (a3,a5,a12,a14,a18,a8,a9), foreign key (a3,a5,a12, a14 ) references E5, foreign key ( a18 ) references E6, foreign key ( a8, a9) references E3 ); drop table R5 cascade ; create table R5 ( a8 int, a9 int, a3 int, a5 int, a12 int, a14 int, primary key (a8,a9,a3,a5,a12, a14 ), foreign key ( a8, a9) references R1, foreign key (a3,a5,a12, a14 ) references E5 );

69 Chapter 10 Conception et normalisation d une BD comment choisir un bon schéma de BD relationnelle? deux niveaux d évaluation de la qualité point de vue utilisateur : sémantique des données point de vue développeur : manipulation et stockage des données théorie de la mesure de la qualité d un schéma : dépendances fonctionnelles Deux processus pour obtenir un schéma de BD relationnelle: 1. descendante définit modèle ERE transforme en modèle relationnel applique les critères informels vus au chapitre synthèse relationnelle décompose les schémas de relation jusqu à obtenir des schémas qui satisfont un certain niveau de forme normale (3NF, BCNF, 4NF, 5NF); il existe des algorithmes pour faire cette décomposition Critères informels de conception de schéma Sémantique des relations s assurez que chaque relation corresponde à un concept ou un fait du domaine de l application Voir figure 10.1,10.2 ne pas mélanger des attributs de deux entités différentes dans la même relation Voir figure

70 il faut tenir compte de l usage des entités Exemple 10.1 gestion d un dossier professeur au bureau de la recherche et gestion des membres du centre sportif: doit-on créer une seule relation ou deux relations? Information redondantes on vise à minimiser l espace nécessaire pour stocker l information Voir figure 10.3 minimiser l espace simplifie aussi les mises à jour ajout : ajoute l information avec des valeur nulles ou ajoute l information de deux entités à la fois; doit s assurer de la cohérence entre les duplications d information. clé primaire nulle (ajout d un département) modification : on doit modifier tous les tuples où l information est dupliquée suppression : on doit supprimer tous les tuples où l information est dupliquée, mais préserver au moins un tuple performance : on doit parfois avoir de la redondance pour améliorer la performance Valeur nulle éviter les valeurs nulles comment les traiter dans une fonction (ex: count, sum, etc?) elles ont 3 interprétations possibles l attribut ne s applique pas à ce tuple (ex: MGRSSN dans relation EMPLOYEE); la valeur de l attribut est inconnue pour le tuple (elle le sera plus tard); la valeur de l attribut est connue pour le tuple, mais elle n est pas encore enregistrée (elle le sera plus tard); décomposer si la valeur est peu fréquente Tuples erronés s assurer que la jointure de deux relations sur des clés étrangères et des clés primaires ne donnent pas de tuples erronés. considérer la relation EMP_PROJ (qui est obtenue à partir de la jointure naturelle EMPLOYEE WORKS_ON PROJECT. Voir figure 10.2,10.4,

71 10.2 Dépendance fonctionnelle Définition Définition 10.1 Soit R(Z) une relation. Il existe une dépendance fonctionnelle dans R entre deux ensembles d attributs X Z et Y Z, notée X Y, ssi pour tous tuples t1, t2 de tout état r de R, on a notation graphique Voir figure 10.3, t 1 [X] = t 2 [X] t 1 [Y ] = t 2 [Y ] une dépendance fonctionnelle impose une contrainte sur les états possibles r(r) de la BD. déterminée en fonction des besoins de l application Règles d inférence pour les dépendances fonctionnelles on spécifie habituellement les dépendances fonctionnelles évidentes à partir de la description du problème; on dénote par F l ensemble de ces dépendances fonctionnelles on dénote par F + la fermeture de F on peut calculer F + à l aide des règles suivantes. Soit W, X, Y, Z des ensembles d attributs. réflexivité augmentation transitivité X Y R1 X Y X Y Y Z R2 R3 X Y XZ Y Z X Z décomposition union pseudo-transitivité X Y Z R4.1 X Y X Y Z R4.2 X Z X Y X Z R5 X Y W Y Z R6 X Y Z W X Z Les 3 premières règles sont suffisantes pour calculer F + (théorème de Armstrong, 1974). on dénote par X + la fermeture de X sous F, c est-à-dire le plus grand ensemble d attributs Z tel que X Z, à partir d inférences sur F. à l aide de cet opérateur de fermeture, on peut calculer si deux ensembles E et F de dépendances fonctionnelles sont équivalents. on peut calculer X + avec l algorithme suivant: 65

72 Algorithme 10.1 X + := X; répéter oldx + := X + pour chaque Y Z de F faire si Y X + alors X + := X + Z jusqu à oldx + = X + Exemple 10.2 Soit F = { A 1 A 2, A 3 {A 4, A 5 }, {A 1, A 3 } A 6, } Alors A + 1 = {A 1, A 2 } A + 3 = {A 3, A 4, A 5 }, {A 1, A 3 } + = {A 1, A 2, A 3, A 4, A 5, A 6 } On peut prouver à l aide des règles d inférence que d une dépendance fonctionnelle est déduite à partir d un ensemble de dépendances fonctionnelles. On utilise la notation suivante : F = X Y pour énoncer que X Y peut être déduite à partir de l ensemble des dépendances fonctionnelles F en appliquant les règles d inférence. Par exemple, on prouve comme suit: {A B, B C, CD EF, F G} = AD G A B B C R3 A C CD EF R6 AD EF R4.1 AD F AD G F G R3 La preuve est représentée avec un arbre de déduction. La racine de l arbre est la dépendance fonctionnelle à déduire (i.e., la conclusion de la preuve, soit AD G dans l exemple ci-dessus). Les feuilles de l arbre sont les dépendances fonctionnelle de F (i.e., les hypothèses de la preuve, soit {A B, B C, CD EF, F G}). Chaque dépendance intermédiaire est obtenue en appliquant une règle d inférence à des hypothèses ou des dépendances déjà déduites. Il n est pas nécessaire d utiliser toutes les dépendances de F dans la preuve. Une hypothèse peut être utilisée plusieurs fois dans une preuve. 66

73 La preuve de F = X Y peut aussi être faite en utilisant l algorithme 10.1 en vérifiant si Y X + sous F. Toutefois, dans les examens, vous devez être capable de produire un arbre si cela est expressément demandé dans une question. Vous pouvez vérifier rapidement si F = X Y est vrai en utilisant l algorithme Pour l exemple précédent, on note que G (AD) + = ABCDEF G. Pour infirmer un énoncé F = X Y, on doit donner un contre-exemple. Pour donner un contre-exemple, il suffit de donner une table contenant deux lignes où F est satisfait et X Y n est pas satisfaite. Une dépendance X Y n est pas satisfaite si la valeur de X est la même sur les deux lignes de la table, mais les valeurs de Y sont distinctes. En effet, si la dépendance X Y est satisfaite dans une table, alors chaque valeur de X est associé à exactement une valeur de Y. Par exemple, l énoncé suivant: est faux; voici un contre-exemple. {A B, BC DE, E A} = B A A B C D E a 1 b 1 c 1 d 1 e 1 a 2 b 1 c 2 d 2 e 2 On note que A B + = B. Bien sûr, si un énoncé est vrai, il est impossible de trouver un contre-exemple, sinon cela invaliderait les règles d inférence d Armstrong Équivalence de dépendances fonctionnelles Définition 10.2 Soit E, F des ensembles de dépendances fonctionnelles. comprend E si pour toute dépendance X Y de E, on a Y X + sous F. Exemple 10.3 Soit E = { A 1 A 3, A 2 A 4, A 3 A 4, A 4 A 3 } et F = { A 1 A 4, A 2 A 3, A 3 A 4, A 4 {A 3, A 5 } } Si on calcule A + 1, A + 2, A + 3, A + 4 A + 1 = {A 1, A 3, A 4, A 5 } A + 2 = {A 2, A 3, A 4, A 5 } A + 3 = {A 3, A 4, A 5 } A + 4 = {A 3, A 4, A 5 } } sous F, on obtient On dit que F 67

74 On observe que F comprend E. Si on calcule A + 1, A + 2, A + 3, A + 4 sous E, on obtient A + 1 = {A 1, A 3, A 4 } A + 2 = {A 2, A 3, A 4 } A + 3 = {A 3, A 4 } A + 4 = {A 3, A 4 } } On observe que E ne comprend pas F, car pour A 4 {A 3, A 5 }, on a {A 3, A 5 } {A 3, A 4 } Définition 10.3 Soit E, F des ensembles de dépendances fonctionnelles. On dit que E et F sont équivalents ssi E comprend F et F comprend E. Exemple 10.4 On observe que E et F de l exemple 10.3 ne sont pas équivalents, car F couvre E, mais E ne couvre pas F. Soit F = { A 1 A 4, A 2 A 3, A 3 A 4, A 4 A 3 } Si on calcule A + 1, A + 2, A + 3, A + 4 sous F, on obtient A + 1 = {A 1, A 3, A 4 } A + 2 = {A 2, A 3, A 4 } A + 3 = {A 3, A 4 } A + 4 = {A 3, A 4 } } Donc, E et F sont equivalents. Définition 10.4 Une dépendance fonctionnelle X Z est dite minimale ssi il n existe pas de dépendance fonctionnelle Y Z telle que Y X. Définition 10.5 Un ensemble d attributs X est une clé candidate d une relation R(X, Y ) ssi il existe une dépendance fonctionnelle minimale X Y. Définition 10.6 Un ensemble d attributs X est une super clé d une relation R(X, Y ) ssi il existe une dépendance fonctionnelle X Y. Une clé candidate est donc une super clé. Une super clé minimale est une clé candidate. Lors de la définition des contraintes d intégrité dans une table, on choisit une des clé candidates comme clé primaire; les autres clés candidates sont représentées par des clés uniques. Définition 10.7 Un ensemble de dépendances fonctionnelles F est minimal ssi 1. pour chaque X A F, A est un singleton; 2. on ne ne peut enlever une dépendance de F et obtenir un ensemble de dépendances fonctionnelles équivalent; 3. on ne peut remplacer une X A F par Y A F, avec Y X. 68

75 10.3 Formes normales Il existe plusieurs formes normales. Dans ce chapitre, on s intéresse aux formes normales suivantes: 1NF : première forme normale 2NF : deuxième forme normale 3NF : troisième forme normale BCNF : forme normale de Boyce-Codd Ces formes normales représentent des contraintes sur des schémas de relation. Elles sont ordonnées comme suit. Soit rel(f N) l ensemble des relations satisfaisant la forme normale F N. On a rel(2nf) rel(3nf) rel(bcnf) Donc, si une relation est en forme BCNF, alors elle est aussi en forme 3NF, 2NF; si une relation est en 3NF, elle est aussi en 2NF Introduction La normalisation est un processus qui consiste à transformer des schémas de relation afin qu ils satisfassent les formes normales. La normalisation permet: d éviter les anomalies de maj de réduire la redondance rappels et définitions attribut premier : attribut qui appartient à une clé candidate attribut non premier : attribut qui n appartient pas à une clé candidate Première forme normale (1NF) Par définition, un schéma de relation est en première forme normale. Définition 10.8 Une relation R est en première forme normale (1NF) ssi tous les attributs de R sont atomiques (pas d ensemble, de tuple ou autre structure vectorielle comme type d un attribut) Voir figure 10.8,10.9,10.3 Les versions récentes de RDBMS (ex: Oracle 10) supporte maintenant des attributs qui sont des relations (i.e., des relations qui ne sont pas en première forme normale) 69

76 Deuxième forme normale (2NF) Définition 10.9 Une dépendance fonctionnelle X Y est complète ssi pour tout A X, X {A} Y (i.e., il n y a pas de dépendance fonctionnelle entre X {A} et Y ). Définition Une relation R est en deuxième forme normale (2NF) ssi tous les attributs non premiers de R sont en dépendance fonctionnelle complète de chaque clé de R. Voir figure Troisième forme normale (3NF) Définition Une relation R est en troisième forme normale (3NF) ssi pour toute dépendance fonctionnelle X A de R, une des conditions suivantes est satisfaite: 1. X est une super clé 2. A est un attribut premier Voir figure 10.10, Forme normale de Boyce-Codd (BCNF) Définition Une relation R est en forme normale Boyce-Codd (BCNF) ssi pour toute dépendance fonctionnelle X A de R, X est une super clé. Voir figure

77 Chapter 11 Autres formes normales 11.1 Quatrième forme normale Définition 11.1 Soit R un schéma de relation et X, Y R. Il existe une dépendance plurivalente entre X et Y, notée X Y ssi, pour tout état r de R, π X Y (r) π R Y (r) = r On note que si X Y est vrai, alors X (R Y ) est aussi vrai, et vice-versa. Pour cela, on note souvent une DP par X Y/Z, où Z = R (X Y ). Définition 11.2 Une dépendance plurivalente X Y est triviale ssi Y X ou X Y = R Définition 11.3 Une relation R est en quatrième forme normale (4NF) ssi, pour toute dépendance plurivalente non triviale X Y de R, X est une super clé. Voir figure Cinquième forme normale Définition 11.4 Soit R un schéma relationnel. Une décomposition de R est un ensemble de schémas relationnels D = {R 1,..., R n }. On dit que D préserve les attributs de A ssi n R i = R i=1 Définition 11.5 Soit R un schéma de relation avec F comme ensemble de dépendances fonctionnelles, et D = {R 1,..., R n } une décomposition de R. Il existe une dépendance de jointure, notée JD(R 1,..., R n ) dans R ssi, pour tout état r de R satisfaisant F, π R1 (r)... π Rn (r) = r 71

78 Notons qu une DP est un cas particulier de dépendance de jointure avec n = 2. Définition 11.6 Une dépendance de jointure JD(R 1,..., R n ) est triviale ssi i : R i = R. Définition 11.7 Une relation R est en cinquième forme normale (5NF) ssi, pour toute dépendance de jointure non triviale JD(R 1,..., R n ) de R, chaque R i est une super clé. Voir figure Décomposition et préservation Définition 11.8 Soit F un ensemble de dépendances fonctionnelles F sur R, et R i R. La projection de F sur R i, notée π F (R i ), est un ensemble F de dépendances fonctionnelles défini comme suit: F = {X Y X Y F + X Y R i } Définition 11.9 Une décomposition D = {R 1,..., R n } de R préserve les dépendances fonctionnelles F dans R ssi n ( π F (R i )) + = F + i=1 Définition Une décomposition D = {R 1,..., R n } de R satisfait la propriété de jointure non additive par rapport à F ssi, pour tout état r de R satisfaisant F, π R1 (r)... π Rn (r) = r 11.4 Algorithmes de décomposition de schéma 1. décomposition en 3NF avec préservation des dépendances fonctionnelles (algorithme 13.1) 2. décomposition en BCNF avec jointure non additive (algorithme 13.3) 3. décomposition en 3NF avec préservation des dépendances fonctionnelles et jointure non additive (algorithme 13.4) 4. décomposition en 4NF avec jointure non additive (algorithme 13.5) 5. décomposition en 5NF avec jointure non additive 72

79 Algorithme 13.1 : décomposition en 3NF avec préservation des dépendances fonctionnelles Soit F un ensemble de dépendances fonctionnelles minimal sur R. pour chaque X tel que A : X A F faire créer un schéma de relation R X (X, A 1,..., A m ), où X A i F créer une relation R(B 1,..., B n ), où B i est un attribut de R qui n a pas été inclus dans aucune relation à l étape précédente Algorithme 13.3 : décomposition en BCNF avec jointure non additive D := {R} tant qu il existe un schéma de relation Q dans D non en BCNF faire soit X Y une DF en Q qui viole BCNF remplacer Q par les deux schémas X Y et Q Y Algorithme 13.4 : décomposition en 3NF avec préservation des dépendances fonctionnelles et jointure non additive faire algorithme 13.1 si aucun des schémas ne comporte une clé pour R, ajouter un schéma de relation avec des attributs qui forment une clé pour R Algorithme 13.5 : décomposition en 4NF avec jointure non additive D := {R} tant qu il existe un schéma de relation Q dans D non en 4NF faire soit X Y une DP en Q qui viole BCNF remplacer Q par les deux schémas X Y et Q Y Algorithme de décomposition en 5NF avec jointure non additive D := {R} tant qu il existe un schéma de relation Q dans D non en 5NF faire soit JD(Q 1,..., Q m ) une DP en Q qui viole 5NF remplacer Q par les schémas Q 1,..., Q m. 73

80 Annexe A Diapositives de patrons de traduction 74

81 Cas Associa1on représentée par une table E1 A1 (c1) A A 0..1 E2 A3 (c1) A4 create table E1 ( A1 A2 PK (A1) ) create table A ( A1 PK (A1) FK (A1) REF E1 A3 not null UN (A3) FK (A3) REF E2 ) La table A a deux clés: A1 comme PK, et A3 en UNIQUE NOT NULL (ie, équivalent à une PK) create table E2 ( A3 A4 PK (A3) ) 2 Cas et Associa1on représentée par une table Même solu1on que le cas précédent

82 Cas Associa1on représentée dans une en1té par1cipante E1 A1 (c1) A A 0..1 E2 A3 (c1) A4 create table E1 ( A1 PK (A1) A2 A3 FK (A3) REF E2 ) create table E2 ( A3 PK (A3) A4 ) On peut choisir E1 ou E2 pour implémenter la clé étrangère qui représente l associa1on 4 Cas Associa1on représentée dans une en1té par1cipante E1 A1 (c1) A A 1..1 E2 A3 (c1) A4 create table E1 ( A1 PK (A1) A2 A3 NOT NULL FK (A3) REF E2 ) create table E2 ( A3 PK (A3) A4 ) La différence avec le cas précédent est notée en bleu: le NOT NULL est requis pour représenter la cardinalité minimale 1 5 2

83 Cas 0..* 0..1 Associa1on représentée par une table E1 A1 (c1) A2 0..* A 0..1 E2 A3 (c1) A4 create table E1 ( A1 A2 PK (A1) ) create table A ( A1 PK (A1) FK (A1) REF E1 A3 not null FK (A3) REF E2 ) create table E2 ( A3 A4 PK (A3) ) La table A a une seule clé, A1 comme PK. A3 est NOT NULL mais pas unique, contrairement au cas , à cause de «*» 6 Cas 0..* 1..1 Associa1on représentée par une table E1 A1 (c1) A2 0..* A 1..1 E2 A3 (c1) A4 create table E1 ( A1 A2 PK (A1) FK (A1) REF A ) create table A ( A1 PK (A1) FK (A1) REF E1 A3 not null FK (A3) REF E2 ) create table E2 ( A3 A4 PK (A3) ) Note: problème de l œuf et la poule: E1 ref A, et A ref E1. si on code ça en SQL, on ob1ent une erreur de syntaxe, car il faut que A existe pour créer E1, et vice- versa. Solu1on, voir page suivante 7 3

84 Il faut procéder en 3 étapes. 1- On crée E1 sans sa FK vers A. 2- On crée A 3- On ajoute la FK manquante à E1 create table E1 ( A1 A2 PK (A1) ); create table A ( A1 PK (A1) FK (A1) REF E1 A3 not null FK (A3) REF E2 ); Tables qui se référencent mutuellement ALTER TABLE E1 ADD CONSTRAINT i_e1_a FOREIGN KEY (A1) REFERENCES A; 8 Cas 0..* 0..1 Associa1on représentée dans une en1té par1cipante E1 A1 (c1) A2 0..* A 0..1 E2 A3 (c1) A4 create table E1 ( A1 PK (A1) A2 A3 FK (A3) REF E2 ) create table E2 ( A3 PK (A3) A4 ) Iden1que au cas , sauf qu on n a pas le choix du côté où implémenter la 9 clé étrangère; on doit la meore du côté «*» de l associa1on. 4

85 Cas 0..* 1..1 Associa1on représentée dans une en1té par1cipante E1 A1 (c1) A2 0..* A 1..1 E2 A3 (c1) A4 create table E1 ( A1 PK (A1) A2 A3 NOT NULL FK (A3) REF E2 ) create table E2 ( A3 PK (A3) A4 ) 10 Cas 0..* 0..* Associa1on représentée par une table E1 A1 (c1) A2 0..* A 0..* E2 A3 (c1) A4 create table E1 ( A1 A2 PK (A1) ) create table A ( A1 A3 PK (A1,A3) FK (A1) REF E1 FK (A3) REF E2 ) create table E2 ( A3 A4 PK (A3) ) La table A a une clé formée de deux aoributs. Note: il n y a pas d autre solu1on pour représenter les associa1ons 0..* 0..*. 11 5

86 Associa1on n- aire (n > 2) E1 A1 (c1) A2 E2 A3 (c1) A4 A E3 A5 (c1) A6 create table A ( A1 A3 A5 PK (A1,A3,A5) FK (A1) REF E1 FK (A3) REF E2 FK (A5) REF E3 ) La clé de la table A est formée de l union des clés des en1tés par1cipant dans l associa1on (généralisa1on du cas n=2). Si on u1lisait les cardinalités d Abrial, qui donnent plus d informa1ons que les cardinalités de UML et Chen, on pourrait être plus précis sur la forma1on de la clé primaire. 12 En1té ayant plusieurs clés candidates On en choisit une pour la clé primaire (arbitrairement), et les autres sont représentées par des clés uniques (une clé unique pour chaque clé candidate restante) Pour représenter la par1cipa1on à une associa1on, on peut choisir n importe quelle clé candidate 13 6

87 Aoribut mul1valué d une en1té E1 A1 (c1) A2 A3 : Set create table E1 ( A1 A2 PK (A1) ) create table E1A3 ( A1 A3 PK (A1,A3) FK (A1) REF E1 ) E1 A1 (c1) A2 0..* A31 A32 A3 create table E1A3 ( A1 A31 A32 PK (A1,A31,A32) FK (A1) REF E1 ) Aoen1on: il faut créer une table par aoribut mul1valué d une en1té. 14 Aoribut mul1valué d une associa1on E1 A1 (c1) A2 E2 A3 (c1) A4 A A7 A8 : Set E3 A5 (c1) A6 create table A ( A1 A3 A5 A7 PK (A1,A3,A5) FK (A1) REF E1 FK (A3) REF E2 FK (A5) REF E3 ) create table A8 ( A1 A3 A5 A8 PK (A1,A3,A5,A8) FK (A1,A3,A5) REF A ) Il faut créer une autre table pour représenter l aoribut mul1valué de l associa1on. Les aoributs monovalués comme A7 sont stockés dans la table de l associa1on. Chaque aoribut mul1valué a sa propre table. 15 7

88 Traduc1on d une en1té faible E1 A1 (c1) A2 E2 A3 (cp1) A4 create table E1 ( A1 PK (A1) A2 ) create table E2 ( A1 A3 PK (A1,A3) FK (A1) REF E1 A4 ) La clé d une en1té faible est par1elle. Pour faire une clé complète pour la table E2, il faut ajouter la clé de ses parents. 16 Traduc1on d une en1té faible avec aoribut mul1valué E1 A1 (c1) A2 E2 A3 (c2) A4 La clé d une en1té faible est par1elle. Pour faire une clé complète pour la table E2, il faut ajouter la clé de ses parents (E1 et E2). La clé d un aoribut mul1valué est formé de la clé de son en1té (E3) et de l aoribut lui- même (aoribut agrégé, donc A71 et A72). E3 A5 (cp1) A6 create table E3 ( A1 A3 A5 PK (A1,A3,A5) FK (A1) REF E1 FK (A3) REF E2 A6 ) 0..* A71 A72 A7 create table A7 ( A1 A3 A5 A71 A72 PK (A1,A3,A5,A71,A72) FK (A1,A3,A5) REF E3 ) 17 8

89 Annexe B Diapositives de normalisation 83

90 Modélisation de données (modèle relationnel) 2012/03/12 1 Modélisation de données On peut créer un modèle relationnel des données de deux manières: 1. Modèle entité-relation et traduction du modèle entité-relation en modèle relationnel 2. Produit directement un modèle relationnel qui est ensuite raffinné pour s assurer de sa qualité Dans cette partie, on utilisera la deuxième 2012/03/12 2 1

91 Normalisation des données Permet produire un modèle relationnel de qualité Sans redondance de données Base de données facile à mettre à jour et à interroger 2012/03/12 3 Modèle entité-relation Modèle abstrait (conceptuel) Peut être traduit en un Modèle relationnel Modèle objet Modèle hiérarchique, réseau, XML, etc Les algorithmes de traduction du modèle entitérelation en modèle relationnel produise généralement un modèle relationnel normalisé 2012/03/12 4 2

92 Identifier les entités une relation est un objet d intérêt pour l utilisateur du système une relation peut représenter un objet physique ou virtuel (artificiel) du monde critères de pertinence la relation a-t-elle une valeur pour le processus d affaires? est-elle référencée par une fonction de maj et une fonction d interrogation? y a-t-il plusieurs instances de l entité? 2012/03/12 5 Sources pour l identification des entités texte de l étude de faisabilité diagramme des fonctions rapport ou autre document que l on désire informatiser procédures 2012/03/12 6 3

93 La modélisation dans le processus de développement 1 Étude de faisabilité fonctions données 2 Analyse fonctionnelle modèle de données complet ébauche du modèle de données modèle logique de données diagramme des fonctions 3 Réalisation 2012/03/12 7 Processus de modélisation 1 Identifier fonctions et entités liste de fonctions liste d'entités 2 Élaborer modèle logique modèle d'un monde "idéal" optimisation de la performance modèle logique des données 3 Élaborer modèle physique modèle physique de données 2012/03/12 8 4

94 Modélisation de données et modélisation des fonctions le modèle de données et le diagramme des fonctions se développent en parallèle l identification d une relation entraîne l identification de fonctions (maj, interrogation) l identification d une fonction entraîne l identification de relations choisir l approche la plus naturelle selon le domaine d application 2012/03/12 9 Exemple d identification des entités On désire développer un système pour gérer les inscriptions aux cours dans une université. Les cours offerts sont décrits dans l annuaire de l université. On désire affecter les cours selon les disponibilités des professeurs, leur compétence et l accessibilité des cours par session. Un étudiant s inscrit à un groupe d un cours pour une session donnée s il a complété tous ses préalables. On désire également y consigner la note d un étudiant. 2012/03/

95 Exemple candidats d entité On désire développer un système pour gérer les inscriptions aux cours dans une université. Les cours offerts sont décrits dans l annuaire de l université. On désire affecter les cours selon les disponibilités des professeurs, leur compétence et l accessibilité des cours par session. Un étudiant s inscrit à un groupe d un cours pour une session donnée s il a complété tous ses préalables. On désire également y consigner la note d un étudiant. 2012/03/12 11 Exemple d élicitation de la liste des entités inscription oui (elle a une valeur pour le processus d affaires) cours oui (valeur, idem) université non aucune valeur; le système s applique toujours à la même université; si on gérait les cours pour un réseau d université, ou pour des programmes multi-universitaires, l entité université serait alors pertinente) 2012/03/

96 Exemple d élicitation de la liste des entités annuaire oui (il a une valeur, il contient la liste des cours) professeur oui (valeur) disponibilités des professeurs c est un attribut de professeur; il a une valeur pour gérer l affectation des cours compétence c est un attribut de professeur; il a une valeur pour gérer l affectation des cours 2012/03/12 13 Exemple d élicitation de la liste des entités accessibilité oui (valeur pour gérer l affectation des cours) session non; pas nécessaire de gérer les sessions; il s agit plutôt d un attribut de plusieurs entités étudiant oui (valeur) note oui (valeur) 2012/03/

97 Exemple d élicitation de la liste des entités groupe oui (valeur) préalables non (considérons le comme un attribut de cours) 2012/03/12 15 Représentation graphique cours accessibilité groupe professeur note inscription etudiant annuaire 2012/03/

98 Définition des attributs des entités pour chaque attribut, il faut nom type contraintes d intégrité pour l instant, on se concentre sur le nom représentation textuelle des attributs d une entité entité(attribut 1,..., attribut n ) 2012/03/12 17 Exemple d identification des attributs inscription(sigle, session, groupe, matricule) cours(sigle, titre, préalables) annuaire c est un ensemble de cours, donc déjà traité par l entité cours; on élimine cette entité professeur(nom, matricule, salaire, disponibilités, compétences) 2012/03/

99 Exemple d identification des attributs accessibilité(sigle, session) étudiant(matricule, nom, cotez) groupecours(sigle, session, groupe, matricule) matricule du prof qui enseigne le cours 2012/03/12 19 Exemple d identification des attributs note (sigle, session, groupe, matricule, note) on peut combiner l entité note avec inscription, car tous les attributs d inscription sont inclus dans note inscription(sigle, session, groupe, matricule,note) 2012/03/

100 Le modèle logique de gestion des cours avant normalisation cours sigle titre préalables accessibilité sigle session groupecours sigle session groupe matricule professeur matricule nom salaire compétences disponibilités Clé étrangère inscription sigle session matricule groupe note etudiant matricule nom cotez 2012/03/12 21 Normalisation des entités la normalisation des entités permet d obtenir un schéma de BD relationnelle de bonne qualité la normalisation minimise la redondance des données facilite la mise à jour des données facilite l interrogation des données 2012/03/

101 Formes normales une forme normale dénote un niveau de normalisation pour une entité il existe plusieurs formes normales 1FN, 2FN, 3FN, BCNF, 4FN, 5FN on a 1FN BCNF 3FN 2FN 5FN 4FN la plus courante est la 3FN les deux premières (1FN et 2FN) sont à éviter 2012/03/12 23 Définition de 1FN Une relation E est en 1FN (première forme normale) ssi tous les attributs de E sont scalaires (ou atomiques) attribut scalaire : attribut dont le type est élémentaire (char, varchar, numeric, etc) attribut vectoriel : ensemble, liste (c-à-d une structure comportant des répétitions) 2012/03/

102 Exemples et contre-exemples de 1FN les relations groupecours, inscription, étudiant, et accessibilité sont en 1FN la relation cours n est pas en 1FN, car l attribut préalables est un ensemble de sigles la relation professeur n est pas en 1FN, car les attributs compétences et disponibilités sont des ensembles 2012/03/12 25 Normalisation en 1FN si une relation E 1 n est pas en 1FN, on la normalise en créant une nouvelle relation E 2 pour chaque attribut vectoriel les attributs de E 2 sont : la clé primaire de E 1 les attributs des éléments de la structure vectorielle on enlève de la relation E 1 les attributs vectoriel 2012/03/

103 Normalisation en 1FN de cours cours sigle IFT286 IFT486 titre Lab. de BD BD cours sigle titre préalables IFT286 Lab. de BD IFT178 IFT486 BD IFT286 IFT339 préalablescours sigle préalables IFT286 IFT178 IFT486 IFT286 IFT486 IFT /03/12 27 Normalisation en 1FN de professeur professeur matricule salaire nom disponibilités compétences A01 IFT $ xyz E02 IFT $ abc H01 IFT178 disponibilités matricule session 1 A01 1 E02 2 H01 professeur matricule salaire nom $ xyz $ abc compétences matricule sigle 1 IFT286 1 IFT339 2 IFT /03/

104 Le modèle logique de cours après normalisation en 1FN prealablecours sigle sigleprealable cours sigle titre accessibilité sigle session groupecours sigle session groupe matricule professeur matricule salaire nom competence sigle matricule disponibilite matricule session inscription sigle session matricule groupe note etudiant matricule cotez nom 2012/03/12 29 Pourquoi normaliser en 1FN? parce que le modèle relationnel ne permet pas de stocker une structure vectorielle dans un attribut d une table d autres modèles permettent les répétitions modèle relationnel étendu ou relationnel objet (SQL3) modèle orienté objets 2012/03/

105 Dépendance fonctionnelle les définitions de 2FN, 3FN, BCNF reposent sur la notion de dépendance fonctionnelle une dépendance fonctionnelle est une fonction entre des listes d attributs on dénote une dépendance fonctionnelle comme suit : (A 1,..., A n ) A n+1 on dit que A n+1 dépend de A 1,..., A n 2012/03/12 31 Que représente une dépendance fonctionnelle? c est une fonction, donc elle associe à une liste de valeurs des attributs A 1,..., A n une et une seule valeur dans A n+1 exemple dans une université, étant donné le matricule d un étudiant, on peut donner son nom il existe donc une dépendance fonctionnelle entre matricule et nom matricule nom l inverse n est pas vrai : étant donné un nom, on ne peut déterminer le matricule d un étudiant, car il peut y avoir plusieurs matricules, puisque plusieurs étudiants peuvent avoir le même nom 2012/03/

106 Que représente une dépendance fonctionnelle? attention! la dépendance matricule nom ne signifie pas que le nom associé à un matricule ne change jamais; le nom peut changer, mais, en tout temps, on peut déterminer le nom d un étudiant à partir de son matricule cela ne signifie pas non plus que si on a deux matricules différents, alors leurs noms associés doivent être différents cela signifie que deux étudiants ne peuvent avoir le même matricule 2012/03/12 33 Dépendance fonctionnelle minimale si (A 1,..., A n ) B alors on a aussi (A 1,..., A n, A n+1 ) B pour les fins de normalisation, on considère seulement les dépendances qui sont minimales selon la liste de gauche 2012/03/

107 Dépendance fonctionnelle et clé candidate s il existe une dépendance fonctionnelle minimale entre (A 1,..., A n ) et tous les autres attributs de la relation, alors on peut conclure que (A 1,..., A n ) est une clé candidate une dépendance fonctionnelle sera donc traduite en une contrainte primary key ou unique 2012/03/12 35 Quelques lois sur les dépendances fonctionnelles Soit W, X, Y et Z des ensembles d attributs Par soucis de concision, on dénote par XY l union X Y de deux ensembles d attributs X et Y 2012/03/

108 Comment déterminer les dépendances fonctionnelles? les dépendances fonctionnelles sont des contraintes du domaine d application on les détermine à partir de notre connaissance des faits (règles, conditions, etc) du domaine d application on peut déterminer s il y a une dépendance fonctionnelle (A 1,..., A n ) A n+1 en répondant à la question suivante: étant donné une liste de valeurs pour A 1,..., A n, peuton toujours associer une et une seule valeur pour A n+1? 2012/03/12 37 Représentation graphique sigle titre sigle titre (sigle,session,groupe) matricule sigle session groupe matricule 2012/03/

109 Exercice identifiez les dépendances fonctionnelles entre les attributs suivants sigle, titre, matricule, nom, session, groupe, note, salaire, coter 2012/03/12 39 Définition de 2FN une relation E est en deuxième forme normale ssi tous les attributs non premiers de E sont en dépendance fonctionnelle complète de chaque clé candidate de E attribut premier : attribut d une clé candidate dépendance fonctionnelle complète : l attribut dépend de toute la clé (c-à-d il n existe pas de dépendance fonctionnelle entre une partie d une clé candidate et un attribut non premier) 2012/03/

110 prealablecours sigle sigleprealable Modèle logique de cours cours sigle titre accessibilité sigle session competence groupecours sigle session groupe matricule professeur matricule salaire nom sigle matricule disponibilite matricule session inscription sigle session matricule groupe note etudiant matricule cotez nom 2012/03/12 41 Exemples de 2FN les relations suivantes sont en 2FN cours prealablescours accessibilité groupecours inscription professeur competence disponibilite etudiant 2012/03/

111 Contre-exemple de 2FN une entité E est en deuxième forme normale ssi tous les attributs non premiers de E sont en dépendance fonctionnelle complète de chaque clé candidate de E sigle session groupe matricule titre nom titre ne dépend pas de toute la clé; il dépend seulement de sigle 2012/03/12 43 Normalisation en 2FN les attributs non premiers en dépendance partielle sont extraits pour former une nouvelle relation ou bien sont ajoutés à une relation ayant une clé primaire appropriée 2012/03/

112 Exemples de normalisation en 2FN A1 A2 A3 A4 A5 la relation n est pas en 2NF car - la clé est (A1,A2) - A5 est non premier - A5 dépend seulement de A2 A1 A2 A3 A4 A2 A5 2012/03/12 45 Sont-elles en 2NF? A1 A2 A3 A4 A5 oui - il y a deux clés candidates (A1,A2) et (A5) - seuls A3 et A4 sont non premiers - A3 et A4 dépendent complètement de toutes les clés candidates A1 A2 A3 A4 A5 oui - il y a deux clés candidates (A5), (A2) - seuls A1,A3 et A4 sont non premiers - A1, A3 et A4 dépendent complètement de toutes les clés - candidates 2012/03/

113 Pourquoi normaliser en 2FN? parce que cela élimine la redondance des données cela assure une meilleure intégrité des données tout en simplifiant les mise à jour on ne perd aucune information; on peut recréer la relation originale avec une jointure des deux relations normalisées 2012/03/12 47 Définition de 3FN Une relation E est en troisième forme normale ssi pour toute dépendance fonctionnelle X A de E, une des conditions suivantes est satisfaite: X est une super clé A est un attribut premier super clé : liste d attributs contenant une clé candidate 2012/03/

114 Exemples de 3FN les relations suivantes sont en 3FN cours prealablescours accessibilité groupecours inscription professeur competence disponibilite etudiant 2012/03/12 49 Contre-exemple de 3FN Une relation E est en troisième forme normale ssi pour toute dépendance fonctionnelle X A de E, une des conditions suivantes est satisfaite: X est une super clé A est un attribut premier sigle session groupe matricule nom cette relation n est pas 3FN car : matricule n est pas une super clé nom n est pas premier 2012/03/

115 Normalisation en 3FN A1 A2 A3 A4 A5 A4 A6 A1 A2 A3 A4 A4 A5 A6 2012/03/12 51 Pourquoi normaliser en 3FN comme pour la 2FN parce que cela élimine la redondance des données cela assure une meilleure intégrité des données tout en simplifiant les mise à jour on ne perd aucune information; on peut recréer la relation originale avec une jointure des deux relations normaliées 2012/03/

116 Définition de BCNF Une relation E est en forme normale de Boyce-Codd ssi pour toute dépendance fonctionnelle X A de E, la condition suivante est satisfaite: X est une super clé 2012/03/12 53 Exemples de BCNF les relations suivantes sont en BCNF cours prealablescours accessibilité groupecours inscription professeur competence disponibilite etudiant 2012/03/

117 Contre-exemple de BCNF supposons qu une institution d enseignement décerne un seul diplôme (SEC, DEC, ou BAC) et qu une personne obtient un diplôme d une et une seule institution; on a les DF suivantes (personne,diplôme) institution institution diplôme 2012/03/12 55 Contre-exemple de BCNF Une entité E est en forme normale de Boyce-Codd ssi pour toute dépendance fonctionnelle X A de E, la condition suivante est satisfaite: X est une super clé personne diplôme institution cette entité n est pas en BCNF, car il y a la DF institution diplôme, et institution n est pas une super clé 2012/03/

118 Normalisation en BCNF personne diplôme institution personne institution diplôme institution note: - on ne perd pas d information, - on diminue la redondance - on perd une contrainte d intégrité (personne,diplôme) institution 2012/03/12 57 Définition de 5FN Une relation E est en cinquième forme normale ssi E ne peut être obtenue par une jointure de relations E 1,..., E n telle que l une des E i n est pas une clé de E la quatrième forme normale est un cas particulier de 5FN; nous omettons sa définition 2012/03/

119 Exemple de 5FN les relations suivantes sont en 5FN cours prealablescours accessibilité groupecours inscription professeur competence disponibilite etudiant 2012/03/12 59 Contre-exemple de 5FN offredecours(sigle,session,matricule) représente le fait qu un professeur peut enseigner le cours à une session donnée cette relation peut être obtenue par la jointure des 3 relations suivantes: disponibilité(matricule, session) compétence(matricule, sigle) accessibilite(sigle, session) 2012/03/

120 Contre-exemple de 5FN accessibilité sigle session IFT286 H01 IFT286 E01 disponibilité matricule session 1 E01 2 E01 = offredecours sigle session matricule IFT286 E01 1 IFT286 E01 2 compétence matricule sigle 1 IFT286 2 IFT /03/12 61 Normalisation en 5FN offredecours sigle session matricule accessibilité sigle session disponibilité matricule session compétence matricule sigle 2012/03/

121 Normalisation vs Modèle ER Il arrive parfois que la traduction d un modèle ER ne donne pas un modèle relationnel normalisé Exercice Produisez le modèle ER du système de gestion des inscriptions aux cours Traduisez votre modèle en modèle relationnel Comparez le modèle relationnel obtenu avec le modèle normalisé 2012/03/12 63 Modèle ER (erroné) de la gestion des cours sigle titre préalables session N cours N accessib ilité N session N compétence groupe groupe N 1 N inscription matricule étudiant N donne matricule note nom cotez N 1 professeur N disponibilité 2012/03/

122 Modèle relationnel obtenu par traduction prealablecours sigle sigleprealable cours sigle titre accessibilité sigle session groupecours sigle session groupe matricule professeur matricule salaire nom competence sigle matricule disponibilite matricule session inscription sigle session matricule groupe note etudiant matricule cotez nom 2012/03/12 65 Modèle logique nornalisé de la gestion des cours prealablecours sigle sigleprealable cours sigle titre accessibilité sigle session groupecours sigle session groupe matricule professeur matricule salaire nom competence sigle matricule disponibilite matricule session inscription sigle session matricule groupe note etudiant matricule cotez nom 2012/03/

123 Modèle ER correspondant au modèle normalisé sigle titre session N N préalables cours 1 N accessib ilité N N session 1 N clé sigle session N 1 affecte N inscription N matricule note compétences groupe 1 N N donne groupe étudiant matricule 1 professeur matricule N disponibilités nom N coter 2012/03/12 67 Modèle UML correspondant au modèle normalisé préalables donne Cours sigle (c1) titre (c2) compétences 0..* Professeur matricule (c1) 0..* salaire 0..* nom accessibilité disponibilités 0..* 0..* Session nosession (c1) Etudiant matricule (c1) coter nom GroupeCours 0..1 affecte 0..* Inscription nogroupe (cp1) note 2012/03/

124 Annexe C Exercices de normalisation Voici d abord un rappel des règles d inférence R1 à R6. réflexivité augmentation transitivité X Y R1 X Y X Y Y Z R2 R3 X Y XZ Y Z X Z décomposition union pseudo-transitivité X Y Z R4.1 X Y X Y Z R4.2 X Z X Y X Z R5 X Y W Y Z R6 X Y Z W X Z 1. Prouvez ou infirmez les énoncés suivants. Pour une preuve, vous pouvez utiliser les règles R1 à R6; pour infirmer, donnez un contre-exemple. (a) {A B, C D} = AC BD (b) {A BC, B E, CD EF } = AD F (c) {A B, BC DE, AEF G} = ACF DG (d) {A B, BC DE, AEF G} = AF D 2. Soit R(A, B, C, D, E, F, G) avec les dépendances fonctionnelles F = {A BC, C DE, F G}. (a) Calculez la fermeture de A, AC, B, C, F sous F. (b) Identifiez toutes les clés candidates de R. 3. Soit R(A, B, C, D, E) avec les dépendances fonctionnelles suivantes. F 1 = {A B, AB C, D AC, D E} F 2 = {A BC, D AE} (a) Déterminez si F 1 et F 2 sont équivalents. (b) Identifiez les clés candidates de R. 118

125 4. Déterminez si les relations suivantes sont en 1FN. Justifiez votre réponse. Normalisez la relation si elle n est pas en 1FN. personne(nopersonne,nom,prénom,surnoms) équipe(noequipe, nom, entraineurchef, entraineursadjoints, joueurs) vin(codebarre,appelationcontrôlée, producteur) 5. Normalisez les relations suivantes jusqu en BCNF. Procédez par étape : normaliser les d abord en 2FN, puis en 3FN et finalement en BCNF. Pour chaque étape : a) identifiez les clés candidates; b) identifiez les dépendances fonctionnelles qui font qu une relation ne satisfait pas le niveau de normalisation; c) normalisez la relation. Voici un exemple. Soit R(ABCD) et F = {AB CD, B C, C D} 2FN : clé candidate de R : AB. La relation R n est pas en 2FN à cause de B CD. Normalisation en 2FN : R 1 (AB) et R 2 (BCD). 3FN : clé candidate de R 1 : AB; clé candidate de R 2 : B. La relation R 2 n est pas en 3FN à cause de C D. Normalisation en 3FN : R 1 (AB), R 21 (BC) et R 22 (CD). BCNF : clé candidate de R 1 : AB; clé candidate de R 21 R 22 : C. Les relations sont en BCNF. : B; clé candidate de Voici les relations à normaliser. (a) R(ABCD) et F = {A B, B C, C D} (b) R(ABCDE) et F = {AB CD, CD AB, D E} (c) R(ABCDE) et F = {AB CD, CD AB, CD E} (d) R(ABCDE) et F = {ABC DE, E A} (e) R(ABCDE) et F = {ABC DE, DE ABC, E A} (f) R(ABCDE) et F = {AB D, BC E} 6. Chez un fabricant d automobiles, chaque modèle de voiture possède plusieurs options. Par exemple, on peut commander une Skoda de couleur bleu ou rouge avec un moteur de 1,5L ou de 1,3L. L analyste de chez Skoda propose le schéma suivant pour représenter tous les modèles avec leurs options : modèle(nomodèle, moteur, couleur). Critiquez et normalisez ce modèle selon les hypothèses suivantes (produisez une réponse pour chaque hypothèse). (a) Toutes les couleurs sont disponibles pour tous les types de moteurs. (b) Seules certaines combinaisons (couleur,type de moteur) sont valides pour un modèle de voiture donné. 119

126 7. Définissez un schéma de BD en 5 ième forme normale pour le problème suivant. Pour chaque table, donnez seulement les informations suivantes: nomtable(a 1,..., A n0 ) clé candidate 1 (A 1,..., A n1 )... clé candidate k (A 1,..., A nk ) clé étrangère 1 (A 1,..., A n1 ) référence nomtable(a 1,..., A n1 )... clé candidate j (A 1,..., A nj ) référence nomtable(a 1,..., A nj ) Description du problème Une compagnie a un ensemble de départements. Chaque département a un ensemble d employés, un ensemble de projets et un ensemble de bureaux. Chaque employé a un historique de travail, constitué des postes occupés par l employé dans cette compagnie. Pour chaque poste occupé, un employé a un historique de salaire, représentant les différents échelons salariaux obtenus par l employé. Chaque bureau a un ensemble de téléphones. La base de données doit contenir les informations suivantes. Utilisez les noms d attribut identifiés entre (). pour un département : le no du département (nodept), son budget (budgetdept), et le no d employé (noempchef) du chef du département. pour un employé : le numéro d employé (noemp), le numéro du projet (noproj) pour lequel il travaille présentement, no de bureau (nobureau) et no de téléphone (notel); de plus, on doit aussi avoir le titre de chaque poste occupé par l employé (poste), la date de début de ce poste (datedebut), et tous les échelons salariaux (salaire) obtenus par l employé avec la date de début (datedebut). pour un projet : no de projet (noprojet) et budget (budgetprojet) pour un bureau : no de bureau (nobureau), localisation (ex: D4) (localisation) et numéros de téléphone (notel). On pose les hypothèses suivantes. Les numéros de département, d employé, de projet, de bureau et de téléphone sont uniques lorsque considéré individuellement. Un employé ne gère qu un seul département à la fois. Un employé ne travaille que dans un seul département à la fois. Un employé ne travaille que dans un seul projet à la fois. Un employé n occupe qu un seul bureau à la fois. Un employé n a qu un seul téléphone à la fois. Un employé n occupe qu un seul poste à la fois. 120

127 Un projet est sous la responsabilité d un seul département. Un bureau n est affecté qu à un seul département à la fois. Un bureau peut être inoccupé. Un poste n est pas unique; par exemple, on peut être directeur du département des ventes et ensuite directeur du département de production. 121

Langage SQL : créer et interroger une base

Langage SQL : créer et interroger une base Langage SQL : créer et interroger une base Dans ce chapitre, nous revenons sur les principales requêtes de création de table et d accès aux données. Nous verrons aussi quelques fonctions d agrégation (MAX,

Plus en détail

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

Langage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes Langage SQL (1) Sébastien Limet Denys Duchier IUT Orléans 4 septembre 2007 Notions de base qu est-ce qu une base de données? SGBD différents type de bases de données quelques systèmes existants Définition

Plus en détail

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

Bases de Données relationnelles et leurs systèmes de Gestion III.1- Définition de schémas Bases de Données relationnelles et leurs systèmes de Gestion RAPPELS Contraintes d intégrité sous Oracle Notion de vue Typage des attributs Contrainte d intégrité Intra-relation

Plus en détail

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

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble. Gaëlle PERRIN SID2 Grenoble Le 10/04/2014 Base de Données (BD) : une grande quantité de données, centralisées ou non, servant pour les besoins d'une ou plusieurs applications, interrogeables et modifiables

Plus en détail

Exploitation de bases de données relationnelles et orientées objet IFT287

Exploitation de bases de données relationnelles et orientées objet IFT287 Université de Sherbrooke Département d informatique Exploitation de bases de données relationnelles et orientées objet IFT287 Notes complémentaires et synthétiques Marc Frappier, Ph.D. professeur Avertissement

Plus en détail

Le Langage SQL version Oracle

Le Langage SQL version Oracle Université de Manouba École Supérieure d Économie Numérique Département des Technologies des Systèmes d Information Le Langage SQL version Oracle Document version 1.1 Mohamed Anis BACH TOBJI [email protected]

Plus en détail

Bases de données relationnelles

Bases de données relationnelles Bases de données relationnelles Système de Gestion de Bases de Données Une base de données est un ensemble de données mémorisé par un ordinateur, organisé selon un modèle et accessible à de nombreuses

Plus en détail

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

Le langage SQL pour Oracle - partie 1 : SQL comme LDD Le langage SQL pour Oracle - partie 1 : SQL comme LDD 1 SQL : Introduction SQL : Structured Query Langage langage de gestion de bases de donn ees relationnelles pour Définir les données (LDD) interroger

Plus en détail

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

1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5 1. Qu'est-ce que SQL?... 2 2. La maintenance des bases de données... 2 2.1 La commande CREATE TABLE... 3 2.2 La commande ALTER TABLE... 4 2.3 La commande CREATE INDEX... 4 3. Les manipulations des bases

Plus en détail

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

Introduction au Système de Gestion de Base de Données et aux Base de Données Introduction au Système de Gestion de Base de Données et aux Base de Données Formation «Gestion des données scientifiques : stockage et consultation en utilisant des bases de données» 24 au 27 /06/08 Dernière

Plus en détail

Le Langage De Description De Données(LDD)

Le Langage De Description De Données(LDD) Base de données Le Langage De Description De Données(LDD) Créer des tables Décrire les différents types de données utilisables pour les définitions de colonne Modifier la définition des tables Supprimer,

Plus en détail

SQL Historique 1982 1986 1992

SQL Historique 1982 1986 1992 SQL Historique 1950-1960: gestion par simple fichier texte 1960: COBOL (début de notion de base de données) 1968: premier produit de sgbdr structuré (IBM -> IDMS) 1970-74: élaboration de l'outil d'analyse

Plus en détail

Les bases de données

Les bases de données Les bases de données Introduction aux fonctions de tableur et logiciels ou langages spécialisés (MS-Access, Base, SQL ) Yves Roggeman Boulevard du Triomphe CP 212 B-1050 Bruxelles (Belgium) Idée intuitive

Plus en détail

Le langage SQL Rappels

Le langage SQL Rappels Le langage SQL Rappels Description du thème : Présentation des principales notions nécessaires pour réaliser des requêtes SQL Mots-clés : Niveau : Bases de données relationnelles, Open Office, champs,

Plus en détail

Création et Gestion des tables

Création et Gestion des tables Création et Gestion des tables Version 1.0 Z Grégory CASANOVA 2 Sommaire 1 Introduction... 3 2 Pré-requis... 4 3 Les tables... 5 3.1 Les types de données... 5 3.1.1 Les types de données Sql Server... 5

Plus en détail

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

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 SQL Sommaire : COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 COMMANDES DE MANIPULATION DE DONNEES... 2 COMMANDES DE CONTROLE TRANSACTIONNEL... 2 COMMANDES DE REQUETE DE DONNEES... 2 COMMANDES

Plus en détail

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

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ; RÈGLES A SUIVRE POUR OPTIMISER LES REQUÊTES SQL Le but de ce rapport est d énumérer quelques règles pratiques à appliquer dans l élaboration des requêtes. Il permettra de comprendre pourquoi certaines

Plus en détail

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

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation Base de données S. Lèbre [email protected] Université de Strasbourg, département d informatique. Présentation du module Contenu général Notion de bases de données Fondements / Conception Utilisation :

Plus en détail

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

Présentation du module Base de données spatio-temporelles Présentation du module Base de données spatio-temporelles S. Lèbre [email protected] Université de Strasbourg, département d informatique. Partie 1 : Notion de bases de données (12,5h ) Enjeux et principes

Plus en détail

16H Cours / 18H TD / 20H TP

16H Cours / 18H TD / 20H TP INTRODUCTION AUX BASES DE DONNEES 16H Cours / 18H TD / 20H TP 1. INTRODUCTION Des Fichiers aux Bases de Données 2. SYSTEME DE GESTION DE BASE DE DONNEES 2.1. INTRODUCTION AUX SYSTEMES DE GESTION DE BASES

Plus en détail

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

Cours Base de données relationnelles. M. Boughanem, IUP STRI Cours Base de données relationnelles 1 Plan 1. Notions de base 2. Modèle relationnel 3. SQL 2 Notions de base (1) Définition intuitive : une base de données est un ensemble d informations, (fichiers),

Plus en détail

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

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 Plan Bases de Données L3 Info Céline Rouveirol 2010-2011 Bases de Données 1 / 77 Sources des transparents Bases de Données 2 / 77 Bases de SQL - M.P. Dorville/F. Goasdoué, LRI, Université Paris Sud - V.

Plus en détail

Information utiles. [email protected]. webpage : Google+ : http://www.ibisc.univ-evry.fr/ digiusto/

Information utiles. cinzia.digiusto@gmail.com. webpage : Google+ : http://www.ibisc.univ-evry.fr/ digiusto/ Systèmes de gestion de bases de données Introduction Université d Evry Val d Essonne, IBISC utiles email : [email protected] webpage : http://www.ibisc.univ-evry.fr/ digiusto/ Google+ : https://plus.google.com/u/0/b/103572780965897723237/

Plus en détail

Olivier Mondet http://unidentified-one.net

Olivier Mondet http://unidentified-one.net T-GSI Ch.4 Le Langage SQL LDD, LCD Cet exercice guidé reprend le plan suivis lors de l intervention de formation faite pour l académie de Versailles. L objectif principal visait en la présentation du langage

Plus en détail

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

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013 NFA 008 Introduction à NoSQL et MongoDB 25/05/2013 1 NoSQL, c'est à dire? Les bases de données NoSQL restent des bases de données mais on met l'accent sur L'aspect NON-relationnel L'architecture distribuée

Plus en détail

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

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 Exemple accessible via une interface Web Une base de données consultable en ligne : Bases de données et systèmes de gestion de bases de données The Trans-atlantic slave trade database: http://www.slavevoyages.org/tast/index.faces

Plus en détail

Bases de Données Avancées

Bases de Données Avancées 1/62 Bases de Données Avancées Introduction & Rappel Conception et Modélisation Thierry Hamon Bureau H202 - Institut Galilée Tél. : 33 1.48.38.35.53 Bureau 150 LIM&BIO EA 3969 Université Paris 13 - UFR

Plus en détail

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

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres. INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES Durée : 1h30 Date : 17/05/2006 Coordonnateurs : Amel Bouzeghoub et Bruno Defude Documents autorisés : ceux distribués en cours Avertissements

Plus en détail

Cours Bases de données

Cours Bases de données Informations sur le cours Cours Bases de données 9 (10) séances de 3h Polycopié (Cours + TD/TP) 3 année (MISI) Antoine Cornuéjols www.lri.fr/~antoine [email protected] Transparents Disponibles

Plus en détail

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

Le langage SQL (première partie) c Olivier Caron Le langage SQL (première partie) 1 Plan Le S.G.B.D. postgres Le langage SQL Langage de manipulation de données Langage de requêtes 2 Quelques mots sur Postgres (1/2) Travaux de Stonebraker (Univ. Berkeley)

Plus en détail

1 Introduction et installation

1 Introduction et installation TP d introduction aux bases de données 1 TP d introduction aux bases de données Le but de ce TP est d apprendre à manipuler des bases de données. Dans le cadre du programme d informatique pour tous, on

Plus en détail

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS Depuis SAS 9.2 TS2M3, SAS propose un nouveau langage de programmation permettant de créer et gérer des tables SAS : le DS2 («Data Step 2»). Ces nouveautés

Plus en détail

1/ Présentation de SQL Server :

1/ Présentation de SQL Server : Chapitre II I Vue d ensemble de Microsoft SQL Server Chapitre I : Vue d ensemble de Microsoft SQL Server Module: SQL server Semestre 3 Année: 2010/2011 Sommaire 1/ Présentation de SQL Server 2/ Architerture

Plus en détail

Bases de Données. Plan

Bases de Données. Plan Université Mohammed V- Agdal Ecole Mohammadia d'ingénieurs Rabat Bases de Données Mr N.EL FADDOULI 2014-2015 Plan Généralités: Définition de Bases de Données Le modèle relationnel Algèbre relationnelle

Plus en détail

Initiation à SQL. Le langage de communication avec une base de données relationnelles. Application avec PostgreSQL. Nathalie Camelin 2011/2012

Initiation à SQL. Le langage de communication avec une base de données relationnelles. Application avec PostgreSQL. Nathalie Camelin 2011/2012 Initiation à SQL Le langage de communication avec une base de données relationnelles Application avec PostgreSQL Nathalie Camelin 2011/2012 Université du Maine Institut Claude Chappe D'après Levy Estève

Plus en détail

A QUOI SERVENT LES BASES DE DONNÉES?

A QUOI SERVENT LES BASES DE DONNÉES? BASE DE DONNÉES OBJET Virginie Sans [email protected] A QUOI SERVENT LES BASES DE DONNÉES? Stockage des informations : sur un support informatique pendant une longue période de taille importante accès

Plus en détail

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL) Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL) Un modèle de données définit un mode de représentation de l information selon trois composantes : 1. Des structures de données. 2. Des contraintes qui permettent

Plus en détail

Les bases de données Page 1 / 8

Les bases de données Page 1 / 8 Les bases de données Page 1 / 8 Sommaire 1 Définitions... 1 2 Historique... 2 2.1 L'organisation en fichier... 2 2.2 L'apparition des SGBD... 2 2.3 Les SGBD relationnels... 3 2.4 Les bases de données objet...

Plus en détail

Pour les débutants. langage de définition des données

Pour les débutants. langage de définition des données Pour les débutants SQL : langage de définition des données Les bases de données sont très utilisées dans les applications Web. La création, l interrogation et la manipulation des données de la base sont

Plus en détail

Chapitre 5 LE MODELE ENTITE - ASSOCIATION

Chapitre 5 LE MODELE ENTITE - ASSOCIATION Chapitre 5 LE MODELE ENTITE - ASSOCIATION 1 Introduction Conception d une base de données Domaine d application complexe : description abstraite des concepts indépendamment de leur implémentation sous

Plus en détail

MySQL / SQL EXEMPLES

MySQL / SQL EXEMPLES MySQL_exemples_janv04_mpT EXEMPLES 1 MySQL / SQL EXEMPLES Typologie du langage Il est possible d'inclure des requêtes SQL dans un programme écrit dans un autre langage (en langage C par exemple), ainsi

Plus en détail

PHP 5. La base de données MySql. A. Belaïd 1

PHP 5. La base de données MySql. A. Belaïd 1 PHP 5 La base de données MySql A. Belaïd 1 Base de données C est quoi une base de données? Une base de données contient une ou plusieurs tables, chaque table ayant un ou plusieurs enregistrements Exemple

Plus en détail

OpenPaaS Le réseau social d'entreprise

OpenPaaS Le réseau social d'entreprise OpenPaaS Le réseau social d'entreprise Spécification des API datastore SP L2.3.1 Diffusion : Institut MinesTélécom, Télécom SudParis 1 / 12 1OpenPaaS DataBase API : ODBAPI...3 1.1Comparaison des concepts...3

Plus en détail

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

Bases de données Cours 1 : Généralités sur les bases de données Cours 1 : Généralités sur les bases de données POLYTECH Université d Aix-Marseille [email protected] http://odile.papini.perso.esil.univmed.fr/sources/bd.html Plan du cours 1 1 Qu est ce qu une

Plus en détail

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES Dossier G11 - Interroger une base de données La base de données Facturation contient tout un ensemble d'informations concernant la facturation de la SAFPB (société anonyme de fabrication de produits de

Plus en détail

Introduction aux Bases de Données 2004/2005

Introduction aux Bases de Données 2004/2005 Introduction aux Bases de Données 2004/2005 Chapitre 6: Le langage SQL Ecole Nationale Supérieur de Physique de Strasbourg Christian Wolf [email protected] 6.1 Stockage physique Film numfil

Plus en détail

Créer le schéma relationnel d une base de données ACCESS

Créer le schéma relationnel d une base de données ACCESS Utilisation du SGBD ACCESS Polycopié réalisé par Chihab Hanachi et Jean-Marc Thévenin Créer le schéma relationnel d une base de données ACCESS GENERALITES SUR ACCESS... 1 A PROPOS DE L UTILISATION D ACCESS...

Plus en détail

OCL - Object Constraint Language

OCL - Object Constraint Language OCL - Object Constraint Language Laëtitia Matignon [email protected] Département Informatique - Polytech Lyon Université Claude Bernard Lyon 1 2012-2013 Laëtitia Matignon SIMA - OCL - Object

Plus en détail

Historisation des données

Historisation des données Historisation des données Partie 1 : mode colonne par Frédéric Brouard, alias SQLpro MVP SQL Server Expert langage SQL, SGBDR, modélisation de données Auteur de : SQLpro http://sqlpro.developpez.com/ "SQL",

Plus en détail

Rappel sur les bases de données

Rappel sur les bases de données Rappel sur les bases de données 1) Généralités 1.1 Base de données et système de gestion de base de donnés: définitions Une base de données est un ensemble de données stockées de manière structurée permettant

Plus en détail

Structure fonctionnelle d un SGBD

Structure fonctionnelle d un SGBD Fichiers et Disques Structure fonctionnelle d un SGBD Requetes Optimiseur de requetes Operateurs relationnels Methodes d acces Gestion de tampon Gestion de disque BD 1 Fichiers et Disques Lecture : Transfert

Plus en détail

Bases de données relationnelles & SQL

Bases de données relationnelles & SQL Bases de données relationnelles & SQL Objectifs Appréhender les concepts du modèle relationnel. Etre capable de concevoir un schéma relationnel. Etre capable de créer une base de données relationnelle

Plus en détail

Systèmes de Gestion de Bases de Données

Systèmes de Gestion de Bases de Données Systèmes de Gestion de Bases de Données Luiz Angelo STEFFENEL DUT Informatique 2ème année IUT Nancy Charlemagne Vues Vue : une table virtuelle de la base de données dont le contenu est défini par une requête

Plus en détail

TP Bases de données réparties

TP Bases de données réparties page 1 TP Bases de données réparties requêtes réparties Version corrigée Auteur : Hubert Naacke, révision 5 mars 2003 Mots-clés: bases de données réparties, fragmentation, schéma de placement, lien, jointure

Plus en détail

Auto-évaluation Oracle: cours de base

Auto-évaluation Oracle: cours de base Auto-évaluation Oracle: cours de base Document: F0475Test.fm 14/01/2008 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION ORACLE: COURS DE

Plus en détail

CREATION WEB DYNAMIQUE

CREATION WEB DYNAMIQUE CREATION WEB DYNAMIQUE IV ) MySQL IV-1 ) Introduction MYSQL dérive directement de SQL (Structured Query Language) qui est un langage de requêtes vers les bases de données relationnelles. Le serveur de

Plus en détail

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

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL Cours PL/SQL Langage propre à Oracle basé sur ADA Offre une extension procédurale à SQL PL/SQL permet d utiliser un sous-ensemble du langage SQL des variables, des boucles, des alternatives, des gestions

Plus en détail

Bases de données cours 1

Bases de données cours 1 Bases de données cours 1 Introduction Catalin Dima Objectifs du cours Modèle relationnel et logique des bases de données. Langage SQL. Conception de bases de données. SQL et PHP. Cours essentiel pour votre

Plus en détail

FileMaker 13. Guide de référence SQL

FileMaker 13. Guide de référence SQL FileMaker 13 Guide de référence SQL 2013 FileMaker, Inc. Tous droits réservés. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, Californie 95054 FileMaker et Bento sont des marques commerciales de

Plus en détail

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

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles) SGBDR Systèmes de Gestion de Bases de Données (Relationnelles) Plan Approches Les tâches du SGBD Les transactions Approche 1 Systèmes traditionnels basés sur des fichiers Application 1 Gestion clients

Plus en détail

TP Contraintes - Triggers

TP Contraintes - Triggers TP Contraintes - Triggers 1. Préambule Oracle est accessible sur le serveur Venus et vous êtes autorisés à accéder à une instance licence. Vous utiliserez l interface d accés SQL*Plus qui permet l exécution

Plus en détail

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object) Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07

Plus en détail

A QUOI SERVENT LES BASES DE DONNÉES?

A QUOI SERVENT LES BASES DE DONNÉES? BASE DE DONNÉES OBJET Virginie Sans [email protected] A QUOI SERVENT LES BASES DE DONNÉES? Stockage des informations : sur un support informatique pendant une longue période de taille importante accès

Plus en détail

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

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste Christian Soutou Avec la participation d Olivier Teste SQL pour Oracle 4 e édition Groupe eyrolles, 2004, 2005, 2008, 2010, is BN : 978-2-212-12794-2 Partie III SQL avancé La table suivante organisée en

Plus en détail

Table des matières. Avant-propos

Table des matières. Avant-propos Table des matières Avant-propos v Table des matières xi 1 Introduction aux systèmes de gestion de bases de données 1 1.1 Donnée et type de données 2 1.2 Donnée et information 2 1.3 Donnée simple et complexe

Plus en détail

Optimisations des SGBDR. Étude de cas : MySQL

Optimisations des SGBDR. Étude de cas : MySQL Optimisations des SGBDR Étude de cas : MySQL Introduction Pourquoi optimiser son application? Introduction Pourquoi optimiser son application? 1. Gestion de gros volumes de données 2. Application critique

Plus en détail

SQL sous SqlServer OLIVIER D. DEHECQ Olivier http://www.entraide-info.fr 0

SQL sous SqlServer OLIVIER D. DEHECQ Olivier http://www.entraide-info.fr 0 2013 SQL sous SqlServer OLIVIER D. DEHECQ Olivier http://www.entraide-info.fr 0 Table des matières Signalétique... 2 1 Les bases du SQL... 3 2 SQL server... 6 2 Références des exercices...21 DEHECQ Olivier

Plus en détail

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental

Plus en détail

LES TYPES DE DONNÉES DU LANGAGE PASCAL

LES TYPES DE DONNÉES DU LANGAGE PASCAL LES TYPES DE DONNÉES DU LANGAGE PASCAL 75 LES TYPES DE DONNÉES DU LANGAGE PASCAL CHAPITRE 4 OBJECTIFS PRÉSENTER LES NOTIONS D ÉTIQUETTE, DE CONS- TANTE ET DE IABLE DANS LE CONTEXTE DU LAN- GAGE PASCAL.

Plus en détail

LE LANGAGE SQL2 1. INTRODUCTION

LE LANGAGE SQL2 1. INTRODUCTION LE LANGAGE SQL2 1. INTRODUCTION Les serveurs de données relationnels présentent aujourd hui une interface externe sous forme d un langage de recherche et mise à jour, permettant de spécifier les ensembles

Plus en détail

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

Bases de données. Yamine AIT AMEUR. INPT-ENSEEIHT DIMA 2 Rue Charles Camichel 31071 Toulouse Cedex 7 Bases de données Yamine AIT AMEUR INPT-ENSEEIHT DIMA 2 Rue Charles Camichel 31071 Toulouse Cedex 7 Première partie Introduction 1 Généralités et notions de base Première partie Introduction 1 Généralités

Plus en détail

I4 : Bases de Données

I4 : Bases de Données I4 : Bases de Données Passage de UML au modèle relationnel Georges LOUIS Département Réseaux et Télécommunications Université de La Rochelle Module I4 2008-2009 1 G.Louis Sommaire 1 Des classes aux tables

Plus en détail

Vincent Augusto 2010-2011

Vincent Augusto 2010-2011 le des Systèmes Vincent Augusto École Nationale Supérieure des Mines de Saint-Étienne 2010-2011 Un 1/73 le des Un 2/73 1 2 3 4 le 5 6 7 8 Un le des Un 3/73 Contenu du cours : Techniques pour l analyse

Plus en détail

Bases de données élémentaires Maude Manouvrier

Bases de données élémentaires Maude Manouvrier Licence MI2E- 1ère année Outils en Informatique Bases de données élémentaires Maude Manouvrier Définitions générales et positionnement du cours dans la formation Vocabulaire relatif aux bases de données

Plus en détail

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

BASES DE DONNÉES. CNAM Centre associé de Clermont-Ferrand Cycle A Année 1997-98. J. Darmont I. INTRODUCTION II. LES SYSTÈMES HIÉRARCHIQUES BASES DE DONNÉES CNAM Centre associé de Clermont-Ferrand Cycle A Année 1997-98 J. Darmont I. INTRODUCTION II. LES SYSTÈMES HIÉRARCHIQUES III. LES SYSTÈMES RÉSEAU IV. LES SYSTÈMES RELATIONNELS V. LE LANGAGE

Plus en détail

Système de Gestion de Bases de Données Relationnelles. MySQL. Youssef CHAHIR

Système de Gestion de Bases de Données Relationnelles. MySQL. Youssef CHAHIR Système de Gestion de Bases de Données Relationnelles MySQL Youssef CHAHIR 1 PLAN Introduction Démarrer MySQL Syntaxe de MySQL Types des attributs Identificateurs Effectuer des requêtes Fonctions de MySQL

Plus en détail

Introduction aux Bases de Données

Introduction aux Bases de Données Introduction aux Bases de Données I. Bases de données I. Bases de données Les besoins Qu est ce qu un SGBD, une BD Architecture d un SGBD Cycle de vie Plan du cours Exemples classiques d'applications BD

Plus en détail

Compétences Business Objects - 2014

Compétences Business Objects - 2014 Compétences Business Objects - 2014 «Mars-Juin 2014. Réf : Version 1 Page 1 sur 34 Sommaire CONTEXTE DE LA REMISE A NIVEAU EN AUTOFORMATION... 3 1. MODELISATION... 4 1.1 DESCRIPTION FONCTIONNEL DE L'APPLICATION

Plus en détail

Bases de données et sites WEB

Bases de données et sites WEB Bases de données et sites WEB Cours2 : Sécurité et contrôles d accès Anne Doucet 1 Authentification Autorisation Privilèges Rôles Profils Limitations de ressources Plan Audit Contrôle d accès via les vues

Plus en détail

Bases de Données. Stella MARC-ZWECKER. [email protected]. Maître de conférences Dpt. Informatique - UdS

Bases de Données. Stella MARC-ZWECKER. stella@unistra.u-strasbg.fr. Maître de conférences Dpt. Informatique - UdS Bases de Données Stella MARC-ZWECKER Maître de conférences Dpt. Informatique - UdS [email protected] 1 Plan du cours 1. Introduction aux BD et aux SGBD Objectifs, fonctionnalités et évolutions

Plus en détail

CHAPITRE 1 ARCHITECTURE

CHAPITRE 1 ARCHITECTURE 07/04/2014 Université des sciences et de la Technologie Houari Boumediene USTHB Alger Département d Informatique ADMINISTRATION ET TUNING DE BASES DE DONNÉES CHAPITRE 1 ARCHITECTURE RESPONSABLE DR K. BOUKHALFA

Plus en détail

Optimisation SQL. Quelques règles de bases

Optimisation SQL. Quelques règles de bases Optimisation SQL Quelques règles de bases Optimisation des ordres SQL Page 2 1. QUELQUES RÈGLES DE BASE POUR DES ORDRES SQL OPTIMISÉS...3 1.1 INTRODUCTION...3 1.2 L OPTIMISEUR ORACLE...3 1.3 OPTIMISEUR

Plus en détail

TP3 : Creation de tables 1 seance

TP3 : Creation de tables 1 seance Universite de Versailles IUT de Velizy - Algorithmique 2005/2006 TP3 : Creation de tables 1 seance Objectif : Creation et modication de tables dans une base de donnees. Avant de commencer ce TP, terminer

Plus en détail

Mise en œuvre des serveurs d application

Mise en œuvre des serveurs d application Nancy-Université Mise en œuvre des serveurs d application UE 203d Master 1 IST-IE Printemps 2008 Master 1 IST-IE : Mise en œuvre des serveurs d application 1/54 Ces transparents, ainsi que les énoncés

Plus en détail

Cours: Administration d'une Base de Données

Cours: Administration d'une Base de Données Bases de Données Avancées Module A IUT Lumière, License CE-STAT 2006-2007 Pierre Parrend Cours: Administration d'une Base de Données Table of Contents Principes...1 Structure d'un Base de Données...1 Architecture...1

Plus en détail

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour http://cuiwww.unige.

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour http://cuiwww.unige. : JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java Michel Bonjour http://cuiwww.unige.ch/~bonjour Plan JDBC: API bas niveau pour l accès aux BD (SQL) - Introduction - JDBC et : Java, ODBC, SQL

Plus en détail

Mejdi BLAGHGI & Anis ASSÈS

Mejdi BLAGHGI & Anis ASSÈS Ministère de l Enseignement Supérieur, de la Recherche Scientifique et de la Technologie Direction Générale des Etudes Technologiques Institut Supérieur des Etudes Technologiques de Djerba Support de Cours

Plus en détail

Les BASES de DONNEES dans WampServer

Les BASES de DONNEES dans WampServer Les BASES de DONNEES dans WampServer 1 Définitions Générales Une base de données (BDD) permet d'enregistrer, de stocker, de ranger des données de façon organisée et hiérarchisée. SQL est le langage qui

Plus en détail

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite. Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite. Mots-clés : Niveau : Bases de données relationnelles, Open Office, champs, relations,

Plus en détail

1. SAS FEDERATION SERVER - POINT D'ACCES UNIQUE ET SECURISE AUX DONNEES DE L'ENTREPRISE

1. SAS FEDERATION SERVER - POINT D'ACCES UNIQUE ET SECURISE AUX DONNEES DE L'ENTREPRISE 1. SAS FEDERATION SERVER - POINT D'ACCES UNIQUE ET SECURISE AUX DONNEES DE L'ENTREPRISE Les DSI sont quotidiennement mises au défi de fournir aux utilisateurs des informations provenant de sources de données

Plus en détail

Administration des bases de données. Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/

Administration des bases de données. Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/ Administration des bases de données Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/ Administration des bases de données II Objets avancés dans les bases de données OBJECTIFS 2.1. NOTIONS 2.1.1.

Plus en détail

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

1 Modélisation d une base de données pour une société de bourse IN306 : Corrigé SID Christophe Garion 18 octobre 2010 Ce document est un corrigé succinct de l examen du module IN306. 1 Modélisation d une base de données pour une société de bourse Une

Plus en détail

Exercices sur SQL server 2000

Exercices sur SQL server 2000 Exercices sur SQL server 2000 La diagramme de classe : Exercices sur SQL server 2000 Le modèle relationnel correspondant : 1 Créer les tables Clic-droit on Tables et choisir «New Table» Créer la table

Plus en détail

Intégrité des données

Intégrité des données . Contraintes d intégrité : Définition et objectif Intégrité des données Définition des contraintes Vérification des contraintes Contrainte d'intégrité : propriété sémantique que doivent respecter les

Plus en détail

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

Conception des bases de données : Modèle Entité-Association Conception des bases de données : Modèle Entité-Association La modélisation d un problème, c est-à-dire le passage du monde réel à sa représentation informatique, se définit en plusieurs étapes pour parvenir

Plus en détail

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 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 base de données SQLite 1 Différents choix possibles et choix de SQLite : La plupart des logiciels de gestion de base de données fonctionnent à l aide d un serveur. Ils demandent donc une installation

Plus en détail

OBJECTIFS ET ARCHITECTURE DES SGBD

OBJECTIFS ET ARCHITECTURE DES SGBD OBJECTIFS ET ARCHITECTURE DES SGBD 1. INTRODUCTION Même si vous n avez jamais utilisé de système de gestion de bases de données (SGBD), vous avez certainement une idée de ce qu est une base de données

Plus en détail