Vous êtes sur la page 1sur 47

Cours base de donnes

Formation Tact

Anne universitaire : 2011/2012

I. Dfinition II. Concepts de base du modle relationnel. III. Les rgles de passage du modle entit / association au modle relationnel. IV.Normalisation

IV.1 But et principe IV.2 Dpendance fontionnelle IV.3 Les formes normales

IV.3.1 1re forme normale IV.3.2 2me forme normale IV.3.3 3me forme normale

Le modle relationnel a t propos par Edgar Frank. Codd en 1970 (IBM SAN-JOSE). Il est souvent considr comme le plus simple et le plus lgant des modles. Sa simplicit est due une vision tabulaire des donnes trs intuitive. Son lgance rsulte de bases formelles issues de la thorie mathmatique des ensembles.

Aujourd'hui utilis par beaucoup de SGBD relationnels commerciaux (Oracle, Informix, DB2, Ingres, Sybase, dBase, Access ).

Deux modles relationnels 1. Modle formel relation, attribut, tuple, identifiant normalisation algbre relationnelle 2. Modle logique, implment : SQL table, colonne, ligne, cl primaire SQL - dfinition et modification du schma SQL - requtes

Objectifs: Proposer un schma de donnes facile utiliser, Amliorer lindpendance logique et physique, Fournir des langages de haut niveau non informaticiens, Optimiser les accs la base, Amliorer lintgrit et la confidentialit, Fournir une approche mthodologique dans la construction des schmas.

Ensemble de concepts pour formaliser la description des objets du monde rel. Monde rel objet Relationnel relation

proprit attribut reprsentation multiple Lien identifiant externe /

Etudiant (NEtud, nom, prnom, ddn) noms des attributs


Etudiant
NEtud
12304 23403

nom de la relation
Schma

nom
Ali Salah Tounsi

prnom
Mohamed Youssef Khaled

ddn
8/11/1984 11/8/1983 7/7/1984

Tuple/occurrence

34504

Domaine

Une BD = un ensemble de relations. Un schma d'une BD relationnelle (sert dcrire les relations): un ensemble de schmas de relations : R1, R2, , Rn Un schma d'une relation = nom de la relation, liste des couples (Attr:Domaine) et identifiant(s) Etudiant (N Etud : Dnum, Nom : Dnom, Prnom : Dnom, Age : Dge) Un domaine D est un ensemble de valeurs caractris par un nom type de donnes. Chaque valeur du domaine est atomique et donc indivisible.

Relation
Une relation (ou table) R correspond au sousensemble du produit cartsien de n domaines : R D1 x D2 x D3 x x Dn n : degr d'une relation ,nombre de domaines impliqu attribut : rle jou par un domaine dans une relation. Exemple: Pilote (NumPil, NomPil, adr, sal) Avion (NumAv, AvNom, loc, cap)

Etudiant

NEtud 136 253 101

Nom Prnom Tounsi Med Ben Foulen Ali Cherif Cherif

Age 20 19 20

<253,Ben Foulen, Ali, 19> constitue un tuple Cardinalit de Etudiant = Nombre de tuples
Cours NomC Horaire Prof

Algorithmique Systme
Suit

Lundi 10:30-12 Lundi 14-15:30


NomC

Mr X MelleY

NEtud

136 253 101

Algorithmique Systme Systme

Relation, cl primaire dune relation

Une cl de relation est un sous-ensemble (minimal) d'attributs qui permet didentifier de manire unique chaque tuple de la relation. Il n'existe jamais 2 tuples ayant les mmes valeurs pour tous ces attributs Une cl n'admet jamais de valeurs nulles. Toute relation doit possder au moins une cl (identifiant). La cl choisie est appele cl primaire lors de la dfinition d'un schma cette cl doit tre mise en vidence (soulignement ou en gras). Exemple Etudiant ( NEtud , nom , prnom , age) Suit ( NEtud , NomC ) NEtud rfrence un Etudiant NomC rfrence un Cours

Relation, cl trangre dune relation Groupe dattributs devant apparatre comme cl primaire dans une autre relation Dcrit les liens binaires entre les relations Les cls trangres dfinissent les contraintes dintgrit rfrentielles. Lors d'une insertion, la valeur des attributs doit exister dans la relation rfrence, Lors d'une suppression dans la relation rfrence les tuples rfrenants doivent disparatre.

