Bases de données relationnelles · Ce sont les premiers SGBD apparus. Elles font partie des bases...

16
Page 1 sur 16 Bases de données relationnelles Cours Les bases de données rélationnelles sont un type particulier de bases de données, dans lequel les données sont présentées et maniuplées à travers des tables. Après avoir replacé dans sont contexte ce type de bases de données dans l’ensemble des types de bases de données qui sont définis et utilisés actuellement, nous présenterons les bases de données relationnelles et en particulier le vocabulaire spécifique qui est utilisé dans ce domaine pour décrire les tables et autres éléments. Nous présenterons la méthode utilisée pour définir une base de données qui répond aux besoins et exigences d’un projet, et le passage à l’implémentation, c’est-à-dire le processus de conception du modèle conceptuel de données et sa transformation en le modèle logique correspondant. 1 - Introduction : Différents types de bases de données Il existe actuellement cinq grands types de bases de données : Les bases hiérarchiques Ce sont les premiers SGBD apparus. Elles font partie des bases navigationnelles constituées d’une gestion de pointeurs entre les enregistrements. Le schéma de la base doit être arborescent. Les bases réseaux. Sans doute les bases les plus rapides, elles ont très vite supplanté les bases hiérarchiques dans les années soixante-dix. Ce sont aussi des bases navigationnelles qui gèrent des pointeurs entre les enregistrements. Cette fois-ci, le schéma de base est beaucoup plus ouvert. Les bases relationnelles. À l’heure actuelle, ce sont les plus utilisées. Les données y sont représentées en tables. Elles sont basées sur l’algèbre relationnelle et un langage déclaratif (généralement SQL). Les bases déductives. Les données y sont représentées en tables (prédicats), le langage d’interrogation se base sur le calcul des prédicats et la logique du premier ordre. Les bases objets. Les données y sont représentées en tant qu’instance de classes hiérarchisées. Chaque champ est un objet. De ce fait, chaque donnée est active et possède ses propres méthodes d’interrogation et d’affectation. L’héritage est utilisé comme mécanisme de factorisation de la connaissance. La répartition du parc des SGBD n’est pas équitable entre ces 5 types de base : 75% sont relationnels, 20% réseaux, les 5% restants étant partagés entre bases déductives et objets. Ces chiffress risquent néanmoins d’évoluer d’ici quelques années, et la frontière entre bases relationnelles et objets pourrait être éliminée par l’introduction d’une couche objets sur les bases relationnelles. Quelques systèmes reconnus : Oracle http://www.oracle.com base relationnelle DB2 http://www.software.ibm.com base relationnelle Sybase http://www.sybase.com base relationnelle SQL Server http://www.microsoft.com base relationnelle Ingres ftp://s2k-ftp.CS.Berkeley.EDU/pub/ingres base relationnelle Informix http://www.informix.com base relationnelle O2 http://www.o2tech.fr ou http://www.ardentsoftware.com base objet Gemstone http://www.gemstone.com base objet ObjectStore http://www.objectdesign.com ou http://www.odi.com base objet

Transcript of Bases de données relationnelles · Ce sont les premiers SGBD apparus. Elles font partie des bases...

Page 1: Bases de données relationnelles · Ce sont les premiers SGBD apparus. Elles font partie des bases navigationnelles constituées d’une gestion de pointeurs entre les enregistrements.

Page 1 sur 16

Bases de données relationnellesCours

Les bases de données rélationnelles sont un type particulier de bases de données, dans lequel les donnéessont présentées et maniuplées à travers des tables.Après avoir replacé dans sont contexte ce type de bases de données dans l’ensemble des types de bases dedonnées qui sont définis et utilisés actuellement, nous présenterons les bases de données relationnelles eten particulier le vocabulaire spécifique qui est utilisé dans ce domaine pour décrire les tables et autreséléments.Nous présenterons la méthode utilisée pour définir une base de données qui répond aux besoins etexigences d’un projet, et le passage à l’implémentation, c’est-à-dire le processus de conception du modèleconceptuel de données et sa transformation en le modèle logique correspondant.

1 - Introduction : Différents types de bases de données

