Principes de la conception des bases de données



Documents pareils
Initiation aux bases de données (SGBD) Walter RUDAMETKIN

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

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

Chapitre 1 : Introduction aux bases de données

Les bases de données Page 1 / 8

Bases de Données. Plan

Bases de données relationnelles

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Bases de données avancées Introduction

Information utiles. webpage : Google+ : digiusto/

Introduction aux Bases de Données

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

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

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

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

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

Les bases de données

Cours Bases de données

Application web de gestion de comptes en banques

1 Introduction et installation

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

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

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

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

Mercredi 15 Janvier 2014

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

Bases de Données Avancées

CHAPITRE 1 ARCHITECTURE

CONCEPTION Support de cours n 3 DE BASES DE DONNEES

Systèmes d information et bases de données (niveau 1)

Bases de données Outils de gestion

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

CQP ADMINISTRATEUR DE BASES DE DONNÉES (ABD)

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

UNIVERSITE DE CONSTANTINE 1 FACULTE DES SIENCES DE LA TECHNOLOGIE DEPARTEMENT D ELECTRONIQUE 3 ème année LMD ELECTRONIQUE MEDICALE

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

OpenPaaS Le réseau social d'entreprise

INTRODUCTION AUX BASES de DONNEES

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

Conception, architecture et urbanisation des systèmes d information

Introduction aux Bases de Données Relationnelles Conclusion - 1

Programme détaillé. Administrateur de Base de Données Oracle - SQLServer - MySQL. Objectifs de la formation. Les métiers

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

CREATION WEB DYNAMIQUE

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

Le "tout fichier" Le besoin de centraliser les traitements des fichiers. Maitriser les bases de données. Historique

SQL Historique

Introduction aux Bases de Données

Table des matières. Avant-propos

Gestion du parc informatique matériel et logiciel de l Ensicaen. Rapport de projet. Spécialité Informatique 2 e année. SAKHI Taoufik SIFAOUI Mohammed

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

Le Langage De Description De Données(LDD)

Rappel sur les bases de données

Le Langage SQL version Oracle

CESI Bases de données

MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE»

IT203 : Systèmes de gestion de bases de données. A. Zemmari zemmari@labri.fr

PostgreSQL. Formations. SQL avancé Calendrier... 18

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

A QUOI SERVENT LES BASES DE DONNÉES?

Conduite de projets informatiques Développement, analyse et pilotage (2ième édition)

TP Bases de données réparties

Vincent Augusto

La problématique de la Préservation des Bases de Données. Olivier ROUCHON CINES Groupe PIN Jeudi 7 Octobre

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

Olivier Mondet

Du 10 Fév. au 14 Mars 2014

UML et les Bases de Données

Introduction aux SGBDR

INDUSTRIALISATION ET RATIONALISATION

SQL Server Administration d'une base de données transactionnelle avec SQL Server Management Studio (édition enrichie de vidéos)

Module BDR Master d Informatique (SAR)

Architecture de la plateforme SBC

INF 1250 INTRODUCTION AUX BASES DE DONNÉES. Guide d étude

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

Projet de synthèse PostgreSQL. LOGEON Vincent TSGERI 2011/2012

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

Le langage SQL Rappels

BIRT (Business Intelligence and Reporting Tools)

Objectifs du TP : Initiation à Access

Sybase PowerAMC 16. Guide des nouvelles fonctionnalités générales. DOCUMENTATION

Chapitre I : le langage UML et le processus unifié

Architecture d'entreprise : Guide Pratique de l'architecture Logique

SQL Server 2014 Administration d'une base de données transactionnelle avec SQL Server Management Studio

Tutorial sur SQL Server 2000

NF26 Data warehouse et Outils Décisionnels Printemps 2010

Bases de données relationnelles : Introduction

I4 : Bases de Données

Comprendre Merise et la modélisation des données

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

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

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

16H Cours / 18H TD / 20H TP

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

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

BUSINESS INTELLIGENCE

Transcription:

BDD Principes de la conception des bases de données stph.crzt.fr/bdd STÉPHANE CROZAT Paternité - Partage des Conditions Initiales à l'identique : http://creativecommons.org/licenses/by-sa/2.0/fr/ 10 juillet 2014

Table des matières Introduction 5 I - Principes de la conception des bases de données 7 A. BD et SGBD : vue d'ensemble...7 1. Exercice : SGBDR...7 2. Qu'est ce qu'une BD?...8 3. Qu'est ce qu'un SGBD?...8 4. Pourquoi des SGBD?...9 5. Caractéristiques des SGBD...10 B. Notions générales pour les bases de données...11 1. Notion de données...11 2. Notion de modèle de données...12 3. Notion de schéma de données (niveau logique)...13 4. Notion de langage de données (niveau physique)...14 5. Notion de dictionnaire de données...15 6. Exercice : Dictionnaire de données...16 C. Méthodes de conception de bases de données...17 1. Exercice : Étapes de la conception d'une base de données...17 2. Méthodologie de conception d'une base de données...17 3. La méthode MERISE et le modèle E-A...19 4. Le langage de modélisation UML...21 5. Éléments pour l'analyse de l'existant et des besoins...22 3

II - Pratique : Découverte d'une base de données avec PostgreSQL 25 A. Rappels architecture UTC...26 B. Connexion à une base de données PostgreSQL...26 C. Le client textuel "psql"...27 D. Notion de table...30 E. Notion de contraintes...31 F. Notion de références...32 G. Projection, restriction et jointure...32 H. Import de données depuis un fichier CSV...33 I. Fonctions et agrégats...34 J. Dictionnaire de données...34 K. Indexation et performance...35 L. Les clients graphiques pgadminiii et phppgadmin...35 M. Test de pgadminiii et phppgadmin...38 III - Synthèse : Les trois niveaux de conception 39 IV - Bibliographie 41 Questions de synthèse 43 Solution des exercices 47 Solution des exercices 49 Glossaire 51 Signification des abréviations 53 Bibliographie 55 Webographie 57 Index 59 4