Relation, cl trangre dune relation Exemple: la relation Suit contient les cls de Etudiant et Cours Suit traduit un lien entre Etudiant et Cours La valeur de NEtud dans Suit est : celle de l'identifiant d'un tuple existant de Etudiant (intgrit rfrentielle) Mme contrainte pour NomC de Suit

Diagramme de lien
Etudiant NEtud Nom Prnom Age Cours NomC Horaire Prof

Suit

NEtud

NomC

Contrainte dintgrit

Une contrainte dintgrit (CI) est une expression boolenne associ une BD et qui doit toujours tre value VRAI une expression formelle dune certaine rgle de gestion . Exemple: la moyenne dun tudiant est situe dans lintervalle de 0 20 inclus. Une CI est une proprit du schma, invariante dans le temps ou chaque relation doit la (les) respecter. En gnral, une CI est une contrainte sur les valeurs quune variable, ou une combinaison de variables, est autorise prendre.

Un schma relationnel se compose : pour chaque relation de : nom de la relation attributs + domaines cl(s) ventuellement cl(s) trangre(s) contraintes d'intgrit associes

Rgle 1 : Toute classe dentits du diagramme entit/association est


reprsente par une relation dans le schma relationnel quivalent. La cl de cette relation est lidentifiant de la classe dentits correspondante.
NOM_CLASSE_ENTITE

-CARAC_REF
-CA1 -CA2 ..

NomRelation= Nom_Classe_Entite

( CARAC_REF, CA1, ........, CAn)

Exceptions: Les entits n'ayant que leur identifiant comme attribut ne deviennent pas des relations, mais des attributs dans les autres relations lies.

Rgle 2 : Toute association de type [1, n] se traduit par une cl trangre.La cl primaire correspondant l'entit mre(ct n) migre comme cl trangre dans la relation correspondant l'entit fille (ct 1).
NOM_CLASSE_ENTITE1 NOM_CLASSE_ENTITE2

-CARAC_REF1
-CA1 -CA2 ..

?,1

ASSOCIATION

?,n

-CARAC_REF2
-CB1 -CB2 ..

Relation1 ( Carac_ref1, Ca1, ........, Can, #Carac_ref2 ) Carac_ref2 Relation2 ( Carac_ref2, Cb1, ........, Cbm)
Rq. ? dsigne 0 ou 1 (cardinalit minimale)
Cl trangre

Rgle 3 : Toute association non hirarchique (de type [n, n] ou de dimension > 2) devient une relation. La cl primaire est forme par la concatnation de l'ensemble des identifiants des entits relies. Toutes les proprits ventuelles deviennent des attributs qui ne peuvent pas faire partie de la cl.
NOM_CLASSE_ENTITE1 NOM_CLASSE_ENTITE2

-CARAC_REF1
-CA1 -CA2 ..

?,n

ASSOCIATION CARAC_ASS

?,n

-CARAC_REF2
-CB1 -CB2 ..

Relation1 ( Carac_ref1, Ca1, ........, Can) Association ( Carac_ref1, Carac_ref2 ) ,Carac_assoc Relation2 ( Carac_ref2, Cb1, ........, Cbm) )

NOM_CLASSE_ENTITE2

-CARAC_REF2
NOM_CLASSE_ENTITE1

-CARAC_REF1
-CA1 -CA2 ..

?,n ?,n
ASSOCIATION CARAC_ASS

-CB1 ..

NOM_CLASSE_ENTITE3

?,n

-CARAC_REF3
-CC1 ..

Relation1 ( Carac_ref1, Ca1, ........, Can) Association ( Carac_ref1, Carac_ref2,Carac_ref3 ) ,Carac_assoc Relation2 ( Carac_ref2, Cb1, ..., Cbm) Relation3 ( Carac_ref3, Cc1,...., Ccp) )

Les associations rflexives suivent les rgles 2 ou 3 selon les cardinalits mais posent un problme particulier : une mme proprit va se retrouver deux fois en attribut dans la mme relation. Il faut alors donner un nom diffrent et significatif aux deux attributs correspondants. Dans les rflexives, il est conseill de nommer les branches par des rles pour pouvoir lire dans le bon sens l'association.
NOM_CLASSE_ENTITE1

