Bases de données relationnelles & SQL

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

Download "Bases de données relationnelles & SQL"

Transcription

1 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 et d en manipuler les données avec le langage SQL. Niveau requis Aucune connaissance préalable n est requise. Durée 3 jours Droits d auteur Michel GRECH

2 SOMMAIRE conception des bases de données relationnelles Introduction aux bases de données Architecture d un système informatique utilisant des bases de données Les trois niveaux de description des données La conception des bases de données les deux étapes principales de la conception Objectif de la modélisation Raisonnements et démarche pour la conception des bases de données Démarche pour la conception des modèles de données Quelques représentations intéressantes Les contraintes Exercice récapitulatif... Erreur! Signet non défini. Systèmes de gestion de bases de données Indépendance des niveaux physique / interne / externe Manipulation des données par des langages non procéduraux Partage des données Sécurité des données Principales fonctions assurées par les SGBD Le modèle relationnel Objectifs du modèle relationnel Les concepts principaux Domaine Relation Attribut Clefs Vues Les types de colonnes Les opérateurs relationnels Les opérateurs uniares Les opérateurs n-aires Les agrégats Les contraintes Infotique - 2 -

3 4.1. L intégrité des bases de données Contraintes sur une colonne Contraintes d intégrité référentielle Les règles de normalisation Première forme normale Deuxième forme normale Troisième forme normale Les règles de traduction modèles conceptuels de données -> schémas relationnels Traduction des entités Traduction des associations Exemple récapitulatif Dictionnaire des données Dictionnaire des règles Enoncé Solution SQL Objectifs de SQL Normes Utilisation de SQL La création et la modification de schémas Création de schéma Création de table Modification de table Ajouter des contraintes Suppression de table Création de vues La mise à jour des données Insertion de lignes Modification Suppression de lignes La consultation des données Forme canonique des requêtes SELECT Les opérateurs : booléens, BETWEEN, LIKE Utilisation de fonctions SQL Fonctions numériques Infotique - 3 -

4 6.5. Fonctions date Les agrégats Les jointures Les opérateurs ensemblistes Les sous-requêtes Le contrôle des autorisations Accorder une autorisation Révoquer une autorisation MySQL et PHP MySQL brève présentation Utilisation de MySQL L utilisation en mode commande Utilisation via l utilitaire PHPMYADMIN Utilisation via un programme PHP Eléments d administration de MySQL Administrer comptes utilisateurs et autorisation Créer une base de données Afficher, insérer, modifier, supprimer des données Exécuter des requêtes SQL Sauvegarder, importer et exporter Exemple récapitulatif Premier exemple recherche dans une base de données et affichage du résultat dans un formulaire Identification, authentification et ouverture d une session Infotique - 4 -

5 CONCEPTION DES BASES DE DONNEES RELATIONNELLES 1. Introduction aux bases de données 1.1. ARCHITECTURE D UN SYSTEME INFORMATIQUE UTILISANT DES BASES DE DONNEES Premier composant- la base de données que l on peut considérer en première approche comme un stock de données sur support permanent Deuxième composant - un Système de Gestion de Base de Données (SGBD) dont la fonction est la manipulation des données de la base de façon efficace et sure : mise à jour et consultation Troisième composant : une ou des application(s) informatiques qui constituent des interfaces entre les utilisateurs et leur logique «métier» et le SGBD 1.2. LES TROIS NIVEAUX DE DESCRIPTION DES DONNEES Le niveau conceptuel qui s attache à décrire (à représenter) la sémantique d un ensemble d objets de gestion constituant un «domaine» sans préoccupation de représentation en machine. Ce niveau sera représenté par un «modèle conceptuel des données». Le niveau interne (ou logique) qui représente l implémentation du niveau conceptuel pour une classe de solutions informatiques : par exemple les Systèmes de Gestion de Bases de Données Relationnelles SGBDR. Dans le contexte d un SGBD relationnel, ce niveau sera représenté, par exemple, par un «schéma relationnel». Infotique - 5 -

6 Le schéma, unique, de la base de données est parfois nommé «schéma canonique» par opposition aux schémas liés aux applications. Le niveau externe qui décrit la vision des applications (perception via les besoins utilisateurs) sur les données. Ce niveau sera lui aussi représenté par des schémas relationnels qui constitueront des «vues». 2. La conception des bases de données 2.1. LES DEUX ETAPES PRINCIPALES DE LA CONCEPTION Dans le cadre des bases de données relationnelles, le résultat de l opération de conception d une base de données est un «modèle logique de données» ou «schéma relationnel» immédiatement implémentable avec le SGBD choisi. L opération de conception se déroule généralement en deux étapes de poids différents : Une étape de modélisation sémantique des données dont le résultat est un ou plusieurs «modèles conceptuels des données «(vocabulaire Merise) ou diagrammes de classes (vocabulaire UML). Cette étape représente la plus grande part de l effort de conception. Une étape de traduction des modèles conceptuels des données ou diagrammes de classes en schémas relationnels OBJECTIF DE LA MODELISATION D une façon générale un modèle est la représentation d un objet réel tel que la manipulation du modèle vaille celle de l objet lui-même. Le modèle «simule» l objet représenté. Le modèle est présenté dans un formalisme adéquat. Le modèle ne préjuge d aucune solution d implémentation (base de données ou autre). La modélisation de données vise en premier lieu à «capturer» la sémantique d objets de gestion dans un document. Le document résultant est exprimé dans un formalisme adapté dont les principales qualités doivent être notamment : L expressivité : utilisation d un nombre de signes réduit pour exprimer n importe quelle situation La simplicité d interprétation pour permettre un dialogue sans ambigüité entre utilisateurs et concepteurs Un modèle conceptuel des données ne doit pas essayer de représenter le point de vue des applications (besoin en données) mais le point de vue sémantique d un domaine : gestion des Infotique - 6 -

7 effectifs, manuscrits médiévaux, observatoire virtuel Un modèle de données vise la plus grande neutralité de point de vue sur le domaine considéré RAISONNEMENTS ET DEMARCHE POUR LA CONCEPTION DES BASES DE DONNEES Les deux principaux formalismes couramment utilisés sont : Le modèle «Entité / Association» Le diagramme de classe UML Le modèle «Entité / Association» Il s agit d un modèle graphique à base de deux objets : les entités et les associations Les représentations graphiques Graphiquement, une entité est représentée par un rectangle doté de deux compartiments : Un premier compartiment pour le titre : «Personne», «Unité» Un second compartiment pour les propriétés de l entité, c'est-à-dire toutes les informations pouvant lui être associées. Une association est représentée par un rectangle aux bords arrondis. Une association peut posséder un titre («affecté») ainsi que des propriétés Sémantique Entités Du point de vue de la sémantique, une entité représente un objet majeur dans le domaine de l utilisateur, c'est-à-dire d un objet homogène et consistant et d un objet aisément distinguable des autres objets du domaine. Les propriétés à l intérieur d une entité sont fortement couplées : le numéro d agent, le nom d agent et la date de naissance agent sont par exemple fortement liés. Infotique - 7 -

8 Associations Une association représente un couplage sémantique entre plusieurs objets du domaine de l utilisateur. Une association est le signe d un couplage entre données mais moins fort qu entre données appartenant à une même entité. Les données numéro agent et code unité sont couplées mais d une façon moins forte que sont couplées les données numéro agent et nom agent. Le titre d une association est souvent une forme verbale. Une association peut elle-même porter des propriétés. La dimension d une association est le nombre d entités y participant. La plupart des associations sont binaires (dimension de deux), mais on peut représenter des associations d une dimension supérieure. Une dimension supérieure à trois ou quatre est souvent le signe d une erreur de représentation. L exemple ci-dessous présente une association de dimension trois. L association porte une propriété. Une association peut être définie d une entité sur elle-même : Une personne est supérieure hiérarchique d une autre Un mot clef peut être synonyme (ou antonyme ou dérivé ) d un autre Plusieurs associations peuvent être définies entre deux mêmes entités Infotique - 8 -

9 Les cardinalités Bases de données relationnelles & SQL Chaque «patte» d association est qualifiée par un couple de cardinalité mesurant une sorte d intensité de participation d une entité à une association. Le couple de cardinalité est un couple d entier : (cardinalité minimum, cardinalité maximum). Par exemple : une personne est affectée au minimum à aucune unité et au maximum à une unité. Le couple de cardinalité est : (0, 1). Les cardinalités minimum sont 0 ou 1 Les cardinalités maximum sont 1 ou n Les cardinalités sont l indication de contraintes sur la participation d une entité à une assocation. Ces contraintes sont indiquées pour la participation minimum : 0 (pas de contrainte) et 1 (contrainte) et pour la cardinalité maximum : 1 (contrainte) et n (pas de contrainte) Les identifiants Une des règles essentielles liées à la construction des modèles est la garantie d absence de doublons d occurrences d entités. L identifiant d une entité est une propriété ou la combinaison minimum de propriétés nécessaire pour distinguer deux occurrences d une entité. Plusieurs propriétés ou combinaisons de propriétés peuvent parfois jouer le rôle d identifiant, il importe de choisir parmi les identifiants potentiels celui qui jouera ce rôle. Un identifiant peut être «relatif», c'est-à-dire qu il n identifie une entité que dans le contexte de la participation de celle-ci à une association. Dans l exemple ci-dessous une classe est identifiée par un numéro de classe (par exemple A2) et par un niveau (par exemple 6 ème ). L identifiant complet de Classe est donc la combinaison de numéro de classe et de niveau, numéro de classe étant un identifiant relatif Identifiant d une association L identifiant d une association est constitué de la collection des identifiants des entités participant à l association. Dans l exemple cité plus haut et concernant les Personnages, les Textes et les Rôles, l identifiant de l association «intervient» est constitué de la collection des identifiants de Personne, de Rôle et de Texte DEMARCHE POUR LA CONCEPTION DES MODELES DE DONNEES Infotique - 9 -

10 Première étape : préparation du projet Les deux tâches préalables à mener au minimum sont les suivantes : Mener l étude d opportunité Délimiter le domaine Bases de données relationnelles & SQL Deuxième étape : établissement du dictionnaire des données et du dictionnaire des règles Un dictionnaire des données est un document à deux colonnes : Nom de la donnée Signification de la donnée Le dictionnaire des données se construit après avoir délimité précisément le domaine Dresser la liste des données La première étape de constitution du domaine consiste en un relevé systématique de toutes les informations du domaine jugées «pertinentes». Ce travail s appuie principalement sur le dépouillement de documents existants (documents écrits, écrans d applications ) La principale préoccupation est de dresser un relevé complet. A l issue de cette première étape, on dispose d une liste «brute» d informations Epurer la liste des données La deuxième étape vise à épurer la liste obtenue en la débarrassant : Des informations calculées Des synonymes Des polysèmes Les informations calculées ne seront pas stockées dans la future base de données pour deux raisons : Si des résultats de calcul étaient stockés, ils deviendraient faux dès qu un des opérandes changerait de valeur Les résultats peuvent être recalculés à tout instant La suppression des synonymes et des polysèmes permet de lever toutes les ambigüités de représentation des informations et d interprétation de leur restitution Dictionnaire des règles Le dictionnaire des règles consigne l énoncé des principales règles de gestion dans le but de déterminer comment associer les données entre elles (soit en les regroupant au sein d une même entité, soit en associant des entités). Infotique

11 Troisième étape : ébaucher le modèle de données Il n est en général pas très difficile de produire une première ébauche de modèle de données. Une démarche possible est la suivante : 1) Identifier les principaux objets du domaine de gestion concerné 2) Dessiner les entités (au moins les entités majeures) 3) Dessiner les associations en s appuyant sur le dictionnaire des règles 4) Préciser les cardinalités 5) Choisir les identifiants Quatrième étape : supprimer les redondances et les multivaluations Le premier objectif d un modèle est de «capturer» la sémantique d un domaine. Un autre objectif essentiel d un modèle est d éviter les anomalies de représentation et de cohérence liées à : La redondance de certaines informations Au caractère multivalué de certaines propriétés La redondance des informations est une des principales sources d incohérence des bases de données. Si une même valeur doit être répétée plusieurs fois (une orthographe de pays par exemple), elle risque de ne pas l être d une façon identique ce qui rendrait impossible toute recherche sur la propriété concernée (le pays par exemple) En cas de mise à jour, il n est pas garanti que toutes les occurrences de la valeur soit bien mises à jour (le Zaïre devient le congo ) Le problème de la redondance d une propriété est entièrement résolu par la création d une nouvelle entité de type référentiel. Exemple Dans cette entité, la propriété grade est redondante. La solution est : Infotique

12 La multivaluation des informations, classique dans les bases de données réalisées sans méthode, entraine une mauvaise représentation des données et un futur accès malaisé à celles-ci. Par exemple, si une entreprise implantée sur plusieurs sites était représentée sous la forme : entreprise, site 1, site 2, site 3 Il faudrait pour bien faire pouvoir prévoir le nombre maximum de sites, La majorité des entreprises auraient des propriétés vides Pour rechercher toutes les entreprises implantées sur un site donné, il faudrait écrire une requête du type : Site = site 1 ou Site = site 2. Le problème de la multivaluation est entièrement résolu par la création d une nouvelle entité. Exemple Cette entité possède en fait une propriété ville multivaluée. Le fait qu une unité soit implantée dans 4 ou 5 villes ne pourrait être représenté. La solution est la suivante : La modélisation et surtout la génération de la base de données sont grandement facilitées par l utilisation d un AGL, si possible libre, comme DBDesigner (v4). Infotique

