Академический Документы
Профессиональный Документы
Культура Документы
Dpartement d'informatique
Bases de Donnes
Sylvain BRANDEL
Ple API
Boulevard Sbastien Brant
67 400 ILLKIRCH
bureau C 126
tl : 03 90 24 45 68
e-mail : brandel@dpt-info.u-strasbg.fr
Notes de cours
(DESS CCI)
(Imprim le 13 dcembre 2014)
Chapitre 1 : BD et SGBD
Rfrences :
Bases de Donnes objet et relationnel
Georges Gardarin
d. Eyrolles
I. Introduction
BD, c'est quoi ?
Df. : Une BD est un ensemble de donnes modlisant les objets d'une partie du monde rel et servant de support
une application informatique.
ensemble :
structur
permettant l'extraction d'informations de manire slective par plusieurs utilisateurs
Exemple : annuaire (Nom, Prnom, ge, CP, ville)
d'abord un tableau (fichier) redondance
2me tableau (CP, ville)
3me tableau (ge) ? redondance calcule
Deux types d'oprations :
Manipulation (utilisateur)
Dfinition (concepteur, administrateur)
Tout ensemble de donnes ne justifie pas forcment une BD.
Exemple : CDs audio
suffisamment de CDs pour ncessiter une indexation informatique
mais si le seul but est d'imprimer la liste, un diteur de textes suffit
Df. : Un SGBD est un logiciel permettant dinteragir avec une BD.
Exemples de SGBD : Access, Oracle. Pas SQL.
II. Analyse
Avant de penser BD, poser des questions, tudier, analyser les besoins.
Exemple : CD audio informatiser. Pourquoi ? dans quel but ? quand ? comment ?
analyse.
Exemple : Ecole. Dialogue avec la directrice.
pour obtenir des rgles de gestion
pour tudier les formulaires, fiches... existant
dictionnaire des donnes
MERISE
A. Pourquoi MERISE ?
Problmes des grosses applications :
B. Principes de base
Mthode globale et intgre :
repenser en terme de SAI (Systme d'Automatisation de l'Information) et d'organisation
intgrer les diffrents utilisateurs
Sparation Donnes / Traitements : analyses conduites sparment puis confrontation
3 niveaux de modlisation, invariance dcroissant (plus le niveau est lev, et plus le systme est stable) :
niveau conceptuel
niveau organisationnel
niveau technique
a) MCD
aspect statique du Systme d'Information, schma entit / associations.
Entit : collection d'objets ayant des proprits analogues et possdant un identifiant.
Exemple : CLASSE < id-classe, nb-lves, anne >
Classe
id-classe
nb-lves
Anne
Classe
id-classe
nb-lves
Anne
1
2
30
Mariage
(association partielle)
Hommes
Femmes
A pour mre
Possde
(association totale)
Voiture
b) MCT
ce qu'il faut faire : QUOI (pas OU, QUAND organisationnel, pas COMMENT oprationnel).
Evnement : compte-rendu fait au SI que quelque chose s'est produit dans l'univers extrieur ou dans le SI.
Les vnements peuvent tre :
externes (par exemple une commande)
internes (par exemple une facture)
Opration : actions accomplies par le SI en raction un (ou des) vnement(s).
Demande de
promotion
Recevabilit
Dossier
Refus
a) MLD
"Reprsentation du MCD en fonction de l'tat de l'art technologique" (Tardieu)
= MCD repens.
b) MOT
Modliser :
les notions de temps et de dure
les postes et leur responsabilits
les lieux et leurs ressources
Exemples de rgles d'organisation :
chaque livraison, le magasinier contrle la marchandise livre
l'inventaire est effectu tous les ans les 29 et 30 dcembre
a) MPhD
proposer une solution technique optimale pour l'implantation physique des donnes et la description de leurs
liens.
b) MopT
C. Inconvnients de MERISE
Lourdeur :
produit beaucoup de documents
lourd pour des petites applications
Par rapport aux tudiants :
lourdeur sur les exemples pdagogiques
sentiment de flou : haut niveau d'abstraction, et mthodologie rigoureuse mais non dterministe
(possibilit de production de diffrents algorithmes)
B. Redondance
Problmes :
volume de donnes important (moins grave actuellement : mmoires de masse importantes)
temps de saisie et de mise jour : par exemple, si on dispose de 3 fichiers clients (factures, BL,
tiquettes), la saisie d'un client doit tre effectue trois fois, avec des risques d'erreur (fautes de frappe
entre deux saisies)
difficults de tenir jour les informations pour "coller" la ralit
manque de cohrence.
C. Cohrence
Etre juste par rapport une certaine ralit, c--d intgrit des donnes.
La ralit doit tre fixe sous forme de rgles ou contraintes d'intgrit.
La BD est cohrente si elle respecte les contraintes d'intgrit nonces (dpendantes des applications).
Les rgles dfinissant les liens entre les donnes de la base dcrivent la ralit.
Exemples de contraintes d'intgrit : BD clients / fournisseurs / produits, avec commandes clients et
fournisseurs :
couleur autorise pour un produit {blanc, bleu, noir }
chaque client, chaque fournisseur, chaque produit doit tre identifi de manire unique dans toute la base
( numrotation explicite)
pour la gestion des commandes, les clients et produits intervenant dans la transaction doivent exister
tout client sauvegard dans la base a pass au moins une commande
D. Centralisation
La BD doit satisfaire une grande varit de demandes de renseignements exprime par de nombreux utilisateurs.
Les utilisateurs ont des exigences de rponse qui doivent tre compatibles avec leurs conditions de travail.
BD : entit commune, centrale, laquelle accdent tous les utilisateurs.
L'utilisateur doit pouvoir travailler comme il l'a toujours fait, avec sa propre vision de la BD.
A. Historique
4 gnrations. Le dbut se situe vers 1965 avec le programme Apollo d'IBM.
a) Modles hirarchiques
Les donnes sont reprsentes sous forme dune structure arborescente denregistrements. Cette structure est
conue avec des pointeurs et dtermine les chemins daccs aux donnes.
Avantages :
structure de donne facile comprendre
chemins d'accs fixes : peu de commandes, simplicit des commandes
Inconvnients :
organisation non naturelle
contrle de cohrence dlicat
cot lev de la recherche, d l'unicit du chemin d'accs
b) Modles rseau
La structure peut tre visualise sous forme dun graphe quelconque. Comme pour le modle hirarchique, la
structure est conue avec des pointeurs et dtermine le chemin daccs aux donnes.
Avantages :
moins restrictif
reprsentation naturelle des liaisons
moins de redondances
Inconvnients :
pas d'indpendance vis--vis des stratgies d'accs
Dans ces deux modles, les programmes ne sont pas indpendants de la structure logique de la base et du chemin
daccs aux donnes : ils doivent dcrire comment retrouver les donnes (on parle de navigation dans la base) et
si, par exemple, on enlve un index, tous les programmes qui lutilisaient doivent tre rcrits. De plus, le
langage de travail est complexe.
rgle 5 : un langage doit permettre de dfinir les donnes, dfinir des vues (visions particulires de la
base, enregistres comme des relations), manipuler les donnes, dfinir des contraintes dintgrit, des
autorisations de grer des transactions
rgle 6 : on peut faire des mises jour par les vues lorsque cest logiquement possible
rgle 7 : le langage doit comporter des ordres effectuant linsertion, la mise jour et la suppression des
donnes (un seul ordre pour effectuer chacune de ces fonctions)
rgle 8 : indpendance des programmes vis--vis de limplantation physique des donnes
rgle 9 : indpendance des programmes vis--vis de limplantation logique des donnes (si les
informations manipules par les programmes nont pas t modifies ou supprimes
rgle 10 : les contraintes dintgrit doivent pouvoir tre dfinies dans le langage relationnel et
enregistres dans le dictionnaire des donnes
rgle 11 : indpendance vis--vis de la rpartition des donnes sur divers sites
rgle 12 : on ne peut jamais contourner les contraintes (dintgrit ou de scurit) imposes par le
langage du SGBD en utilisant un langage de plus bas niveau (par exemple le C)
Objectif : assurer
la scurit
la confidentialit
l'intgrit
de bonnes performances
des donnes alors que plusieurs utilisateurs peuvent accder simultanment la BD.
1) Scurit
Une perte d'informations peut s'avrer fatale la scurit est primordiale.
a) Scurit de fonctionnement
Suite un incident matriel ou logiciel, il convient de :
redmarrer le systme
remettre la BD en tat cohrent
archivage : copie de sauvegarde sur un autre support (CD, DAT, disquette...).
journalisation : un journal mmorise toutes les transactions effectues sur la BD. En cas de panne de courant,
le systme lit le journal.
Fonctionnement
normal :
dbut
transaction
fin
transaction
temps
BD non cohrente
BD cohrente
Durant la transaction (ensemble de modifications de la base qui forme un tout indivisible), des oprations sont
effectues sur la BD BD non cohrente temporairement.
risque, si un autre utilisateur accde la BD ce moment.
La transaction doit tre termine ou non excute.
Exemple de transaction : transfert dune somme dargent entre deux comptes dun client dune banque. Elle
comporte deux ordres : dbiter le premier compte, puis crditer le second. Si un problme empche le crdit, le
dbit doit tre annul.
Une transaction est termine :
soit par une validation qui entrine les modifications
soit par une annulation qui remet la base dans son tat initial
Deux transactions ne peuvent se chevaucher.
Lutilisateur peut tout moment valider la transaction en cours (COMMIT en SQL) les modifications
deviennent alors dfinitives et visibles lensemble des utilisateurs.
Tant que la transaction nest pas valide, les modifications quelle contient napparaissent qu lutilisateur qui
lexecute. Tous les autres utilisateurs voient la base dans ltat o elle tait avant le dbut de la transaction.
Lutilsateur peut annuler la transaction en cours (ROLLBACK en SQL) les modifications effectues depuis le
dbut de la transaction sont annules.
b) Gestion de la concurrence d'accs
Lorsque plusieurs personnes travaillent simultanment sur la mme donne, il faut viter que le travail de l'une
crase celui de l'autre.
10
utilisateur 1
utilisateur 2
ex : q = 100
(tampon)
BD
BD
100
100
lire (q)
80
q = q - 20
(tampon)
lire (q)
100
q = q + 30
130
100
crire (q)
80
crire (q)
130
BD
Transaction 1
Transaction 2
Verrouiller la table A
Verrouiller la table B
Verrouiller la table B
(attente)
Verrouiller la table A
(attente)
Ce type dinterblocage ne peut pas arriver si tous les utilisateurs bloquent les tables dans le mme ordre.
Lecture inconsistante ou lecture impropre. Une transaction T2 lit une valeur donne par une autre transaction
T1. Ensuite la transaction T1 annule son affection de V la valeur lue par T2 est fausse :
Transaction 1
Transaction 2
V = 100
Lire V
ROLLBACK
11
BD
Ce cas ne peut pas arriver si les modifications effectues par une transaction ne sont visibles par les autres
quaprs validation (COMMIT) de la transaction.
Lecture non rptitive, ou non reproductible, ou incohrente. Une transaction lit deux fois une mme valeur
et ne trouve pas la mme valeur les deux fois.
Transaction 1
Transaction 2
Lire V
V = V + 100
COMMIT
Lire V
Pour viter ce cas, T1 devra bloquer les donnes quil veut modifier suffisamment longtemps pour empcher les
autres transactions de les modifier.
Lignes fantmes. Une slection de lignes rcupre des lignes qui sont modifies par une autre transaction et ne
vrifient plus le critre de la slection. La mme slection lance une seconde fois ne retrouve donc plus ces
lignes.
Transaction 1
Transaction 2
2) Confidentialit
a) Contrle de laccs la base
Gestion des droits d'accs des diffrents utilisateurs (mots de passe).
Gestion des privilges : les utilisateurs nont pas tous les mmes droits.
12
3) Intgrit
Les oprations doivent respecter les contraintes d'intgrit implicitement :
dfinition de la cl primaire dune table
cls trangres dont les valeurs doivent exister dans une autre table
unicit des valeurs dune rubrique
fourchette pour les valeurs acceptables
Les commandes qui ne respectent pas ces contraintes sont automatiquement annules (toute la commande est
annule si une seule des lignes ne respecte pas une contrainte dintgrit).
Exemple : BD client / fournisseur / produit
interdire l'insertion d'un produit dont le numro figure dj dans la base
interdire l'insertion d'une nouvelle commande avec un client inconnu
il faut d'abord insrer le client, puis la commande
la suppression d'une commande peut provoquer la suppression d'un client (s'il n'avait qu'une commande)
4) Performances
Les langages dutilisation des SGBD relationnels ne font pas rfrence au cheminement suivre pour accder
aux donnes risque de performances dgrades (donnes non contigus, isoles).
Solutions :
index sur une rubrique acclrer laccs aux lignes qui ont une certaine valeur ou acclrer le tri des
lignes dans lordre de rangement de lindex
clusters : rangement physique de plusieurs tables dans un mme espace acclrer les jointures sur ces
tables en partageant des colonnes entre plusieurs tables
LMD
Menu
Langage hte
Schma
externe A
Schma
externe B
Niveau
logique
Schma conceptuel
Niveau
physique
SGBD
Schma interne
13
BD
SE
1) Schmas
a) Schma conceptuel
Niveau central, vision globale de la base. Un seul schma conceptuel. Description des donnes et des CI qui y
sont lies.
Diffrentes approches :
liaison : schmas externes / schma conceptuel
ou schma externe = drivation du schma conceptuel
ou schma conceptuel = synthse des schmas externes
deux utilisateurs peuvent appeler une mme variable sous deux noms diffrents, ou bien appeler deux
variables diffrentes sous un mme nom.
Exemple :
BUVEUR(Nom, Prnom, Adresse)
VIN(Cru, Millsime, Quantit)
ABUS(Buveur, Vin, Date, Quantit)
(objet)
(objet)
(association)
b) Schmas externes
Vision des donnes d'un utilisateur ou d'un groupe d'utilisateurs description d'une partie Seulement des
donnes vision parcellaire, incomplte.
Scurit et confidentialit des donnes.
Il existe autant de visions externes que d'utilisateurs.
Mais les visions des diffrents utilisateurs vont se recouper (informations communes).
Exemple :
Schma externe 1 :
buveur-de-vin :
Nom
Prnom
NbAbus
14
Schma externe 2 :
identit-buveur :
Nom
Prnom
vins-consomms :
Cru
Quantit
c) Schma interne
Description de la manire dont les donnes sont stockes sur les organes physiques.
Dans un SGBD, l'organisation physique des donnes est effectue par le systme d'exploitation ignor par
l'utilisateur.
Il peut y avoir plusieurs modles physiques pour un mme modle logique.
Exemple :
index
Nom
Prnom
Adresse
NbAbus
RefVin
Date
Qt
Cru
Millsime
Qt
d) Indpendances
Indpendance logique si le schma conceptuel peut tre modifi ou enrichi sans que cela affecte les schmas
externes des utilisateurs et leurs programmes d'application.
Indpendance physique si on peut modifier le schma interne sans affecter le schma conceptuel. Cela permet de
ne pas tre li au matriel ou au systme dexploitation (seul le niveau interne en dpend).
2) Utilisateurs
a) Administrateur
Personne(s) responsable(s) de tout ce qui touche la BD :
bon fonctionnement
cration de la BD
dclaration d'un utilisateur
droits d'accs
modification des schmas externes
modification des chemins d'accs aux donnes
maintien des performances daccs aux donnes
sauvegardes et reprises aprs pannes
...
b) Programmeur
Dveloppeur dapplications utilisant la BD. Il a le droit de crer de nouvelles tables et les structures associes
(vues, index, clusters). Il dfinit les droits qui seront accords aux utilisateurs des applications quil dveloppe.
c) Utilisateur final
15
Na accs quaux donnes qui lui sont utiles. Il a certains droits accords par ladministrateur : consultation,
ajout, modification ; suppression. Gnralement il na pas le droit de cration, de modification ou de suppression
de tables.
3) Langages
a) Langage de Dfinition des Donnes (LDD)
Utilis par l'administrateur de la base, le LDD permet de dfinir :
le schma conceptuel et les schmas externes
les donnes, liens, contraintes d'intgrit
Utilis lors de la conception de la base et la modification des schmas.
16
le SGBD enregistre automatiquement toutes les instructions excutes sur la base dans des fichiers de
log fichiers utiliss lors du redmarrage aprs la panne
ladministrateur sauvegarde rgulirement les BD et les fichiers utiliss par le SGBD et enregistre les
fichiers de log sur des mdias stables (bandes, CD) ralentissement du systme mais plus grande
fiabilit en cas de panne
2) Types de pannes
Le traitement est diffrent selon que la panne a laiss la base dans un tat cohrent (interruption logicielle) ou si
elle a t endommage et ne peut plus tre utilise (crash disque)
b) Fichiers endommags
Ladministrateur doit recharger la dernire sauvegarde.
Si toutes les modifications ont t archives (fichiers de log), il peut relancer leur excution jusqu la panne, ou
tout au moins jusqu la dernire archive valide. Sinon, il faudra relancer la main toutes les transactions
excutes entre la dernire sauvegarde et la panne.
Les fichiers de log ne servent pas seulement la rparation en cas de panne, mais sont utiliss pour des raisons
de performances : lors dun COMMIT, les donnes ne sont pas directement crites mais leur modification est
inscrite dans les fichiers de log criture squentielle plus efficace.
1) Fichiers de la base
Tous les SGBD grent eux-mmes l'enregistrement des donnes sur les mmoires auxiliaires (disques le plus
souvent). Les performances sont ainsi meilleures que s'ils utilisaient simplement le systme d'exploitation et son
systme de fichiers. En gnral, ils se rservent de trs gros fichiers du systme d'exploitation et ils grent euxmmes cet espace pour allouer de la place aux tables ,index et autres objets manipuls.
Un autre avantage est la plus grande facilit pour le portage sur des systmes d'exploitation diffrents.
17
4) Fichiers log
Paralllement l'enregistrement des donnes, les processus serveurs enregistrent toutes les actions effectues sur
les tables de la base (et dans les segments de rollback), dans des fichiers indpendants des fichiers de la base,
appels fichiers log (redo log dans Oracle).
Comme pour les donnes de la base, les donnes enregistres dans les fichiers redo log sont d'abord dposes en
mmoire dans des buffers et enregistrs dans les fichiers par un seul processus (Log Writer dans Oracle). Ces
enregistrements ont lieu rgulirement, par exemple quand les buffers sont pleins, et au moins ds qu'il y a eu un
COMMIT.
L'enregistrement d'un COMMIT dans les fichiers redo log est l'vnement de rfrence pour la confirmation
d'une transaction. Chaque COMMIT dclenche une criture immdiate sur le disque des entres du buffer des
fichiers redo log correspondant la transaction valide. Cette criture est rapide car squentielle alors que
l'criture des modifications dans la base est mme plus lente.
Lorsque les fichiers redo log ont enregistr un COMMIT et qu'une panne survient avant que les donnes
correspondant la transaction de la base ne soient crites dans la base, le SGBD effectue l'enregistrement
physique des donnes aprs la reprise. Si par contre c'est un ROLLBACK qui a t enregistr et si des
modifications ont dj t enregistres (par exemple parce que les buffers des fichiers redo log taient pleins), les
donnes sont remises leur tat prcdant la transaction aprs le redmarrage, l'aide des segments de rollback.
5) Segments de rollback
Quand des donnes sont modifies dans une base Oracle, toutes les informations qui permettraient de retrouver
les anciennes donnes (essentiellement les valeurs anciennes des donnes modifies) sont enregistres dans la
base dans ce des segments de rollback.
Ces segments sont utiliss :
pour annuler une transaction aprs une instruction ROLLBACK
18
tant qu'une transaction n'est pas confirme par un COMMIT, les modifications qu'elle apporte aux
donnes ne doivent pas apparatre aux autres transactions (principe de lecture consistante).
19
B. Tables
Une BD relationnelle est un ensemble de relations :
relations de l'utilisateur (relations de table)
relations de catalogue (relations systme)
Proprits d'une relation :
nom unique dans l'ensemble des relations de la base
nombre fix de colonnes
nombre de lignes quelconque
Exemple :
F#
fournisseur F1
F2
F3
F4
F5
Nom
Ville
Smith
Meyer
Muller
Ryan
Martin
Londres
Strasbourg
Strasbourg
Londres
Paris
pice
1) Colonnes
Les colonnes sont appeles champ ou attribut
20
P#
Nom
P1
P5
P18
vis
crou 6 pans
boulon
fournit
F#
P#
F1
F1
F3
F1
F5
P1
P18
P5
P18
P18
Chaque attribut a un nom unique dans une relation donne, mais on peut trouver deux attributs de mme nom
dans deux relations diffrentes.
Notation :
fournisseur : F#
fournit : F#
Pour le systme, les deux F# sont totalement diffrents, mais smantiquement, les deux sont identiques, on leur a
donn le mme nom.
L'attribut prend sa valeur dans un domaine (ensemble des valeurs acceptes).
Exemple : ville { Londres, Strasbourg, Paris, New York }
L'ordre des attributs n'a pas d'importance.
Exemple : fournisseur < F#, Nom, Ville > = fournisseur < Nom, F#, Ville >
Le nombre d'attributs dfinit le degr de la relation.
2) Lignes
Les lignes sont appeles n-uplets (tuples).
les lignes sont supposes toutes diffrentes, il n'y a pas de doublon dans une table
l'ordre des lignes n'a pas d'importance
le nombre de n-uplets dfinit la cardinalit
C. Catalogue
Il existe un certain nombre de tables automatiquement gres par le systme (cres par celui-ci) :
catalogue des relations (relations, crateur, statistiques sur le contenu, ...)
catalogue des constituants (attributs, types, longueurs, ...)
catalogue des chemins d'accs (index, attribut, type d'index, ...)
catalogue des utilisateurs
catalogue des droits d'accs
etc.
Ces catalogues sont mis jour par le SGBD.
Un utilisateur peut consulter les catalogues (mme langage que pour les tables), mais n'a pas le droit d'criture.
B. Algbre relationnelle
Algbre relationnelle : collection d'oprations formelles qui agissent sur des relations et produisent des relations
en rsultat (E.F. Codd).
"L'algbre relationnelle est aux relations ce que l'arithmtique est aux entiers."
21
Les oprations sont classes en deux catgories (Codd) : les oprations de base et les oprations drives.
Deux types d'oprations de base : oprations ensemblistes traditionnelles et les oprations spcifiques.
oprations ensemblistes :
union
diffrence
produit cartsien
oprations spcifiques :
projection
restriction
jointure
Les oprations drives peuvent en gnral tre obtenues par combinaison des oprations de base.
Oprations drives :
intersection
division
complment
clatement
jointure externe
semi-jointure
1) Oprations ensemblistes
a) Union
Opration applique deux relations de mme schma.
L'union de deux relations de mme schma R1 et R2 est la relation R3 ayant pour tuples les tuples de R1 ou ceux
de R2.
Notation : R1 R2
Exemple : fournisseur1 = < F#, Nom, Ville >, fournisseur2 = < F#, Nom, Ville >
fournisseur1
F#
Nom
Ville
F1
F2
F3
Smith
Meyer
Muller
Londres
Strasbourg
Strasbourg
fournisseur
fournisseur2
F#
Nom
Ville
F2
F4
Meyer
Ryan
Strasbourg
Londres
F#
Nom
Ville
F1
F2
F3
F4
Smith
Meyer
Muller
Ryan
Londres
Strasbourg
Strasbourg
Londres
b) Diffrence
Opration applique deux relations de mme schma.
La diffrence entre deux relations de mme schma R1 et R2 est la relation R3 ayant pour tuples les tuples de R1
n'appartenant pas R2.
Notation : R1 R2
Exemple : fournisseur1 = < F#, Nom, Ville >, fournisseur2 = < F#, Nom, Ville >
22
fournisseur1
F#
Nom
Ville
F1
F2
F3
Smith
Meyer
Muller
Londres
Strasbourg
Strasbourg
fournisseur2
fournisseur
F#
Nom
Ville
F2
F4
Meyer
Ryan
Strasbourg
Londres
F#
Nom
Ville
F1
F3
Smith
Muller
Londres
Strasbourg
F#
Nom
Ville
F1
F2
F3
Smith
Meyer
Muller
Londres
Strasbourg
Strasbourg
fournisseur pice
pice
P#
Nom
P1
P5
P18
vis
crou 6 pans
boulon
F#
fournisseur.Nom
Ville
P#
pice.Nom
F1
F1
F1
F2
F2
F2
F3
F3
F3
Smith
Smith
Smith
Meyer
Meyer
Meyer
Muller
Muller
Muller
Londres
Londres
Londres
Strasbourg
Strasbourg
Strasbourg
Strasbourg
Strasbourg
Strasbourg
P5
P1
P18
P5
P1
P18
P5
P1
P18
vis
crou 6 pans
boulon
vis
crou 6 pans
boulon
vis
crou 6 pans
boulon
2) Oprations spcifiques
a) Projection (unaire)
23
Opration spcifique aux relations qui permet de supprimer des attributs d'une relation, c'est--dire slectionner
une ou plusieurs colonnes d'une relation.
L'appellation provient du fait qu'on passe d'une relation n-aire une relation p-aire, avec p < n (projection d'un
espace de dimension n dans un espace de dimension p).
Notation : projY(R), o R est une relation, l'ensemble de ses attributs est X, Y est inclus dans X.
Exemple : fournisseur X = {F#, Nom, Ville}
projVille(fournisseur
Ville
projNom, Ville(fournisseur)
Londres
Strasbourg
Strasbourg
Nom
Ville
Smith
Meyer
Muller
Ryan
Martin
Londres
Strasbourg
Strasbourg
Londres
Paris
b) Restriction (unaire)
Egalement appele slection.
La relation rsultat est de mme type que la relation initiale.
Le rsultat est obtenu en enlevant des tuples la relation oprande selon un critre de slection donn.
Notation : R|E, R est une relation, E est une expression logique.
E est du type <Attribut> <Valeur>.
{=, , <, , >, }
<Attribut> <Attribut>
Formule atomique :
<Attribut> Constante>
Les formules atomiques peuvent tre relies par des connectivits ET, OU, NON.
Exemple : fournisseur = < F#, Nom, Ville >
fournisseur | ville = "Londres"
fournisseur
F#
Nom
Ville
F1
F4
Smith
Ryan
Londres
Londres
c) Jointure (binaire)
Composition de deux relations l'aide d'un critre de jointure.
La jointure permet de calculer, partir de deux relations R1(X, Y) et R2(Y, Z) une relation R(X,Y,Z)
constitue des n-uplets qui sont combinaison de n-uplets de R1 et de R2 et qui ont mme valeur sur l'attribut
commun Y.
Notation : R1 * R2
Exemple : fournisseur = < F#, Nom, Ville >, fournit = < F#, P# >
F#
Nom
Ville
F#
P#
F1
F2
F3
F4
F5
Smith
Meyer
Muller
Ryan
Martin
Londres
Strasbourg
Strasbourg
Londres
Paris
F1
F1
F3
F2
F5
P1
P18
P5
P18
P18
24
fournisseur
* fournit
F#
Nom
Ville
P#
F1
F1
F3
F2
F5
Smith
Smith
Meyer
Muller
Martin
Londres
Londres
Strasbourg
Strasbourg
Paris
P1
P18
P18
P5
P18
3) Oprations drives
a) Intersection
Opration applique deux relations de mme schma.
L'intersection de deux relations de mme schma R1 et R2 est la relation R3 ayant pour tuples ceux appartenant
la fois R1 et R2.
Notation : R1 R2
Exemple : fournisseur1 = < F#, Nom, Ville >, fournisseur2 = < F#, Nom, Ville >
fournisseur1
F#
Nom
Ville
F1
F2
F3
Smith
Meyer
Muller
Londres
Strasbourg
Strasbourg
fournisseur
fournisseur2
F#
Nom
Ville
F2
F4
Meyer
Ryan
Strasbourg
Londres
F#
Nom
Ville
F2
Meyer
Strasbourg
Remarque : l'intersection est redondante parce qu'elle peut tre obtenue par combinaison d'oprations de base :
R1 R2 = R1 (R1 R2), ou bien R1 R2 = R2 (R2 R1).
b) Division
La division permet de rechercher dans une relation les sous-tuples complts par ceux d'une autre relation,
rpondant ainsi des questions de la forme "quel que soit x, trouver y".
25
Notation : R1 R2
Exemple :
Nom
Ville
P#
Ville
P#
Nom
Muller
Strasbourg
P1
Strasbourg
P18
Meyer
Muller
Strasbourg
P5
Strasbourg
P5
Meyer
Strasbourg
P18
Meyer
Strasbourg
P5
Martin
Paris
Remarque : la division peut galement P18
tre obtenue partir de la composition d'autres oprations.
c) Complment
Le complment d'une relation est l'ensemble des tuples du produit cartsien des domaines d'une relation
n'appartenant pas cette relation.
Les domaines sont supposs finis (sinon on obtient des relations infinies).
Notation : R
Exemple : fournit = < F#, P# >
fournit
F#
P#
F1
F1
F3
F2
F5
P1
P18
P5
P18
P18
fournit
F#
P#
F1
F2
F2
F3
F3
F4
F4
F4
F5
F5
P5
P1
P5
P1
P18
P1
P5
P18
P1
P5
d) Eclatement
L'clatement fournit deux relations partir d'une relation et d'une condition, la premire vrifie la relation (=
restriction), la seconde ne la vrifiant pas (= restriction avec l'oppos de la condition).
e) Jointure externe
Extension de la jointure sans perte d'information (en compltant par des champs nuls si ncessaire).
f) Semi-jointure
Jointure sans garder tous les champs des deux relations (= projection du rsultat).
26
R|F
= R | (F1 F2 F3 Fk)
= (((R | F1) | F2) | Fk)
Commutativit :
Remarquons que F = F1 F2 = F2 F1. D'o
(R | F1) | F2 = (R | F2) | F1
R2 : Regroupement d'une srie de projections en une seule opration de projection
Soit U l'ensemble des attributs de la relation R,
Soient X et Y des sous-ensembles de U vrifiant de plus X Y.
projX (projY (R)) = projX (R)
R3 : Inversion slection projection
Si l'opration de slection F dfinie sur les constituants X suit une opration de projection de R sur les
constituants Y, on peut inverser les deux oprations si X Y.
projY (R) | F = projY (R | F)
Dans le cas gnral :
projY (R) | F = projY (projXY (R) | F)
R4 : Inversion slection produit cartsien
Si F ne porte que sur des attributs de R :
(R S) | F = (R | F) S
Si F = F1 F2 o F1 n'utilise que des attributs de R et F2 que des attributs de S :
((R S) | F1 F2) = ((R | F1) (S | F2))
Si F = F1 F2 o F1 n'utilise que des attributs de R mais F2 utilise des attributs des deux relations :
((R S) | F) = ((R | F1) S) | F2
R5 : Inversion slection union
(R S) | F) = (R | F) (S | F)
R6 : Inversion slection diffrence
(R S) | F = (R | F) (S | F)
= (R | F) S
La premire solution est plus facile calculer parce que la relation (S | F) est plus petite que la relation S.
R7 : Inversion projection produit cartsien
Soit X une liste d'attributs de R, Y une liste d'attributs de S et Z = X Y. Alors,
projZ (R S) = projX (R) projY (S)
Ne marche pas pour la composition.
R8 : Inversion projection union
projX (R S) = projX (R) projX (S)
Remarque concernant R1 :
fournisseur | nom = Meyer ET ville = Strasbourg
= (fournisseur | nom = Meyer) | ville = Strasbourg
= (fournisseur | ville = Strasbourg) | nom = Meyer, par commutativit
Remarque concernant R2 :
projNom(projNom, Ville(fournisseur))
= projNom(fournisseur), parce que {Nom} {Nom, Ville}
Par contre,
projP#(projNom, Ville(fournisseur))
projP#(fournisseur)
5) Le langage SQL
Structured Query Language.
27
Requte :
SELECT ... (attributs sur lesquels on projette)
FROM ... (relation, ou produit cartsien)
[WHERE ...] (slection, optionnel)
28
C. Calcul relationnel
Le calcul relationnel des tuples et le calcul relationnel des domaines reposent sur le calcul des prdicats du
premier ordre. Cette thorie mathmatique tudie les formules logiques construites avec un ensemble de
prdicats (cest--dire de propositions qui peuvent tre vraies ou fausses dans un certain contexte), les oprateurs
et, ou, ngation, implication logique, des variables et les oprateurs et .
A chaque formule logique correspond lensemble des donnes qui vrifient cette formule. Linterrogation de la
base de donnes consiste donc noncer une formule qui correspond aux donnes que lon souhaite extraire de
la base.
29
La diffrence essentielle entre le calcul relationnel des tuples et le calcul relationnel des domaines est lensemble
dans lequel les variables prennent leurs valeurs :
tuples : chaque variable prend ses valeurs dans lensemble des tuples dune relation particulire
domaines : chaque variable prend ses valeurs dans un domaine particulier des attributs de la base.
Oprateurs utiliss :
prdicats : oprateurs habituels (<, >, , , )
tuples : on ajoute loprateur unaire qui indique quune variable prend ses valeurs dans une relation (par
exemple fournisseur(V) indique que la variable V appartient la relation fournisseur)
domaines : on ajoute loprateur unaire qui indique quune variable prend ses valeurs dans un domaine
(par exemple fournisseur(F#.V) indique que la variable V prend ses valeurs dans le domaine de lattribut
F#de la relation fournisseur)
Exemple :
Pices fournies par Smith :
tuples : {P.Nom / pice(P) et F fournisseur(F) et (F.Nom = Smith) et
domaines :
Nom des fournisseurs (qui fournissent effectivement des pices) :
tuples : {F.Nom / fournisseur(F) et ( R fournit(R) et F.F#= R.F#)}
domaines : {n / m fournisseur(F# : m, Nom : n) et fournit(F# : m)}
A. Dfinition
Soit R une relation dont les attributs sont U = {u1, u2, ..., un} et X U, Y U.
On dit que dans la relation, Y dpend fonctionnellement de X, ou X dtermine Y, si :
u R, v R, projX (R | u) = projX (R | v) projY (R | u) = projY (R | v).
Plus simplement, un attribut Y dpend fonctionnellement d'un attribut X si, tant donne une valeur de X, il lui
correspond une valeur unique de Y (quel que soit le n-uplet considr).
Notation : X Y
u1
u2
a
a
b
b
u3
un
type
nb-lits
douche
1
2
3
4
5
6
A
B
A
A
B
C
2
1
2
2
1
3
oui
oui
non
non
oui
non
30
B. Rgles d'infrence
Notation : ( en principe tourn vers la droite)
Il est gnralement possible de dduire de nouvelles DF partir des DF existantes.
Notons X, Y, Z et W des sous-ensembles d'attributs de la relation R.
Les trois premires rgles sont les axiomes d'Armstrong (1974), les trois suivantes en sont dduites.
1) Axiomes d'Armstrong
a) Rflexivit
Tout ensemble d'attributs dtermine lui-mme ou une partie de lui-mme.
YXXY
Exemple :
X = {Nom, Catgorie}
Y = Nom ou Y = {Catgorie} ou Y = {Nom, Catgorie}
Nom, Catgorie Nom
Nom, Catgorie Catgorie
b) Augmentation
Si X dtermine Y, les deux ensembles d'attributs peuvent tre enrichis par un troisime.
X Y X, Z Y, Z
Z W et X Y X, W Y, Z
c) Transitivit
31
Le compos de deux fonctions dont l'image de l'une est le domaine de l'autre, est une fonction.
X Y et Y Z X Z
2) Rgles complmentaires
a) Union
X Y et X Z X Y, Z
b) Pseudo-transitivit
X Y et Y, W Z X, W Z
c) Dcomposition
X Y et Z Y X Z
(parce que Z Y Y Z)
C. Manipulation des DF
1) Ajout / suppression d'attributs
2) Fermeture
Soit F un ensemble de DF. Il est possible de composer par les rgles d'infrence les DF de F. La fermeture
transitive de F, note F+, est l'ensemble de toutes les DF rsultant de l'application des rgles d'infrence sur les
DF de F.
L'application d'une rgle d'infrence construit F1 partir de F, puis F2, ..., puis Fn. On s'arrte lorsque Fn+1 = Fn, et
donc F+ = Fn (= Fn+1).
Deux ensembles de DF F$_1$ et F$_2$ sont quivalents s'ils ont la mme fermeture, c'est--dire F 1+ = F2+
F1 F2
F1+ F2+
F2 F1
F2+ F1+
32
3) Couverture
Il est intressant de dterminer un sous-ensemble minimal de DF permettant de gnrer toutes les autres : c'est la
couverture minimale d'un ensemble de DF.
La couverture minimale de F est l'ensemble F0 tel que : F0+ = F+.
Notation : ^F
Exemple :
F={ QS
TR
R, S P
T, Q P
P, R S}
F' = {
TR
R, S P
T, Q P
P, R S}
QS
TR
R, S P
P, R S}
Le calcul de la couverture permet de faire baisser le nombre de vrifications qui sont faire.
4) DF lmentaires
Une DF X Y est pleine ou lmentaire s'il n'existe pas de sous-ensemble strict X' de X (X' X et X' X) tel
que X' X.
On dira que Y est pleinement dpendant de X.
5) Cl de relation
Il est possible de donner une dfinition formelle de la notion de cl partir des DF : une cl est un ensemble
minimal d'attributs qui dtermine tous les autres.
Autrement dit, X est un cl (ou un identifiant) de la relation R si X U est une DF lmentaire.
Un ensemble d'attributs qui inclut une cl est appel supercl.
Il peut y avoir plusieurs cls pour une relation, mais on en choisit une comme cl primaire.
Notation : <Numro}, Nom> (la cl est Numro).
Lorsque deux attributs forment la DF lmentaire : <Num1, Num2, Nom> (la cl est le couple). La notation
<Num1, Num2, Nom> est identique.
33
nom de l'attribut
nom
catgorie
nb-chambres
num-chambre
type
prix
nbre-lits
douche
baignoire
WC
lib-div
gratuit
saison
type
chane
entier
entier
entier
entier
rel
entier
boolen
boolen
boolen
chane
boolen
{'H','B'}
descriptif
nom de l'htel (unique dans une rgion donne)
nombre d'toiles de l'htel
nombre total de chambres pour un htel donn
numro de chambre
type de chambre
prix d'une chambre
nombre de lits
vrai si la chambre comporte une douche prive
vrai si la chambre comporte une baignoire prive
vrai si la chambre comporte des WC privs
libell des divertissements proposs par l'htel
indique si un divertissement propos par un htel est gratuit ou payant
H : haute saison, B : basse saison
Le type de chambre dtermine les commodits offertes : nombre de lits, prsence de douche, de baignoire, de
WC indpendants. Le prix d'une chambre dpend du type de la chambre. Ainsi, dans un htel donn, toutes les
chambres de mme type auront le mme prix. Cette hypothse n'est pas vraie pour deux htels diffrents. Le prix
d'une chambre dpend galement de la saison : haute ou basse.
Les dpendances fonctionnelles vous semblent-elles correctes ?
1. nom catgorie, nb-chambres
2. num-chambre type
3. type prix
4. type nbre-lits
5. type, prix douche, baignoire, WC
6. nom, catgorie nb-chambres
7. nom, num-chambre type, douche, baignoire, WC
8. nom, gratuit lib-div
9. catgorie, lib-div gratuit
10. nom, saison, type nbre-lits
1. Rponses :
1. OUI
2. NON
3. NON
4. OUI
5. OUI
6. OUI
7. OUI
8. NON
9. NON
10. OUI
34
35
net
nom
ge
adresse
tarif
matire
enseignant
moyenne
12
12
40
Meyer
Meyer
Muller
25
25
18
Strasbourg
Strasbourg
Brumath
T1
T1
T2
UV1
UV2
UV3
Brandel
Tellier
Agnus
NULL
10
14
Exemple :
Relation employs < matricule, nom, dpt, nom-dpt > avec la DF dpt nom-dpt
Anomalies lors de modifications des donnes :
Anomalies d'insertion : on ne peut pas ajouter de nouveaux dpartements (numro et nom) si le
dpartement ne comporte pas d'employ.
Anomalies de modification : si on change le nom d'un dpartement, on doit le changer dans toutes les
lignes des employs de ce dpartement.
Anomalies de suppression : si on supprime le dernier employ d'un dpartement, on perd l'information
(numro et nom) du dpartement.
on dcoupe les tables en formes normales.
adresse
numro
rue
nom
ville
CP
INTERDIT
numro
rue
ville
CP
36
nom
adresse
nom
id-adr
et
1
2
rue
ville
CP
1
2
matire
note
UV1
INTERDIT
net
matire
note
1
1
1
UV1
UV1
UV1
12
11
16
matire
note
UV1
INTERDIT
net
matire
note
ordre
1
1
1
UV1
UV1
UV1
12
11
12
1
2
3
Remarque : chaque valeur du domaine est atomique, mais du point de vue du modle relationnel : une date ou
une image peut tre considre comme atomique, tout dpend du niveau de dcomposition.
Exemple : base tudiant
ETUDIANT <net, nom, ge, adresse, tarif, matire, enseignant, moyenne>
En 1FN ? OUI.
R:
La cl est le couple X, Y. Donc X, Y Z, W. Or Y dtermine lui seul W : Y W. Donc W dpend d'une partie
de la cl. Il faut donc dcomposer R en : R1 <X, Y, Z> et R2 <Y, W>.
Exemple : base tudiant
ETUDIANT <net, nom, ge, adresse, tarif, matire, enseignant, moyenne>
ETUDIANT est en 1FN.
La cl est le couple net, matire.
net, matire nom
37
net, matire ge
net, matire adresse
net, matire tarif
net, matire enseignant
net, matire moyenne
pas en 2FN.
on dcoupe :
net nom, ge, adresse, tarif
matire enseignant
net, matire moyenne
Et on obtient le schma relationnel :
ETUDIANT
ENSEIGNEMENT
NOTE
En 2FN ? OUI.
Remarques :
Si on supprime une moyenne, on ne perd pas d'tudiant.
Par contre, il faut fixer une Contrainte d'Intgrit rfrentielle (CI rf) exprimant que si on supprime un tudiant,
il faut que la moyenne disparaisse aussi :
CI rf : projnet (NOTE) projnet (ETUDIANT)
projmatire (NOTE) projmatire (ENSEIGNEMENT)
Exemple de mauvais dcoupage :
Relation universelle : R = <A, B, C>, dcoupe en R1 = <A, B>$ et R2 = <A, C>.
A
a1
a1
B
b1
b2
C
c1
c2
a1
a1
b1
b2
et
a1
a1
c1
c2
a1
a1
a1
a1
b1
b1
b2
b2
c1
c2
c1
c2
FAUX.
R:
38
pays
rgion
qualit
Julinas
Morgon
Chablis
Brouilly
Chablis
France
France
US
US
France
Beaujolais
Beaujolais
Californie
Californie
Beaujolais
TB
TB
M
M
M
39
En 3FN, parce que le cru ne dtermine pas la rgion (il parait !), mais pas en FNBC.
On dcompose :
DF :{
net
matire
sport
1
1
1
1
2
BD
BD
Algo
Algo
Algo
escalade
tennis
escalade
tennis
VTT
cru
producteur
Meyer
Meyer
Meyer
Brandel
Edel
Edel
Gewurtz
Edel
Claude
Andr
Andr
Andr
En 4FN parce qu'il n'existe pas de DM (par exemple buveur cru est faux parce qu'il n'existe pas le tuple
(Meyer, Gewurtz, Claude)).
40
Mais il reste encore des redondances : on apprend deux fois que Meyer boit de l'Edel et que Andr produit de
l'Edel.
Mais il est impossible de dcomposer de deux relations.
Les DM permettent de dcomposer une relation en deux, les DJ permettent de dcomposer une relation en N
relations.
On obtient alors le schma :
buveur
cru
buveur
producteur
cru
producteur
Meyer
Meyer
Brandel
Edel
Gewurtz
Edel
Meyer
Meyer
Brandel
Claude
Andr
Andr
Edel
Edel
Gewurtz
Claude
Andr
Andr
En 5FN.
41
C. Exemples
R <A, B, C>
Donnez le schma conceptuel de la BD en 3FN dans les trois cas suivants :
1. F = {A B, B C }
2. F = {A B, C}
3. F = { }
1. 1FN ? OUI
R <A, B, C>, cl : A
2FN ? OUI
3FN ? NON, car transitif
R1 <A, B>, R2 <B, C>
en 3FN.
2. 1FN ? OUI
R <A, B, C>, cl : A
2FN ? OUI
3FN ? OUI (dcoupage possible R1 <A, B>, R2 <A, C> mais inutile).
3. 1FN ? OUI
R <A, B, C>, cl : A, B, C
2FN ? OUI (ne surtout pas dcomposer)
3FN ? OUI
Exemple des gtes
GITES < nom, nb-chambres, num-chambre, type, prix, nbre-lits, douche, baignoire, WC, lib-div, gratuit, saison>
F0 = {
42
on dcompose :
R1 <nom, catgorie, nbre-chambres>
R21 <nom, num-chambres, type>
R22 <type, nb-lits, douche, baignoire, WC>
R3 <nom, lib-div, gratuit>
R4 <nom, type, saison, prix>
En 3FN ? OUI.
En FNBC ? OUI.
V. Insertion - suppression
Emploi de n-uplets, sans prcision sur son mode d'obtention (entre au clavier + vrification).
Couples pr-conditions - post-conditions :
pr-condition : doit tre vrifie pour avoir le droit d'excuter l'opration
post-condition : le rsultat de l'opration doit la vrifier
Exemple : base tudiants
Attributs : net, nom, ge, adresse, tarif, matire, enseignant, moyenne
ETUDIANT <net, nom, ge, adresse>
PRIX <ge, tarif>
ENSEIGNEMENT <matire, enseignant>
NOTE <net, matire, moyenne>
43
pr-condition :
- n.net projnet (ETUDIANT)
- n.ge projge (PRIX)
post-condition : ETUDIANT = ETUDIANT {n}
VI. SQL
A. Cration de tables
Syntaxe :
CREATE TABLE <nom-de-table> (<colonne> | <contrainte-de-relation>)+
<nom-de-table> : chane de caractres simple (par exemple etudiant), ou compos (un nom de schma suivi d'un
nom de table, par exemple crous.etudiant).
<colonne> = <nom-de-colonne> <type-de-donnes> [<dfaut>] [<contrainte-de-colonne>]
<type-de-donnes> :
chanes de caractres de longueur fixe : CHAR (size), o size est facultatif (omis : taille = 1, max = 255).
chanes de caractres de longueur variable :
VAR CHAR 2 (size), o size est obligatoire (max = 2000).
LONG, sans prciser de taille (on peut y mettre des valeurs jusqu' 2 Go), mais avec restrictions :
un seul champ de type LONG par relation
contrainte d'intgrit : uniquement NULL ou NOT NULL pour ce champ (NULL = on ne peut
rien y mettre)
index interdits
ne peut pas apparatre dans certaines parties d'une commande SQL (WHERE, GROUP BY,
DISTINCT...)
numrique (entier positif, ngatif, virgule fixe ou flottante) : NUMBER(p,s), o :
44
Exemple :
CREATE TABLE prix (
B. Insertion de donnes
Syntaxe :
INSERT INTO <nom-de-table> [ ( <nom-de-colonne> )+ ]
{ VALUES ( <constantes> )+ | <commande-de-recherche> }
Exemple :
INSERT INTO etudiant (net, nom, age, adresse)
45
C. Suppression de donnes
Syntaxe :
DELETE FROM <nom-de-table>
[ WHERE { <condition-de-recherche> | CURRENT OF <nom-de-curseur> } ]
Exemple :
DELETE FROM etudiant WHERE nom LIKE Meyer OR age > 36
DELETE FROM prix
Remarque : le second exemple limine toute la table !
D. Mises jour
Syntaxe :
UPDATE <nom-de-table>
SET { <nom-de-colonne> = { <expression-de-valeur> | NULL } }+
WHERE { <condition-de-recherche> | CURRENT OF <nom-de-curseur> }
Exemple :
UPDATE prix
SET tarif = 'T12'
WHERE age = 30
UPDATE etudiant \\
SET age = age + 1
WHERE nom = Meyer
Remarque : seuls les n-uplets vrifiant la condition (optionnelle) sont mis jour.
46
I. Entit
Entit = individu dans MERISE
Entit = objet concret ou abstrait qui peut tre distinctement identifi dans l'esprit du concepteur et qui prsente
un intrt particulier.
Exemple : M. Meyer, dpartement de vente d'une entreprise... M. Meyer est UNE entit.
classe (ou type) d'entit : une classe regroupe toutes les entits de mme nature.
Exemple : M. Meyer classe Personne (M. Meyer est une occurrence de la classe Personne).
Reprsentation graphique :
<nom-classe>
Personne
Voiture
II. Association
Association = relation dans MERISE.
Une association est une relation entre une ou plusieurs entits.
L'association reprsente gnralement le verbe d'une phrase.
Classe (ou type) d'association = ensemble des associations ayant mme smantique, dfinies sur un mme type
d'entits.
Reprsentation graphique : il en existe de nombreuses, il faut en choisir une.
classe d'ass.
classe d'ass.
classe d'ass.
47
classe d'ass.
classe d'ass.
Un type d'association ne peut pas tre directement reli avec un autre type d'association :
INTERDIT (sauf extension agrgation)
Un type d'entit de peut tre reli un autre type d'entit que par un lien d'association :
INTERDIT
Il n'y a pas de restriction sur le nombre de types d'associations entre types d'entits :
Possde
Personne
Voiture
Conduit
Habite
Ville
Une occurrence d'association associe plusieurs entits : une et une seule entit par classe d'entits intervenant
dans le type d'association.
a,b
Possde
c,d
Voiture
0,n
0,n
0,n
Possde
1,1
Conduit
mn
0,n
Voiture
Ville
Remarque : selon les auteurs, les couples (a,b) et (c,d) peuvent tre reprsents sur une liaison ou sur l'autre.
cardinalit : couple (a,b) ou (c,d). 4 alternatives pour les deux couples (a,b) et (c,d) :
0,1
0,n
1,1
1,n
Pas d'autre choix possible.
48
mari
mari
Personne
Personne
mari
femme
Voiture
Personne
Voiture
Personne
Chateau
Enseignant
Emploi du temps
Horaire
Groupe d'tudiants
Produit
0,n
Client
1,1
Commande
Ligne produit
mauvaise modlisation
Les cardinalits peuvent varier selon les questions que l'on se pose :
Produit
0,n
Ligne produit
1,n
Commande
49
1,1
Passe par
0,n
Client
IV. Attribut
attribut = proprit dans MERISE
Un attribut est la proprit d'un type d'entit ou d'association.
Une proprit a une valeur.
Exemple :
Personne
id
nom
ge
adresse
Personne
- id
- nom
- ge
- adresse
Autre notation :
Attributs :
valeurs simples, pas de structure, pas d'ensemble
valeurs facultatives ou obligatoires
Les attributs peuvent tre :
des identifiants : cls, souligns dans la reprsentation graphique
des descripteurs : tous les autres.
Les attributs du type d'association regroupent les cls de chacun des types d'entits de l'association + des attributs
propres l'association :
Fournisseur
Id-fourn
Nom
0,n
Ligne catalogue
0,n
Prix
Produit
Id-produit
Dsignation
Cl de l'association : a priori, elle est constitue de toutes les cls de l'ensemble des cls des entits qui
interviennent dans l'association :
Exemple : la cl de ligne catalogue est (Id-fourn, Id-produit).
En pratique, ce n'est pas toujours le cas :
0,1
Produit
Le prix ne dpend que du numro de produit
0,n
0,n
Inscrit
Note
Matire
Id-matire
Libell
inscrit < Id-lve, Id-matire, note > n'autorise pas d'avoir plusieurs notes pour un tudiant donn dans une
matire donne.
50
Elve
Id-lve
Nom
0,n
0,n
Inscrit
Note
Matire
Id-matire
Libell
1,n
Date'
Date
inscrit < Id-lve, Id-matire, Date, note >, on peut prsent avoir plusieurs notes par lve (une par date).
Il existe des exemples o cela ne fonctionne pas :
Bandit
Id-bandit
Nom
Sjour prison
0,n
Date dbut
Date fin
dbut
0,n
Prison
Id-prison
1,n
Date'
Date
cl : id-bandit + id-prison + date + date-dbut une date en entit + une date en association.
V. Rgles de normalisation
L'attribut est affect au type d'entits ou d'associations qu'il dcrit le plus directement :
Personne
Possde
Voiture
Date de naissance
Date d'achat
0,1
0,n
Employ
OU
Id-emp
Nom
Occupe
Surface
Bureau
Id-bureau
Surface
51
Un type d'entit qui ne comporte qu'un identifiant peut tre trait comme un attribut, condition qu'il
n'intervienne pas dans un nouveau type d'association et qu'il ne gnre pas d'attribut valeur multiple.
Il faut toujours vrifier si les associations de degr suprieur deux ne peuvent pas tre rapportes plusieurs
associations de degr infrieur.
Un type d'association peut tre limin s'il est la composition de deux types d'associations qui, par des
cardinalits (0,1) ou (1,1), expriment la mme ralit.
Exemple :
1,n
Station ski
Situation
1,1
1,n
Htel
Affectation
1,1
Chambre
1,n
1,1
Lieu
INTERDIT
une relation
soit intgre dans une relation existante (card max 1)
soit donne lieu a une nouvelle relation
A. Exemple voitures
Personne
Id-pers
Nom
0,n
Possde
Date d'achat
B. Exemple tudiant
ETUDIANT <net, nom, ge, adresse>
PRIX <ge, tarif>
ENSEIGNEMENT <matire, enseignant>
NOTE <net, matire, moyenne>
52
0,1
Voiture
Immatriculation
Type
Etudiant
net
Nom
Adresse
0,n
0,n
Note
Enseignement
Matire
Enseignant
1,1
Ag de
0,n
Anne
1,1
Dtermine
0,n
Tarif
Id-tarif
Age
Ou encore :
Etudiant
net
Nom
Adresse
0,n
Note
1,1
0,n
Paie
0,n
Enseignement
Matire
Enseignant
Prix
Age
Tarif
C. Exemple Employ
SERVICE <nS, nomS>
EMPLOYE <nE, nomE, nS>
PROJET <nP, nomP, cot>
PARTICIPE <nE, nP, nomR>
Employ
nE
NomE
0,1
Travaille
0,n
Participe
nomR
0,n
Projet
nP
nomP
Cot
53
0,n
Service
nS
nomS
Homme
Femme
service militaire
Terrestre
Arien
Diesel
Atmosphrique
Essence
Compress
Diesel
Injection
Essence
Sur N critres :
Homme
Carburation
Personne
Femme
Majeur
54
Mineur
Programmeur
Employ
Travaille
Chef de projet
Secrtaire
Dirige
Dispose
Voiture
Berline
Monospace
Personne Homme
Totalit :
Femme
Voiture
Exclusion :
Diesel
Voiture
Turbo
Essence
(GPL)
Reprsentation graphique :
Partition :
Totalit :
Exclusion :
55
Diesel
Exemple :
Personne
Id-pers
Nom
+
Chanteur
Musicien
Voix
Instrument
Autre possibilit :
personne < id-pers, nom, type, voix, instrument >
partition :
totalit :
exclusion :
type {C,M}
type = C ET voix NULL ET instrument = NULL
type = M ET voix = NULL ET instrument NULL
type {C,M,D}
type {C,M,NULL}
type = C ET voix NULL ET instrument = NULL
type = M ET voix = NULL ET instrument NULL
Trois relations :
personne < id-pers, nom >
chanteur < id-pers, voix >
musicien < id-pers, instrument >
C1 : projid-pers (chanteur) projid-pers (personne)
C2 : projid-pers (musicien) projid-pers (personne)
C3 : projid-pers (musicien) projid-pers (chanteur) =
C4 : projid-pers (musicien) projid-pers (chanteur) = projid-pers (personne)
partition :
totalit :
exclusion :
Autre mthode :
personne < id-pers, nom, type >
chanteur < id-pers, voix >
musicien < id-pers, instrument >
56
partition :
totalit :
exclusion :
type {C,M}
projid-pers (chanteur) projid-pers (personne | type = C)
projid-pers (musicien) projid-pers (personne | type = M)
type {C,M,D}
type {C,M,NULL}
projid-pers (chanteur) $ projid-pers (personne | type {C,D})
projid-pers (musicien) projid-pers (personne | type {M,D})
type
entier
chane
entier
chane
chane
entier
chane
rel
descriptif
numro de service
nom de service
numro de l'employ
nom de l'employ
rle de l'employ dans un projet
numro de projet
nom de projet
cot estim d'un projet, ventuellement NULL
cl : nS
cl : nE
cl : nP
cl : (nE, nP)
Liste de tous les triplets (nP, nomP, cot) de tous les projets dont le cot est suprieur 1M dEuros.
2.
Liste de tous les triplets (nE, nomE, nS) des employs qui travaillent dans le service numro 1, 5 ou 8.
3.
4.
5.
6.
7.
57
8.
9.
Noms et numros de service des employs dont le rle est "chef de projet" quel que soit le projet
considr.
10. Noms d'employs et numros de service pour les employs travaillant dans un projet dont le nom est
"station d'puration".
11. Noms des employs travaillant dans un projet de cot infrieur 1M d'Euros.
12. Numros des employs qui ont le mme rle que celui occup par l'employ 103 dans le projet 60.
2) Rponses
1. Liste de tous les triplets (nP, nomP, cot) de tous les projets dont le cot est suprieur 1M dEuros.
projet | cot 1M
SELECT * FROM Projet
WHERE cout 1000000 ;
2. Liste de tous les triplets (nE, nomE, nS) des employs qui travaillent dans le service numro 1, 5 ou 8.
Employ | nS {1, 5, 8}
SELECT * FROM Employe
WHERE nS = 1 OR nS = 5 OR nS = 8 ;
3. Liste de tous les rles tenus par les employs.
projnomR (Participe)
SELECT DISTINCT nomR FROM Participe ;
4. Liste de tous les numros de projets.
projnomP (Projet)
SELECT DISTINCT nomP FROM Projet ;
5. Liste de tous les noms et numros des employs de la socit.
projnomE,nE (Employ)
SELECT DISTINCT nomE, nE FROM Employe ;
6. Nom des employs qui travaillent dans le service numro 45.
projnomE (Employ | nS = 45)
SELECT nomE FROM Employe
WHERE nS = 45 ;
7. Numros des employs qui travaillent pour le projet 72.
projnE (Participe | nP = 72)
SELECT nE FROM Participe
WHERE nP = 72 ;
8. Noms des employs qui travaillent pour le projet 98.
projnomE (Employ Participe | Employ.nE = Participe.nE ET np = 98)
ou
projnomE (Employe (Participe | nP = 98)) | Employ.nE = Participe.nE
ou
projnomE (Employ | nE projnE (Participe | nP = 98))
SELECT nomE FROM Employe, Participe
WHERE Employe.nE = Participe.nE AND nP = 98 ;
ou
58
59