Introduction Les BD sont nées vers la fin des années 1960 pour combler les lacunes des systèmes de fichiers et faciliter la gestion qualitative et quantitative des données informatiques. Les SGBD sont des applications informatiques permettant de créer et de gérer des BD (comme Oracle ou PostgreSQL par exemple). Les BD relationnelles, issues de la recherche de Codd, sont celles qui ont connu le plus grand essor depuis plus de 20 ans, et qui reste encore aujourd'hui les plus utilisées. On utilise des SGBDR pour les implémenter. Le langage SQL est le langage commun à tous les SGBDR, ce qui permet de concevoir des BD relativement indépendamment des systèmes utilisés. Les usages de BD se sont aujourd'hui généralisés pour entrer dans tous les secteurs de l'entreprise, depuis les "petites" BD utilisées par quelques personnes dans un service pour des besoins de gestion de données locales, jusqu'aux "grosses" BD qui gèrent de façon centralisée des données partagées par tous les acteurs de l'entreprise. Parallèlement l'accroissement de l'utilisation du numérique comme outil de manipulation de toutes données (bureautique, informatique applicative, etc.) et comme outil d'extension des moyens de communication (réseaux) d'une part ; et les évolutions technologiques (puissance des PC, Internet, etc.) d'autre part ont à la fois rendu indispensable et complexifié la problématique des BD. Les conséquences de cette généralisation et de cette diversification des usages se retrouvent dans l'émergence de solutions conceptuelles et technologiques nouvelles. 5

Principes de la I - conception des bases de données I BD et SGBD : vue d'ensemble 7 Notions générales pour les bases de données 11 Méthodes de conception de bases de données 17 A. BD et SGBD : vue d'ensemble Comprendre l'intérêt des BD. Objectifs Comprendre ce qu'est un SGBD. 1. Exercice : SGBDR Parmi les raisons suivantes, lesquelles justifient l'utilisation d'un SGBDR? [Solution n 1 p 45] S'abstraire des modalités de stockage physique de l'information. Minimiser la redondance d'information. Faciliter la mise à jour de données. Contrôler la cohérence des données. Sécuriser l'accès aux données. Mieux gérer l'accès concurrent aux données. 7

Principes de la conception des bases de données 2. Qu'est ce qu'une BD? Définition : Base de données Une BD est un ensemble volumineux, structuré et minimalement redondant de données, reliées entre elles, stockées sur supports numériques centralisés ou distribués, servant pour les besoins d'une ou plusieurs applications, interrogeables et modifiables par un ou plusieurs utilisateurs travaillant potentiellement en parallèle. Exemple : Compagnie aérienne Une BD de gestion de l'activité d'une compagnie aérienne concernant les voyageurs, les vols, les avions, le personnel, les réservations, etc. Une telle BD pourrait permettre la gestion des réservations, des disponibilités des avions en fonction des vols à effectuer, des affectations des personnels volants, etc. 3. Qu'est ce qu'un SGBD? Définition : Système de Gestion de Bases de Données Un SGBD est un logiciel qui prend en charge la structuration, le stockage, la mise à jour et la maintenance d'une base de données. Il est l'unique interface entre les informaticiens et les données (définition des schémas, programmation des applications), ainsi qu'entre les utilisateurs et les données (consultation et mise à jour). Exemple : Exemples de SGBD Oracle est un SGBD relationnel (et relationnel-objet dans ses dernières versions) très reconnu pour les applications professionnelles. PostgreSQL est un SGBD relationnel et relationnel-objet très puissant qui offre une alternative open source aux solutions commerciales comme Oracle ou IBM. MySQL est un SGBD relationnel libre (licence GPL et commerciale), simple d'accès et très utilisé pour la réalisation de sites Web dynamiques. Depuis la version 4 MySQL implémente la plupart des fonctions attendues d'un SGBD relationnel. Access est un SGBD relationnel Microsoft, qui offre une interface graphique permettant de concevoir rapidement des applications de petite envergure ou de réaliser des prototypes. Jadis... 4. Pourquoi des SGBD? Avant l'avènement des SGBD, chaque application informatique dans l'entreprise impliquait sa propre équipe de développement, ses propres supports physiques, ses propres fichiers, ses propres normes, ses propres langages, etc. Conséquences... L'existence conjointe et croissante de ces applications indépendantes a des effets négatifs, tels que : La multiplication des tâches de saisie, de développement et de support informatique ; 8

Principes de la conception des bases de données La redondance anarchique des informations dans les fichiers ; L'incohérence des versions simultanées de fichiers ; La non-portabilité des traitements en raison des différences dans les formats et langages ; La multiplication des coûts de développement et de maintenance des applications. Problèmes... Les conséquences précédemment citées se répercutent sur l'entreprise en générant des problèmes humains et matériels ; Coûts en personnels qualifiés et en formations ; Remise des pouvoirs de décision entre les mains de spécialistes informatiques ; Tout changement matériel ou logiciel a un impact sur les applications ; Or... Tout changement de la structure des données nécessite de modifier les programmes. En réalité les applications ne sont jamais totalement disjointes, des données similaires (le coeur de l'information d'entreprise) sont toujours à la base des traitements. On peut citer typiquement :... Les données comptables Les données clients et fournisseurs Les données relatives à la gestion des stocks Les données relatives aux livraisons Les données marketing et commerciales Les données relatives au personnel 5. Caractéristiques des SGBD La conception d'un système d'information pour être rationnelle à l'échelle d'une entreprise se doit d'adopter un certain nombre de principes, tels que : Une description des données indépendante des traitements Une maintenance de la cohérence de données Le recours à des langages non procéduraux, interactifs et structurants Fondamental Dans ce cadre les SGBD se fixent les objectifs suivants : Indépendance physique des données Le changement des modalités de stockage de l'information (optimisation, réorganisation, segmentation, etc.) n'implique pas de changements des programmes. Indépendance logique des données L'évolution de la structure d'une partie des données n'influe pas sur l'ensemble des données. Manipulation des données par des non-informaticiens 9