13 2.5. QUELQUES REPRESENTATIONS INTERESSANTES Les associations réflexives Cette modélisation permet d exprimer qu une entité est associée à elle-même. Peuvent être traitées de cette façon les associations exprimant une hiérarchie entre occurrences d une entité. Dans l exemple ci-dessous, on modélise un organigramme hiérarchique. L association n est pas symétrique, le «rôle» de chacune des pattes de l association doit être précisé : «est le» et «a pour». Peuvent également être traitées les associations exprimant une équivalence entre occurrences d une entité. Dans l exemple ci-dessous, les deux associations sont symétriques, il n est pas nécessaire de préciser le «rôle» de chacune des pattes de l association. Infotique

14 Généralisation / spécialisation Une difficulté récurrente de la modélisation est de choisir entre représenter des objets comme étant des objets différents ou comme étant un seul objet. Le mécanisme dit de «généralisation / spécialisation» appuyé sur le concept d héritage permet de faire coexister les deux points de vue. Cette modélisation permet d exprimer que : Des entités sont traitées de la même façon (un agent titulaire, un CDD, un thésard sont tous trois collaborateurs d une unité de recherche). Les mêmes entités sont traitées différemment (un agent titulaire, un CDD, un thésard n ont pas toutes leurs propriétés en commun). Infotique

15 Les historiques En cas de modification d une occurrence d association, on peut souhaiter conserver l ancienne valeur. On ajoute alors la nouvelle valeur aux anciennes plutôt que de remplacer la dernière valeur par la nouvelle. Si la cardinalité maximum était de 1, elle est alors de n. La modélisation ci-dessous permet de conserver l historique des nominations des personnes à des grades successifs. L identifiant de l association possèdegrade est constitué par le couple des identifiants des entités associées, soit(numeropersonne, CodeGrade). Il sera impossible d enregistrer deux fois la même occurrence d association (Personne, Grade) ce qui convient bien car il est impossible d être nommé deux fois au même grade dans la carrière d une personne. Dans l exemple ci-dessous, l association est de dimension 3 et son identifiant est (numeropersonne, codesite, Date). En effet, il doit être possible d enregistrer deux affectations successives d une même personne à une même unité, l identifiant ne peut par conséquent être limité au couple (numeropersonne, codesite) et doit contenir un troisième élément quel qu il soit (date est le plus courant). Infotique

16 La date est placée dans une entité (pseudo entité) Date et n est pas considérée comme une propriété de l association affecté pour que l on puisse distinguer deux affectations successives d un agent à une même unité La méta modélisation Cette modélisation permet, en introduisant un degré d abstraction supplémentaire, de représenter de façon commune un grand nombre d entités qu il serait peu pratique de considérer comme étant tout à fait différentes. On souhaite modéliser les équipements installés sur les carrefours à feu d un département. Dans le but de pouvoir assurer la maintenance de ces équipements et de pouvoir éditer des statistiques périodiques, les caractéristiques techniques des équipements doivent être décrites. Les équipements sont très divers : poteaux, lampes, radars, boucles enterrées, modems, pilotes d armoires à feu et leurs caractéristiques très différentes. Une première modélisation «naïve» donnerait ceci (on ne tient pas compte des propriétés redondantes) : Infotique

17 2.6. LES CONTRAINTES D une façon générale, la qualité des données dans un système d information, automatisé ou non, dépend de la bonne structuration de celles-ci et aussi pour une part importante du respect d un certain nombre de contraintes de gestion de celles-ci. La qualité des données contenues dans une base de données dépendra donc en grande partie du soin apporté identifier ces contraintes, les exprimer et les implémenter dans la base. Les contraintes peuvent être exprimées : Soit dans le modèle (conceptuel) des données Soit dans le schéma relationnel Soit lors de l implémentation du schéma relationnel. Il est notamment possible d exprimer un certain nombre de contraintes sémantiques dans un modèle de données, même s il n existe pas de langage approprié et complet pour le faire : Soit sous forme purement textuel (essentiellement) Soit sous forme normalisée Les contraintes concernant les propriétés Contrainte d existence Cette contrainte exprime le fait qu une propriété possède nécessairement une valeur Contrainte d unicité Cette contrainte exprime le fait qu une propriété ne peut posséder deux fois une même valeur. Infotique

18 Contrainte d identifiant Bases de données relationnelles & SQL Une contrainte d identifiant est la combinaison d une contrainte d existence et d une contrainte d unicité Contrainte de type Cette contrainte exprime le fait qu une propriété appartient à un des types suivants : texte (ou caractère ou alphanumérique), numérique, date Si la propriété est de type texte, on peut spécifier s il s agit d une propriété dont la longueur (nombre de caractères) est fixe ou variable et indiquer une longueur qui sera soit une longueur exacte, soit une longueur maximum) Contrainte de valeur Les contraintes de valeurs peuvent s exprimer de plusieurs façons : Par encadrement : valeur minimale et valeur maximale En définissant un domaine de valeur. Dans l exemple ci-dessous, on définit un domaine de valeurs pour la propriété quotitepersonne, stipulant que cette propriété ne peut prendre qu une parmi les valeurs suivantes : 50, 60, 70, 80, 90, 100. Si le domaine contient plus de quelques valeurs (une dizaine), on préfèrera construire une entité Contrainte de stabilité Cette contrainte exprime le fait que la valeur d une propriété ne change pas dans le temps. Les propriétés identifiables possèdent en général des valeurs stables. Infotique

19 Contraintes d intégrité référentielle Bases de données relationnelles & SQL La contrainte d intégrité référentielle entre deux entités stipule que si une occurrence de la première entité est associée à une occurrence de la deuxième entité, la modification ou la suppression de cette dernière ne doit pas entrainer la survenue d une association «vide». Par exemple, si plusieurs personnes sont affectées à un site, il doit être impossible de supprimer le site sans soit «recaser» les personnes dans un site existant, soit supprimer les personnes concernées (ceci n est qu un point de vue informatique). Il y a contrainte d intégrité référentielle pour chacune des associations. Cette question est traitée plus en détail au chapitre consacré au modèle relationnel Contraintes sur les pattes d associations Une patte d association peut être «verrouillée», c'est-à-dire que les associations entre les occurrences de deux entités ne peuvent être mises à jour, c'est-à-dire ni modifiées ni supprimées. Dans l exemple ci-dessous, on exprime que si un règlement est noté comme effectué par une société, cette information ne peut pas être modifiée ni supprimée Les contraintes entre associations De même qu il est possible d exprimer des contraintes afférentes à des propriétés d entités, il est possible d exprimer des contraintes entre associations. Les contraintes entre association peuvent décrire une des situations suivantes : Aucune contrainte (c est le cas général) Partition (Totalité et Exclusion) : XT Totalité sans Exclusion : T Pas de totalité et Exclusion : X Inclusion : I ) Dans l exemple ci-dessous, on exprime le fait que l on ne peut être à la fois propriétaire et locataire d une même habitation. On peut en revanche occuper une autre position vis-à-vis de son habitation («hébergé à titre gratuite» ). Il y a donc une contrainte d exclusion mais pas de totalité. Infotique

20 Dans l exemple ci-dessous, on exprime le fait qu un règlement peut s opérer soit (exclusif) en espèces, en chèque ou en carte bancaire. Il y a donc une double contrainte : de totalité (pas d autre modalité de règlement) et d exclusion (un règlement ne peut s opérer en espèces et en chèque). La contrainte est de type «X» et «T», il s agit d une contrainte de partition. Ce modèle n est donné qu au titre d exemple pédagogique. En réalité, une représentation de type «généralisation / spécialisation» (voir plus haut) aurait été préférable. Dans l exemple ci-dessous, on exprime le fait que le responsable d une unité est nécessairement affecté à l unité. Le «I» désigne une inclusion. Infotique

21 SYSTEMES DE GESTION DE BASES DE DONNEES Le terme «base de données» est lié à la notion de «persistance des données». Une donnée est dite «persistante» si sa durée de vie excède la durée d exécution du programme qui l a créée. Une donnée persistante peut être rechargée en mémoire principale à tout instant. En pratique la persistance de données est assurée par leur stockage sur un support permanent (disque ). De ce point de vue, le terme de base de données mérite précision. Deux acceptions peuvent être proposées : Une acception générale : une base de données est un ensemble de données électroniques stockées sur support permanent Une acception plus restrictive : une base de données est un ensemble de données électroniques stockées sur support permanent et manipulées par un logiciel spécialisé : un Système de Gestion de Base de Données Les Systèmes de Gestion de Base de Données imposent un certain nombre de règles de structuration des données, notamment des règles de représentation sous forme tabulaire, règles de non redondance, de non répétitivité Indépendance des niveaux physique / interne / externe Le niveau physique désigne le mode de stockage matériel des données sur mémoire permanente : types de fichiers, méthodes d accès, modes de placement, procédés de chainage, les données d une base de données étant, comme toutes les données informatiques stockées dans des fichiers organisés suivant des modalités de placement, d accès Le niveau logique désigne une perception des données sous forme tabulaire exprimant la sémantique des informations du domaine couvert par la base de données. La fourniture d une vision «logique» ou «niveau logique» des données permet de masquer totalement les détails de stockage physique des données : noms et emplacements des fichiers, Infotique

22 organisation des fichiers : méthodes de placement, méthodes d accès et présente les données comme étant organisées en tables. Il est ainsi possible qu une modification de l organisation physique des données, dans le but d optimiser l occupation mémoire ou les temps d accès aux données, n ait aucune incidence sur le niveau physique. Réciproquement, il est également possible qu une modification du schéma logique consécutif au changement d une règle de gestion n ait aucune d incidence sur l organisation physique des fichiers de stockage. Le niveau externe désigne le niveau des applications, c'est-à-dire la vision particulière des applications sur le schéma canonique de la base. Un schéma externe est obtenu par un réarrangement des données du schéma interne, quitte à introduire des synonymes, un certain niveau de redondance Grâce aux mécanismes de production de schémas externes, il est possible qu une modification applicative laisse inchangés les autres schémas externes et le schéma interne (ou presque). Il faut bien comprendre qu une base de données ne doit pas être liée à une utilisation particulière des données, c'est-à-dire à une application. Une base de données organise les données suivant leur sémantique sous forme d un schéma «canonique» auquel les applications viendront s alimenter. 2. Manipulation des données par des langages non procéduraux L accès aux données à une base de données doit pouvoir s effectuer d une façon totalement indépendante des structures de stockage physique (organisation en fichiers). L accès aux données doit pouvoir être réalisé en formant des prédicats sur la valeur des données contenues dans la base. Les langages de manipulation doivent être relativement proches du langage naturel. Ces langages doivent pouvoir être utilisés aussi bien en mode intercatif qu intégré à des programmes procéduraux. 3. Partage des données Un des objectifs majeurs des SGBD est de permettre le partage des données contenues entre plusieurs utilisateurs, plusieurs applications successivement et simultanément. Tout doit se passer comme si chaque utilisateur, chaque application était seul à utiliser (consultation et mise à jour de la base). Infotique

23 4. Sécurité des données La sécurité des données doit être envisagée sous deux aspects : Bases de données relationnelles & SQL La protection contre les accès non autorisés est assurée par des mécanismes d attribution explicite d autorisations (lecture, écriture ) à des d utilisateurs identifiés sur certains objets de la base. La tolérance aux pannes La tolérance aux pannes est assurée par un certain nombre de mécanismes tels que la restauration de données sauvegardées, journalisation des transactions, reprise à chaud, à froid 5. Principales fonctions assurées par les SGBD Les principales fonctions d un SGBD peuvent être présentées de façon synthétique : La définition des schémas La recherche de données La mise à jour des données La transformation des données (schémas externes) Le contrôle de l intégrité des données La gestion de la sécurité Infotique

24 LE MODELE RELATIONNEL 1. Objectifs du modèle relationnel Le «modèle relationnel» est un ensemble de concepts et de règles de structuration de données, essentiellement alphanumériques, sous forme tabulaire. Ces règles, énoncées par CODD au début des années 70, associées à un langage de requête basé sur des prédicats en logique du premier ordre (des énoncés sur les données) visent à représenter de façon assez simple la sémantique d objets de gestion tout en évitant les anomalies de mise à jour. 2. Les concepts principaux 2.1. DOMAINE Un domaine est un ensemble de valeurs (essentiellement alphanumériques). Comme en théorie des ensembles, un domaine peut être défini «en compréhension» et / ou «en extension». Le plus souvent un domaine est défini par un type de données : numérique (entier, réel, caractère, date ) et par des valeurs. Exemple : Domaine (noms de personnes) : DUPONT, DUPOND, DURAND, DURANT Domaine (prénoms de personnes) : Emile, Berthe, Joseph, Amélie Domaine (années de naissances de personnes) : 1923, 1920, 1937, 2005 Les domaines sont caractérisés par un nom : nom de personne, prénom de personne 2.2. RELATION Une relation est un sous-ensemble du produit cartésien de plusieurs domaines. Exemple : Infotique