Il existe actuellement cinq grands types de bases de données :• Les bases hiérarchiquesCe sont les premiers SGBD apparus. Elles font partie des bases navigationnelles constituées d’une gestionde pointeurs entre les enregistrements. Le schéma de la base doit être arborescent.• Les bases réseaux.Sans doute les bases les plus rapides, elles ont très vite supplanté les bases hiérarchiques dans les annéessoixante-dix. Ce sont aussi des bases navigationnelles qui gèrent des pointeurs entre les enregistrements.Cette fois-ci, le schéma de base est beaucoup plus ouvert.• Les bases relationnelles.À l’heure actuelle, ce sont les plus utilisées. Les données y sont représentées en tables. Elles sont baséessur l’algèbre relationnelle et un langage déclaratif (généralement SQL).• Les bases déductives.Les données y sont représentées en tables (prédicats), le langage d’interrogation se base sur le calcul desprédicats et la logique du premier ordre.• Les bases objets.Les données y sont représentées en tant qu’instance de classes hiérarchisées. Chaque champ est un objet.De ce fait, chaque donnée est active et possède ses propres méthodes d’interrogation et d’affectation.L’héritage est utilisé comme mécanisme de factorisation de la connaissance.La répartition du parc des SGBD n’est pas équitable entre ces 5 types de base : 75% sont relationnels,20% réseaux, les 5% restants étant partagés entre bases déductives et objets. Ces chiffress risquentnéanmoins d’évoluer d’ici quelques années, et la frontière entre bases relationnelles et objets pourrait êtreéliminée par l’introduction d’une couche objets sur les bases relationnelles.Quelques systèmes reconnus :Oracle http://www.oracle.com base relationnelleDB2 http://www.software.ibm.com base relationnelleSybase http://www.sybase.com base relationnelleSQL Server http://www.microsoft.com base relationnelleIngres ftp://s2k-ftp.CS.Berkeley.EDU/pub/ingres base relationnelleInformix http://www.informix.com base relationnelleO2 h t t p : / / w w w . o 2 t e c h . f r ou

http://www.ardentsoftware.combase objet

Gemstone http://www.gemstone.com base objetObjectStore h t t p : / / w w w . o b j e c t d e s i g n . c o m ou

http://www.odi.combase objet

Page 2: Bases de données relationnelles · Ce sont les premiers SGBD apparus. Elles font partie des bases navigationnelles constituées d’une gestion de pointeurs entre les enregistrements.

Page 2 sur 16

Jasmine http://cai.com/jasmine base objetet des bases relationnelles sur micro :Access 2000 http://www.microsoft.com base relationnelleParadox 8.0 http://www.corel.com "Visual DBase http://www.borland.com "FoxPro http://www.microsoft.com "FileMaker http://www.claris.fr "4D 6.5 http://www.aci.fr "Windev http://www.pcsoft.fr "Il existe aussi quelques freewares et sharewares que l’on peut trouver sur Internet pour s’initier aux basesde données relationnelles comme :MySQL h t t p : / / w w w . m y s q l . n e t ou

http://www.mysql.comMSQL http://Hughes.com.auPostgres http://www.postgresql.orgInstantDB http://www.microsoft.com Entièrement écrit en Java

2 - Les modèles de données

a) Les niveaux ANSI/SPARC

Pour assurer les objectifs précédemment décrits, les trois niveaux suivants de description (voir la figuresuivante) ont été distingués par le groupe ANSI/X3/SPARC en 1975 :• Le niveau conceptuel

Il correspond à ce que l’on retrouve dans la méthode Merise avec les modèles de données MCD(modèle conceptuel de données) et MLD (modèle logique de données).

• Le niveau interneIl correspond à la structure de stockage des données : types de fichiers utilisés, caractéristiques desenregistrements (longueur, composants), chemin d’accès aux données (type d’index, chaînages, etc.).

• Le niveau externeIl est caractérisé par l’ensemble des vues externes qu’ont les groupes d’utilisateurs.

modèles externes

modèle externe modèle externe modèle externe

schéma conceptuel

schéma interne

Figure 1 : Le modèle Ansi/Sparc

Ces trois niveaux correspondent à trois métiers bien précis de l’entreprise. Le concepteur de SGBDs’occupe principalement du schéma interne. Il travaille sur les structures de données de base,

Page 3: Bases de données relationnelles · Ce sont les premiers SGBD apparus. Elles font partie des bases navigationnelles constituées d’une gestion de pointeurs entre les enregistrements.

Page 3 sur 16

l’optimisation des techniques d’accès aux données (qu’on appelle « techniques de hachage ») et lesdispositifs d’optimisation des requêtes (notamment en définissant des index). L’administrateur de basesde données conçoit les bases, organise les tables, optimise les requêtes (notamment en définissant desindex) et gère les droits d’accès. Enfin les développeurs et utilisateurs écrivent les programmes applicatifset utilisent les outils de haut niveau du SGBD permettant une abstraction logique sur les données(notamment les vues).

Pour s’attaquer à tout problème, il est toujours nécessaire de réfléchir profondément aux tenants etaboutissants de ce que l’on veut réaliser. La phase de conception nécessite souvent de nombreux choix quiauront parfois des répercussions importantes par la suite. La conception des bases de données ne fait pasexception à la règle. Les théoriciens de l’information ont donc proposé des méthodes permettant destructurer un projet et de présenter de manière abstraite le travail que l’on souhaite réaliser. Ces méthodesont donné naissance à une discipline, l’analyse, et à un métier, l’analyste.L’analyse est la discipline qui étudie et présente abstraitement le travail à effectuer. La phase d’analyse esttrès importante puisque c’est elle qui sera validée par les utilisateurs avant la mise en œuvre du systèmeconcret. Il existe de nombreuses méthodes d’analyse (AXIAL, OMT, etc.), la plus utilisée en France étantla méthode Merise. Merise sépare les données et les traitements à effectuer avec le système d’informationen différents modèles conceptuels et physiques. Le plus intéressant pour la conception d’une base dedonnées est le MCD.Le MCD (modèle conceptuel de données) est un modèle abstrait de la méthode Merise permettant dereprésenter l’information d’une manière compréhensible aux différents services de l’entreprise. Il permetune description statique du système d’information à l’aide d’entités et d’associations.Le travail de création d’une base de données par le concepteur commence juste après celui des analystesqui ont établi le MCD.