-CARAC_REF1
-CA1 -CA2 ..

Relation1 ( Carac_ref1, Ca1, ........, Can)


?, n 1 0,
ASSOCIATION

?, n

Carac_assoc

Asso ( Carac_ref1_a, Carac_ref1_b )Carac_assoc ,

CLASSE_ENTITE

Liens d hritage : spcialisation et gnralisation


CLASSE_ENTITE1
-CB1 -CB2

-CARAC_REF
-CA1 -CA2

CLASSE_ENTITE2
-CC1 -CC2 -CC3

Relation ( Carac_ref, Ca1, Ca2, Cb1, Cb2, Cc1, Cc2, Cc3)

Implantation avec rpartition horizontale (Avec 2 ou 3 tables) Relation ( Carac_ref, Ca1, Ca2)
Cl trangre Cl trangre

Relation1 ( Carac_ref, Ca1, Ca2, Cb1, Cb2) Relation2 ( Carac_ref, Ca1, Ca2, Cc1, Cc2, Cc3)

OU

Implantation avec rpartition verticale Relation ( Carac_ref, Ca1, Ca2)

Relation1 ( Carac_ref, Cb1, Cb2)

Relation2 ( Carac_ref, Cc1, Cc2, Cc3)

Exemple

dentit:

DEPARTEMENT Num_Dpartement Nom_Dpartement Localisation

DEPARTEMENT(Num_dpartement,nom_dpartement,localisation)

Exemple

dassociation

FILM FILM Num_Film Num_Film Intitul Intitul

ACTEUR

1:n

JOUER Rle

1:n

Num_Acteur Nom_Acteur Adresse