25 Relation Personne : (DUPONT, Emile, 1923), (DUPOND, Berthe, 1920), (DURAND, Joseph, 1937), (DURANT, Amélie, 2005) Une relation est donc composée de vecteurs. Le terme consacré est celui de tuples. D une façon moins savante et plus courante, on parle : De table plutôt que de relation De ligne plutôt que de tuple 2.3. ATTRIBUT Un attribut est une colonne d une relation. Le nom d une colonne doit être évocateur de sa sémantique. Le nom d une colonne peut obéir à des restrictions de caractères et à une convention de nommage CLEFS Clefs primaires Le concept de clef primaire est équivalent à celui d identifiant conceptuel. Les qualités d une clef primaire sont les suivantes : Valeur obligatoire et unicité par définition Stabilité de valeur dans le temps Compacité : les clefs primaires étant utilisées pour rapprocher des tables en consultation (jointures), plus les clefs sont compactes et de petite taille, plus les temps de traitement seront courts. Une clef primaire est soit une des propriétés (ou une collection des propriétés) de la table, soit un élément artificiel (numéro d ordre). En pratique, l exigence de stabilité de valeur dans le temps interdit l utilisation d une propriété significative et entraine l utilisation systématique d un numéro d ordre (un entier autoincrémenté) Clefs étrangères Une clef étrangère est la duplication de la clef primaire d une table dans une autre table dans le but de traduire une association conceptuelle entre les deux entités représentées par les deux tables. Le concept de clef étrangère est un des concepts majeurs du modèle relationnel. Infotique

26 2.5. VUES Une vue est un assemblage des données du schéma d une base de données (appelé souvent «schéma canonique) visant à satisfaire les besoins d une application en informations. Dit autrement, un ensemble de vues liées à une application constitue un «sous schéma» relationnel, déduit du schéma de la base de données et représentant le «point de vue» de cette application sur l ensemble des données. Le schéma constitué des vues liées à une application peut différer sensiblement du schéma canonique : Les vues peuvent être construites par projection (seulement certaines colonnes) et par restriction (seulement certaines lignes) des tables de base. Les colonnes peuvent ne pas être nommées de la même façon Des données réparties entre plusieurs tables dans le schéma canonique peuvent être assemblées en une seule vue Les règles de structuration du modèle canonique peuvent ne pas être respectées dans les vues qui ne sont en définitive qu une présentation des tables de base (qui doivent respecter les règles d intégrité). Les principaux intérêts de ce mécanisme sont : La possibilité de masquer la complexité du schéma canonique aux applications L apport d un haut niveau d indépendance schéma canonique / vues : une modification du schéma interne n entraine pas de changements profonds des applications et réciproquement, un changement applicatif n entraine pas nécessairement une modification profonde du schéma canonique LES TYPES DE COLONNES Pour des motifs de représentation des données en mémoire, il est indispensable de décrire chacune des colonnes d une base de données par un type prédéfini. Ces types sont alphanumériques ou binaires. Aucun SGBD ne respectant scrupuleusement les normes SQL, il convient de s intéresser aux idiomes de chacun de ceux-ci. Les types principaux sont les suivants : Chaines de caractères Types numériques Types temporels Types binaires Infotique

27 Types chaines de caractères Bases de données relationnelles & SQL Une colonne de type chaine de caractères permet de stocker des caractères sous forme d un octet (ASCII ou codes ISO n) ou de plusieurs octets (UNICODE dans ses implémentations UTF-8 ou UTF-16 notamment). Les principaux types chaines de caractères sont les suivants : CHAR(n) : chaîne de longueur fixe n et d une longueur maximum de 255 caractères. Une option permet de préciser le jeu de caractères : binaire, ASCII, UNICODE. Si le nombre de caractères effectif est inférieur à la taille fixée, ceux-ci seront complétés par des caractères «blancs» (par exemple des espaces) non restitués par les extractions. VARCHAR(n) : chaîne de longueur variable de maximum n caractères (jusqu à caractères dans MySQL). Les caractères sont codés en UNICODE. D autres types permettent de stocker des caractères sur une taille plus importante : TEXT (n) jusqu à caractères pour MySQL), MEDIUMTEXT(n) : 16 MO, LONGTEXT(n) : 4,29 GO Types numériques Les deux types principaux sont : Le type entier qui se subdivise généralement lui-même en sous types : SMALLINT entier non signé sur 2 octets MEDIUMINT (pas dans la norme SQL, utilisable avec MySQL) entier signé sur 3 octets INTEGER entier signé sur 4 octets BIGINT (pas dans la norme SQL, utilisable avec MySQL) entier signé sur 8 octets Le type réel qui se subdivise généralement lui-même en sous types : FLOAT réel entre 4 et 8 octets précision simple (7 décimales) DOUBLE réel sur 8 octets - précision double (15 décimales) Types temporels Les principaux types temporels sont : DATE - sur 3 octets stocke les dates comprises entre 1 er janvier de l an jusqu au 31 décembre 999. Le format est YYYY-MM-DD (MySQL) DATETIME sur 8 octets date et heure (MySQL) TIME sur 3 octets stocke les heures de 839 heures 59 minutes et 59 secondes à heures 59 minutes et 59 secondes (MySQL) TIMESTAMP : sur 4 octets instants écoulés du 1 er janvier 1970 à 0h 0m jusqu à l année Mise à jour à chaque modification de la table (MySQL) Types binaires Les colonnes binaires contiennent des chaînes de bits, sans référence à un jeu de caractères. Peuvent être stockés dans une colonne de ce type des éléments multimédia, des applications Le type BLOB permet de stocker jusqu à octets (MySQL) Infotique

28 Le type MEDIUMBLOB (n) permet de stocker jusqu à 16 MO (MySQL) Le type LONGBLOB (n) permet de stocker jusqu à 4,29 GO (MySQL) 3. Les opérateurs relationnels Les SGBDR fournissent un ensemble d opérateurs dits relationnels dont les opérandes sont des relations (des tables) et les résultats des relations (des tables). Les opérateurs relationnels peuvent être classés en deux catégories : Les opérateurs «unaires» qui n utilisent qu un opérande Les opérateurs «n-aires» qui utilisent plusieurs opérandes Le modèle de référence permettant de présenter les opérateurs relationnels est le suivant : Table Personne (nom, prénom, date de naissance, quotité, code établissement) Table Etablissement (code établissement, nom établissement, adresse établissement)les opérateurs unaires Personne nom prénom date de naissance quotité code établissement MARTIN ALBERT DUPOND MARCEL DURAND ADOLPHE DUPUY ELIANE DUPONT ARMELLE EPICURE DANTE Etablissement Code établissement Nom établissement Adresse établissement 1 BEAU CAMPUS 12 rue de la recherche 2 CHEZ GERMAINE 33 rue des fayots 3 LE BON COIN 6 rue Cartier Bresson Infotique

29 3.1. LES OPERATEURS UNAIRES La projection Créé à partir d une première table une deuxième table contenant les colonnes spécifiées de la première table. Exemple Projection Personne (nom, quotité) nom quotité MARTIN 80 DUPOND 100 DURAND 100 DUPUY 80 DUPONT 100 EPICURE La restriction Créé à partir d une première table une deuxième table contenant les lignes spécifiées par un prédicat (vérifiant une condition). Exemple Restriction Personne (quotité <100) nom prénom date de naissance quotité code établissement MARTIN ALBERT 01/01/ DUPUY ELIANE 12/12/ EPICURE DANTE 25/12/ LES OPERATEURS N-AIRES La jointure Création d une table en associant deux tables sur une condition d égalité de valeurs entre une colonne de la première table et une colonne de la deuxième table. Infotique

30 Exemple Join (Personne, Etablissement (Personne.code établissement = Etablissement.code établissement)) La jointure peut être : Interne (ou naturelle) : la table résultat est composée des lignes de Personnes et des lignes de Etablissement pour lesquelles l égalité est vérifiée. Externe (gauche ou droite) : le résultat est celui de la jointure interne auquel sont ajoutées soit les lignes de la table Personne sans correspondance dans Etablissement, soit les lignes de la table Etablissement sans correspondance dans la table Personne. Jointure interne nom prénom date de naissance quotité Code établiss ement Code établiss ement. Nom établissement Adresse établisse ment MARTIN ALBERT 01/01/ CHEZ GERMAINE 33 rue des fayots DUPOND MARCEL 12/10/197 8 DURAND ADOLPHE 13/08/ BEAU CAMPUS 12 rue de la recherche BEAU CAMPUS 12 rue de la recherche DUPUY ELIANE 12/12/ CHEZ GERMAINE 33 rue des fayots DUPONT ARMELLE 05/04/ BEAU CAMPUS 12 rue de la recherche L union Création d une table contenant les lignes présentes dans au moins une table parmi deux, les deux tables ayant même schéma. Exemple Soit la table Worker (last name, first name) Last name SMITH DUPUY KRUGER EPICURE First name JOHN ELIANE HANS DANTE Infotique

31 Personne(nom, prénom) UNION Worker (last name, first name) nom MARTIN DUPOND DURAND DUPUY DUPONT EPICURE SMITH KRUGER prénom ALBERT MARCEL ADOLPHE ELIANE ARMELLE DANTE JOHN HANS Le résultat est compose des colonnes nom et prénom et des lignes présentes dans au moins une des deux table. En général, l opération d union s effectue sur deux projections L intersection Création d une table contenant les lignes présentes dans deux tables ayant mêmesschéma. Exemple Soit la table Worker (last name, first name) Personne(nom, prénom) INTERSECT Worker (last name, first name) nom DUPUY EPICURE prénom ELIANE DANTE Le résultat est compose des colonnes nom et prénom et des lignes présentes dans les deux tables (nom = last name et prénom = first name). En général, l opération d intersection s effectue sur deux projections La différence Création d une table contenant les lignes présentes dans une table parmi deux mais pas dans la seconde, les deux tables ayant même schéma. Infotique

32 Exemple Soit la table Worker (last name, first name) Personne(nom, prénom) MINUS Worker (last name, first name) nom MARTIN DUPOND DURAND DUPONT prénom ALBERT MARCEL ADOLPHE ARMELLE Le résultat est composé des colonnes nom et prénom et des lignes présentes dans la table Personne et pas dans la table Worker. En général, l opération différence s effectue sur deux projections LES AGREGATS Création d une table par «agrégation» des lignes de la table sur les valeurs d une colonne. La fonction d agrégat s utilise généralement avec une fonction de synthèse : somme, compte, moyenne Exemple Agrégat (Personne, quotité, nombre (personnes)) quotité Nombre personnes Les contraintes Cette question a été traitée en partie dans les chapitres consacrés aux modèles conceptuels des données. La qualité des données stockées dans une base de données est étroitement liée au respect des règles de gestion par celles-ci représentées par des contraintes déclarées par le concepteur et prises en charge par le SGBD lui-même ou par des procédures ad hoc (triggers et procédures stockées). Les contraintes présentées ci-dessous doivent être associées aux descriptions de table afin d être prise en charge par le SGBD plutôt que par des programmes ad hoc. Infotique

33 4.1. L INTEGRITE DES BASES DE DONNEES Une base de données est dite intègre si les données contenues respectent l ensemble des règles de gestion régissant les valeurs de celles-ci ainsi que leurs associations. Une opération de mise à jour doit prendre la base dans un état d intégrité 1 et la rendre dans un état d intégrité CONTRAINTES SUR UNE COLONNE Contrainte d existence La colonne doit posséder une valeur. Cette contrainte s implémente de la façon suivante : Colonne NOT NULL Cette contrainte est notamment utilisée sur les clefs étrangères implémentant une patte d association dont la cardinalité minimum est de Contrainte d unicité La colonne ne doit pas contenir deux fois la même valeur. Cette contrainte s implémente de la façon suivante : UNIQUE (colonne1, colonne2 ) Contrainte de clef primaire Cette contrainte s implémente de la façon suivante : Colonne PRIMARY KEY Ou : PRIMARY KEY (colonne) Infotique