b) Définitions

La propriété est une donnée élémentaire et indécomposable du système d’information, par exemple, unedate de début de projet, la couleur d’une voiture, une note d’étudiant.L’entité est la représentation, dans le système d’information, d’un objet matériel ou immatériel ayant uneexistence propre et conforme aux chois de gestion de l’entreprise. L’entité est composée de propriétés. Parexemple, une personne, une voiture, un client, un projet sont en général des entités.

nom de l’entité

.

.

.liste des propriétés

.

.

Figure 2 : Représenttation graphique d'une entité

L’association traduit dans le système d’information le fait qu’il existe un lien entre différentes entités. Lenombre d’intervenants dans cette association caractérise sa dimension :• réflexive sur une même entité ;• binaire entre deux entités ;• ternaire entre trois entités ;• n-aire entre n entités ;

Page 4: Bases de données relationnelles · Ce sont les premiers SGBD apparus. Elles font partie des bases navigationnelles constituées d’une gestion de pointeurs entre les enregistrements.

Page 4 sur 16

Personne

nomprénom

.

.

.

.

Service

type (admin, scola...)...

travaille dans un

Figure 3 : Représentation graphique d’une association binaire

Matériel

numMat....

est composé de

0,n

0,n

Figure 4 : Lien réflexif typique

Avion

numAvion....

Pilote

numPilote...

Ligne

numLigne...

Vol

0,n 0,n

0,n

Figure 5 : Lien ternaire typique

Des propriétés peuvent être attachées aux associations. Par exemple, un employé peut passer 25% de sontemps dans un service et 75% de son temps dans un autre. L’association « travaille dans » qui relie unepersonne à un service portera dans ce cas la propriété « volume de temps passé ».Les cardinalités caractérisent le lien entre une entité et une association. La cardinalité d’une associationest constituée d’une borne minimale et d’une borne maximale :• minimale : nombre minimal de fois qu’une occurrence d’une entité participe aux occurrences de

l’association, généralement 0 ou 1 ;• maximale : nombre maximal de fois qu’une occurrence d’une entité participe aux occurrences de

l’association, généralement 1 ou n.Les cardinalités maximales sont nécessaires pour la création de la base de données. Les cardinalitésminimales sont nécessaires pour exprimer les contraintes d’intégrité.

Page 5: Bases de données relationnelles · Ce sont les premiers SGBD apparus. Elles font partie des bases navigationnelles constituées d’une gestion de pointeurs entre les enregistrements.

Page 5 sur 16

Personne

nomprénom

.

.

.

.

Service

administrationgestion

informatique....

travaille dans un

volume1,n 1,n

Figure 6 : Représentation des cardinalités

De la Figure 6, on déduit qu’ « une personne peut travailler dans un ou plusieurs services ». On constatede plus que « dans chaque service, il y a au moins une personne mais il peut y en avoir plusieurs ». Enfin,une mesure du « volume de travail » est stockée pour chaque personne travaillant dans un service donné.Remarque : Il existe une notation des cardinalités « à l’américaine » dans laquelle on ne note que lescardinalités maximales. Il peut donc y avoir deux sortes de cardinalités « américaines » : (1 : n) et (n : m).Dans la figure précédente, la notation américaine serait n : m, puisuq’une personne peut travailler dansplusieurs services et que, dans un service, il peut y avoir plusieurs personnes.Un lien hiérarchique est un lien 1 : n en notation américaine.Un lien maillé est un lien n : m en notation américaine.Seules les cardinalités maximales permettent de déterminer le nombre de tables. Les cardinalités minimalesservent à exprimer certaines contraintes d’intégrité mais ne modifient en aucun cas la structure des tablesde la base.

