Vous êtes sur la page 1sur 12

MERISE PARTIE n°1

Mael Le Clech Cours Méthode Merise – Base de données Page 1 sur 12

relationnelles – SQL

Base de données relationnelle = banque d’information (l’information donnée étant définie


par le système d’entreprise), sert à gérer les informations nécessaires à un système.

Première base de données créée par IBM en 1964 suite à un besoin de gérer des
informations, elle a été créée par des groupes de mathématiciens.

Le SQL a été créé à partir des mathématiques ensemblistes.

Avant pour gérer les données on utilisait des fichiers. Ils utilisaient chacun une structure
différente, il n’y avait donc pas de norme. Fonctionner sous forme de fichier pouvait
poser des problèmes de MAJ et/ou de doublons.
Alors que dans une base de données la donnée est stockée une et une seule
fois !

Une donnée = l’information la plus petite non décomposable et utile pour le système.
Pour qu’une donnée soit unique dans la base de données, on doit pouvoir la retrouver de
la façon la plus simple possible, on utilise pour cela

Pour créer les bases de données et de savoir ce dont on a besoin au sein d’une
entreprise, des Français ont créé une méthode d’analyse des systèmes d’information qui
s’appelle la méthode Merise aux alentours de 1970.
Aujourd’hui, toutes les méthodes d’analyse qui existent sont plus ou moins basées sur
Merise.

CREATION D’UNE BASE DE DONNEES

MCD = Modèle conceptuel de données, il sert à schématiser les besoins du système


d’information.

Avant de créer en lui-même le MCD, il faut d’abord renseigner un Dictionnaire de


données. On le renseigne en demandant aux personnes concernées ce dont elles ont
besoins, on se base également sur l’existant informatique et papier… Il s’établie aussi en
fonction de nos propres idées car effectivement en parlant avec les interlocuteurs de
l’entreprise, on peut faire des propositions par rapport à notre visions des choses.

Lors de la création du premier jet du dictionnaire des données, il faudra trouver les
informations qui serviront d’identifiant. Ensuite, il faudra créer des entités qui
représentent le regroupement des données concernant une même idée (ex : code client
– nom - prénom… donnera naissance à l’entité client). A partir du moment où on a trouvé
un identifiant, cela donnera lieu à la création d’une entité.

Dans l’exemple du type : « Code Client – Nom Client – Prénom client », le nom et le
prénom sont déterminés par l’identifiant, le nom et le prénom sont donc en dépendance
fonctionnelle avec l’identifiant.

Attention, lorsque l’on parle d’identifiant, on est bien au niveau du MCD et non de la base
de données, où on parlerait de clef primaire.

Dans une entité, chaque information s’appelle un attribut. Et l’ensemble des attributs et
l’identifiant permettent la création de l’entité.

Si par exemple lors de la conversation avec notre interlocuteur il nous dit qu’un client est
géré par un représentant, il faut bien pouvoir lier les informations, pour cela, il faut faire
des associations. Par exemple, il faudra créer une association entre « Client » et
« Représentant » qui s’appellera « Gérer » par exemple.

Pour finaliser le MCD, il faut poser les cardinalités.

27/06/2007 Support MERISE


MERISE PARTIE n°1
Mael Le Clech Cours Méthode Merise – Base de données Page 2 sur 12

relationnelles – SQL
Exercice :

- Des étudiants effectuent différents stages au sein d’organismes dont on conserve le


numéro, nom, nom de la personne à contacter, numéro de téléphone.
- Un stage réalisé par un étudiant peut être de type A ou B.
- Un stage commence et se termine à des dates propres à chaque étudiant.
- Différents étudiants peuvent faire un ou plusieurs stages au sein d’un organisme.
- Pour chaque étudiant on connaît le numéro de la carte étudiant, le nom, le prénom et
le numéro de téléphone.

Voici le MCD correspondant à cette situation :

Dictionnaire de données :

STAGE
ETUDIANT
ORGANISME
ET_NUMCART
ET_NOM
ET_PRENOM
ET_NUMTEL
ORG_NUM
ORG_NOM
ORG_CONTACT
ORG_NUMTEL
ST_NUM
ST_TYPE
ST_DATEDEB
ST_DATEFIN

ETUDIANT ORGANISME