34 Contraintes de domaine La colonne obéit à certaines restrictions de valeurs : plage de valeurs. Cette contrainte s implémente avec la clause CHECK Cette contrainte s implémente de la façon suivante : CHECK (condition de validité) La clause CHECK peut indiquer par exemple une valeur numérique minimale et maximale Colonne CHECK (Colonne > 0 AND Colonne <1000 Ou : Colonne CHECK (VALUE > 0 AND VALUE <1000) VALUE peut être utilisée à la place du nom de la colonne lorsqu il n y a pas d ambiguïté (lorsque la contrainte ne porte que sur la colonne en cours de déclaration. La clause CHECK peut indiquer par exemple un domaine Colonne CHECK (VALUE IN(50,60,70,80,90,100)) Il est possible de déclarer une contrainte plus générale, portant sur plusieurs colonnes, avec la clause CHECK à condition de créer une contrainte nommée à l aide de la déclaration CONSTRAINT. CONSTRAINT nom contrainte CHECK ( ) La clause CHECK permet d utiliser: les opérateurs booléens AND, OR, NOT les opérateurs arithmétiques +, -, *, / les opérateurs de comparaison >, < >=, <= le marqueur NULL des expressions SQL : BETWEEN, IN Tous les SGBD n implémentent pas la clause CHECK. En particulier, la version 5.1 de MySQL permet de déclarer ce type de contraintes mais celles-ci ne sont pas opérationnelles Contrainte de stabilité La valeur affectée à une colonne ne peut être mise à jour. Infotique

35 4.3. CONTRAINTES D INTEGRITE REFERENTIELLE Cette contrainte concerne la valeur des clefs étrangères qui doivent être présentes dans les colonnes clefs primaires qu elles réfèrent. Soit les deux relations : Personne (idpersonne, nompersonne, idunité) Unité (idunité, codeunité, titreunité) Par exemple : une personne ne peut être affectée à un service que dans la mesure où celui-ci existe. Il existe une contrainte d intégrité référentielle entre la clef étrangère idunité dans la relation Personne et la clef primaire idunité de la table Unité : toutes les valeurs de idunité dans la relation Personne doivent exister dans idunité de la table Unité. Toutes les clefs étrangères sont concernées par cette contrainte. La contrainte d intégrité référentielle doit être examinée vis-à-vis des trois opération de mise à jour des données : L insertion La modification La suppression La question est triviale vis-à-vis de l insertion : l intégrité référentielle est assimilée à une contrainte de domaine : la valeur d une clef étrangère doit être prise dans la liste des valeurs d une clef primaire référencée. La syntaxe normalisée pour implémenter une contrainte d intégrité référentielle entre une clef étrangère et une clef primaire est : FOREIGN KEY(colonne clef étrangère) REFERENCES Table(colonne clef primaire) Vis-à-vis des opérations de modification et de suppression, deux options sont possibles : Empêcher l opération de modification ou de suppression d une valeur de clef primaire si celle-ci est utilisée par une clef étrangère : interdiction de modifier le code d un site ou de supprimer un site auquel sont affectés des personnes. La syntaxe normalisée est : ON UPDATE NO ACTION et ON DELETE NO ACTION. Propager la modification ou la suppression d une clef primaire dans la table contenant une clef étrangère référençant cette même clef primaire : si l on modifie la clef primaire d une table site (ce qui ne devrait jamais se produire), on modifie automatiquement les valeurs correspondantes de clefs étrangères utilisées pour décrire les affectations ; si l on supprime un site, on supprime également toutes les affectations à ce site. La syntaxe normalisée est : ON UPDATE CASCADE et ON DELETE CASCADE. Infotique

36 5. Les règles de normalisation Les règles de normalisation sont des règles applicables à la structuration d une base de données dans le but de se prémunir de certaines anomalies de lecture, d écriture, de redondance de données et de garantir la cohérence des données et un bon niveau de performance. La normalisation des bases de données correspond en partie aux règles de non redondance et de non multivaluation appliquées aux modèles conceptuels de données. Ne sont examinées ci-dessous que les trois premières formes normales PREMIERE FORME NORMALE Une base de données est en première forme normale si les colonnes contiennent toutes des valeurs : Atomiques du point de vue des choix de gestion Non répétitives Par exemple, une colonne nompersonne peut être considérée comme une propriété atomique si on ne s intéresse pas au nom d usage des femmes mariées ou non atomique sinon DEUXIEME FORME NORMALE Une base de données est en deuxième forme normale si elle est en première forme normale et si toutes les colonnes non clefs dépendent de la totalité de la clef. Cette règle ne s applique qu aux tables dont la clef primaire est une collection de plusieurs propriétés. Exemple Une table Classe (niveau, numéro, âge d entrée) dont un exemple serait (6 ème, A2, 11 ans) et dont la clef primaire serait (niveau, numéro) n est pas en deuxième forme normale car l âge d entrée ne dépend que du niveau et pas du numéro de la classe. Cette structure impliquerait que l on répète le même âge d entrée (11 ans) pour toutes les 6 ème et impliquerait d éventuelles anomalies de mise à jour si l âge d entrée des 6 ème était modifié TROISIEME FORME NORMALE Une base de données est en troisième forme normale si elle est en deuxième forme normale et si toutes les colonnes n appartenant pas à la clef ne dépendent pas d une colonne non clef. Cette règle interdit les dépendances transitives sources de redondances de données. Une table Site (code site, nom du site, ville, pays) et dont la clef primaire est code site n est pas en troisième forme normale car pays est en dépendance de ville (ou en dépendance transitive de la clef code site). Infotique

37 Cette structure impliquerait que l on répète le même pays pour la même ville et impliquerait d éventuelles anomalies de mise à jour si une ville changeait de pays. 6. Les règles de traduction modèles conceptuels de données -> schémas relationnels 6.1. TRADUCTION DES ENTITES Les règles de traduction d une entité sont plutôt triviales : Une entité se traduit par une table Une propriété se traduit par une colonne Un identifiant se traduit par une clef primaire 6.2. TRADUCTION DES ASSOCIATIONS Les règles de traduction des associations sont à peine moins triviales Une association peut se traduire de deux façons différentes selon la situation Association binaire, cardinalité maximum de 1 Dans le cas d une association binaire où une patte porte une cardinalité maximum de A, l association se traduit par la création d une clef étrangère dans la table «source», c'est-à-dire la table dont la patte d association porte la cardinalité maximum de 1. Exemple Ce modèle se traduit par deux tables : Personne (numéro agent, nom agent, code grade) Grade (code grade, intitulé grade) Infotique

38 Les clefs primaires sont soulignées Autres associations Dans tous les autres cas, l association se traduit par une table contenant autant de clefs étrangères que d entités participant à l association. Exemple Ce modèle est traduit par trois tables : Unité (code unité, titre unité) Ville (code ville, nom ville) Implantation (code unité, code ville) 7. Exemple récapitulatif Il s agit de modéliser les données correspondant au dictionnaire des données et au dictionnaire des règles présentées ci-dessous : Domaine : affectation de personnes à des sites DICTIONNAIRE DES DONNEES Nom de personne Prénom de personne Date d entrée dans l organisme (pas dans le site) Statut : permanent ou non permanent Quotité de travail Nom du supérieur hiérarchique (n+1) Prénom du supérieur hiérarchique Nom du site d affectation Adresse du site Infotique

39 Surface du site Pays du site 7.2. DICTIONNAIRE DES REGLES Une personne a aucun ou un supérieur hiérarchique Une personne est le supérieur hiérarchique d aucune, d une ou de plusieurs personnes Une personne est affectée à aucun site, un site ou plusieurs sites Un site est entièrement situé dans un pays 7.3. ENONCE Il est demandé : 1) De construire le modèle Entités / Associations 2) D installer DBDesigner v 4 3) De construire le modèle avec DBDesigner 4) D examiner la traduction modèle conceptuel -> schéma relationnel 5) De générer le script SQL de génération des tables avec les options : ranger les tables par FK, définir clé primaire, définir les préférences FK autorisées par l éditeur de relations, option sortie de table, sortie d insertion standard, sans les options créer indices et sortir commentaires SOLUTION Sont présentées ci-dessous : Un modèle conceptuel des données «pur» (WinDesign) Un diagramme de classe UML limité aux données Un modèle logique (ou schéma relationnel) Le script de création de la base de données Modèle Conceptuel des Données (Entités / Associations) complet Ce modèle prévoit d introduire une date d affectation et de conserver l historique de celles-ci. Une personne pouvant être affectée successivement plusieurs fois à la même unité, date constitue une entité participant à l association affecté. Infotique

40 Diagramme de classe UML Modèle logique des données Infotique

41 Modèle de données avec DBDesigner La présentation proposée par DBDesigner est intermédiaire entre les modèles conceptuels des données (Entités / Association) qui ne font pas apparaitre les clefs étrangères et les modèles logiques. L intérêt du produit est d être open source et gratuit et de permettre la génération de code SQL de bonne qualité pour la création de la base de doonées.. Infotique

42 Script de création des tables CREATE TABLE Personne ( idpersonne INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, Personne_idPersonne INTEGER UNSIGNED NOT NULL, nompersonne VARCHAR(255) NULL, prenompersonne VARCHAR(255) NULL, dateentree DATE NULL, statutpersonne BOOL NULL, quotitepersonne INTEGER UNSIGNED NULL, PRIMARY KEY(idPersonne), FOREIGN KEY(Personne_idPersonne) REFERENCES Personne(idPersonne) ON DELETE NO ACTION ON UPDATE NO ACTION ); CREATE TABLE Pays ( idpays INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, nompays VARCHAR(255) NULL, PRIMARY KEY(idPays) ); CREATE TABLE Site ( idsite INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, Pays_idPays INTEGER UNSIGNED NOT NULL, nomsite VARCHAR(255) NULL, adressesite VARCHAR(255) NULL, surfacesite INTEGER UNSIGNED NULL, PRIMARY KEY(idSite), FOREIGN KEY(Pays_idPays) REFERENCES Pays(idPays) ON DELETE NO ACTION ON UPDATE NO ACTION ); CREATE TABLE Affectations ( Personne_idPersonne INTEGER UNSIGNED NOT NULL, Site_idSite INTEGER UNSIGNED NOT NULL, PRIMARY KEY(Personne_idPersonne, Site_idSite), FOREIGN KEY(Personne_idPersonne) REFERENCES Personne(idPersonne) ON DELETE NO ACTION ON UPDATE NO ACTION, FOREIGN KEY(Site_idSite) REFERENCES Site(idSite) ON DELETE NO ACTION Infotique

43 ); ON UPDATE NO ACTION Infotique

44 SQL 1. Préambule 1.1. OBJECTIFS DE SQL L objectif de SQL est d implémenter les opérateurs relationnels dans un langage proche du langage naturel. SQL = Structured Query Language 1.2. NORMES Il existe trois normes successives de SQL : 1) SQL1 (ou SQL 89) représentant la norme de base sur laquelle s alignent la quasi-totalité des SGBDR 2) SQL2 (ou SQL 92) divisé en trois ensemble : Entrée (équivalent à SQL1), Intermédiaire qui ajoute la possibilité de modifier des schémas et enrichit le langage de contraintes, Complet. La plupart des SGBDR récents implémentent SQL2 intermédiaire. 3) SQL3 qui étend SQL2 avec l intégration d instructions procédurales et une approche objet. Cette norme a fait l objet de plusieurs révisions, n est implémentée aujourd hui par aucun SGBDR et demeure contestée UTILISATION DE SQL SQL s utilise soit en mode interactif, soit intégré dans un programme procédural ou objet. Le langage SQL se divise en trois ensembles : Le langage de description de schémas (LDD) Le langage de manipulation des données (mise à jour et accès aux données) Le langage de contrôle des données Infotique

45 2. La création et la modification de schémas 2.1. CREATION DE SCHEMA CREATE DATABASE nom de base ; Exemple CREATE DATABASE Personnel ; 2.2. CREATION DE TABLE CREATE TABLE nom de table (nom de colonne1 type, nom de colonne2 type,, nom de colonnen type) ; Des contraintes peuvent être associées à la table Valeur obligatoire : colonne NOT NULL Clef primaire : PRIMARY KEY Unicité : UNIQUE (colonne1, ) Validation générale: CHECK prédicat Clef étrangère et intégrité référentielle : FOREIGN KEY REFERENCES nom de table (nom de colonne) Intégrité référentielle vis-à-vis des opération de mise à jour : ON DELETE ou ON UPDATE NO ACTION, CASCADE ou SET NULL Autres contraintes sur une colonne : CHECK (prédicat) Contraintes générales : CONSTRAINT nom contrainte CHECK (prédicat) Exemple Création de la Table Personne (voir modèle de référence plus haut) CREATE TABLE Personne ( idpersonne INTEGER NOT NULL AUTO_INCREMENT, nompersonne VARCHAR(255) NULL, prenompersonne VARCHAR(255) NULL, datenaissance DATE NULL, Infotique

46 quotitepersonne INTEGER UNSIGNED NULL CHECK (quotitepersonne IN(50,60,70,80,90,100)), Personne_idEtablissement INTEGER, PRIMARY KEY(idPersonne), FOREIGN KEY(Personne_idEtablissement) REFERENCES Etablissement(idEtablissement) ON DELETE NO ACTION ON UPDATE NO ACTION ); La clause CHECK. N est pas opérationnelle avec les versions actuelles (juillet 2009) de MySQL Une table peut être créée à partir d une requête de sélection. CREATE TABLE Travailleurs AS (SELECT nompersonne, prenompersonne, dateentree,statutpersonne WHERE quotitepersonne>70) WITH DATA 2.3. MODIFICATION DE TABLE Ajouter une colonne ALTER TABLE nom de table ADD COLUMN nom colonne type ; Modifier le nom d une colonne ALTER TABLE nom de table CHANGE ancien nom colonne nouveau nom colonne type Modifier le type d une colonne ALTER TABLE nom de table MODIFY nom colonne nouveau type Exemple Supprimer une colonne ALTER TABLE nom de table DROP COLUMN nom colonne ; Exemple Ajout d une colonne «indice» à la table Personne ALTER TABLE Personne Infotique

