Vous êtes sur la page 1sur 30

Livret - 12

Principes des bases de donnes


SGBD relationnel, algbre relationnelle SQL

RM di scala

Cours informatique programmation Rm di Scala http://www.discala.net

12 : Principes des bases de donnes


Plan du chapitre:

1. Introduction et Gnralits

2. Le modle de donnes relationnelles 3. Principes fondamentaux d'une algbre relationnelle

4. SQL et Algbre relationnelle

rm di Scala - 2006

Livret 12 : Principes des bases de donnes - ( rv. 07.12.2005 )

page

1. Introduction et Gnralits

1.1 Notion de systme d'information L'informatique est une science du traitement de l'information, laquelle est reprsente par des donnes Aussi, trs tt, on s'est intress aux diverses manires de pouvoir stocker des donnes dans des mmoires auxiliaires autres que la mmoire centrale. Les donnes sont stockes dans des priphriques dont les supports physiques ont volu dans le temps : entre autres, d'abord des cartes perfores, des bandes magntiques, des cartes magntiques, des mmoires bulles magntiques, puis aujourd'hui des disques magntiques, ou des CD-ROM ou des DVD. La notion de fichier est apparue en premier : le fichier regroupe tout d'abord des objets de mme nature, des enregistrements. Pour rendre facilement exploitables les donnes d'un fichier, on a pens diffrentes mthodes d'accs (accs squentiel, direct, index). Toute application qui gre des systmes physiques doit disposer de paramtres smantiques dcrivant ces systmes afin de pouvoir en faire des traitements. Dans des systmes de gestion de clients les paramtres sont trs nombreux (noms, prnoms, adresse, nScu, sport favori, est satisfait ou pas,..) et divers (alphabtiques, numriques, boolens, ...). Ds que la quantit de donnes est trs importante, les fichiers montrent leurs limites et il a fallu trouver un moyen de stocker ces donnes et de les organiser d'une manire qui soit facilement accessible.

Base de donnes (BD)


Une BD est compose de donnes stockes dans des mmoires de masse sous une forme structure, et accessibles par des applications diffrentes et des utilisateurs diffrents. Une BD doit pouvoir tre utilise par plusieurs utilisateurs en "mme temps".

Une base de donnes est structure par dfinition, mais sa structuration doit avoir un caractre universel : il ne faut pas que cette structure soit adapte une application particulire, mais qu'elle puisse tre utilisable par plusieurs applications distinctes. En effet, un mme ensemble de donnes peut tre commun plusieurs systmes de traitement dans un problme physique (par exemple la liste des passagers d'un avion, stocke dans une base de donnes, peut aussi servir au service de police vrifier l'identit des personnes interdites de sjour, et au service des douanes pour associer des bagages aux personnes.).

Systme d'information
Dans une entreprise ou une administration, la structure smantique des donnes, leur organisation logique et physique, le partage et l'accs de grandes quantits de donnes grce un systme informatique, se nomme un systme d'information.
Livret 12 : Principes des bases de donnes - ( rv. 07.12.2005 ) page

Les entits qui composent un systme d'information

L'organisation d'un SI relve plus de la gestion que de l'informatique et n'a pas exactement sa place dans un document sur la programmation. En revanche la cheville ouvrire d'un systme d'information est un outil informatique appel un SGBD (systme de gestion de base de donnes) qui repose essentiellement sur un systme informatique compos traditionnellement d'une BD et d'un rseau de postes de travail consultant ou mettant jour les informations contenues dans la base de donnes, elle-mme gnralement situe sur un ordinateur-serveur.

Systme de Gestion de Base de Donnes (SGBD)


Un SGBD est un ensemble de logiciels chargs d'assurer les fonctions minimales suivantes : q Le maintien de la cohrence des donnes entre elles, q le contrle d'intgrit des donnes accdes, q les autorisations d'accs aux donnes, q les oprations classiques sur les donnes (consultation, insertion , modification, suppression) La cohrence des donnes est subordonne la dfinition de contraintes d'intgrit qui sont des rgles que doivent satisfaire les donnes pour tre acceptes dans la base. Les contraintes d'intgrit sont contrles par le moteur du SGBD : au niveau de chaque champ, par exemple le : prix est un nombre positif, la date de naissance est obligatoire. Au niveau de chaque table - voir plus loin la notion de clef primaire : deux personnes ne doivent pas avoir la fois le mme nom et le mme prnom. Au niveau des relations entre les tables : contraintes d'intgrit rfrentielles. Par contre la redondance des donnes (formes normales) n'est absolument pas vrifie automatiquement par les SGBD, il faut faire des requtes spcifiques de recherche
rm di Scala - 2006

Livret 12 : Principes des bases de donnes - ( rv. 07.12.2005 )

page

d'anomalies (dites post-mortem) postriori, ce qui semble tre une grosse lacune de ces systmes puisque les erreurs sont dj prsentes dans la base ! On organise actuellement les SGBD selon deux modes :

L'organisation locale selon laquelle le SGBD rside sur la machine o se trouve la base de donnes :

L'organisation client-serveur selon laquelle sur le SGBD est rparti entre la machine serveur locale supportant la BD (partie SGBD serveur) et les machines des utilisateurs (partie SGBD client). Ce sont ces deux parties du SGBD qui communiquent entre elles pour assurer les transactions de donnes :

Le caractre gnraliste de la structuration des donnes induit une description abstraite de l'objet BD (Base de donnes). Les applications tant indpendantes des donnes, ces dernires peuvent donc tre manipules et changes indpendamment du programme qui y accdera en implantant les mthodes gnrales d'accs aux donnes de la base, conformment sa structuration abstraite. Une Base de Donnes peut tre dcrite de plusieurs points de vue, selon que l'on se place du ct de l'utilisateur ou bien du ct du stockage dans le disque dur du serveur ou encore du concepteur de la base. Il est admis de nos jours qu'une BD est dcrite en trois niveaux d'abstraction : un seul niveau a une existence matrielle physique et les deux autres niveaux sont une explication abstraite de ce niveau matriel.