ET_NUMCART ORG_NUM
ET_NOM ORG_NOM
ET_PRENOM ORG_CONTACT
ET_NUMTEL ORG_NUMTEL

1,n 1,n

Réaliser

1,1
STAGE

ST_NUM
ST_TYPE 1,1
Effectuer
ST_DATEDEB
ST_DATEFIN

27/06/2007 Support MERISE


MERISE PARTIE n°1
Mael Le Clech Cours Méthode Merise – Base de données Page 3 sur 12

relationnelles – SQL

OU
ETUDIANT Effectuer
ORGANISME
1,n ST_TYPE 1,n
ST_DATEDEB
ET_NUMCART ST_DATEFIN ORG_NUM
ET_NOM ORG_NOM
ET_PRENOM ORG_CONTACT
ET_NUMTEL ORG_NUMTEL

Une association réflexive = lorsque l’on présente une notion de hiérarchie. Par
exemple, on veut gérer une généalogie, pour se faire on va utiliser une seule entité qui
est PERSONNE.

0,n
PERSONNE

ID_PERS
NOM_PERS Enfant de

2,2

27/06/2007 Support MERISE


MERISE PARTIE n°1
Mael Le Clech Cours Méthode Merise – Base de données Page 4 sur 12

relationnelles – SQL
Exercice avec association réflexible :

Un grand magasin conserve le numéro, le nom, la date de naissance, l’adresse, le salaire,


le numéro du supérieur hiérarchique, le code du rayon ou le secteur, les activités de
chacun de ses employés.
Chaque employé n’a qu’un seul supérieur hiérarchique, n’appartient qu’à un seul rayon
mais peut avoir plusieurs activités (ex vendeur caissier étalagiste…).
A chaque code de rayon ou de secteur correspond un libellé (ex jouets, vêtements…).
Un rayon ou un secteur est situé dans un étage. Sur un même étage il peut y avoir
plusieurs rayons ou secteurs.
Chaque employé exerce une activité depuis une certaine date.

Voici le MCD correspondant à cette situation :

27/06/2007 Support MERISE


MERISE PARTIE n°1
Mael Le Clech Cours Méthode Merise – Base de données Page 5 sur 12

relationnelles – SQL
Exercice :

Une société dispose de centres délocalisés dans différentes régions de France.


La société est organisée en services (recherches, administration, vente).
Chaque service est installé dans une et une seule agglomération, mais une
agglomération peut recevoir plusieurs services.
Chaque service est référencé par un code service.
Les numéros d’employés, nom, prénom, salaire, commission de chacun des employés de
cette société sont stockés.
L’historique des fonctions de chacun des employés de cette société sont stockés.
Cet historique permet de connaître chacun des postes, des services et des dates par
lequel un employé est passé.

Voici le MCD correspondant à cette situation :

27/06/2007 Support MERISE


MERISE PARTIE n°1
Mael Le Clech Cours Méthode Merise – Base de données Page 6 sur 12

relationnelles – SQL
Exercice :

Une société propose à ses clients de concevoir et monter ses meubles soi mêmes, une
liste de codes de composants et description de ces composants (tiroirs, portes, fonds).
Chaque composant peut être de plusieurs couleurs, mais suivant sa couleur le composant
est d’un prix différent. Ainsi une porte rouge est plus chère qu’une porte blanche.
Certains composants comme les vis sont d’une couleur.
Une composition propre à un client référencée par un numéro, attribuée à une date
donnée, éventuellement définie par un intitulé est constituée d’un ou de plusieurs
composants, chacun de ces composants est présent en quantité variable.
La composition constitue le meuble conçu par le client.
Chaque client est référencé avec un ensemble de caractéristiques qui permettent de
l’identifier et le contacter.

Voici le MCD correspondant à cette situation :

27/06/2007 Support MERISE


MERISE PARTIE n°1
Mael Le Clech Cours Méthode Merise – Base de données Page 7 sur 12

relationnelles – SQL
Exercice :

RESTO

Voici le MCD correspondant à cette situation :


Utilisation Ternaire entre RECETTE, MENU et TYPE

27/06/2007 Support MERISE


MERISE PARTIE n°1
Mael Le Clech Cours Méthode Merise – Base de données Page 8 sur 12

relationnelles – SQL

ACCESS

Tous les énoncés suivants concernent la base ACCESS « Gestion de temps »


(voir clef usb).

