La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Présentations similaires


Présentation au sujet: "Université Louis-Pasteur de Strasbourg Département d'informatique"— Transcription de la présentation:

1 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 ILLKIRCH bureau C 126 tél : Bases de Données – Sylvain Brandel – 1

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

3 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

4 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

5 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

6 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

7 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

8 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

9 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

10 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

11 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

12 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

13 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

14 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

15 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

16 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

17 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

18 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

19 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

20 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

21 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

22 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

23 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

24 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

25 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

26 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

27 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

28 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

29 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

30 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

31 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

32 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

33 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

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

35 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

36 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

37 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

38 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

39 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

40 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

41 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

42 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

43 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

44 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

45 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

46 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

47 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

48 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

49 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

50 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

51 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

52 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

53 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

54 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

55 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

56 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

57 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

58 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

59 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

60 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

61 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

62 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

63 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

64 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

65 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

66 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

67 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

68 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

69 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

70 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

71 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

72 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

73 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

74 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

75 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

76 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

77 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

78 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

79 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

80 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

81 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

82 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

83 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

84 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

85 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

86 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

87 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

88 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

89 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

90 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

91 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

92 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

93 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

94 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

95 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

96 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

97 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

98 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

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

100 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

101 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

102 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

103 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

104 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   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

105 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

106 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

107 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

108 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

109 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

110 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

111 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

112 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

113 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

114 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

115 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

116 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

117 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

118 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

119 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

120 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

121 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

122 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

123 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

124 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

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

126 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

127 EasyPHP  Le plus simple à installer  EasyPHP 1.6 (16/04/02) :
- apache - php 4.2.0 - mysql - phpmyadmin 2.2.6 les versions les plus récentes du moment  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

128 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

129 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 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=" 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 Chapitre 4. Exemple de SGBD Bases de Données – Sylvain Brandel – 129

130 Utilisation de mySQL  (au moins) 3 méthodes : - PHPmyAdmin - mysql
 Accessible avec un navigateur : - soit directement à l'URL - soit interactivement depuis (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

131 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

132 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 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

133 Utilisation de mySQL PHP  Exemple 2 : <html> <head>
<title> Test de mySQL </title> </head> <body> <?php $link 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


Télécharger ppt "Université Louis-Pasteur de Strasbourg Département d'informatique"

Présentations similaires


Annonces Google