Bases de données - Bienvenue au portail GI de l'ESTOesto.gi.free.fr/access/merise.pdf · Le...

106
INFORMATIQUE DE GESTION Bases de données Systèmes d‘Informations 2012/2013 2 ème année

Transcript of Bases de données - Bienvenue au portail GI de l'ESTOesto.gi.free.fr/access/merise.pdf · Le...

INFORMATIQUE DE GESTION

Bases de données

Systèmes d‘Informations

2012/20132ème année

Système d'information (SI)

� Un système d'information (SI) est un ensemble organisaient deressources (matériels, logiciels, personnel, données et

2

ressources (matériels, logiciels, personnel, données etprocédures) qui permet de regrouper, de classifier, de traiteret de diffuser de l'information sur un environnement donné.

� L'utilisation de moyens informatiques, électroniques et latélécommunication permettent d'automatiser et dedématérialiser les opérations telles que les procéduresd'entreprise surtout en matière logistique. Ils sont aujourd'huid'entreprise surtout en matière logistique. Ils sont aujourd'huilargement utilisés en lieu et place des moyens classiques telsque les formulaires sur papier et le téléphone et cettetransformation est à l'origine de la notion de systèmed´information.

Document Microsoft Word

Introduction

� Le système d'information est le véhicule de la communicationdans l'organisation. Sa structure est constituée de l'ensemble

3

dans l'organisation. Sa structure est constituée de l'ensembledes ressources (les hommes, le matériel, les logiciels)organisées pour : collecter, stocker, traiter et communiquer lesinformations. Le système d'information coordonne grâce àl'information les activités de l'organisation et lui permet ainsid'atteindre ses objectifs.

� Cette quantité d'informations (données) stockée dans un� Cette quantité d'informations (données) stockée dans unordinateur s'appelle une base de données.

� Un logiciel permettant d'utiliser ces données est un système de

gestion de base de données (SGBD).

Document Microsoft Word

Introduction

� Différents logiciels existent;

� Un tableur (Excel) peut être considéré comme un SGBD.

4

SGBD:

� Un tableur (Excel) peut être considéré comme un SGBD.

� Nous allons utiliser dans notre cours le logiciel Accesscomme SGBD; Ce logiciel permet une conception aiséede bases de données de "petite" taille avec un nombrerestreint d'utilisateurs.

� Il est à noter que plusieurs autres SGBD plusperformants (mais également plus complexes) existentperformants (mais également plus complexes) existentpar ailleurs. On peut citer notamment Oracle, SQLServer, Paradox, MySQL, PostgreSQL parmi beaucoupd'autres.

Feuille de calcul Microsoft Excel

Introduction

� La plupart de ces systèmes sont basés (dont Access)sur le modèle relationnel et fonctionnent sur les

5

SGBD:

sur le modèle relationnel et fonctionnent sur lesmême principes;

� Les informations sont stockées dans des tables quisont reliées entre elles par des relations.L'interrogation de la base de données se fait àl'aide de requêtes, ces requêtes étant écrites àl'aide de requêtes, ces requêtes étant écrites àl'aide d'un langage commun à la plupart des SGBD:le SQL (Structured Query Language).

Introduction

� Access a comme avantage par rapport à laplupart de ses concurrents de permettre une

6

SGBD:

plupart de ses concurrents de permettre uneécriture en mode graphique des tables, de leursrelations et de la plupart des requêtes.

� De plus, il intègre un système de créationd'applications claires et simples pour chaque basede données.de données.

Application Microsoft Office Access

Plan du cours

� Ce cours est composé de six parties :� Cette introduction,

7

� Cette introduction,� Une partie consacrée à la méthode Merise, qui indique

comment concevoir une base de données,� Une partie consacrée à la création de la base de

données dans le logiciel Access,� Une partie consacrée aux différents types de requêtes,� Et une dernière partie consacrée à la finalisation de la