Note : Une requête SQL avec « SELECT * FROM …. » est moins efficace que de lister tous
les champs « SELECT NOM, PRENOM, AGE FROM …. »

Sur access pour créer une requette :

Sélectionnez les tables a afficher

Maintenant a vous de créer votre requête

27/06/2007 Support MERISE


MERISE PARTIE n°1
Mael Le Clech Cours Méthode Merise – Base de données Page 9 sur 12

relationnelles – SQL
Exemple pour Afficher les noms des clients et les villes triés par ville.

Pour voir le résultat en SQL ou même pour directement écrire la requête en SQL :

Pour voir le résultat :

27/06/2007 Support MERISE


MERISE PARTIE n°1
Mael Le Clech Cours Méthode Merise – Base de données Page 10 sur 12

relationnelles – SQL
EXERCICE :

Req1 = Afficher les numéros, les noms des clients et les villes triés par le numéro en
ordre décroissant.

SELECT clients.NumCli, clients.RaiSocCli, clients.VilleCli


FROM clients
ORDER BY clients.NumCli desc;

Req2 = Afficher tous les clients qui habitent le département « 92 »

SELECT clients.NumCli, clients.RaiSocCli, clients.VilleCli, clients.CPCli


FROM clients
WHERE clients.CPCli BETWEEN "92000" AND "92999";

Req3 = Afficher tous les clients dont le collaborateur n’est pas « JPE »

SELECT clients.RaiSocCli
FROM clients
WHERE clients.CodColCli<>"JPE";

Req4 = Afficher la liste des missions démarrant après le 31/12/2000

SELECT NumMis, LibelleMis


FROM missions
WHERE DateDebutMis > #12/31/2000#;

Req5 = Afficher les habitants du 92 et du 94.

SELECT clients.RaiSocCli
FROM clients
WHERE CPCli BETWEEN "92000" AND "92999"
OR CPCli BETWEEN "94000" AND "94999";

Req6 = Afficher tous les temps de plus d’une heure depuis le 01/01/2001

SELECT NumMisTemps, DateTemps, DureeTemps


FROM temps
WHERE DureeTemps > 1
AND DateTemps >=#01/01/2001#;

Req7 = Afficher tous les clients habitant EVRY et de tous les clients qui ont le
collaborateurs « VPA »

SELECT RaiSocCli, VilleCli


FROM clients
WHERE VilleCli LIKE "Evry*"
AND CodColCli = "VPA";

27/06/2007 Support MERISE


MERISE PARTIE n°1
Mael Le Clech Cours Méthode Merise – Base de données Page 11 sur 12

relationnelles – SQL

Req8 = Afficher le nom des collaborateurs, leur taux horaire HT et TTC

SELECT collaborateurs.NomCol, collaborateurs.PrixHoraireCol, ([PrixHoraireCol]*1.196) &


" €" AS PrixHoraireTTC
FROM collaborateurs;

Req9 = Afficher le numéro de client, le numéro de mission et le nombre de jour écoulés


depuis le début de chaque mission.

SELECT missions.NumMis, missions.NumCliMis, (Date()-missions.DateDebutMis) AS


["Nombre de jours :"]
FROM missions;

Req10 = Compter le nombre de client par département

SELECT LEFT(CPCli,2) AS DEPARTEMENT, COUNT(NumCli) AS NOMBRECLIENT


FROM clients
GROUP BY LEFT(CPCli,2);
LEFT(CPCli,2) signifie les 2 chiffre en partant de la gauche

Req11 = Afficher la date de la première mission effectuée pour chaque client

SELECT NumCliMis, MIN(DateDebutMis) AS ['Premiere mission']


FROM missions
GROUP BY NumCliMis;

27/06/2007 Support MERISE


MERISE PARTIE n°1
Mael Le Clech Cours Méthode Merise – Base de données Page 12 sur 12

relationnelles – SQL

Req12 = Temps passé par mission

SELECT NumMisTemps, SUM(DureeTemps) AS DUREETOTALE


FROM temps
GROUP BY NumMisTemps;

Req13 = Temps en moyenne pour la durée des missions par collaborateur

SELECT CodColTemps, AVG(DureeTemps)


FROM temps
WHERE YEAR(DateTemps) = 2000
GROUP BY CodColTemps;

27/06/2007 Support MERISE