L’identifiant d’une entité est constitué d’une ou plusieurs propriétés de l’entité de sorte que, à chaquevaleur de l’identifiant corresponde une et une seule occurrence de l’entité. L’identifiant d’une associationest constitué de la réunion des identifiants des entités qui participent à l’association.Dans la Figure 4, l’entité Matériel a pour identifiant, le numéro de matériel. Dans ce lien réflexif d’uneentité sur elle-même, un matériel peut être constitué d’un ou plusieurs autres matériels et vice-versa.La Figure 5, avec les entités Avion, Pilote et ligne, reliées par l’association ternaire définissant leVol. Un vol est ici caractérisé un numéro d’avion fixé, un numéro de pilote fixé et un numéro de ligne fixé.Il en résulte qu’un pilote peut voler avec des avions différents sur une même ligne.L’identifiant est représenté en souligné dans le MCD. Il constituera par la suite, la clé d’une tablerelationnelle.La conception d’un MCD avec de nombreuses entités est parfois une tâche ardue et nécessite un savoir-faire que seuls les analystes professionnels peuvent acquérir par l’expérience. La gestion des dates, parexemple, est souvent délicate. Dans le MCD de l’illustration suivante, la relation entre Salariés et Tâcheest constitué d’un lien maillé dont les dates sont de simples propriétés. Il en résulte qu’un salarié nepourra participer plusieurs fois à la même tâche ! En effet, la clé de la table correspondant à l’associationsera constituée du couple (numéro de salarié, numéro de tâche) qui devra donc être unique.Dans de nombreux MCD, on est souvent obligé de créer une entité Date dès qu’une date doit faire partied’une clé, et bien que l’on ne traduise jamais cette entité par une table.Précisons enfin qu’il est toujours difficile de dissocier les données des traitements qui seront effectués. LeMCD est donc généralement associé à un MCT (modèle conceptuel de traitements). Souvent, on modifiele MCD ou directement le MLD (modèle logique de données), pour améliorer les traitements. C’estpourquoi, dans l’exemple précédent, on ne crée pas une table pour les dates. Pendant la conception, on netraite que les cas « normaux », puis on vérifie et on modifie, si besoin, les modèles en fonction des casexceptionnels !Pourquoi une requête est-elle meilleure qu’une autre ?

Page 6: Bases de données relationnelles · Ce sont les premiers SGBD apparus. Elles font partie des bases navigationnelles constituées d’une gestion de pointeurs entre les enregistrements.

Page 6 sur 16

c) Exemple de MCD

Le modèle conceptuel de données de l’illustration suivante, décrit le système d’information d’une petitesociété de services. Cette société réalise des projets commandés pas des clients. Les projets sontcomposés de plusieurs tâches qui seront réalisées pas les salariés de l’entreprise. Chaque tâche a uncoût qui lui est propre. Plusieurs salariés peuvent participer à une même tâche et, bien sûr, une tâche esten général réalisée par plusieurs salariés. En général, les salariés sont affectés à une tâche pour une duréedéterminée par une date de début et de fin. On considère qu’un salarié ne peut participer qu’une seule foisà une tâche donnée. Pour effectuer ce travail, il utilise différents matériels référencés par l’entreprise.Un matériel peut être composé de plusieurs autres matériels de l’entreprise. Un projet est toujourscoordonné par un chef de projet, salarié de l’entreprise. Un chef de projet encadre donc d’autres salariés.Le personnel est obligatoirement rattaché à une seule des divisions de l’entreprise mais peut, enrevanche, être regroupé dans différentes équipes de l’entreprise.

Division

Numéro de la divisionNom de la divisionCA de la division

Adresse de la division

Équipe

Numéro de l’équipeSpécialisation

Client

Numéro du client.Nom du clientRaison sociale

Adresse du clientActivité du client

Contact chez le clientTéléphone du client

Fax du client

Salarié

Numéro du salarié.Nom du salarié

Prénom du salariéFonction du salarié

Rémunération du salariéCommission du salarié

Projet

Numéro du projet.Thème du projet.Libellé du projet

.Date début du projet.Date échéance

.Date fin du projet

Matériel

Numéro de matériel.Nom du matériel.Type de matériel

Tâche

Nom de la tâcheCoût de la tâche

regroupe

1,n

1,n

1,n

0,n

1,1

0,n 0,n

0,n

1,n

1,1

1,1

0,n

0,1

0,n

0,n

1,1

0,n

0,n

travaille

commande

encadreutilise

ParticipeDate début

Date fin

coordonne

constituecompose

composécomposant

a pour chef

est chef de

FiguFigure 7 : Exemple de MCD

Page 7: Bases de données relationnelles · Ce sont les premiers SGBD apparus. Elles font partie des bases navigationnelles constituées d’une gestion de pointeurs entre les enregistrements.

Page 7 sur 16

On le voit, le MCD nécessaire à cette entreprise contient des liens hiérarchiques comme travaille, des liensmaillés comme regroupe, des liens réflexifs comme encadre ou compose.

Page 8: Bases de données relationnelles · Ce sont les premiers SGBD apparus. Elles font partie des bases navigationnelles constituées d’une gestion de pointeurs entre les enregistrements.

Page 8 sur 16

3 - Introduction du “relationnel”