base de données (notamment conception desbase de données (notamment conception desformulaires, des états et des menus) qui permet d'avoirun produit fini, utilisable par un utilisateur n'ayant pas deconnaissances particulière sur les SGBD,

I. Méthode Merise

� La méthode Merise a été créée en France dans lesannées 1970. Méthode d’Etude et de Réalisation Informatique pour les

8

Principes généraux:

années 1970. Méthode d’Etude et de Réalisation Informatique pour lesSystèmes d’Entreprises.

� Cette méthode utilise le système dit d'entités-

relations.

� Un outil et une technique d'analyse permettant deconstruire des schémas théoriques deconstruire des schémas théoriques de

raisonnement sur des applications tournant avecdes bases de données dite relationnelles (commecelles d'Access).

I. Méthode Merise

� A noter que nous ne présenterons ici qu'une partiede la méthode Merise, puisque la méthode Merise

9

Principes généraux:

de la méthode Merise, puisque la méthode Merisegénérale traite de l'intégralité de la conception de

la base de données :

� Elle ne s'intéresse pas uniquement de la partiecorrespondant au stockage des données, maiségalement à leur traitement.également à leur traitement.

Système d’information

manuel •Recueil des informations

Merise…cycle d’abstraction

Expression des Besoins

Modèle Conceptuel

Modèle Organisationnel

•Recueil des informations

•Délimiter le système.•…

•Construire les MCD et MCT

•Construire les MOD et MOT

Modèle Organisationnel

Modèle Opérationnel

Système d’information

automatique

•Construire (entre autres) les MLD,MPD …

10

I. Méthode Merise

1. La phase d'analyse :

Cette phase, qui ne sera pas étudié dans ce cours, est

11

Les quartes phases de la méthode Merise:

Cette phase, qui ne sera pas étudié dans ce cours, estune phase essentielle qui consiste à:

� étudier l'existant :

� y-a-t'il un système qui gère déjà tout ou partie del'information, qu'il s'agisse d'un logiciel ou d'un ensemble de

documents papiers ?

� Comment ces informations sont elles stockées?� Comment ces informations sont elles stockées?

� Quelles sont les informations stockées ?

� Que manque t-il ?

� Qu'est ce qui convient ou ne convient pas aux utilisateurs?

I. Méthode Merise

� Interroger les futurs utilisateurs :

�Qu'attendent-ils du futur SGBD ?

12

Les quartes phases de la méthode Merise:

�Qu'attendent-ils du futur SGBD ?

�Quelles sont les opérations qu'ils désirentautomatiser ?

�Recueillir les informations existantes, étudier lesdivers liens qui peuvent exister entre cesinformations, mettre en évidence les règles deinformations, mettre en évidence les règles degestion employées, ...

I. Méthode Merise

2. La phase conceptuelle :

Elle consiste à représenter l'organisation des

13

Les quatres phases de la méthode Merise:

Elle consiste à représenter l'organisation des

données de manière générale.

Elle aboutit sur la création du modèle conceptuel

des données (MCD) dans lequel les données sontreprésentées sous forme d'entités liées entre ellespar des relations.par des relations.

I. Méthode Merise

14

Les quartes phases de la méthode Merise:

I. Méthode Merise

3. La phase logique ou organisationnelle :

Dans cette phase, la base de données sont

15

Les quartes phases de la méthode Merise:

Dans cette phase, la base de données sontreprésentées sous une forme logique plus prochede leur représentation réelle au sein du SGBD :

Les informations sont représentées uniquement sousforme de tables au sein d'un modèle logique des

données (MLD).données (MLD).

I. Méthode Merise

16

Les quartes phases de la méthode Merise:

I. Méthode Merise

4. La phase physique ou opérationnelle :

Elle consiste à construire réellement la base de

17

Les quartes phases de la méthode Merise:

Elle consiste à construire réellement la base de

données au sein du SGBD (ici Access).

Cette partie ne sera pas décrite dans cettesection, mais dans les suivantes.

I. Méthode Merise

� Les quatre phases de la méthode Merise :

� Analyse (étude de l'existant et enquête),

18

� A retenir :

� Analyse (étude de l'existant et enquête),

� Conceptuel (création du MCD),

� Logique (création du MLD),

� Physique (conception de la base de données dansAccess).

I. Méthode Merise

Modèle Conceptuel de données

Après la phase d'analyse, nous pouvons commencer

19

� Après la phase d'analyse, nous pouvons commencerà représenter les informations sous forme

conceptuelle.

� Le Modèle Conceptuel de Données (MCD) que nousallons construire contient deux éléments principaux :les entités et les relations.les entités et les relations.

I. Méthode Merise

� Une entité est un élément du problème.

� Elle est définie par un ensemble de propriétés.

20

Modèle Conceptuel de données

� Elle est définie par un ensemble de propriétés.Chacune des propriétés est l'un des éléments quicaractérise l'entité.

� Il faut distinguer une entité et une occurrenced'entité (ou instance).

� Une entité correspond au type général d'une� Une entité correspond au type général d'unedonnée (ex : le type "employé") alors qu'uneoccurrence d'une entité est un représentantparticulier de cette entité (l'employé "Jean Martin").

I. Méthode Merise

� Une relation est un lien possible qui relie deuxentités.

21

Modèle Conceptuel de données

entités.

� Par exemple, si un employé peut être affecté à unentrepôt, il y aura une relation "affectation" entrel'entité "entrepôt" et l'entité "employé". Cela nesignifie pas nécessairement qu'il y aura affectationpour chacun des employé, juste qu'il est possiblequ'un employé soit affecté à un entrepôt.qu'un employé soit affecté à un entrepôt.

� Une relation peut éventuellement être reliée à plusde deux entités et peut avoir certaines propriétés.

I. Méthode Merise

� Après avoir fait une analyse aussi complète quepossible du problème à informatiser, la

22

Modèle Conceptuel de données

possible du problème à informatiser, la

construction du MCD se fait en quatre étapes :

a. Repérage des entités,

b. Construction des entités, choix des propriétés,

c. Construction des relations,

d. Choix des cardinalités.

I. Méthode Merise

a. Repérage des entités:

Une entité est un composant du problème : une

23

La construction du MCD

� Une entité est un composant du problème : unepersonne, une facture, un livre, ...

� C'est la représentation d'un objet matériel ouimmatériel pourvu d'une existence propre etconforme aux choix de gestion de l'entreprise.

I. Méthode Merise

� Comme dit plus haut, ce que l'on considère commeentité est un type général (ex : l'entité personne

24

La construction du MCD

entité est un type général (ex : l'entité personnereprésente toutes les personnes) à ne pas

confondre avec une occurrence d'entité (JeanMartin étant une personne, on le considère commeune occurrence de l'entité personne).

� Une entité doit avoir une existence� Une entité doit avoir une existenceindépendamment de toute autre entité.

I. Méthode Merise

� Exemple : On considère le problème suivant :

� Un libraire gère des œuvres littéraires. Une œuvre

25

La construction du MCD

� Un libraire gère des œuvres littéraires. Une œuvreest une création littéraire.

� Une œuvre a au moins un auteur et est dans uneédition (un livre).

� Une édition possède un ISBN unique et a un uniqueéditeur. Elle peut contenir plusieurs œuvres.éditeur. Elle peut contenir plusieurs œuvres.

� On veut mémoriser pour chaque édition le nombred'exemplaires en stock et pour chaque exemplaireson état.

I. Méthode Merise

� Dans ce problème, les entités sont :

� L’entité "œuvre" : Une création littéraire, un récit…

26

La construction du MCD: Exemple

� L’entité "œuvre" : Une création littéraire, un récit…

� L’entité "auteur" : une personne créateur d'œuvre,

� L’entité "édition" : un livre contenant une ou plusieursœuvres littéraires,

� L’entité "éditeur" : la société qui va imprimer les livres,

� L’entité "exemplaire" : un exemplaire physique de livre.� L’entité "exemplaire" : un exemplaire physique de livre.

� L'ISBN, par exemple, n'est pas une entité puisqu'ils'agit d'un élément qui caractérise l'entité "édition".

I. Méthode Merise

� Exemple

27

La construction du MCD: Exemple

Liste des œuvres

ISBN Titre Auteur Editeur StocksISBN Titre Auteur Editeur Stocks

2.207.30089.7 Fondation 5 Denoël 10

2.221.09973.7 L'incident Jésus 2 Laffont 7

2.070.42167.8 Chrono-Minets 5 Gallimard 8

2.290.03567.X Frankenstein 1 J'ai Lu 12

2.070.36822.X 1984 3 Gallimard 5

Liste des auteursListe des auteurs

Code Nom Prénom

1 Shelley Mary W.

2 Herbert Franck

3 Orwell Georges

4 Bradbury Ray

5 Asimov Isaac

I. Méthode Merise

b. Construction des entités

� On commence par donner un nom à chacune des

28

La construction du MCD

� On commence par donner un nom à chacune desentités. Il faut ensuite rechercher les propriétés de cesentités.

� On devra garder à l'esprit les points suivants :� toute propriété est élémentaire (elle n'est pas la

composition d'éventuelles propriétés plus petites),� une propriété ne doit pas être "instable" ou "calculable" :

si une propriété peut être obtenue par calcul à partirsi une propriété peut être obtenue par calcul à partird'autres éléments qui vont apparaitre dans la base dedonnées (notamment d'autres propriétés), on ne doit pas laconsidérer,

I. Méthode Merise

� toute entité doit posséder une propriété particulièreappelée sa clé (ou identifiant).

29

La construction du MCD

appelée sa clé (ou identifiant).

Une clé doit caractériser de manière unique chaqueoccurrence de l'entité. Par exemple, le nom de familled'une personne ne peut pas être considéré comme uneclé d'une entité "personne" puisque deux personnespeuvent avoir le même nom de famille. Le numéro desécurité sociale est par contre tout à fait acceptable. Ilvaut mieux éviter les identifiants trop longs (onvaut mieux éviter les identifiants trop longs (onpréférera un code de quelques chiffres à un intituléd'une vingtaine de lettres par exemples),

I. Méthode Merise

� si aucune des propriétés "naturelles" ne peut servirde clé, on en rajoute une artificiellement (Par

30

La construction du MCD

de clé, on en rajoute une artificiellement (Parexemple "CodeLivre" ou "IdAnimal").

�Chaque propriété ne doit dépendre que d'uneseule entité.

I. Méthode Merise

�Une entité se représente ensuite graphiquementsous la forme d'une boite dans laquelle on indique

31

La construction du MCD

sous la forme d'une boite dans laquelle on indiqueen titre le nom de l'entité suivi de toutes sespropriétés. On indique d'une manière particulièrel'identifiant.

I. Méthode Merise

� Exemple :

Dans l'exemple du libraire, on peut construire les

32

La construction du MCD

� Dans l'exemple du libraire, on peut construire lesentités suivantes (les propriétés sont indiquées aprèsle nom de l'entité, l'identifiant est en gras) :

� œuvre : Idœuvre, titre

� Auteur : IdAuteur, nom, prénom

édition : ISBN, titre, nb pages� édition : ISBN, titre, nb pages

� éditeur : IdEditeur, nom

� Exemplaire : IdExemplaire, état

I. Méthode Merise

� Notons que, dans le cas de l'édition, l'ISBN est unidentifiant tout à fait acceptable.

33

La construction du MCD

identifiant tout à fait acceptable.

� Dans les autres cas, aucune des propriétés neconvenant comme identifiant, il a fallu créer unepropriété particulière pour cet effet (Id...).

I. Méthode Merise

34

La construction du MCD

Œuvres

IdœuvreAuteurs

IdAuteurTitre

Editions

ISBN

TitreEditeurs

IdAuteur

Nom

Prénom

Titre

Nb pages

Editeurs

IdEditeur

NomExemplaires

Id_livre

Etat

I. Méthode Merise

c. Construction des relations

L'étape suivante consiste à énumérer toutes les

35

La construction du MCD

� L'étape suivante consiste à énumérer toutes lesrelations possibles entre entités.

� Si une relation a une chance d'apparaitre (et denous intéresser), alors on doit la considérer dans leMCD. On parle également parfois d'association.

� Une relation se représente de la manière suivante :

I. Méthode Merise

� On notera les points suivants :� Une relation est en général entre deux entités. Il est

36

La construction du MCD

� Une relation est en général entre deux entités. Il estpossible d'avoir des relations entre plus que deuxentités.

� Par exemple, une relation Vente entre Acheteur,Vendeur et Lieu pour une base de données detransaction immobilière.

� Il est néanmoins souvent possible (et préférable!) de serestreindre à des relations entre deux entités.restreindre à des relations entre deux entités.

� Dans le cas ici, la relation Vente pourrait êtreremplacée par une entité Acte de vente qui est enrelation avec l'acheteur, le vendeur et le lieu.

I. Méthode Merise

� Il est tout à fait possible d'avoir plusieurs relations entredeux entités.

37

La construction du MCD

deux entités.

� Il est également possible d'avoir une relation diteréflexive, c'est-à-dire entre une entité et elle-même.

� Par exemple, on peut avoir une relation Responsableentre une table employé et elle même.

�Dans ce cas, il convient tout de même de remarquerque chacune des "pattes" de la relation a uneque chacune des "pattes" de la relation a unesignification différente. Ici, l'une des "pattes"signifiera est responsable de et l'autre signifiera acomme responsable.

I. Méthode Merise

� Une relation peut avoir des propriétés.

Par exemple, si une relation Contient lie l'entité Facture

38

La construction du MCD

Par exemple, si une relation Contient lie l'entité Facture

et l'entité Produit, elle possède certainement lapropriété "quantité" (une facture contient un produit xen quantité y).

D'ailleurs, si une propriété dépend de plus d'une entité(comme c'est le cas ici avec la quantité qui dépend à lafois de la facture et du produit), c'est certainementqu'elle dépend d'une relation, et non pas d'une entité.

I. Méthode Merise

� Il faut éviter les relations que l'on peut déduire d'autresrelations par transitivité.

39

La construction du MCD

relations par transitivité.

Par exemple, dans une base de données gérant uneuniversité, si on dispose d'entités étudiant, formation etcours. On a les relations fait partie entre formation etcours (un cours fait partie d'une formation) etinscription entre étudiant et formation. Il est inutiled'avoir en plus une relation inscription entre étudiantet cours : tout étudiant inscrit à une formation estet cours : tout étudiant inscrit à une formation estsystématiquement inscrit à tous les cours qui composentla formation.

I. Méthode Merise

� Exemple :

Dans l'exemple du libraire, on a les relations

40

La construction du MCD

Dans l'exemple du libraire, on a les relationssuivantes:

I. Méthode Merise

d. Choix des cardinalités

Une fois les relations établies, il convient ensuite de

41

La construction du MCD

� Une fois les relations établies, il convient ensuite decaractériser le nombre de fois ou chacune de cesrelations peut apparaitre réellement. Ceci se fait àl'aide des cardinalités. Dans une relation classique(i.e. entre deux entités), quatre cardinalités sont àdéterminer.déterminer.

I. Méthode Merise

42

La construction du MCD

� minA est le nombre minimal de fois où une occurrence de l'entité Aparticipe à une relation du type considéré. Il s'agit en général de0 ou 1.

� maxA est le nombre maximal de fois où une occurrence de l'entitéB participe à la relation. Il s'agit en général de 1 ou n (n pourplusieurs fois, ou un nombre quelconque de fois).plusieurs fois, ou un nombre quelconque de fois).

� minB et maxB fonctionnent de la même manière, mais enconsidérant l'entité B.

� Notons qu'il est souvent difficile de choisir entre une cardinalitéde type 0: n et une cardinalité de type 1: n. Il est important denoter que ce choix a souvent peu d'importance.

I. Méthode Merise

� Exemple :

Dans l'exemple du libraire, considérons la relation édite

43

La construction du MCD

� Dans l'exemple du libraire, considérons la relation édite

qui existe entre les entités éditeur et édition.

� Ainsi, dans l'exemple du libraire, une édition (un livre) atoujours un et un seul éditeur (soit un minimum de unéditeur, et un maximum de un éditeur).

� Un éditeur par contre peut éditer au minimum une� Un éditeur par contre peut éditer au minimum uneédition et au maximum plusieurs éditions (un nombrequelconque de fois).

I. Méthode Merise

� Ce qui nous donne :

44

La construction du MCD

� Le MCD complet est donc :

I. Méthode Merise

e. Cas particuliers et pièges :

Quelques points particuliers sont à garder à l'esprit

45

La construction du MCD

� Quelques points particuliers sont à garder à l'espritlors de la réalisation d'un MCD.

�Un identifiant est obligatoire pour chaque entité.

� Il ne doit pas y avoir de redondance

d'informations: Une information quelconque ne doitpas être représentée plus d'une fois dans le MCD.pas être représentée plus d'une fois dans le MCD.

I. Méthode Merise

� Evitez autant que possible les relations entre plusde deux entités. Souvent, il est possible de

46

La construction du MCD

de deux entités. Souvent, il est possible deremplacer la relation par une entité.

�Restez dans la mesure du possible avec descardinalités de valeurs 0, 1 ou n. Il est de toutemanière souvent possible de se ramener à ce casdans les rares cas où des cardinalités d'un autredans les rares cas où des cardinalités d'un autretype semblent plus naturelles. En pratique, il peut yavoir d’autre valeurs, mais c’est très rare (exempledu tiercé : un pari concerne exactement 3 chevauxcardinalité 3:3)

I. Méthode Merise

� Dans l'idéal, il faut trouver un bon compromis entre niveaude détail et "taille" de la base de données.

Il est toujours possible de multiplier les entités, mais il vaut

47

Il est toujours possible de multiplier les entités, mais il vautmieux le faire que si cela a vraiment du sens et un intérêtdans le problème.Par exemple, si on a une entité personne, on peut considérerl'adresse comme une entité séparée (reliée à personne parune relation "habite à") ou comme une propriété de lapersonne (ce qui est fait usuellement). En règle générale, ilest plus économique de définir l'adresse comme uneest plus économique de définir l'adresse comme unepropriété, mais dans un cas ou il est courant que despersonnes habitent au même endroit, la règle de non-redondance incite plutôt à utiliser une nouvelle entité

I. Méthode Merise

� La méthode générale de construction du MCD :Recherche des entités,

48

La construction du MCD: A retenir!

� Recherche des entités,

� Recherche des propriétés (dont la clé de chaqueentité),

� Recherche des relations entre entités,

� Recherche des cardinalités (0:1, 1:1, 0: n ou 1:n ?)

I. Méthode Merise

� Une banque désire posséder un SGBD poursuivre ses clients. Elle désire ainsi stocker les

49

Exercice : réalisation de MCD (Banque)

suivre ses clients. Elle désire ainsi stocker lescoordonnées de chaque client (nom, prénom adresse),et les comptes dont elle dispose ainsi que leur solde(sachant par ailleurs que certains compte ont plusieursbénéficiaires). On stockera également les opérationsrelatives à ces comptes (retrait et dépôt, avec leurrelatives à ces comptes (retrait et dépôt, avec leurdate et le montant).

I. Méthode Merise

� Une banque désire posséder un SGBD poursuivre ses clients. Elle désire ainsi stocker les

50

Exercice : réalisation de MCD

suivre ses clients. Elle désire ainsi stocker lescoordonnées de chaque client (nom, prénom adresse),et les comptes dont elle dispose ainsi que leur solde(sachant par ailleurs que certains compte ont plusieursbénéficiaires). On stockera également les opérationsrelatives à ces comptes (retrait et dépôt, avec leurrelatives à ces comptes (retrait et dépôt, avec leurdate et le montant).

I. Méthode Merise

51

Exercice : réalisation de MCD

Comptesbénéficie1:n 1:n 0:n

� Comptes

Id_Cpt

Solde

Clients

NoClient

Nom

Prénom

Adresse

Opérations

bénéficie

Opérations

Id_op

Type

Date

montant

Concerne

1:1

I. Méthode Merise

� Les règles de gestion :

� Le magasin vend des produits a des clients.

52

Exercice : MCD (gestion de commandes)

� Le magasin vend des produits a des clients.

� Les produits possèdent une référence (un code), un libelle et un prix unitaire.

� Les clients ont une identité (nom, prénom, adresse...).

� Les clients passent des commandes de produits. On mémorise la date de la commande.

� Pour chaque commande, le client précise une adresse de livraison.

La commande concerne un certain nombre de produits, en une quantité � La commande concerne un certain nombre de produits, en une quantité spécifiée pour chaque produit.

I. Méthode Merise

53

Exercice : MCD (gestion de commandes)

I. Méthode Merise

� Les règles de gestion :

� Une agence de location de maisons et d’appartements désire gérer sa

54

Exercice : MCD (agence immobilière)

� Une agence de location de maisons et d’appartements désire gérer sa liste de logements. Elle voudrait en effet connaître l’implantation de chaque logement (nom de la commune et du quartier) ainsi que les personnes qui les occupent (les signataires uniquement).

� Le loyer dépend d’un logement, mais en fonction de son type (maison, studio, T1, T2...) l’agence facturera toujours en plus du loyer la même somme forfaitaire à ses clients. Par exemple, le prix d’un studio sera toujours égal au prix du loyer + 30 DH de charges forfaitaires par mois.mois.

� Pour chaque logement, on veut disposer également de l’adresse, de la superficie ainsi que du loyer.

� Quant aux individus qui occupent les logements (les signataires du contrat uniquement), on se contentera de leurs noms, prénoms, date de naissance et numéro de téléphone.

I. Méthode Merise

� Pour chaque commune, on désire connaître le nombre d’habitants ainsi que la distance séparant la commune de l’agence.

55

Exercice : MCD (gestion de commandes)

� L’agence désire gérer l’historique de l’occupation des logements par les individus. On considèrera de plus qu’un individu peut être signataire de plusieurs contrat de location.

� On précise aussi qu’un logement peut faire l’objet de plusieurs locations disjointes dans le temps.

� L’unité géographique retenue pour la gestion des logements est le quartier et on considère que chaque commune possède au moins un quartier et on considère que chaque commune possède au moins un quartier.

I. Méthode Merise

56

Exercice : MCD (gestion de commandes)

IndividusCommunes

Id commune

1,N

Effectuer1,N

Locations

N°identitéNomPrénomDateNaissanceN°téléphone

Nom communeDistance agenceNombre d'habitants

N°LocationDateDébutDateFin

0,N

1,1

1,1

1,1

Situer Dans

Concerner

LogementsQuartiers

TypeLogements

Type logementCharges forfaitaires

Correspondre

1,N

1,1

1,1 0,NAppartenir

LogementsN° logementAdresseSuperficieLoyer

Quartiers

Id quartierNom quartier

I. Méthode Merise

� L'étape de transformation du MCD en MLD estassez simple et passe par trois étapes :

57

MCD>>> MLD

assez simple et passe par trois étapes :

� Transformation des entités en tables,

� Transformation des relations du MCD,

� Suppression des tables inutiles.

I. Méthode Merise

a. Construction des tables

� La première étape consiste à transformer toutes les

58

Modèle logique des données

� La première étape consiste à transformer toutes lesentités du MCD en tables du MLD.

� Cette transformation est directe : il suffit de recopier lesentités. Il s'agit essentiellement d'un changement devocabulaire :� une entité devient une table,

� une propriété devient un champ,un identifiant devient une clé primaire.� un identifiant devient une clé primaire.

� A noter toutefois qu'il est essentiel qu'il n'y ait pas deuxtables qui aient le même nom.

I. Méthode Merise

� Exemple:

la première partie de la construction du MLD du

59

Modèle logique des données

� la première partie de la construction du MLD du libraire est directe. Il suffit de recopier les entités.

I. Méthode Merise

b. Transformation des relations en liens

60

Modèle logique des données

Pour les associations. Dépend des cardinalités. Deux grand cas possibles :

� Relation

la relation est matérialisée par l’ajout d’une clé étrangère

� Relation

1:1 ?:?

?:n ?:n� Relation

la relation donne lieu à la création d’une table

?:n ?:n

I. Méthode Merise

Premier cas:

� Dans le cas d'une relation ou l'une des branches a une

61

Modèle logique des données

� Dans le cas d'une relation ou l'une des branches a unecardinalité de 1:1 ou 0:1, la transformation de larelation se fait de la manière suivante :

� On ramène dans la table correspondant à l'entité "du côtédu 1:1" (ou du 0:1) la clé primaire de l'autre table ainsi quetoutes les éventuelles propriétés de la relations.

� On lie la clé primaire ainsi importée avec la clé primaire de� On lie la clé primaire ainsi importée avec la clé primaire dela deuxième table.

� Si la relation contenait des propriétés, celle-ci se retrouveégalement importée du côté du 1:1

I. Méthode Merise

62

Modèle logique des données

� Se transforme en:

� A noter que la clé importée (ici IdB qui se retrouve dans� A noter que la clé importée (ici IdB qui se retrouve danstable A) ne devient pas une clé de la table : c'est unepropriété comme une autre. Notons aussi que le lien sefait entre champs (on relie IdA à IdB) et non pas, commedans le MCD, entre les tables.

I. Méthode Merise

63

Modèle logique des données

EntitéA EntitéB

0:nIdA

PropriétéA1

IdB

propriétéB1

TableATableB

0:n 1:1relation

propriétéR

devient

PK_IdA

Champ A1

TableB

PK_IdB

Champ B1

Champ IdA

Champ R

I. Méthode Merise

Deuxième cas

Dans tous les autres cas, la relation du MCD se

64

Modèle logique des données

� Dans tous les autres cas, la relation du MCD setransforme en une table du MLD :

� On crée une nouvelle table correspondant à la relation.Cette table contient toutes les éventuelles propriétés dela relation.

� On intègre à cette table les clés primaires des entitésimpliquées dans la relation.

I. Méthode Merise

�On relie les clés primaires des tables avec les clés

65

Modèle logique des données

�On relie les clés primaires des tables avec les clésimportées dans la nouvelle table.

�On choisit enfin la ou les clés primaires de lanouvelle table. L'idée générale est que chaqueoccurrence de cette entité doit pouvoir êtreoccurrence de cette entité doit pouvoir êtreidentifiée de manière unique par ses clés primaires.

I. Méthode Merise

� Cela revient en général à choisir comme clésprimaires l'ensemble de clés importées des autres

66

Modèle logique des données

primaires l'ensemble de clés importées des autrestables.

� Se transforme en:

I. Méthode Merise

Cas particuliers

Quelques cas particuliers peuvent apparaitre.

67

Modèle logique des données

� Quelques cas particuliers peuvent apparaitre.

�Si la relation est de type 1:1 - 1:1, on fusionne lesdeux entités en une. Ce type de relation rare estsouvent dû à un problème dans la conception duMCD.

Si la relation est de type 0:1 - 1:1, on traite la�Si la relation est de type 0:1 - 1:1, on traite larelation comme une relation de type 1:1 ?:?(enramenant la clé primaire du côté du 1:1)

I. Méthode Merise

Cas particuliers

� Les relations réflexives (entre une entité et elle-

68

Modèle logique des données

� Les relations réflexives (entre une entité et elle-même) se traitent comme les autres relations.

� les relations ternaires (entre trois entités, ou plus), setraitent comme d'habitude.

Si l'une des branches a une cardinalité de type 1:1,on ramène les clés primaires des autres entités et lespropriétés de la relation dans l'entité "du côté dupropriétés de la relation dans l'entité "du côté du1:1".

Si ce n'est pas le cas, la relation se transforme entable.

I. Méthode Merise

c. Suppression des tables inutiles

La dernière étape consiste simplement à supprimer

69

Modèle logique des données

� La dernière étape consiste simplement à supprimerles tables inutiles.

� En général (mais pas toujours), une table qui necontient qu'un seul champ (sa clé) est inutile : elle nenous apporte aucune information.

L'exemple le plus classique est une entité de type� L'exemple le plus classique est une entité de type"date".

I. Méthode Merise

� Exemple :

Le MLD correspondant à l'exemple du libraire est le

70

Modèle logique des données

� Le MLD correspondant à l'exemple du libraire est le suivant :

I. Méthode Merise

� La méthode de transformation MCD-MLD :� les entités sont transformées en tables (sans modification)

71

MCD>>MLD: A retenir

� les entités sont transformées en tables (sans modification)

� les relations sont transformées en fonction de leurscardinalités� pour une relation de type 1:1 - ?:? entre une entité A et une

entité B se traduit par une importation de la clé primaire del'entité B dans la table de A, et on ajoute un lien entre lesdeux clés,

�une relation autre (sans 1:1 - ?:?) se transforme entable dans laquelle on retrouve les clés primaires deune relation autre (sans 1:1 - ?:?) se transforme entable dans laquelle on retrouve les clés primaires deA et B.

� les tables inutiles sont supprimées : il s'agit essentiellement destables à un seul champ (leur clé).

I. Méthode Merise

� Relation binaire (0,1)-(1,1):� On duplique la clé de la table basée sur l'objet à cardinalité (0,1) dans la table

72

MCD>>MLD: Quelques cas particuliers

� On duplique la clé de la table basée sur l'objet à cardinalité (0,1) dans la tablebasée sur l'objet à cardinalité (1,1).

I. Méthode Merise

� Plusieurs relations entre 2 objets

� Les règles générales s'appliquent.

73

MCD>>MLD: Quelques cas particuliers

� Les règles générales s'appliquent.

I. Méthode Merise

� Relation binaire (0,1)-(0,1):� On duplique la clé d'une des tables dans l'autre. Lorsque la relation contient

74

MCD>>MLD: Quelques cas particuliers

� On duplique la clé d'une des tables dans l'autre. Lorsque la relation contientelle-même des propriétés, celles-ci deviennent également attributs de la tabledans laquelle a été ajoutée la clé étrangère.

I. Méthode Merise

� Relations réflexives:� Nous appliquons les règles générales avec la seule différence que la relation

75

MCD>>MLD: Quelques cas particuliers

� Nous appliquons les règles générales avec la seule différence que la relation

est 2 fois reliée au même objet.

I. Méthode Merise

� Relations réflexives:� Nous appliquons les règles générales avec la seule différence que la relation

76

MCD>>MLD: Quelques cas particuliers

� Nous appliquons les règles générales avec la seule différence que la relation

est 2 fois reliée au même objet.

I. Méthode Merise

� Exercice «Gestion d'école»� Transformez le MCD suivant, qui représente «la gestion d'une école» en un MLD

77

MCD>>MLD: Exercices

� Transformez le MCD suivant, qui représente «la gestion d'une école» en un MLD

en respectant toutes les règles du passage MCD à MLD.

I. Méthode Merise

78

MCD>>MLD: Exercices

I. Méthode Merise

79

MCD>>MLD: Exercices

I. Méthode Merise

80

MCD>>MLD: Exercices

Résumé81

� La méthode Merise, comprend 4 niveaux avecchacun un modèle référent :chacun un modèle référent :

II. Cours SQL

82

Introduction au SQL

� Requêtes de consultation de tables

� Projection, Sélection, Jointure� Projection, Sélection, Jointure

� Tri, Agrégation, Partitionnement

� Requêtes de Modification de tables

� Ajout

� Suppression

Manipulation de tables, de vues et de bases de � Manipulation de tables, de vues et de bases de données

II. Cours SQL

83

Projection

Syntaxe SQL :Syntaxe SQL :

�SELECT [UNIQUE1] liste_attributs2 FROM Table ;

�1 Permet d'éliminer les doublons (on trouvera aussi DISTINCT).

�2 On peut mettre une étoile * pour demander tous les attributs.� On peut mettre une étoile * pour demander tous les attributs.

� On peut renommer un attribut en ajoutant AS NomAttribut

II. Cours SQL

84

Projection

� Soit la Table Étudiants(#num, nom, prénom, âge, ville, CodePostal).CodePostal).

� Donner les noms, les prénoms et les âges de tous le s étudiants.

� Afficher toute la table Étudiant.

• SELECT nom , prénom , âge FROM Étudiants ;

• SELECT * FROM Étudiants ;

84

• SELECT nom , prénom , âge FROM Étudiants ;

� Donner les numéros des étudiants dans une colonne nommée Numéro.

• SELECT #num AS Numéro FROM Étudiants ;

II. Cours SQL

85

Sélection

Syntaxe SQL :

SELECT * FROM table WHERE condition;

La condition peut formée sur des noms d'attributs ou des constantes avec

� des opérateurs de comparaison : =, >, <, <=, >=, <>1

� des opérateurs logiques : AND, OR, NOT

� des opérateurs : IN, BETWEEN+AND, LIKE, EXISTS, IS

� _ qui remplace un caractère et % qui remplace une chaîne de caractères

1 La différence est parfois notée !=

II. Cours SQL

86

Sélection

� Quels sont tous les étudiants âgés de 20 ans ou plu s ?

� Sur la table Étudiants(#Num, Nom, Prénom, Age, Ville, CodePostal)

� Quels sont tous les étudiants âgés de 20 ans ou plu s ?

�SELECT * FROM Étudiants WHERE (Age >= 20);

�Quels sont tous les étudiants âgés de 19 à 23 ans ?

� SELECT * FROM Étudiants WHERE Age IN (19, 20, 21, 22, 23);� SELECT * FROM Étudiants WHERE Age BETWEEN 19 AND 23;

� Quels sont tous les étudiants habitant dans les Vos ges ?

86

� SELECT * FROM Étudiant WHERE CodePostal LIKE '88%' ;

Quels sont tous les étudiants dont la ville est inc onnue/connue ?

� SELECT * FROM Étudiants WHERE Ville IS NULL ; � SELECT * FROM Étudiants WHERE Ville IS NOT NULL ;

II. Cours SQL

87

Produit Cartésien

Syntaxe SQL :

SELECT * FROM table1 [Alias1], ..., tablen [Aliasn];SELECT * FROM table1 [Alias1], ..., tablen [Aliasn];

Syntaxe SQL :

SELECT * FROM table1 [Alias1], ..., tablen [Aliasn] WHERE condition;

Autre Syntaxe :

SELECT * FROM table1 INNER JOIN table2 ON condition;

87

II. Cours SQL

88

Produit Cartésien

Soient les tables :

• Produit (#prod, nomProd, fournisseur, pu)• Produit (#prod, nomProd, fournisseur, pu)

• DétailCommande (#cmd, #prod, pu, qte, remise)

Quels sont les numéros de commande correspondant à l'achat d'une table ?

Même requête, mais avec des alias pour les noms de relation :

SELECT DétailCommande.#num FROM Produit, DétailCommande WHERE Produit.#prod =DétailCommande.#prod AND nomProd LIKE "%table;

88

88

SELECT dc.#numFROM Produit p, DétailCommande dcWHERE p.#prod = dc.#prod

AND nomProd LIKE "%table%";

II. Cours SQL

89

Jointures par requêtes imbriquées

Une jointure peut aussi être effectuée à l'aide d'une sous-requête.

SELECT *SELECT *

FROM Stock

WHERE #prod IN ( SELECT #prod

FROM Produit)

Principe : Le mot-clef "IN" permet ici de sélectionner les tuples #prodappartenant à la sous-requête.appartenant à la sous-requête.

� La sous-requête ne doit retourner qu'une colonne !

� Les tables de sous-requêtes ne sont pas visibles depuis l'extérieur

89

89

II. Cours SQL

90

Jointures par requêtes imbriquées

A partir des relations suivantes : Produit(#prod, libellé, pu)

Stock(#prod, #dép, qté)Stock(#prod, #dép, qté)

Dépôt(#dép, adr, volume)

Quels sont les produits qui sont en rupture de stock et l’adresse du dépôt:

SELECT p.#prod, p.libellé, d.#dép, d.Adr

FROM Produit p, Dépôt d, Stock sFROM Produit p, Dépôt d, Stock s

WHERE p.#prod = s.#prod

AND s.#dép = d.#dép

AND s.qte <= 090

90

II. Cours SQL

91

Tri

Syntaxe :Syntaxe :

Cette clause se place derrière la clause WHERE

ORDER BY attribut [ordre] [, attribut [ordre] ...]

On peut préciser un ordre croissant ASC ou décroissant DESC.

Exemple

Trier Stock par numéro de produit croissant et par quantité décroissante

91

9191

Trier Stock par numéro de produit croissant et par quantité décroissante

SELECT *FROM StockWHERE qte > 0ORDER BY #prod ASC, qte DESC

II. Cours SQL

92

Agrégation des résultats

Il est possible d'utiliser des fonctions f d'agrégation dans le résultat d'uneIl est possible d'utiliser des fonctions f d'agrégation dans le résultat d'une

sélection.

Syntaxe :

SELECT f ( [ ALL | DISTINCT ] expression)

FROM ...

où f peut être COUNT nombre de tuples

SUM somme des valeurs d'une colonne

92

9292

SUM somme des valeurs d'une colonne

AVG moyenne des valeurs d'une colonne

MAX maximum des valeurs d'une colonne

MIN minimum des valeurs d'une colonne

Pour COUNT, on peut aussi utiliser COUNT(*)

Seul COUNT prend en compte les valeurs à NULL.

II. Cours SQL

93

Partitionnement des résultats:

Syntaxe

GROUP BY liste_attributsGROUP BY liste_attributs

HAVING condition avec fonction

Cette clause regroupe les résultats par valeur selon la condition

Dans l'ordre, on effectue

� la sélection SELECT

le partitionnement GROUP BY

93

� le partitionnement GROUP BY

� on retient les partitions intéressantes HAVING

� on trie avec ORDER BY.

II. Cours SQL

94

Partitionnement des résultats:

Matière Coef Note

Résultats (de Pierre) Quelle est la note moyenne pour chaque coefficient ?Matière Coef Note

Maths 4 15

Sc Nat 3 9

Sc Phy 3 12

Français 2 13

SELECT coef, Avg(note) as Moyenne

FROM Résultats

GROUP BY coef;

Coef Moyenne

1 11

2 12

3 10.5

4 15

?

Quels sont les coefficients auxquels participe une

9494

Sc Hum 2 11

Anglais 1 10

Sport 1 12

Quels sont les coefficients auxquels participe une seule matière ?

SELECT coef

FROM Résultats GROUP BY coef

HAVING count(*)=1;

Coef

4

II. Cours SQL

95

Plan

� Requêtes de consultation de tables

� Projection, Sélection, Jointure� Projection, Sélection, Jointure

� Tri, Agrégation, Partitionnement

� Requêtes de Modification de tables

� Ajout

� Suppression

Manipulation de tables, de vues et de bases de données� Manipulation de tables, de vues et de bases de données

95

II. Cours SQL

96

Insertion

Syntaxe :

Pour insérer un tuple complètement spécifié :

INSERT INTO Table VALUES (val1,..., valn);

Pour insérer un tuple incomplètement spécifié :

INSERT INTO Table (liste_attributs)VALUES (val1,..., valn);

On peut insérer un tuple à partir d'une relation ayant le même schéma.

INSERT INTO TableINSERT INTO Table

SELECT *

FROM ...

96

II. Cours SQL

97

Insertion exemple

Sur les relations Étudiants (#Num, Nom, Prénom, Age, Ville, CodePostal)ClubThéâtre(#Num, Nom, Prénom)ClubThéâtre(#Num, Nom, Prénom)

Ajouter l'étudiant Sylvain HEBON, 21 ans, habitant Nancy avec le numéro 634.

INSERT INTO ÉtudiantsVALUES (634, 'HEBON', 'Sylvain', 'Nancy', '54000', 21);

Ajouter tous les étudiants Vosgiens dans le Club de Théâtre

97

INSERT INTO ClubThéâtreSELECT #Num, Nom, PrénomFROM ÉtudiantsWHERE CodePostal LIKE '88%';

II. Cours SQL

98

Mise à jour

Syntaxe :UPDATE TableUPDATE TableSET attribut1 = expr1, ..., attributn = exprn

FROM ...WHERE ...

Les expressions peuvent êtreune constanteune valeur NULLune clause SELECT

98

une clause SELECT

II. Cours SQL

99

Mise à jour:

Sur la relation Étudiants (#Num, Nom, Prénom, Age, Ville, CodePostal)

UPDATE Étudiants

SET Age = Age + 1;

Sur la relation Étudiants (#Num, Nom, Prénom, Age, Ville, CodePostal)

Augmenter d'un an l'age de tous les étudiants.

On a appris que tous les étudiants de Bar-le-Duc on t déménagé à Nancy.

UPDATE ÉtudiantsUPDATE ÉtudiantsSET Ville = 'Nancy', CodePostal = '54000' WHERE Ville = 'Bar-Le-Duc';

II. Cours SQL

100

Suppression

� Syntaxe :

DELETE FROM TableDELETE FROM Table

[WHERE condition]

Remarque :

Si on supprime tous les tuples d'une relation,

le schéma de relation existe toujours !

Exemple :

Retirer de la liste tous les étudiants de plus de 22 ans.

!

100

Retirer de la liste tous les étudiants de plus de 22 ans.

DELETE FROM Étudiants

WHERE Age > 22;

II. Cours SQL

101

Création de table

Syntaxe :Syntaxe :CREATE TABLE nomTable (

Attribut Domaine [Contraintes ...],...Attribut Domaine [Contraintes ...],[Contraintes ... ] )

101

II. Cours SQL

102

Création de table

� Créer la table Stock1(Pièce, NbP, Fournisseur)

CREATE TABLE Stock1 (Pièce VARCHAR(20) NOT NULL,NbP INT,Fournisseur CHAR(20) NOT NULL,PRIMARY KEY (Pièce, Fournisseur)

102102

)

II. Cours SQL

103

Modification de table

� Modification de Schéma de la Table (Syntaxe variable !)

Exemple pour Oracle v6 :ALTER TABLE Table

[ADD (définition_attribut | Contrainte), [définition_attribut | Contrainte] ... )]

[MODIFY (définition_attribut [, définition_attribut ]... )][DROP CONSTRAINT contrainte]

Suppression complète d'une relation (et de son schéma) :

DROP TABLE Table;

103103

DROP TABLE Table;

Attention, toutes les données de la table sont perdues !

II. Cours SQL

104

Vue

�Une vue est une Table non stockée dans la base de données maisrecalculée à chaque utilisation.recalculée à chaque utilisation.Syntaxe :CREATE VIEW NomVue ASRequête_de_définition1

Exemple :CREATE VIEW Personnes_Âgées ASSELECT *FROM PersonnesWHERE Age > 70;

104104

La suppression s'effectue avec DROP VIEW NomVue;1 La requête ne doit pas contenir de tris (ORDER BY).

II. Cours SQL

105

Base de données

�Création d'une base de données

Syntaxe :CREATE DATABASE NomBdd;

Destruction totale d'une base de données

Syntaxe :DROP DATABASE NomBdd;

105105

106

Merci ☺