47 ADD COLUMN indice INTEGER ; Renommer la table indice en indicepaie ALTER TABLE Personne CHANGE COLUMN indice indicepaie INTEGER ; Modifier le type de la colonne indiciepaie en FLOAT ALTER TABLE Personne MODIFY COLUMN indicepaie FLOAT; Supprimer la colonne» indice» ALTER TABLE Personne DROP COLUMN indice; 2.4. AJOUTER DES CONTRAINTES ALTER TABLE nom table ADD CONSTRAINT nom contrainte CHECK ( ) 2.5. SUPPRESSION DE TABLE DROP TABLE nom de table ; 2.6. CREATION DE VUES CREATE VIEW nom vue AS (SELECT col1, FROM Table WHERE prédicat) Exemple Création d une vue «TP» des personnels (nom, prénom, quotité) pour les personnes travaillant à temps partiel. Infotique

48 CREATE VIEW TP AS (SELECT nompersonne AS nom, prenompersonne AS prenom, quotitepersonne AS quotite FROM personne WHERE quotitepersonne < 100) 3. La mise à jour des données 3.1. INSERTION DE LIGNES INSERT INTO nom de table (col1, col2,, coln) VALUES (val11, val12,, val1n), (val21, val22,, val2n), (val31, val32,, val3n), (val41, val42,, val4n) ; Ou INSERT INTO nom de table (col1, col2,, coln) SELECT col1, col2,, coln FROM nom de table Exemple Insertion d une nouvelle personne. INSERT INTO personne (nompersonne,prenompersonne,datenaissancepersonne,quotitepersonne,idetablis sement) VALUES ('JEANOT','FREDERIQUE',' ',100,2) ; 3.2. MODIFICATION UPDATE nom de table SET col = val Infotique

49 WHERE prédicat ; Exemple Ajouter à nouveau une colonne indice de type entier. Mettre l indice à 1000 pour ceux dont la quotité est supérieure ou égale à 80. UPDATE Personne SET indicepersonne = 1000 WHERE quotitepersonne >=80 Modification utilisant une sous-requête On veut augmenter de 50% l indice des personnes dont la quotité est la plus élevée. UPDATE Personne SET indicepersonne = indice*1.5 WHERE quotitepersonne = (SELECT MAX(quotitePersonne) FROM personne) Suivant les SGBD, il n est pas toujours possible d exécuter une requête de modification en utilisant une sous-requête portant sur cette même table. On veut augmenter de 100% l indice des personnes travaillant dans un établissement dont le nom contient l expression CAMPUS. UPDATE personne SET `indicepersonne`=`indicepersonne`*2 WHERE `idetablissement` IN (SELECT idetablissement FROM etablissement WHERE nometablissement LIKE '%CAMPUS%') On veut modifier remplacer l indice d une personne par l indice de la même personne que l on trouve dans la table promus UPDATE personne, promus SET personne.indicepaie = promus.indicepaie WHERE personne.nompersonne = promus.nompromu Infotique

50 3.3. SUPPRESSION DE LIGNES DELETE FROM nom table WHERE prédicat ; 4. La consultation des données 4.1. FORME CANONIQUE DES REQUETES SELECT SELECT [DISTINCT ou ALL] * ou liste de colonnes FROM nom de table ou de la vue [WHERE prédicats] [GROUP BY ordre des groupes] [HAVING condition] [ORDER BY ] liste de colonnes Le délimiteur de chaîne est l apostrophe (simple quote). Exemple Afficher toutes les colonnes de la table personne triées par ordre décroissant des quotités. SELECT * FROM personne ORDER BY quotitepersonne DESC; 4.2. LES OPÉRATEURS : BOOLÉENS, BETWEEN, LIKE Opérateurs booléens AND, OR, NOT Utilisation de parenthèses Exemple Afficher les personnes née savant 1970 et dont la quotité est 50 ou 100. Infotique

51 SELECT * FROM personne WHERE datenaissancepersonne <' ' AND (quotitepersonne = 50 OR quotitepersonne = 100) BETWEEN Recherche entre deux valeurs SELECT * FROM Table1 WHERE colonne BETWEEN valeur1 AND valeur2 Exemple Afficher le nom et la date de naissance des personnes nées en SELECT * FROM `personne` WHERE datenaissancepersonne BETWEEN ' ' AND ' ' La valeur NULL NULL représente l absence de valeur. SELECT * FROM Table WHERE col IS NULL ; Exemple Afficher les personnes n étant pas affectées à un établissement SELECT * FROM personne WHERE idetablissement IS NULL LIKE Recherche par troncature (caractère % ) SELECT * FROM nom de table WHERE colonne LIKE valeur% Exemple Afficher le nom des personnes dont le nom commence par la lettre «D» Infotique

52 SELECT * FROM `personne` WHERE nompersonne LIKE 'D%' Utilisation d Alias Une colonne peut être associée à un alias : SELECT col AS nouvellecol Exemple Afficher le nom et le prénom des personnes (en utilisant «NOM» et «PRENOM» comme titre de colonne). SELECT nompersonne as NOM, prenompersonne AS PRENOM FROM personne 4.3. UTILISATION DE FONCTIONS SQL SQL permet d utiliser un grand nombre de fonctions de type chaine de caractères, numérique et date Fonctions chaînes de caractères Concaténation CONCAT(c1, c2, ) Exemple SELECT CONCAT (nompersonne,,prenompersonne) AS identite FROM personne Extractions de chaînes de caractères SUBSTR(c, position de début, nombre de caratères) Exemple Afficher les 3 premières lettres du nom de chacune des personnes. Infotique

53 SELECT SUBSTR(nomPersonne, 1, 3) as Code FROM personne Peuvent être également utilisées les fonctions LEFT, RIGHT, MID, Longueur de caractères CHAR_LENGTH Minuscules et majuscules LOWER(c) : transforme les majuscules en minuscules UPPER(c) : transforme les minuscules en majuscules Suppression des espaces inutiles TRIM() : supprime les espaces à gauche et à droire RTRIM() : supprime les espaces à droite LTRIM() : supprime les espaces à gauche Fonctions numériques Les principales fonctions numériques sont les suivantes : ABS() : valeur absolue CEILING() : arrondit à l entier supérieur FLOOR() : retourne l entier inférieur MOD() : modulo POW() : puissance ROUND() : arrondit à l entier supérieur ou inférieur SQRT() : racine carré Fonctions date CURDATE() : date courante CURTIME() : heure courante NOW() : date et heure courantes ADDDate(d, n) : ajoute n jours à la date d ADDATE( ) : ajoute un intervalle à la date initiale DATEDIFF(d1, d2) : nombre de jours entre d1 et d2 Infotique

54 DATE_FORMAT(d, format) : formate la date DAYNAME(d) : nom (anglais) du jour DAYOFMONTH(d) DAYOFWEEK() DAYOFYEAR() MONTH() MONTHNAME() TIMESTAMP() WEEK() WEEKDAY() YEAR() Exemple On veut ajouter 3 mois à une date donnée SELECT ADDDATE(' ', INTERVAL 3 MONTH) Formats de date et d heure d% : numéro du jour sur 2 chiffres D% : nom du jour avec suffixe anglais W% : nom du jour de la semaine (anglais) m% : numéro du mois sur 2 chiffres M% : nom du mois (anglais) y% : année sur 2 chiffres Y% : année sur 4 chiffres Exemple SELECT DATE_FORMAT(' ', '%d/%m/%y') 4.4. LES AGREGATS SELECT col, fonction(s) de synthèse FROM Table GROUP BY col HAVING prédicat Infotique

55 Les fonctions de synthèse sont : SUM, COUNT, AVG, MIN, MAX Exemple Compter le nombre de personnes travaillent à temps partiel par quotités SELECT quotitepersonne AS Quotite, COUNT(*) AS Effectifs FROM personne GROUP BY quotitepersonne HAVING quotitepersonne < LES JOINTURES Jointure naturelle SELECT col1, col2 FROM Table1 INNER JOIN Table2 ON FK = PK FK désigne une clef étrangère, PK une clef primaire. Exemple Afficher le nom des personnes et le nom du site auquel elles sont affectées. SELECT nompersonne, nometablissement FROM personne INNER JOIN etablissement ON Personne.idEtablissement = etablissement.idetablissement Autre syntaxe L ancienne syntaxe SQL est toujours utilisable SELECT nompersonne, nometablissement FROM personne, etablissement WHERE personne.idetablissement = etablissement.idetablissement Jointures externes SELECT col1, col2 FROM Table1 LEFT (RIGHT) OUTER JOIN Table2 ON FK = PK FK désigne une clef étrangère, PK une clef primaire. Exemple Infotique

56 Afficher le nom des personnes (y compris les personnes n étant affectées nulle part) et le nom du site auquel elles sont affectées. SELECT nompersonne, nometablissement FROM personne LEFT OUTER JOIN etablissement ON Personne.idEtablissement = etablissement.idetablissement 4.6. LES OPERATEURS ENSEMBLISTES L union SELECT col1, col2 FROM Table1 UNION SELECT col1, col2 FROM Table2; Exemple Afficher le nom des personnes présentes dans la table personne ou (inclusif) dans la table workers. SELECT nompersonne, prenompersonne FROM personne UNION SELECT lastnameworker, firstnameworker FROM worker L intersection SELECT col1, col2 FROM Table1 INTERSECT SELECT col1, col2 FROM Table2; Exemple Afficher le nom des personnes présentes dans la table personne et aussi dans la table workers. SELECT nompersonne, prenompersonne FROM personne WHERE nompersonne IN (SELECT lastnameworker FROM workers) AND prenompersonne IN (SELECT firstnameworker FROM workers) La différence SELECT col1, col2 FROM Table1 MINUS SELECT col1, col2 FROM Table2; Exemple Infotique

57 Afficher le nom des personnes présentes dans la table personne et pas dans la table workers SELECT nompersonne, prenompersonne FROM personne WHERE nompersonne NOT IN (SELECT lastnameworker FROM workers) 4.7. LES SOUS-REQUETES Les requêtes contenant des sous-requêtes doivent être distinguées suivant que celle-ci est susceptible de ne renvoyer qu une seule ligne de résultat ou plusieurs lignes de résultat. Si la sous-requête ne renvoie à coup sur (structurellement) qu une seule ligne, la sous-requête peut être introduite par les opérateurs : =, >, >= Exemple Afficher les noms dont la quotité est inférieure à la moyenne des quotités. SELECT nompersonne FROM personne WHERE quotitepersonne < (SELECT AVG(quotitePersonne) FROM personne) Les opérateurs ANY et ALL permettent d introduire une sous-requête avec les opérateurs : =, >, >= Exemple Afficher les noms des personnes présentes dans la table personne et dans la table workers (intersection) SELECT nompersonne FROM personne WHERE nompersonne = ANY (SELECT lastnameworker FROM workers) Si la requête est susceptible de renvoyer plusieurs valeurs, la sous-requête doit être introduite par les opérateurs : IN, NOT IN, EXISTS SELECT * FROM Table1 WHERE col IN (SELECT col FROM Table2 WHERE prédicat) Afficher le nom et la quotité des personnes ayant la même quotité qu une personne du site «BEAU CAMPUS» Infotique

58 SELECT `nompersonne`,`quotitepersonne` FROM `personne` WHERE quotitepersonne IN (SELECT `quotitepersonne` FROM personne INNER JOIN etablissement ON personne.idetablissement = etablissement.idetablissement WHERE nometablissement = 'BEAU CAMPUS') 5. Le contrôle des autorisations 5.1. ACCORDER UNE AUTORISATION GRANT privilèges TO utilisateur ON WITH GRANT OPTIONS Privilèges : INSERT, UPDATE, DELETE, ALL La clause WITH GRANT OPTIONS optionnelle permet à l utilisateur de transmettre les privilèges reçus REVOQUER UNE AUTORISATION REVOKE privilèges TO utilisateur ON Infotique

59 MYSQL ET PHP 1. MySQL brève présentation MySQL est un Système de Gestion de Base de Données Relationnelles multithreads et multiutilisateurs. MySQL est fortement couplé au serveur web Apache et à PHP via notamment les quatuors LAMP, WAMP et MAMP (Macintosh). MySQL est supporté par la grande majorité des hébergeurs Web. Depuis le rachat de MySQL par Sun puis par Oracle, MySQL est présenté comme le SGBD devant être utilisé conjointement à Java. MySQL est un SGBD qui suivant son usage est en licence libre ou propriétaire. MySQL est un SGBD orienté davantage «fournisseur de données» (efficacité en consultation) que gestion de grandes quantités de transactions simultanées. MySQL supporte la norme SQL2. MySQL peut gérer les transactions et les contraintes d intégrité référentielles. 2. Utilisation de MySQL Une base de données peut être manipulée avec MySQL : En mode commande Via l utilitaire PHPMYADMIN Via un programme (par exemple un programme PHP) 2.1. L UTILISATION EN MODE COMMANDE Infotique

