Université Louis-Pasteur de Strasbourg Département d'informatique

Slides:



Advertisements
Présentations similaires
Mais vous comprenez qu’il s’agit d’une « tromperie ».
Advertisements

Bases de Données Avancées: Bases de Données Relationnelles
1 Plus loin dans lutilisation de Windows Vista ©Yves Roger Cornil - 2 août
Les numéros 70 –
Introduction Pour concrétiser l’enseignement assisté par ordinateur
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Orchestration de Web Services Module 5 Exercice Pratique à l'usage de l'environnement.
Vocabulaire pour la passage du modèle conceptuel des données au modèle relationnel des données. MCDMRD EntitéTable PropriétésChamps, attribut IdentifiantClé
Le Modèle Logique de Données
LES TRIANGLES 1. Définitions 2. Constructions 3. Propriétés.
TP 3-4 BD21.
Optimisation de Requêtes
Programme Introduction aux BD et aux SGBD Le modèle relationnel
La législation formation, les aides des pouvoirs publics
LE LANGAGE SQL : LDD La création de tables L’ordre CREATE CREATE TABLE nom_de_table (Nom_colonne Type_colonne, Nom_colonne Type_colonne,
Initiation au système d’information et aux bases de données
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
Initiation au système d’information et aux bases de données
Développement d’applications web
Contrôles d'accès aux données
Initiation à la conception de systèmes d'information
Présentation générale
Initiation aux bases de données et à la programmation événementielle
Modélisation E/R des Données
Introduction à la conception de Bases de Données Relationnelles
Les bases de données Cours assuré par: Mlle Smii imen
Chap 4 Les bases de données et le modèle relationnel
Les instructions PHP pour l'accès à une base de données MySql
L’utilisation des bases de données
Modèle Logique de Données
Gestion des bases de données
SYSTEMES D’INFORMATION
Les chiffres & les nombres
MODELE RELATIONNEL concept mathématique de relation
Cours de Base de Données & Langage SQL
Année universitaire Réalisé par: Dr. Aymen Ayari Cours Réseaux étendus LATRI 3 1.
MAGIE Réalisé par Mons. RITTER J-P Le 24 octobre 2004.
Initiation aux bases de données et à la programmation événementielle
Initiation à la conception des systèmes d'informations
Michel Tollenaere SQL et relationnel ENSGI Cours MSI 2A Relationnel et SQL version 1.4 du 25 septembre 2007 (ajout jointures) 1 Modèle relationnel Historique.
Aire d’une figure par encadrement
Les fondements constitutionnels
1. Représentation des informations
MAGIE Réalisé par Mons. RITTER J-P Le 24 octobre 2004.
Introduction.
Bases de données.
Cours n°4M2. ESCE (S. Sidhom) Séminaire ( 6-12 Février 2007 ) Promo. M2 ESCE-Tunis 2006/07 Conception d’un système d'information sur Internet Architecture.
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
La formation des maîtres et la manifestation de la compétence professionnelle à intégrer les technologies de l'information et des communications (TIC)
Optimisation de requêtes
PostgreSQL – Présentation
DEFINITION DES DONNEES : schéma conceptuel. Schéma conceptuel instructiondescription CREATE TABLEcréation d'une relation ALTER TABLEmodification de la.
Sélection de colonnes (la projection)
1 Initiation aux bases de données et à la programmation événementielle Responsable : Souheib BAARIR. (le sujet de votre .
21/04/2015© Robert Godin. Tous droits réservés.1 6Gestion des contraintes d’intégrité en SQL n Contrainte d'intégrité statique – respectée pour chacun.
Quinio1 Bases de données : modèlisation et SGBD Séance 3 B Quinio.
Cours n°4M1.ist-ie (S. Sidhom) UE 203 Promo. M1 IST-IE 2006/07 Conception d’un système d'information sur Internet Architecture trois-tiers : technologies.
Initiation aux SGBD Frédéric Gava (MCF)
1 Structure en MC Principes Stockage des données dans la mémoire volatile d’un ordinateur Problèmes Stockage temporaire «Petits» volumes de données Langages.
06/04/06 LES BASES DE DONNEES INTRODUCTION CogniTIC – Bruxelles Formation - Cepegra.
Le langage SQL.
Séance /10/2004 SGBD - Approches & Principes.
INTRODUCTION AUX BASES DE DONNEES
Initiation aux bases de données et à la programmation événementielle
INTRODUCTION AUX BASES DE DONNEES Base et métabase
Introduction Module 1.
Les bases de données Séance 4 Construction du Modèle Physique (la BDD)
Schéma de base de données Présentation. Conception du schéma logique  Transformation du schéma conceptuel en structures de données supportées par les.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 4 Support de cours rédigé par Bernard COFFIN Université.
1 Les bases de données Séance 5 -- Le Langage de Définition de Données ou la manœuvre de la structure de la base -- Le Langage de Manœuvre de Données.
Transcription de la présentation:

Université Louis-Pasteur de Strasbourg Département d'informatique Bases de Données Université Louis-Pasteur de Strasbourg Département d'informatique  Sylvain BRANDEL    Pôle API, Boulevard Sébastien Brant 67 400 ILLKIRCH bureau C 126 tél : 03 90 24 45 68 e-mail : brandel@dpt-info.u-strasbg.fr Bases de Données – Sylvain Brandel – 1

Chapitre 1 Bases de Données et Systèmes de Gestion de Bases de Données Bases de Données – Sylvain Brandel – 2

Introduction Déf. Une BD est un ensemble de données modélisant les objets d’une partie du monde réel et servant de support à une application informatique Ensemble structuré autorisant l’extraction sélective d’informations Exemple de BD : annuaire Deux types d'opérations manipulation définition Tout ensemble de données ne justifie pas forcément une BD  exemple : CDs audio Déf. Un SGBD est un logiciel permettant d’interagir avec une BD Exemples de SGBD : Access, Oracle, mySQL Chapitre 1. BD et SGBD Bases de Données – Sylvain Brandel – 3

Analyse Avant de penser BD, poser des questions, étudier, analyser les besoins Pourquoi MERISE ? Problèmes des grosses applications Principes de base : méthode globale et intégrée séparation données / traitements 3 niveaux de modélisation  Exemple : CDs audio  Exemple : École  Application non coordonnées  Applications « touffues »  Résultats différents des souhaits  MERISE Chapitre 1. BD et SGBD Bases de Données – Sylvain Brandel – 4

Niveau conceptuel : MCD Entité : collection d'objets ayant des propriétés analogues et possédant un identifiant Exemple : CLASSE < id-classe, nb-élèves, année > Association : Lien logique entre plusieurs entités Chapitre 1. BD et SGBD Bases de Données – Sylvain Brandel – 5

Niveau conceptuel : MCT Événement : compte-rendu fait au SI que quelque chose s'est produit dans l'univers extérieur ou dans le SI Les événements peuvent être : internes externes Opération : actions accomplies par le SI en réaction à un (ou des) événement(s) Chapitre 1. BD et SGBD Bases de Données – Sylvain Brandel – 6

Niveaux organisationnel et technique MLD : MCD repensé MOT : intégration de règles de gestion Exemples de règles d'organisation : à chaque livraison, le magasinier contrôle la marchandise livrée l'inventaire est effectué tous les ans les 29 et 30 décembre MPhD : implantation physique MOpT : contraintes techniques Inconvénients de MERISE : - lourdeur - difficulté d'apprentissage Chapitre 1. BD et SGBD Bases de Données – Sylvain Brandel – 7

Bases de Données BD : Collection de représentation de la réalité sous forme de données inter-reliées Les précurseurs des BD : les systèmes de fichiers informations communes  redondance non gérée Redondance : volume de données important temps de saisie et de mise à jour  manque de cohérence Cohérence : être juste par rapport à une certaine réalité respect des contraintes d'intégrité Centralisation : BD : entité commune, centrale, à laquelle accèdent tous les utilisateurs Chapitre 1. BD et SGBD Bases de Données – Sylvain Brandel – 8

SGBD SGBD : ensemble de logiciels permettant aux utilisateurs de manipuler efficacement des données dans une grande masse d’information partagée avec d’autres utilisateurs 1ère Génération : fin des 60's modèles hiérarchique et réseau 2ème génération : fin des 70's modèle relationnel 3ème génération : fin des 80's Extensions objet des systèmes relationnels 4ème génération : 90's et actuellement Internet et Web Chapitre 1. BD et SGBD Bases de Données – Sylvain Brandel – 9

Les 12 règles de Codd 1. Toutes les informations sur les données sont représentées au niveau logique et non physique (pas besoin d’informations sur la façon dont sont enregistrées physiquement les données). 2. Les données sont accessibles uniquement par la combinaison du nom de la table, de la clé primaire et du nom de la colonne (pas de chemin à donner). 3. Une valeur spéciale doit représenter l’absence de valeur (NULL). 4. La description de la base de données doit être accessible comme les données ordinaires (un dictionnaire des données est enregistré dans la base). 5. Un langage doit permettre de définir les données, définir des vues (visions particulières de la base, enregistrées comme des relations), manipuler les données, définir des contraintes d’intégrité, des autorisations de gérer des transactions. 6. On peut faire des mises à jour par les vues lorsque c’est logiquement possible. 7. Le langage doit comporter des ordres effectuant l’insertion, la mise à jour et la suppression des données (un seul ordre pour effectuer chacune de ces fonctions) 8. Indépendance des programmes vis-à-vis de l’implantation physique des données. 9. Indépendance des programmes vis-à-vis de l’implantation logique des données (si les informations manipulées par les programmes n’ont pas été modifiées ou supprimées). 10. Les contraintes d’intégrité doivent pouvoir être définies dans le langage relationnel et enregistrées dans le dictionnaire des données. 11. Indépendance vis-à-vis de la répartition des données sur divers sites. 12. On ne peut jamais contourner les contraintes (d’intégrité ou de sécurité) imposées par le langage du SGBD en utilisant un langage de plus bas niveau (par exemple le C). Chapitre 1. BD et SGBD Bases de Données – Sylvain Brandel – 10

Objectifs des SGBD Un SGBD doit permettre d’écrire des applications indépendantes de l’implantation physique des données Plusieurs utilisateurs peuvent accéder simultanément à la BD  Objectif : assurer - la sécurité des données - la confidentialité des données - l’intégrité des données - de bonnes performances Chapitre 1. BD et SGBD Bases de Données – Sylvain Brandel – 11

Sécurité Une perte d'informations peut s'avérer fatale la sécurité est primordiale Sécurité de fonctionnement Après un incident (matériel ou logiciel) : redémarrer le système remettre la BD dans un état cohérent Exemple de transaction : transfert d’une somme d’argent entre deux comptes d’un client d’une banque. Validation : COMMIT Annulation : ROLLBACK Archivage Journalisation Chapitre 1. BD et SGBD Bases de Données – Sylvain Brandel – 12

Sécurité Gestion de la concurrence d'accès Exemple : éditer un même fichier partagé Exemple : Mises à jour perdues. 2 personnes veulent modifier une quantité q en stock Transaction : - lire (q) - modifier (q) (valeur stockée dans un buffer) - écrire (q) (dans la BD)  Mécanisme des verrous : interdire l'accès à une donnée pendant un temps minimal  Risque : deadlock Chapitre 1. BD et SGBD Bases de Données – Sylvain Brandel – 13

Sécurité Lecture inconsistante ou lecture impropre Lecture non répétitive, ou non reproductible, ou incohérente une transaction T2 lit une valeur donnée par une autre transaction T1 ensuite la transaction T1 annule son affection de V  la valeur lue par T2 est fausse   Ne peut pas arriver si les modifications effectuées par une transaction ne sont visibles par les autres qu’après validation de la transaction une transaction lit deux fois une même valeur et ne trouve pas deux fois le même résultat  Blocage des données suffisamment longtemps pour éviter que les autres transactions ne puisse pas les modifier Chapitre 1. BD et SGBD Bases de Données – Sylvain Brandel – 14

Sécurité Lignes fantômes Traitement des accès concurrents par le SGBD une sélection de lignes récupère des lignes qui sont modifiées par une autre transaction et ne vérifient plus le critère de la sélection  Blocage explicite des lignes en question Les SGBD gèrent automatiquement les accès concurrents de plusieurs utilisateurs sur les mêmes lignes des tables  Oracle assure une lecture consistante Chapitre 1. BD et SGBD Bases de Données – Sylvain Brandel – 15

Confidentialité Contrôle de l’accès à la base Contrôle de l’accès aux données Gestion des droits d'accès Gestion des privilèges  Droits sur les objets  Vues Chapitre 1. BD et SGBD Bases de Données – Sylvain Brandel – 16

Intégrité Respect implicite des contraintes d'intégrité : Exemple : BD client / fournisseur / produit - définition de la clé primaire d’une table - clés étrangères dont les valeurs doivent exister dans une autre table - unicité des valeurs d’une rubrique - fourchette pour les valeurs acceptables - …  Les commandes qui ne respectent pas ces contraintes sont automatiquement annulées Chapitre 1. BD et SGBD Bases de Données – Sylvain Brandel – 17

Performances Problème des modèles relationnels : pas de stratégie d'accès aux données Solutions  performances dégradées  index  clusters Chapitre 1. BD et SGBD Bases de Données – Sylvain Brandel – 18

Architecture des SGBD LMD Menu Schéma externe A externe B Schéma conceptuel Langage hôte Schéma interne SGBD BD SE Utilisateur Niveau logique physique Chapitre 1. BD et SGBD Bases de Données – Sylvain Brandel – 19

Les différents schémas Schéma conceptuel Différentes approches : - liaison : schémas externes / schéma conceptuel - schéma externe = dérivation du schéma conceptuel - schéma conceptuel = synthèse des schémas externes - deux utilisateurs peuvent appeler une même variable sous deux noms différents - deux utilisateurs peuvent appeler deux variables différentes sous un même nom  Exemple : BD buveur / vin / cru Chapitre 1. BD et SGBD Bases de Données – Sylvain Brandel – 20

Les différents schémas Schémas externes Schéma interne Il existe autant de visions externes que d'utilisateurs  Mais les visions des différents utilisateurs vont se recouper (informations communes)  Exemple : BD buveur / vin / cru Description de l'implantation physique  Pris en charge par le système d'exploitation Chapitre 1. BD et SGBD Bases de Données – Sylvain Brandel – 21

Les différents utilisateurs Administrateurs : Programmeur : Utilisateur final : - bon fonctionnement - création de la BD - déclaration d'un utilisateur - droits d'accès - modification des schémas externes - modification des chemins d'accès aux données - maintien des performances d’accès aux données - sauvegardes et reprises après pannes - … - développement d'applications - droits sur ses applications - utilisation des applications - accès limité Chapitre 1. BD et SGBD Bases de Données – Sylvain Brandel – 22

Les différents langages LDD LMD définition de : - schéma conceptuel - schémas externes - données - liens - contraintes d'intégrité interrogation et mises à jour de la base de données  instructions interactives : - outils en ligne - interfaces avec des outils de bureautique ou avec le web  instructions insérées dans un langage de programmation : - langage hôte de 3ème génération - langage hôte de 4ème génération  menus  formulaires Chapitre 1. BD et SGBD Bases de Données – Sylvain Brandel – 23

Exemple de fonctionnement d'un SGBD Le programme d'application, accédant à la BD via le schéma externe B, demande la lecture d'une donnée de la base LMD Menu Schéma externe A externe B Schéma conceptuel Langage hôte Schéma interne SGBD BD SE Utilisateur Niveau logique physique Chapitre 1. BD et SGBD Bases de Données – Sylvain Brandel – 24

Résistance aux pannes Sauvegardes Types de pannes Reprise après accident  Réparer les dommages occasionnés par des pannes - logicielles - matérielles - réseau  Attitude différente suivant que les fichiers ont été endommagés ou non Chapitre 1. BD et SGBD Bases de Données – Sylvain Brandel – 25

Exemple d'implantation d'un SGBD : Oracle Architecture globale Instance SGA Database buffer cache Redo log buffer DBWR CKPT LGWR ARCH Parameter file Control files Redo log files Archived log files Password file Data files Database Chapitre 1. BD et SGBD Bases de Données – Sylvain Brandel – 26

Exemple d'implantation d'un SGBD : Oracle Fichiers de la base Images "avant" et "après" Control files Data files Redo log Database Password file Parameter ALERT  Images "avant" : fichiers systèmes, ou emplacement spécial de la base, contenant les informations nécessaires pour remettre la base dans un état antérieur à une modification  Image "après" : fichiers système contenant les informations nécessaires pour refaire une modification à partir d'un état antérieur de la base Chapitre 1. BD et SGBD Bases de Données – Sylvain Brandel – 27

Exemple d'implantation d'un SGBD : Oracle Images "avant" et "après" DML Statement New image Table Old image Rollback segment Chapitre 1. BD et SGBD Bases de Données – Sylvain Brandel – 28

Exemple d'implantation d'un SGBD : Oracle Archivage des images "après"  La place disque réservée aux images "avant" et "après" est limitée : elle est recyclée pour enregistrer les dernières images  Il peut être intéressant d'archiver sur des médias stables les images "après" pour les réutiliser en cas de panne  On peut ainsi dérouler toutes les dernières actions effectuées par les utilisateurs depuis la dernière sauvegarde  Les différents SGBD peuvent avoir des implantations très différentes sur certains points, en particulier sur la façon de traiter les accès concurrents Chapitre 1. BD et SGBD Bases de Données – Sylvain Brandel – 29

Exemple d'implantation d'un SGBD : Oracle Processus clients – serveurs Oracle Server Server process User process User Client Server Chapitre 1. BD et SGBD Bases de Données – Sylvain Brandel – 30

Exemple d'implantation d'un SGBD : Oracle Écriture des données dans la base DBWR Instance SGA Database buffer cache Shared pool Control files Data files Redo log Chapitre 1. BD et SGBD Bases de Données – Sylvain Brandel – 31

Exemple d'implantation d'un SGBD : Oracle Segments de rollback SELECT * FROM table; Table New image Image at statement commencement Chapitre 1. BD et SGBD Bases de Données – Sylvain Brandel – 32

Exemple d'implantation d'un SGBD : Oracle Fichiers redo log Group 1 Group 2 Group 3 member member member Disk 1 Disk 2 member member member Chapitre 1. BD et SGBD Bases de Données – Sylvain Brandel – 33

Chapitre 2 Le Modèle Relationnel Bases de Données – Sylvain Brandel – 34

Relations  Domaine : ensemble de valeurs caractérisées par un nom  définition en "extension" : en donnant la liste des valeurs (ex : couleur-vins = {blanc, rouge, rosé} crus = {chablis, sylvaner} )  définition en "intension" : en donnant une caractéristique (ex : caractères = chaînes de caractères de longueur fixe ou variable )  Produit cartésien d'un ensemble de domaines D1, D2, … Dn : ensemble des vecteurs (d1, d2, … dn) où di est une valeur de Di (1  i  n) blanc chablis blanc sylvaner rouge chablis rouge sylvaner rosé chablis rosé sylvaner ex : couleurs-vins  crus = Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 35

Relations  Relation : sous-ensemble du produit cartésien d'une liste de domaines, caractérisé par un nom blanc chablis blanc sylvaner rouge chablis rosé chablis ex : un sous-ensemble de couleurs-vins  crus = couleurs-crus  Colonne : sous-ensemble des valeurs d'un domaine ex : domaine = ensemble des entiers, une colonne = 1 2 5 12 Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 36

Relations  Attribut : colonne d'une relation caractérisée par un nom (pas forcément le même que le nom de domaine)  signification sémantique d'une colonne ex : attributs de couleurs-crus = couleur et cru  Tuples : ligne d'une relation correspondant à un enregistrement (appelé aussi n-uplet ou ligne) ex : un tuple de couleurs-crus = (blanc, sylvaner)  Schéma de relation : nom de la relation suivi de la liste de ses attributs et de la définition de leurs domaines ex : couleurs-crus (couleur : charvar, cru : charvar) vins (nv : integer, cru : charvar, degré : float) Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 37

Tables  Une BD relationnelle est un ensemble de relations :  relations de l'utilisateur (relations de tables)  relations de catalogues (relations systèmes)  Propriétés d'une relation :  nom unique dans l'ensemble des relations de la base  nombre fixe de colonnes  nombre variable de lignes ex : fournisseur pièce fournit F# Nom Ville F1 F2 F3 F4 F5 Smith Meyer Muller Ryan Martin Londres Strasbourg Paris P# P1 P5 P18 Nom vis écrou 6 pans boulon F# F1 F3 F5 P# P1 P18 P5 Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 38

Colonnes colonne = champ = attribut  unicité du nom de l'attribut dans une relation (mais pas forcément dans la base) ex : fournisseur : F# fournit : F#  L'attribut prend sa valeur dans un domaine ex : ville  { Strasbourg, Paris, Londres, New-York}  L'ordre des attributs n'a pas d'importance ex : fournisseur (F#, Nom, Ville) = fournisseur (Nom, F#, Ville)  Le nombre d'attributs définit le degré de la relation Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 39

Lignes ligne = n-uplet = tuple  Les lignes sont supposées toutes différentes F# Nom Ville F1 F2 F4 F5 Smith Meyer Ryan Martin Londres Strasbourg Paris ex : fournisseur INTERDIT  L'ordre des lignes n'a pas d'importance P# P1 P5 P18 Nom vis écrou 6 pans boulon P# P1 P18 P5 Nom vis boulon écrou 6 pans ex : pièce = pièce  Le nombre de n-uplets définit la cardinalité Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 40

Catalogue  Tables créées et gérées par le système :  catalogue des relations  catalogue des constituants  catalogue des chemins d'accès  catalogue des utilisateurs  catalogue des droits d'accès  etc.  Les utilisateurs y accèdent uniquement en lecture Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 41

Langages d'interrogation  Trois théories mathématiques :  algèbre relationnelle  langage SQL (Oracle, mySQL, …)  calcul relationnel des tuples  langage QUEL (Ingres)  calcul relationnel des domaines  langage QBE (IBM)  L'algèbre relationnelle est de loin la théorie la plus utilisée Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 42

Algèbre relationnelle  Opérations de base :  opérations ensemblistes : - union - différence - produit cartésien  opérations spécifiques : - projection - restriction - jointure  Opérations dérivées : - intersection - division - complément - éclatement - jointure externe - semi-jointure Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 43

Union  Opération binaire appliquée à deux relations de même schéma ex : fournisseur1 (F#, Nom, Ville), fournisseur2 (F#, Nom, Ville) F# Nom Ville F1 F2 F3 Smith Meyer Muller Londres Strasbourg F# Nom Ville F2 F4 Meyer Ryan Strasbourg Londres   Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 44

Différence  Opération binaire appliquée à deux relations de même schéma ex : fournisseur1 (F#, Nom, Ville), fournisseur2 (F#, Nom, Ville) F# Nom Ville F1 F2 F3 Smith Meyer Muller Londres Strasbourg F# Nom Ville F2 F4 Meyer Ryan Strasbourg Londres    Opérateur non commutatif Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 45

Produit cartésien  Opération binaire appliquée à deux relations de schémas quelconques ex : R1(A,B), R2(C,D) R1  R2  R(A,B,C,D) ex : R (A,B), R (A,B)  problème de nom  en SQL on peut renommer les relations le temps de la requête Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 46

Produit cartésien ex : fournisseur1 (F#, Nom, Ville), pièce (P#, Nom) Smith Meyer Muller Londres Strasbourg P# P1 P5 P18 Nom vis écrou 6 pans boulon   Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 47

Projection  Opération unaire : sélection d'une ou plusieurs colonnes d'une relation F# Nom Ville F1 F2 F3 F4 F5 Smith Meyer Muller Ryan Martin Londres Strasbourg Paris ex : fournisseur projVille(fournisseur) projNom, Ville(fournisseur)   Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 48

Restriction (ou sélection)  Opération unaire : sélection d'une ou plusieurs lignes d'une relation  R | E E : <attribut>  <valeur>   {=, , <, , >, } Formule atomique : <attribut>  <attribut> <attribut>  <constante> Les formules atomiques peuvent être reliées par des connectivités - ET - OU - NON Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 49

Restriction (ou sélection) F# Nom Ville F1 F2 F3 F4 F5 Smith Meyer Muller Ryan Martin Londres Strasbourg Paris ex : fournisseur fournisseur | ville = "Londres"  ex : stock(P#, Quantité-stock, Quantité-seuil)  stock | quantité-stock < quantité-seuil Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 50

Jointure  Opération binaire : composition de deux relations à l'aide d'un critère de jointure ex : fournisseur (F#, Nom, Ville), fournit(F#, P#) F# Nom Ville F1 F2 F3 F4 F5 Smith Meyer Muller Ryan Martin Londres Strasbourg Paris F# F1 F3 F2 F5 P# P1 P18 P5 *  Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 51

Jointure  La jointure peut être obtenue par sélection et projection du produit cartésien ex : fournisseur * fournit = projF#, Nom, Ville, P# (fournisseur  fournit | fournit.F# = fournisseur.F#)  Le -produit est défini en remplaçant l'égalité par n'importe quel opérateur de l'ensemble   le -produit est noté inéqui-jointure  (la jointure est alors notée équi-jointure)  Lorsque plusieurs attributs sont communs aux deux relations, la comparaison porte sur tous les attributs communs Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 52

Intersection  Opération binaire appliquée à deux relations de même schéma ex : fournisseur1 (F#, Nom, Ville), fournisseur2 (F#, Nom, Ville) F# Nom Ville F1 F2 F3 Smith Meyer Muller Londres Strasbourg F# Nom Ville F2 F4 Meyer Ryan Strasbourg Londres    Opération redondante : elle peut être obtenue par combinaison d'opérateurs de base R1  R2 = R1  (R1  R2), ou bien R1  R2 = R2  (R2  R1). Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 53

Division  Opération binaire appliquée à deux relations de schémas quelconques D1(A1,… Ap, Ap+1, … An)  D2(Ap+1, … An) = Q(A1, … Ap) dont les tuples sont ceux qui concaténés à tout tuple de D2 donnent un tuple de D1 ex : Nom Ville Muller Meyer Martin Strasbourg Paris P# P1 P5 P18 Ville Strasbourg P# P18 P5   Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 54

Complément  Opération unaire ex : fournit (F#, P#)   fournit F# F1 Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 55

Le langage SQL : interrogation  Structured Query Language  Requête : SELECT ... (attributs sur lesquels on projette) FROM ... (relation, ou produit cartésien) [WHERE ...] (restriction, optionnel) Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 56

Le langage SQL : interrogation  Exemple fournisseur / pièce / fournit fournisseur(F#, Nom, ville) pièce(P#, Nom) fournit(F#, P#) projVille(fournisseur) projNom, Ville(fournisseur) fournisseur | Ville = "Londres" projP#(fournisseur  fournit | fournisseur.F# = fournit.F# et ville = Londres) Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 57

Le langage SQL : interrogation  Exemple joueur / rencontre / gain joueur(nom, prénom, âge, pays) rencontre(nrencontre, gagnant, perdant, lieu-tournoi, date, score) gains(nom-joueur, lieu-tournoi, date, prime, sponsor) 1. Nom et âge des joueurs américains, autres que 'Connors', âgés de plus de 30 ans 2. Les pays des joueurs de 20 ans (sauf France) 3. Nom et âge des joueurs ayant participé à Roland Garros en 99 4. Nom et âge des joueurs ayant participé, en 95, aux tournois de Roland Garros et Wimbledon 5. Nom des joueurs ayant perdu toutes leurs rencontres Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 58

Le langage SQL : création de table CREATE TABLE <nom-de-table> (<colonne> | <contrainte-de-relation>)+ <nom-de-table> : chaîne de caractères simple (ex. etudiant), ou composé (un nom de schéma suivi d'un nom de table, ex. crous.etudiant) <colonne> = <nom-de-colonne> <type-de-données> [<défaut>] [<contrainte-de-colonne>] <type-de-données> : - chaînes de caractères de longueur fixe : CHAR (size), où size est facultatif (omis : taille = 1, max = 255) - chaînes de caractères de longueur variable : - VAR CHAR 2 (size), où size est obligatoire (max = 2000) - LONG, sans préciser de taille (on peut y mettre des valeurs jusqu'à 2 Go), mais avec restrictions : - un seul champ de type LONG par relation - contrainte d'intégrité : uniquement NULL ou NOT NULL pour ce champ (NULL = on ne peut rien y mettre) - index interdits - ne peut pas apparaître dans certaines parties d'une commande SQL (WHERE, GROUP BY, DISTINCT...) - numérique (entier positif, négatif, virgule fixe ou flottante) : NUMBER(p,s), où : - p = précision : nombre total de chiffres (1  p  38), facultatif - s = scale : nombre de chiffres à droite de la virgule (s > 0), facultatif ; si s < 0, alors arrondi à gauche de la virgule - NUMBER(p) : s = 0  entiers - NUMBER : p = 38 et s indéfini nombres à virgule flottante - par compatibilité, on peut utiliser NUMERIC, DECIMAL, INTEGER, INT, SMALLINT, FLOAT, REAL, DOUBLE PRECISION - dates : DATE, toutes les dates valides comprises entre le 1er janvier 4712 av. JC et le 31 décembre 4712 ap. JC. Format : centenaire + année + mois + jour + heure + min + sec Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 59

Le langage SQL : création de table <défaut> : DEFAULT val, où val est la valeur que l'on donne à l'attribut lorsque l'utilisateur n'en fournit pas Restriction : - cohérence de type - ne peut pas contenir de référence à une autre colonne - ne peut pas contenir de date non complètement spécifiée <contrainte-de-colonne> : permet de spécifier différentes CI portant sur un seul attribut, y compris les contraintes référentielles : - valeur null impossible : NOT NULL - unicité de l'attribut : UNIQUE ou PRIMARY KEY - contrainte référentielle : REFERENCES <table-référencée> [<colonne-référencée>] (le second argument est optionnel s'il est identique à la colonne référençante) - contrainte générale : CHECK <condition>, la condition pouvant être exprimée avec : - <Attribut>  <Valeur>,   {=, <>, <, <=, >,>=} - prédicat d'intervalle : BETWEEN AND - prédicat de comparaison de texte : LIKE - test de nullité : NULL - test d'appartenance : IN <contrainte-de-relation> : peuvent porter sur plusieurs attributs : - contrainte d'unicité : UNIQUE (<attribut>)+ - contrainte référentielle : [FOREIGN KEY (<colonne-référençante>)+] REFERENCES <table-référencée> [(<colonne-référencée>)+] - contrainte générale : CHECK <condition> Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 60

Le langage SQL : création de table Exemples : CREATE TABLE prix (age NUMBER (2) PRIMARY KEY, tarif CHAR (2) DEFAULT 'T1', CHECK (age > 25) ) ; CREATE TABLE etudiant (net NUMBER (2), nom VAR CHAR 2 (30), age NUMBER (2) [ REFERENCES prix [ (age) ] ], adresse VAR CHAR 2 (60), PRIMARY KEY (net), [ FOREIGN KEY (age) REFERENCES prix [ (age) ] ] ) ; Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 61

Le langage SQL : insertion de données INSERT INTO <nom-de-table> [ ( <nom-de-colonne> )+ ] { VALUES ( <constantes> )+ | <commande-de-recherche> } Exemples : INSERT INTO etudiant (net, nom, age, adresse) VALUES (1, Meyer, 28, Strasbourg) ; INSERT INTO prix VALUES SELECT DISTINCT age FROM etudiant WHERE... ; Remarque : si toutes les colonnes ne sont pas précisées, les manquantes sont remplies avec NULL Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 62

Le langage SQL : suppression de données DELETE FROM <nom-de-table> [ WHERE { <condition-de-recherche> | CURRENT OF <nom-de-curseur> } ] Exemples : DELETE FROM etudiant WHERE nom LIKE Meyer OR age > 36 ; DELETE FROM prix ; Remarque : le second exemple élimine toute la table Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 63

Le langage SQL : mises à jour UPDATE <nom-de-table> SET { <nom-de-colonne> = { <expression-de-valeur> | NULL } }+ WHERE { <condition-de-recherche> | CURRENT OF <nom-de-curseur> } Exemples : UPDATE prix SET tarif = 'T12' WHERE age = 30 ; UPDATE etudiant SET age = age + 1 WHERE nom = Meyer ; Remarque : seuls les n-uplets vérifiant la condition (optionnelle) sont mis à jour Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 64

Dépendances fonctionnelles  Contraintes d'intégrités très fortes Soit R une relation dont les attributs sont U = {u1, u2, ..., un} et X  U, Y  U Y dépend fonctionnellement de X, ou X détermine Y, si :  u  R,  v  R, projX (R | u) = projX (R | v)  projY (R | u) = projY (R | v) Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 65

Dépendances fonctionnelles : exemples  n-ch 1 2 3 4 5 6 type A B C nb-lits douche oui non  DF ?  < Nom, Prénom, Ville, CP, Département >  DF ?  < Nom, Prénom, Moyenne, Âge, Enseignant >  DF ? Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 66

Règles d'inférence  Réflexivité  Augmentation  Transitivité  Union  Pseudo-transitivité  Décomposition Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 67

Ajout / Suppression d'attributs Supposons G1, G2  D1, D2 VRAIE - Ajout d'attributs à gauche : - Ajout d'attributs à droite : - Suppressions d'attributs à gauche : - Suppression d'attributs à droite : Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 68

Choix des DF à retenir  Ne pas trop simplifier par transitivité X  Y Y  Z X  Z  il vaut mieux garder les deux premières  Autre simplification G1  X G1, G2  X  il vaut mieux garder la première Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 69

Fermeture  Ensemble des DF obtenues à partir de toutes les décompositions possibles des DF de F F1 + DF (obtenue par application d'une règle)  F2 F2 + DF (obtenue par application d'une règle)  F3 … Fn + DF (obtenue par application d'une règle)  Fn+1 Lorsqu'il n'est plus possible de trouver de nouvelle DF  F+ = Fn Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 70

Couverture  Ensemble minimal de DF suffisant à retrouver F Méthode : on enlève une DF et on essaye de la retrouver à partir des DF restantes Exemple : F = { Q  S T  R R, S  P T, Q  P P, R  S } Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 71

DF élémentaires, clés  Y pleinement dépendant de X s'il n'existe pas de sous-ensemble strict X' de X tel que X'  X  Une clé est un ensemble minimal d'attributs qui détermine tous les autres Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 72

Passage DF – schéma relationnel nom de l'attribut type descriptif nom chaîne nom de l'hôtel (unique dans une région donnée) catégorie entier nombre d'étoiles de l'hôtel nb-chambres entier nombre total de chambres pour un hôtel donné num-chambre entier numéro de chambre type entier type de chambre prix réel prix d'une chambre nbre-lits entier nombre de lits douche booléen vrai si la chambre comporte une douche privée baignoire booléen vrai si la chambre comporte une baignoire privée WC booléen vrai si la chambre comporte des WC privés lib-div chaîne libellé des divertissements proposés par l'hôtel gratuit booléen indique si un divertissement proposé par un hôtel est gratuit ou payant saison {'H','B'} H : haute saison, B : basse saison Le type de chambre détermine les commodités offertes : nombre de lits, présence de douche, de baignoire, de WC indépendants. Le prix d'une chambre dépend du type de la chambre. Ainsi, dans un hôtel donné, toutes les chambres de même type auront le même prix. Cette hypothèse n'est pas vraie pour deux hôtels différents. Le prix d'une chambre dépend également de la saison : haute ou basse Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 73

Passage DF – schéma relationnel 1. Les dépendances fonctionnelles suivantes sont-elles correctes ? nom  catégorie, nb-chambres num-chambre  type type  prix type  nbre-lits type, prix  douche, baignoire, WC nom, catégorie  nb-chambres nom, num-chambre type, douche, baignoire, WC nom, gratuit  lib-div catégorie, lib-div  gratuit nom, saison, type  nbre-lits 2. Déterminer la fermeture 3. Déterminer la couverture 4. Transformation en modèle relationnel Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 74

Normalisation  Exemple : base étudiants DF :  clé ? net : numéro d'étudiant nom âge adresse tarif : tarif CROUS  {T1, T2, T3} selon l'âge de l'étudiant matière enseignant : enseignant responsable de la matière moyenne : moyenne dans une matière donnée ETUDIANT < net, nom, âge, adresse, tarif, matière, enseignant, moyenne> DF : net  nom, âge, adresse matière  enseignant net, matière  moyenne âge  tarif  clé ?  vérifier qu'aucun attribut ne manque Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 75

Pourquoi normaliser Redondance et anomalies :  Insertion, suppression net nom âge adresse tarif matière enseignant moyenne 12 40 Meyer Muller 25 18 Strasbourg Brumath T1 T2 UV1 UV2 UV3 Brandel Tellier Agnus NULL 10 14  Insertion, suppression  Redondance  Mise à jour  Effet de bord Pour y remédier  formes normales Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 76

1ère Forme normale (1FN)  Exemple :  INTERDIT Soit mise à plat : net adresse numéro rue ville CP nom  INTERDIT Soit mise à plat : net numéro rue ville CP nom Soit nouvelle relation : net adresse rue ville CP nom 1 2 id-adr et Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 77

1ère Forme normale (1FN) Si on a un ensemble (tous les éléments distincts), on duplique : net matière note 1 UV1 {12, 11, 16} 12 11 16  Si on a une liste (différent d'un ensemble car l'ordre a une importance et on peut avoir plusieurs fois la même valeur), il faut rajouter un attribut : net note 1 UV1 {12, 11, 12} matière 12 11 ordre 2 3  Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 78

1ère Forme normale (1FN)  Exemple : base étudiants En 1FN ? ETUDIANT < net, nom, âge, adresse, tarif, matière, enseignant, moyenne> En 1FN ?  Remarque : l'atomicité d'un domaine dépend du niveau de décomposition Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 79

2ème Forme normale (2FN)  Une relation est en 2FN si : - elle est en 1FN - aucun attribut n'est dépendant d'une partie seulement de la clé  Exemple typique de relation NON en 2FN : X Y Z W R : parce que Y  W  on décompose en : R1 <Y, W> R2 <X, Y, Z> Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 80

2ème Forme normale (2FN)  Exemple : base étudiants En 1FN ? OUI ETUDIANT < net, nom, âge, adresse, tarif, matière, enseignant, moyenne> En 1FN ? OUI La clé est le couple net, matière net, matière  nom pleine ? net, matière  âge pleine ? net, matière  adresse pleine ? net, matière  tarif pleine ? net, matière  enseignant pleine ? net, matière  moyenne pleine ? En 2FN ? NON Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 81

2ème Forme normale (2FN)  on découpe d'après les DF : net matière nom âge adresse tarif enseignant moyenne  on découpe d'après les DF : net  nom, âge, adresse, tarif matière  enseignant net, matière  moyenne  ETUDIANT<net, nom, âge, adresse, tarif> ENSEIGNEMENT<matière, enseignant> NOTE<net, matière, moyenne> En 2FN ? OUI Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 82

2ème Forme normale (2FN)  Remarque : si on supprime une moyenne, on ne perd plus d'étudiant  Par contre, il faut fixer une Contrainte d'Intégrité référentielle (CI réf) exprimant que si on supprime un étudiant, il faut que la moyenne disparaisse aussi : CI réf : projnet (NOTE)  projnet (ETUDIANT) projmatière (NOTE)  projmatière (ENSEIGNEMENT) Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 83

3ème Forme normale (3FN)  Une relation est en 3FN si : - elle est en 2FN - tous les attributs n'appartenant pas à une clé sont directement dépendants d'une clé  Exemple typique de relation NON en 3FN : X Y Z W R : parce que Y  W  on décompose en : R1 <Y, W> R2 <X, Y, Z> Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 84

3ème Forme normale (3FN)  Exemple : base étudiants En 2FN ? OUI ETUDIANT<net, nom, âge, adresse, tarif> ENSEIGNEMENT<matière, enseignant> NOTE<net, matière, moyenne> En 2FN ? OUI ETUDIANT<net, nom, âge, adresse, tarif> en 3FN ? NON parce que net  âge  tarif  on découpe en ETUDIANT <net, nom, âge, adresse> PRIX <âge, tarif> ENSEIGNEMENT<matière, enseignant> en 3FN ? OUI NOTE<net, matière, moyenne> en 3FN ? OUI Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 85

3ème Forme normale (3FN)  Le schéma devient alors : En 3FN ? OUI ETUDIANT <net, nom, âge, adresse> PRIX <âge, tarif> ENSEIGNEMENT <matière, enseignant> NOTE <net, matière, moyenne> En 3FN ? OUI  CI réf à ajouter pour éviter des redondances en cas de suppression dans la relation ETUDIANT : CI réf : projâge (PRIX)  projâge (ETUDIANT) Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 86

Forme normale de Boyce-Codd (FNBC)  Une relation est en FNBC s'il n'y a pas d'autres DF que K  A, où - K est la clé - A est un attribut non clé  Exemple typique de relation NON en FNBC : X Y Z W R : parce que W  Y  on décompose en : R1 <W, Y> R2 <X, Y, Z> Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 87

Forme normale de Boyce-Codd (FNBC)  Exemple : base étudiants ETUDIANT <net, nom, âge, adresse> PRIX <âge, tarif> ENSEIGNEMENT <matière, enseignant> NOTE <net, matière, moyenne> En FNBC ? OUI  Exemple : base vins LOCALISATION <cru, pays, région, qualité> DF : cru, pays  région cru, pays  qualité région  pays Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 88

Forme normale de Boyce-Codd (FNBC) En 2FN ? OUI parce que le cru ne détermine pas la région En FNBC ? cru pays région qualité NON parce que région  pays  on décompose : CRUS <cru, pays, qualité> REGION <région, pays> DF : cru, pays  qualité région  pays La décomposition est sans perte malgré la perte d'une DF Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 89

4ème Forme normale (4FN)  Exemple clé : net, cours, sport 1 2 BD Algo escalade tennis VTT clé : net, cours, sport  Redondances, mais pas de DF permettant de les supprimer  4FN : COURS <net, cours> SPORT <net, sport> Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 90

5ème Forme normale (5FN)  Exemple clé : buveur, cru, producteur Meyer Brandel cru Edel Gewurtz producteur Claude André clé : buveur, cru, producteur  Redondances, mais pas de DF ni de DM permettant de les supprimer  5FN : buveur Meyer Brandel cru Edel Gewurtz producteur Claude André Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 91

Exemples de décomposition R <A, B, C> Quelle est la décomposition en 3FN dans les trois cas : 1. F = {A  B, B  C } 2. F = {A  B, C} 3. F = { } Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 92

Exemples de décomposition GITES < nom, nb-chambres, num-chambre, type, prix, nbre-lits, douche, baignoire, WC, lib-div, gratuit, saison, catégorie> F0 = { nom  catégorie, nbre-chambres nom, num-chambre  type type  nb-lits, douche, baignoire, WC nom, lib-div  gratuit nom, type, saison  prix } Quelle est la décomposition en 3FN ? Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 93

Insertion – suppression  Emploi de n-uplets, sans précision sur son mode d'obtention (entrée au clavier + vérification)  Couple pré-condition – post-condition : - pré-condition : doit être vérifiée pour avoir le droit d'exécuter l'opération - post-condition : le résultat de l'opération doit la vérifier  L'ordre d'insertion / suppression dans les relations est important  Vérifier qu'il n'y a pas de situation d'interblocage : par exemple insérer avant un net peut permettre d'insérer autre chose Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 94

Insertion – suppression  Exemple : base étudiant Attributs : net, nom, âge, adresse, tarif, matière, enseignant, moyenne ETUDIANT <net, nom, âge, adresse> PRIX <âge, tarif> ENSEIGNEMENT <matière, enseignant> NOTE <net, matière, moyenne> DF = { net  nom, âge, adresse matière  enseignant net, matière  moyenne âge  tarif } CI réf : projnet (NOTE)  projnet (ETUDIANT) projmatière (NOTE)  projmatière (ENSEIGNEMENT) projâge (PRIX)  projâge (ETUDIANT) Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 95

Insertion – suppression  Insertion dans PRIX On cherche à insérer un n-uplet n dans PRIX - pré-condition : n.âge  projâge (PRIX) - post-condition : PRIX = PRIX  {n}  Suppression dans PRIX On cherche à supprimer un n-uplet n de PRIX - pré-condition : n.âge  projâge (ETUDIANT) - post-condition : PRIX = PRIX - {n} Suppression en cascade : - pré-condition : VRAI - post-condition : - PRIX = PRIX - {n} - ETUDIANT = ETUDIANT – (ETUDIANT | âge = n.âge) - NOTE = NOTE – (NOTE | net  projnet (ETUDIANT | âge = n.âge)) Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 96

Insertion – suppression  Insertion d'un n-uplet n dans ETUDIANT : - pré-condition : - n.net  projnet (ETUDIANT) - n.âge  projâge (PRIX) - post-condition : ETUDIANT = ETUDIANT  {n}  Suppression dans ETUDIANT : - pré-condition : n.net  projnet (NOTE) - post-condition : ETUDIANT = ETUDIANT – {n} Suppression en cascade : - pré-condition : VRAI - post-condition : - ETUDIANT = ETUDIANT – {n} - NOTE = NOTE - (NOTE | net = n.net) Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 97

Insertion – suppression  Insertion d'un n-uplet n dans NOTE : - pré-condition : - (n.net, n.matière)  projnet, matière (NOTE) (différent de (n.net  projnet (NOTE) et n.matière)  projmatière (NOTE)) - n.net  projnet (ETUDIANT) - n.matière  projmatière (ENSEIGNEMENT) - post-condition : NOTE = NOTE  {n}  Suppression dans NOTE : - pré-condition : VRAI (ne vient pas de suppression en cascade mais de l'absence de conditions) - post-condition : NOTE = NOTE - {n} Chapitre 2. Le Modèle Relationnel Bases de Données – Sylvain Brandel – 98

Chapitre 3 Le Modèle Entités / Associations Bases de Données – Sylvain Brandel – 99

Entité  Entité = individu dans MERISE  Entité = objet concret ou abstrait qui peut être distinctement identifié dans l'esprit du concepteur et qui présente un intérêt particulier Exemple : M. Meyer, département de vente d'une entreprise...  M. Meyer est UNE entité  classe (ou type) d'entité : une classe regroupe toutes les entités de même nature Exemple : M. Meyer  classe Personne (M. Meyer est une occurrence de la classe Personne) Exemple : M. Meyer possède une 205 Chapitre 3. Le Modèle Entités / Associations Bases de Données – Sylvain Brandel – 100

Association  Association = relation dans MERISE  Association = relation entre une ou plusieurs entités  Classe (ou type) d'association = ensemble des associations ayant même sémantique, définies sur un même type d'entités  Un type d'association ne peut pas être directement relié avec un autre type d'association :  INTERDIT (sauf extension agrégation) Chapitre 3. Le Modèle Entités / Associations Bases de Données – Sylvain Brandel – 101

Association  Un type d'entité de peut être relié à un autre type d'entité que par un lien d'association :  INTERDIT  Il n'y a pas de restriction sur le nombre de types d'associations entre types d'entités :  Chapitre 3. Le Modèle Entités / Associations Bases de Données – Sylvain Brandel – 102

Cardinalité et fonctionnalité  Cardinalité min et max reportées sur la graphique : a,b c,d Personne Possède Voiture a = nombre min d'occurrences de B liées à l'occurrence de A par A - B ( {0,1}) b = nombre max d'occurrences de B liées à l'occurrence de A par A - B ( {1,n}) c = nombre min d'occurrences de A liées à l'occurrence de B par A - B ( {0,1}) d = nombre max d'occurrences de A liées à l'occurrence de B par A - B ( {1,n}) Remarque : selon les auteurs, les couples (a,b) et (c,d) peuvent être représentés sur une liaison ou sur l'autre Chapitre 3. Le Modèle Entités / Associations Bases de Données – Sylvain Brandel – 103

Cardinalité et fonctionnalité  cardinalité : couple (a,b) ou (c,d). 4 alternatives pour les deux couples (a,b) et (c,d) : 0,1 - 0,n - 1,1 - 1,n Pas d'autre choix possible.  fonctionnalité : couple (b,d). 3 alternatives : 1  1 - 1  n - n  m  Dimension (ou ordre ou degré) du type d'association = nombre de types d'entités distinctes qui interviennent dans le type d'association. relation unaire (dimension = 1) : mari Personne marié à Personne Personne marié à femme Chapitre 3. Le Modèle Entités / Associations Bases de Données – Sylvain Brandel – 104

Cardinalité et fonctionnalité relation binaire (dimension = 2) : relation ternaire (dimension = 3) : …relation n-aire (dimension = n) : Chapitre 3. Le Modèle Entités / Associations Bases de Données – Sylvain Brandel – 105

Cardinalité et fonctionnalité  Problèmes quand il y a plus de deux types d'entités :  Les cardinalités peuvent varier selon les questions que l'on se pose : Chapitre 3. Le Modèle Entités / Associations Bases de Données – Sylvain Brandel – 106

Attribut  Attribut = propriété dans MERISE  Attribut = propriété d'un type d'entité ou d'association Personne Personne id nom âge adresse - id - nom - âge - adresse Autre notation :  Attribut : - valeurs simples, pas de structure, pas d'ensemble - valeurs facultatives ou obligatoires  Attribut : - soit des identifiants : clés, soulignés dans la représentation graphique - soit des descripteurs : tous les autres Chapitre 3. Le Modèle Entités / Associations Bases de Données – Sylvain Brandel – 107

Attribut  Attributs du type d'association : clés de chacun des types d'entités de l'association + des attributs propres à l'association Fournisseur Produit 0,n 0,n Id-fourn Nom Ligne catalogue Id-produit Désignation Prix  Clé de l'association : a priori, elle est constituée de toutes les clés de l'ensemble des clés des entités qui interviennent dans l'association Exemple : la clé de ligne catalogue est (Id-fourn, Id-produit) En pratique, ce n'est pas toujours le cas : Produit 0,1 Le prix ne dépend que du numéro de produit Chapitre 3. Le Modèle Entités / Associations Bases de Données – Sylvain Brandel – 108

Attribut Elève Matière 0,n 0,n Id-élève Nom … Inscrit Id-matière Libellé … Note inscrit < Id-élève, Id-matière, note > n'autorise pas d'avoir plusieurs notes pour un étudiant donné dans une matière donnée  analyser la cause de la répétitivité et introduire un type d'entités pour la traduire inscrit < Id-élève, Id-matière, Date, note >, on peut à présent avoir plusieurs notes par élève (une par date). Chapitre 3. Le Modèle Entités / Associations Bases de Données – Sylvain Brandel – 109

Attribut Il existe des exemples où cela ne fonctionne pas : Séjour prison Bandit Prison 0,n Date début Date fin 0,n Id-bandit Nom … Id-prison … début 1,n Date Date Chapitre 3. Le Modèle Entités / Associations Bases de Données – Sylvain Brandel – 110

Normalisation  L'attribut est affecté au type d'entités ou d'associations qu'il décrit le plus directement : Personne Possède Voiture Date de naissance Date d'achat Date de 1ère imat Les trois dates sont très différentes  Choix entité / attribut : Employé Employé Bureau 0,1 0,n Id-emp Nom No_bureau Surface Id-emp Nom … Occupe Id-bureau Surface OU Surface Si plusieurs employés par bureau Si un seul employé par bureau Le choix dépend de l'importance du bureau Chapitre 3. Le Modèle Entités / Associations Bases de Données – Sylvain Brandel – 111

Normalisation  Un type d'entité qui ne comporte qu'un identifiant peut être traité comme un attribut, à condition qu'il n'intervienne pas dans un nouveau type d'association et qu'il ne génère pas d'attribut à valeur multiple :  Il faut toujours vérifier si les associations de degré supérieur à deux ne peuvent pas être rapportées à plusieurs associations de degré inférieur  Un type d'association peut être éliminé s'il est la composition de deux types d'associations qui, par des cardinalités (0,1) ou (1,1), expriment la même réalité 1,n 1,1 1,n 1,1 Station ski Situation Hôtel Affectation Chambre 1,n 1,1 Lieu INTERDIT Chapitre 3. Le Modèle Entités / Associations Bases de Données – Sylvain Brandel – 112

Modèle E/A  modèle relationnel  Exemple voitures Personne Voiture 0,n 0,1 Id-pers Nom Possède Immatriculation Type Date d'achat Chapitre 3. Le Modèle Entités / Associations Bases de Données – Sylvain Brandel – 113

Modèle E/A  modèle relationnel  Exemple étudiants ETUDIANT <net, nom, âge, adresse> PRIX <âge, tarif> ENSEIGNEMENT <matière, enseignant> NOTE <net, matière, moyenne>  Solution 1 : Chapitre 3. Le Modèle Entités / Associations Bases de Données – Sylvain Brandel – 114

Modèle E/A  modèle relationnel ETUDIANT <net, nom, âge, adresse> PRIX <âge, tarif> ENSEIGNEMENT <matière, enseignant> NOTE <net, matière, moyenne>  Solution 2 : Chapitre 3. Le Modèle Entités / Associations Bases de Données – Sylvain Brandel – 115

Modèle E/A  modèle relationnel  Exemple employés SERVICE <nS, nomS> EMPLOYE <nE, nomE, nS> PROJET <nP, nomP, coût> PARTICIPE <nE, nP, nomR> Chapitre 3. Le Modèle Entités / Associations Bases de Données – Sylvain Brandel – 116

Généralisation / spécialisation  Généralisation : regrouper les différents types d'entité en faisant abstraction de leurs différences  Spécialisation : mise en évidence des particularités des sous-types Personne id nom Homme service militaire Femme nom jeune fille Chapitre 3. Le Modèle Entités / Associations Bases de Données – Sylvain Brandel – 117

Généralisation / spécialisation  Il peut y avoir N niveaux d'abstraction : Véhicule Terrestre Diesel Aérien Essence Atmosphérique Compressé Carburation Injection Chapitre 3. Le Modèle Entités / Associations Bases de Données – Sylvain Brandel – 118

Généralisation / spécialisation  Sur N critères : Personne Homme Femme Majeur Mineur  Association à tous les niveaux : Employé Programmeur Chef de projet Secrétaire Travaille Dirige Dispose Voiture Berline Monospace Chapitre 3. Le Modèle Entités / Associations Bases de Données – Sylvain Brandel – 119

Modèle étendu : MERISE 2  Intégration d'informations supplémentaires dans le modèle E/A : - partition (+) : disjonction + couverture (l'un ou l'autre) - totalité (T) :  disjonction + couverture (l'un ou l'autre ou les deux, mais pas autre chose) - exclusion () : disjonction +  couverture (l'un ou l'autre ou autre chose, mais pas les deux)  Fait appel aux notions de : - couverture : ensemble recouvrant tous les éléments - Disjonction : pas d'éléments commun à deux sous-ensembles Représentation graphique : Partition : + Totalité : T Exclusion :  Chapitre 3. Le Modèle Entités / Associations Bases de Données – Sylvain Brandel – 120

Modèle étendu : MERISE 2 Partition : Totalité : Exclusion : Voiture Homme Voiture Diesel Essence Diesel Turbo Personne Femme (GPL) Chapitre 3. Le Modèle Entités / Associations Bases de Données – Sylvain Brandel – 121

Modèle étendu : MERISE 2  Exemple Personne Id-pers Nom + Chanteur Musicien Voix Instrument Chapitre 3. Le Modèle Entités / Associations Bases de Données – Sylvain Brandel – 122

Modèle étendu : MERISE 2 Expression des contraintes d'intégrité référentielles :  une relation personne <Id-pers, nom, voix, instrument > partition : voix  NULL XOR instrument  NULL totalité : voix  NULL OR instrument  NULL exclusion : voix = NULL OU instrument = NULL autre possibilité : personne < id-pers, nom, type, voix, instrument > partition : type  {C,M} type = C ET voix  NULL ET instrument = NULL type = M ET voix = NULL ET instrument  NULL totalité : type  {C,M,D} exclusion : type  {C,M,NULL} Chapitre 3. Le Modèle Entités / Associations Bases de Données – Sylvain Brandel – 123

Modèle étendu : MERISE 2  trois relations autre possibilité : personne < id-pers, nom > chanteur < id-pers, voix > musicien < id-pers, instrument >  trois relations C1 : projid-pers (chanteur)  projid-pers (personne) C2 : projid-pers (musicien)  projid-pers (personne) C3 : projid-pers (musicien)  projid-pers (chanteur) =  C4 : projid-pers (musicien)  projid-pers (chanteur) = projid-pers (personne) partition : C3 (C1 et C2 non nécessaires) totalité : C4 (C1 et C2 non nécessaires) exclusion : C1 ET C2 ET C3 autre possibilité : personne < id-pers, nom, type > chanteur < id-pers, voix > musicien < id-pers, instrument > partition : type  {C,M} projid-pers (chanteur)  projid-pers (personne | type = C) projid-pers (musicien)  projid-pers (personne | type = M) totalité : type  {C,M,D} exclusion : type  {C,M,NULL} projid-pers (chanteur) $  projid-pers (personne | type  {C,D}) projid-pers (musicien)  projid-pers (personne | type  {M,D}) Chapitre 3. Le Modèle Entités / Associations Bases de Données – Sylvain Brandel – 124

Chapitre 4 Utilisation d'un SGBD : mySQL Apache PHP PHPmyAdmin Bases de Données – Sylvain Brandel – 125

Présentation Générateur de pages web dynamiques PHP Générateur de pages web dynamiques ("remplace" javascript)  très couramment utilisé  simple (syntaxe proche du C) mySQL SGBD  robuste  pauvre en fonctionnalités  gratuit  robuste  multi plate-formes Apache PHPmyAdmin Serveur HTTP  robuste  très couramment utilisé Interface PHP pour utiliser et administrer mySQL  très intuitif  puissant Chapitre 4. Exemple de SGBD Bases de Données – Sylvain Brandel – 126

EasyPHP  Le plus simple à installer  EasyPHP 1.6 (16/04/02) : - apache 1.3.24 - php 4.2.0 - mysql 3.23.49 - phpmyadmin 2.2.6 les versions les plus récentes du moment  http://www.easyphp.org  Distribution Windows, testée pour : - Win9x / Me - NT / 2K (à voir pour XP)  Télécharger le fichier : easyphp1-6_setup.exe (10,3 Mo)  Installer avec toutes les options par défaut  Par défaut, tout est installé dans c:\Program Files\EasyPHP\ Chapitre 4. Exemple de SGBD Bases de Données – Sylvain Brandel – 127

Protection de mySQL  Impératif de protéger l'accès à mySQL  Protection des répertoires fournie par Apache  Créer un fichier .htaccess avec un éditeur : AuthName "Acces BD" AuthType Basic AuthUserFile "c:\Program Files\EasyPHP\phpmyadmin\.passwd" AuthGroupFile None require valid-user  Créer un fichier .passwd avec l'utilitaire Apache htpasswd (dans une fenêtre invite de commande) : c:\>cd Program Files\EasyPHP\apache\bin c:\Program Files\EasyPHP\apache\bin>htpasswd –c .passwd brandel Automatically using MD5 format on Windows. New password: ******** Re-type new password: ******** Adding password for user brandel  Placer les fichiers .htaccess et .passwd dans c:\Program Files\EasyPHP\phpmyadmin Chapitre 4. Exemple de SGBD Bases de Données – Sylvain Brandel – 128

Utilisation de Apache / PHP  Le point d'entrée du site WEB est dans : c:\Program Files\EasyPHP\www  Ce répertoire contient un fichier index.php exécuté lorsqu'on tape http://localhost dans la zone URL d'un navigateur (IE par ex.)  Créer un fichier saluer.php : <html> <head> <title> un titre un vrai ! </title> </head> <body> <?php if ($prénom != "") { print("<h2>Bonjour, $prénom !</h2>"); exit; } ?> <FORM ACTION="http://localhost/saluer.php", METHOD="POST"> Votre prénom ? <INPUT TYPE="text" NAME="prénom" VALUE=""> <INPUT TYPE="submit" VALUE="Cliquez ici"> </FORM> </body> </html>  Placer ce fichier dans c:\Program Files\EasyPHP\www  Exécution par l'URL http://localhost/saluer.php Chapitre 4. Exemple de SGBD Bases de Données – Sylvain Brandel – 129

Utilisation de mySQL  (au moins) 3 méthodes : - PHPmyAdmin - mysql  Accessible avec un navigateur : - soit directement à l'URL http://localhost/mysql/ - soit interactivement depuis http://localhost (si le fichier index.php original a été remis dans c:\Program Files\EasyPHP\www)  Possibilités : - créer des bases, des objets, des utilisateurs… - manipuler des données - exporter des requêtes - … Chapitre 4. Exemple de SGBD Bases de Données – Sylvain Brandel – 130

Utilisation de mySQL mysql  Interpréteur SQL en ligne (genre sqlplus) dans une fenêtre invite de commande  L'utilitaire mysql se trouve dans c:\Program Files\EasyPHP\mysql\bin  Pour accéder aux objets d'une base : mysql> connect mysql mysql> describe columns_priv; nom d'une base (mysql = base "système") nom d'une table Chapitre 4. Exemple de SGBD Bases de Données – Sylvain Brandel – 131

Utilisation de mySQL PHP  Langage de programmation servant à générer des pages HTML dynamiques (interfacées avec mySQL) ou statiques  Exemple 1 : <html> <head> <title> Test de mySQL </title> </head> <body> <?php $link = @mysql_pconnect("localhost","","") or exit(); mysql_select_db("disques") or exit(); $result = mysql_query("SELECT count(*) FROM disques") or exit(); if ($row = mysql_fetch_array($result)) echo "<p> il y a ".$row[0]." ligne(s) dans la table disques"; mysql_free_result($result); ?> </body> </html> Chapitre 4. Exemple de SGBD Bases de Données – Sylvain Brandel – 132

Utilisation de mySQL PHP  Exemple 2 : <html> <head> <title> Test de mySQL </title> </head> <body> <?php $link = @mysql_pconnect("localhost","","") or exit(); mysql_select_db("disques") or exit(); $result = mysql_query("SELECT * FROM disques",$link); if ($result) { echo "<p>Contenu de la table disques :<br>"; while ($row = mysql_fetch_object($result)) echo "titre: $row->titre, artiste: $row->artiste, date: $row->date<br>\n"; } else { echo "<b>erreur dans l'exécution de la requête</b><br>"; echo "<b>message d'erreur de mysql :</b> ".mysql_error($link); ?> </body> </html> Chapitre 4. Exemple de SGBD Bases de Données – Sylvain Brandel – 133