C’est en 1970, au centre de recherche d’IBM à San José (USA) qu’Edgard Frank Codd établit la théoriedes bases de données relationnelles. Il cherchait à l’époque à formaliser de façon rigoureuse l’organisationdes données. Pour cela, il a utilisé la théorie des ensembles en mathématiques pour en dégager une algèbrerelationnelle. Cette algèbre lui a permis d’organiser tout type de données en un ensemble de tables et derelations. On a alors parlé de bases de données relationnelles.L’étape la plus importante lors de la conception d’une base relationnelle est l’organisation desinformations à manipuler. Une bonne organisation va permettre un accès rapide aux données, assurer lacohérence des informations, autoriser des recherches à partir de critères complexes, faciliter les mises àjour, gérer la confidentialité, etc.Les systèmes de gestion de bases de données relationnelles organisent les données en tables (à la manièred’un tableur). Il est simple, facile à comprendre et fidèle à un cadre mathématique (l’algèbre relationnelle).Le concept mathématique sous-jacent est celui de relation de la théorie des ensembles, qui se définitcomme un sous-ensembles du produit cartésien de plusieurs domaines.

a) Le modèle relationnel

Une base de données relationnelle est structurée de manière hiérarchique en commençant par la base elle-même, qui contient un ensemble de tables, qui contiennent des enregistrements, qui contiennent deschamps.L’efficacité d’une base de données relationnelle provient du fait que les informations sontorganisées selon le même schéma que celui sur lequel s’applique l’algèbre relationnelle de E.F. Codd. Ceschéma fait intervenir les concepts de tables et de relations.

Un domaine est un ensemble fini ou infini de valeurs possibles : le domaine des entiers, le domaine descouleurs du drapeau français {bleu, blanc, rouge }, etc…On utilise alors le produit cartésien d’un ensemble de domaines pour définir un ensembles de n-uplets.Le produit cartésien d’un ensemble de domaines D1, D2, …Dn que l’on écrit D1x D2 x … x Dn est unensemble de n-uplets (ou tuples) < V1, V2, …Vn > tel queVi ∈ Di.Exemple : le produit cartésien des domaines D1 = { Connu, Tarre, Mauve} et D2 = Alain, Guy} donne :

Connu AlainConnu GuyTarre AlainTarre GuyMauve AlainMauve Guy

Le produit cartésien est une opération plus générale que la simple application à des domaines. On peutpar exemple l’appliquer aussi à des ensembles de tuples, ce que nous ferons en algèbre relationnelle.Une table relationnelle est un sous-ensemble du produit cartésien d’une liste de domaines. Elle estgénéralement caractérisée par un nom permettant de l’identifier clairement.

Personne D1 D2Bon JeanBien MaevaHarne Luc

Page 9: Bases de données relationnelles · Ce sont les premiers SGBD apparus. Elles font partie des bases navigationnelles constituées d’une gestion de pointeurs entre les enregistrements.

Page 9 sur 16

Afin de rendre l’ordre des colonnes sans importance tout en permettant plusieurs colonnes de mêmedomaine, on associe un nom à chaque colonne. Les différentes colonnes d’une table constituent ce que l’onappelle les attributs de la table relationnelle.

Remarque : comme pour toute définition d’ensembles, il existe en fait deux possibilités pour définir unerelation, en intention ou en extension. La forme intentionnelle est utilisée dans les bases de donnéesdéductives, par exemple {(x,y,z) ∈ (N,Z,Q) tels que x+y > z}, mais pas dans les bases relationnelles niobjet. La forme extensionnelle qui consiste à spécifier un à un tous les tuples de la relation est la seuleforme utilisable dans les bases de données relationnelles. Elle est bien sûr utilisée aussi dans tous lesautres types de base.

Le schéma d’une table relationnelle est constitué de l’ensemble des attributs de la table. Par extension, leschéma de la base de données est constitué de l’ensemble de toutes les tables.Une base de données relationnelle est une base donnée dont le schéma est un ensemble de schémas detables relationnelles et dont les occurrences sont des tuples de ces tables.

b) Passage du MCD aux tables relationnelles

Une fois le MCD écrit par les analystes, le travail du concepteur de bases de données consiste à traduirece modèle en un modèle plus proche du SGBD utilisé : le MLD (modèle logique de données). Dans leMLD relationnel, l’unique type d’objet existant est la table. La méthode de passage d’un MCD Meriseaux tables relationnelles est simple et systématique :• Traitement des entités :• chaque entité devient une table ;• chaque propriété d’une entité devient une colonne de cette table ;• l’identifiant d’une entité devient la clé primaire de la table correspondante (création d’un index).

• Traitement des associations :• Une association (0,n)–(0,1) (lien hiérarchique) provoque la migration d’une clé étrangère

(l’identifiant côté (0,n)) vers la table de l’entité côté (0,1). Si des propriétés étaient surl’association, elles migreraient côté (0,1).

Entité 1

AB

Entité 2

CDRelation

E0,1 0,n

Figure 8: Modèle conceptuel avec lien hiérarchique

Dans l’exemple ci-dessus, l’identifiant C de l’Entité 2 deviendra une clé étrangère dans la table associée àl’Entité 1, et la relation E devient une colonne de la table associée à l’Entité 1

Table 1

ABCE

Table 2

CD

Figure 9 : Modèle logique correspondant au modèle conceptuel précédent