JOUER(Num_film #,Num_Acteur#,Role)

o Exemple assocication 1 1
DEPARTEMENT Num_dpartement Nom_dpartement Localisation ENSEIGNANT

1:1

ETRE CHEF_DE

0:1

CIN_Enseignant Nom_Enseignant Prnom_Enseignant

DEPARTEMENT(Num_dpartement,nom_dpartement,localisation) ENSEIGNANT(CIN_enseignant, Nom_enseignant, Prnom_enseignant, Num_dpartement#)

oExemple association 1 plusieurs


DEPARTEMENT Num_Dpartement Nom_Dpartement Localisation EMPLOYE
TRAVAILLER DANS

1:n

1:1

CIN Employ Nom Employ Prnom Employ Adresse Employ

DEPARTEMENT(Num_Dpartement,Nom_Dpartement,Localisation) EMPLOYE(CIN_Employ,Nom_Employ,Prnom_Employ, Adresse_Employ,Num_dpartement#)

oExemple association plusieurs plusieurs


ENSEIGNANT CIN Enseignant Nom Enseignant Prnom Enseignant Adresse Enseignant ETUDIANT

1:n

SINSCRIRE

1:n

ANNEE

CIN Etudiant Nom Etudiant Prnom Etudiant Adresse Etudiant

ENSEIGNANT(CIN_Enseignant,Nom_Enseignant,Prnom_Enseignant, Adresse_Enseignant) ETUDIANT(CIN_Etudiant,Nom_Etudiant,Prnom_Etudiant, Adresse_Etudiant) SINSCRIRE(CIN_Enseignant#, CIN_Etudiant #, Anne)

oExemple association ternaire


ENSEIGNANT CIN Enseignant Nom Enseignant Prnom Enseignant Adresse Enseignant ETUDIANT

1:n

SINSCRIRE

1:n
CIN Etudiant Nom Etudiant Prnom Etudiant Adresse Etudiant

Anne 1:n
MATIERE Num Matire Nom Matire Coefficient Matire

ENSEIGNANT(CIN_Enseignant,Nom_Enseignant,Prnom_Enseignant, Adresse_Enseignant) ETUDIANT(CIN_Etudiant,Nom_Etudiant,Prnom_Etudiant, Adresse_Etudiant) MATIERE (Num_Matire, Nom_Matire, Coefficient_Matire) SINSCRIRE(CIN_Enseignant#, CIN_Etudiant #, Num_Matire#, Anne)

oExemple association avec entit faible

BATIMENT

SALLE

0:n
Numro_Batiment Adresse

LOCALISER

1:1
Numro_Salle Capacit

BATIMENT ( Numro_Batiment, adresse ) SALLE ( Numro_Batiment#,Numro_Salle, capacit )

Exemple Soit la relation COMMANDE_PRODUIT.

NumProd 101 104 112 103

Quantit 300 1000 78 250

NumFour 901 902 904 901

Adresse Tunis Mannouba Mannouba Tunis

Cette relation prsente diffrentes anomalies.

Anomalies de modification : Si lon souhaite mettre jour ladresse dun fournisseur, il faut le faire pour tous les tuples concerns. Anomalies dinsertion : Pour ajouter un fournisseur nouveau, il faut obligatoirement fournir des valeurs pour NumProd et Quantit. Anomalies de suppression : ex. La suppression du produit 104 fait perdre toutes les informations concernant le fournisseur 902.

Normalisation

Il sagit dappliquer des rgles dans le but dviter toute sorte danomalie dans le modle relationnel et par consquent la base de donnes. Ces rgles permettent davoir :

Des requtes plus simple crire Des donnes plus facile accder Une meilleure intgrit des donnes Une diminution des erreurs lors de linsertion ou la suppression des donnes Une utilisation optimale des ressources

Soient R(A1, A2 An) un schma de relation, X et Y des sous-ensembles de A1, A2 An. On dit que X dtermine Y ou Y dpend fonctionnellement de X (XpY) ssi il existe une fonction qui partir de toute valeur de X dtermine une valeur unique de Y. Exemple1 : A B signifie A dtermine B . Si lon connait votre numro demploy, on peut dterminer votre salaire. Exemple2 : PRODUIT (NumProd, Dsi, PrixUni) NumProd pDsi, Dsi pPrixUni

Normaliser

une base de donnes consiste appliquer des rgles regroupes sous la dnomination de Formes normales forme normale est une mthode de classification des relations qui se reposent sur des dpendances fonctionnelles.

Une

relation est dite en 1re forme normale si et seulement si tout attribut contient une valeur atomique. (non multiple, non compos) Exemple : Mdicament(code,description,date_fabrication ,date_expriration)
Une

Code description Code date_fabrication Code date_expiration

Le

relation mdicament est bien en 1re FN

Pre(cin,

nom, ge, fils)

Cin Cin Cin


nom ge fils

Solution

: clater la relation Pre en :

Pre (cin_pre,nom,ge) Fils (cin_fils,cin_pre#)

Enseignant(code,nom,matires_enseignes)

Code Code

nom matires_enseignes

Solution

1:

Matire(code_matire, nom_matire) Enseignant(code,nom,code_matire#)


Solution

2:

Matire(code_matire, nom_matire) Enseignant(code_enseignant,nom) Matires_enseignes(code_matire#,code_enseignant#)

Une

relation est en 2me forme normale si et seulement si: Elle est en 1re forme normale Lorsque tous ses attributs non cls sont totalement dpendants fonctionnellement de la totalit de la cl primaire. R (a,b,c,d,e)
A,b A,b A,b

c d e

Exemple 1 : Fournisseur (nom, adresse, article, prix) La cl est (nom, article) nom adresse : pas en 2FN Exemple 2 : Fournisseur2(NF, Pays,Ville) NF Ville Pays Redondance Dcomposition y Fourn(NF, Ville #) y Go(Ville, Pays) Sans perte dinformation, sans perte de DF.

Une

relation est en 3 forme normale si et seulement si: est dj en 2me forme normale

Elle

Il

nexiste aucun attribut non cl qui dpend fonctionnellement dun autre attribut non cl.

Exemple1 :

Voiture (n veh, marque, type, puissance, couleur)


n veh Type type puissance

Pas en 3me forme ! Il est bon que les relations logiques soient en 3me forme :

Pas de redondance Pas de perte d information Pas de perte de dpendance

Voiture (n veh, marque, type, puissance, couleur)

Se dcompose en :

Vhicule (n veh, type#, couleur) Modle (type, marque, puissance)

Exemple2: Salari (num_salari, nom, date_naissance,num_service,nom_service)

num_service nom_service (anomalie)

Se dcompose en : Salari (Num_salari, nom, date_naissance, num_service#) Service (Num_service, nom_service)

Donner le modle relationnel correspondant.

Vous aimerez peut-être aussi