60 Connexion au serveur et manipulation des données Bases de données relationnelles & SQL Après avoir éventuellement modifié la variable d environnement, il faut exécuter la commande de connexion au serveur de la façon suivante (le serveur ayant été préalablement lancé). La syntaxe générale est : mysql u nom utilisateur pmot de passe (pas d espace entre le p et le mot de passe éventuel). Une autre syntaxe est possible : mysql u nom utilisateur p Le serveur MySQL demandera alors un mot de passe. Il est alors possible de : Créer une base de données Créer, modifier, supprimer des tables Créer, modifier, supprimer des données Sélectionner des données Créer de nouveaux utilisateurs et leur accorder des privilèges Il est aussi possible, plutôt que d exécuter des commandes au clavier, d exécuter un script SQL. La syntaxe est la suivante : mysql u nom utilisateur pmot de passe <fichier de script Infotique

61 Exercices en mode commande Pour traiter les exercices qui suivent, il est indispensable de posséder les autorisations nécessaires sur la base de données. Première partie création d une base de données 1) Examiner le script généré par DBDesigner sur le modèle Annuaire 2) Exécuter ce script 3) Afficher la liste des bases de données sur le serveur MySQL 4) Afficher la liste des tables de la base annuaire 5) Examiner le script fourni et interpréter les différences (IF EXISTS, nouvelle colonne dans Personne ) 6) Exécuter le script Deuxième partie écriture de requêtes SQL Modifications du schéma 1) Ajouter la colonne indicepersonne de type entier dans la table Personne 2) Ajouter la colonne dateaffectation de type date dans la table Affectations 3) Modifier le nom de la colonne Personne_idPersonne par Personne_idChef 4) Ajouter une table worker (lastname, firstname, indicepaie) Mises à jour 5) Attribuer un indice à chacune des personnes 6) Renseigner la table worker en y plaçant deux personnes figurant dans la table personne mais avec un indice supérieur 7) Modifier le nom du site «Guten Tag Schule» par «Wunderbar Schule» 8) Augmenter tous les indices de 15% 9) Modifier l indice des deux personnes présents dans les deux tables en changeant l indice de la table personne par celui de la table worker 10) Remplacer le grand chef par SMITH. L ancien grand chef devient le subordonné de SMITH Sélections 11) Afficher le contenu de la table personne trié par ordre alphabétique des noms Infotique

62 12) Afficher le nom et le prénom dont la quotité est inférieur à ) Afficher le nom et le prénom des personnes entrées avant 2004 et dont la quotité est inférieure à ) Afficher le nom et le prénom des personnes entrées en ) Afficher les noms de personnes commençant par la lettre D 16) Afficher les noms de personnes ne contenant pas la lettre e 17) Afficher le nom et le prénom du grand chef 18) Afficher le nombre de jour passés dans l entreprise pour chacune des personnes 19) Afficher la date du 20 ème anniversaire de présence dans l entreprise pour chacune des personnes 20) Afficher la concaténation du nom et du prénom de chacune des personnes, le nom et le prénom commençant par une majuscule, les autres caractères en minuscules, un espace de séparation 21) Afficher le nom des personnes et l adresse de leur site 22) Afficher le nom des personnes et l adresse de leur site pour les sites dont la surface est inférieure à ) Afficher le nom et la quotité des personnes en regard du nom et de la quotité de leur supérieur 24) Afficher le nombre de personnes par quotité, le titre de la colonne de comptage est Effectifs (utiliser un alias) 25) Calculer le nombre d ETP par pays (jointure et regroupement) 26) Afficher le nom des personnes se trouvant soit dans la table personne, soit dans le table worker 27) Afficher le nom des personnes se trouvant dans la table personne et dans le table worker 28) Afficher le nom des personnes se trouvant dans la table personne et pas dans la table worker 29) Afficher le nom des personnes travaillant sur un site sur lequel travaillent au moins 3 personnes (sous-requête) 30) Afficher le nom et la quotité des personnes dont la quotité est inférieure ou égale à toutes les quotités des personnes affectées au site «BEAU CAMPUS» 31) Afficher le nom des personnes travaillant dans le même site que leur supérieur hiérarchique 32) Créer une vue affichant toutes les colonnes des personnes travaillant en France 33) Afficher le nom de toutes les personnes travaillant en France à temps partiel (à partir de la vue précédente) Solution de la requête 31. Il s agit d une requête corrélée Une colonne de la sous requête est associée à une colonne de la requête extérieure Chaque ligne de la requête extérieure est évaluée par rapport à chacune des lignes de la requête intérieure (double boucle). SELECT E.nomPersonne FROM personne E INNER JOIN affectations ON E.idPersonne= affectations.personne_idpersonne WHERE affectations.site_idsite NOT IN (SELECT affectations.site_idsite FROM affectations INNER JOIN personne C ON affectations.personne_idpersonne = C.idPersonne WHERE E.Personne_idchef=C.idPersonne) Infotique

63 Solution pour la première partie 1) Voir les bases 2) Afficher les tables de la base annuaire 3) Exécuter le script 2.2. UTILISATION VIA L UTILITAIRE PHPMYADMIN L utilitaire PHPMYADMIN permet d effectuer les mêmes opérations en mode moins austère. Voir le chapitre ci-dessous 2.3. UTILISATION VIA UN PROGRAMME PHP La manipulation des données d une base de données hébergée par un serveur MySQL se fait en plusieurs étapes : 1) Obtention d une connexion au serveur MySQL 2) Accès à la base de données 3) Préparation de la requête 4) Exécution de la requête Infotique

64 La connexion au serveur Bases de données relationnelles & SQL La connexion au serveur MySQL est obtenue en utilisant la fonction suivante : mysql_connect (hostname, utilisateur, mot de passe) La fonction renvoie un identifiant de connexion en cas de succès, FALSE accompagnée d un message d alerte en cas d échec. La déconnexion s exécute en utilisant la fonction : mysql_close(identifiant de connexion) La fonction renvoie True en cas de succès, False autrement L accès à la base de données L accès à une base de données est obtenu en utilisant la fonction suivante : Mysql_select_db (identifiant connexion, nom de la base) La fonction renvoie True en cas de succès, False autrement Préparation et exécution d une requête La requête (du texte SQL) est tout d abord placée dans une variable. La requête est exécutée par la fonction suivante : mysql_query (texte de la requête, identifiant de connexion) La fonction renvoie un identifiant de résultat de requête en cas de succès, FALSE en cas d échec lorsque la requête est prévue pour renvoyer un résultat (SELECT ). La fonction renvoie True en cas de succès, FALSE en cas d échec lorsque la requête est prévue pour ne pas renvoyer de résultat (requête de mise à jour). La fonction mysql_query() ne renvoie pas de donnée. Exemple Ecrire un script qui : 1. Etablisse une connexion le serveur MySQL 2. Accède à la base annuaire 3. Exécute une requête de type SELECT sur la table Personne (on ne demande pas de renvoyer le résultat) 4. Ajoute une ligne à la table Pays (Mali) 5. Ferme la connexion au serveur Le script devra tester le succès de chacune des opérations. Infotique

65 <?php $nom_hote='localhost'; $user='infotique'; $password='agathe'; //connexion au serveur MySQL $connexion=mysql_connect($nom_hote,$user,$password); //0 = false, autres valeurs = true if($connexion) echo "Connexion au serveur $nom_hote établie<br>"; else echo "La tentative de connexion au serveur $nom_hote a échoué<br>"; //Accès à la base de données $db='annuaire'; $ok=mysql_select_db($db,$connexion); if($ok) echo "Accès à la base $db établi<br>"; else echo "La tentative d'accès àla base $db a échoué"; //préparation et exécution d'une requête $requete = "INSERT INTO Pays(nomPays) VALUES ('Mali')"; $resultat_requete = mysql_query($requete,$connexion); if($resultat_requete) echo "Requête exécutée<br>"; else echo "La requête a echoué<br>"; Infotique

66 //déconnexion $ok=mysql_close($connexion); if($ok) echo "Déconnexion réussie<br>"; else echo "La tentative de déconnexion a échoué"; //déconnexion $ok=mysql_close($connexion); if($ok) else echo "Déconnexion réussie<br>"; echo "La tentative de déconnexion a échoué";?> Résultat Connexion au serveur localhost établie Accès à la base annuaire établi Requête exécutée Déconnexion réussie Suite Modifier la requête afin que le pays soit donné en paramètre. $nouveau_pays='belgique'; //préparation et exécution d'une requête $requete = "INSERT INTO Pays(nomPays) VALUES ('".$nouveau_pays."')"; Suite Tenter la même opération avec la république d Abkhazie Infotique

67 $nouveau_pays=mysql_escape_string("rébublique d'abkhazie"); //préparation et exécution d'une requête $requete = "INSERT INTO Pays(nomPays) VALUES ('".$nouveau_pays."')"; $resultat_requete = mysql_query($requete,$connexion); On constate que l apostrophe figurant dans le nom du pays doit être échappée. L échappement des caractères pour MySQL est réalisé par la fonction : mysql_escape_string() Affichage du résultat d une requête renvoyant un résultat (SELECT) Le principe d affichage des résultats d une requête est le suivant : 1) La requête SQL renvoie, en cas de succès, un identifiant de résultat 2) Le résultat est extrait ligne à ligne jusqu à la dernière ligne Les données renvoyées par la requête sont extraites ligne à ligne en exécutant une des fonctions suivantes : mysql_fetch_assoc(résultat de la requête) mysql_fetch_row(résultat de la requête) mysql_fetch_array(résultat de la requête, type) Ces fonctions retournent la ligne courante du curseur sous la forme d un tableau, chaque ligne du tableau correspondant à une colonne du curseur. Lorsque le curseur a été entièrement parcouru, la fonction renvoie NULL. La fonction Mysql_fetch_assoc (résultat de la requête) renvoie un tableau associatif dont la clef est les nom des colonnes renvoyées par la requête. Mysql_fetch_row (résultat de la requête) renvoie un tableau à indices entiers Mysql_fetch_array (résultat de la requête) renvoie un tableau dont le type est déterminé par un paramètre : MYSQL_NUM, MYSQL_ASSOC, MYSQL_BOTH. Exemple Afficher le nom de chaque personne, sa date d entrée, le nom du site et le pays dans lequel il travaille. Infotique

68 3. Eléments d administration de MySQL L administration de MySQL peut s opérer par l utilitaire PHPMYADMIN 3.1. ADMINISTRER COMPTES UTILISATEURS ET AUTORISATION Création d un nouvel utilisateur Pour accéder à la gestion des comptes utilisateurs, il faut sélectionner l onglet «Privilèges» Puis sélectionner la fonction «Ajouter un utilisateur», renseigner les rubriques et valider (exécuter). Infotique

69 L utilisateur concerné a alors le privilège «USAGE», c'est-à-dire qu il peut obtenir une connexion au serveur MySQL. Il est possible d attribuer des privilèges globaux explicites pour l ensemble des bases de données ou de créer une base de données pour l utilisateur. L attribution de privilèges globaux à ce niveau est inutile Attribuer des autorisations pour une base de données Après l ajout d un utilisateur, il est possible de lui attribuer des autorisations sur une base existante. Un premier écran permet de sélectionner la base. L écran suivant permet de spécifier d une part les autorisations accordées et d autre part leur étendue, soit la base entière Infotique

70 Soit une table de la base Il est vivement conseillé de ne pas attribuer le privilège «GRANT» (possibilité de transmettre les privilèges que l on possède) sans discernement. Il est possible de modifier les autorisations d un utilisateur. Il est possible de supprimer un utilisateur CREER UNE BASE DE DONNEES Nous allons créer une base de données «Personnel» composé de deux tables Personne (idpersonne, nompersonne, salaire, codeetablissement) Etablissement (idetablissement, nometablissement, adresseetablissement, surfaceetablissement) Infotique

