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
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
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
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
� 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.
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