Principes de la conception des bases de données L'utilisateur n'a pas à savoir comment l'information est stockée et calculée par la machine, mais juste à pouvoir la rechercher et la mettre à jour à travers des IHM ou des langages assertionnels simples. Administration facilitée des données Le SGBD fournit un ensemble d'outils (dictionnaire de données, audit, tuning, statistiques, etc.) pour améliorer les performance et optimiser les stockages. Optimisation de l'accès aux données Les temps de réponse et de débits globaux sont optimisés en fonctions des questions posées à la BD. Contrôle de cohérence (intégrité sémantique) des données Le SGBD doit assurer à tout instant que les données respectent les règles d'intégrité qui leurs sont imposées. Partageabilité des données Les données sont simultanément consultables et modifiables. Sécurité des données La confidentialité des données est assurée par des systèmes d'authentification, de droits d'accès, de cryptage des mots de passe, etc. Sûreté des données La persistance des données, même en cas de panne, est assurée, grâce typiquement à des sauvegardes et des journaux qui gardent une trace persistante des opérations effectuées. B. Notions générales pour les bases de données Objectifs Connaître les différences entre niveau conceptuel, niveau logique et niveau physique. Comprendre l'importance de la modélisation conceptuelle. 1. Notion de données Définition : Données Élément effectif, réel, correspondant à un type de données. Synonymes : Occurrence, Instance Exemple L'entier 486 : Données Le véhicule (460HP59, Renault, Megane, Jaune) Définition : Type de données Ensemble d'objets qui possèdent des caractéristiques similaires et manipulables par des opérations identiques. Synonymes : Classe 10

Principes de la conception des bases de données Exemple : Type de données Entier = { 0, 1, 2,..., N } Véhicule = (immatriculation, marque, type, couleur) 2. Notion de modèle de données Définition : Modèle de données Ensemble de concepts et de règles de composition de ces concepts permettant de décrire des données (Gardarin, 1999 [Gardarin99]). Un modèle est souvent représenté au moyen d'un formalisme graphique permettant de décrire les données (ou plus précisément les types de données) et les relations entre les données. On distingue trois niveaux de modélisation pour les bases de données : Exemple Exemple Exemple Le niveau conceptuel Il permet de décrire le problème posé, de façon non-formelle (en générale graphique), en prenant des hypothèses de simplification. Ce n'est pas une description du réel, mais une représentation simplifiée d'une réalité. Le niveau logique Il permet de décrire une solution, en prenant une orientation informatique générale (type de SGBD typiquement), formelle, mais indépendamment de choix d'implémentation précis. Le niveau physique Il correspond aux choix techniques, en terme de SGBD choisi et de sa mise en œuvre (programmation, optimisation, etc.). : Exemple de formalisme de modélisation conceptuelle Le modèle Entité-Association a été le plus répandu dans le cadre de la conception de bases de données (Chen, 1976 [Chen76]). Le modèle UML, qui se généralise pour la conception en informatique, se fonde sur une approche objet. : Exemple de formalisme de modélisation logique Le modèle CODASYL, antérieur au modèle relationnel est un modèle hiérarchique (Tardieu, 1983:193 [Tardieu83]). Le modèle relationnel (tabulaire) est le modèle dominant à la base des SGBDR. Le modèle relationnel-objet (adaptation des modèles relationnel et objet au cadre des SGBD) est actuellement en croissance. D'autres modèles (document, graphe,...) se développe dans le cadre du mouvement NoSQL. : Exemple de langages d'implémentation physique Le langage SQL est le plus répandu, commun à toutes les bases de données relationnelles. XQuery est un langage de données pour les bases de données XML. JSON peut être considéré comme un langage de données pour des bases 11

Principes de la conception des bases de données NoSQL comme MongoDB. Complément : Voir aussi Brève introduction aux bases de données NoSQL (cf. Brève introduction aux bases de données NoSQL) 3. Notion de schéma de données (niveau logique) Définition : Schéma de données Description, au moyen d'un langage formel, d'un ensemble de données dans le contexte d'une BD. Un schéma permet de décrire la structure d'une base de données, en décrivant l'ensemble des types de données de la base. L'occurrence d'une base de données est constituée de l'ensemble des données correspondant aux types du schéma de la base. Exemple : Schéma de base de données 1 Etudiant (NumEtud, nom, ville) 2 Module(NumMod, titre) 3 Inscription(NumEtud, NumMod, date) Exemple : Instance de base de données 1 Etudiant (172, 'Dupont', 'Lille') 2 Etudiant (173, 'Durand', 'Paris') 3 Etudiant (174, 'Martin', 'Orléans') 4 Module(1, 'SGBD') 5 Module(1, 'Systèmes d'exploitation') 6 Inscription(172, 1, 2002) 7 Inscription(172, 2, 2002) 8 Inscription(173, 1, 2001) 9 Inscription(174, 2, 2002) Complément : Vue canonique et vues externes Le schéma de données peut se décliner selon deux niveaux de représentation : 1. Le schéma interne ou canonique : Il s'agit du modèle global, formé de l'union des sous-modèles du niveau externe. 2. Les schémas externe : Il s'agit de sous-ensembles du modèle global, vus par des groupes d'utilisateurs particuliers (on parle d'ailleurs de "vue" pour un modèle externe). 12