Page 10: Bases de données relationnelles · Ce sont les premiers SGBD apparus. Elles font partie des bases navigationnelles constituées d’une gestion de pointeurs entre les enregistrements.

Page 10 sur 16

• Une association (0,n)–(0,n) (lien maillé) donne naissance à une nouvelle table. Les identifiants desentités auxquelles l’association est reliée migrent dans cette table. La clé primaire de cette nouvelletable est constituée de la réunion de ces identifiants. Si des propriétés étaient portées parl’association, elles migreraient dans la nouvelle table aussi côté (0,1) ;

Entité 1

AB

Entité 2

CDRelation

E0,n 0,n

Figure 10 : MCD avec lien maillé

Table 1

AB

Table 2

CD

Table 3

ACE

Figure 11 : MLD correspondant à la figure pour le lien maillé

• Les associations n-aires sont gérées, comme précédemment, avec la naissance d’une nouvelle table.Les schémas du MLD contiennent généralement des flèches indiquant les reports de clé (clés étrangères).Ces flèches sont présentes à titre informatif. En aucun cas, ces flèches ne correspondent à un pointeurphysique. Les tables relationnelles sont toutes physiquement indépendantes.

Fournisseur

fnonomadresseville

Produits

pnodesignprixpoidscouleur

Commandes

quté1,n 1,n

Figure 12 : MCD Fournisseur-Produits-Commandes

Dans le cas « fournisseurs-produits-commandes » ci-dessus, l’association Commandes est un lien mailléporteur d’une propriété. Il y a donc création d’une table Commandes avec report des clés des entitéskiées, ce qui nous donne bien les trois tables vues plus haut. Le lecteur averti notera que, dans ce schéma,il n’est pas possible de passer deux commandes différentes au même fournisseur. Pour résoudre ceproblème, il aurait fallu transformer la relation Commandes en une entité Commandes.Rappel : seules les cardinalités maximales servent à définir le nombre de tables et les reports de clé.Lescardinalités minimales ne servent qu’à préciser par la suite si les colonnes peuvent prendre la valeur NULLou pas.Dans l’exemple du MCD de la mini-entreprise (voir page 6 ), on obtient les onze tables suivantes :

à partir des entités à partir des associationsDivisionÉquipeClientMatériel

RegroupeParticipeComposeUtilise

Page 11: Bases de données relationnelles · Ce sont les premiers SGBD apparus. Elles font partie des bases navigationnelles constituées d’une gestion de pointeurs entre les enregistrements.

Page 11 sur 16

SalariéProjetTâche

c) Exemple rudimentaire

L’illustration suivante représente la base de données « Exemple », constituée de deux tables.Les tables sont des conteneurs répartissant sémantiquement l’information. Elles contiennent un ensemblede données concernant une même entité. Des tables habituelles sont les tables « Clients », « Entreprises »,« Produits », « Commandes »…Une table est divisée en enregistrements, chaque enregistrement contient toutes les informations d’unemême entité. Dans une table « Clients », chaque enregistrement contient toutes les informations sur unclient donné.La valeur d’un attribut pour un enregistrement, est un champ. Ainsi, un enregistrement est divisé enchamps, chaque champ contient une information particulière pour une entité contenue dans la table. Dansune table « Clients », le nom « Bon » d’un client sera contenu dans un champ « Nom ».

“Exemple”

“Clients”

Bon Jean 05.02.03.04.05

Bien Maeva 03.23.24.25.77

Harne Luc 04.38.44.55.66

“Entreprises”

Au bon miel 13 bd des abeilles, 87000 La Roche

Thé SA 14, rue du Lac, 97111 Morne à l’Eau

Base de données

Table

Enregistrement

Champ

Il faut différencier les contenus d’une table et de sa structure. Dans la base de données de l’illustration ci-dessus, les deux tables « Clients » et « Entreprises » contiennent les informations suivantes :

Contenu de la table « Clients »Nom Prénom TéléphoneBon Jean 05.02.03.04.05Bien Maeva 03.23.24.25.77Harne Luc 04.38.44.55.66

Contenu de la table « Entreprises »Nom Adresse

Page 12: Bases de données relationnelles · Ce sont les premiers SGBD apparus. Elles font partie des bases navigationnelles constituées d’une gestion de pointeurs entre les enregistrements.

Page 12 sur 16

Au bon miel 13, bd abeilles, 87800 La RocheThé SA 14, rue du lac, 97111 Morne A l’Eau

Chaque enregistrement de la table « Clients » a la même structure : un nom, un prénom et un numéro detéléphone. Nous décrivons les structures de ces tables sous la forme suivante :

Nom

Prénom

Téléphone

Nom

Adresse

i) Choix des champsPour faciliter la manipulation de la base de données, il est indispensable de découper les enregistrements enun maximum de champs.Les champs doivent permettre d’accéder directement aux informations, en évitant de faire plusieurs foisles mêmes « calculs ». Par exemple, un seul champ pour toute une « Adresse » n’est souvent pasjudicieux, car il oblige à extraire le nom de la ville par exemple pour imprimer des étiquettes d’adresse. Onconseillera donc