71 L utilitaire PHPMYADMIN permet de créer une base de données. L opération de création s effectue en deux temps : Création de la base de données Création du schéma (c'est-à-dire des tab les) Création de la base de données Création des tables Infotique

72 La colonne idpersonne est de type «auto incrément» et constitue la clef primaire. Le résultat est le suivant : Pour la seconde table, le résultat est le suivant : Il est bien sur possible de modifier ou de supprimer des tables Créer une contrainte de clef étrangère (contrainte d intégrité référentielle) Infotique

73 Pour créer une contrainte de clef étrangère avec MySQL, il est nécessaire que les données soient stockées au format «inno DB». Si cela n est pas le cas, il faut sélectionner la table, cliquer sur «Structure» puis sur l onglet «Opérations» puis changer le moteur de stockage. La colonne clef étrangère doit d autre part être indexée. Après avoir sélectionné la table contenant la clef étrangère concernée, cliquez sur le lien «Gestion des relations». Vous pouvez désigner la clef primaire associée à la clef étrangère et décider de l action à entreprendre en cas de suppression ou de modification de celle-ci. Le choix NO ACTION garantit qu il sera impossible de supprimer ou de modifier la clef primaire associé. La colonne clef étrangère doit impérativement être indexée. Le résultat de l action est le suivant : Infotique

74 3.3. AFFICHER, INSERER, MODIFIER, SUPPRIMER DES DONNEES Dès qu une table contient une ligne, il est possible d insérer de nouvelles lignes, d en supprimer, d en modifier en passant par la fonction d affichage de la table EXECUTER DES REQUETES SQL L éditeur SQL permet de saisir du code SQL : Le résultat est présenté de la façon suivante : Infotique

75 3.5. SAUVEGARDER, IMPORTER ET EXPORTER Il est possible de sauvegarder, d importer ou d exporter des bases de données ou des tables Sauvegarder une base de données Après avoir sélectionné la base à sauvegarder, il faut cliquer sur l onglet «Exporter» pour obtenir l écran suivant : Dans cet écran, l exportation SQL est sélectionnée par défaut, elle est à conserver pour l opération de sauvegarde de la base de données. La sauvegarde concerne (c est heureux) à la fois la structure et à la fois les données. Le résultat (partiel) est le suivant : -- phpmyadmin SQL Dump -- version Serveur: localhost -- Généré le : Mer 17 Juin 2009 à 12:30 -- Version du serveur: Version de PHP: SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; Base de données: `annuaire` -- Infotique

76 Structure de la table `pays` -- CREATE TABLE IF NOT EXISTS `pays` ( `idpays` int(10) unsigned NOT NULL AUTO_INCREMENT, `nompays` varchar(255) DEFAULT NULL, PRIMARY KEY (`idpays`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ; Contenu de la table `pays` -- INSERT INTO `pays` (`idpays`, `nompays`) VALUES (1, 'France'), (2, 'Allemagne'), (3, 'Italie'); Il s agit d un code SQL constitué principalement de requêtes CREATE TABLE et INSERT INTO qui pourra être exécutée sur la même machine ou une autre machine pour recréer la base de données (structure et données). 4. Exemple récapitulatif 4.1. PREMIER EXEMPLE RECHERCHE DANS UNE BASE DE DONNEES ET AFFICHAGE DU RESULTAT DANS UN FORMULAIRE Enoncé Infotique

77 On souhaite construire un formulaire permettant d afficher les personnes (nom, prénom, date d entrée et quotité) travaillant dans un pays donné (c'est-à-dire dans un site implanté dans un pays donné). 1. Construire un formulaire qui affiche les pays dans une liste. Solution <?php $nom_hote='localhost'; $user='infotique'; $password='agathe'; //connexion au serveur MySQL $connexion=mysql_connect($nom_hote,$user,$password); //0 = false, autres valeurs = true if(!$connexion) exit( "La tentative de connexion au serveur $nom_hote a échoué"); //Accès à la base de données $db='annuaire'; $ok=mysql_select_db($db,$connexion); if(!$ok) exit( "La tentative d'accès àla base $db a échoué"); //préparation et exécution d'une requête sélectionnant les pays $requete = "SELECT * FROM Pays"; $resultat_requete = mysql_query($requete,$connexion); if(!$resultat_requete) exit("la requête a echoué<br>"); //déconnexion $ok=mysql_close($connexion); if(!$ok) exit("la tentative de déconnexion a échoué"); Infotique

78 ?> <html> <head><title>recherche par pays</title></head> <body> <form action="rechercheparpays.php" method="post"> <select name="liste_pays"> <!--affichage du contenu de la liste - utilisation de htmlentities pour obtenir un affichage correct dans n'importe quel navigateur--> <?php while ($row = mysql_fetch_row($resultat_requete)) echo "<OPTION>".htmlentities($row[1])."</OPTION>";?> </select> </form> </body> </html> 1) Modifier le script pour que si un pays est choisi, il soit affiché. Solution if (sizeof($_post)>0) echo "Le pays sélectionné est : $_POST[liste_pays]"; 2) Modifier le script de façon à afficher les personnes (nom, prénom, date d entrée et quotité) travaillant dans le pays sélectionné (c'est-à-dire dans un site implanté dans le pays sélectionné). Solution <?php Infotique

79 $nom_hote='localhost'; $user='infotique'; $password='agathe'; //connexion au serveur MySQL $connexion=mysql_connect($nom_hote,$user,$password); //0 = false, autres valeurs = true if(!$connexion) exit( "La tentative de connexion au serveur $nom_hote a échoué"); //Accès à la base de données $db='annuaire'; $ok=mysql_select_db($db,$connexion); if(!$ok) exit( "La tentative d'accès àla base $db a échoué"); //préparation et exécution d'une requête sélectionnant les pays $requete = "SELECT * FROM Pays"; $resultat_requete = mysql_query($requete,$connexion); if(!$resultat_requete) exit("la requête a echoué<br>"); if (sizeof($_post)>0) //on recherche les personnes travaillant dans le pays $pays=$_post["liste_pays"]; $requete="select nompersonne, prenompersonne, dateentreepersonne,quotitepersonne FROM (personne INNER JOIN site ON personne.site_idsite = site.idsite) INNER JOIN Pays ON site.pays_idpays = Pays.idPays WHERE nompays = '".$pays."'"; $resultat_recherche_personne=mysql_query($requete,$connexion); if(!$resultat_recherche_personne) exit("la recherche a echoué<br>"); Infotique

80 //déconnexion $ok=mysql_close($connexion); if(!$ok) exit("la tentative de déconnexion a échoué");?> <html> <head><title>recherche par pays</title></head> <body> <form action="rechercheparpays.php" method="post"> <select name="liste_pays"> <!--affichage du contenu de la liste - utilisation de htmlentities pour obtenir un affichage correct dans n'importe quel navigateur--> <?php while ($row = mysql_fetch_row($resultat_requete)) echo "<OPTION>".htmlentities($row[1])."</OPTION>";?> </select> <input type="submit" name="ok" value="ok"> </form> <?php //affichage des résultats if (sizeof($_post)>0 and $resultat_recherche_personne) //on construit un tableau echo "<TABLE BORDER>"; while ($row = mysql_fetch_row($resultat_recherche_personne)) echo "<TR>"; echo "<TD>$row[0]</TD>"; echo "<TD>$row[1]</TD>"; echo "<TD>$row[2]</TD>"; echo "<TD>$row[3]</TD>"; echo "</TR>"; Infotique

81 echo "</TABLE BORDER>";?> </body> </html> Résultat 4.2. IDENTIFICATION, AUTHENTIFICATION ET OUVERTURE D UNE SESSION Enoncé 1) Créer dans la base annuaire une table Utilisateurs définie par la relation (id_utilisateur, login, mot_de_passe). 2) Ecrire un script qui permette d ajouter des utilisateurs dans la table 3) Insérer quelques lignes 4) Ecrire un script PHP qui : 5) Initialise un formulaire de demande de connexion 6) Recherche dans la base la présence du couple (login mot de passe) saisi par l utilisateur Infotique

82 7) Accepte ou refuse la connexion 8) Démarre une session en cas de succès en stockant le login de l utilisateur dans la variable de session Vérifier la bonne gestion de la session en faisant afficher le login de l utilisateur dans une autre page. Script d ajout d utilisateurs <?php $nom_hote='localhost'; $user='infotique'; $password='agathe'; //connexion au serveur MySQL $connexion=mysql_connect($nom_hote,$user,$password); //0 = false, autres valeurs = true if(!$connexion) exit( "La tentative de connexion au serveur $nom_hote a échoué"); //Accès à la base de données $db='annuaire'; $ok=mysql_select_db($db,$connexion); if(!$ok) exit( "La tentative d'accès à la base $db a échoué"); if(!empty($_post)) if (!empty($_post['login'])and!empty($_post['mot_de_passe'])) //on recherche le login dans la base $login=$_post["login"]; Infotique

83 = '".$login."'"; $requete="select * FROM utilisateur WHERE nom_utilisateur $resultat_recherche_personne=mysql_query($requete,$connexion); if(!$resultat_recherche_personne) exit("la requête a échoué<br>"); if(mysql_num_rows($resultat_recherche_personne)>0) exit ("Utilisateur déjà enregistré"); $heure_connexion=time(); $requete="insert INTO utilisateur(nom_utilisateur,mot_de_passe,heure_connexion) VALUES('".$login."','".$pwd."',".$heure_connexion.")"; $resultat_recherche_personne=mysql_query($requete,$connexion); else if(!$resultat_recherche_personne) exit("l' enregistrement a échoué <br>"); else echo "l'enregistrement a réussi"; $erreur=array(); $msg=array(); if(empty($_post['login'])) $erreur['login']=true; $msg['login']="nom utilisateur obligatoire"; if(empty($_post['mot_de_passe'])) $erreur['pwd']=true; $msg['pwd']="mot de passe obligatoire"; Infotique

84 //déconnexion $ok=mysql_close($connexion); if(!$ok) exit("la tentative de déconnexion a échoué");?> <html> <head><title>ajout utilisateur</title></head> <body> <form action="saisieutilisateur.php" method="post"> <br> Nom utilisateur : <input type="text" name="login"> * <?php if(isset($erreur['login']))echo $msg['login'];?> <br> Mot de passe : <input type="password" name="mot_de_passe"> * <?php if(isset($erreur['pwd']))echo $msg['pwd'];?> <br> <input type="submit" name="ok" value="ok"> </form> </body> </html> Script de connexion <?php $nom_hote='localhost'; $user='infotique'; $password='agathe'; //connexion au serveur MySQL $connexion=mysql_connect($nom_hote,$user,$password); //0 = false, autres valeurs = true Infotique

85 if(!$connexion) exit( "La tentative de connexion au serveur $nom_hote a échoué"); //Accès à la base de données $db='annuaire'; $ok=mysql_select_db($db,$connexion); if(!$ok) exit( "La tentative d'accès à la base $db a échoué"); if(!empty($_post)) if (!empty($_post['login'])and!empty($_post['mot_de_passe'])) //on recherche le login et le mot de passe $login=$_post["login"]; $pwd=$_post["mot_de_passe"]; $requete="select * FROM utilisateurs WHERE nom_utilisateur = '".$login."' AND mot_de_passe = '".$pwd."'"; $resultat_recherche_personne=mysql_query($requete,$connexion); avec la base <br>"); if(!$resultat_recherche_personne) exit("la connexion ne peut être établie if(mysql_num_rows($resultat_recherche_personne)==0) echo "Erreur de connexion"; else session_start(); $_SESSION['login']=$login; //redirection vers une page de bienvenue header('location:bienvenue.php'); Infotique

86 else $erreur=array(); $msg=array(); if(empty($_post['login'])) $erreur['login']=true; $msg['login']="nom utilisateur obligatoire"; if(empty($_post['mot_de_passe'])) $erreur['pwd']=true; $msg['pwd']="mot de passe obligatoire"; //déconnexion $ok=mysql_close($connexion); if(!$ok) exit("la tentative de déconnexion a échoué");?> <html> <head><title>connexion</title></head> <body> <form action="saisieconnexion.php" method="post"> <br> Nom utilisateur : <input type="text" name="login"> * <?php if(isset($erreur['login']))echo $msg['login'];?> <br> Mot de passe : <input type="password" name="mot_de_passe"> * <?php if(isset($erreur['pwd']))echo $msg['pwd'];?> <br> <input type="submit" name="ok" value="ok"> </form> Infotique

87 </body> </html> Script de création de la page de bienvenue <?php session_start(); echo "Bienvenue $_SESSION[login]";?> Résultat Après validation : Infotique

88 Infotique

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

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

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

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

Information utiles. cinzia.digiusto@gmail.com. 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 : cinzia.digiusto@gmail.com webpage : http://www.ibisc.univ-evry.fr/ digiusto/ Google+ : https://plus.google.com/u/0/b/103572780965897723237/

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

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

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

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 anis.bach@isg.rnu.tn

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

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

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

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 slebre@unistra.fr Université de Strasbourg, département d informatique. Partie 1 : Notion de bases de données (12,5h ) Enjeux et principes

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

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

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

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

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

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

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

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

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 slebre@unistra.fr 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

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

INF 1250 INTRODUCTION AUX BASES DE DONNÉES. Guide d étude INF 1250 INTRODUCTION AUX BASES DE DONNÉES Guide d étude Sous la direction de Olga Mariño Télé-université Montréal (Québec) 2011 INF 1250 Introduction aux bases de données 2 INTRODUCTION Le Guide d étude

Plus en détail

Dossier I Découverte de Base d Open Office

Dossier I Découverte de Base d Open Office ETUDE D UN SYSTEME DE GESTION DE BASE DE DONNEES RELATIONNELLES Définition : Un SGBD est un logiciel de gestion des données fournissant des méthodes d accès aux informations. Un SGBDR permet de décrire

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

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

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

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

Modélisation des données

Modélisation des données Modélisation des données Le modèle Entité/Association Le MCD ou modèle Entité/Association est un modèle chargé de représenter sous forme graphique les informations manipulées par le système (l entreprise)

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

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

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

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

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

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

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

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

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

UML et les Bases de Données