Principes de la conception des bases de données Image 1 Schémas interne et externes 4. Notion de langage de données (niveau physique) Définition : Langage de données Langage informatique permettant de décrire et de manipuler les schémas d'une BD d'une une manière assimilable par la machine. Synonymes : Langage orienté données Exemple : SQL SQL est le langage orienté données consacré aux SGBD relationnels et relationnels-objet. Un langage de données peut être décomposé en trois sous langages : Le Langage de Définition de Données Le LDD permet d'implémenter le schéma conceptuel (notion de table en SQL) et les schémas externes (notion de vue en SQL). Le Langage de Contrôle de Données Le LCD permet d'implémenter les droits que les utilisateurs ont sur les données et participe donc à la définition des schémas externes. Le Langage de Manipulation de Données Le LMD permet l'interrogation et la mise à jour des données. C'est la partie du langage indispensable pour exploiter la BD et réaliser les applications. Exemple : Définition de données en SQL 1 CREATE TABLE Etudiant ( 2 NumEtu : integer, 3 Nom : string, 4 Ville : string) Cette instruction permet de créer une relation "Etudiant" comportant les propriétés "NumEtu", "Nom" et "Ville". 13

Principes de la conception des bases de données Exemple : Contrôle de données en SQL 1 GRANT ALL PRIVILEGES ON Etudiant FOR 'Utilisateur' Cette instruction permet de donner tous les droits à l'utilisateur "Utilisateur" sur la relation "Etudiant". Exemple : Manipulation de données en SQL 1 SELECT Nom 2 FROM Etudiant 3 WHERE Ville = 'Compiègne' Cette instruction permet de rechercher les noms de tous les étudiants habitant la ville de Compiègne. 5. Notion de dictionnaire de données Définition : Dictionnaire des données Le dictionnaire de données d'un SGBD contient les informations relatives aux schémas et aux droits de toutes les bases de données existantes au sein de ce SGBD. Il s'agit d'un outil fondamental pour les administrateurs. Les dictionnaires de données sont généralement implémentés sous la forme d'une base de données particulière du SGBD, ce qui permet de gérer les données relatives aux bases de données de la même façon que les autres données de l'entreprise (i.e. dans une base de données). Synonymes : Catalogue des données, Métabase Exemple : Liste des bases de données d'un serveur PostgreSQL. 1 stc=> SELECT datname FROM pg_database; 2 datname 3 ----------- 4 template1 5 template0 6 postgres 7 nf26 8 stc 9 test 10 (6 rows) 11 Exemple : Liste des tables d'une base de données PostgreSQL 1 stc=> \d 2 List of relations 3 Schema Name Type Owner 4 --------+--------+-------+------- 5 public city table stc 6 public person table stc 7 (2 rows) 8 14

Principes de la conception des bases de données Exemple : Liste des attributs d'une table PostgresSQL 1 stc=> \d person 2 Table "public.person" 3 Column Type Modifiers 4 --------+-----------------------+----------- 5 pknum character varying(13) not null 6 name character varying(25) 7 Indexes: 8 "person_pkey" PRIMARY KEY, btree (pknum) 9 6. Exercice : Dictionnaire de données [Solution n 2 p 45] Parmi les informations suivantes, lesquelles peuvent être trouvées dans le dictionnaire de la base de données. La liste des tables La liste des utilisateurs La liste des vues La liste des clés C. Méthodes de conception de bases de données Objectifs Connaître la méthodologie de conception d'une BD. 1. Exercice : Étapes de la conception d'une base de données Mettre dans l'ordre les étapes de conception suivantes. 1. Énonciation de la forme normale avant normalisation [Solution n 3 p 45] 2. Décomposition des relations jusqu'à arriver en 3NF en préservant les DF 3. Établissement des DF sous la forme de la fermeture transitive pour chaque relation du modèle 4. Rétro-conception d'un modèle UML normalisé 5. Création du code SQL LDD pour un SGBDR ou un SGBDRO 6. Élaboration du modèle logique en relationnel ou relationnel-objet 7. Modélisation conceptuelle en UML ou E-A 8. Analyse de la situation existante et des besoins 15

Traduire Principes de la conception des bases de données Réponse : 2. Méthodologie de conception d'une base de données Méthode : Étapes de la conception d'une base de données 1. Analyse de la situation existante et des besoins 2. Création d'une série de modèles conceptuels (canonique et vues externes) qui permettent de représenter tous les aspects importants du problème 3. Traduction des modèles conceptuels en modèle logique et normalisation de ce modèle logique 4. Implémentation d'une base de données dans un SGBD, à partir du modèle logique, et optimisation Domaine problème posé Représenter Modèle Conceptuel Fondamental BD solution proposée Implémenter Modèle Logique Graphique 1 Processus de conception d'une base de données Bien analyser le problème posé en amont Bien modéliser le problème au niveau conceptuel avant de passer aux niveaux logiques et physiques Conseil : L'importance de l'étape d'analyse La première étape de la conception repose sur l'analyse de l'existant et des besoins. De la qualité de la réalisation de cette première étape dépendra ensuite la pertinence de la base de données par rapports aux usages. Cette première étape est donc essentielle et doit être menée avec soins. Si la première étape est fondamentale dans le processus de conception, elle est aussi la plus délicate. En effet, tandis que des formalismes puissants existent pour la modélisation conceptuelle puis pour la modélisation logique, la perception de l'existant et des besoins reste une étape qui repose essentiellement sur l'expertise d'analyse de l'ingénieur. Conseil : L'importance de l'étape de modélisation conceptuelle Étant donnée une analyse des besoins correctement réalisée, la seconde étape consiste à la traduire selon un modèle conceptuel. Le modèle conceptuel étant formel, il va permettre de passer d'une spécification en langage naturel, et donc 16