Nom

Ville

N°RueCP

plutôt queNom

Adresse

Avec cette nouvelle structure, les informations sont clairement désignées et chaque information sur uneadresse est facilement accessible.

ii) Choix des tablesConcernant les tables, de mauvais choix peuvent limiter les traitements possibles, voir entraînerl’impossibilité d’exploiter les informations stockées.Par exemple pour gérer une collection de disques, la solution la plus simple est de définir une table« Albums » de la manière suivante :

Année

NomPrénomTitre

Supposons que le contenu à mettre dans cette table soit :Nom Prénom Titre AnnéeNicouette Sandra C’est la ouate 1994Moitout Eddy T’as pas, t’as pas tout dit 1966Moitout Eddy C’est la ouate 1994

Cette structure de table présente plusieurs inconvénients :

Page 13: Bases de données relationnelles · Ce sont les premiers SGBD apparus. Elles font partie des bases navigationnelles constituées d’une gestion de pointeurs entre les enregistrements.

Page 13 sur 16

Redondance : nous avons deux album de Eddy Moitout, ce qui oblige à stocker deux fois son nom et sonprénom. « C’est la ouate » a deux interprètes, nous répétons donc deux fois les informations concernant cetitre. Si l’ont fait une faute de frappe, on peut rendre les données incohérentes.Pérennité : la structure choisie rend presque impossible l’évolution de la base de données : si on veutajouter une information sur l’auteur comme sa nationalité, il est nécessaire d’ajouter un champ dans latable et de mettre à jour tous les renseignements.Taille et efficacité : d’après les points précédents, avoir une seule table implique énormément deredondance, ce qui augmente sensiblement la taille occupée par la base de données. La place occupée par lecontenu des tables influe directement sur la rapidité d’accès aux informations et donc sur la vitessed’exécution des traitements.La solution au problème de redondance est la création de plusieurs tables, chacune regroupant lesinformations concernant une même entité. Dans l’exemple d’une collection de disque, le plus naturel est deconstruire une table « Auteurs » et une table « Album ».

Nom

Prénom

Titre

Année

Nom PrénomNicouette SandraMoitout Eddy

Titre AnnéeC’est la ouate 1994T’as pas, t’as pas tout dit 1966

Il devient alors très simple d’ajouter des informations concernant les albums, comme le genre et lesupport.

Titre

Année

Genre

Support

Titre Année Genre SupportC’est la ouate 1994 variété CDT’as pas, t’as pas toutdit

1966 variété K7

Avec l’utilisation de ces deux tables, nous avons donc résolu le problème de redondance et de pérennité.

iii) Choix des clés primairesNous disposons, dans l’exemple précédent, de deux tables, mais nous avons perdu le lien entre les albumset leurs auteurs : quels sont les interprètes des différents albums ?La solution est de donner un numéro à chaque auteur et d’ajouter ce numéro dans chaque enregistrement dela table « Album ». Pour que cela fonctionne, il faut une numérotation unique : il faut éviter que deuxauteurs puissent avoir le même numéro. Ce numéro unique est appelé clé primaire.Une fois le nouveau champ « N° auteur » ajouté, la structure de la table « Auteurs » est :

N° auteur

Nom

Prénom

Pour pouvoir associer un album à un auteur, il faut ajouter le champ « N° auteur » dans la table « Album »

Page 14: Bases de données relationnelles · Ce sont les premiers SGBD apparus. Elles font partie des bases navigationnelles constituées d’une gestion de pointeurs entre les enregistrements.

Page 14 sur 16

N°auteur

Support

TitreAnnéeGenre

Essayons de remplir nos deux tables avec nos deux albums :

N°auteur

Nom Prénom

1 Nicouette Sandra2 Moitout Eddy

N°auteur

Titre Année Genre Support

1 C’est la ouate 1994 variété CD??? T’as pas, t’as pas tout

dit1966 variété K7

En remplissant la table « Album », on se rend compte qu’on ne peut pas remplir le champ « N° auteur »,puisqu’il y a deux auteurs pour le deuxième album.On ne peut pas ajouter un champ pour un deuxièmeauteur, puisqu’il pourrait aussi bien y en avoir trois, etc…De plus pour trop d’album, se champ seraitvide.La solution est d’utiliser une troisième table qui fera le lien entre un auteur et un album. Pour cela, nousallons numéroter les albums en utilisant une clé primaire « N° album », et la nouvelle table servira à mettreles numéros en relation, avec un enregistrement par relation.

N° auteur

Nom

Prénom

N° auteur

N° album

N°auteur

Support

TitreAnnéeGenre

Ce qui conduit aux 3 tables suivantes :

N°auteur

Nom Prénom

1 Nicouette Sandra2 Moitout Eddy

N°album

Titre Année Genre Support