Livret 12 : Principes des bases de donnes - ( rv. 07.12.2005 )

page

Les 3 niveaux d'abstraction dfinis par l'ANSI depuis 1975

Niveau externe : correspond ce que l'on appelle une vue de la BD ou la faon dont sont perues au niveau de l'utilisateur les donnes manipules par une certaine application (vue abstraite sous forme de schmas) Niveau conceptuel : correspond la description abstraite des composants et des processus entrant dans la mise en uvre de la BD. Le niveau conceptuel est le plus important car il est le rsultat de la traduction de la description du monde rel l'aide d'expressions et de schmas conformes un modle de dfinition des donnes. Niveau interne : correspond la description informatique du stockage physique des donnes (fichiers squentiels, indexages, tables de hachage,) sur le disque dur.

Figurons pour l'exemple des passagers d'un avion , stocks dans une base de donnes de la compagnie arienne, sachant qu'en plus du personnel de la compagnie qui a une vue externe commerciale sur les passagers, le service des douanes peut accder un passager et ses bagages et la police de l'air peut accder un passager et son pays d"embarquement.

Implant physiquement vue

vue

Le niveau conceptuel forme l'lment essentiel d'une BD et donc d'un SGBD charg de grer une BD, il est dcrit avec un modle de conception de donnes MCD avec la mthode franaise Merise qui est trs largement rpandu, ou bien par le formalisme des diagrammes de classes UML qui prend une part de plus en plus grande dans le formalisme de description conceptuelle des donnes (rappelons qu'UML est un langage de modlisation formelle, orient objet et graphique ; Merise2 a intgr dans Merise ces concepts mais ne semble pas beaucoup tre utilis ). Nous renvoyons le lecteur intress par cette partie aux trs nombreux ouvrages crits sur Merise ou sur UML.

rm di Scala - 2006

Livret 12 : Principes des bases de donnes - ( rv. 07.12.2005 )

page

Dans la pratique actuelle les logiciels de conception de BD intgrent la fois la mthode Merise 2 et les diagrammes de classes UML. Ceci leur permet surtout la gnration automatique et semi-automatique (paramtrable) de la BD partir du modle conceptuel sous forme de scripts (programmes simples) SQL adapts aux diffrents SGBD du march (ORACLE, SYBASE, MS-SQLSERVER,) et les diffrentes versions de la BD ACCESS. Les logiciels de conception actuels permettent aussi la rtro-gnration (ou reverse engeneering) du modle partir d'une BD existante, cette fonctionnalit est trs utile pour reprendre un travail mal document. En rsum pratique :
Entit-association MCD Merise 2 Diagrammes de classes UML

MLR (Modle logique relationnel) Ou MLD (Modle logique donnes) Merise 2

Script SQL

BD ACCESS

C'est en particulier le cas du logiciel franais WIN-DESIGN dont une version dmo est disponible www.win-design.com et de son rival POWER-AMC (ex AMC-DESIGNOR). Signalons enfin un petit logiciel plus modeste, trs intressant pour dbuter avec version limite seulement par la taille de l'exemple : CASE-STUDIO chez CHARONWARE. Les logiciels bass uniquement sur UML sont, ce jour, essentiellement destins la gnration de code source (Java, Delphi, VB, C++,), les versions Community (versions logicielles libres) de ces logiciels ne permettent pas la gnration de BD ni celle de scripts SQL. Les quelques schmas qui illustreront ce chapitre seront dcrits avec le langage UML. L'exemple ci-aprs schmatise en UML le mini-monde universitaire rel suivant :
q q q q q

un enseignant pilote entre 1 et 3 groupes d'tudiants, un enseignant demande 1 ou plusieurs tudiants de rdiger un mmoire, un enseignant peut conseiller aux groupes qu'il pilote d'aller assister une confrence, un groupe est constitu d'au moins 3 tudiants, un tudiant doit s'inscrire au moins 2 groupes.

Livret 12 : Principes des bases de donnes - ( rv. 07.12.2005 )

page

Si le niveau conceptuel d'une BD est assis sur un modle de conceptualisation de haut niveau (Merise, UML) des donnes, il est ensuite fondamentalement traduit dans le Modle Logique de reprsentation des Donnes (MLD). Ce dernier s'implmentera selon un modle physique des donnes.

Il existe plusieurs MLD Modles Logiques de Donnes et plusieurs modles physiques, et pour un mme MLD, on peut choisir entre plusieurs modles physiques diffrents.

Il existe 5 grands modles logiques pour dcrire les bases de donnes.

Les modles de donnes historiques