Principes de la conception des bases de données soumise à interprétation, à une spécification non ambigüe. Le recours aux formalismes de modélisation tels que E-A ou UML est donc une aide fondamentale pour parvenir à une représentation qui ne sera plus liée à l'interprétation du lecteur. La traduction d'un cahier des charges spécifiant l'existant et les besoins en modèle conceptuel reste néanmoins une étape délicate, qui va conditionner ensuite l'ensemble de l'implémentation informatique. En effet les étape suivantes sont plus mécaniques, dans la mesure où un modèle logique est déduit de façon systématique du modèle conceptuel et que l'implémentation logicielle est également réalisée par traduction directe du modèle logique. Remarque : Les étapes de traduction logique et d'implémentation Des logiciels spécialisés (Sybase PowerDesigner [w_sybase] pour la modélisation E- A ou Objecteering software [w_objecteering] pour la modélisation UML) sont capables à partir d'un modèle conceptuel d'appliquer des algorithmes de traduction qui permettent d'obtenir directement le modèle logique, puis les instructions pour la création de la base de données dans un langage orienté données tel que SQL. L'existence de tels algorithmes de traduction montre que les étapes de traduction logique et d'implémentation sont moins complexes que les précédentes, car plus systématiques. Néanmoins ces étapes exigent tout de même des compétences techniques pour optimiser les modèles logiques (normalisation), puis les implémentations en fonction d'un contexte de mise en œuvre matériel, logiciel et humain. 3. La méthode MERISE et le modèle E-A MERISE est une méthode d'analyse informatique particulièrement adaptée à la conception de bases de données. MERISE préconise une conception en trois étapes : Réaliser le MCD (E-A) Traduire en MLD (Relationnel) Implémenter le MPD (SQL) Le modèle E-A Image 2 L'analyse selon MERISE La méthode MERISE a pour fondement le modèle E-A pour le niveau conceptuel, 17

Principes de la conception des bases de données qui a fait son succès. Les principales caractéristiques du modèle E-A sont : Exemple Une représentation graphique simple et naturelle Une puissance d'expression élevée pour un nombre de symboles raisonnables Une lecture accessible à tous et donc un bon outil de dialogue entre les acteurs techniques et non techniques Une formalisation non ambiguë et donc un bon outil de spécification détaillée Modèle E-A de la base de données de gestion de projets 4. Le langage de modélisation UML UML est un autre langage de modélisation, plus récent et couvrant un spectre plus large que les bases de données. En tant que standard de l'omg et en tant que outil très utilisé pour la programmation orientée objet, il a supplanté la modélisation E-A. Attention En BD on utilise uniquement le diagramme de classe d'uml pour modéliser 18

Principes de la conception des bases de données conceptuellement les données. Exemple Modèle UML de la base de données de gestion de projets 5. Éléments pour l'analyse de l'existant et des besoins La phase d'analyse de l'existant et des besoins est une phase essentielle et complexe. Elle doit aboutir à des spécifications générales qui décrivent en langage naturel les données manipulées, et les traitements à effectuer sur ces données. On se propose de donner une liste non exhaustive d'actions à mener pour rédiger de telles spécifications. Méthode : L'analyse de documents existants La conception d'une base de données s'inscrit généralement au sein d'usages existants. Ces usages sont généralement, au moins en partie, instrumentés à travers des documents électroniques ou non (papier typiquement). Il est fondamental d'analyser ces documents et de recenser les données qu'ils manipulent. Exemple : Exemples de document existants à analyser Fichiers papiers de stockage des données (personnel, produits, etc.) 19

Principes de la conception des bases de données Formulaires papiers d'enregistrement des données (fiche d'identification d'un salarié, fiche de description d'un produit, bon de commande, etc.) Documents électroniques de type traitement de texte (lettres, mailing, procédures, etc.) Documents électroniques de type tableurs (bilans, statistiques, calculs, etc.) Bases de données existantes, à remplacer ou avec lesquelles s'accorder (gestion des salaires, de la production, etc.) Intranet d'entreprise (information, téléchargement de documents, etc.) etc. Méthode : Le recueil d'expertise métier Les données que la base va devoir manipuler sont toujours relatives aux métiers de l'entreprise, et il existe des experts qui pratiquent ces métiers. Le dialogue avec ces experts est une source importante d'informations. Il permet également de fixer la terminologie du domaine. Exemple : Exemples d'experts à consulter Praticiens (secrétaires, ouvrier, contrôleurs, etc.) Cadres (responsables de service, contre-maîtres, etc.) Experts externes (clients, fournisseurs, etc.) etc. Méthode : Le dialogue avec les usagers La base de données concerne des utilisateurs cibles, c'est à dire ceux qui produiront et consommeront effectivement les données de la base. Il est nécessaire de dialoguer avec ces utilisateurs, qui sont les détenteurs des connaissances relatives aux besoins réels, liés à leur réalité actuelle (aspects de l'organisation fonctionnant correctement ou défaillants) et à la réalité souhaitée (évolutions, lacunes, etc.). Exemple : Exemples d'utilisateurs avec qui dialoguer Personnes qui vont effectuer les saisies d'information (à partir de quelles sources? Quelle est leur responsabilité? etc.) Personnes qui vont consulter les informations saisies (pour quel usage? pour quel destinataire? etc.) Personnes qui vont mettre à jour les informations (pour quelles raisons? comment le processus est enclenché? etc.) etc. Méthode : L'étude des autres systèmes informatiques existants la base de données va généralement (et en fait quasi systématiquement aujourd'hui) s'insérer parmi un ensemble d'autres logiciels informatiques travaillant sur les données de l'entreprise. Il est important d'analyser ces systèmes, afin de mieux comprendre les mécanismes existants, leurs forces et leurs lacunes, et de préparer l'intégration de la base avec ces autres systèmes. Une partie de ces systèmes seront d'ailleurs souvent également des utilisateurs de la base de données, tandis que la base de données sera elle même utilisatrice d'autre systèmes. 20