1 C’est la ouate 1994 variété CD2 T’as pas, t’as pas tout

dit1966 variété K7

et

Le schéma ci-dessous reprend une partie des trois tables pour bien mettre en évidence l’intérêt de lanouvelle table « Auteurs-Albums »

N° auteur N° album1 11 22 2

Page 15: Bases de données relationnelles · Ce sont les premiers SGBD apparus. Elles font partie des bases navigationnelles constituées d’une gestion de pointeurs entre les enregistrements.

Page 15 sur 16

Nom Prénom N° auteurNicouette Sandra 1Moitout Eddy 2

N° auteur N° album1 11 22 2

N° album Titre1 C’est la ouate2 T’as pas, t’as pas tout dit

Cettenouvelle organisation des données a plusieurs avantages. Elle évite la redondance. Les informationsconcernant un auteur ou un album ne sont saisies qu’une seule fois. On évite tout problème d’incohérencesdû à des fautes de frappe. L’ajout d’une table intermédiaire faisant le lien entre les auteurs et les albumsest très souple puisqu’il n’y a plus de limitations portant sur le nombre d’auteur par album. Enfin, ledécoupage de l’information en tables de petites tailles facilité l’exploitation des données.Les clés primaires permettent de désigner de manière unique un enregistrement dans une table. Ces cléssont indispensables à l’application des principes de l’algèbre relationnelle et donc à la bonne exploitationde la base de données. En fait, chaque table devrait contenir une clé.Pour les tables « Auteurs » et « Album », nous avons ajouté des champs numérotant les enregistrements.Par contre dans la table « Auteurs-Albums », nous n’avons rien prévu. Il est possible de définirsimplement une clé dans cette table. Il suffit de définir une clé correspondant au couple [ « n° auteur »,« n° album » ]. Noter que ces couples sont uniques même si un « N° auteur » ou un « N° album » peutapparaître plusieurs fois. Une clé, construite sur plusieurs champs, s’appelle une clé composite. On parlesouvent de clé double lorsqu’elle est construite sur deux champs.

iv) Les relationsAprès les tables, le deuxième concept utilisé dans les bases de données relationnelles est la relation. Lesrelations permettent de décrire de manière pratique les liens entre les tables. Dans notre exemple decollection de disques, les relations décrivent le fait que la table « Auteurs-Albums » contient des numérosd’auteur et d’album qui correspondent exactement à des numéros trouvés dans les tables « Auteurs » et« Albums ».Les relations utilisent des clés primaires et composites pour établir les liens entre les tables. Ces liens nesont possibles que parce qu’il y a unicité des clefs dans chaque table. Il existe trois types de relations : (1-n), (n-m), et (1,1).On parle de relation « un à plusieurs » notée (1-n) lorsqu’un enregistrement d’une table A peut-être enrelation avec plusieurs enregistrements d’une table B et qu’un enregistrement de la table B ne peut pas êtreen relation avec plusieurs enregistrements de la table A.L’exemple typique est celui de la filiation.On parle de relation « plusieurs à plusieurs » notée (n-m) lorsqu’un enregistrement d’une table A peutêtre en relation avec plusieurs enregistrements d’une table B et qu’un enregistrement de la table B peut-être en relation avec plusieurs enregistrements de la table A.Dans l’exemple de la collection de disques, un auteur peut interpréter plusieurs albums et un album peutêtre interprété par plusieurs auteurs. On a donc une relation « plusieurs à plusieurs ». Nous pouvonsschématisé ces liens avec la figure.

En fait, ce type de relation n’est possible qu’en théorie. Pratiquement, il n’est pas possible de gérer desrelations « plusieurs à plusieurs » et il faut passer par des tables intermédiaires.

Page 16: Bases de données relationnelles · Ce sont les premiers SGBD apparus. Elles font partie des bases navigationnelles constituées d’une gestion de pointeurs entre les enregistrements.

Page 16 sur 16

N° auteur

Nom

PrénomN° auteur

N° albumN°album

Support

TitreAnnéeGenre

1 n

n 1

C’est en fait exactement ce que nous avons fait lorsque nous avons construit nos tables. Retenez donc quelorsqu’on a besoin d’une relation « plusieurs à plusieurs », il est obligatoire de passer par une tableintermédiaire.On parle de relation « un à un » notée (1-1) lorsqu’un enregistrement d’une table A peut être en relationavec au plus un enregistrement d’une table B et qu’un enregistrement de la table B peut être en relationavec au plus un enregistrement de la table A.Ce type de relation est très peu utilisé. En effet, deux tables A et B en relation « un à un » peuvent êtreremplacées par une seule table C contenant les champs des tables A et B. Le seul intérêt de construiredeux tables en relation « un à un » est lié à des raisons de sécurité. Par exemple, la deuxième table peutcontenir des données confidentielles comme un salaire ou une prime, son accès sera limité. Le plus simpleest alors de mettre les informations sensibles dans une table à part et d’en limiter l’accès.