Vous êtes sur la page 1sur 30

MAS1ER 2 MIA1

Projet Modlisation
de
Bases De donnes
Cestion de bibliothques
Prsent par le binme :
- ALIOUANE Zineb
- MARION Thomas
Dirig par :
Mme CAMPIONI Christine MARS 2005
2
Nous tenons a remercier Mme Christine CAMPIONI
Pour sa disponibilite, sa patience,
Son suivi de notre travail
Et
Le secretariat du departement Mathematiques
Pour leur precieuse aide
3
Sommaire
1. Introduction
- Presentation du sujet
- L`application
2. Donnes
- Analyse
- Dictionnaire des donnees
- Regles de gestion
- Modelisation
- Determination des objets
- Determination des relations
- Modele Entite /Association (E/A) des donnees
- Passage au modele relationnel
3. Implmentation
- Creation des tables
- Insertion de donnees
- Suppression de donnees
- Quelques requtes
4. Conclusion
4
Introduction
Prsentation du sujet
Ce projet a pour objectiI la conception d`une base de donnees qui represente et
implemente la gestion de bibliotheques selon le modele conceptuel et le modele relationnel.
Il s`agit donc de :
- Modeliser l`organisation de la bibliotheque c'est-a-dire deIinir le modele
conceptuel de donnees. On utilisera le modele entite-relation
- Convertir le schema entite-association en schema relationnel
- Implementer le schema de la base de donnees
- Inserer des donnees
- Implementer en utilisant le langage SQL et la base de donnees ORACLE.
L`application
On va representer et gerer le mode de Ionctionnement de plusieurs bibliotheques.
Chaque bibliotheque est identiIiee par un numero (Numbibliotheque) et caracterisee par un
nom (libellebibliotheque), une adresse, a une duree d`emprunt, un nombre maximal de livres
ou de CDs empruntes (Nbemprunt) et un responsable.
Une bibliotheque est composee d`un certain nombre de livres et de CDs :
- Chaque livre est identiIie par un code ISBN, caracterise par un nom, un nombre
d`exemplaires, sa date de parution et par un ou plusieurs auteurs. Il possede un
certain nombre d`exemplaires (Nbexemplaire) et un certain nombre de mots-cleI
(mots-cleI) permettant le classement analytique.
- Chaque CD est identiIie par un code (Codecd), caracterise par un nom
(libellecd), un nombre d`exemplaires, sa date de parution, par un ou plusieurs
auteurs ou compositeurs et un type (inIormatique, multimedia,...).
La bibliotheque possede plusieurs exemplaires de chaque livre et de chaque CD .Un
exemplaire est identiIie par un numero (Numex) et par le code du livre ou du CD
correspondant, il est caracterise par une date d`achat (Date achat), son etat et sa disponibilite.
Les exemplaires sont classes sur des etageres. Chaque etagere est identiIiee par un numero
(Numetagere) et par le numero de la bibliotheque correspondante (Numbibliotheque), elle
est caracterisee par un secteur (localisation).
Les exemplaires peuvent tre empruntes par les membres de la bibliotheque, un membre est
repere par un numero (Nummembre) et caracterise par son nom, son prenom, son adresse,
sa date d`inscription, sa date de radiation, le montant de sa cotisation et par le numero de la
bibliotheque ou il s`est inscrit.
Les bibliotheques gerent les prts et les reservations de livres ou de CDs. Elles gardent
l`historique des prts eIIectues pour un livre ou un CD donne.
5
Donnes
1. Analyse
1. 1. Dictionnaire des donnes
NOMS SIGNIFICATION TYPE
Contraintes ou
rgle de calcul
Numbibliotheque IdentiIiant de la bibliotheque Nombre
Libellebibliotheque Nom de la bibliotheque Chane de caracteres
Adresse De la bibliotheque ou du membre Chane de caracteres
N
o
ruecode
postalville
Dureeemprunt Duree d`emprunt d`un livre ou d`un CD Nombre 21 jours
Nbemprunt Nombre maximal des livres ou des CDs
empruntes
Nombre <3
Responsable Responsable de la bibliotheque Chane de caracteres
ISBN IdentiIiant du livre nombre
Libellelivre Titre du livre Chane de caracteres
Nbexemplaire Nombre d`exemplaires de livres ou de
CDs
nombre
Dateparution Date de parution des livres ou des CDs Date
Codecd IdentiIiant du CD Chane de caracteres
Libellecd Titre du CD Chane de caracteres
Type Categorie du CD (jeux, musique,
multimedia.)
Chane de caracteres
Numauteur IdentiIiant de l`auteur du livre nombre
NumauteurCD IdentiIiant de l`auteur du CD nombre
Nomauteur Nom des auteurs du livre Chane de caracteres
NomauteurCD Nom des auteurs du CD Chane de caracteres
6
MotscleI Permet le classement des livres par sujet Chane de caracteres Nombre de mot-
cle~1
Numex IdentiIiant de l`exemplaire du livre ou du
CD
nombre
Etat Etat de l`exemplaire (livre ou CD)
Chane de caracteres
(bon etat, mauvais
etat)
Disponible Disponibilite de l`exemplaire Chane de caracteres
(Oui ou Non)
Dateachat Date d`achat Date
Dateachat~date
parution
Datedebut Date ou commence le prt d`un livre ou
d`un CD
Date
DateIin Date du rendu d`un livre ou d`un CD
(dernier delai d`emprunt)
Date
DateIin~
datedebut
Daterelance Date de la relance Date
Daterelance~da
teIin
Dateres Date ou le membre reserve un livre ou un
CD
Date
Numetagere IdentiIiant de l`etagere nombre
Localisation
DiIIerents secteurs de la bibliotheque
(mathematiques, inIormatique,
histoire.)
Chane de caracteres
Nummembre IdentiIiant d`un adherent nombre
Nom Nom d`un adherent Chane de caracteres
Prenom Prenom de l`adherent Chane de caracteres
Telephone Numero de telephone d`un membre nombre
Mail Mail d`un membre Chane de caracteres
Dateinscription Date de l`inscription d`un membre Date
Dateradiation Date ou l`inscription prendra Iin Date
Dateradiation ~
dateinscription
Cotisation Montant de la cotisation Nombre
7
1-2 Rgles de gestion
Une bibliotheque est composee de 1 ou plusieurs livres.
Un livre est disponible dans une ou plusieurs bibliotheques.
Une bibliotheque est composee de 1 ou plusieurs CDs.
Un CD est disponible dans une ou plusieurs bibliotheques.
Un livre peut tre ecrit par un ou plusieurs auteurs.
Un auteur peut ecrire un ou plusieurs livres.
Un CD peut tre ecrit ou compose par un ou plusieurs auteurs.
Un auteur peut composer un ou plusieurs CDs.
Un livre peut traiter d`un ou de plusieurs sujets.
Un sujet peut tre traite ou non par un ou plusieurs livres.
Un exemplaire est un exemplaire d`un et d`un seul livre ou CD.
Un livre ou un CD peut avoir ou non plusieurs exemplaires.
Un exemplaire peut ou non tre prte a un et un seul adherent.
Un adherent peut ou non emprunter plusieurs exemplaires.
Un adherent peut ou non reserver plusieurs livres ou plusieurs CDs.
Un livre ou un CD peut tre reserve a aucune ou a une personne.
Une bibliotheque peut tre composee ou non de plusieurs etageres.
Une etagere appartient a une et une seule bibliotheque.
Une etagere peut contenir ou non plusieurs livres ou CDs.
Un livre ou un CD appartient a une et une seule etagere.
Un adherent est inscrit a au moins une bibliotheque.
Dans une bibliotheque sont inscrits aucun ou plusieurs adherents.
Rgles rsiduelles
Un adherent ne peut emprunter qu`un seul exemplaire d`un mme livre ou d`un mme CD.
Un adherent qui n`est pas a jour dans sa cotisation ne peut pas emprunter un livre ou un CD.
Un livre ou un CD peut tre reserve seulement s`il n`y a pas d`exemplaire disponible.
Un adherent ne peut pas reserver un livre ou un CD qu`il a deja ou qui lui ete attribue.
Un exemplaire rendu ou achete est un exemplaire disponible.
Un exemplaire est disponible s`il n`est pas prte ou attribue.
Un adherent ne peut emprunter plus de 3 exemplaires de CDs ou de livres.
La duree d`emprunt d`un livre ou d`un CD est de 21 jours.
Le delai entre un rendu et un nouvel emprunt pour le mme adherent est d`une semaine.
8
Un adherent peut emprunter un livre ou un CD si et seulement si il a paye une cotisation.
Cotisation ~0 (NOT NULL) si date d`inscription EXISTE et date radiationNULL.
Il ne Iaut pas que Date radiation soit posterieure a date d`inscription .
Il ne Iaut pas que Date relance soit posterieure a date Iin d`emprunt .
Il ne Iaut pas que Date debut d`emprunt soit posterieure a date Iin d`emprunt .
Il ne Iaut pas que Date parution d`un livre ou d`un CD soit posterieure a date d`achat
d`un livre ou d`un CD.
2. Modlisation
2.1 Dtermination des objets
On determine les objets suivants a partir du dictionnaire des donnees.
BIBLIOTHEQUE :
Represente les diIIerentes bibliotheques .Elle a les proprietes suivantes :
-Son numero (Numbibliotheque)
-Son nom (libellebibliotheque)
-Son adresse (Adresse)
-Son responsable (responsable)
-La duree maximale d`emprunt (dureeemprunt)
-Le nombre maximal de documents empruntes (Nbemprunt)
Son identiIiant est son numero.
ETAGERE :
Represente les diIIerentes etageres qui composent chaque bibliotheque. Ses proprietes sont :
-Son numero (numetagere)
-Les diIIerents rayons de chaque bibliotheque (Localisation)
Son identiIiant est son numero.
LIVRE :
Represente les ouvres de chaque bibliotheque. Ses proprietes sont :
-Son numero ISBN (ISBN)
-Intitule de chaque livre (Libellelivre)
-Le nombre d`exemplaires de chaque livre dont dispose chaque
Bibliotheque (Nbexemplaire)
-Les dates de parution de chaque ouvre (Dateparution)
Son identiIiant est son numero ISBN qui est propre a chaque ouvre.
CD :
Represente les diIIerents disques compacts dont dispose chaque bibliotheque .Ses proprietes
sont :
-Le code propre a chaque CD (Codecd)
-Son titre (Libellecd)
-Sa categorie (Type)
-Son nombre d`exemplaires (Nbexemplaire)
-Sa date de parution (Dateparution)
Son identiIiant est son code.
9
EXEMPLAIRE :
Represente les diIIerents exemplaires de livres ou de CDs dont disposent les diIIerentes
bibliotheques. Ses proprietes sont :
-Son numero (Numex)
-Sa disponibilite (Disponibilite)
-L`etat de chaque exemplaire (Etat)
-Sa date d`achat (Dateachat)
Son identiIiant est son numero.
AUTEURSCD
Represente les diIIerentes personnes qui composent les CDs. Ses proprietes sont :
-Le numero qui represente l`auteur (NumauteurCD)
-Le nom de l`auteur (Nom auteurCD)
Son identiIiant est son numero.
AUTEUR
Represente les auteurs des ouvres .Ses proprietes sont :
-Son numero (Numauteur)
-Son nom (Nomauteur)
Son identiIiant est son numero.
SUJET
Represente les diIIerents sujets traites pars les diIIerentes ouvres .Ils sont identiIies par les
diIIerents mots-cleI qui permettent leur classement analytique.
MEMBRE
Represente les adherents de chaque bibliotheque. Ses proprietes sont :
-Son numero (Nummembre)
-Son nom (Nom)
-Son prenom (Prenom)
- Son adresse (Adresse)
-Son telephone (Telephone)
-Son adresse mail (Mail)
Son identiIiant est son numero.
2.2 Dtermination des relations
Nous avons determine les objets, maintenant nous pouvons exhiber les relations entre ces
diIIerentes entites a partir des regles de gestion en precisant les cardinalites autrement dit les
nombres quantiIiant les relations entre les objets.
10
Une bibliotheque est composee de 1 ou plusieurs livres, soit une cardinalite de 1..n.
Un livre est disponible dans une ou plusieurs bibliotheques soit une cardinalite de 1..n.
Une bibliotheque est composee de 1 ou plusieurs CDs. La cardinalite est donc de 1..n.
Un CD est disponible dans une ou plusieurs bibliotheques, soit une cardinalite de 1..n.
Un livre peut tre ecrit par un ou plusieurs auteurs donc la cardinalite est de 1..n.
Un auteur peut ecrire un ou plusieurs livres donc la cardinalite est de 1..n.
PossedeL
LIVRE
ISBN
Libellelivre
Nbexemplaire
Dateparution
BIBLIOTHEQUE
Numbibliotheque
Libellebibliothequ
Adresse
Dureeemprunt
Nbemprunt
Responsable
1..n 1..n
BIBLIOTHEQUE
Numbibliotheque
Libellebibliotheque
Adresse
Dureeemprunt
Nbemprunt
Responsable
CD
Codecd
Libellecd
Nbexemplaire
Dateparution
Type
PossedeCD
1..n
1..n
LIVRE
ISBN
Libellelivre
Nbexemplaire
Dateparution
Ecrit par
AUTEUR
Numauteur
Nomauteur
1.
1..n 1..n
11
Un CD peut tre ecrit ou compose par un ou plusieurs auteurs, soit une cardinalite de1..n.
Un auteur peut composer un ou plusieurs CDs, soit une cardinalite de 1..n.
Un livre peut traiter d`un ou de plusieurs sujets. La cardinalite est de 1..n.
Un sujet peut tre traite ou non par un ou plusieurs livres, soit une cardinalite de 0..n.
Un exemplaire est un exemplaire d`un et d`un seul livre. La cardinalite est de 1..1.
Un livre peut avoir ou non plusieurs exemplaires, soit une cardinalite de 0..n.
CD
Codecd
Libellecd
Nbexemplaire
Dateparution
Ecrit par
AUTEURCD
NumauteurCD
NomauteurCD
1..n 1..n
LIVRE
ISBN
Libellelivre
Nbexemplaire
Dateparution
Traite
SUJET
MotscleI
0..n 1..n
LIVRE
ISBN
Libellelivre
Nbexemplaire
Dateparution
EXEMPLAIRE
Numex
Etat
Disponible
Dateachat
Possede
1..1 0..n
12
Un CD peut avoir ou non plusieurs exemplaires, soit une cardinalite de 0..n.
Un exemplaire est un exemplaire d`un et d`un seul CD. La cardinalite est de 1..1.
Un exemplaire peut ou non tre prte a un et un seul adherent, soit une cardinalite de 0..1.
Un adherent peut ou non emprunter plusieurs exemplaires, soit une cardinalite de 0..n.
Un adherent peut ou non reserver plusieurs livres, soit une cardinalite de 0..n.
Un livre peut tre reserve a une personne. La cardinalite est donc de 0..1.
CD
Codecd
Libellecd
Nbexemplaire
Dateparution
EXEMPLAIRE
Numex
Etat
Disponible
Dateachat
Possede
0 ..n 1..1
EXEMPLAIRE
Numexemplaire
Etat
Dateachat
Disponible
Emprunte
Datedebut
DateIin
Daterelance
MEMBRE
Nummembre
Nom
Prenom
Adresse
Telephone
Mail
0..1
0..n
MEMBRE
Nummembre
Nom
Prenom
Adresse
Telephone
Mail
LIVRE
ISBN
Libellelivre
Nbexemplaire
Dateparution
ReserveL
Dateres
0..n 0..1
13
Un adherent peut ou non reserver plusieurs CDs, soit une cardinalite de 0..n.
Un Cd peut tre reserve a une personne. La cardinalite est donc de 0..1.
Une bibliotheque peut tre composee ou non par plusieurs etageres. La cardinalite est de 0..n.
Une etagere appartient a une et une seule bibliotheque. Soit une cardinalite de 1,1.
Une etagere peut contenir ou non plusieurs livre. La cardinalite est donc de 0..n.
Un livre appartient a une et une seule etagere. La cardinalite est de 1..1.
MEMBRE
Nummembre
Nom
Prenom
Adresse
Telephone
Mail
ReserveCD
Dateres
CD
Codecd
Libellecd
Nbexemplaire
Dateparution
Type
0..n 0..1
BIBLIOTHEQUE
Numbibliotheque
Libellebibliotheque
Adresse
Dureeemprunt
Nbemprunt
Responsable
ETAGERE
Numetagere
Localisation
compose
0..n 1..1
ETAGERE
Numetagere
Localisation
LIVRE
ISBN
Libellelivre
Nbexemplaire
Dateparution
contient
0..n 1..1
14
Une etagere peut contenir ou non plusieurs CDs. La cardinalite est donc de 0..n.
Un CD appartient a une et une seule etagere. La cardinalite est de 1..1.
Un adherent est inscrit a au moins une bibliotheque, soit une cardinalite de 1..n.
Dans une bibliotheque sont inscrits aucun ou plusieurs adherents, soit une cardinalite de 0..n.
ETAGERE
Numetagere
Localisation
contient
CD
Codecd
Libellecd
Nbexemplaire
Dateparution
Type
1..1
0..n
MEMBRE
Nummembre
Nom
Prenom
Adresse
Telephone
Mail
BIBLIOTHEQUE
Numbibliotheque
Libellebibliotheque
Adresse
Dureeemprunt
Nbemprunt
Responsable
Inscrit
Dateinscription
Dateradiation
Cotisation
1..n 0..n
15
2-3 Modle Entit /Association (E/A) des donnes
Avant de reIlechir au schema relationnel d`une application, il est bon de modeliser la
problematique a traiter d`un point de vue conceptuel et independamment du logiciel utilise.
Le modele E/A est un modele conceptuel de haut niveau. Il est souvent utilise comme modele
de donnes pivot de methode de conception (Merise par exemple). Il a ete elabore en 1976 par
P.P.Chen., il s`agit d`une des premiere tentatives pour integrer au modele de donnees plus de
semantique, aIin de combler le Iosse qui existe entre les modeles de donnees hierarchiques,
reseaux et relationnels et le monde reel. Il permet donc de se rapprocher davantage de la
realite consideree.
Plusieurs propositions ont ete Iaites par la suite pour l`etendre. Ce modele presente de
nombreux avantages, il est relativement naturel (pas trop eloigne de notre mode de pensee),
oIIre une representation graphique souvent assez claire, independant du niveau physique et
incorpore une semantique relativement riche (cardinalite, identiIication). Cependant, il a un
Iort handicape du Iait qu`il n`a pas de langage de manipulation associe.
Les concepts du modle E/A
Dfinitions:
- entite : une entite est une population d`individus n`ayant que des caracteristiques
comparables, autrement dit, c`est un objet du monde reel qui se distingue
clairement des autres ;
- les entites ayant mmes proprietes sont regroupees dans des ensembles d`entites
(ou type d`entite) ;
- association : une association est un lien quelconque entre plusieurs entites qui
exprime un rapport existant entre ces entites. Son existence est donc subordonnee a
l`existence des entites qu`il relie ;
- le degre d`une association est le nombre d`ensembles d`entite y participant
- chaque entite ou chaque association a des proprietes particulieres attributs qui
la decrivent. Un attribut est donc, la description d`une caracteristique d`une entite
ou d`une relation
- une entite donnee a des valeurs pour chacun de ses attributs
- un attribut peut tre compose hierarchiquement de plusieurs autres attributs
(attribut composite par opposition a attribut simple ou atomique)
- un attribut peut tre monovalue ou multivalue
- la valeur d`un attribut peut tre derivee d`une ou plusieurs autres valeurs
d`attributs ;
- chaque individu d`une entite doit tre identiIiable de maniere unique .C`est
pourquoi les entites doivent posseder un attribut sans doublon, l`identifiant.
Donc, chaque entite est composee d`au moins une cle primaire, c`est- a- dire qu`un
ou plusieurs champ determinent completement les valeurs des autres champs de
cette entite. Elle peut posseder aussi une cle etrangere : il s`agit d`un champ d`une
entite qui joue le rle de cle primaire dans une autre entite de base.
- un domaine de valeur est associe a chaque attribut simple (et par consequent, on
peut construire le domaine de ses attributs composites a partir du produit cartesien
du domaine de ses attributs simples.
16
- contraintes sur les ensembles d`associations : contraintes structurelles
De maniere a decrire plus precisement la semantique des associations, leur deIinition est
precisee par des proprietes qui sont les cardinalites minimales et maximales, autrement dit le
minimum et le maximum de Iois qu`un individu de l`entite peut tre concerne par
l`association. Les valeurs les plus Irequentes pour la cardinalite minimale sont 0 (association
partielle), 1 (association totale), N (association multivaluee). Pour la cardinalite maximale on
rencontre 1 ou N. Ces cardinalites sont importantes lorsque l`on realise la transIormation
d`une modelisation E/A en modelisation relationnelle.
Remarque : si une cardinalite est connue et vaut 2, 3 etc. On considere quand mme qu`elle
est indeterminee N, de telle sorte qu`on puisse avoir que des cardinalites 0, 1 ou N. Cela se
justiIie par le Iait que mme si on connat N au moment de la conception, il se peut que cette
valeur evolue avec la politique de l`entreprise. Il vaut mieux considerer N comme une
inconnue des le depart.
Voici le schema du modele Entite /Association pour notre base de donnees de gestion de
bibliotheques.
17
Bibliothque
Numbibliotheque
Libellebibliotheque
Adresse
Dureeemprunt
Nbemprunt
Responsable
Membre
Nummembre
Nom
Prenom
Adresse
Telephone
Mail
Etagre
Numetagere
Localisation
Livre
ISBN
Libellelivre
Nbexemplaire
Dateparution
Sujet
MotcleI Exemplaire
Numex
Etat
Disponible
Dateachat
Auteur
Numauteur
Nomauteur
AuteurCD
NumauteurCD
NomauteurCD
CD
Codecd
Libellecd
Nbexemplaire
Dateparution
Type
Inscrit
Dateinscription
Dateradiation
Cotisation
Compose
PossedeL
Traite
reserveL
dateres
Contient
Possede
Ecrit par
Emprunte
Datedebut
DateIin
Daterelance
ReserveCD
Dateres
Possede
Ecrit par
Contient
PossedeCD
0,n
1,n
1,1
0,n
1,n
1,n
0,n
0,n
1,n
0,1
0,n
1,n
0,n
1,1
0,n
1,1
1,n
1,n
0,n
1,1
0,n
0,n
0,1
1,n 1,n
1.1
1,n
1,1
18
3. Passage au modle relationnel
Aucun SGBD n`implemente le schema Entite/Association. Cependant, il existe des
algorithmes permettant de passer au modele relationnel Iacilitant ainsi l`implementation.
Comparaison modle E/A et relationnel
Modle E/A Modle relationnel
Ensemble d`entite relation
Entite nuplet
Attribut simple attribut atomique
Attribut composite simule par un ensemble d`attributs
Attribut derive simule par une vue
Ensemble d`entite Iaible simule par une relation
Ensemble d`associations relation
Association nuplet
Ecrire le schema relationnel consiste a traduire les classes d`entites et les relations en tables.
Chaque relation a pour attributs les proprietes qui caracterisent la classe d`entite
correspondante.
Pour traduire un MCD (E/A) en troisieme Iorme normale en un MLDR (schema relationnel),
il suIIit d`appliquer six regles :
Regles portant sur la transIormation des ensembles d`entites :
(R1) pour chaque ensemble d`entites identiIie E, on cree une relation R dont le schema est
celui de l`ensemble d`entites (les attributs composites sont aplatis, c`est a dire on concatene
leur deIinition). La cle de R est une des cles de E.
(R2) pour chaque ensemble d`entites non identiIie I ayant un identiIiant etranger E, on cree
une relation R qui comprend tous les attributs de I. De plus, on deIinit comme cle etrangere
dans R, les attributs cles de la relation correspondant a E. La cle de R est la concatenation de
la cle partielle de I et de la cle de l`identiIiant etranger.
Regles portant sur la transIormation des ensembles d`associations :
(R3) chaque ensemble d`associations est transIorme en une relation dont le schema est
constitue d`une part de la cle de chacun des ensembles des entites participants a l`association
et d`autre part (le cas echeant) des attributs propres a l`ensemble d`association. La cle de la
relation obtenue se deduit de l`analyse des cardinalites de l`ensemble d`association.
Cette regle conduit a produire un grand nombre de relations et ne derive donc pas la solution
la plus compacte (en termes de nombres de relations). Pour obtenir un nombre minimum de
relations, il Iaut appliquer a la place de R3, les regles R3` et R4` :
19
(R3`) pour chaque ensemble d`association binaire R de type 1 :1 entre les ensembles d`entites
S et T (representes par les relations RS et RT respectivement) on inclut dans la deIinition de
RS comme cle etrangere la cle de RT. Tous les attributs simples de R sont ajoutes a la
deIinition de S.
(R4`) pour chaque ensemble d`association binaire A de type M : N ou pour chaque ensemble
de relation A de degre superieur a 2, on cree une nouvelle relation RA pour representer A. On
met dans RA comme cle etrangere, les cles de toutes les relations correspondant aux
ensembles d`entites participant a A. On ajoute egalement a RA tous les attributs deIinis sur A.
La cle de RA est la concatenation de cle etrangere.
Regles portant sur la transIormation des attributs multivalues :
(R5) pour chaque attribut multivalue M d`un ensemble d`entites E (idem pour un ensemble
d`associations), on cree une nouvelle relation RM qui comprend un attribut monovalue
correspondant a A plus la cle de RE (relation representant E). La cle de RM est la
concatenation des deux attributs.
Regles portant sur la transIormation des attributs derives :
(R6) chaque attribut derive est represente par une vue dont la deIinition correspond a la
traduction en SQL de la regle de derivation.
En appliquant ces regles, nous obtenons le modele relationnel suivant :
20
Schma relationnel
Bibliothque (numbibliotheque, libellebibliotheque, adresse, dureeemprunt, nbemprunt,
responsable)
Membre (nummembre, nom, prenom, adresse, telephone, mail)
Etagere (numetagere, localisation, numbibiotheque)
Livre (ISBN, libellelivre, nbexemplaire, dateparution, numetagere, nummembre,
numbibliotheque)
Exemplaire (numex, etat, disponible, dateachat, ISBN, nummembre, Codecd)
Auteur (numauteur, nomauteur)
CD (Codecd, libellecd, nbexemplaire, dateparution, type, numetagere,
numbibliotheque, nummembre)
AuteurCD (numauteurCD, nomauteurCD)
Sujet (motscleI)
Inscrit (dateinscription, dateradiation, cotisation, nummembre, numbibliotheque)
ReserveL (dateres, nummembre, ISBN)
ReserveCD (dateres, nummembre, Codecd)
Traite (motcleI, ISBN)
Livre Ecrit par (ISBN, numauteur)
CD Ecrit par (Codecd, numauteurCD)
Emprunte (datedeb, dateIin, daterelance, dateres, Codecd, nummembre)
Lgende :
Souligne : cle primaire
Italique : cle etrangere
21
Implmentation
1- Cration des tabIes
// Cration ou remplacement de la table Bibliotheque
CREATE or REPLACE TABLE Bibliotheque (
num_bibliotheque integer(10) primary key,
libelle_bibliotheque varchar (20),
adresse varchar(50),
duree_emprunt integer(2) check duree_emprunt=21,
nb_emprunt integer(1) check nb_emprunt<=3,
responsable varchar (20)) ;
// Cration ou remplacement de la table Membre
CREATE or REPLACE TABLE `Membre` (
`num_membre` NT(10),
`nom` VARCHAR (50),
`prenom` VARCHAR(50),
`adresse` VARCHAR(255),
`telephone` NT(10),
`mail` VARCHAR(50),
PRMARY KEY (`num_membre`));
// Cration ou remplacement de la table Etagere
CREATE or REPLACE TABLE `Etagere` (
`num_etagere` NT(10),
`localisation` VARCHAR(50),
`num_bibliotheque` NT(10),
PRMARY KEY (`num_etagere`),
CONSTRANT fk_nb FOREGN KEY (num_bibliotheque) REFERENCES
Bibliotheque(num_bibliotheque));
// Cration ou remplacement de la table Livre
CREATE or REPLACE TABLE `Livre` (
`SBN` NT(10),
`libelle_livre` VARCHAR(50),
`nb_exemplaire` NT(1),
`date_parution` DATE,
`num_etagere` NT(10),
num_bibliotheque NT(10),
PRMARY KEY (`SBN`),
22
CONSTRANT fk_ne FOREGN KEY (num_etagere) REFERENCES
Etagere(num_etagere),
CONSTRANT fk_nm FOREGN KEY (num_membre) REFERENCES
Membre(num_membre),
CONSTRANT fk_nb FOREGN KEY (num_bibliotheque) REFERENCES
Membre(num_bibliotheque)
);
// Cration ou remplacement de la table Exemplaire
CREATE or REPLACE TABLE `Exemplaire` (
`num_exemplaire` NT(10),
`etat` VARCHAR(25),
`date_achat` DATE,
`consultation` NT(1),
`SBN` NT(10),
`Code_cd` NT(10),
PRMARY KEY (`num_exemplaire`),
CONSTRANT fk_cl FOREGN KEY (SBN) REFERENCES Livre(SBN),
CONSTRANT fk_nm FOREGN KEY (num_membre) REFERENCES
Membre(num_membre),
CONSTRANT fk_ccd FOREGN KEY (Code_cd) REFERENCES
CD(Code_cd));
// Cration ou remplacement Auteur
CREATE or REPLACE TABLE `Auteur` (
`num_auteur` NT(10),
`nom_auteur` VARCHAR(200),
PRMARY KEY (`num_auteur`));
// Cration ou remplacement CD
CREATE or REPLACE TABLE `CD` (
`Code_cd` NT(10),
`libelle_cd` VARCHAR(255),
`nb_exemplaire` NT(1),
`date_parution` DATE,
`type` VARCHAR(100),
`num_etagere` NT(10),
`num_bibliotheque` NT(10),
PRMARY KEY (`Code_cd`),
CONSTRANT fk_ne FOREGN KEY (num_etagere) REFERENCES
Etagere(num_etagere),
CONSTRANT fk_nm FOREGN KEY (num_membre) REFERENCES
Membre(num_membre),
CONSTRANT fk_nb FOREGN KEY (num_bibliotheque) REFERENCES
Bibliotheque(num_bibliotheque)
);
23
// Cration ou rempIacement de Ia tabIe AuteurCD
CREATE or REPLACE TABLE `AuteurCD` (
`num_auteurCD` NT(10),
`nom_auteurCD` VARCHAR(255),
PRMARY KEY (`num_auteurCD`));
// Cration ou remplacement de la table Sujet
CREATE or REPLACE TABLE `Sujet` (
`mots_Clef` VARCHAR(255),
PRMARY KEY (`mots_clef`));
// Cration ou remplacement de la table Inscrit
CREATE or REPLACE TABLE `nscrit` (
`num_membre` NT(10),
`num_bibliotheque` NT(10),
`date_inscription` DATE,
`date_radiation` DATE,
`cotisation` NT(6),
PRMARY KEY (`num_membre`, `num_bibliotheque`));
// Cration ou remplacement de la table 'ReserveL
CREATE or REPLACE TABLE `ReserveL` (
`num_membre` NT(10),
`SBN` NT(10),
`date_reservation` DATE,
PRMARY KEY (`num_membre`, `SBN`));
// Cration ou remplacement de la table ReserveCD
CREATE or REPLACE TABLE `ReserveCD` (
`date_reservation` DATE,
`num_membre` NT(10),
`Code_cd` NT(10),
PRMARY KEY (`num_membre`, `Code_cd`));
// Cration ou remplacement de la table Traite
CREATE or REPLACE TABLE `Traite` (
`mots_clef` VARCHAR(255),
`SBN` NT(10),
PRMARY KEY (`mots_clef`, `SBN`));
24
// Cration ou remplacement de la table LivreEcritPar
CREATE or REPLACE TABLE `LivreEcritPar` (
`num_bibliotheque` NT(10),
`num_auteur` NT(10),
PRMARY KEY (`num_bibliotheque`, `num_auteur`));
// Cration ou remplacement de la table CDEcritPar
CREATE or REPLACE TABLE `CDEcritPar` (
`num_auteurCD` NT(10),
`code_cd` NT(10),
PRMARY KEY (`num_auteurCD`, `code_cd`));
// Cration ou remplacement de la table Emprunte
CREATE or REPLACE TABLE `Emprunte` (
`date_debut` DATE,
`date_fin` DATE,
`date_relance` DATE,
`date_res` DATE,
`Code_cd` NT(10),
`num_membre` NT(10),
`SBN` NT(10),
PRMARY KEY (`Code_cd`, `num_membre`,`SBN`));
2- Insertion de donnes dans Ies tabIes
// Insertion de donnes dans la table Bibliotheque
insert into Bibliotheque values (1,"Bonneveine","20 avenue de Hambourg 13009
Marseille", 20,3,"Petit");
insert into Bibliotheque values (2,"Luminy","155 avenue de Luminy 13009 Marseille",
20,3,"Dupont");
insert into Bibliotheque values (3,"Saint Charles","300 avenue de la gare 13003
Marseille,", 20,3,"Durand");
// Insertion de donnes dans la table Membre
NSERT NTO `membre` (`num_membre`, `nom`, `prenom`, `adresse`, `telephone`,
`mail`) VALUES ('1', 'BOSSO', 'Patrick', '100 rue Paradis 13008 Marseille',
'0606066660', bosso@yahoo.fr');
NSERT NTO `membre` (`num_membre`, `nom`, `prenom`, `adresse`, `telephone`,
`mail`) VALUES ('2', 'MARTN', 'Andr', '10 rue Lilla 13100 Marignane', '0600989909',
'martin@hotmail.com');
25
NSERT NTO `membre` (`num_membre`, `nom`, `prenom`, `adresse`, `telephone`,
`mail`) VALUES ('3', 'DURAND', 'Frdric', '1 avenue Castellane 13006 Marseille',
'0423980789', 'durand@hotmail.com');
NSERT NTO `membre` (`num_membre`, `nom`, `prenom`, `adresse`, `telephone`,
`mail`) VALUES ('4', 'FOUCAUT', 'Jean-Pierre', '155 avenue PRADO 13008
Marseille', '0411223344', 'foucaut@tf1.fr');
// Insertion de donnes dans la table Etagere
NSERT NTO `etagere` (`num_etagere`, `localisation`, `num_bibliotheque`) VALUES
('1', 'Mathmatiques', '1');
NSERT NTO `etagere` (`num_etagere`, `localisation`, `num_bibliotheque`) VALUES
('2', 'Biologie', '1');
NSERT NTO `etagere` (`num_etagere`, `localisation`, `num_bibliotheque`) VALUES
('3', 'Physique', '1');
NSERT NTO `etagere` (`num_etagere`, `localisation`, `num_bibliotheque`) VALUES
('4', 'Chimie', '1');
NSERT NTO `etagere` (`num_etagere`, `localisation`, `num_bibliotheque`) VALUES
('10', 'Lettre', '2');
NSERT NTO `etagere` (`num_etagere`, `localisation`, `num_bibliotheque`) VALUES
('12', 'Histoire', '2') ;
NSERT NTO `etagere` (`num_etagere`, `localisation`, `num_bibliotheque`) VALUES
('1', 'nformatique', '3') ;
// Insertion de donnes dans la table Livre
NSERT NTO `livre` (`SBN`, `libelle_livre`, `nb_exemplaire`, `date_parution`,
`num_etagere`, num_bibliotheque`) VALUES ('2 212 1120', 'Oracle sous Windows',
'4', '2000-02-03', '1');
NSERT NTO `livre` (`SBN`, `libelle_livre`, `nb_exemplaire`, `date_parution`,
`num_etagere`, ` num_bibliotheque`) VALUES ('3 234 1245', 'Histoire de la France',
'3', '1990-10-05', '2');
NSERT NTO `livre` (`SBN`, `libelle_livre`, `nb_exemplaire`, `date_parution`,
`num_etagere`, ` num_bibliotheque`) VALUES (''4 123 4321', 'Biologie: les muscles',
'3', '1996-06-10', '3');
NSERT NTO `livre` (`SBN`, `libelle_livre`, `nb_exemplaire`, `date_parution`,
`num_etagere`, ` num_bibliotheque`) VALUES ('4 213 9999', 'Pythagore et ses
applications', '4', '1989-10-10', '1');
// Insertion de donnes dans la table Exemplaire
NSERT NTO `exemplaire` (`num_exemplaire`, `etat`, `date_achat`, `consultation`,
`SBN`, `code_cd`) VALUES ('1', 'Bon', '2000-02-03', '0', '2 212 1120', '1', '');
NSERT NTO `exemplaire` (`num_exemplaire`, `etat`, `date_achat`, `consultation`,
`SBN`, `code_cd`) VALUES ('2', 'Mauvais', '2000-02-03', '0', '2 212 1120', '2', '');
NSERT NTO `exemplaire` (`num_exemplaire`, `etat`, `date_achat`, `consultation`,
`SBN`,`code_cd`) VALUES ('6', 'Mauvais', '1989-10-10', '1', '4 213 9999', '3', '');
26
// Insertion de donnes dans la table Auteur
NSERT NTO `auteur` (`num_auteur`, `nom_auteur`) VALUES ('1', 'Briard Gilles');
NSERT NTO `auteur` (`num_auteur`, `nom_auteur`) VALUES ('2', 'LGUER Didier');
NSERT NTO `auteur` (`num_auteur`, `nom_auteur`) VALUES ('3', 'BOUSNER
Carole');
// Insertion de donnes dans la table CD
NSERT NTO `cd` (`code_cd `, `libelle_cd`, `nb_exemplaire`, `date_parution`, `type`,
`num_etagere`, `num_bibliotheque`) VALUES ('1', 'nstaller Linux', '3', '2003-10-08',
'nformatique', '1', '2');
NSERT NTO `cd` (`code_cd`, `libelle_cd`, `nb_exemplaire`, `date_parution`, `type`,
`num_etagere`, `num_bibliotheque`) VALUES ('2', 'Apprendre Java', '4', '2000-03-04',
'nformatique', '1', '3');
// Insertion de donnes dans la table AuteurCD
NSERT NTO `auteurcd` (`num_auteurCD`, `nom_auteurCD`) VALUES ('2',
'BRARD Gilles');
NSERT NTO `auteurcd` (`num_auteurCD`, `nom_auteurCD`) VALUES ('3',
'DELONNAY Christophe');
// Insertion de donnes dans la table Sujet
NSERT NTO `sujet` (`mots_clef`) VALUES ('Thorme de Pythagore et ses
applications');
NSERT NTO `sujet` (`mots_clef`) VALUES ('Les rois, les prsidents');
// Insertion de donnes dans la table Inscrit
NSERT NTO `inscrit` (`num_membre`, `num_bibliotheque`, `date_inscription`,
`date_radiation`, `cotisation`) VALUES ('1', '1', '2004-10-01', '', '100');
NSERT NTO `inscrit` (`num_membre`, `num_bibliotheque`, `date_inscription`,
`date_radiation`, `cotisation`) VALUES ('1', '2', '2004-10-02', '', '15');
NSERT NTO `inscrit` (`num_membre`, `num_bibliotheque`, `date_inscription`,
`date_radiation`, `cotisation`) VALUES ('2', '3', '2000-11-10', '2002-10-06', '0');
// Insertion de donnes dans la table ReserveL
NSERT NTO `reservel` (`num_membre`, `code_livre`, `date_reservation`) VALUES
('1', '3', '2003-10-08');
NSERT NTO `reservel` (`num_membre`, `code_livre`, `date_reservation`) VALUES
('1', '2', '2003-03-10');
// Insertion de donnes dans la table ReserveCD
NSERT NTO `reservecd` (`date_reservation`, `num_membre`, `code_cd`) VALUES
('2003-11-03', '1', '1');
27
// Insertion de donnes dans la table Traite
NSERT NTO `traite` (`mots_clef`, `SBN`) VALUES ('Thorme de Pythagore et ses
applications', '4');
NSERT NTO `traite` (`mots_clef`, `SBN`) VALUES ('Les rois, les prsidents', '2');
// Insertion de donnes dans la table LivreEcritPar
NSERT NTO `LivreEcritPar` (`SBN `, `num_auteur`) VALUES ('1', '3');
NSERT NTO `LivreEcritPar ` (`SBN `, ` num _ auteur `) VALUES ('2', '4');
NSERT NTO `LivreEcritPar ` (`SBN `, ` num _ auteur `) VALUES ('3', '2');
NSERT NTO `LivreEcritPar ` (`SBN `, ` num _ auteur `) VALUES ('4', '1');
// Insertion de donnes dans la table CDEcritPar
NSERT NTO `CDEcritPar` (`Code_cd `, ` num _ auteurCD`) VALUES ('1', '1');
NSERT NTO `CDEcritPar ` (`Code_cd`, ` num _ auteurCD`) VALUES ('2', '2');
// Insertion de donnes dans la table Emprunte
NSERT NTO `Emprunte` (`date_debut `, `date_fin`, `date_relance`,
date_res`,`Code_cd`,`num_membre`,`SBN`) VALUES ('2004-06-06', ''2004-06-27'',
'','1','1', '');
NSERT NTO `Emprunte` (`date_debut `, `date_fin`, `date_relance`,
date_res`,`Code_cd`,`num_membre`,`SBN `) VALUES ('2003-06-06', ''2004-06-27'',
'','', '1','1');
3- Suppression des tabIes
// Suppression de la table Bibliotheque
drop table Bibliotheque;
// Suppression de la table Membre
drop table Membre;
// Suppression de la table Etagere
drop table Etagere;
// Suppression de la table Livre
drop table Livre;
// Suppression de la table Exemplaire
drop table Exemplaire;
// Suppression de la table Auteur
drop table Auteur;
28
// Suppression de la table CD
drop table CD;
// Suppression de la table AuteurCD
drop table AuteurCD;
// Suppression de la table Sujet
drop table Sujet;
// Suppression de la table Inscrit
drop table nscrit;
// Suppression de la table ReserveL
drop table ReserveL;
// Suppression de la table ReserveCD
drop table ReserveCD;
// Suppression de la table Traite
drop table Traite;
// Suppression de la table LivreEcritPar
drop table LivreEcritPar;
// Suppression de la table CDEcritPar
drop table CDEcritPar;
// Suppression de la table Emprunte
drop table Emprunte;
4- Quelques requtes
// Quels sont les membres qui sont inscrits ou qui ont t inscrit dans une
bibliothque ?
select nom from Membre;
// Quels sont les membres inscrits la bibliothque de Luminy ?
select nom from membre, inscrit, bibliotheque where
inscrit.num_membre=membre.num_membre and
inscrit.num_bibliotheque=bibliotheque.num_bibliotheque and
bibliotheque.libelle_bibliotheque='Luminy';
// Quelles sont les bibliothques localises sur Marseille ?
select libelle_bibliotheque from bibliotheque where adresse LKE '%Marseille' ;
29
// Cration d'une vue qui regroupe le nom et l'adresse des bibliothques
create view vue_bibliotheque (nom, adresse) as select libelle_bibliotheque, adresse
from Bibliotheque ;
// Affichage des lments de la vue
select * from vue_bibliotheque ;
// Monsieur Bosso a t radi de la bibliotheque Bonneveine le 02/02/2004
update ncrit set date_radiation='2004-02-02' where num_membre=(select
num_membre from Membre where nom='Bosso') and num_bibliotheque=(select
num_bibliotheque from Bibliotheque where libelle_bibliotheque='Bonneveine');
// Supprimer le membre Durand de la table Membre
delete from Membre where nom='Durand' ;
// Droit de consultation des tables livre et cd pour les membres inscrit aux
bibliothques
grant select on Livre to membre_b ;
grant select on CD to membre_b ;
// Droit de modification des tables livre et cd pour le personnel des
bibliothques
grant insert, delete, update on Livre to personnel_b ;
grant insert, delete, update on CD to personnel_b ;
30
Conclusion
L`objectiI de ce projet etait donc de modeliser le Ionctionnement d`un reseau de
bibliotheques. AIin de pouvoir realiser cette modelisation, nous avons deIini tout d`abord la
base selon un schema entite-relation. Nous avons passe par la suite au schema relationnel car
le schema entite relation ne nous permettait pas d`elaborer correctement les bases de
donnees.
Durant l`elaboration de notre projet, nous avons rencontres plusieurs diIIicultes. La principale
diIIiculte Iut de trouver les cles primaires de chaque entite pour que les diIIerentes tables
soient sous la troisieme Iorme normale (les attributs d`une entite doivent dependre
directement de son identiIiant) pour eviter les redondances entre les tuples.
Plusieurs ameliorations a notre projet sont possibles comme creer un site Intranet dans une
bibliotheque qui gere les emprunts de livres et de CDs.

Vous aimerez peut-être aussi