Principes de la conception des bases de données Exemple : Exemples d'autres systèmes coexistants à étudier Autres bases de données (les données sont elle disjointes ou partiellement communes avec celles de la base à concevoir? quelles sont les technologies logicielles sur lesquelles reposent ces BD? etc.) Systèmes de fichiers classiques (certains fichiers ont-ils vocations à être supplantés par la base? à être générés par la base? à alimenter la base? etc.) Applications (ces applications ont elles besoins de données de la base? peuvent-elles lui en fournir? etc.) etc. 21

Pratique : II - Découverte d'une base de données avec PostgreSQL II Rappels architecture UTC 26 Connexion à une base de données PostgreSQL 26 Le client textuel "psql" 27 Notion de table 30 Notion de contraintes 31 Notion de références 32 Projection, restriction et jointure 32 Import de données depuis un fichier CSV 33 Fonctions et agrégats 34 Dictionnaire de données 34 Indexation et performance 35 Les clients graphiques pgadminiii et phppgadmin 35 Test de pgadminiii et phppgadmin 38 Objectifs Découvrir le modèle relationnel Découvrir un SGBDR Découvrir PostgreSQL Ce TP est destiné à vous faire expérimenter un SGBDR, afin de vous familiariser avec les concepts classiques des bases de données relationnelles. Il a pour objectif de donner un aperçu général de la conception des bases de données, en donnant à expérimenter la plupart des principes. Il constitue un résumé de ce qui sera vu en première partie de NF17. Ce TP sera réalisé sur le SGBDR PostgreSQL. Il permettra ainsi également d'introduire ce système. 23

Pratique : Découverte d'une base de données avec PostgreSQL A. Rappels architecture UTC Les comptes d'uv sont des comptes sur des serveurs Linux de l'utc (accès et espace disque réservé). Par exemple nf17p001 est un compte sur le serveur tuxa.sme.utc. Les comptes d'uv sont également des comptes d'accès sur des postes clients Linux ou Windows de l'utc. Méthode : Transférer des fichiers depuis un client vers le serveur auquel il est associé Méthode Windows Les clients Windows de l'utc sont configurés pour proposer un disque virtuel Z qui pointe sur l'espace du serveur Linux : les données déposées sur le disque Z sont donc physiquement stockées sur le serveur Linux. Les clients Linux de l'utc sont configurés pour que le dossier home sur le client corresponde à un répertoire sur le serveur. Quelque soit le client il est possible d'utiliser un client SFTP (Filezilla par exemple) en se connectant au serveur (par exemple tuxa.sme.utc) avec son compte UTC (par exemple nf17p001). : Se connecter à un serveur Linux depuis un client Pour se connecter à un serveur Linux depuis un client Windows on peut utiliser le terminal par défaut du système, mais il est recommandé d'utiliser un programme plus performant comme par exemple Putty. 1. Ouvrez un terminal : Exécuter Putty. 2. Connectez-vous sur votre compte Linux : Connectez vous de préférence en utilisant ssh, lancez ssh username@tuxa.sme.utc dans le terminal Putty (avec username votre compte NF17). B. Connexion à une base de données PostgreSQL Connexion depuis un PC de l'utc sous Linux (mode terminal) Pour accéder à la base de données qui se trouve sur un serveur, il faut exécuter un logiciel client qui va se connecter au serveur. Nous allons utiliser le client textuel psql (qui est installé sur votre compte Linux). Dans un terminal, exécutez la commande : psql dbusername -h tuxa.sme.utc username étant votre compte d'uv tuxa.sme.utc étant le serveur sur lequel se trouve la base de données Voir aussi : 1 tuxa:nf17p001:1:~> psql dbnf17p001 -h tuxa.sme.utc 2 Password: 3 psql (8.4.9) 4 Type "help" for help. 5 dbnf17p015=> Se connecter à un serveur Linux depuis un client Windows (cf. Rappels architecture UTC p 24) 24

Pratique : Découverte d'une base de données avec PostgreSQL C. Le client textuel "psql" Définition : psql psql est le client textuel de PostgreSQL. 1 psql dbname -h host Syntaxe : Commande de base \? : Liste des commandes psql \h : Liste des instructions SQL \h CREATE TABLE : Description de l'instruction SQL CREATE TABLE \q : Quitter psql \d : Liste des relations (catalogue de données) \d matable : Description de la relation matable \H : mode HTML ou mode textuel pour les retours de requête \! : permet d'exécuter certaines commandes du shell Linux Syntaxe : Écrire une instruction SQL Une instruction SQL peut s'écrire sur une ou plusieurs lignes, le retour chariot n'a pas d'incidence sur la requête, c'est le ; qui marque la fin de l'instruction SQL et provoque son exécution. 1 dbnf17p015=> SELECT * FROM matable ; 1 dbnf17p015=> SELECT * 2 dbnf17p015-> FROM matable 3 dbnf17p015-> ; On notera dans psql la différence entre les caractères => et -> selon que l'on a ou pas effectué un retour chariot. Complément http://www.postgresql.org/docs/current/static/app-psql.html D. Notion de table Créer sa première table Une base de données relationnelle est principalement constituée de tables (ou «relations» d'où le nom de relationnel). Une table est basiquement un élément d'organisation de l'information constitué de colonnes (ou attributs) et de lignes (ou enregistrements). Nous allons dans un premier temps créer le schéma d'une table, c'est à dire définir ses colonnes. Pour cela nous utiliserons l'instruction SQL LDD «CREATE». Q u e s t i o n 1 Exécuter l'instruction suivante et décrire ce qu'elle fait. 25