UML et les Bases de Données CNAM UML et les Bases de Données UML et les Bases de Données. Diagramme de classes / diagramme d objets (UML)...2.. Premier niveau de modélisation des données d une application...2.2. Les éléments de modélisation...2.2..

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

Nom de l application

Nom de l application Ministère de l Enseignement Supérieur et de la Recherche Scientifique Direction Générale des Etudes Technologiques Institut Supérieur des Etudes Technologiques de Gafsa Département Technologies de l Informatique

Plus en détail

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

Modélisation de bases de données : Le modèle relationnel Modélisation de bases de données : Le modèle relationnel Rappel chapitre 1 C est quoi un modèle? Type de modèle : Modèle hiérarchique Modèle réseau Modèle objet Modèle relationnel Cours BD Dr REZEG K 1

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

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

Bases de Données Relationnelles. Le Modèle Relationnel Bases de Données Relationnelles Le Modèle Relationnel Le modèle relationnel modèle de niveau logique modèle simple : deux concepts relation (table) attribut (colonne) défini par Ted Codd en 1970 ; prix

Plus en détail

DOSSIER D'ACTIVITES SUR LE PHP N 03 Créer une base de données MySQL avec PHPMyAdmin

DOSSIER D'ACTIVITES SUR LE PHP N 03 Créer une base de données MySQL avec PHPMyAdmin DOSSIER D'ACTIVITES SUR LE PHP N 03 Créer une base de données MySQL avec PHPMyAdmin Objectifs : Apprendre à l apprenant à lancer un serveur local «Apache» Apprendre à l'apprenant à lancer un serveur MySQL

Plus en détail

UML (Diagramme de classes) Unified Modeling Language

UML (Diagramme de classes) Unified Modeling Language UML (Diagramme de classes) Unified Modeling Language Sommaire Introduction Objectifs Diagramme de classes Classe (Nom, attribut, opération) Visibilité et portée des constituants d une classe Association

Plus en détail

Application web de gestion de comptes en banques

Application web de gestion de comptes en banques Application web de gestion de comptes en banques Objectif Réaliser une application Web permettant à un client de gérer ses comptes en banque Diagramme de cas d'utilisation 1 Les cas d'utilisation Connexion

Plus en détail

DEVAKI NEXTOBJET PRESENTATION. Devaki Nextobjects est un projet sous license GNU/Public.

DEVAKI NEXTOBJET PRESENTATION. Devaki Nextobjects est un projet sous license GNU/Public. DEVAKI NEXTOBJET 1 Présentation...2 Installation...3 Prérequis...3 Windows...3 Linux...3 Exécution...4 Concevoir une BDD avec Devaki NextObject...5 Nouveau MCD...5 Configurer la connexion à la base de

Plus en détail

Bases de données. Chapitre 1. Introduction

Bases de données. Chapitre 1. Introduction Références : Bases de données Pierre Wolper Email : pw@montefiore.ulg.ac.be URL : http : //www.montefiore.ulg.ac.be/~pw/ http : //www.montefiore.ulg.ac.be/ ~pw/cours/bd.html Henry F. Korth, Abraham Silberschatz,

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

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

Systèmes d information et bases de données (niveau 1) Systèmes d information et bases de données (niveau 1) Cours N 1 Violaine Prince Plan du cours 1. Bibliographie 2. Introduction aux bases de données 3. Les modèles 1. Hiérarchique 2. Réseau 3. Relationnel

Plus en détail

CONCEPTION Support de cours n 3 DE BASES DE DONNEES

CONCEPTION Support de cours n 3 DE BASES DE DONNEES CONCEPTION Support de cours n 3 DE BASES DE DONNEES Auteur: Raymonde RICHARD PRCE UBO PARTIE III. - LA DESCRIPTION LOGIQUE ET PHYSIQUE DES DONNEES... 2 A. Les concepts du modèle relationnel de données...

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

1 Position du problème

1 Position du problème Licence Science et Technologies - INF245 Examen session 1 - mai 2012 Durée : 2 heures Documents non autorisés Le barème est donné à titre indicatif 1 Position du problème Le Club Universitaire de Vélo

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

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

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

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

Devenez un véritable développeur web en 3 mois!

Devenez un véritable développeur web en 3 mois! Devenez un véritable développeur web en 3 mois! L objectif de la 3W Academy est de former des petits groupes d élèves au développement de sites web dynamiques ainsi qu à la création d applications web

Plus en détail

INTRODUCTION AUX TECHNOLOGIES D INGENIERIE DES DONNEES DIRIGEE PAR LES MODELES

INTRODUCTION AUX TECHNOLOGIES D INGENIERIE DES DONNEES DIRIGEE PAR LES MODELES INTRODUCTION AUX TECHNOLOGIES D INGENIERIE DES DONNEES DIRIGEE PAR LES MODELES Les contenus de ce document sont la propriété exclusive de la société REVER. Ils ne sont transmis qu à titre d information

Plus en détail

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

Bases de Données. Le cas des BD relationnelles ouverture sur les BD relationnelles spatiales Séance 2 : Mise en oeuvre Bases de Données Le cas des BD relationnelles ouverture sur les BD relationnelles spatiales Séance 2 : Mise en oeuvre Synthèse : conception de BD langage de modélisation famille de SGBD SGBD Analyse du

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 antoine.cornuejols@agroparistech.fr Transparents Disponibles

Plus en détail

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

Chapitre 1 Généralités sur les bases de données Chapitre 1 Généralités sur les bases de données I. Définition d un SGBD Une base de données, généralement appelée BD est un ensemble structuré et organisé permettant le stockage de grandes quantités d'informations

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

Conception d une base de données

Conception d une base de données Conception d une base de données Cyril Gruau 17 octobre 2005 (corrigé le 13 juillet 2006) Résumé Ce support de cours regroupe quelques notions concernant le modélisation conceptuelle de système d information

Plus en détail

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

Chapitre VIII. Les bases de données. Orientées Objet. Motivation Chapitre VIII Motivation Le modèle relationnel connaît un très grand succès et s avère très adéquat pour les applications traditionnelles des bases de données (gestion) Les bases de données Orientées Objet

Plus en détail

et les Systèmes Multidimensionnels

et les Systèmes Multidimensionnels Le Data Warehouse et les Systèmes Multidimensionnels 1 1. Définition d un Datawarehouse (DW) Le Datawarehouse est une collection de données orientées sujet, intégrées, non volatiles et historisées, organisées

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

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

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

Mercredi 15 Janvier 2014

Mercredi 15 Janvier 2014 De la conception au site web Mercredi 15 Janvier 2014 Loïc THOMAS Géo-Hyd Responsable Informatique & Ingénierie des Systèmes d'information loic.thomas@anteagroup.com 02 38 64 26 41 Architecture Il est

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 virginie.sans@irisa.fr 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

UE 8 Systèmes d information de gestion Le programme

UE 8 Systèmes d information de gestion Le programme UE 8 Systèmes d information de gestion Le programme Légende : Modifications de l arrêté du 8 mars 2010 Suppressions de l arrêté du 8 mars 2010 Partie inchangée par rapport au programme antérieur Indications

Plus en détail

Base de Données et Langage SQL

Base de Données et Langage SQL Base de Données et Langage SQL (IUT, département informatique, 1 re année) Laurent AUDIBERT Institut Universitaire de Technologie de Villetaneuse Département Informatique Avenue Jean-Baptiste Clément 93430

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

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

Introduction à la B.I. Avec SQL Server 2008

Introduction à la B.I. Avec SQL Server 2008 Introduction à la B.I. Avec SQL Server 2008 Version 1.0 VALENTIN Pauline 2 Introduction à la B.I. avec SQL Server 2008 Sommaire 1 Présentation de la B.I. et SQL Server 2008... 3 1.1 Présentation rapide

Plus en détail

Objectifs du TP : Initiation à Access

Objectifs du TP : Initiation à Access Objectifs du TP : Initiation à Access I. Introduction Microsoft Access fait partie de l ensemble Microsoft Office. C est un SGBDR (système de gestion de bases de données relationnelles) présentant une

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

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

Formation à l utilisation des Systèmes de Gestion de Bases de Données Relationnelles. organisée avec la collaboration du Proyecto FAO COPEMED Universidad de Alicante Ramón y Cajal, 4 03001 - Alicante, España GCP/REM/057/SPA Web : www.fao.org/fi/copemed Tel : +34 96 514 59 79 Fax : +34 96 514 59 78 Email : copemed@ua.es Formation

Plus en détail

NF26 Data warehouse et Outils Décisionnels Printemps 2010

NF26 Data warehouse et Outils Décisionnels Printemps 2010 NF26 Data warehouse et Outils Décisionnels Printemps 2010 Rapport Modélisation Datamart VU Xuan Truong LAURENS Francis Analyse des données Avant de proposer un modèle dimensionnel, une analyse exhaustive

Plus en détail

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

Faculté des sciences de gestion et sciences économiques BASE DE DONNEES BASE DE DONNEES La plupart des entreprises possèdent des bases de données informatiques contenant des informations essentielles à leur fonctionnement. Ces informations concernent ses clients, ses produits,

Plus en détail

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43 Techniques de stockage Techniques de stockage, P. Rigaux p.1/43 Techniques de stockage Contenu de ce cours : 1. Stockage de données. Supports, fonctionnement d un disque, technologie RAID 2. Organisation

Plus en détail

PROSOP : un système de gestion de bases de données prosopographiques

PROSOP : un système de gestion de bases de données prosopographiques PROSOP : un système de gestion de bases de données prosopographiques Introduction : Ce document présente l outil en développement PROSOP qui permet la gestion d'une base de donnée prosopographique de la

Plus en détail

Chaîne opératoire de réalisation d une base de données. ANF «Comment concevoir une base de données» (29-30/01/2015)

Chaîne opératoire de réalisation d une base de données. ANF «Comment concevoir une base de données» (29-30/01/2015) Chaîne opératoire de réalisation d une base de données ANF «Comment concevoir une base de données» (29-30/01/2015) En introduction 1- Phase d analyse ou d audit 2- Modélisation & développement de la base

Plus en détail

PHP 4 PARTIE : BASE DE DONNEES

PHP 4 PARTIE : BASE DE DONNEES PHP 4 PARTIE : BASE DE DONNEES 1. Introduction 2. Présentation de MySQL 3. Principe 4. Connexion 5. Interrogation 6. Extraction des données 7. Fonctions de services 8. Traitement des erreurs 9. Travaux

Plus en détail

Le modèle de données

Le modèle de données Le modèle de données Introduction : Une fois que l étude des besoins est complétée, deux points importants sont à retenir : Les données du système étudié Les traitements effectués par le système documentaire.

Plus en détail

INTRODUCTION AUX BASES de DONNEES

INTRODUCTION AUX BASES de DONNEES INTRODUCTION AUX BASES de DONNEES Équipe Bases de Données LRI-Université Paris XI, Orsay Université Paris Sud Année 2003 2004 1 SGBD : Fonctionnalités et Principes Qu est qu une base de données? Un Système

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

LE MODELE CONCEPTUEL DE DONNEES

LE MODELE CONCEPTUEL DE DONNEES LE MODELE CONCEPTUEL DE DONNEES Principe : A partir d'un cahier des charges, concevoir de manière visuelle les différents liens qui existent entre les différentes données. Les différentes étapes de réalisation.

Plus en détail

Chapitre 1 : Introduction aux bases de données

Chapitre 1 : Introduction aux bases de données Chapitre 1 : Introduction aux bases de données Les Bases de Données occupent aujourd'hui une place de plus en plus importante dans les systèmes informatiques. Les Systèmes de Gestion de Bases de Données

Plus en détail

1. Base de données SQLite

1. Base de données SQLite Dans ce TP, nous allons voir comment créer et utiliser une base de données SQL locale pour stocker les informations. La semaine prochaine, ça sera avec un WebService. On repart de l application AvosAvis

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

INTRODUCTION AUX METHODES D INGENIERIE DES DONNEES DIRIGEE PAR LES MODELES

INTRODUCTION AUX METHODES D INGENIERIE DES DONNEES DIRIGEE PAR LES MODELES INTRODUCTION AUX METHODES D INGENIERIE DES DONNEES DIRIGEE PAR LES MODELES Les contenus de ce document sont la propriété exclusive de la société REVER. Ils ne sont transmis qu à titre d information et

Plus en détail

Entrepôt de données 1. Introduction

Entrepôt de données 1. Introduction Entrepôt de données 1 (data warehouse) Introduction 1 Présentation Le concept d entrepôt de données a été formalisé pour la première fois en 1990 par Bill Inmon. Il s agissait de constituer une base de

Plus en détail

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

clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE Cas Neptune hôtel Base de données et langage SQL Propriété Intitulé long Formation concernée Matière Notions Transversalité Présentation Description Neptune Hôtel. L interrogation d une base de données

Plus en détail

KIELA CONSULTING. Microsoft Office Open Office Windows - Internet. Formation sur mesure

KIELA CONSULTING. Microsoft Office Open Office Windows - Internet. Formation sur mesure KIELA CONSULTING Microsoft Office Open Office Windows - Internet Formation sur mesure Bureautique L outil informatique et la bureautique sont devenus quasiment incontournables quelque soit votre métier

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