(Prenons un exemple comparatif o des lves ont des cours donns par des professeurs leur enseignant certaines matires (les enseignants tant pluridisciplinaires) Le modle hirarchique: l'information est organise de manire arborescente, accessible uniquement partir de la racine de l'arbre hirarchique. Le problme est que les points d'accs l'information sont trop restreints.

Le modle rseau: toutes les informations peuvent tre associes les unes aux autres et servir de point d'accs. Le problme est la trop grande complexit d'une telle organisation.

rm di Scala - 2006

Livret 12 : Principes des bases de donnes - ( rv. 07.12.2005 )

page

Le modle relationnel: toutes les relations entre les objets contenant les informations sont dcrites et reprsentes sous la forme de tableaux 2 dimensions.

Dans ce modle, la gestion des donnes (insertion, extraction,) fonctionne selon la thorie mathmatique de l'algbre relationnelle. C'est le modle qui allie une grande indpendance vis vis des donnes une simplicit de description. Le modle par dduction : comme dans le modle relationnel les donnes sont dcrites et reprsentes sous la forme de tableaux 2 dimensions. La gestion des donnes (insertion, extraction,) fonctionne selon la thorie mathmatique du calcul dans la logique des prdicats. Il ne semble exister de SGBD commercial directement bas sur ce concept. Mais il est possible de considrer un programme Prolog (programmation en logique) comme une base de donnes car il intgre une description des donnes. Ce sont plutt les logiciels de rseaux smantiques qui sont concerns par cette approche (cf. logiciel AXON). Le modle objet : les donnes sont dcrites comme des classes et reprsentes sous forme d'objets, un modle relationnel-objet devrait terme devenir le modle de base.

Livret 12 : Principes des bases de donnes - ( rv. 07.12.2005 )

page

L'exprience montre que le modle relationnel s'est impos parce qu'il tait le plus simple en terme d'indpendance des donnes par rapport aux applications et de facilit de reprsenter les donnes dans notre esprit. C'est celui que nous dcrirons succinctement dans la suite de ce chapitre.

2. Le modle de donnes relationnelles


Dfini par EF Codd de la socit IBM ds 1970, ce modle a t amlior et rendu oprationnel dans les annes 80 sous la forme de SBGD-R (SGBD Relationnels). Ci-dessous une liste non exhaustive de tels SGBD-R : Access de Microsoft, Oracle, DB2 d'IBM, Interbase de Borland, SQL server de microsoft, Informix, Sybase, MySQL, PostgreSQL, . Nous avons dj vu dans un prcdent chapitre, la notion de relation binaire : une relation binaire R est un sous-ensemble d'un produit cartsien de deux ensembles finis E et F que nous nommerons domaines de la relation R :

R ExF
Cette dfinition est gnralisable n domaines, nous dirons que R est une relation n-aire sur les domaines E1 , E2 , , En si et seulement si :

R E1 x E2 x En
Les ensembles Ek peuvent tre dfinis comme en mathmatiques : en extension ou en comprhension : Ek = { 12 , 58 , 36 , 47 } en extension

Ek = { x / (x est entier) et( x [1, 20] ) } en comprhension Notation


si nous avons: R = { (v1 , v2 , vn) } , Au lieu d'crire : (v1 , v2 , vn) R , on crira R(v1 , v2 , , vn) Exemple de dclarations de relations : Passager ( nom, prnom, n de vol, nombre de bagages) , cette relation contient les informations utiles sur un passager d'une ligne arienne. Personne ( nom, prnom) , cette relation caractrise une personne avec deux attributs
rm di Scala - 2006

Livret 12 : Principes des bases de donnes - ( rv. 07.12.2005 )

page

Enseignement ( professeur, matire) , cette relation caractrise un enseignement avec le nom de la matire et le professeur qui l'enseigne.

Schma d'une relation


On appelle schma de la relation R : R( a1 : E1, a2 : E2 ,, an : En ) O (a1 , a2 , an) sont appels les attributs, chaque attribut ak indique comment est utilis dans la relation R le domaine Ek , chaque attribut prend sa valeur dans le domaine qu'il dfinit, nous notons val(ak)= vk o vk est un lment (une valeur) quelconque de l'ensemble Ek (domaine de l'attribut ak ). Convention : lorsqu'il n'y a pas de valeur associe un attribut dans un n-uplet, on convient de lui mettre une valeur spciale note null, indiquant l'absence de valeur de l'attribut dans ce n-uplet.

Degr d'une relation


On appelle degr d'une relation, le nombre d'attributs de la relation.

Exemple de schmas de relations : Passager ( nom : chane, prnom : chane, n de vol : entier, nombre de bagages : entier) relation de degr 4. Personne ( nom : chane, prnom : chane) relation de degr 2. Enseignement ( professeur : ListeProf, matire : ListeMat) relation de degr 2. Attributs : prenons le schma de la relation Enseignement Enseignement ( professeur : ListeProf, matire : ListeMat). C'est une relation binaire (degr 2) sur les deux domaines ListeProf et ListeMat. L'attribut professeur joue le rle d'un paramtre formel et le domaine ListeProf celui du type du paramtre. Supposons que : ListeProf ={ Poincar, Einstein, Lavoisier, Raimbault , Planck } ListeMat = { mathmatiques, posie , chimie , physique } L'attribut professeur peut prendre toutes valeurs de l'ensemble ListeProf : Val(professeur) = Poincar, . , Val(professeur) = Raimbault Si l'on veut dire que le poste d'enseignant de chimie n'est pas pourvu on crira : Le couple ( null , chimie ) est un couple de la relation Enseignement.

Enregistrement dans une relation Un n-uplet (val(a1), val(a2) , val(an) ) R est appel un enregistrement de la relation R. Un enregistrement est donc constitu de valeurs d'attributs.

Livret 12 : Principes des bases de donnes - ( rv. 07.12.2005 )

page

10

Dans l'exemple prcdent (Poincar , mathmatiques), (Raimbault , posie ) , ( null , chimie ) sont trois enregistrements de la relation Enseignement.

Clef d'une relation


Si l'on peut caractriser d'une faon bijective tout n-uplet d'attributs (a1 , a2 , an) avec seulement un sous-ensemble restreint (ak1 , ak2 , akp) avec p < n , de ces attributs, alors ce sous-ensemble est appel une clef de la relation. Une relation peut avoir plusieurs clefs, nous choisissons l'une d'elle en la dsignant comme clef primaire de la relation.

Clef minimale d'une relation


On a intrt ce que la clef primaire soit minimale en nombre d'attributs, car il est clair que si un sous-ensemble p attributs (ak1 , ak2 , akp) est une clef, tout sousensemble p+m attributs dont les p premiers sont les (ak1 , ak2 , akp) est aussi une clef : (ak1 , ak2 , akp , a0 ,a1 ) (ak1 , ak2 , akp , a10 , a5 , a9 , a2 ) sont aussi des clefs etc Il n'existe aucun moyen mthodique formel gnral pour trouver une clef primaire d'une relation, il faut observer attentivement. Par exemple : Le code Insee est une clef primaire permettant d'identifier les personnes. Si le couple (nom, prnom) peut suffire pour identifier un lve dans une classe d'lves, et pourrait tre choisi comme clef primaire, il est insuffisant au niveau d'un lye o il est possible que l'on trouve plusieurs lves portant le mme nom et le mme premier prnom ex: (martin, jean).

Convention : on souligne dans l'criture d'une relation dont on a dtermin une clef primaire, les attributs faisant partie de la clef.

Clef secondaire d'une relation


Tout autre clef de la relation qu'une clef primaire (minimale) , exemple : Si (ak1 , ak2 , akp) est un clef primaire de R (ak1 , ak2 , akp , a0 ,a1 ) et (ak1 , ak2 , akp , a10 , a5 , a9 , a2 ) sont des clefs secondaires.

Clef trangre d'une relation Soit (ak1 , ak2 , akp) un p-uplet d'attributs d'une relation R de degr n. [ R( a1 : E1, a2 : E2 ,, an : En ) ]
Si (ak1 , ak2 , akp) est une clef primaire d'une autre relation Q on dira que (ak1 , ak2 , akp) est une clef trangre de R. Convention : on met un # aprs chaque attribut d'une clef trangre.
rm di Scala - 2006

Livret 12 : Principes des bases de donnes - ( rv. 07.12.2005 )

page

11

Exemple de clef secondaire et clef trangre : Passager ( nom# : chane, prnom# : chane , n de vol : entier, nombre de bagages : entier, n client : entier ) relation de degr 5. Personne ( nom : chane, prnom : chane , ge : entier, civilit : Etatcivil) relation de degr 4. n client est une clef primaire de la relation Passager. ( nom, n client ) est une clef secondaire de la relation Passager. ( nom, n client , n de vol) est une clef secondaire de la relation Passager.etc ( nom , prnom ) est une clef primaire de la relation Personne, comme ( nom# , prnom# ) est aussi un couple d'attributs de la relation Passager, c'est une clef trangre de la relation Passager. On dit aussi que dans la relation Passager, le couple d'attributs ( nom# , prnom# ) rfre la relation Personne.

Rgle d'intgrit rfrentielle


Toutes les valeurs d'une clef trangre (vk1 , vk2 , vkp) se retrouvent comme valeur de la clef primaire de la relation rfre (ensemble des valeurs de la clef trangre est inclus au sens large dans l'ensemble des valeurs de la clef primaire)

Reprenons l'exemple prcdent ( nom , prnom ) est une clef trangre de la relation Passager, c'est donc une clef primaire de la relation Personne : les domaines (liste des noms et liste des prnoms associs au nom doivent tre strictement les mmes dans Passager et dans Personne, nous dirons que la clef trangre respecte la contrainte d'intgrit rfrentielle.

Rgle d'intgrit d'entit


Aucun des attributs participant une clef primaire ne peut avoir la valeur null. Nous dfinirons la valeur null, comme tant une valeur spciale n'appartenant pas un domaine spcifique mais ajoute par convention tous les domaines pour indiquer qu'un champ n'est pas renseign.

Reprsentation sous forme tabulaire


Reprenons les relations Passager et Personne et figurons un exemple pratique de valeurs des relations.

Livret 12 : Principes des bases de donnes - ( rv. 07.12.2005 )

page

12

Passager ( nom# : chane, prnom# : chane, n de vol : entier, nombre de bagages : entier, n client : entier ). Personne ( nom : chane, prnom : chane, ge : entier, civilit : Etatcivil) relation de degr 4. Nous figurons les tables de valeurs des deux relations
Clef trangre

Passager : nom# Einstein Lavoisier Raimbault Poincar Einstein Lavoisier prnom# Albert Antoine Arthur Henri Albert Antoine Nvol 45622 45622 12896 45644 75906 45644
Nbr bagages N client

2 1 2 3 null 4

154565 785154 544552 781201 858547 235002

Clef primaire

Personne: nom Einstein Lavoisier Planck Raimbault Poincar prnom Albert Antoine Max Arthur Henri ge 45 41 52 25 45
Civilit

Clef primaire

mari mari veuf clibataire mari

Nous remarquons que la compagnie arienne attribue un numro de client unique chaque personne, c'est donc un bon choix pour une clef primaire. Les deux tables (relations) ont deux colonnes qui portent les mmes noms colonne nom et colonne prnom, ces deux colonnes forment une clef primaire de la table Personne, c'est donc une clef trangre de Passager qui rfre Personne. En outre, cette clef trangre respecte la contrainte d'intgrit rfrentielle : la liste des valeurs de la clef trangre dans Passager est incluse dans la liste des valeurs de la clef primaire associe dans Personne.

Diagramme UML modlisant la liaison Passager-Personne

Ne pas penser qu'il en est toujours ainsi, par exemple voici une autre relation Passager2 dont la clef trangre ne respecte pas la contrainte d'intgrit rfrentielle :
rm di Scala - 2006

Livret 12 : Principes des bases de donnes - ( rv. 07.12.2005 )

page

13

Clef trangre , rfre Personne

Passager2 : nom Einstein Lavoisier Raimbault Poincar Einstein Picasso prnom Albert Antoine Arthur Henri Albert Pablo Nvol 45622 45644 12896 45644 75906 12896
Nbr bagages N client

2 1 2 3 null 5

154565 785154 544552 781201 858547 458023

En effet, le couple (Picasso , Pablo) n'est pas une valeur de la clef primaire dans la table Personne.

Principales rgles de normalisation d'une relation


1re forme normale : Une relation est dite en premire forme normale si, chaque attribut est reprsent par un identifiant unique (les valeurs ne sont pas des ensembles, des listes,) .Ci-dessous une relation qui n'est pas en 1re forme normale car l'attribut n vol est multivalu (il peut prendre 2 valeurs) : nom Einstein Lavoisier Raimbault Poincar Picasso prnom Albert Antoine Arthur Henri Pablo Nvol 45622 , 75906 45644 , 45622 12896 45644 12896
Nbr bagage N client

2 1 2 3 5

154565 785154 544552 781201 458023

En pratique, il est trs difficile de faire vrifier automatiquement cette rgle, dans l'exemple propos on pourrait imposer de passer par un masque de saisie afin que le Nvol ne comporte que 5 chiffres. 2me forme normale : Une relation est dite en deuxime forme normale si, elle est en premire forme normale et si chaque attribut qui n'est pas une clef, dpend entirement de tous les attributs qui composent la clef primaire. La relation Personne ( nom : chane, prnom : chane , age : entier , civilit : Etatcivil) est en deuxime forme normale : nom Einstein Lavoisier Planck Raimbault Poincar prnom Albert Antoine Max Arthur Henri 45 41 52 25 45 ge Civilit mari mari veuf clibataire mari
page

Livret 12 : Principes des bases de donnes - ( rv. 07.12.2005 )

14

Car l'attribut ge ne dpend que du nom et du prnom, de mme pour l'attribut civilit. La relation Personne3 ( nom : chane, prnom : chane , age : entier , civilit : Etatcivil) qui a pour clef primaire ( nom , ge ) n'est pas en deuxime forme normale : nom Einstein Lavoisier Planck Raimbault Poincar prnom Albert Antoine Max Arthur Henri 45 41 52 25 45 ge Civilit mari mari veuf clibataire mari

Car l'attribut Civilit ne dpend que du nom et non pas de l'ge ! Il en est de mme pour le prnom, soit il faut changer de clef primaire et prendre ( nom, prnom) soit si l'on conserve la clef primaire (nom , ge) , il faut dcomposer la relation Personne3 en deux autres relations Personne31 et Personne32 : nom Einstein Lavoisier Planck Raimbault Poincar nom Einstein Lavoisier Planck Raimbault Poincar 45 41 52 25 45 45 41 52 25 45 ge ge Civilit mari mari veuf clibataire mari prnom Albert Antoine Max Arthur Henri
Personne32( nom : chane, age : entier , prnom : chane) : 2me forme normale Personne31( nom : chane, age : entier , civilit : Etatcivil) : 2me forme normale

En pratique, il est aussi trs difficile de faire vrifier automatiquement la mise en deuxime forme normale. Il faut trouver un jeu de donnes reprsentatif. 3me forme normale : Une relation est dite en troisime forme normale si chaque attribut qui ne compose pas la clef primaire, dpend directement de son identifiant et travers une dpendance fonctionnelle. Les relations prcdentes sont toutes en forme normale. Montrons un exemple de relation qui n'est pas en forme normale. Soit la relation Personne4 ( nom : chane, age : entier, civilit : Etatcivil, salaire : montaire) o par exemple le salaire dpend de la clef primaire et que l'attribut civilit ne fait pas partie de la clef primaire (nom , ge) :

rm di Scala - 2006

Livret 12 : Principes des bases de donnes - ( rv. 07.12.2005 )

page

15

nom Einstein Lavoisier Planck Raimbault Poincar 45 41 52 25 45

ge

Civilit mari mari veuf clibataire mari

salaire 1000 1000 1800 1200 1000


salaire = f ( Civilit) => Pas 3me forme normale

L'attribut salaire dpend de l'attribut civilit, ce que nous crivons salaire = f(civilit), mais l'attribut civilit ne fait pas partie de la clef primaire clef = (nom , ge), donc Personne4 n'est pas en 3me forme normale : Il faut alors dcomposer la relation Personne4 en deux relations Personne41 et Personne42 chacune en troisime forme normale: Personne41 : nom ge Einstein Lavoisier Planck Raimbault Poincar 45 41 52 25 45

Civilit# mari mari veuf clibataire mari

Personne42 : Civilit salaire mari veuf clibataire 1000 1800 1200


Personne42 en 3me forme normale, civilit clef primaire

En pratique, il est galement trs difficile de faire contrler automatiquement la mise en troisime forme normale.

Remarques pratiques importantes pour le dbutant :


Les spcialistes connaissent deux autres formes normales. Dans ce cas le lecteur intress par l'approfondissement du sujet, trouvera dans la littrature, de solides rfrences sur la question. Si la clef primaire d'une relation n'est compose que d'un seul attribut (choix conseill lorsque cela est possible, d'ailleurs on trouve souvent des clefs primaires sous forme de numro d'identification client, Insee,) automatiquement, la relation est en 2me forme normale, car chaque autre attribut non clef trangre, ne dpend alors que de la valeur unique de la clef primaire.

Livret 12 : Principes des bases de donnes - ( rv. 07.12.2005 )

page

16

Penser ds qu'un attribut est fonctionnellement dpendant d'un autre attribut qui n'est pas la clef elle-mme dcomposer la relation (crer deux nouvelles tables). En l'absence d'outil spcialis, il faut de la pratique et tre trs systmatique pour contrler la normalisation.

Base de donnes relationnelles BD-R:


Ce sont des donnes structures travers : Une famille de domaines de valeurs, Une famille de relations n-aires, Les contraintes d'intgrit sont respectes par toute clef trangre et par toute clef primaire. Les relations sont en 3me forme normale. ( minima en 2me forme normale)

Les donnes sont accdes et manipules grce un langage appel langage d'interrogation ou langage relationnel ou langage de requtes

Systme de Gestion de Base de Donnes relationnel :


C'est une famille de logiciels comprenant : Une BD-R. Un langage d'interrogation. Une gestion en interne des fichiers contenant les donnes et de l'ordonnancement de ces donnes. Une gestion de l'interface de communication avec les utilisateurs. La gestion de la scurit des accs aux informations contenues dans la BD-R.

Le schma relation d'une relation dans une BD relationnelle est not graphiquement comme ci-dessous : Passager
Nom Prnom N vol Nbr bagages Nclient

Personne
Nom Prnom ge civilit

rm di Scala - 2006

Les attributs relis entre ces deux tables indiquent une liaison entre les deux relations.
Livret 12 : Principes des bases de donnes - ( rv. 07.12.2005 ) page

17

Voici dans le SGBD-R Access, la reprsentation des schmas de relation ainsi que la liaison sans intgrit des deux relations prcdentes Passager et Personne :

Clef primaire Clef trangre , rfre Personne

Access et la reprsentation des enregistrements de chaque table :

Les enregistrements de la relation Passager

Les enregistrements de la relation Personne

Les besoins d'un utilisateur d'une base de donnes sont classiquement ceux que l'on trouve dans tout ensemble de donnes structures : insertion, suppression, modification, recherche avec ou sans critre de slection. Dans une BD-R, ces besoins sont exprims travers un langage d'interrogation. Historiquement deux classes de langages relationnels quivalentes en puissance d'utilisation et de fonctionnement ont t inventes : les langages algbriques et les langages des prdicats.

Livret 12 : Principes des bases de donnes - ( rv. 07.12.2005 )

page

18

Un langage relationnel n'est pas un langage de programmation : il ne possde pas les structures de contrle de base d'un langage de programmation (condition, itration, ). Trs souvent il doit tre utilis comme complment l'intrieur de programmes Delphi, Java, C#, ... Les langages d'interrogation prdicatifs sont des langages fonds sur la logique des prdicats du 1er ordre, le plus ancien s'appelle Query By Example QBE. Ce sont les langages algbriques qui sont de loin les plus utiliss dans les SGBD-R du commerce, le plus connu et le plus utilis dans le monde se dnomme le Structured Query Language ou SQL. Un tel langage n'est qu'une implmentation en anglais d'oprations dfinies dans une algbre relationnelle servant de modle mathmatique tous les langages relationnels.

3. Principes fondamentaux d'une l'algbre relationnelle


Une algbre relationnelle est une famille d'oprateurs binaires ou unaires dont les oprandes sont des relations. Nous avons vu que l'on pouvait faire l'union, l'intersection, le produit cartsien de relations binaires dans un chapitre prcdent, comme les relations n-aires sont des ensembles, il est possible de dfinir sur elle une algbre opratoire utilisant les oprateurs classiques ensemblistes, laquelle on ajoute quelques oprateurs spcifiques la manipulation des donnes. Remarque pratique : La phrase "tous les n-uples sont distincts, puisqu'lments d'un mme ensemble nomm relation" se transpose en pratique en la phrase " toutes les lignes d'une mme table nomme relation, sont distinctes (mme en l'absence de clef primaire explicite)". Nous exhibons les oprateurs principaux d'une algbre relationnelle et nous montrerons pour chaque opration, un exemple sous forme.

Union de 2 relations
Soient R et Q deux relations de mme domaine et de mme degr on peut calculer la nouvelle relation S = R Q de mme degr et de mme domaine contenant les enregistrements diffrents des deux relations R et Q : R:
nom Einstein Lavoisier Planck ge 45 41 52 Civilit mari mari veuf

Q: S=RQ
nom Lupin Planck Mozart Gandhi Civilit mari mari veuf ge 45 52 34 64 Civilit clibataire veuf veuf clibataire

S:
nom Einstein Lavoisier Planck
rm di Scala - 2006

ge 45 41 52

Livret 12 : Principes des bases de donnes - ( rv. 07.12.2005 )

page

19

Lupin Mozart Gandhi

45 34 64

clibataire veuf clibataire

Remarque : (Planck, 52, veuf) ne figure qu'une seule fois dans la table R Q.

Intersection de 2 relations
Soient R et Q deux relations de mme domaine et de mme degr on peut calculer la nouvelle relation S = R Q de mme degr et de mme domaine contenant les enregistrements communs aux deux relations R et Q :

R:
nom Einstein Lavoisier Planck ge 45 41 52 Civilit mari mari veuf

Q: S=RQ
nom Einstein Planck Mozart Gandhi ge 45 52 34 64 Civilit mari veuf veuf clibataire

S:
nom Einstein Planck ge 45 52 Civilit mari veuf

Diffrence de 2 relations
Soient R et Q deux relations de mme domaine et de mme degr on peut calculer la nouvelle relation S = R Q de mme degr et de mme domaine contenant les enregistrements qui sont prsents dans R mais qui ne sont pas dans Q ( on exclut de R les enregistrements qui appartiennent R Q) :

R:
nom Einstein Lavoisier Planck ge 45 41 52 Civilit mari mari veuf

Q: S=RQ
nom Einstein Planck Mozart Gandhi ge 45 52 34 64 Civilit mari veuf veuf clibataire

S:
nom Lavoisier ge 41 Civilit mari

Produit cartsien de 2 relations


Soient R et Q deux relations de domaine et de degr quelconques (degr(R)=n, degr(Q)=p), avec Domaine(R) Domaine(Q) = (pas d'attributs en communs).

Livret 12 : Principes des bases de donnes - ( rv. 07.12.2005 )

page

20

On peut calculer la nouvelle relation S = R x Q de degr n + p et de domaine gal l'union des domaines de R et de Q contenant tous les couples d'enregistrements partir d'enregistrements prsents dans R et d'enregistrements prsents dans Q : R:
nom Einstein Lavoisier Planck ge 45 41 52 Civilit mari mari veuf

Q: S=RxQ
ville Paris Rome km 874 920

S:
nom Einstein Einstein Lavoisier Lavoisier Planck Planck ge 45 45 41 41 52 52 Civilit mari mari mari mari Veuf Veuf ville Paris Rome Paris Rome Paris Rome km 874 920 874 920 874 920

Selection ou Restriction d'une relation


Soit R une relation, soit R( a1 : E1, a2 : E2 ,, an : En ) le schma de cette relation. Soit Cond(a1, a2 , , an ) une expression boolenne classique (expression construite sur les attributs avec les connecteurs de l'algbre de Boole et les oprateurs de comparaison < , > , = , >= , <= , <> ) On note S = select (Cond(a1, a2 , , an ) , R), la nouvelle relation S construite ayant le mme schma que R soit S( a1 : E1, a2 : E2 ,, an : En ), qui ne contient que les enregistrements de R qui satisfont la condition boolenne Cond(a1, a2 , , an ). R:
nom Einstein Mozart Gandhi Lavoisier Lupin Planck ge 45 32 64 41 42 52 Civilit mari mari clibataire mari Veuf Veuf ville Paris Rome Paris Rome Paris Rome km 874 587 258 124 608 405

Cond(a1, a2 , , an ) = { ge > 42 et ville=Paris } S:


nom Einstein Gandhi ge 45 64 Civilit mari clibataire ville Paris Paris km 874 258

Select ({ ge > 42 et ville=Paris }, R ) signifie que l'on ne recopie dans S que les enregistrements de R constitus des personnes ayant sjourn Paris et plus ges que 42 ans.

Projection d'une relation


Soit R une relation, soit R( a1 : E1, a2 : E2 ,, an : En ) le schma de cette relation. On appelle S = proj(ak1 , ak2 , akp) la projection de R sur un sous-ensemble restreint (ak1 , ak2 , akp) avec p < n , de ses attributs, la relation S ayant pour
Livret 12 : Principes des bases de donnes - ( rv. 07.12.2005 ) page

rm di Scala - 2006

21

schma le sous-ensemble des attributs S(ak1 : Ek1, ak2 : Ek2 ,, akp : Ekp ) et contenant les enregistrements diffrents obtenus en ne considrant que les attributs (ak1 , ak2 , akp).

Exemple R:
nom Einstein Mozart Lupin Einstein Gandhi Lavoisier Lupin Planck ge 45 32 42 45 64 41 42 52 Civilit mari mari Veuf mari clibataire mari Veuf Veuf ville Paris Rome Paris Venise Paris Rome Paris Rome km 874 587 464 981 258 124 608 405 S3 = proj(nom , ville) nom ville Einstein Paris Mozart Rome Lupin Paris Einstein Venise Gandhi Paris Lavoisier Rome Planck Rome S4 = proj(ville) ville Paris Rome Venise

S1 = proj(nom , civilit) nom Civilit Einstein mari Mozart mari Lupin Veuf Gandhi clibataire Lavoisier mari Planck Veuf

S2 = proj(nom , ge) nom ge Einstein 45 Mozart 32 Lupin 42 Gandhi 64 Lavoisier 41 Planck 52

Que s'est-il pass pour Mr Einstein dans S2 ?


Einstein Einstein 45 45 mari mari Paris Venise 874 981

Einstein

mari

Lors de la recopie des enregistrements de R dans S2 on a ignor les attributs ge, ville et km, le couple (Einstein , mari) ne doit se retrouver qu'une seule fois car une relation est un ensemble et ses lments sont tous distincts.

Jointure de deux relations


Soit Soient R et Q deux relations de domaine et de degr quelconques (degr(R) = n, degr(Q) = p), avec Domaine(R) Domaine(Q) = (pas d'attributs en communs). soit R x Q leur produit cartsien de degr n + p et de domaine D union des domaines de R et de Q. Soit un ensemble (a1, a2 , , an+p ) d'attributs du domaine D de R x Q.

Livret 12 : Principes des bases de donnes - ( rv. 07.12.2005 )

page

22

La relation joint(R,Q) = select (Cond(a1, a2 , , an+p ) , R x Q), est appele jointure de R et de Q (c'est donc une slection de certains attributs sur le produit cartsien).

Une jointure couramment utilise en pratique, est celle qui consiste en la slection selon une condition d'galit entre deux attributs, les personnes de "l'art relationnel" la dnomment alors l'qui-jointure. Exemples de 2 jointures : R:
nom Einstein Lavoisier Planck ge 45 41 52 Civilit mari mari veuf

Q: joint(R,Q)
ville Paris Rome km 874 920

1) S = select ( km < 900 , R x Q )


nom Einstein Lavoisier Planck ge 45 41 52 Civilit mari mari veuf ville Paris Paris Paris km 874 874 874

2) S = select ( km < 900 et Civilit = veuf, R x Q )


nom Planck ge 52 Civilit veuf ville Paris km 874

Nous nous plaons maintenant du point de vue pratique, non pas de l'administrateur de BD mais de l'utilisateur uniquement concern par l'extraction des informations contenues dans une BD-R. Un SGBD permet de grer une base de donnes. A ce titre, il offre de nombreuses fonctionnalits supplmentaires la gestion d'accs simultans la base et un simple interfaage entre le modle logique et le modle physique : il scurise les donnes (en cas de coupure de courant ou autre dfaillance matrielle), il permet d'accder aux donnes de manire confidentielle (en assurant que seuls certains utilisateurs ayant des mots de passe appropris, peuvent accder certaines donnes), il ne permet de mmoriser des donnes que si elles sont du type abstrait demand : on dit qu'il vrifie leur intgrit (des donnes alphabtiques ne doivent pas tre enregistres dans des emplacements pour des donnes numriques,...) Actuellement, une base de donnes n'a pas de raison d'tre sans son SGBD. Aussi, on ne manipule que des bases de donnes correspondant aux SGBD qui les grent : il vous appartient de choisir le SGBD-R qui vous convient (il faut l'acheter auprs de vendeurs qui gnralement, vous le fournissent avec une application de manipulation visuelle, ou bien utiliser les SGBD-R qui vous sont livrs gratuitement avec certains environnements de dveloppement comme Borland studio ou Visual Studio ou encore utiliser les produits gratuits comme mySql).

rm di Scala - 2006

Livret 12 : Principes des bases de donnes - ( rv. 07.12.2005 )

page

23

Lorsque l'on parle d'utilisateur, nous entendons l'application utilisateur, car l'utilisateur final n'a pas besoin de connatre quoique ce soit l'algbre relationnelle, il suffit que l'application utilisateur communique avec lui et interagisse avec le SGBD. Une application doit pouvoir "parler" au SGBD : elle le fait par le moyen d'un langage de manipulation des donnes. Nous avons dj prcis que la majorit des SGBD-R utilisait un langage relationnel ou de requtes nomm SQL pour manipuler les donnes.

4. SQL et Algbre relationnelle

Requte
Les requtes sont des questions poses au SGBD, concernant une recherche de donnes contenues dans une ou plusieurs tables de la base.

Par exemple, on peut disposer d'une table dfinissant des clients (noms, prnoms, adresses, nde client) et d'une autre table associant des numros de clients avec des numros de commande d'articles, et vouloir poser la question : quels sont les noms des clients ayant pass des commandes ? Une requte est en fait, une instruction de type langage de programmation, respectant la norme SQL, permettant de raliser un tel questionnement. L'excution d'une requte permet d'extraire des donnes en provenance de tables de la base de donnes : ces donnes ralisent ce que l'on appelle une projection de champs (en provenance de plusieurs tables). Le rsultat d'excution d'une requte est une table constitue par les rponses la requte. Le SQL permet l'aide d'instructions spcifiques de manipuler des donnes l'intrieur des tables :
Instruction SQL Actions dans la (les) table(s)

INSERT INTO <> DELETE FROM <> TRUNCATE TABLE <> UPDATE <> SELECT <>FROM <>

Ajout de lignes Suppression de lignes Suppression de lignes Modification de lignes Extraction de donnes

Ajout, suppression et modification sont les trois oprations typiques de la mise jour d'une BD. L'extraction concerne la consultation de la BD. Il existe de nombreuses autres instructions de cration, de modification, de suppression de tables, de cration de clefs, de contraintes d'intgrits rfrentielles, cration d'index, etc Nous nous attacherons donner la traduction en SQL des oprateurs principaux de l'algbre relationnelle que nous venons de citer.

Livret 12 : Principes des bases de donnes - ( rv. 07.12.2005 )

page

24

Traduction en SQL des oprateurs relationnels


C'est l'instruction SQL "SELECT <>FROM <>" qui implante tous ces oprateurs. Tous les exemples utiliseront la relation R = TableComplete suivante et l'interprteur SQL d'Access :

La relation initiale : R=TableComplete

Projection d'une relation R


S = proj(ak1 , ak2 , akp) SQL : SELECT DISTINCT ak1 , ak2 , akp FROM R
Instruction SQL version oprateur algbre : SELECT DISTINCT nom , civilit FROM Tablecomplete Lancement de la requte SQL : Table obtenue aprs requte :

Le mot DISTINCT assure que l'on obtient bien une nouvelle relation. Table obtenue aprs requte : Instruction SQL non relationnelle (tout mme redondant) : SELECT nom , civilit FROM Tablecomplete

Lancement de la requte SQL :

Remarquons dans le dernier cas SELECT nom , civilit FROM Tablecomplete que la table obtenue n'est qu'une extraction de donnes, mais qu'en aucun cas elle ne constitue une relation puisqu'une relation est un ensemble et que les enregistrements sont tous distincts!

rm di Scala - 2006

Livret 12 : Principes des bases de donnes - ( rv. 07.12.2005 )

page

25

Une autre projection sur la mme table :


Instruction SQL version oprateur algbre : SELECT DISTINCT nom , ville FROM Tablecomplete Table obtenue aprs requte :

Lancement de la requte SQL :

Slection-Restriction
S = select (Cond(a1, a2 , , an ) , R) SQL : SELECT * FROM R WHERE Cond(a1, a2 , , an) Le symbole * signifie toutes les colonnes de la table (tous les attributs du schma)
Instruction SQL version oprateur algbre : SELECT * FROM Tablecomplete WHERE ge > 42 AND ville = Paris Lancement de la requte SQL :

Table obtenue aprs requte :

On a slectionn toutes les personnes de plus de 42 ans ayant sjourn Paris. Combinaison d'oprateur projection-restriction Projection distincte et slection : SELECT DISTINCT nom , civilit, ge FROM Table obtenue aprs requte : Tablecomplete WHERE ge >= 45

Lancement de la requte SQL :

On a slectionn toutes les personnes d'au moins 45 ans et l'on ne conserve que leur nom, leur civilit et leur ge.

Produit cartsien
S=RxQ SQL : SELECT * FROM R , Q

Livret 12 : Principes des bases de donnes - ( rv. 07.12.2005 )

page

26

Afin de ne pas prsenter un exemple de table produit trop volumineuse, nous prendrons comme oprandes du produit cartsien, deux tables contenant peu d'enregistrements :

Produit cartsien : SELECT * FROM Employeur , Personne

Nous remarquons qu'en apparence l'attribut nom se retrouve dans le domaine des deux relations ce qui semble contradictoire avec l'hypothse "Domaine(R) Domaine(Q) = (pas d'attributs en communs). En fait ce n'est pas un attribut commun puisque les valeurs sont diffrentes, il s'agit plutt de deux attributs diffrents qui ont la mme identification. Il suffit de prfixer l'identificateur par le nom de la relation (Personne.nom et Employeur.nom). Combinaison d'oprateurs : projection - produit cartsien SELECT Personne.nom , prnom, civilit, nInsee FROM Employeur , Personne On extrait de la table produit cartsien uniquement 4 colonnes :

Intersection, union, diffrence,

S=RQ SQL : SELECT * FROM R INTERSECT SELECT * FROM Q S=RQ SQL : SELECT * FROM R UNION SELECT * FROM Q S=RQ SQL : SELECT * FROM R MINUS SELECT * FROM Q

rm di Scala - 2006

Livret 12 : Principes des bases de donnes - ( rv. 07.12.2005 )

page

27

Jointure de deux relations


Soient R et Q deux relations de domaine et de degr quelconques (degr(R) = n, degr(Q) = p), avec Domaine(R) Domaine(Q) = (pas d'attributs en communs). La jointure joint(R,Q) = select (Cond(a1, a2 , , an+p ) , R x Q). SQL : SELECT * FROM R ,Q WHERE Cond(a1, a2 , , an+p )

Livret 12 : Principes des bases de donnes - ( rv. 07.12.2005 )

page

28

Remarque pratique importante


Le langage SQL est plus riche en fonctionnalits que l'algbre relationnelle. En effet SQL intgre des possibilits de calcul (numriques et de dates en particulier). Soit une table de tarifs de produit avec des prix hors taxe:

1) Usage d'un oprateur multiplicatif : calcul de la nouvelle table des tarifs TTC abonds de la TVA 20% sur le prix hors taxe.

Requte SQL : Tarifs TTc

2) Usage de la fonction intgre SUM : calcul du total des prix HT.

Requte SQL : Total HT

rm di Scala - 2006

Livret 12 : Principes des bases de donnes - ( rv. 07.12.2005 )

page

29

Vous aimerez peut-être aussi