Pratique : Découverte d'une base de données avec PostgreSQL 1 CREATE TABLE tetu ( 2 pk_numsecu CHAR(13) PRIMARY KEY, 3 k_numetu VARCHAR(20) UNIQUE NOT NULL, 4 nom VARCHAR(50), 5 prenom VARCHAR(50)); Alimenter la table Une fois les colonnes de la table définies, nous pouvons en déclarer les lignes. Nous utilisons pour cela l'instruction SQL LMD «INSERT». Q u e s t i o n 2 Exécuter les deux instructions suivantes et décrire ce qu'elles font. 1 INSERT INTO tetu (pk_numsecu, k_numetu, nom, prenom) 2 VALUES ('1800675001066', 'AB3937098X', 'Dupont', 'Pierre'); 3 INSERT INTO tetu (pk_numsecu, k_numetu, nom, prenom) 4 VALUES ('2820475001124', 'XGB67668', 'Durand', 'Anne'); Interroger la table Une fois une table créée, il est possible à tout moment d'en inspecter le contenu. Nous utilisons pour cela l'instruction SQL LMD «SELECT». Q u e s t i o n 3 Exécuter l'instruction suivante et décrire ce qu'elle fait. 1 SELECT pk_numsecu, k_numetu, nom, prenom 2 FROM tetu; Q u e s t i o n 4 Exécuter l'instruction suivante et décrire ce qu'elle fait. 1 SELECT nom, prenom 2 FROM tetu 3 WHERE pk_numsecu='2820475001124'; E. Notion de contraintes Contrainte de domaine Lorsque l'on définit une table, on définit également des contraintes sur cette table, qui serviront à contrôler son intégrité, par rapport à des règles que l'on aura fixées. C'est notamment le cas des contraintes de domaine, qui permettent de vérifier qu'une colonne prend ses valeurs parmi un ensemble déterminé (les chaînes de 10 caractères au plus, les entier de 1 à 1000, etc.). Q u e s t i o n 1 Exécuter l'instruction suivante et expliquer pourquoi le système renvoie une erreur. 1 INSERT INTO tetu (pk_numsecu, k_numetu, nom, prenom) 2 VALUES ('XXXXXXXXXXXXXXX', 'XXXXXX', 'Dupont', 'Pierre'); Q u e s t i o n 2 [Solution n 1 p 43] Donner un exemple de contrainte qui n'est pas formulée dans la définition de la table tetu et que l'on aurait pu souhaiter. 26

Pratique : Découverte d'une base de données avec PostgreSQL Contraintes de clé Les contraintes de clé se composent de contraintes d'unicité et de contraintes de non nullité. Elles permettent d'assurer que toutes les valeurs d'une colonne seront différentes pour chaque ligne. Q u e s t i o n 3 [Solution n 2 p 43] Exécuter les trois instructions suivantes (les unes après les autres) et expliquer ce qui se passe. 1 INSERT INTO tetu (pk_numsecu, k_numetu, nom, prenom) 2 VALUES ('1800675001066', 'HGYT67655Y', 'Dupont', 'Pierre'); 3 INSERT INTO tetu (pk_numsecu, k_numetu, nom, prenom) 4 VALUES ('2810592012232', 'XGB67668', 'Durand', 'Anne'); 5 INSERT INTO tetu (pk_numsecu, k_numetu, nom, prenom) 6 VALUES ('2810592012232', 'HGYT67655Y', 'Duchemin', 'Aline'); Q u e s t i o n 4 Explorer le contenu de votre table en exécutant l'instruction suivante, et vérifier vos explications précédentes. 1 SELECT * 2 FROM tetu; Q u e s t i o n 5 [Solution n 3 p 43] Pourrait-on insérer dans la table une seconde personne qui aurait le prénom "Aline" et le nom "Duchemin"? Pourquoi? F. Notion de références Clé étrangère Une base de données est en général constituée de plusieurs tables. Ces tables se référencent entre elles en utilisant une clé étrangère : c'est à dire qu'une des colonnes de la table est utilisée pour faire référence à la colonne d'une autre table. On va à présent créer une seconde table, qui permettra d'associer des Unités de Valeurs (UVs) aux étudiants, puis insérer des valeurs dans cette table. 1 CREATE TABLE tuv ( 2 pk_code CHAR(4) NOT NULL, 3 fk_etu CHAR(13) NOT NULL, 4 PRIMARY KEY (pk_code, fk_etu), 5 FOREIGN KEY (fk_etu) REFERENCES tetu(pk_numsecu)); 1 INSERT INTO tuv (pk_code, fk_etu) 2 VALUES ('NF17', '1800675001066'); 3 INSERT INTO tuv (pk_code, fk_etu) 4 VALUES ('NF26', '1800675001066'); 5 INSERT INTO tuv (pk_code, fk_etu) 6 VALUES ('NF29', '1800675001066'); Q u e s t i o n 1 Expliciter ce qu'exprime le contenu de la table tuv. [Solution n 4 p 43] 27

Pratique : Découverte d'une base de données avec PostgreSQL Contraintes d'intégrité référentielle Lorsque nous avons défini la table tuv, nous avons défini une contrainte supplémentaire, dite d'intégrité référentielle : contrainte de type FOREIGN KEY. Q u e s t i o n 2 En exécutant le code suivant, expliquer quel est le rôle d'une contrainte d'intégrité référentielle. 1 INSERT INTO tuv (pk_code, fk_etu) 2 VALUES ('NF17', '2810592012232'); 3 INSERT INTO tuv (pk_code, fk_etu) 4 VALUES ('NF17', '1700792001278'); G. Projection, restriction et jointure L'instruction SELECT du langage SQL LMD nous donne de larges possibilités pour interroger les tables d'une base de données. Q u e s t i o n 1 Exécuter l'instruction suivante et expliquer pourquoi c'est une projection. 1 SELECT nom, prenom 2 FROM tetu; Q u e s t i o n 2 Exécuter l'instruction suivante et expliquer pourquoi c'est une restriction. 1 SELECT * 2 FROM tetu 3 WHERE nom='dupont'; Q u e s t i o n 3 Exécuter l'instruction suivante et expliquer pourquoi c'est un produit (cartésien). 1 SELECT * 2 FROM tetu,tuv; Q u e s t i o n 4 Exécuter l'instruction suivante et expliquer pourquoi c'est une jointure. 1 SELECT * 2 FROM tetu JOIN tuv ON pk_numsecu=fk_etu; Q u e s t i o n 5 Exécuter l'instruction suivante et montrer qu'une jointure est la composition d'un produit et d'une restriction. 1 SELECT * 2 FROM tetu,tuv 3 WHERE pk_numsecu=fk_etu; 28

Pratique : Découverte d'une base de données avec PostgreSQL H. Import de données depuis un fichier CSV Nous allons à présent réinitialiser la base avec des données contenues dans un fichier. Q u e s t i o n 1 Exécuter les instructions suivantes afin de supprimer les données existantes dans les tables (instruction DELETE du SQL LMD). Vérifier que les tables sont vides. 1 DELETE FROM tuv; 2 DELETE FROM tetu; Q u e s t i o n 2 Récupérer les deux fichiers de données et les mettre sur son compte Linux. Regarder le contenu des fichiers. Pourquoi les appelle-t-on des fichiers CSV? Les fichiers de données sont disponibles en ligne dans l'archive http://www4.utc.fr/~nf17/docs/modules/01/res/nf17tp01_data1.zip. Indice : Fichier CSV (cf. Fichier CSV) Q u e s t i o n 3 Insérer les données en exécutant les instructions suivantes. Indice : 1 \copy tetu (pk_numsecu, k_numetu, nom, prenom) FROM 'etus.csv' WITH DELIMITER AS ';' 2 \copy tuv (fk_etu, pk_code) FROM 'uvs.csv' WITH DELIMITER AS ';' Importer un fichier CSV (cf. Importer un fichier CSV) I. Fonctions et agrégats Q u e s t i o n 1 Exécuter la requête SQL suivante et expliquer le résultat obtenu. 1 SELECT COUNT(pk_code) 2 FROM tuv 3 WHERE fk_etu='1'; Q u e s t i o n 2 Exécuter la requête SQL suivante et expliquer le résultat obtenu. 1 SELECT pk_code, COUNT(fk_etu) 2 FROM tuv 3 GROUP BY pk_code 4 ORDER BY COUNT(fk_etu); 29

Pratique : Découverte d'une base de données avec PostgreSQL J. Dictionnaire de données Consulter le dictionnaire de données pour contrôler les tables créées. Q u e s t i o n 1 Exécuter la commande \d et expliquer ce qu'elle renvoie Q u e s t i o n 2 Exécuter les commandes \d tetu et \d tuvs expliquer ce qu'elles renvoient. Q u e s t i o n 3 Consulter l'aide \? et chercher d'autres commandes d'accès au dictionnaire de données. K. Indexation et performance Pour cet exercice, procéder à une nouvelle réinitialisation des données. Les fichiers de données sont disponibles en ligne dans l'archive http://www4.utc.fr/~nf17/docs/modules/01/res/nf17tp01_data2.zip. Q u e s t i o n 1 Exécuter la requête SQL suivante et expliquer le résultat obtenu. [Solution n 5 p 43] 1 SELECT COUNT(*) 2 FROM tetu 3 WHERE nom='a'; Exécuter la requête SQL suivante permettant d'avoir une description de ce qui se passe lorsque la requête est exécutée, ainsi qu'une indication de performance (cost). 1 EXPLAIN 2 SELECT COUNT(*) 3 FROM tetu 4 WHERE nom='a'; Expliquer ce que peut vouloir dire Seq Scan on tetu et ce que cela nous apprend sur l'exécution de la requête. Q u e s t i o n 2 Exécuter la requête SQL suivante permettant de créer un index sur la colonne nom. 1 CREATE INDEX tetu_nom_idx 2 ON tetu(nom); Exécuter à nouveau la requête en mode explication, et tenter de donner une description de ce qui se passe à présent au niveau du moteur de requête, en particulier, pourquoi le coût de la requête a-t-il diminué? 30

Pratique : Découverte d'une base de données avec PostgreSQL L. Les clients graphiques pgadminiii et phppgadmin pgadminiii Un client graphique une interface graphique permettant d'effectuer les mêmes opérations qu'avec le client psql. Le client graphique pgadminiii est un client lourd qui fonctionne très bien sous Linux, mais qui est instable sous Windows. Le client graphique phppgadmin est un client léger (qui tourne dans un navigateur Web donc). Déclarer une connexion dans pgadminiii 1. Sélectionner Fichier > Ajouter un serveur 2. Utilisez votre compte et mot de passe NF17 - Hôte : tuxa.sme.utc - Port : 5432 (port standard de PostgreSQL) - Base : dbnf17p... - Nom : nf17p... - Mot de passe :... 31

Pratique : Découverte d'une base de données avec PostgreSQL Image 3 Fenêtre de connexion pgadmin III Ouvrir un terminal SQL dans pgadminiii 1. Sélectionner sa base de données dans la liste Bases de données 2. Sélectionner Outils > Éditeur de requêtes (ou CTRL+E) 32

Pratique : Découverte d'une base de données avec PostgreSQL Image 4 pgadminiii Complément : phppgadmin http://phppgadmin.sourceforge.net M. Test de pgadminiii et phppgadmin Connexion depuis un PC de l'utc avec pgadmin III Lancer et tester le programme pgadminiii. Exécuter une ou deux requêtes permettant de se familiariser avec son fonctionnement. Connexion depuis à phppgadmin à l'utc Connectez vous à : http://tuxa.sme.utc/pga avec un navigateur Web. Exécuter une ou deux requêtes permettant de se familiariser avec son fonctionnement. 33