Sie sind auf Seite 1von 270

REPUBLIQUE TUNISIENNE MINISTERE DE LEDUCATION

www.mastertunisie.com Auteurs
Ridha HADJ ALI
Inspecteur

Moncef GAFSI
Matre-Assistant

Abdelaziz ABDELLATIF
Matre-Assistant

Raouf ELYOUSFI
Professeur Principal

Evaluateurs Mohamed ROMDHANI Romdhane JALLOUL

Centre National Pdagogique

Tous droits rservs au Centre National Pdagogique

Prface

onformment aux nouveaux programmes d'informatique en 4me anne de l'enseignement secondaire, nous vous proposons ce livre destin la section Sciences de l'Informatique et concernant la matire "Bases de donnes". Il est compos de quatre parties. La premire partie, intitule introduction aux bases de donnes, vise veiller les apprenants l'utilit et l'intrt qu'offre l'utilisation des bases de donnes, dfinir leurs constituants ainsi que leurs systmes de gestion. Cette partie servira dfinir le jargon employ dans cet environnement, ainsi un certain nombre de dfinitions et d'exemples de Systmes de Gestion de Bases de Donnes (SGBD) sont prsents. L'tude du modle relationnel est favorise dans cette introduction et ce compte tenu de son niveau d'application actuel et de sa plus simple comprhension par nos lves. Certaines tapes lmentaires, ncessaires cette comprhension sont objet de l'tude dans cette partie comme les principaux constituants d'une BD. Nous avons veill tablir la relation entre l'tude des bases de donnes et celle exploite dans la matire TIC concernant la connexion une base de donnes en vu de concevoir des sites web dynamiques. Dans l'objectif de mieux comprendre le fonctionnement et la manipulation d'une base de donnes et dans le souci de simplifier cette tche l'lve, nous occultons les tapes de normalisation ; par contre nous prsentons une dmarche simplifie pour dduire la structure d'une base de donnes. La deuxime partie traite de la structuration d'une base de donnes. Elle prsente une dmarche de dtermination de la structure d'une base de donnes. L'objectif est double : utiliser les fonctions de base d'un SGBD pour crer, grer, interroger une base de donnes puis charger des donnes et imprimer des tats rsultats de slection dans les BD manipules. Ces manipulations contribuent l'apprentissage progressif au dveloppement autour d'une BD. Une dmarche de dtermination de la structure d'une base de donnes est dveloppe pour l'lve, elle l'accompagne pour concevoir cette dernire et aboutir une solution normalise. Dans cette partie, nous dveloppons par l'occasion les manipulations sur la structure d'une Base de Donnes. La troisime partie traite de la manipulation et la scurisation des bases de donnes. L'objectif est de crer des applications de gestion des bases de donnes et l'exploitation de ces dernires. Cette manipulation sera effectue selon le mode commande et le mode assist. Le premier mode se base sur le standard SQL pour lequel nous prsentons les principales commandes. Cette partie est dominance pratique. Il est important d'voquer la notion de scurisation d'une BD, nous tudierons la notion de scurit et les diffrentes mthodes pour l'assurer. La quatrime partie traite de l'exploitation des bases de donnes. A travers un ensemble d'tudes de cas, nous accompagnons l'lve dans l'tude complte de l'implantation d'exemples de base de donnes et ce comme synthse de ce qui a t tudi dans les parties qui prcdent. Un ensemble d'noncs et de problmes sont proposs l'apprenant pour mettre en uvre ses acquis en la matire. Nous veillerons accompagner les lves dans l'apprentissage de la rsolution d'un problme. Comme l'a t dfini dans les annes prcdentes, nous continuons adopter la mme mthode de rsolution dans ce livre. Cette dmarche se base sur la dcomposition d'un problme complexe en sous problmes de difficults moindres. Ce choix demeure dict par un souci trs important, celui de dvelopper chez l'lve un esprit d'analyse et une mthodologie de rsolution de problmes. De plus, l'lve apprendra traduire ses besoins en matire d'accs aux donnes (consultation et mise jour) en formulant les commandes correspondantes et en se basant sur les structures adaptes. Pour dvelopper nos applications solutions et bnficier de nouveaux services offerts par les nouvelles plateformes, nous utiliserons le langage SQL comme standard d'interrogation des BD. Chaque chapitre est appuy par des activits pour mieux faire comprendre les notions prsenter. Il se termine par une srie d'exercices pris dans la plupart des cas du vcu de l'apprenant. Ces exercices sont ordonns par ordre de difficult croissant. Nous donnons aussi la bibliographie rfrence de ce livre. Elle pourra vous guider pour d'autres lectures. Nous esprons que ce livre vous apportera beaucoup d'aide et d'informations en matire de systmes de bases de donnes. Nous vous serons bien reconnaissants de nous faire part de vos remarques et vos suggestions. Les auteurs.

TABLE DES MATIERES


Prface Table des matires

3 4

Partie I : Introduction aux bases de donnes


Chapitre 1 : Notion de Base de Donnes 1. Introduction la gestion des donnes 2. Bases de donnes : notion de base Lecture Exercices Chapitre 2 : Notion de Systmes de Gestion de Bases de Donnes 1. Introduction 2. Dfinition d'un systme de gestion de bases de donnes 3. Les fonctions d'un systme de gestion de bases de donnes 4. Les principaux SGBD 5. Cycle de dveloppement des bases de donnes Retenons Lecture 8 10 19 24 27 30 32 32 33 36 37 38 39

Partie II : Cration de Bases de Donnes


Chapitre 3 : Structure d'une Base de Donnes Relationnelle 1. Introduction 2. Notion de table 3. Notion de colonne 4. Notion de ligne 5. Notion de cl primaire 6. Liens entre tables 7. Notion de contrainte d'intgrit 8. Reprsentation de la structure d'une base de donnes 9. Exemple de base de donnes Activits Retenons Exercices
4

44 46 46 48 49 50 52 54 55 56 58 59 60

Chapitre 4 : Dmarche de dtermination de la structure d'une Base de Donnes 1. Introduction 2. Dlimiter le(s) domaine(s) 3. Dterminer les colonnes 4. Dterminer les tables 5. Affecter les colonnes aux tables 6. Dterminer les cls primaires 7. Dterminer les liens entre tables 8. Analyser et affiner la structure de la base de donnes Retenons Applications Exercices Chapitre 5 : Cration et modification de la structure d'une Base de Donnes 1. Introduction 2. Cration d'une base de donnes en mode assist 3.Modification de la structure d'une base de donnes 4. Cration d'une table en mode commande 5. Modification de la structure dune base de donnes en mode commande Lecture Exercices

64 66 67 67 68 69 69 70 70 71 72 78 82 84 84 93 99 102 106 108

Partie III : Manipulation et Scurisation de Bases de Donnes


Chapitre 6 : Manipulation d'une base de donnes 1. Introduction 2. Base de Donnes exemple 3. Manipulation de donnes en mode assist 4. Manipulation de donnes en mode commande Retenons Applications Exercices Chapitre 7 : Dveloppement d'applications autour d'une base de donnes 1. Introduction 2. Structure d'une application 3. Les formulaires 4. Les tats 5. Interaction entre base de donnes et sites web dynamiques Retenons Exercices
5

110 112 112 115 133 154 155 157 166 168 168 170 190 200 204 205

Chapitre 8 : Scurisation d'une base de donnes Scurit et base de donnes 1. Problmatique 2. Gestion des droits d'accs 3. Cryptage d'une base de donnes 4. Gestion des utilisateurs 5. Intgrit des donnes 6. Sauvegarde et restauration de bases de donnes 7. Contrle de donnes dans le langage SQL

208

210 212 214 216 221 222 222

Partie IV : Application : Etude de Cas


Application 1 - Gestion d'une agence de location de voitures Application 2 - Gestion d'un club vido Application 3 - Gestion d'un tablissement scolaire Projets : 10 projets 236 234 242 250

Webographie / Bibliographie Annexe 1 : Conventions syntaxiques et typographiques Annexe 2: Exemple d'diteur SQL : MySQL

264 265 266

E-mails des auteurs


Ridha HADJ ALI Ridha.hajali@inbmi.edunet.tn Abdelaziz ABDELLATIF Abdelaziz.abdellatif@fst.rnu.tn 6 Moncef GAFSI Moncef.gafsi@ensi.rnu.tn Raouf ELYOUSFI Raouf.elyousfi@edunet.tn

Objectifs :

. .

Dcrire l'intrt des bases de donnes et leurs systmes de gestion Prsenter l'environnement des bases de donnes

Plan :
1. Introduction la gestion des donnes 1.1 Information et donne 1.1.1. Dfinitions 1.1.2. Elments constitutifs d'une information 1.2 La persistance 1.3 L'organisation papier 1.4 L'organisation en fichiers 2. Bases de donnes : notions de base 2.1 2.2 2.3 Dfinition d'une base de donnes Intrt de l'utilisation d'une base de donnes Les modles des bases de donnes 2.3.1 Le modle hirarchique 2.3.2 Le modle rseau 2.3.3 Le modle relationnel

Retenons Lecture Exercices

1. Introduction la gestion des donnes


1.1. Notion de donne et d'information Activit 1 Une ville dispose d'un service social dont l'une de ses fonctions est d'aider des citoyens faibles revenus obtenir des cartes de transport tarif rduit. Monsieur Amor Tounsi, retrait, se rend au service social afin d'obtenir une carte lui assurant une rduction des tarifs sur les lignes d'autobus de la socit de transport de sa rgion. Afin de lui ouvrir un dossier d'ayant droit, une employe du service social lui demande de fournir : une fiche d'tat civil, une photo, un avis de non imposition, une quittance de la STEG ou de la SONEDE. Au service social : Une employe rassemble les documents fournis par M. Amor afin de constituer un dossier ; Elle vrifie l'adresse dans le fichier des rsidants de la ville ; Elle retranscrit les informations (nom, prnom, adresse ) sur une fiche qui sera mise jour aprs avis de la socit de transport d'accorder ou de refuser la carte ; Elle adresse le dossier la socit de transport. A la socit de transport : Mme Mansour, responsable du service des cartes de rduction, reoit le dossier en question. Elle entre les renseignements dans l'ordinateur qui contient en mmoire toutes les informations concernant les demandes. Les conditions requises pour bnficier de la gratuit sont : le demandeur doit tre rsidant dans une commune agre ; il doit tre non imposable ; il doit avoir 65 ans au moins ou handicap. La carte de rduction des tarifs a une dure de validit d'une anne. Question 1 : Utiliser la liste de mots suivants afin de complter les diffrentes phases pour l'attribution de la carte de gratuit : Saisie - Contrlent - Traites Collecte - mise jour. 1 2 3 4
Les deux employes ont besoin d'informations : - au service social : pour ouvrir un dossier de demande ; - la socit de transport : pour l'attribution de la carte ;

Elles procdent la ................................ des informations. Elles ................................ des informations.

Chacune d'elles vrifie l'exactitude des informations.

Elles effectuent une - au service social : l'information est retranscrite sur une fiche ................................ - la socit de transport : elle est introduite sur ordinateur des informations. Les informations externes (documents) sont compares les informations sont aux informations internes (conditions d'attribution). ..................................
10

Question 2 : En identifiant les moyens utiliss afin de mmoriser les informations au niveau du service social et de la socit de transport, complter la premire ligne du tableau suivant :
Au service social : entre des donnes A la socit de transport : entre des sur ................................................................. donnes sur ..................................................
FICHE DE DEMANDE DE CARTE DE REDUCTION

Nom : Tounsi Prnom : Amor Adresse : 184, rue Hdi Chaker Sousse Dcision : Accorde - Refuse Priode ...............................................

Question 3 : En identifiant les moyens utiliss afin de stocker les donnes relatives plusieurs demandeurs de la carte de Tarif Rduit au niveau du service social et de la socit de transport, complter la premire ligne du tableau suivant :
Au service social :

A la socit de transport : classement dans l'ordre les donnes sont mmorises et ordonnes dans alphabtique dans un ............. un(e) ........................................................................
....................................................
Carte de Tarif Rduit Code D0001-2007 D0001-2007 D0001-2007 Ville Nom Prnom Adresse

1.1.1. Dfinitions Avant d'introduire les concepts relatifs aux Bases de Donnes, iI importe de dfinir la notion donne. Plusieurs dfinitions se prsent, parmi lesquelles : Dfinition 1: D'aprs l'encyclopdie Encarta : Une donne est une information reprsente sous une forme conventionnelle, afin de pouvoir tre traite automatiquement .

11

Remarque : D'aprs l'encyclopdie libre Wikipdia : Dans les technologies de l'information (TI), une donne est une description lmentaire, souvent code, d'une chose, d'une transaction d'affaire, d'un vnement, etc. Les donnes peuvent tre conserves et classes sous diffrentes formes : papier, numrique, alphabtique, images, sons, etc. Le processus d'enregistrement des donnes dans une mmoire s'appelle la mmorisation . Une donne peut tre considre comme tant un lment fondamental sur lequel se btit un raisonnement, une recherche, une tude ou une uvre. Ainsi, une donne est rarement utilise d'une manire isole. Une donne, regroupe avec d'autres, rattaches un contexte et ventuellement transformes donnent naissance une information.

Donne

Donne

Donne Donne Exemple : Tounsi Amor AN 1945 Sousse 1900DT Donne

Regroupement et mise en contexte

Information

Regroupement et mise en contexte

Retrait, faible revenu

Remarque : L'tre humain, depuis son existence, ne cesse de manipuler une quantit plus ou moins importante de donnes dans sa vie courante (noms de personnes, noms de lieux, quantits, couleurs, poids, etc.). Activit 2 : Identifier quelques donnes utilises dans les domaines suivants : Une administration d'un lyce, Un restaurant, Un magasin qui vend des articles de sport, Une banque.
12

1.1.2. Elments constituant une information Les donnes sont gnralement regroupes selon leur appartenance un objet du monde rel. L'ensemble d'objets homognes (cohrents) constitue ce qui est couramment appel entit. Une entit est dcrite par un ensemble d'attributs (ou proprits). Chacun de ces attributs prend ses valeurs dans un ensemble appel Domaine. Parfois, l'information provient de deux ou plusieurs entits relies entres elles par ce qui est couramment appel association. INFORMATION Entit(s)
C'est la personne, l'objet, le fait pris en considration.

Attribut(s)
Il est ncessaire pour dcrire l'entit.

Valeur(s)
C'est le contenu ou la valeur de l'attribut.

De qui ou de quoi s'agit-il?

Quelles sont les caractristiques proposes pour dcrire l'entit ?

Quelle est la valeur de chacune des attributs (caractristiques ou proprit) ?

Exemple 1 : Fiche d'tat civil


Nom Prnom Date de naissance Lieu Tounsi, Benzarti, Baklouti, Tboulbi Amor, Abdelaziz, Ridha, Moncef 20/09/1945, 11/11/1970, Sousse, Bizerte,

Personne

Exemple 2 : Carte de gratuit


Bnficiaire N d'identification Nom et Prnom Ville Validit (Date Limite) 2409 Tounsi Amor Sousse 31/12/2007

Exemple 3 : Un document scolaire


Carte d'identit Scolaire

Exemple 4 : Pice d'Identit


Carte d'Identit Nationale

Application : Complter les deux derniers exemples du tableau prcdent.


13

1.2. La persistance Une donne est rarement utilise une seule fois. Gnralement on a besoin de la mmoriser sur un support quelconque pour pouvoir la retrouver ultrieurement. Par exemple, lorsque quelqu'un vous communique son numro de tlphone, vous le notez sur un bout de papier, sur votre carnet d'adresses, dans votre tlphone portable ou bien, si vous avez une bonne mmoire, dans votre cerveau. La faon de le mmoriser a une influence sur la rapidit de le retrouver lorsqu'on en a besoin. Cette capacit de mmoriser et de pouvoir retrouver une donne est appele persistance. Son oppos est la volatilit. Lorsqu'une donne n'est pas persistante, elle est volatile, c'est--dire qu'elle disparat au bout d'un certain temps. Persistance mmorisation + disponibilit Dans le domaine de la programmation, la gestion de persistance des donnes se rfre au mcanisme responsable de la sauvegarde et la restauration de donnes, afin qu'un programme puisse se terminer sans que ses donnes ni son tat d'excution soient perdus. Ces donnes peuvent tre sauvegardes sur disque ou transmises un serveur. Lors de la mmorisation d'une donne, deux aspects doivent tre pris en considration : Le type du support de mmorisation : Ce type doit tre adapt la dure de la mmorisation. Exemples Si je vais utiliser le numro de tlphone immdiatement, je peux me contenter de ma mmoire. Si je veux l'utiliser dans une heure, je peux le noter sur un bout de papier. Si je vais l'utiliser souvent dans les jours et mois venir, il vaut mieux le mmoriser dans mon carnet d'adresses ou dans la puce de mon tlphone portable. Le format de mmorisation : La forme selon laquelle une donne est mmorise. Exemples Pour mmoriser le numro de tlphone, si je note uniquement le numro, je ne serais pas capable de savoir qui il se rfre si je le retrouve dans un mois. Il me faut donc le dcrire par exemple sous la forme suivante : Monsieur X : 34217788. La persistance des donnes peut tre donc assure grce aux organisations suivantes : Organisation papier : si la gestion des donnes n'est pas informatise. Organisation en fichiers : si la gestion des donnes est informatise. Nous allons dvelopper ces deux types d'organisation dans les sections qui suivent. 1.2.1. L'organisation papier L'organisation des donnes en papier consiste utiliser diffrents supports papiers pour assurer la persistance. Ces supports peuvent tre des fiches, des registres, des cahiers, etc. Cette organisation peut conduire plusieurs problmes parmi lesquels : Classement : un document ne peut tre class que sous une seule rfrence, limitant ainsi les possibilits de recherche. Consultation : le document est difficile d'accs, le dlai de mise disposition peut atteindre plusieurs jours ; en outre, pendant sa consultation par une personne, le document n'est plus disponible d'autres personnes. Contraintes : de volume et de taille des documents.
14

Dlai : de recherche et de restitution mais aussi de conservation. Fiabilit : du classement et du reclassement en cas d'utilisation d'une archive. Scurit : destruction ou dtrioration (volontaire ou non), vol. Qualit de la restitution : elle peut tre mdiocre (photocopie, fax) 1.2.2. L'organisation en fichiers L'organisation des donnes en fichiers consiste utiliser des supports informatiques pour assurer la persistance. Ces supports peuvent tre des disques durs, des disquettes, des CD, des flashs disques, etc. Un fichier (en anglais: file) est un ensemble de donnes structures mmorises sur un support de stockage permanent. Exemples : Fichier des employs d'une entreprise, fichier des comptes des clients d'une banque, fichier des clients d'une entreprise de vente par correspondance, fichier d'abonns (tlphone, lectricit, ...), fichier des impts, etc. Il faut transfrer les donnes de la mmoire de masse vers la mmoire centrale pour pouvoir la traiter. Par exemple, prenons les donnes relatives un fichier des abonns une revue. Pour imprimer la lettre proposant une personne de renouveler son abonnement, un programme va chercher l'information concernant cette personne dans le fichier (nom, adresse, date de fin d'abonnement, ...), l'amener en mmoire centrale, puis l'imprimer. Cette organisation en fichiers possde les inconvnients suivants : Lourdeur d'accs aux donnes. En pratique, pour chaque accs, mme le plus simples, il faudrait crire un programme. Manque de scurit. Si tout programmeur peut accder directement aux fichiers, il est impossible de garantir la scurit et l'intgrit des donnes de ce fichier. Redondance de donnes. Etant donn que les fichiers sont gnralement conus par des quipes diffrentes, il y a un risque qu'un mme ensemble de donnes figurent dans deux ou plusieurs fichiers : c'est la redondance. En plus du gaspillage de l'espace disque, il y a un risque d'incohrence dans le cas ou de la mise jour n'a pas touch une la totalit des copies. Le fichier des employs de telle entreprise contient un enregistrement par employ et le fichier des tudiants de l'universit contient un enregistrement par tudiant, ... Un enregistrement (article, record) est un lment d'un fichier. Il constitue : l'unit logique de transfert entre la mmoire centrale et la mmoire de masse l'unit de traitement des programmes exploitant ce fichier. Limites l'utilisation des fichiers L'utilisation de fichiers impose d'une part, l'utilisateur de connatre l'organisation de chaque fichier qu'il utilise afin de pouvoir accder aux informations dont il a besoin et, d'autre part, d'crire des programmes pour pouvoir effectivement manipuler ces informations. Pour des applications nouvelles, l'utilisateur devra obligatoirement crire de nouveaux programmes et il pourra tre amen crer de nouveaux fichiers qui contiendront peut-tre des informations dj prsentes dans d'autres fichiers. De telles applications sont : rigides, contraignantes, longues et coteuses mettre en uvre.
15

Les donnes associes sont : mal dfinies et mal dsignes, redondantes, peu accessibles de manire ponctuelle et peu fiables. La prise de dcision est une part importante de la vie d'une socit. cette dernire doit tre bien informe sur la situation ce qui ncessite alors des informations jour et immdiatement disponibles. Les utilisateurs, quant eux, ne veulent plus de systmes d'information constitus d'un ensemble de programmes inflexibles et de donnes inaccessibles tout non spcialiste; ils souhaitent avoir des systmes d'informations globaux, cohrents, directement accessibles (sans qu'ils aient besoin d'crire des programmes ou de demander un programmeur de les crire pour eux) et des rponses immdiates aux questions qu'ils posent. On a donc recherch des solutions tenant compte la fois des dsirs des utilisateurs et des progrs techniques. Cette recherche a abouti au concept de base de donnes. Activit 3 : Un libraire qui dispose d'un ensemble d'ouvrages (dont le nombre est variable dans le temps), dsire grer, de prfrence par ordinateur, le rayon des livres de sa bibliothque. Il adresse sa demande plusieurs intervenants en insistant sur les tches suivantes : L'ajout d'un livre La suppression d'un livre La modification du numro de tlphone de l'diteur d'un livre La recherche d'un ensemble de livres selon un critre Le contrle de certains accs aux donnes (sur les noms, le nombre d'exemplaires, le code etc.) Les informations disponibles sur les livres sont les suivantes : code, titre, nombre d'exemplaires, anne d'dition, diteur, tlphone de l'diteur, nom de l'auteur et prnom de l'auteur. Le 1er intervenant propose l'utilisation d'une fiche (papier) Il envisage utiliser une fiche dcrivant chaque livre et un journal gardant une trace des oprations effectues sur ces livres. Se passant de l'ordinateur, l'intervenant avoue rencontrer des oprations lentes et des difficults majeures.

Question : Dvelopper avec votre enseignant les limites et les difficults rencontres.
Commentaire sur cette solution : Pour ajouter, modifier ou supprimer une information, on doit rcrire toute la fiche. Le 2me intervenant propose d'crire un programme (en TPascal par exemple) en utilisant une structure de donnes de type tableau une dimension. Il organise les donnes dans des tableaux contenant les informations suivantes : Code, Titre, NbExem, Anne, Editeur, Tel_Editeur, NomAuteur et PrnomAuteur.

16

Code
12TA1 13GO1 13GO1 15TA2 15TA2 15TA2

Titre
Rseaux informatiques Algorithmes gntiques Algorithmes gntiques Systme d'exploitation Systme d'exploitation Systme d'exploitation

Nb Exem
10 5 5 6 6 6

Anne
1998 1994 1994 1993 1993 1993

Editeur
Eyrolles Addison Wesley Addison Wesley Eyrolles Eyrolles Eyrolles

TelEditeur
1111111111 222222222 222222222 1111111111 444444444 1111111111

Nom Auteur
Tanenbaum Goldberg Holland Cardy Dumar Tanenboum

Prnom Auteur
Henri Stephen John Ronald Eric Henri

Aprs rflexion, l'intervenant avoue trouver des limites son travail. Question : Dvelopper avec votre enseignant les limites et les difficults rencontres. Le 3me intervenant propose l'utilisation d'une matrice de donnes qu'il programme en Pascal. Il envisage crire un programme Pascal pour cette gestion, il organise les donnes dans une matrice o chaque colonne reprsente un type d'informations. Aprs rflexion, il avoue aussi trouver des contraintes son travail. Question : Dvelopper avec votre enseignant les limites, les contraintes et les difficults rencontres. Commentaires sur cette proposition : Le nombre de livre est limit par la taille du tableau. Les donnes sont volatiles. Pour effectuer une recherche, on doit saisir de nouveau les mmes informations. Le 4me intervenant propose l'utilisation d'un logiciel de traitement de texte. Il envisage saisir les donnes dans un tableau insr dans un document texte. Il utilise une fiche pour chaque livre et un journal d'oprations sur l'ensemble des livres. Il avoue rencontrer d'normes difficults poursuivre le travail et particulirement dans les recherches des lignes critres multiples. Question : Dvelopper avec votre enseignant les limites et les difficults rencontres Commentaires sur cette proposition : Redondance de donnes : les informations code, titre, , se rptent pour chacun de ses auteurs. Anomalie de suppression : en supprimant tous les livres d'un diteur donn, toutes les informations concernant cet diteur disparaissent avec le dernier enregistrement supprim. En plus de la suppression des livres, on a finalement supprim un diteur. Anomalie d'ajout : si on veut ajouter un nouvel diteur, il faut ncessairement introduire un livre (code, titre, NbExem, Anne, etc.).
17

Anomalie de mise jour : en oubliant une ligne lors de la modification d'une valeur, on introduit des contradictions dans la table d'o l'incohrence de nos donnes. Anomalie de recherche : dans le cas o que le nombre de lignes est assez lev, il n'est pas du tout simple de trouver la liste des livres d'un diteur donn. Le 5me intervenant propose l'utilisation d'un tableur. Il envisage saisir les donnes dans un tableau l'aide d'un tableur; Il rserve une ligne pour chaque livre et une colonne pour chaque type de donne. Exemple de proposition :
A 1
2 3 4 5 6 7

B Titre
Rseaux informatiques Algorithmes gntiques Algorithmes gntiques Systme d'exploitation Systme d'exploitation Systme d'exploitation

E TelEditeur

F Nom Auteur

G Prnom Auteur
Henri Stephen John Ronald Eric Henri

Code
12TA1 13GO1 13GO1 15TA2 15TA2 15TA2

Anne Editeur
1998 1994 1994 1993 1993 1993

Eyrolles 1111111111 Tanenbaum Addison Wesley Addison Wesley 222222222 222222222 Goldberg Holland Cardy Dumar

Eyrolles 1111111111 Eyrolles 444444444

Eyrolles 1111111111 Tanenboum

Pouvant rpondre une bonne partie de la demande, l'intervenant avoue, cependant, rencontrer des difficults poursuivre le travail et particulirement dans les recherches multicritres avec le grand nombre d'ouvrages qui peut tre manipul. Question : Dvelopper avec votre enseignant les limites et les difficults rencontres. Activit Complmentaire : Dduire les caractristiques d'une bonne structure de donnes qui vous vite les inconvnients et rsout les difficults rencontres dans l'activit prcdente. Conclusion : Il faut alors structurer les donnes sous une forme qui ne prsente pas ces insuffisances. Dans la suite, on tudiera une approche de structuration des donnes.

18

2. Bases de donnes : notions de base Activit 4 Cette activit prsente les donnes manipules par une agence de location de voitures organises sous forme de fiches :
LOCACAR : AGENCE DE LOCATION DE VOITURE
FICHE D'IDENTIFICATION FICHE D'IDENTIFICATION FICHE D'IDENTIFICATION

Immatriculation : 125 TN 98 Modle : SAFRANE Catgorie : C Date de rvision : 03/07/2002 Km la rvision : 4802 km Km actuels : 9641 km Disponibilit : N (non)

Immatriculation : 237 TN 98 Modle : CLIO Catgorie : A Date de rvision : 17/10/2002 Km la rvision : 5069 km Km actuels : 8882 km Disponibilit : O (oui)

Immatriculation : 880 TN 98 Modle : MEGANE Catgorie : B Date de rvision : 21/08/2002 Km la rvision : 7220 km Km actuels : 14815 km Disponibilit : O (oui)

Je voudrais louer un vhicule de taille moyenne.

Quelle est sa demande ? Ai-je une voiture de catgorie B disponible ?

1 - Questions : Quelles sont les donnes ncessaires au vendeur, afin de grer le parc automobile de l'agence ? Comment trouve-t-on la demande du client par rapport aux donnes des fiches d'immatriculation des voitures ? Comment le vendeur a traduit (expliqu) la demande du client ? 2 - Les fiches des descriptions des vhicules sont prsentes de la manire suivante : il s'agit d'un tableau. Recopier les trois premires lignes du tableau et complter les noms des colonnes (Identifier les intituls des colonnes) :
19

.................. .................. .................. .................. .............. .............. ..............


125 TN 98 880 TN 99 880 TN 98 880 TN 98 880 TN 98 237 TN 98 238 TN 98 880 TN 98 880 TN 98 880 TN 98 880 TN 98 880 TN 98 SAFRANE 206 206 605 605 CLIO CLIO CORSA 307 307 307 MEGANE

C A A C C A A A B B B B

03/07/02 15/10/02 23/08/02 25/09/02

4802 4998 1596 4871

9641 6250 3721 7237 49

N O O N O O N N O O N O

17/10/02 02/10/02 18/10/02 16/09/02 01/09/02

5069 5197 1666 5285 14988

8882 9523 1815 7965 17661 990

Ce tableau est appel : .......................................................................... L'agence utilise d'autres tableaux comme ceux des clients et des oprations de location. Discuter avec votre enseignant les ventuelles formes de ces tableaux. 2.1. Dfinition d'une base de donnes 2.1.1. Dfinition 1 Une base de donnes est un ensemble de donnes, sur un sujet, qui sont : exhaustives, non redondantes, structures et persistantes. 2.1.2. Dfinition 2 Une base de donnes peut tre dfinie comme une collection de donnes structures modlisant un univers donn (monde rel), et mmorise sur un support permanent. En se basant sur les dfinitions prcdentes, on peut retenir comme dfinition d'une base de donnes : Dfinition Une base de donnes est une collection de donnes structures relatives un ou plusieurs domaines du monde rel. Exemples 1 Une Base de Donnes tudiants regroupe toutes les donnes concernant les tudiants (num, nom, prnom, adresse, modules auxquels est inscrit l'tudiant, notes, etc.) et servira toutes les applications. Exemples 2 Une base de donnes Bibliothque regroupe les donnes concernant les ouvrages, les adhrents qui empruntent les ouvrages, etc. De plus, il y a des rgles de fonctionnement comme :
20

21/08/02

10220

14815

Un adhrent ne peut emprunter en mme temps plus de 5 ouvrages. La dure maximale d'emprunt est limite 10 jours. Seul le bibliothcaire en chef peut dclarer qu'un ouvrage est perdu. Les ouvrages ne sont pas rangs de manire alatoire, mais bien en fonction de certains critres prtablis. Lexique Franais Base de donnes Anglais Data base Arabe Synonymes BD

fH IYb

Dans une architecture client/serveur, une base de donnes est considre comme une ressource partage par un ensemble d'applications situes sur les postes clients. La machine qui gre cette base de donnes est appele Serveur de donnes ou bien Serveur tout simplement.

Base de donnes

Serveur

Client

Client

Client

Figure 1.1 : Une base de donnes dans une architecture client/serveur.

2.2. Intrts de l'utilisation des bases de donnes L'organisation des donnes sous forme de bases de donnes prsente les avantages suivants : Centralisation : Les donnes sont regroupes dans une structure centrale permettant d'viter la redondance. En effet, les donnes sont saisies une seule fois et peuvent tre utilises par plusieurs programmes et plusieurs utilisateurs. Indpendance entre donnes et programmes : Traditionnellement, dans des langages de programmation tels que Cobol, Pascal, les fichiers sont dcrits dans
21

les programmes qui les exploitent. Dans le cas d'une Base de donnes, les donnes sont dcrites indpendamment des programmes. Intgration des liaisons entre les donnes : Les relations entre les donnes font partie de la base de donnes et non pas des programmes comme dans le cas o les donnes sont organises en fichiers. Exemples Dans notre bibliothque, on a des adhrents et des ouvrages. On devra pouvoir par exemple savoir quel adhrent a emprunt tel ouvrage ou quels sont les ouvrages emprunts par tel adhrents. Intgrit de donnes : Il s'agit d'une proprit fondamentale de la base. Elle se traduit par un ensemble de rgles (unicit, rfrence et valeur) permettant d'assurer la cohrence des donnes. Les donnes stockes dans la base doivent reprsenter exactement ce qui se produit dans la ralit. Une base de donnes qui n'est pas fidle la ralit est tout simplement inutilisable. Exemples Aucun adhrent ne doit possder plus de 5 ouvrages : avoir plus c'est contraire aux rgles de fonctionnement de la bibliothque. A un mme moment, un exemplaire d'un ouvrage ne peut tre emprunt que par un seul adhrent. Les donnes doivent respecter des rgles (contraintes d'intgrit) afin d'viter par exemple, que deux personnes possdent un mme Numro de la carte d'identit. Partage des donnes (ou concurrence d'accs) : Des utilisateurs diffrents peuvent accder en mme temps aux mmes donnes, le systme doit rgler la concurrence d'accs en ordonnanant les demandes. Exemples Un adhrent doit pouvoir rechercher la liste des livres traitant d'un sujet donn pendant que le bibliothcaire enregistre l'achat d'un nouveau livre ou qu'une troisime personne tire une liste des rappels. Chaque utilisateur a l'impression qu'il est le seul utilisateur de la base. 2.3. Les modles des bases de donnes Les bases de donnes sont apparues la fin des annes 60, une poque o la ncessit d'un systme de gestion de donnes souple se faisait ressentir pour viter les inconvnients de l'organisation en fichiers. Nous avons vu qu'une base de donnes reprsente la fois les donnes dcrivant les objets du monde rel et les liens (ou associations) existant entre ces objets. Depuis l'apparition des bases de donnes, quatre modles se sont succds pour permettre la structuration des donnes : 1. Modle hirarchique, 2. Modle rseau, 3. Modle relationnel, 4. Modle orient objet. Ces quatre modles se distinguent par la faon selon laquelle les liens entre les donnes sont reprsents.
22

2.3.1. Le modle hirarchique Le seul type de lien possible dans ce modle est le lien pre-fils (ou 1:n). Une base de donnes se prsente ainsi comme un arbre ordonn dont les sommets sont les objets et les arcs sont les liens. Un objet peut avoir plusieurs fils, mais un fils ne peut avoir qu'un seul pre. 2.3.2. Le modle rseau Une base de donnes rseau se prsente comme un graphe, ou rseau (d'o le nom du modle). Dans ce graphe les objets sont relis entre eux l'aide de pointeurs logiques. Tous les types de liens sont possibles, notamment les liens (n:m). 2.3.3. Le modle relationnel Le principe de base du modle relationnel consiste reprsenter aussi bien les objets que les liens l'aide d'une structure appel table. Une table est une structure tabulaire dont les colonnes, appeles aussi attributs, correspondent aux caractristiques de l'objet ou de l'association reprsenter et les lignes, appeles aussi tuples ou n-uplets, correspondent aux occurrences. Ce modle est aujourd'hui celui le plus utilis. Une prsentation plus dtaille est faite dans le chapitre 3.

RETENONS Une base de donnes est un ensemble structur de donnes relatives un ou plusieurs domaines. Elle est exhaustive, non redondante, structure et persistante L'utilisation des bases de donnes permet de centraliser l'information, d'assurer l'indpendance entre les donnes et les programmes, d'tablir des liaisons entre les entits et de partager les donnes. Il existe quatre modles de base de donnes : modle hirarchique, modle rseau, modle orient objet et modle relationnel Le modle relationnel est, aujourd'hui, le plus utilis

23

LECTURE
A Short Database History Ancient to modern : The origins go back to libraries, governmental, business, and medical records. There is a very long history of information storage, indexing, and retrieval. Don't ignore this history, there is usually something to learn from these folks and their success and failure. Lots of online stuff (and there is lots) does not guarantee quality of data or search technique. Good design principles goes way back and lots is known now about how to make good designs that lead to better reliability and performance. 1960's : Computers become cost effective for private companies along with increasing storage capability of computers. Two main data models were developed: network model (CODASYL) and hierarchical (IMS). Access to database is through low-level pointer operations linking records. Storage details depended on the type of data to be stored. Thus adding an extra field to your database requires rewriting the underlying access/modification scheme. Emphasis was on records to be processed, not overall structure of the system. A user would need to know the physical structure of the database in order to query for information. One major commercial success was SABRE system from IBM and American Airlines. 1970-72 : E.F. Codd proposed relational model for databases in a landmark paper on how to think about databases. He disconnects the schema (logical organization) of a database from the physical storage methods. This system has been standard ever since. 1970's : Several camps of proponents argue about merits of these competing systems while the theory of databases leads to mainstream research projects. Two main prototypes for relational systems were developed during 1974-77. These provide nice example of how theory leads to best practice. Ingres: Developed at UCB. This ultimately led to Ingres Corp., Sybase, MS SQL Server, Britton-Lee, Wang's PACE. This system used QUEL as query language. System R: Developed at IBM San Jose and led to IBM's SQL/DS & DB2, Oracle, HP's Allbase, Tandem's Non-Stop SQL. This system used SEQUEL as query language. The term Relational Database Management System (RDBMS) is coined during this period. 1976 : P. Chen proposed the Entity-Relationship (ER) model for database design giving yet another important insight into conceptual data models. Such higher level modeling allows the designer to concentrate on the use of data instead of logical table structure. Early 1980's : Commercialization of relational systems begins as a boom in computer purchasing fuels DB market for business. Mid-1980's : SQL (Structured Query Language) becomes "intergalactic standard". DB2 becomes IBM's flagship product. Network and hierarchical models fade into the background, with essentially no development of these systems today but some legacy systems are still in use. Development of the IBM PC gives rise to many DB companies and products such as RIM, RBASE 5000, PARADOX, OS/2 Database Manager, Dbase III, IV (later FoxBASE, even later Visual FoxPro), Watcom SQL.
24

Early 1990's : An industry shakeout begins with fewer surviving companies offering increasingly complex products at higher prices. Much development during this period centers on client tools for application development such as PowerBuilder (Sybase), Oracle Developer, VB (Microsoft), etc. Client-server model for computing becomes the norm for future business decisions. Development of personal productivity tools such as Excel/Access (MS) and ODBC. This also marks the beginning of Object Database Management Systems (ODBMS) prototypes. Mid-1990's : Kaboom! The usable Internet/WWW appears. A mad scramble ensues to allow remote access to computer systems with legacy data. Client-server frenzy reaches the desktop of average users with little patience for complexity while Web/DB grows exponentially. Late-1990's : The large investment in Internet companies fuels tools market boom for Web/Internet/DB connectors. Active Server Pages, Front Page, Java Servlets, JDBC, Enterprise Java Beans, ColdFusion, Dream Weaver, Oracle Developer 2000, etc are examples of such offerings. Open source solution come online with widespread use of gcc, cgi, Apache, MySQL, etc. Online Transaction processing (OLTP) and online analytic processing (OLAP) comes of age with many merchants using point-ofsale (POS) technology on a daily basis. Early 21st century : Decline of the Internet industry as a whole but solid growth of DB applications continues. More interactive applications appear with use of PDAs, POS transactions, consolidation of vendors, etc. Three main (western) companies predominate in the large DB market: IBM (buys Informix), Microsoft, and Oracle. Future trends : Huge (terabyte) systems are appearing and will require novel means of handling and analyzing data. Large science databases such as genome project, geological, national security, and space exploration data. Clickstream analysis is happening now. Data mining, data warehousing, data marts are a commonly used technique today. More of this in the future without a doubt. Smart/personalized shopping using purchase history, time of day, etc. Successors to SQL (and perhaps RDBMS) will be emerging in the future. Most attempts to standardize SQL successors has not been successful. SQL92, SQL2, SQL3 are still underpowered and more extensions are hard to agree upon. Most likely this will be overtaken by XML and other emerging techniques. XML with Java for databases is the current poster child of the "next great thing". Check in tomorrow to see what else is news. Mobile database use is a product now coming to market in various ways. Distributed transaction processing is becoming the norm for business planning in many arenas. Probably there will be a continuing shakeout in the RDBMS market. Linux with Apache supporting mySQL (or even Oracle) on relatively cheap hardware is a major threat to high cost legacy systems of Oracle and DB2 so these have begun pre-emptive projects to hold onto their customers.

25

Object Oriented Everything, including databases, seems to be always on the verge to sweeping everything before it. Object Database Management Group (ODMG) standards are proposed and accepted and maybe something comes from that. Ethical/security/use issues tend to be diminished at times but always come back. Should you be able to consult a database of the medical records/genetic makeup of a prospective employee ? Should you be able to screen a prospective partner/lover for genetic diseases? Should amazon.com keep track of your book purchasing ? Should there be a national database of convicted sex offenders/violent criminals/drug traffickers? Who is allowed to do Web tracking ? How many times in the last six months did you visit a particular sex chat room/porn site/political satire site? Who should be able to keep or view such data? Who makes these decisions ?
http://math.hws.edu/vaughn/cpsc/343/2003/history.html

26

EXERCICES
Exercice 1 : Un de vos amis a fait une demande de bourse d'tude ; il a du remplir ce document :
Renseignements concernant le demandeur (pre, mre, tuteur ou reprsentant lgal du candidat boursier) Nom : ZAHOUANI Prnom : MOHAMED

Date et lieu de naissance : 10 Juin 1949 Sousse. Nationalit : Tunisienne Profession : Professeur Nombre d'enfants : 2 dont 2 charge. Adresse : Avenue de la rpublique - 4000 - Sousse. N C.I.N. : 05528077 Profession du conjoint : Sans

Prcisez, par une croix dans la colonne concerne, les caractristiques des informations ci-dessus :

alphanumrique

alphabtique

quantitative

permanente

INFORMATIONS

Nom : Date de naissance : N C.I.N. : Nombre d'enfants : Adresse :

Exercice 2 : Citer et expliquer trois inconvnients lis l'utilisation des fichiers. Exercice 3 : Proposer des exemples o l'utilisation d'une base de donnes pourrait tre plus efficace que celle de fiches papiers Exercice 4 : En se basant sur l'exercice 1, indiquez, dans le tableau ci-dessous, la caractristique de chaque donne entoure sur l'entte de ce bulletin de paye :
27

temporaire

qualitative

numrique

BULLETIN DE PAYE Janvier 2006


Employeur Entreprise TrucMuche Zone Industrielle - 1002 - Tunis Tl. : 71 123 321 N 1 2 3 Exercice 5 : Complter les vides en utilisant la liste suivante : Redondance - donnes - structure - programmes - base - informations Une base de donnes est une entit dans laquelle il est possible de stocker des donnes de faon et avec le moins de possible. Ces doivent pouvoir tre utilises par des , par des utilisateurs diffrents. Ainsi, la notion de base de donnes est gnralement couple celle de rseau, afin de pouvoir mettre en commun ces , d'o le nom de . On parle gnralement de systme d'information pour dsigner toute la structure regroupant les moyens mis en place pour pouvoir partager des donnes. Exercice 6 : Relier par une flche :
Indpendance entre donnes et programmes Centralisation de l'information

Salari Nom : Salah Hmida Adresse : Tunisie N CNSS : 123456789987654321 - S Caractristique

Dsignation de la donne

ensemble de rgles (unicit, rfrence et valeur) permettant d'assurer la cohrence des donnes les donnes sont dcrites indpendamment des programmes les donnes sont saisies une seule fois et peuvent tre utilises par plusieurs programmes et plusieurs utilisateurs
28

Intgrit

Exercice 7 : Rpondre par vrai V (Vrai) ou Faux (F) pour chacune des propositions suivantes : 1- Une base de donnes, c'est : Un ensemble organis et structur d'informations portant sur le mme thme. Un plan de classement de l'information Un serveur Internet 2- Une base de donnes garde les informations d'une faon : volatile permanente temporaire

3- Lorsque j'utilise une base de donnes, je manipule : des feuilles de calcul des pages Web des diapositives

4- Dans une base de donnes relationnelle, les donnes sont : reprsentes par des objets. relies par des liens de hirarchie. regroupes sous formes de tables.

29

Objectifs :
Dcouvrir les principales fonctions d'un SGBD Positionner les SGBDR dans le dveloppement des bases de donnes Identifier les principaux SGBD et comparer leur tendus

Plan :
1. Introduction 2. Dfinition d'un SGBD 3. Les fonctions d'un SGBD 3.1. La dfinition des donnes 3.2. La manipulation de donnes 3.3. L'intgrit des donnes 3.4. La gestion des accs concurrents 3.5. La confidentialit 3.6. La scurit de fonctionnement 4. Les principaux SGBD 5. Cycle de dveloppement des bases de donnes 6. Intervenants du domaine BD 6.1. Utilisateurs de bases de donnes 6.2. Concepteurs et dveloppeurs 6.3. Administrateur des bases et des systmes 6.4. Ralisateur de logiciels de gestion et de dveloppement de bases de donnes 7. Quelques balises dans le temps (Historique) Retenons Lecture

31

1. Introduction Nous avons vu dans le chapitre prcdent qu'une base de donnes permet de manipuler un volume important de donnes d'une manire simple, fiable et plus scurise que les approches traditionnelles. Afin de pouvoir contrler ces donnes ainsi que les utilisateurs, on a eu recours un logiciel charg de grer les donnes de la base, de prendre en charge les fonctionnalits de protection et de scurit et de fournir les diffrents types d'interface ncessaires l'accs aux donnes. Ce logiciel s'appelle un SGBD : Systme de Gestion de Base de Donnes 2. Dfinition d'un systme de gestion de bases de donnes Dfinition 1 Un systme de gestion de base de donnes (SGBD) est un logiciel qui permet de : dcrire, modifier, interroger et administrer les donnes d'une base de donnes. Remarque Un systme de gestion de base de donnes (SGBD) permet l'utilisateur de manipuler une ou plusieurs bases de donnes dans des termes abstraits, sans tenir compte de la faon dont l'ordinateur les maintient. Un SGBD est constitu de deux composantes principales : un moteur et une interface. Le moteur constitue la composante principale d'un SGBD. Il assure un ensemble de fonctions qui seront dtailles dans la section suivante. L'interface, situe entre les utilisateurs d'une base de donnes et le moteur, permet un accs facile et convivial aux donnes. Elle permet aussi d'effectuer les tches globales sur la base de donnes telle que la sauvegarde, la restauration, etc

SGBD
Sest constitu de

Interface

Moteur

Figure 2.1 : Les composants d'un SGBD.


32

Lexique Franais Anglais Arabe Synonymes SGBD

Systme de Gestion Data bases de Bases de Management System Donnes

dG f fdG YGb

3. Les fonctions d'un systme de gestion de bases de donnes Le SGBD est le logiciel responsable de grer tous les niveaux toutes les structures se trouvant dans une base de donnes. Cette gestion intgre les fonctions suivantes : La dfinition des donnes La manipulation des donnes L'intgrit des donnes La gestion des accs concurrents La confidentialit La scurit du fonctionnement Les paragraphes suivants dtaillent chacune de ces fonctions. Pour illustrer ces fonctionnalits, on prendra l'exemple d'une base de donnes permettant la gestion des lves dans un lyce. On suppose que cette base contient au moins les entits Elve, Section et Classe. 3.1. La dfinition des donnes Le SGBD doit offrir l'utilisateur des moyens pour dcrire des objets qui vont constituer la base de donnes (comme des personnes, des voitures,...), leurs attributs (comme le nom des personnes, le type des voitures,...), leurs liens (comme une personne possde des voitures) ainsi que des contraintes ventuelles pouvant concerner ces objets, leurs attributs ou leurs liens. Ces moyens constituent ce que l'on appelle gnralement le Langage de Description de Donnes (ou LDD). Le schma d'une base est la description l'aide du LDD des objets de la base, de leurs liens et des contraintes associes. Cette description est unique et commune aux diverses applications qui utilisent la base. Parfois, seule une partie de ce schma, appele sous-schma, peut tre connue d'un programme ou d'un groupe de programmes. En d'autres termes, le programme (ou le groupe de programmes) n'a accs qu'aux seuls objets prsents dans le sous-schma. Exemple La cration des trois entits : Elve, Section et Classe. 3.2. La manipulation de donnes La manipulation de donnes concerne les outils et les mcanismes qui permettent de manipuler le contenu d'une base de donnes par les utilisateurs. Les SGBD offrent, souvent sous diverses formes, des capacits de recherche, de cration, de modification et de suppression d'informations. Une de ces formes est le Langage de Manipulation de Donnes (LMD) qui permet de manipuler les donnes de la base de manire interactive.
33

L'action effectuer sur la base est exprime comme une phrase de ce langage (requte) qui est value et excute par le SGBD. Une autre forme est constitue par les interfaces que peut offrir le SGBD avec des langages de programmation tels Pascal, C, C++, Java ou Cobol. Il faut souligner que ces divers moyens de manipulation des donnes d'une base cachent totalement l'utilisateur tous les aspects relatifs l'organisation physique des donnes sur le support de stockage. Enfin, de plus en plus de SGBD offrent divers utilitaires pour l'aide l'criture de requtes ou de programmes, l'laboration d'crans de saisie, d'tats de sortie, etc. Toutes ces facilits sont regroupes sous le vocable d'environnement ou langage de quatrime gnration (L4G). Exemple L'insertion d'une nouvelle section (Cration d'une nouvelle section comme Sciences Informatique suite une rforme du systme ducatif) La modification de l'adresse d'un lve (suite un dmnagement) La suppression d'une classe (suite une rduction des effectifs des lves) La recherche de l'adresse d'un lve (lui envoyer une correspondance) 3.3. L'intgrit des donnes Le concept d'intgrit des donnes est relatif la qualit de l'information enregistre. Pour tre fiable, celle-ci doit parfois vrifier certaines proprits, comme l'appartenance une liste de valeurs permises pour un attribut. Ces proprits sont appeles contraintes d'intgrit. Certaines sont spcifies lors de la dfinition du schma de la base, le SGBD se chargeant de les prserver pendant toute la vie de la base, alors que d'autres, plus complexes, peuvent ncessiter un effort de programmation. Exemple Lors de l'inscription d'un lve, on doit vrifier l'existence de la section ainsi que d'autres contraintes comme l'ge et le niveau d'tudes 3.4. La gestion des accs concurrents Pour que plusieurs utilisateurs puissent avoir accs simultanment aux donnes d'une base, le SGBD doit offrir des mcanismes de gestion des conflits d'accs. Ceux-ci sont similaires ceux rencontrs dans les systmes d'exploitation (autorisation des accs multiples en consultation, verrouillage lors d'accs en modification,). Exemple Lors de la mise jour des donnes relatives un lve, le SGBD verrouille (interdire la modification) ses donnes pour empcher d'autres utilisateurs de les modifier. Cependant, ces donnes peuvent tre consultes simultanment par d'autres utilisateurs autoriss.

34

3.5. La confidentialit La mise en commun des donnes sous la forme d'une BD accrot le besoin en confidentialit. L'utilisation de sous-schmas fait partie des moyens qui permettent de l'assurer, vu qu'ils ne rendent visible qu'un sous-ensemble du schma et par voie de consquence, de la base. Mais, de faon plus gnrale, la confidentialit est assure par le biais de mots de passe et de privilges d'accs. Exemple Seul le directeur de l'tablissement ou son adjoint peut changer l'affectation d'un lve d'une classe une autre (droit restreint en mise jour). Tout membre de l'administration du lyce peut consulter les informations sur les lves (droit de consultation). 3.6. La scurit de fonctionnement Le SGBD doit offrir des mcanismes permettant de remettre rapidement la base de donnes dans un tat oprationnel en cas d'incident matriel ou logiciel qui en aurait altr la qualit. Ces mcanismes sont bass sur la journalisation (historique) des oprations ralises sur la base et leur rexcution automatique en cas de besoin. Exemple Sauvegarde de la base de donnes une fois par semaine. Restauration de la base en cas de panne. Remarques Un bon nombre de ces fonctions font appel ou ressemblent des fonctions assures par les systmes d'exploitation. Aussi, d'un point de vue structure interne, un SGBD peut utiliser des services du systme d'exploitation sur lequel il est oprationnel (le SGF pour la gestion physique des donnes, le systme d'entres-sorties, ...). Aussi, d'un point de vue stratgie de ralisation, la portabilit d'un SGBD dpend fortement du nombre de services du systme d'exploitation utiliss: plus l'intersection entre le SGBD et le systme d'exploitation est petite, plus l'effort de portage risque d'tre faible. Par ailleurs, tous les logiciels du march qui se qualifient de SGBD ne le sont acadmiquement pas au vu des fonctions attendues d'un SGBD que nous venons de passer en revue. Nous pensons particulirement certains systmes de gestion de donnes sur micro-ordinateurs qui gnralement n'offrent que des fonctions de description et de manipulation.

35

Utilisateur

Select From Where

Confidentialit

Dfinition de donnes

Manipulation

S G B D

Interfaces

Scurit

Pascal Cobol

........
Systme d'exploitation

Base de donnes

Base de donnes

Figure 2.2 : Architecture fonctionnelle d'un SGBD.

4. Les principaux SGBD Activit 1 En effectuant une recherche sur le rseau Internet, numrer les noms des SGBD les plus utiliss. Les principaux systmes de gestion de bases de donnes sont les suivants :

36

A propos de certains SGBD


Nom Oracle DB2 MySQL Postgres Access SQL Server Commentaires Il s'agit d'un environnement de dveloppement complet comportant notamment un noyau de SGBD relationnel puissant. C'est un SGBD relationnel dvelopp par IBM. C'est un SGBD relationnel appartenant la famille des logiciels libres. C'est un SGBD relationnel appartenant la famille des logiciels libres, offrant plus de fonctionnalits que MySQL. Commercialement prsent comme SGBD relationnel. Il appartient la suite MS Office. C'est un SGBD relationnel dvelopp par Microsoft pour succder Access pour de grosses applications.

5. Cycle de dveloppement des bases de donnes Les difficults mthodologiques rencontres lors de la mise en place des premires bases de donnes ont mis davantage en exergue les insuffisances des mthodes d'analyse classiques et ont conduit la recherche de nouvelles mthodes d'analyse et de conception. Suite au succs du rapport ANSI/SPARC, initialement provisoire, d'un groupe de travail de l'institut national amricain de normalisation, nombre de mthodes de conception de bases de donnes s'accordent distinguer au moins trois niveaux de reprsentation des donnes (conceptuel, externe, interne) et associer une forme de reprsentation, appele schma, chacun de ces niveaux (figure 2.3). Un niveau supplmentaire, le niveau logique, est prsent dans certaines mthodes de conception.
Niveau Schma externe externe Schma externe Schma externe

Niveau Conceptuel

SCHEMA CONCEPTUEL

Monde rel

Niveau interne

SCHMA INTERNE

BD SGBD

Figure 2.3 : Architecture ANSI/SPARC et les niveaux de reprsentation


37

Le schma conceptuel se veut tre une reprsentation abstraite d'une organisation (ou univers ou domaine d'application ou monde rel ) et de ses rgles de gestion et de fonctionnement. Il prend en compte la totalit du domaine de l'tude et non une de ses parties. En outre, il est abstrait dans le sens o il est exprim dans un formalisme indpendant de toute contrainte technologique et donc, de tout SGBD. Le niveau externe correspond la vue de tout ou une partie du schma conceptuel pour un groupe d'utilisateurs ou d'applications. A ce niveau, sont labores des descriptions partielles, appeles schmas externes, qui sont les visions qu'auront les futures applications sur la base de donnes. Le niveau logique n'tait pas mentionn dans le rapport d'ANSI/SPARC. Il a t introduit par des concepteurs de mthodes. Des facteurs quantitatifs, comme le volume des besoins en informations pour chaque application et la frquence d'exploitation de chaque application, y sont pris en compte pour d'une part, valuer le cot de la mise en place de la future base de donnes et d'autre part, pour choisir des chemins d'accs privilgis aux donnes. Au niveau physique interviennent les contraintes lies au matriel et aux logiciels utiliss. Le schma logique est adapt ces contraintes donnant ainsi naissance au schma physique. La structure des donnes est dcrite dans le LDD du SGBD et les traitements sont exprims en utilisant les diffrents outils de manipulation de donnes offerts par le SGBD. Pour achever la mise en place de la base, nous entrons alors dans des tapes connues du dveloppement de logiciel, savoir criture des programmes, chargement d'une base d'essai, test et mise au point des programmes, installation, exploitation et maintenance.

RETENONS

Un systme de gestion de base de donnes (SGBD) est un logiciel qui permet de : dcrire, modifier, interroger et administrer les donnes d'une base de donnes. Un SGBD permet la dfinition, la manipulation, l'intgrit, la confidentialit et la scurit

38

LECTURE
Le choix entre un tableur et un logiciel de gestion de base de donnes est parfois difficile. La comparaison suivante essaie de vous aider y voir plus clair.

Dfinition gnrale Tableur


Un tableur est un logiciel charg d'aider les humains construire des tableaux (en lignes et en colonnes), comportant souvent beaucoup de calculs.

SGBD
Un SGBD est un logiciel charg d'aider les humains contrler des fichiers volumineux et plus complexes que de simples tableaux.

Simplicit d'apprentissage Tableur


Un tableur suit une logique en deux dimensions (lignes et colonnes dans une feuille plane) qui permet de le matriser assez rapidement. Par ailleurs, les utilisateurs connaissent un tableur, ce qui facilite les changes d'information, ainsi que l'entraide. Pour tous les cas simples, un tableur est donc srement le meilleur choix.

SGBD
Un SGBD demande un apprentissage plus long qu'un tableur, mais il permet de rgler des problmes plus complexes et il offre souvent des solutions beaucoup plus satisfaisantes, notamment des applications mieux scurises et simples d'emploi.

Volume des donnes Tableur


Un tableur propose un nombre limit de cellules. On l'utilisera donc pour crer des tableaux de taille rduite .

SGBD
Un SGBD n'impose pas de contraintes sur le nombre d'enregistrements d'une table. Mme avec a un enregistrement ayant un nombre important de champs, on peut procder un dcoupage en de multiples tables lies. On va donc pouvoir travailler avec des fichiers beaucoup plus gros.

Mmoire de travail Tableur SGBD


Un SGBD travaille sur disque, sans se soucier de la RAM disponible, ce qui le rend presque insensible la taille des fichiers : la rapidit reste quasiment identique mme avec de grandes bases de donnes. Par ailleurs, plusieurs SGBD enregistrent sur disque les donnes saisies au fur et mesure, sans attendre que l'oprateur lance une sauvegarde. C'est un gage de scurit.

Un tableur travaille en mmoire vive, ce qui lui permet d'tre trs rapide, mais ce qui rduit encore ses possibilits : souvent, on n'arrivera pas mme remplir toutes ses lignes, faute de mmoire vive suffisante ! Par ailleurs, cette faon de travailler cre un risque pour les donnes qui n'ont pas encore t sauvegardes par l'utilisateur.

39

Organisation des informations Tableur


Un tableur laisse l'oprateur organiser sa petite cuisine de tableaux indpendants les uns des autres, o chaque classeur est un fichier sur disque. Il faut bien penser les copier tous pour effectuer une sauvegarde ou un transfert. Il est dlicat, et trs peu scuris, de lier les tableaux entre eux.

SGBD
Un SGBD regroupe toutes les tables dans un seul fichier sur disque, ce qui facilite les sauvegardes et les transferts une autre personne. Par ailleurs, un SGBD permet de lier les tables entre elles, (il incite mme fortement cette organisation), ce qui lui donne des atouts dterminants en terme de scurit.

Scurit des donnes Tableur


Tri : avec un tableur, il faut tre trs prudent : slectionner toutes les colonnes de la table (sans en oublier aucune !) ou ne slectionner qu'une cellule dans la colonne de tri sans quoi, le tri ne concerne que certaines cellules (et pas les autres !), ce qui dtruit compltement la table sans le moindre message d'alerte Si on ne s'en est pas aperu temps pour annuler, c'est l'horreur : toute la table est perdue ! Protection par mot de passe : un tableur permet de protger une feuille ou un classeur en bloc, c'est tout Pas de protection partielle, pour tel utilisateur, pour telles cellules, pour telle action

SGBD
Avec un SGBD, un tri ne peut JAMAIS abmer une table les donnes sont en scurit. Slectionnez tout ou partie de la colonne de tri et triez C'est tout, c'est simple et c'est sr Par ailleurs, la gestion des autorisations est beaucoup plus fine avec un SGBD : on peut donner des droits partiels (soit la lecture, soit l'ajout, soit la modification, soit la suppression) certains utilisateurs ( pas aux autres, en crant des profils) sur certains objets (et pas les autres) : telles tables, telles requtes, tels formulaires, tels tats

Contrles de cohrence Tableur


Un tableur offre peu d'outils limination des informations redondantes : un tableur n'offre aucun outil pour organiser les informations en tables lies par des relations : c'est l'oprateur de tout programmer (par des macros), s'il le juge utile, et ce n'est pas toujours possible ! Contrle des suppressions et mises jour : un tableur ne permettant pas d'organiser les infos en tables lies, aucun outil n'est prvu pour contrler la cohrence des informations : par exemple, rien n'interdira l'oprateur de supprimer un client alors qu'il existe par ailleurs de nombreuses factures relatives ce client ! Ces factures deviennent alors incohrentes puisqu'elles pointent sur un client fantme Contrles de saisie : un tableur offre quelques outils trs rudimentaires pour aider l'oprateur de saisie en prvoyant des messages et des contrles de vraisemblance. Enfin, la programmation des ractions du tableau lors des actions de l'oprateur est malaise (comme par exemple, lorsqu'un code client inexistant est saisi).

SGBD
Un SGBD permet presque tout Un SGBD, en organisant les informations en tables lies par des clefs externes, offre l'outil idal pour liminer toute redondance : chaque information n'est stocke qu'une fois, un seul endroit, et il suffit de la mettre jour cet endroit pour que l'info jour soit disponible partout dans la base. Ceci est essentiel. Par exemple, l'adresse d'un client n'est mmorise qu'une fois : dans la table Clients. Chaque fois qu'une facture est adresse ce client, on ne mmorise pas l'adresse du client dans la facture, on ne mmorise que le code du client, ce code permettant d'aller chercher l'adresse correspondante dans la table Clients. Si le client change d'adresse, on ne met jour l'information que sur une seule ligne d'une seule table. C'est tout ! Par ailleurs, un SGBD propose trs simplement de prendre en charge ce qu'il appelle l'intgrit rfrentielle , c'est - - dire le contrle de la cohrence de la BD : par exemple, il interdira la suppression d'une catgorie de produits si des produits correspondants existent. Un SGBD permet galement de prvoir la suppression en cascade des produits, si l'on prfre cette raction. Dans tous les cas, la BD reste cohrente : le SGBD s'en charge, rien programmer Un SGBD offre galement des contrles trs fins de la saisie des informations de base, directement dans les tables.

40

Intervenants du domaine BD Les intervenants du domaine peuvent tre classifis en fonction de leur type d'activit et du degr de spcialisation requis pour assurer cette activit. 1. Utilisateurs de bases de donnes Nous distinguons : l. les utilisateurs occasionnels, qui ont gnralement une technicit moyenne et qui accdent la base en utilisant le langage de manipulation de donnes, ll. les utilisateurs nafs , qui accdent et modifient la base par le biais de transactions prprogrammes (utilisation presse-bouton ), lll. les utilisateurs plus spcialiss , qui ont gnralement une technicit leve leur permettant de mettre en uvre les diffrents outils du SGBD. 2. Concepteurs et dveloppeurs l. Le concepteur de bases de donnes : il identifie et structure les types de donnes de la base ainsi que les divers traitements que ces donnes doivent subir. Ses comptences doivent s'tendre au-del du domaine strict des bases de donnes et inclure une ou des mthodes de conception de logiciels. ll. Les dveloppeurs d'applications : ils ont pour rle de dterminer les besoins utilisateurs, de spcifier et d'implanter les transactions et les programmes ncessaires leur satisfaction. Les comptences requises incluent la construction programmes (algorithmique et programmation) et la matrise des langages de manipulation de donnes. 3. Administrateur des bases et des systmes L'administrateur (personne ou quipe de personnes) est responsable d'une ou de plusieurs bases de donnes. Il a notamment pour rle la dlivrance des autorisations d'accs la base et la coordination des activits. Il est galement responsable des problmes de performances et de scurit de fonctionnement. De ce fait, sa comptence va au-del de celles des deux prcdentes catgories, dans la mesure o il doit avoir connaissance de la faon dont est ralis le SGBD qu'il doit administrer. 4. Ralisateur de logiciels de gestion et de dveloppement de bases de donnes l. Les dveloppeurs d'ou/ils : par outil, nous entendons des logiciels facilitant la conception, l'implmentation et l'utilisation de bases de donnes ou de SGBD existants. Ces outils ne font pas, proprement parler, partie du SGBD. ll. Les concepteurs et implmenteurs de SGBD : une trs grande technicit est requise pour cette classe d'acteurs. Leur connaissance doit comprendre, outre les techniques d'implantation des SGBD, des comptences en compilation et langages, en systmes d'exploitation, en rseaux, etc. Quelques balises dans le temps 1961 Apparition du systme IDS (Integrated Data Storage, General Electric). La terminologie utilise (record types et set types) sera la base du modle rseau dvelopp par la Conference On DAta SYstems and Languages Data Base Task Group (CODASYL DBTG).
41

1965-1970

1970 1971 1972

1975

1976 1975-1980 1980-...

Dveloppement de systmes de gestion de fichiers gnraliss. Dveloppement, par IBM, du modle hirarchique et du systme IMS (Information Management System). Apparition de IMS DB/DC (Data Base / DataCom) qui supporte le modle rseau au-dessus du modle hirarchique. Les annes 70 ont vu une rapide croissance du domaine qui a conduit les BD et les SGBD devenir une discipline universitaire et de recherche. Ces annes sont galement marques par l'apparition de nombreux produits commerciaux implantant partiellement les propositions du rapport CODASYL DBTG : IDS II (Honey Well), DMS1100 (UNIVAC), DMS II (Burroughs), etc. Apparition du modle relationnel de donne. Publication du rapport CODASYL DBTC. Premire confrence internationale organise par ACM SIGMOD (Association of Computing Machinery, Special Interest Group on Management Of Data). Premire confrence internationale VLDB (Very Large Data Base). Publication du rapport ANSI-SPARC. Apparition du modle individuel, dans le cadre de travaux ayant conduit la mthode Merise. Publication du modle Entit/Association. Dveloppement de systmes relationnels exprimentaux : SYSTEMR (IBM) et INGRES (Berkeley, University of California). Apparition et commercialisation de nombreux SGBD relationnels qui ont supplant les SGBD hirarchiques et rseaux. Ces annes ont galement vu la disponibilit des SGBD relationnels sur micro-ordinateurs et la ralisation de systmes (ou langages) de quatrime gnration avec des outils et des interfaces multiples.

Figure 2.4 : Quelques balises dans le temps


42

Objectifs :
Dcouvrir les lments structurels constituant une base de donnes relationnelle, Apprendre reprsenter la structure d'une base de donnes,

Plan :
1. Introduction 2. Notion de table 3. Notion de colonne 4. Notion de ligne 5. Notion de cl primaire 6. Liens entre tables 7. Notion de contrainte d'intgrit 8. Reprsentation de la structure d'une base de donnes 9. Exemple de base de donnes Retenons Exercices

45

1. Introduction Maintenant que vous avez appris qu'une base de donnes est une collection de donnes relatives un ou plusieurs domaines, vous allez dcouvrir dans ce chapitre comment cette base de donnes est structure. La faon selon laquelle une base de donnes est structure, ou organise, dpend du modle de donnes utilis. Nous avons vu dans le chapitre 1 qu'il y eu diffrents modles de donnes (hirarchique, rseau, relationnel et objet) et dont le plus utilis aujourd'hui est le modle relationnel. C'est ce modle que nous allons nous intresser dans le reste de ce manuel. Selon le modle relationnel, une base de donnes est compos essentiellement de : Tables Colonnes Lignes Cls primaires Cls trangres Contraintes d'intgrit Dans ce chapitre vous allez apprendre ces concepts, puis vous allez dcouvrir les deux formalismes utiliss pour reprsenter la structure d'une base de donnes. Une description de quelques exemples de bases de donnes est fournie la fin de ce chapitre. 2. Notion de table Si on veut dcrire une base de donnes sans trop rentrer dans les dtails, on peut dire qu'une base de donnes est compose d'un ensemble de tables. Autrement dit, les donnes d'une base de donnes sont rparties sur un ensemble de tables. Mais en fait qu'est ce qu'une table ? Dfinition Une table est un ensemble de donnes relatives un mme sujet (ou entit) et structures sous forme de tableau. Comme l'indique la figure suivante, une table est compose horizontalement d'un ensemble de lignes et verticalement d'un ensemble de colonnes : les colonnes dcrivent les proprits relatives au sujet reprsent par la table et les lignes correspondent aux occurrences du sujet.
Colonnes Lignes N 1 2 3 Nom Tounsi Benzarti Gabsi Prnom Salah Leila Ahmed Age 18 22 19

Figure 3.1 : Structure d'une table


46

Un autre terme utilis galement pour dsigner une table est celui de la relation . Son utilisation se justifie par le fait que dans une table (ou relation), on trouve des donnes qui sont en relation avec un sujet donn. Dans une base de donnes relationnelle, la table constitue la structure la plus importante car la manipulation des donnes se fait toujours travers les tables : cration, slection, modification et suppression. Exemple La table Article regroupe les donnes relatives aux articles commercialiss dans un magasin. Chaque article est dcrit par : Code article : C'est un code attribu de faon unique chaque article. Dsignation article : C'est le nom courant de l'article. Prix unitaire : C'est le prix de vente de l'article. Quantit stock : C'est la quantit actuellement disponible pour un article. A un moment donn, la table Article peut tre reprsente comme suit :
Code article V10 V20 B100 C60 Dsignation article Vis 50x3 Vis 20x2 Boulon 90x15 Clou 60x2 Prix unitaire 40 20 450 5 Quantit en stock 2500 1300 100 5000

Figure 3.2 : Exemple de table

Remarques Il ne faut pas confondre fichier et table. Les donnes d'un fichier sont stockes dans un mme et seul fichier alors que les donnes d'une table peuvent tre stockes sur un ou plusieurs fichiers, comme on peut regrouper dans un mme fichier les donnes de plusieurs tables. Il y a donc une indpendance entre la structure d'une table et son implmentation physique sur les supports de stockage (disque). C'est le systme de gestion de base de donnes (SGBD) qui assure cette indpendance. Il y a un lien trs troit entre la notion de table et la notion d'ensemble en mathmatiques. Une table est considre comme un ensemble de lignes. Certains oprateurs ensemblistes sont applicables tables telles que l'union, l'intersection et le produit cartsien. Lexique Franais Table Anglais Table Arabe Synonymes Relation / Table relationnelle

h```````L
47

3. Notion de colonne Nous avons vu dans la section prcdente qu'une table est compose verticalement d'un ensemble de colonnes. Nous allons dfinir de faon dtaille cette notion. Dfinition Dans une table, une colonne correspond une proprit lmentaire de l'objet dcrit par cette table. Une colonne est dcrite par : Un nom : C'est le nom de la colonne. Il est sous forme de code et il est gnralement soumis aux mmes rgles de nommage des variables dans les langages de programmation. Un type de donnes : C'est le type de donnes prises par cette colonne. Les types de donnes les plus connus sont : numrique, chane de caractres (ou texte), date et boolen. Certains systmes de gestion de base de donnes supportent des types de donnes multimdias telles que les images, le son et la vido. Une taille ventuelle : Pour certains types de donnes tel que le type numrique ou chanes de caractres, la taille indique la longueur maximale que peut prendre la colonne. Un indicateur de prsence obligatoire : indique si cette colonne doit tre toujours renseigne ou peut tre vide dans certains cas. Lorsque la colonne n'est pas renseigne, on dit qu'elle contient une valeur nulle. Il est noter que la valeur nulle est diffrente de zro pour les colonnes de type numrique et de la chane vide pour les chanes de caractres. Une valeur par dfaut ventuelle : Permet d'attribuer une valeur par dfaut lorsqu'aucune valeur n'a t attribue cette colonne. Une rgle ventuelle indiquant les valeurs autorises : Dans certains cas, une colonne peut tre soumise certaines rgles tel que : les valeurs attribues cette colonne doivent tre infrieures une certaine valeur, suprieures une certaine valeur ou bien comprises entre deux valeurs. Un autre terme utilis galement pour dsigner une colonne est celui d' attribut ou de champ . La qualit de la description d'une table dpend du choix des colonnes et de la prcision dans la description de ces colonnes. Nous verrons plus loin que le processus de description d'une base de donnes commence par l'identification des colonnes. Exemple Nous avons vu dans l'exemple prcdent que la table Article regroupe les quatre colonnes suivantes : code article, dsignation article, prix unitaire et quantit en stock. Nous allons dcrire de faon dtaille chacune de ces colonnes travers le tableau suivant. Il est noter que le nom de la colonne est un code et que nous avons rajout une colonne pour donner une description de chaque colonne.
48

Nom de la table : Article Description : Dtail des articles commercialiss Obligatoire Valeurs autorises >0 0 >= 0 Valeur par dfaut Taille 20 50 8,3 4

Nom colonne

Description

Type de donnes

Code_art Des_art PU Qte_stok

Code de l'article Dsignation de l'article Prix unitaire de l'article Quantit en stock

Chane de caractres Chane de caractres Numrique Numrique

Oui Oui Non Non

Figure 3.3 : Description d'une table

Remarque La taille 8, 3 pour le prix unitaire signifie que ce prix sera stock sur huit chiffres dont trois dcimales. Lexique Franais Colonne Anglais Column Arabe Synonymes Champ Proprit

O``````Y

4. Notion de ligne Une table est compose horizontalement d'un ensemble de lignes. Nous allons dfinir de faon dtaille cette notion. Dfinition Une ligne correspond une occurrence du sujet reprsent par la table. On dit aussi qu'elle correspond un objet du monde rel. Une table est initialement vide lorsqu'elle est cre, c'est--dire qu'elle ne contient aucune ligne. L'exploitation d'une table consiste y insrer de nouvelles lignes, modifier certaines lignes ou consulter certaines lignes en fonction de critres bien dtermins. Une ligne peut tre supprime lorsqu'on estime qu'on n'en a plus besoin. Le nombre de lignes d'une table peut tre limit quelques dizaines comme il peut atteindre des milliers, voire des millions de lignes. Un autre terme utilis galement pour dsigner une ligne est celui de l' enregistrement ou de n-uplet .
49

Exemple La reprsentation de la table Article donne dans la figure 3.2 contient quatre lignes correspondant chacune un article commercialis par le magasin. Cette reprsentation est valable un instant donn. La figure suivante donne une reprsentation de la mme table effectue quelques mois aprs.
Code article V10 V20 B100 D120 Dsignation article Vis 50x3 Vis 20x2 Boulon 90x15 Disque meule Prix unitaire 44 22 495 3500 Quantit en stock 220 1300 300 30

Figure 3.4 : Lignes de la table Article

Remarque Nous constatons les diffrences suivantes entre la reprsentation de la figure 3.2 et celle de le figure 3.4 : Les prix ont augment de 10%. Les quantits en stock ont chang. L'article Clou 60 x 2 n'est plus commercialis. Un nouvel article a t rajout : disque meule. Lexique Franais Ligne Anglais Record (ou row) Arabe Synonymes Enregistrement / n-uplet

````````S

5. Notion de cl primaire Activit 1) Dans chacun des tableaux suivants, cocher chaque case permettant d'identifier d'une manire unique l'entit :
Nom Citoyen Prnom Nom et Prnom Age N CIN N Scurit Sociale Adresse

Marque Modle Voiture

Marque Lieu de N Age Immatriculation N chssis et modle fabrication

50

Nom Etudiant

Prnom

Nom et Prnom

Age

N CIN

N Carte Etudiant

Adresse

Nom Elve

Prnom

Nom et Prnom

Age

N N Tlphone Inscription

Adresse

Ticket de transport

Prix

Ville de dpart

Ville d'arrive

Date

N Ticket

Socit de transport

Validit

2) Dvelopper l'importance du champ qui dfinit d'une manire unique l'lment 3) Proposer un exemple d'utilisation d'un tel sur l'un des exemples prcdents. Comme dans n'importe quelle organisation de donnes, on a toujours besoin d'identifier de faon unique chaque occurrence. Dans un fichier papier, on attribue gnralement un code ou un numro pour identifier chaque occurrence. Dans un fichier informatique, on choisit galement un ou plusieurs champs pour les utiliser comme identifiant. Dans une base de donnes, on a galement besoin d'identifier de faon unique chaque ligne d'une table. Ceci se fait l'aide de la notion de cl primaire. Dfinition La cl primaire d'une table est une colonne ou un groupe de colonnes permettant d'identifier de faon unique chaque ligne de la table. Autrement dit, la connaissance de la valeur de la cl primaire, permet de connatre sans aucune ambigut les valeurs des autres colonnes de la table. Exemple Dans la table Article, la colonne Code article peut tre utilise comme cl primaire, car la codification des articles est faite de telle sorte qu'on ne peut pas avoir deux articles qui ont le mme code. Connaissant le code article, on peut dterminer de faon unique sa dsignation, son prix unitaire et sa quantit en stock. Remarques Chaque table doit comporter une et une seule cl primaire. Dans certains cas, dans une mme table on peut avoir deux ou plusieurs colonnes qui peuvent jouer le rle de cl primaires. Dans ce cas on doit choisir une parmi toutes ces colonnes. Par exemple, dans la table article si on suppose que la dsignation est unique pour tous les articles, nous pouvons utiliser comme cl primaire, indiffremment, le code ou la dsignation de l'article.
51

Les colonnes qui constituent la cl primaire sont obligatoires. Pour distinguer une colonne qui fait partie de la cl primaire des autres colonnes, on la souligne, ou on la met en gras. Lexique Franais Cl primaire Anglais Primary key Arabe Synonymes identifiant

`````SSCG ````````e

6. Liens entre tables Une base de donnes est la reprsentation d'un ou plusieurs domaines compos chacun d'un ensemble de sujets (ou entit). Les diffrents sujets de chaque domaine sont gnralement inter-relis par des liens (ou associations). Pour que la base de donnes constitue une reprsentation fidle du ou des domaines concerns, les liens entre les sujets du monde rel doivent se retrouver dans la base de donnes. Si nous avons une table reprsentant les lves et une autre table reprsentant les lyces, la phrase suivante Un lve est inscrit dans un lyce correspond un lien (ou association) entre ces deux tables. Dfinition Un lien entre deux table A et B est reprsent par l'ajout dans la table B d'une nouvelle colonne correspondant la cl primaire de la table A. Cette nouvelle colonne est appele cl trangre. Un lien entre deux tables est orient : il part de la table contenant la cl trangre et arrive vers la table contenant la cl primaire. La table cible (celle contenant la cl primaire) s'appelle table mre et la table source (celle contenant la cl trangre) s'appelle table fille. On dit aussi que la table fille se rfre la table mre.
Table mre Cl primaire

Table fille Cl trangre

Figure 3.5 : Lien entre tables


52

Exemple Supposons qu'en plus de la table Article, nous avons une table Commande qui dcrit les commandes reues par le magasin. Dans cet exemple, nous admettons l'hypothse qu'une commande ne concerne qu'un seul article. La figure suivante reprsente ces deux tables avec le lien qui existe entre elles.
Code article Dsignation article Vis 50x3 Vis 20x2 Boulon 90x15 Clou 60x2 Prix unitaire 40 20 450 5 Quantit en stock 2500 1300 100 5000

Articles Commandes

V10 V20 B100 C60

N Code Date Commande Commande article# 100 101 102 01/03/2006 15/04/2006 17/04/2006 V10 B100 V10

Quantit commande 500 30 120

Figure 3.6 : Lien entre Commandes et Articles

Remarques Une table peut comporter zro, une ou plusieurs cls trangres. Exemple : la table LOCATION dcrivant la location des voitures par des clients comporte deux cls trangres : le numro d'immatriculation pour dsigner les voitures et un code client pour dsigner les clients. Une cl primaire peut tre rfrence par zro, une ou plusieurs cls trangres. Exemple : le code client (cl primaire d'une table CLIENT) peut tre rfrenc par la table LOCATION et la table FACTURE. Il est fortement recommand que le nom de la colonne qui est une cl trangre soit identique au nom de la colonne cl primaire laquelle elle se rfre. Pour distinguer une colonne qui fait partie d'une cl trangre des autres colonnes, on la double souligne ou bien on la fait suivre d'une dise (#). Lexique
Franais Anglais Arabe Synonymes

Cl trangre

Foreign key

``````LQN `````e

Rfrence, contrainte d'intgrit rfrentielle

53

7. Notion de contrainte d'intgrit Assurer la cohrence et l'intgrit des donnes est l'une des principales fonctions du Systme de Gestion de Base de Donnes (SGBD). Elle consiste garantir que les donnes stockes dans une base de donnes sont cohrentes entre elles, c'est--dire qu'elles respectent toutes les rgles exiges par le concepteur de la base. La cohrence et l'intgrit des donnes sont assures l'aide d'un ensemble de rgles dites contraintes d'intgrit. Dfinition Une contrainte d'intgrit est une rgle applique une colonne ou une table et qui doit tre toujours vrifie. Les principaux types de contraintes d'intgrit sont : Les contraintes de domaines : Ce sont des contraintes appliques des colonnes. Elles permettent de fixer le caractre obligatoire ou pas d'une colonne et les rgles de validit des valeurs qui peuvent tre prises par cette colonne. Exemple La note obtenue dans une matire doit tre comprise entre zro et vingt. La quantit commande dans la table Commande est obligatoire et doit tre positive et suprieure zro. Les contraintes d'intgrit de tables : Elles permettent d'assurer que chaque table a une cl primaire. Exemple La table lve doit avoir une cl primaire, le numro de carte d'identit par exemple. Les contraintes d'intgrit rfrentielles : Elles permettent de s'assurer que les valeurs introduites dans une colonne figurent dans une autre colonne en tant que cl primaire. Elle est reprsente sous forme de lien entre tables (voir Figure 3.6.). Exemple On n'accepte pas que le Code article saisi dans une Commande n'existe pas dans la colonne Code article de la table Article. Lexique
Franais Anglais Arabe Synonymes

Contrainte d'intgrit

Integrity constraint
54

`````````````````b

8. Reprsentation de la structure d'une base de donnes Aprs avoir dcrit les diffrentes structures qui constituent une base de donnes, il nous reste maintenant donner un formalisme permettant de reprsenter de faon homogne tous ces concepts. Cette reprsentation est appele modle ou schma de la base de donnes. La structure d'une base de donnes peut tre reprsente selon deux formalismes : Reprsentation textuelle Reprsentation graphique Les deux formalismes sont quivalents. 8.1. Reprsentation textuelle La reprsentation textuelle consiste dcrire les tables, les colonnes et les liens entre les tables en utilisant du texte. Soient les deux tables A et B composes des attributs a1, a2, a3 et a4 pour la premire et b1, b2 et b3 pour la deuxime et dont les cls primaires respectives sont a1 et b1. En supposant que B se rfre A, la reprsentation textuelle de ces deux tables se fait de la faon suivante : A (a1, a2, a3, a4) B (b1, b2, b3, a1#) Exemple Les deux tables suivantes reprsentent les tablissements et les lves qui y sont inscrits. Etablissement (CodeEtab, NomEtab, AdresseEtab, TelEtab) Eleve (NumElev, NomElev, PrenomElev, DnaissElev, CodeEtab #) 8.2. Reprsentation graphique La reprsentation graphique consiste dcrire les tables, les colonnes et les liens entre les tables en utilisant des symboles graphiques. Les deux tables dcrites ci-dessus seront reprsentes comme suit :

Figure 3.7 : Reprsentation graphique des tables

Les cls primaires sont reprsentes en gras et les cls trangres l'aide d'un lien entre les deux tables : le symbole () est plac du cte de la cl trangre et le symbole (1) du ct de la cl primaire rfrence. La relation entre les deux tables est dite de type un plusieurs car une ligne de A peut correspondre plusieurs ligne de B alors qu' une ligne de B ne peut correspondre qu'une seule ligne de A.
55

Exemple Les deux tables, de l'exemple prcdent, reprsentant les tablissements et les lves peuvent tre reprsentes sous la forme graphique suivante :

Remarques Dans la reprsentation textuelle, lorsque la cl trangre n'a pas le mme nom que la cl primaire laquelle elle se rfre, le lien entre les tables n'est pas visible. Les deux reprsentations ne donnent pas une description dtaille des colonnes (type de donnes, caractre obligatoire, ). Une description dtaille des tables et des colonnes doit accompagner la description textuelle ou graphique. 9. Exemple de base de donnes Considrons l'activit d'un magasin qui commercialise des articles de quincaillerie. Les principaux sujets qu'on peut identifier dans cette activit sont : Les articles commercialiss, Les clients, Les commandes faites par les clients. Nous appellerons la base de donnes reprsentant cette activit Commercial. Concernant les articles, la table Article donne dans les sections prcdentes peut tre considre comme suffisante. Pour les clients, nous allons rajouter une nouvelle table contenant les colonnes suivantes : code client, nom client, adresse client et numro de tlphone. En ce qui concerne les commandes, la table Commande donne dans les sections prcdentes se base sur une hypothse trs peu vraisemblable qui suppose qu'une commande est relative un seul article. Dans la ralit, une commande peut comporter

56

plusieurs articles. Donc, le sujet commande sera reprsent par les deux tables suivantes : Une table Commande qui contient le numro de la commande, la date de la commande et le code du client correspondant. Une table Dtail commande relative aux lignes de la commande et qui contient les colonnes suivantes : Numro de la ligne, numro de la commande, code article et quantit commande. Pour reprsenter ces tables, nous allons utiliser d'abord la reprsentation textuelle puis la reprsentation graphique. Reprsentation graphique

Figure 3.8 : Structure de la base Commercial

Reprsentation textuelle : Article (Code_art, des_art, PU, qte_stock) Client (Code_cli, nom_cli, adr_cli, tel_cli) Commande (Num_comm, date_comm, code_cli#) Detail_commande (num_comm#, Num_ligne, code_art#, qte_comm) Remarque : num_comm est une cl trangre, elle fait parti de la cl primaire elle est alors souligne et suivie de #.

57

Activits diriges : Activit 3.1

Objectif : Dduire la structure d'une base de donnes partir d'un texte. Enonc : On souhaite structurer dans une base de donnes, les donnes relatives aux contacts se trouvant actuellement dans un rpertoire tlphonique papier. Pour chaque contact, on dispose des informations suivantes : nom, prnom, adresse postale et adresse mail. Pour chaque contact on peut disposer d'un ou plusieurs numros de tlphones. Pour chaque numro on indique son type (P : portable, D : domicile et B : bureau). Sachant que deux contacts peuvent avoir le mme nom et prnom, nous proposons de rajouter un code permettent d'identifier chaque contact. Question : Reprsenter la structure de cette base de donnes sous forme textuelle puis sous forme graphique
Activit 3.2

Objectif : Comprendre la structure d'une base de donnes existante. Avoir un premier contact avec Microsoft Access. Produire une documentation d'une base de donnes. Enonc : On souhaite documenter la base de donnes existante fournie avec le SGBD mis votre disposition et intitule Comptoir . Cette base est stocke dans le fichier comptoir.mdb . Questions : 1 - Aprs avoir ouvert la base de donnes Comptoir , tablir une liste des tables sous forme d'un tableau donnant pour chaque table son nom et une courte description. 2 - Pour chaque table, tablir une fiche donnant la liste de ses colonnes. Utiliser la structure du tableau de la figure 2.3. 3 - Identifier les liens entre les tables. Dcrire ces liens l'aide d'un tableau ayant la structure suivante :
Table mre Table fille Cl primaire Cl trangre

58

RETENONS

Une base de donnes est compose d'un ensemble de tables. Chaque table est une structure tabulaire compose verticalement d'un ensemble de colonnes et horizontalement d'un ensemble de lignes. Chaque ligne est identifie par les valeurs des colonnes qui constituent la cl Certaines tables de la base de donnes sont inter-relies par des liens permettant d'effectuer un rapprochement de leurs donnes La reprsentation de la structure d'une base de donnes peut tre effectue selon deux formalismes : une reprsentation textuelle et une reprsentation graphique

59

EXERCICES
Exercice 1 Mettre dans la case correspondante la lettre V si la rponse est correcte et la lettre F sinon. 1 - Lorsque j'utilise une base de donnes, je manipule (je cr, je modifie) :. Des tables Des cellules Des feuilles de calcul 2 - Une ligne correspond : Un programme ncessaire pour utiliser la base L'ensemble des caractristiques d'un lment de la table Un annuaire de recherche 3 - Une cl primaire sert : Enregistrer une base de donnes Identifier les donnes pour pouvoir les retrouver L'autre mot pour dsigner un programme de base de donnes 4 - Lorsque je veux ajouter des donnes ma base de donnes, je le fais dans : une question un tat un thsaurus une table 5 - Une colonne correspond : un index une catgorie d'informations, une caractristique une zone sur laquelle je peux cliquer pour me dplacer dans la base de donnes

60

6 - Une table correspond : Un ensemble d'informations tries concernant seulement des individus Un ensemble d'informations recueillies sur un site L'ensemble des informations concernant une personne, une entreprise ou un objet (ex. des produits) 7 - Chaque colonne a un format qui peut tre de type : Texte Code Exercice 2 Soit la table suivante : Employ (Matricule, Nom, Adresse, CP, Ville, Date Embauche) Complter le tableau suivant afin de donner une description dtaille des colonnes de cette table.
Nom de la table : ........................................................................................................................ Description : ................................................................................................................................. Obligatoire Valeurs autorises Valeur par dfaut Taille

Date Age

Nom colonne

Description

Type de donnes

.................. ..................................... ..................................... ........ ........ .................. .................. .................. ..................................... ..................................... ........ ........ .................. .................. .................. ..................................... ..................................... ........ ........ .................. .................. .................. ..................................... ..................................... ........ ........ .................. .................. .................. ..................................... ..................................... ........ ........ .................. .................. .................. ..................................... ..................................... ........ ........ .................. ..................

61

Exercice 3 Soit la table suivante :


NomMed Ben Saleh Amari Kabi PrnomMed Amine Lotfi Henda CodeMed M10 M15 M27 NomHpital Sahloul Charles Nicolle Fatouma Bourguiba AdrHpital Sousse Tunis Monastir TelHpital 73 425001 71 236147 73 260871

Donner une description dtaille des colonnes de cette table. Exercice 4 On considre la table suivante dcrivant des lves : R (Nom, prnom, date_naissance, classe, numro) On fait les hypothses suivantes : Dans une classe, un numro est attribu chaque lve. Dans une classe, les numros sont attribus par ordre alphabtique des noms des lves. Quelle est la cl primaire de cette table ? Exercice 5 Traduire cette reprsentation graphique en reprsentation textuelle.

Exercice 6 Un commerant veut organiser sa gestion des commandes auprs de ses fournisseurs. Ceux-ci sont dfinis par un numro (fno), un nom et une adresse (adr). Les produits ont un numro (pno), un nom, un prix, un poids et une couleur. 1 - Dgager les tables correspondantes. 2 - Choisir la cl primaire pour chaque table. 3 - Traduire la reprsentation textuelle en reprsentation graphique. Exercice 7 Une compagnie arienne gre ses donnes comme suit : Un avion a un numro d'immatriculation et un type. Chaque type d'avion est dcrit par son nom, son poids, sa capacit et son rayon d'action.
62

Un technicien de la compagnie a un nom, un matricule, une adresse, un numro de tlphone, un salaire et est expert sur un ou plusieurs type d'avion. Un pilote est dcrit par les mmes attributs qu'un technicien. De plus il doit passer un examen mdical annuel. Chaque avion doit galement passer un certain nombre de tests de bon fonctionnement ; chaque test a un numro qui l'identifie, un nom et une valeur minimale (seuil atteindre). 1 - Dgager les tables correspondantes. 2 - Choisir la cl primaire pour chaque table. 3 - Traduire la reprsentation textuelle en reprsentation graphique. Exercice 8 On souhaite crer une base de donnes concernant une entreprise. Une premire tude a mis en vidence trois relations. Pour chacune des relations, la cl est souligne. EMPLOYE (NumEmp, Nom, Prnom, Adresse, Tlphone, Qualification) SERVICE (NomService, Responsable, Tlphone) PROJET (NomProjet, DateDeb, DateFin, NumEmp) En considrant les possibilits offertes par ce schma, rpondre aux questions suivantes en justifiant vos rponses par rapport la smantique intuitive des relations : 1 - Un employ peut il avoir plusieurs qualifications ? 2 - Un employ peut il faire plusieurs projets en mme temps ? 3 - Une personne peut elle tre responsable de plusieurs services ? 4 - Un service peut il avoir plusieurs responsables ?

63

Objectifs :
Dcouvrir une dmarche pour dterminer la structure d'une base de donnes, Apprendre traduire un nonc en structures relationnelles, Appliquer la dmarche propose quelques cas concrets.

Plan :
1. Introduction 2. Dlimiter les domaines 3. Dterminer les colonnes 4. Dterminer les tables 5. Affecter les colonnes aux tables 6. Dterminer les cls primaires 7. Dterminer les relations entre tables 8. Analyser et affiner la structure de la base de donnes Retenons Exercices

1. Introduction Dans la vie courante, l'exploitation d'une base de donnes se fait gnralement sur une base de donnes existante. Dans certains cas, on est amen crer sa propre base de donnes ; c'est ce que nous allons voir dans le chapitre suivant. Comme nous avons dj dfini une base de donnes comme tant un ensemble structur de donnes relatives un ou plusieurs domaines, la cration de la base correspondant ce(s) domaine(s) doit tre prcde par un travail de rflexion consistant trouver la meilleure faon selon laquelle les diffrents sujets du monde rel doivent tre traduits en structures relationnelles, c'est--dire en tables, colonnes, cls primaires et cls trangres. Ce travail de rflexion s'appelle conception de la base de donnes.

Domaine(s) Ou monde rel

Processeur de conception

Base de donnes

Figure 4.1 : Traduction de domaine(s) en base de donnes.

La conception d'une base de donnes se fait selon un processus relativement complexe. Nous proposons ici un processus simplifi, permettant de donner une dmarche de conception d'une base de donnes, sans trop rentrer dans les dtails susmentionns. C'est pour cette raison que nous n'allons pas utiliser le terme conception , mais plutt dterminer la structure d'une base de donnes. La dmarche pour dterminer la structure d'une base de donnes est compose des tapes suivantes : 1) 2) 3) 4) 5) 6) 7) Dlimiter le(s) domaine(s) concerns Dterminer les colonnes Dterminer les tables Affecter les colonnes aux tables Dterminer les cls primaires Dterminer les liens entre tables Analyser et affiner la structure de la base de donnes

Nous allons dtailler chacune de ces tapes dans les sections suivantes.
66

2. Dlimiter le(s) domaine(s) Cette premire tape consiste identifier le ou les domaines qui constituent l'objet de la base de donnes. Est-ce qu'il s'agit par exemple de grer les donnes d'une bibliothque publique, d'une compagnie arienne, d'un lyce, d'un tournoi sportif, etc. ? Un autre terme utilis pour dsigner les diffrents domaines constituant l'objet de la base de donnes est celui de monde rel . Une fois les domaines identifis, on doit collecter les informations qui feront l'objet de la base de donnes. Cette collecte peut tre faite travers des entretiens avec les personnes concernes et/ou un recueil des documents dcrivant l'existant (fiches, dossiers, fichiers, feuilles de calcul, ). 3. Dterminer les colonnes Il s'agit de dduire partir de la collecte d'informations la liste des colonnes qui constitueront la base de donnes. Chaque colonne est un fait qui se rapporte un sujet du monde rel. Par exemple, pour le sujet livre on peut avoir les faits suivants : code, titre, diteur et date d'acquisition. Une colonne sera donc associe chacun de ces faits. A ce niveau, on doit faire abstraction de la rpartition des colonnes en tables. Il s'agit uniquement d'identifier les informations lmentaires. Lors de la dtermination de la liste des colonnes partir des faits, les rgles suivantes doivent tre respectes : Une colonne doit reprsenter une information sous sa forme lmentaire, c'est--dire que pour la manipuler, on ne doit pas tre oblig de la dcomposer. Exemple Le nom d'un lve doit tre reprsent par deux colonnes (nom et prnom). Une colonne ne doit pas correspondre une information calcule ou drive partir d'autres colonnes. Exemple Si nous avons une colonne note/20 et une colonne coefficient , on ne doit pas rajouter une colonne note finale qui est le rsultat de la multiplication de la note/20 par le coefficient. Des colonnes similaires ne doivent pas tre prsentes. Il faut garder une seule colonne. Exemple Si nous avons trois colonnes note1 , note2 et note3 , on doit les remplacer par une seule colonne note . Ne pas omettre de colonnes. L'oubli d'une colonne entrane un manque d'information dans la base de donnes.
67

Exemple Si nous omettons la colonne cfficient pour une matire, il sera impossible de calculer la note finale. Pour laborer la liste de colonnes, on peut utiliser un tableau ayant la structure suivante :
Liste des colonnes Obligatoire Valeurs autorises Valeur par dfaut

Nom colonne

Description

Type de donnes

Taille

Sujet

Figure 4.2 : Tableau de description de colonnes.

Les colonnes de ce tableau ont la mme signification que celles du tableau de la figure 3.3 du chapitre 3. La dernire colonne sujet a t rajoute pour permettre d'indiquer quel est le sujet auquel est rattache la colonne. Ce tableau sera rempli au fur et mesure que l'on exploite les documents collects lors de la premire tape. On doit s'assurer que pour chaque colonne les rgles cites ci-dessus sont toutes vrifies. 4. Dterminer les tables Il s'agit de dterminer la liste des tables qui vont constituer la base de donnes. Chaque table correspond un sujet de domaine tudi. Cette tape est relativement facile car la liste des tables sera dduite partir du tableau de colonnes. La dernire colonne de ce tableau contient le sujet auquel est associe la colonne. En rcuprant la liste des sujets nous obtenons la liste des tables. Cette liste peut tre reprsente aussi sous forme du tableau suivant :
Liste des Tables Nom table Description Sujet

Figure 4.3 : Tableau de description de tables


68

5. Affecter les colonnes aux tables C'est l'tape la plus importante dans le processus de dtermination de la structure d'une base de donnes car c'est de l'attribution d'une colonne la bonne table que dpend la qualit d'une base de donnes. Affecter une colonne une table autre que celle laquelle elle devrait tre affecte gnre des anomalies lors de la manipulation des donnes. Il s'agit donc de reprendre la liste des colonnes et de dcider pour chaque colonne quelle table on doit l'affecter. Ce tableau contient dj une colonne sujet qui correspond aux tables auxquelles les colonnes doivent tre affectes. Pour s'assurer qu'une colonne est affecte la bonne table, on doit tenir compte des rgles suivantes : Une colonne doit tre affecte une et une seule table. Une seule exception chappe cette rgle, c'est celle relative aux cls trangres. Comme une cl trangre se rfre une colonne qui est cl primaire dans une autre table, la mme colonne existera alors dans les deux tables. Si la prsence d'une colonne, qui n'est pas cl trangre, dans une table entrane que plusieurs lignes de cette dernire vont contenir la mme valeur pour cette colonne, c'est que cette colonne se trouve dans la mauvaise table. Il convient donc de l'affecter une autre table dans laquelle cette anomalie ne se reproduira pas. Exemple Si nous plaons la colonne adresse du client dans la table Commande, l'adresse d'un client donn va se rpter dans toutes les lignes correspondant aux commandes de ce client. S'il a pass 100 commandes, son adresse sera rpte 100 fois. La prsence d'une telle anomalie dans une base de donnes entrane les inconvnients suivants : Une perte d'espace car la mme information sera stocke plusieurs fois. Un risque d'incohrence entre les donnes engendr par la modification de cette information dans une ligne et pas dans les autres. Par exemple, modifier l'adresse d'un client dans la ligne correspondant sa premire commande et ne pas le faire dans les autres lignes fait que le mme client a plusieurs adresses alors que dans la ralit il n'en a qu'une seule. Dgradation des temps de rponses : l'augmentation du volume de donnes d la redondance fait augmenter le temps de rponse lors de la manipulation des donnes L'adresse du client doit tre donc affecte la table Client. 6. Dterminer les cls primaires Chaque table est maintenant dcrite par un ensemble de colonnes. On doit alors dterminer parmi ces colonnes celle(s) qui permettent d'identifier les autres colonnes de faon unique, c'est--dire les colonnes dont la valeur est unique dans chaque ligne. Ces colonnes constitueront alors la cl primaire de la table Dans la plupart des cas, une cl primaire est compose d'une seule colonne, mais dans certains cas, elle peut tre compose de deux ou plusieurs colonnes. On parle alors de cl compose.
69

Exemples La cl primaire de la table client est compose du code client . Dans la table Dtail commande , la cl primaire sera compose de la colonne num_ligne si nous supposons que le numro de la ligne est diffrent pour toutes les lignes de commandes. Par contre, si nous supposons que deux commandes peuvent partager un mme numro de ligne (toutes les commandes commencent par la ligne numro 1, puis numro 2, etc.), alors la cl primaire sera compose des deux colonnes num_ligne et num_comm . C'est une cl primaire compose. Remarque Dans le cas o aucune des colonnes de la table ne peut tre utilise comme une cl primaire, nous devons rajouter une nouvelle colonne et la prendre comma cl primaire. 7. Dterminer les liens entre tables Maintenant que les tables sont compltement dcrites avec leurs colonnes et leurs cls primaires, il reste tablir les liens ventuels entre ces tables. La dtermination des liens entre les tables peut tre effectue de deux faons : Il existe dans une table B une colonne b qui correspond une colonne a dans une autre table A et qui est une cl primaire dans cette table. Ceci veut dire que la colonne b est une cl trangre dans la table B. Un lien doit tre donc tabli entre les tables A et B pour relier les colonnes a et b. D'aprs la description dont nous disposons sur les sujets reprsents par deux tables, nous avons pu dduire qu'il existe un lien entre les deux sujets. Pour tablir ce lien entre les deux tables, nous devons d'abord identifier la table mre et la table fille . Ensuite, on doit rajouter la table fille une colonne qui correspond la cl primaire de la table mre . Cette colonne rajoute sera une cl trangre. Exemple Supposons les deux tables Client et Commande et que dans la table Commande nous n'avons pas la colonne code_client . D'autre part, dans la description de ces deux sujets, nous avons une phrase qui dit Une commande est relative un client . Cette phrase veut dire qu'il doit y avoir un lien entre les deux tables Commande et Client. La table mre sera la table Client et la table file sera la table Commande car un client peut avoir plusieurs commandes mais une commande est relative un et un seul client. On doit donc rajouter dans la table Commande une nouvelle colonne Code_client et qui sera une cl trangre. 8. Analyser et affiner la structure de la base de donnes Lorsqu'on a identifi la structure de toutes les tables et tabli les liens entre ces tables, il convient de faire une reprsentation graphique de la base de donnes afin de l'analyser et de dtecter les anomalies ventuelles. Il pourrait s'agir d'un oubli de colonnes ou de liens entre tables.
70

Lorsque les corrections ventuelles auront t apportes la structure de la base, nous devons utiliser le SGBD pour crer les diffrentes tables. Ensuite, on doit insrer suffisamment de lignes dans chaque table pour tester la validit de sa structure. Chaque anomalie constate, sera corrige en modifiant la structure (dplacer une colonne d'une table une autre, crer une nouvelle table, clater une colonne en plusieurs colonnes, etc.). Il s'agit en fait de s'assurer que toutes les rgles vues dans les sections prcdentes sont vrifies. Certains SGBD disposent d'outils d'analyse permettant d'aider identifier les anomalies de conception. Exemple Dans Microsoft Access, il existe un outil accessible partir de Outils Analyse Table permettant d'analyser la structure des tables d'une base de donnes. RETENONS La cration d'une base de donnes doit tre prcde par un travail de rflexion consistant dduire la structuration la plus efficace de la base de donnes en tables Pour dterminer la structure d'une base de donnes, on doit d'abord dlimiter le monde rel que doit dcrire la base de donnes. Ensuite, on doit identifier la liste des colonnes et la liste des tables puis affecter les colonnes aux tables. Chaque table doit avoir sa propre cl primaire. Les liens entre les tables doivent tre ensuite Cette structuration doit respecter un certain nombre de rgles, faute de quoi l'exploitation de la base de donnes conduira des anomalies et un comportement anormal

71

APPLICATIONS
Application 1

Objectif : Dduire la structure d'une base de donnes partir d'un nonc dcrivant un domaine donn Enonc : Soit reprsenter l'activit d'une bibliothque disposant d'un ensemble de livres qu'elle met la disposition de ses abonns. Chaque livre de la bibliothque est dcrit l'aide d'un code unique, un titre, un auteur, un diteur et une date de parution. L'enregistrement d'un nouvel abonn consiste renseigner son numro qui servira comme identifiant, son nom et prnom, son adresse et son numro de tlphone. Chaque abonn peut emprunter plusieurs livres. A chaque emprunt on enregistre le code du livre, le numro de l'abonn et la date d'emprunt. Au retour du livre on enregistre la date de retour. Questions : 1 - En utilisant un tableau similaire celui de la figure 4.2, tablir la liste des colonnes. 2 - En utilisant un tableau similaire celui de la figure 4.3, tablir la liste des tables. 3 - Affecter les colonnes aux tables et en donner une description textuelle. 4 - Prciser les cls primaires des tables. 5 - Identifier les liens entre les tables en utilisant le tableau de l'activit 2 du chapitre prcdent. 6 - Reprsenter la structure de cette base de donnes sous forme graphique. Corrig : 1- Liste des colonnes : La liste des colonnes est dduite partir de l'nonc et ce en mettant en valeur les proprits.
Soit reprsenter l'activit d'une bibliothque disposant d'un ensemble de livres qu'elle met la disposition de ses abonns. Chaque existe en un seul exemplaire. Chaque livre de la bibliothque est dcrit l'aide d'un code unique, un titre, un auteur, un diteur et une date de parution. L'enregistrement d'un nouvel abonn consiste renseigner son numro qui servira comme identifiant, son nom et prnom, son adresse et son numro de tlphone. Chaque abonn peut emprunter plusieurs livres. A chaque emprunt on enregistre le code du livre, le numro de l'abonn et la date d'emprunt. Au retour du livre on enregistre la date de retour.

72

Ces proprits seront regroupes dans le tableau qui suit. Dans la premire colonne, il est recommand d'utiliser les mmes rgles de nommage qu'en programmation (viter les caractres accentus, rduire la taille des noms des colonnes, etc.).
Liste des colonnes Obligatoir e Valeur par dfaut
Valeurs autorises

Nom colonne

Description

Type de donnes

Taille

Sujet

Code_livre Titre Auteur Editeur Date_parution Num_abonne Nom_abonne Prenom_abonne Adresse Tel Code_liv_emp Num_ab_emp Date_emprunt Date_retour

Code unique du livre Titre du livre Noms des auteurs Nom de la maison d'dition Date de sortie du livre Numro de l'abonn Nom de famille de l'abonn Prnom de l'abonn Adresse de l'abonn N de tlphone de l'abonn Code du livre emprunt Numro de l'abonn empruntant un livre Date de l'emprunt du livre Date de retour du livre

Caractre Caractre Caractre Caractre Date Numrique Caractre Caractre Caractre Caractre Caractre Numrique Date Date

10 50 50 30

O O N N N

Livres Livres Livres Livres Livres Abonns Abonns Abonns Abonns Abonns

5 20 20 50 20 10 5

O O O

O O O (3)

(1) (2)

Emprunts Emprunts Emprunts

(4)

Emprunts

(1) Les valeurs de la colonne Code_liv_emp doivent exister dans la colonne Code_livre : un livre emprunt doit exister dans la bibliothque. (2) Les valeurs de la colonne Num_ab_emp doivent exister dans la colonne Numero_abonne : une personne ne peut emprunter un livre que lorsqu'il est dj abonn. (3) La valeur par dfaut de la date d'emprunt est la date systme. (4) La date de retour du livre doit tre suprieure ou gale la date d'emprunt.

2- Liste des tables : La liste des tables est dduite partir de la liste des colonnes. A chaque sujet correspond une table. Aux trois sujets Livre, Abonne et Emprunt vont correspondre trois tables.
73

Pour les tables, on appliquera les mmes rgles de nommage que celles adoptes pour les colonnes.
Liste des tables Nom table Livre Abonne Emprunt Description Regroupe l'ensemble des livres de la bibliothque Regroupe les personnes abonnes la bibliothque Stocke l'historique des emprunts de livres Sujet Livres Abonns Emprunts

3- Affectation des colonnes aux tables : Il s'agit ici d'affecter chacune des colonnes du premier tableau aux trois tables du deuxime tableau en faisant un rapprochement bas sur la colonne sujet . Nous utilisons la reprsentation textuelle pour dcrire la structure des tables. Livre(Code_livre, Titre, Auteur, Editeur, Date_parution) Abonne(Num_abonne, Nom_abonne, Prenom_abonne, Adresse, Tel) Emprunt(Code_liv_emp, Num_ab_emp, Date_emprunt, Date_retour)

4- Cls primaires des tables : Pour chaque table, nous allons dterminer une cl primaire. Celle ci sera slectionne parmi les colonnes de la table. Table Livre : Il est dit dans le texte que le code de chaque livre est unique. On peut alors l'utiliser comme cl primaire. Table Abonn : Il est galement mentionn dans le texte que le numro de l'abonn sert comme identifiant. On peut donc l'adopter comme cl primaire. Table Emprunt : Un emprunt est identifi par le livre emprunt et l'abonn qui a emprunt ce livre. On peut donc supposer que la cl primaire de cette table est compose des deux colonnes Code_liv_emp et Num_ab_emp. Cependant, en examinant cette table, on peut constater que cette reprsentation n'est valide que dans le cas o on ne garde pas un historique des emprunts, c'est-dire que lorsque l'abonn retourne le livre, la ligne correspondante sera supprime de la table Emprunt. Si nous souhaitons garder cet historique on doit rajouter la date d'emprunt la cl primaire de la table Emprunt, nous adoptons cette alternative. La description textuelle de la structure des tables en tenant compte des cls primaires sera la suivante :

74

Livre (Code_livre, Titre, Auteur, Editeur, Date_parution) Abonne (Num_abonne, Nom_abonne, Prenom_abonne, Adresse, Tel) Emprunt (Code_liv_emp, Num_ab_emp, Date_emprunt, Date_retour) 5- Liens entre les tables : D'aprs l'nonc, un emprunt est relatif un livre et un abonn. Ainsi, on dduit les deux liens suivants : un lien entre la table Emprunt et la table Livre un lien entre la table Emprunt et la table Abonne Nous utilisons le tableau suivant pour dcrire ces liens :
Table mre Livre Abonne Table fille Emprunt Emprunt Cl primaire Code_livre Num_abonne Cl trangre Code_liv_emp Num_ab_emp

Prcisons que la cl primaire figure dans la table mre et la cl trangre dans la table fille. En tenant compte de ces liens entre les tables, la description textuelle des tables devient alors : Livre(Code_livre, Titre, Auteur, Editeur, Date_parution) Abonne(Num_abonne, Nom_abonne, Prenom_abonne, Adresse, Tel) Emprunt(Code_liv_emp#,Num_ab_emp#,Date_emprunt, Date_retour) 6- Reprsentation graphique de la structure de la base de donnes :

Cette reprsentation peut tre ralise de faon manuscrite, en utilisant un outil graphique ou un SGBD.

75

Remarque L'nonc n'a pas donn de dtail concernant les auteurs et les diteurs. Nous avons suppos qu'il s'agit uniquement de leurs noms, ce qui a eu comme consquence de les considrer comme des simples colonnes dans la table Livre. Si l'nonc avait donn plus d'informations sur les auteurs et les diteurs (code, nom, adresse, etc.), la consquence sera l'ajout de deux autres tables Auteur et Editeur qui seront relies la table Livre. Application 2

Objectif : Dtecter les anomalies dans la structure de tables. Enonc : Pour dcrire les employs d'une entreprise et leur rpartition entre les diffrents services la table suivante a t cre.
N emp 1 2 3 4 5 6 7 8 9 Nom TOUNSI KEFI BEJI TOUATI SOUSSI SFAXI GABSI JERBI EZZAR Prnom Safa Ali Mohamed Lamia Leila Nouri Mouna Lotfi Samia Date N naissance service 01/10/1980 12/09/1981 15/04/1977 21/06/1980 28/11/1982 20/08/1990 04/04/1987 09/06/1988 12/12/1982 20 10 20 20 10 30 10 30 20 Nom service Financier Administratif Financier Financier Administrative Juridique Administratif Juridique Financier Date cration Service 01/01/1970 01/01/1975 01/01/1970 01/01/1970 01/01/1975 01/04/1980 01/01/1957 01/04/1980 01/01/1970

Question :
1 - Identifier les anomalies de cette structure. 2 - Proposer une autre faon de structurer cette base de donnes.

Corrig :
1- Anomalies : Incohrence de donnes : - On remarque que pour le service N10, le nom du service n'est pas le mme pour les employs N 2, 5 et 7 (Administratif, Administrative) - Pour ce mme service, la date de cration diffre entre les employs N 2, 5 et 7 (01/01/1975 et 01/01/1957).
76

Redondance de donnes : - On remarque que lorsqu'il ya plusieurs employs appartenant au mme service, les informations relatives ce dernier sont dupliques ce qui a entran les incohrences prcdentes. 2- Proposition de solution : Pour viter les anomalies, nous proposons d'clater la table actuelle en deux tables : Employe : elle contient les donnes relatives aux employs (N, Nom, Prnom et Date de Naissance) Service : elle contient les donnes relatives aux services (N, Nom et Date de cration) Pour tablir un lien entre ces deux tables, on ajoutera une colonne Nservice dans la table Employ servant de cl trangre. La structure de ces tables sera : Employe(Num_emp, Nom_emp,Prenom_emp,Date_naiss_emp,Num_serv#) Service(Num_serv, Nom_serv, Date_creat_serv) Les deux tables auront le contenu suivant :
Employe

Nemp
1 2 3 4 5 6 7 8 9 10

Nom
TOUNSI KEFI BEJI TOUATI SOUSSI SFAXI GABSI JERBI EZZAR BENZARTI

Prnom
Safa Ali Mohamed Lamia Leila Nouri Mouna Lotfi Samia Maroua

Date naissance
01/10/1980 12/09/1981 15/04/1977 21/06/1980 28/11/1982 20/08/1990 04/04/1987 09/06/1988 12/12/1982

Nservice
20 10 20 20 10 30 10 30 20 Service

Nservice
10 20 30

Nom servi- Date crace tion Service


Administratif Financier Juridique 01/01/1975 01/01/1970 01/04/1980

77

EXERCICES
Exercice 1 Il s'agit de dterminer la structure d'une base de donnes relative l'organisation de matchs entre des quipes sportives. Chaque quipe est dsigne par un code quipe qui permet de l'identifier parmi les autres quipes, un nom et une date de cration. Chaque quipe est compose d'un ensemble de joueurs. Chaque joueur est identifi par un numro d'immatriculation et est dsign par un nom, un prnom et une date de naissance. Un joueur appartient un moment donn une et une seule quipe. Chaque match entre deux quipes est dsign par un numro identifiant, une date, une heure de dbut et un rsultat. Un match est dirig par un arbitre. Chaque arbitre est identifi par un numro et a un nom et un prnom. Un arbitre peut diriger plusieurs matchs. On souhaite galement mmoriser la participation des joueurs chaque match en prcisant le rle de chaque joueur (gardien, dfenseur, etc.) pendant ce match ainsi que la dure pendant laquelle il jou. Questions : 1. laborer la liste des colonnes. 2. Dduire la liste des tables. 3. Donner la liste des liens entre les tables. 4. Donner une description textuelle de la base de donnes. 5. Donner une description graphique de la base de donnes. Exercice 2 On souhaite concevoir une base de donnes relative l'organisation de l'enseignement dans un lyce. L'enseignement est organis en sections : informatique, mathmatiques, lettres, etc. Chaque section est identifie par un code section et dsigne par un intitul section. Chaque section est compose d'un certain nombre de classes : 4re anne informatique 1 (4I1), 3me anne lettres 2 (3L2) etc. Chaque classe est caractrise par un code classe (4I1, 3L2, etc.) qui joue le rle d'identifiant, une dsignation et un niveau (1re, 2me, 3me ou 4me). Une classe appartient une et une seule section. Les lves inscrits dans les diffrentes classes sont caractriss par les informations suivantes : un numro d'lve attribu la premire fois que cet lve s'est inscrit, nom, prnom, date de naissance, adresse et numro de tlphone des parents. Chaque matire enseigne est caractrise par un code matire un libell matire, la section, le niveau d'enseignement et le coefficient. Des notes sont attribues aux lves dans chaque matire sa section et son niveau. Pour chaque matire, chaque lve a une note d'oral, une note de devoir de contrle et une note de devoir de synthse.
78

Questions : 1. laborer la liste des colonnes. 2. Dduire la liste des tables. 3. Donner la liste des liens entre les tables. 4. Donner une description textuelle de la base de donnes. 5. Donner une description graphique de la base de donnes. Exercice 3 On souhaite concevoir une base de donnes relative la gestion des travaux d'un groupe de recherche. Ce groupe est constitu de chercheurs dont on connat pour chacun le numro, le nom, le diplme, l'activit de recherche, le responsable de recherche (lui-mme un chercheur), l'adresse et le tlphone. Les chercheurs rdigent des articles dont chacun est caractris par un titre, le code et le titre du domaine de recherche et une date de rdaction. Un article peut tre rdig par plusieurs chercheurs. Nous supposons que le titre d'un article permet de l'identifier. Le groupe de recherche anime galement des sminaires. Pour chacun, on dtient le titre, le lieu, la date, le responsable et les confrenciers. Responsable et confrenciers font partie du groupe de recherche. Diffrents participants assistent aux sminaires. Pour chaque participant, on connat son nom, son prnom, le nom de l'organisme dans lequel il travaille et l'adresse et le type de l'organisme (ministre, entreprise, banque, universit, etc.). Toute personne participante est identifie par son nom et son prnom. Nous supposons qu'on ne peut pas trouver deux personnes ayant le mme nom et le mme prnom. Questions : 1. laborer la liste des colonnes. 2. Dduire la liste des tables. 3. Donner la liste des liens entre les tables. 4. Donner une description textuelle de la base de donnes. 5. Donner une description graphique de la base de donnes. Exercice 4 On souhaite concevoir une base de donnes relative la gestion de la bibliothque d'un syndicat intercommunal. Cette bibliothque consiste en 5 centres de prt. Ces centres disposent d'ordinateurs personnels interconnects qui doivent permettre de grer les emprunts. L'interview des bibliothcaires permet de dterminer les faits suivants : une personne qui s'inscrit la bibliothque verse une caution. Suivant le montant de cette caution elle aura le droit d'effectuer en mme temps de 1 10 emprunts; les emprunts durent au maximum 15 jours; un livre est caractris par son numro dans la bibliothque (identifiant), son titre, son diteur et son (ses) auteur(s);
79

on veut pouvoir obtenir, pour chaque abonn les emprunts qu'il a effectu (nombre, numro et titre du livre, date de l'emprunt) au cours des trois derniers mois; toutes les semaines, on dite la liste des emprunteurs en retard : nom et adresse de l'abonn, date de l'emprunt, numro(s) et titre du (des) livre(s) concern(s); on veut enfin pouvoir connatre pour chaque livre sa date d'achat, son tat et s'il est disponible dans quel centre. Questions : 1. laborer la liste des colonnes. 2. Dduire la liste des tables. 3. Donner la liste des liens entre les tables. 4. Donner une description textuelle de la base de donnes. 5. Donner une description graphique de la base de donnes. Exercice 5 Un diteur souhaite installer une base de donnes pour mmoriser les informations suivantes: Les livres sont identifis par leur numro ISBN. Un livre possde un titre et un prix de vente. Il est crit par un ou plusieurs auteurs. Chaque livre est tir en une ou plusieurs ditions, dates et identifies par leur ordre (premire dition, seconde dition, etc.). Chaque dition comporte un certain nombre d'exemplaires. Le prix de vente peut changer d'une dition l'autre. Un livre peut tre prim. Les auteurs sont identifis par leur nom et prnoms et peuvent avoir un pseudonyme. Pour chaque livre, un auteur peroit des droits d'auteur annuels, calculs comme un pourcentage des ventes (il est aussi fonction du nombre d'auteurs). Les libraires (identifis par leur nom et adresse complte) commandent des livres en prcisant l'dition et le nombre d'exemplaires dsir. Questions : 1. laborer la liste des colonnes. 2. Dduire la liste des tables. 3. Donner la liste des liens entre les tables. 4. Donner une description textuelle de la base de donnes. 5. Donner une description graphique de la base de donnes. Exercice 6 On souhaite concevoir une base de donnes relative la gestion d'un muse. En effet : 1. toute uvre du muse a un titre, un ou plusieurs auteurs, une date d'acquisition et un numro de catalogue (identifiant); 2. une uvre est expose dans l'une des salles du muse (qui est caractrise par un numro, son nom, le nombre d'uvres exposables), ou est en prt dans un autre muse (nom et adresse de ce muse, dbut et dure du prt);
80

3. certaines uvres exposes dans le muse peuvent avoir t empruntes par le muse, soit un autre muse, soit un particulier (nom et adresse). Dans ce cas, on connat son titre, son (ou ses) auteur(s), la date de dbut et la dure de l'emprunt. De plus, l'uvre doit alors tre assure. On veut savoir le montant de la prime d'assurance, la valeur pour laquelle l'uvre est assure, le nom et l'adresse de la compagnie qui l'assure; 4. le conservateur garde le fichier des muses et des particuliers qui ont prt ou qui sont susceptibles de prter des uvres. Pour chacun (muse ou particulier), il garde le nom et l'adresse et la liste des collections qui l'intressent (art dco, art contemporain, antiquits, etc.).

Questions : 1. 2. 3. 4. 5. laborer la liste des colonnes. Dduire la liste des tables. Donner la liste des liens entre les tables. Donner une description textuelle de la base de donnes. Donner une description graphique de la base de donnes.

81

Objectifs :
Exploiter des outils logiciels pour crer et mettre jour la structure d'une base de donnes. Dcouvrir les commandes SQL pour la cration et la modification de la structure d'une base de donnes

Plan :
1. 2. Introduction Cration d'une base de donnes en mode assist 2.1 Modes de cration 2.2 Cration d'une base de donnes 2.3 Cration d'une table 2.4 Indiquer la cl primaire d'une table 2.5 tablir un lien entre deux tables

3. Modification de la structure d'une base de donnes en mode assist 3.1 Introduction 3.2 Ajout de colonnes une table 3.3 Suppression de colonnes d'une table 3.4 Modification de caractristiques d'une colonne 3.5 Modification de la cl primaire d'une table 3.6 Suppression d'une table 3.7 Suppression d'une base de donnes. 4. Cration d'une table en mode commande 5. Modification de la structure d'une base de donnes en mode commande 5.1 Modification de la structure d'une table en mode ligne 5.2 Suppression d'une table en mode ligne.

Retenons Exercices

83

1. Introduction Aprs avoir prsent les lments structurels d'une base de donnes et la dmarche suivre pour dterminer ces lments, nous allons dcrire dans ce chapitre comment crer les diffrentes structures d'une base de donnes. Il existe deux modes pour crer les lments d'une base de donnes : Mode assist Mode commande 2. Cration d'une base de donnes en mode assist 2.1 Modes de cration Le mode assist permet de crer les lments de la base de donnes travers des assistants graphiques. Un assistant graphique est une interface utilisateur en mode graphique compose d'une succession de fentres correspondant chacune une tape du processus de cration. Certains SGBD disposent leurs propres assistants. Le mode assist est le moyen le plus facile pour crer les lments d'une base de donnes, notamment pour les dbutants. Cependant, il peut dans certains cas tre limit et ne permet pas toutes les options de cration des tables ou de colonnes. Dans les sections qui suivent, vous allez apprendre crer les diffrentes structures d'une base de donnes en mode assist, puis vous allez dcouvrir les trois types de commandes SQL permettant de crer et de modifier la structure d'une base de donnes. Ces commandes seront donnes selon les conventions syntaxiques et typographiques comme indiqu en Annexe 1. 2.2 Cration d'une base de donnes La cration d'une base de donnes consiste crer une structure d'accueil pour les tables de cette base de donnes. Il s'agit en gnral de prciser : Le nom de la base L'emplacement physique de cette base, c'est--dire le ou les fichiers o seront stockes les donnes des tables de cette base. Le processus de cration d'une base de donnes varie de faon significative d'un SGBD un autre. Les tapes suivantes peuvent tre suivies pour crer une base de donnes l'aide du SGBD . 1. Dmarrer votre SGBD disponible 2. Dans le menu Fichier, choisir l'option Nouvelle base de donnes . Une fentre Nouveau fichier s'affiche droite comme indiqu dans la figure suivante :

84

Figure 5.1 : Fentre d'accueil

3. Choisir Base de donnes vide dans la zone Crer de la fentre Nouveau fichier. 4. Dans la fentre qui s'affiche, choisir le rpertoire dans lequel on souhaite crer la base de donnes, puis taper le nom de la base en remplaant le nom bd1.mdb qui est attribu par dfaut.

Figure 5.2 : Fentre Nouvelle base de donnes

85

5. Cliquer sur le bouton Crer . Une base de donnes vide est alors cre et on peut passer l'tape suivante consistant crer des tables dans cette base. 6. Si on souhaite documenter d'avantage la nouvelle base, on peut activer l'option Proprits de la base dans le menu Fichier puis renseigner les diffrents champs de la fentre qui s'affiche.

Figure 5.3 : : Fentre Proprits de base de donnes


Activit 5.1

Objectif : Apprendre crer une base de donnes. Enonc : On souhaite crer la base de donnes reprsentant l'activit d'une bibliothque. Question : Crer une base de donnes vide intitule biblio .
2.3 Cration d'une table Dans votre SGBD disponible, la cration d'une table peut se faire de trois faons diffrentes : Mode cration : permet de crer une table l'aide d'une interface qui aide dfinir chacune de ses colonnes.
86

Mode assistant : permet de crer une table en proposant un ensemble de modles de tables. Mode saisie de donnes : permet de gnrer une table partir d'un jeu de donnes saisies par l'utilisateur. Dans ce qui suit nous allons dcrire le premier mode. Les deux autres modes ne prsentent pas de difficults particulires et peuvent tre dcouvertes sans grandes difficults (voir activit 5.3). Pour crer une table en mode cration, on doit suivre les tapes suivantes. 1. Dans la fentre Base de donnes, slectionner l'option Crer une table en mode cration.

Figure 5.4 : Fentre Base de donnes

2. Dans le tableau qui s'affiche, saisir pour chaque colonne de la table son nom, son type de donnes et sa description. La partie infrieure de cette fentre intitule Proprits du champ peut tre utilise pour dcrire de faon dtaille chaque colonne. La partie Gnral permet de prciser la taille, le caractre obligatoire, la condition de validit, la valeur par dfaut et d'autres proprits pour la colonne courante.

87

Figure 5.5 : Fentre Table

3. Une fois que toutes les colonnes ont t dcrites, fermer cette fentre. On vous demandera si vous souhaitez enregistrer votre travail. La rponse par Oui entrane l'affichage d'une fentre pour saisir le nom de la nouvelle table.

Figure 5.6 : Fentre Enregistrer table

4. Saisir le nom de la table puis cliquer sur Ok. Un message va s'afficher pour indiquer qu'aucune cl primaire n'a t dfinie pour cette table ; pour proposer d'en rajouter une cette table. Rpondre par Non . 5. La nouvelle table est maintenant rajoute la liste des tables existantes dans la base de donnes courante. 6. On peut rajouter une description dtaille de cette nouvelle table en la slectionnant, puis en activant l'option Proprits . Il convient de prciser que l'activation de la case cocher Masquer entrane que la table courante ne sera pas visible dans la fentre Base de donnes . Ceci peut tre utilis comme un moyen de scurit pour que cette table ne soit pas visible tout le monde.

88

Figure 5.7 : Fentre Proprits table

Activit 5.2

Objectif : Apprendre crer des tables. Enonc : On souhaite crer les tables de la base de donnes reprsentant l'activit d'une bibliothque (suite de l'activit 4.1). Question : Crer les tables de la base de donnes biblio .
Activit 5.3

Objectif : Apprendre crer une table en mode assist et en mode feuille de donnes Enonc : En utilisant l'aide du SGBD disponible, noter les diffrentes tapes suivre pour crer une table en mode assist et en mode feuille de donnes. Questions : 1 - Crer une table relative aux employs d'une entreprise en utilisant le mode assist. 2 - Crer la table T ayant la structure et le contenu suivant en utilisant le mode feuille de donnes.
Numro 10 20 30 Ville Tunis Bizerte Kairouan 89 Date_creation 21/10/2000 15/01/2004 06/12/2006

2.4 Indiquer la cl primaire d'une table Pour prciser la cl primaire d'une table, il faut procder comme suit : 1. Slectionner la table concerne. 2. Passer en mode cration en cliquant sur le bouton 3. La fentre d'dition des colonnes s'affiche. Slectionner la colonne qui constitue la cl primaire, puis l'aide du bouton droit de la souris, afficher le menu contextuel et slectionner l'option Cl primaire .

Figure 5.8 : Ajout de cl primaire


4. L'icne apparatra gauche de la colonne constituant de la cl primaire.

Remarque Si la cl primaire est compose de plusieurs colonnes, il faut slectionner toutes les colonnes qui constitueront la cl primaire avant de cliquer sur le bouton droit de la souris.
90

Activit 5.4

Objectif : Apprendre prciser la cl primaire d'une table Question : Prciser les cls primaires des tables de la base de donnes biblio dj cres dans les activits prcdentes
2.5 tablir un lien entre deux tables (cl trangre) Lorsque toutes les tables ont t cres, on doit rajouter les liens entre ces tables. La procdure suivre pour tablir un lien entre deux tables est la suivante : 1. Slectionner l'option Relations dans le menu Outils .Une fentre contenant la liste des tables s'affiche.

Figure 5.9 : Fentre Afficher tables

2. Slectionner les tables pour lesquelles vous souhaitez tablir un lien puis cliquer sur le bouton Ajouter. Maintenir la touche Ctrl pour pouvoir slectionner plus qu'une table. 3. En fermant la fentre, une nouvelle fentre contenant les tables slectionnes s'affiche. Les colonnes constituant les cls primaires sont affiches en gras. 4.

Figure 5.10 : Fentre Relations


91

5. A l'aide de la souris, cliquer sur la colonne constituant la cl trangre, maintenir le bouton de la souris enfonc et pointer sur la colonne constituant la cl primaire dans l'autre table puis lcher le bouton de la souris. La fentre suivante va s'afficher :

Figure 5.11 : Fentre Proprits relation

Il est noter que les colonnes servant tablir le lien entre les deux tables sont affiches dans le tableau. Dans le cas o le lien se base sur plus qu'une colonne dans chaque table, on peut utiliser les lignes vierges de ce tableau pour rajouter les autres colonnes. Le type du lien est ici un plusieurs , signifiant qu' une ligne de la table mre, peut correspondre une ou plusieurs lignes de la table fille. 6. Cocher les options affiches en fonction du comportement que vous souhaitez appliquer ce lien. Appliquer l'intgrit rfrentielle : Signifie que lorsqu'on insre une ligne dans la table fille, le SGBD vrifie que la valeur saisie dans la colonne cl trangre existe dans la colonne cl primaire de la table mre. Dans notre exemple, il s'agit de vrifier qu'une commande est relative un client qui existe dans la table Client. Mettre jour en cascade les champs correspondants : Cette option permet de modifier automatiquement la valeur de la cl trangre dans la table fille lorsqu'on modifie la valeur de la cl primaire dans la table mre. Par exemple, si on modifie le code d'un client dans la table Client, ce code sera modifi dans toutes les lignes de la table Commande correspondant aux commandes de ce client. Effacer en cascade les enregistrements correspondants : Cette option permet de supprimer automatiquement toutes les lignes dans la table fille correspondant une ligne supprime dans la table mre. Par exemple, si on supprime un client dans la table Client, toutes les lignes de la table Commande correspondant aux commandes de ce client seront supprimes.
92

7. Cliquer sur le bouton Fermer . Les deux tables sont maintenant lies.

Figure 5.12 : Relation Client-Commande

Remarque Lorsque les deux colonnes servant tablir le lien entre deux tables sont des cls primaires, le lien cre est de type un un . Ce qui signifie qu' une ligne de chacune des tables correspond une et une seule ligne de l'autre table. Bien qu'autoris par certains SGBD, ce cas ne doit pas se produire si on a respect les rgles de conception vues dans le chapitre prcdent. Il faut essayer donc d'viter ce type de lien. Activit 5.5

Objectif : Apprendre tablir un lien entre tables Question : Etablir les liens entre les tables de la base de donnes biblio .
3. Modification de la structure d'une base de donnes en mode assist 3.1 Introduction Les oprations dcrites dans la partie prcdente permettent de crer une premire version d'une base de donnes. Nous avons d'autre part vu que dans le processus de description d'une base de donnes, la dernire tape consiste analyser et affiner la structure de la base. Affiner la structure de la base de donnes amnerait ventuellement apporter des modifications plus ou moins importantes cette structure telles que : Ajout de colonnes une table Suppression de colonnes une table Modification des caractristiques d'une colonne Modification de la cl primaire d'une table Suppression d'une table Suppression d'une base de donnes Nous allons dcrire dans les sections qui suivent comment effectuer ces oprations.
93

Remarque importante Avant de procder la modification de la structure d'une base de donnes, il est fortement conseill de commencer par effectuer une sauvegarde de cette base. Il s'agit en effet de faire une copie de la base laquelle on peut revenir en cas de besoin. Pour sauvegarder une base de donnes, en mode Assist, il faut slectionner l'option Sauvegarder la base de donnes dans le menu Fichier. Cette sauvegarde cre un fichier dont le nom est celui de la base de donnes actuelle suivi par la date courante (exemple : bibio_2007-01-10.mdb). Activit 5.6

Objectif : Apprendre sauvegarder une base de donnes. Question : Effectuer une sauvegarde de la base de donnes biblio .
3.2 Ajout de colonnes une table (en mode Assist) Pour ajouter une colonne une table existante, on doit suivre les tapes suivantes : 1. Dans la fentre Base de donnes, slectionner la table concerne puis cliquer sur le bouton ou bien activer l'option Mode cration du menu contextuel (en cliquant sur le bouton droit de la souris). Une fentre Table contenant la description de la structure actuelle de la table s'affiche. 2. L'ajout d'une nouvelle colonne peut se faire la fin du tableau ou n'importe qu'elle autre position. Il est noter que l'ordre des colonnes dans une table n'a aucune importance. Pour rajouter une colonne dans une position autre que la dernire, on doit se positionner sur la ligne avant laquelle on veut effectuer l'insertion, puis activer l'option Lignes dans le menu Insertion, ou bien Insrer des lignes dans le menu contextuel. Une ligne vierge apparat et on peut donc crer la nouvelle colonne en procdant de la mme faon que lors de la cration d'une nouvelle table. Dans l'exemple suivant, nous avons rajout la table client deux colonnes : le prnom du client juste aprs le nom et l'adresse mail la fin.

94

3. Fermer la fentre Table en confirmant les modifications.

Figure 5.13 : Ajout de colonnes

Activit 5.7

Objectif : Apprendre ajouter des colonnes une table. Enonc : On souhaite enrichir les tables de la base de donnes biblio. Question : Rajouter une colonne adresse_mail pour la table Livre et une colonne rsum pour la table Livre.
95

3.3 Suppression de colonnes d'une table On peut avoir besoin de supprimer une colonne d'une table dans l'un des cas suivants : 1. Il s'agit d'une colonne qui peut tre dduite partir d'autres colonnes. Nous avons vu dans la section 3.3 que de telles colonnes ne doivent pas exister dans une table. 2. La colonne n'a pas t affecte la table adquate. On doit donc la supprimer et la recrer dans la bonne table. Pour supprimer une colonne d'une table, on doit suivre les tapes suivantes : 1. Dans la fentre Base de donnes, slectionner la table concerne puis cliquer sur le bouton ou bien activer l'option Mode cration du menu

contextuel (en cliquant sur le bouton droit de la souris). Une fentre Table contenant la description de la structure actuelle de la table s'affiche. 2. Slectionner la ou les colonnes supprimer, puis activer l'option Supprimer dans le menu Edition, ou bien Supprimer des lignes dans le menu contextuel. Les lignes slectionnes seront supprimes. 3. Fermer la fentre Table en confirmant les modifications. Remarque Lorsque la colonne supprimer est une cl primaire rfrence dans une autre table comme cl trangre, sa suppression ne peut se faire qu'aprs la suppression du lien entre les deux tables. Activit 5.8

Objectif : Apprendre supprimer des colonnes d'une table. Enonc : Supprimer la colonne rsum qui vient d'tre rajoute la table Livre.
3.4 Modification de caractristiques d'une colonne (en mode Assist) La modification des caractristiques d'une colonne consiste modifier : Le nom de la colonne Le type de donnes La description Les autres proprits : taille, caractre obligatoire, la rgle de validit, etc. Pour modifier les caractristiques d'une colonne d'une table, on doit suivre les tapes suivantes : 1. Dans la fentre Base de donnes, slectionner la table concerne puis cliquer sur le bouton ou bien activer l'option Mode cration du menu

contextuel (en cliquant sur le bouton droit de la souris). Une fentre Table contenant la description de la structure actuelle de la table s'affiche.

96

2. Se positionner sur la colonne modifier. Si la modification concerne le nom, le type de donnes ou la description, effectuer cette modification dans la ligne du tableau. Si la modification concerne une autre proprit, effectuer la dans la partie Proprits du champ . 3. Fermer la fentre Table en confirmant les modifications. Remarques Lorsque des modifications de caractristiques d'une colonne sont apportes une table qui contient dj des donnes, il faut prendre les prcautions suivantes : * Pour la modification des types de donnes, il faut tenir compte de la compatibilit des types. Par exemple, on peut passer du type numrique vers le type chane de caractres sans risque alors que l'inverse n'est possible que si cette colonne ne contient que des valeurs numriques. * Pour la modification de la taille, on peut passer sans aucun risque d'une taille infrieure une taille suprieure, alors que l'inverse n'est possible que si toutes les donnes existantes pour cette colonne ont une taille infrieure ou gale la nouvelle taille. La modification du type de donnes d'une colonne dj rfrence dans une autre table ne peut se faire que lorsqu'on supprime le lien entre les deux tables. Lors du rtablissement de ce lien aprs la modification du type de donnes, le SGBD s'assure de la conformit des types de donnes des deux colonnes. S'il y a incompatibilit, le lien ne sera pas tabli. Activit 5.9

Objectif : Apprendre modifier les caractristiques d'une colonne. Enonc : Ajouter une colonne Etat dans la table Abonn et rajouter la condition de validit suivante : un abonn est dans un tat Actif ou Inactif.
3.5 Modification de la cl primaire d'une table (en mode Assist) La modification d'une cl primaire peut consister : Rajouter d'autres colonnes la cl primaire actuelle. On a par exemple une table dont la cl primaire est compose d'une seule colonne et on souhaite enrichir cette cl primaire par une autre colonne. Sortir une ou plusieurs colonnes de la cl primaire actuelle. On a par exemple une table dont la cl primaire est compose de deux colonnes et on souhaite sortir une colonne de cette cl primaire. Changer compltement de cl primaire, c'est--dire que les colonnes de la cl primaire seront compltement diffrentes de celles qui existent actuellement.
97

Pour modifier la cl primaire d'une table, on doit suivre les tapes suivantes : 1. Dans la fentre Base de donnes , slectionner la table concerne puis cliquer sur le bouton ou bien activer l'option Mode cration du menu

contextuel (en cliquant sur le bouton droit de la souris). Une fentre Table contenant la description de la structure actuelle de la table s'affiche. 2. Pour annuler le fait qu'une colonne est actuellement une cl primaire, slectionner cette colonne, puis activer l'option cl primaire du menu contextuel. 3. Pour intgrer une ou plusieurs colonnes dans la cl primaire, slectionner ces colonnes, puis activer l'option cl primaire du menu contextuel. Toutes ces colonnes seront donc marques par l'icne . 4. Fermer la fentre Table en confirmant les modifications. Remarques Lorsque la cl primaire actuelle est rfrence dans une ou plusieurs autres tables, il faut supprimer le lien entre les tables avant de procder la modification de la cl primaire. Lorsque la table contient dj des donnes, la modification de la cl primaire ne peut tre accepte que si les donnes actuelles vrifient l'unicit des valeurs des colonnes constituant la cl primaire de la table. Par exemple, si on souhaite modifier la cl primaire de la table client de sorte que la nouvelle cl primaire sera le nom du client et non pas le code du client, cette modification ne sera accepte que si tous les clients actuels ont des noms uniques. Activit 5.10

Objectif : Apprendre modifier la cl primaire d'une table. Enonc : On souhaite vrifier la validit de la cl primaire de la table Emprunt. Pour ce faire, essayer d'y insrer quelques lignes correspondant des emprunts de livres diffrents par un mme abonn. Ensuite, essayer d'insrer une ligne correspondant un emprunt d'un livre qui a t dj emprunt par cet abonn une date antrieure Question : 1 - Quelle est la raction du SGBD ? 2 - Donner une explication. 3 - Proposer une solution.
3.6 Suppression d'une table (en mode Assist) La suppression d'une table consiste supprimer son contenu et sa structure. Pour supprimer une table, on doit suivre les tapes suivantes : 6. Dans la fentre Base de donnes , slectionner la table supprimer. 7. Activer l'option Supprimer dans le menu Edition, ou bien Supprimer dans le menu contextuel. 8. Au message de confirmation de la suppression, rpondre par Oui ou par Non.
98

Remarque Lorsque la table supprimer est rfrence dans une ou plusieurs autres tables, il faut supprimer le lien entre les tables avant de procder la suppression de la table. Ne pas oublier de supprimer les colonnes qui se rfrent cette table dans les autres tables. Activit 5.11

Objectif : Apprendre supprimer une table. Enonc : Crer une nouvelle table puis la supprimer.
3.7 Suppression d'une base de donnes (en mode Assist) La suppression d'une base de donnes consiste supprimer tous les objets se trouvant dans la base ainsi que la structure physique de cette base, c'est--dire le fichier qui la contient. Vu l'importance de cette opration, il faut bien rflchir avant de l'effectuer. Dans tous les cas, il est fortement conseill d'effectuer une sauvegarder de la base avant de la supprimer. Nous remarquons que certains SGBD ne disposent pas de commande de suppression d'une base de donnes. Cette suppression doit tre alors faite au niveau systme d'exploitation. Exemple Pour supprimer la base de donnes Commercial , il faut aller vers le rpertoire correspondant et supprimer le fichier Commrcial.mdb . Remarque Dans le cas o on a procd par erreur la suppression d'une base de donnes, il est possible de la restaurer partir de la corbeille si celle-ci n'a pas t vide entre temps. Activit 5.12

Objectif : Apprendre supprimer une base de donnes. Enonc : Crer une base vide puis la supprimer.

4. Cration d'une table en mode commande


Le mode commande consiste crer les diffrentes structures de la base de donnes l'aide de commandes du langage SQL. Ce langage est compos de trois familles de commandes :

99

Commandes de dfinition de donnes : ce sont des commandes qui permettent de crer, modifier et supprimer les diffrentes structures de la base de donnes. Nous utiliserons quelques unes de ces commandes dans ce chapitre. Commandes de manipulation de donnes : ce sont des commandes qui permettent de manipuler le contenu de la base de donnes, c'est--dire d'insrer, de modifier, de consulter ou de supprimer des lignes dans les tables de la base de donnes. Ces commandes seront prsentes dans le chapitre 6. Commandes de contrle de donnes : ce sont des commandes qui permettent de contrler l'utilisation de la base de donnes (scurit de la base, intgrit des donnes, cohrences des donnes). Les commandes relatives la scurit seront prsentes dans le chapitre 7. La commande du langage SQL permettant de crer une table est la commande CREATE TABLE. La forme gnrale de cette commande est la suivante : CREATE TABLE nom_table (dfinition_ colonne | dfinition_ contrainte, ... ) Le nom de la table doit tre unique au niveau de la base de donnes et ne doit pas tre un mot-cl SQL. Une table doit contenir au minimum une colonne. Le nombre maximum de colonnes par table dpend du SGBD. Les noms attribus ces colonnes doivent tre uniques dans la mme table, mais plusieurs tables peuvent avoir des colonnes qui ont le mme nom. La clause dfinition_colonne permet de prciser les caractristiques d'une colonne. Elle a la syntaxe suivante :
Nom_colonne type [[NOT] NULL] [DEFAULT valeur] [contrainte_colonne]

Le nom de la colonne est suivi obligatoirement par le type de donnes. Le tableau suivant donne les principaux types de donnes. Il est noter que le nombre et les noms des types de donnes varient d'un SGBD un autre. INT (n) Numrique n chiffres DECIMAL (n, m) Numrique n chiffres dont m dcimales. VARCHAR(n) Chane de caractres de longueur variable dont la taille maximale est n DATE Date et/ou heure
100

L'option NULL veut dire que la colonne n'est pas obligatoire. On peut lors de la saisie d'une ligne de la table, laisser la valeur de cette colonne Null (vide). A l'inverse, l'option NOT NULL veut dire que la colonne est obligatoire. On doit absolument renseigner cette colonne lors de la saisie d'une ligne de la table. Lorsqu'une colonne est une cl primaire, on n'a pas besoin de prciser l'option NOT NULL. Elle est implicite. L'option DEFAULT permet d'attribuer une valeur par dfaut cette colonne lorsqu'aucune valeur ne lui a t affecte. Cette option ne peut pas tre indique lorsque la colonne est obligatoire (NOT NULL). L'option contrainte_colonne permet de prciser une contrainte d'intgrit relative la colonne. Cette contrainte peut tre une contrainte de cl primaire, de cl trangre ou de valeurs. La syntaxe correspondante est la suivante :
[CONSTRAINT contrainte] {PRIMARY KEY | REFERENCES nom_table [(nom_colonne)] [ON DELETE CASCADE] | CHECK (condition)}

Le mot cl CONSTRAINT est optionnel et sert attribuer un nom la contrainte. Le paramtre contrainte sert en tant qu'identificateur. PRIMARY KEY spcifie que la colonne est utilise comme cl primaire. REFERENCES dfinit une contrainte d'intgrit rfrentielle. Le nom de la table prcis aprs le mot-cl REFERENCES est celui de la table mre. Le nom de la colonne est celui de la colonne vers laquelle on se rfre et il ne doit tre prcis que lorsqu'il est diffrent du nom de la colonne courante. ON DELETE CASCADE est une option qui permet de maintenir l'intgrit rfrentielle en supprimant automatiquement les valeurs d'une cl trangre dpendant d'une valeur d'une cl primaire si cette dernire est supprime. CHECK est un mot cl associ une condition qui doit tre vrifie pour chaque valeur insre. Remarque Pour excuter les commandes SQL donnes dans ce chapitre, on doit disposer d'un diteur SQL permettant la saisie, l'excution et l'affichage des rsultats. La plupart des SGBD disposent de tels diteurs. Un exemple d'diteur est fourni en annexe 2. Exemples La commande suivante permet de crer la table Article correspondant la figure 5.5. CREATE TABLE article (Code_art VARCHAR(20) PRIMARY KEY, des_art VARCHAR (50) NOT NULL, PU DECIMAL(8, 3) CHEK (PU > 0), Qte_stock INT(5) DEFAULT 0 CHECK (qte_stock >= 0) );
101

La commande suivante permet de crer la table Commande. CREATE TABLE commande (num_comm VARCHAR(20) CONSTRAINT pk_cli PRIMARY KEY, date_comm DATE NOT NULL, code_client VARCHAR(20) REFERENCES client(code_client) ); La clause dfinition_contrainte de la commande CREATE TABLE permet de dfinir une contrainte d'intgrit au niveau de la table. Elle doit tre utilise lorsque la contrainte ne s'applique pas une seule colonne. Elle a la syntaxe suivante :
[CONSTRAINT contrainte] { PRIMARY KEY} (colonne1, colonne2, ...) | FOREIGN KEY (colonne1, colonne2, ...) REFERENCES nom_table [(colonne1, colonne2, ... )] [ON DELETE CASCADE] | CHECK (condition)}

Le mot cl CONSTRAINT est optionnel et sert attribuer un nom la contrainte. PRIMARY KEY spcifie que les colonnes sont utilises comme cl primaire. FOREIGN KEY dfinit une contrainte d'intgrit rfrentielle relative plusieurs colonnes. Le nom de la table prcis aprs le mot-cl REFERENCES est celui de la table mre. Les noms des colonnes sont ceux des colonnes vers lesquelles on se rfre. CHECK est un mot cl associ une condition qui doit tre vrifie pour chaque valeur insre. Elle peut concerner ici plus qu'une colonne. Exemple La commande suivante permet de crer la table Dtail commande correspondant la figure 5.5. CREATE TABLE detail_commande (num_comm VARCHAR(20) REFERENCES commande, Num_ligne INT(4), Qte_comm INT(5) CHECK (qte_comm > 0), PRIMARY KEY (num_comm, num_ligne) );

5. Modification de la structure d'une base de donnes en mode commande


5.1. Modifier la structure d'une table en mode commande La commande du langage SQL permettant de modifier la structure d'une table est la commande ALTER TABLE. Elle permet les modifications suivantes sur la structure d'une table existante : Ajout de nouvelles colonnes, Modification de colonnes,
102

Suppression de colonnes, Ajout de contraintes d'intgrit, Suppression de contraintes d'intgrit, Activation ou dsactivation de contraintes d'intgrit. La forme gnrale de cette commande est la suivante :
ALTER TABLE nom_table [ADD COLUMN dfinition_colonne] [ADD CONSTRAINT dfinition_contrainte] [MODIFY dfinition_colonne] [DROP COLUMN nom_colonne ] [DROP CONSTRAINT nom_contrainte] [ENABLE | DISABLE nom_contrainte]

Le nom de la table doit correspondre une table qui existe dj. L'option ADD COLUMN permet de rajouter des nouvelles colonnes la table. La clause dfinition_colonne a la mme syntaxe que celle utilise dans la commande CREATE TABLE. Exemple La commande suivante permet de rajouter une colonne email la table Client. ALTER TABLE client ADD COLUMN (email VARCHAR(80) ); L'option ADD CONSTRAINT permet de rajouter une nouvelle contrainte la table. La clause dfinition_contrainte a la mme syntaxe que celle utilise dans la commande CREATE TABLE Exemple Supposons que la table Article a t cre sans cl primaire. La commande suivante permet de prciser cette cl primaire.
ALTER TABLE article ADD CONSTRAINT PRIMARY KEY (code_article);

L'option MODIFY permet la modification de certaines caractristiques d'une colonne existante. La clause dfinition_colonne a la mme syntaxe que celle utilise dans la commande CREATE TABLE Exemple Supposons qu'on souhaite largir la taille de la colonne email qu'on vient de rajouter la table client.
ALTER TABLE client MODIFY (email VARCHAR(100));

L'option DROP COLUMN permet de supprimer une colonne de la table. Cette option n'est pas prvue chez certaines versions de SQQL.
103

Exemple Supposons qu'on souhaite supprimer la colonne email qu'on vient de rajouter la table client.
ALTER TABLE client DROP COLUMN email ;

L'option DROP COSTRAINT permet de supprimer une contrainte d'intgrit de la table. Exemple Supposons qu'on ne souhaite plus assurer l'identification des clients par le code article. La commande suivante permet de supprimer la cl primaire de la table Article.
ALTER TABLE article DROP CONSTRAINT PRIMARY KEY ;

L'option DISABLE permet de dsactiver une contrainte d'intgrit. Lorsqu'une contrainte est dsactive, le SGBD ne va plus effectuer le contrle impos par cette contrainte. Exemple Supposons qu'on ne souhaite plus assurer provisoirement l'identification des clients par le code article. La commande suivante permet de dsactiver la cl primaire de la table Article.
ALTER TABLE article DISABLE CONSTRAINT PRIMARY KEY ;

Lorsque cette cl primaire est rfrence dans une ou plusieurs autres tables, il faut supprimer les cls trangres dans les tables qui s'y rfrent avant de procder la suppression de la cl primaire. L'option ENABLE permet de ractiver une contrainte d'intgrit. Lorsqu'une contrainte est ractive, le SGBD va de nouveau effectuer le contrle impos par cette contrainte. Exemple Supposons qu'on souhaite de nouveau assurer l'identification des clients par le code article. La commande suivante permet de ractiver la cl primaire de la table Article. ALTER TABLE article ENABLE CONSTRAINT PRIMARY KEY ; 5.2. Suppression d'une table en mode commande La commande du langage SQL permettant de supprimer la structure d'une table est la commande DROP TABLE. Elle permet de supprimer la fois le contenu et la structure d'une table existante. La syntaxe de cette commande est la suivante :
DROP TABLE nom_table

Le nom de la table doit correspondre une table qui existe dj. Exemple La commande suivante permet de SUPPRIMER la table Client. DROP TABLE client;
104

RETENONS

Vous avez appris dans ce chapitre comment crer et modifier les diffrentes structures d'une base de donnes. Pour raliser cette tche, deux modes sont possibles : mode assist et mode commande Le mode assist est spcifique chaque SGBD. A travers une interface graphique conviviale, l'utilisateur peut crer et modifier les diffrentes composantes d'une base de donnes en remplissant certains champs, en cochant d'autres et en effectuant des choix dans des listes droulantes Le mode commande a comme principal avantage l'indpendance par rapport au SGBD. La forme gnrale des trois commandes permettant de crer et de modifier la structure d'une base de donnes (CREATE, ALTER et DROP) est la mme dans tous les SGBD qui utilisent SQL.

105

LECTURE
Structured Query Language Structured Query Language (SQL), ou langage structur de requtes, est un langage informatique (de type requte) normalis (standard) destin interroger ou manipuler une base de donnes relationnelle avec : Un langage de dfinition de donnes (LDD, ou en anglais DDL, Data definition language) qui permet de modifier la structure de la base de donnes. Un langage de manipulation de donnes (LMD, ou en anglais DML, Data manipulation language) qui constitue la partie la plus courante et la plus visible de SQL, permettant de consulter et modifier le contenu de la base de donnes. Un langage de contrle de donnes (LCD, ou en anglais DCL, Data control language) qui permet de grer les privilges, c'est--dire les utilisateurs et les actions qu'ils peuvent entreprendre sur la Base de Donnes. Bref historique C'est Edgar F. Codd qui en juin 1970 rdigea l'article A Relational Model of Data for Large Shared Data Banks ("Un modle de donnes relationnel pour de grandes banques de donnes partages") dans la revue Communications of the ACM (Association for Computing Machinery). Ce modle a t rapidement admis comme modle dfinitif pour les systmes de gestion de base de donnes (SGBD). Un langage, Structured English Query Language ("SEQUEL") (langage d'interrogation structur en anglais) a t dvelopp par IBM pour mettre en uvre le modle de Codd. Le langage SQL (Structured Query Langage) est une volution SEQUEL dvelopp en 1976 par IBM comme langage de recherche. Cette volution a, entre autres, t de supprimer les fonctions multivalu de SEQUEL qui faisait l'objet jusqu'en 1993 de brevet de Pick System, d'o un cot prohibitif. En 1979, Relational Software, Inc. (actuellement Oracle Corporation) prsenta la premire version commercialement disponible de SQL, rapidement imit par d'autres fournisseurs. Malgr le succs du langage SQL qui a suivi, Edgar F. Codd dnoncera cet outil qu'il considre comme une interprtation incorrecte de ses thories. SQL a t adopt comme recommandation par l'Institut de normalisation amricaine (ANSI) en 1986, puis comme norme internationale par l'ISO en 1987 sous le nom de ISO/CEI 9075 - Technologies de l'information - Langages de base de donnes - SQL. La norme internationale SQL est passe par un certain nombre de rvisions :

106

Anne 1986 1989 1992

Nom ISO/CEI 9075:1986 ISO/CEI 9075:1989 ISO/CEI 9075:1992

Appellation

Commentaires

SQL-86 ou SQL-87 dit par l'ANSI puis adopt par l'ISO en 1987. SQL-89 ou SQL-1 SQL-92 ou SQL2 Rvision mineure. Rvision majeure. Expressions rationnelles, requtes rcursives, dclencheurs, types non-scalaires et quelques fonctions orientes objet (les deux derniers points sont quelque peu controverss et pas encore largement implments). Introduction de fonctions pour la manipulation XML, window functions , ordres standardiss et colonnes avec valeurs auto-produites (y compris colonnes d'identit).

1999

ISO/CEI 9075:1999

SQL-99 ou SQL3

2003

ISO/CEI 9075:2003

SQL:2003

Extrait d'un article de Wikipdia, l'encyclopdie libre.

107

EXERCICES
Exercice 1 En utilisant le mode assistant, crer la base de donnes de l'exercice 1 du chapitre 4. Exercice 2 En utilisant le mode assistant, crer la base de donnes de l'exercice 2 du chapitre 4. Exercice 3 Soit la table T ayant la structure suivante : T (t1, t2, t3, t4) En supposant que t1 et t3 sont de type numrique et que t2 est de type alphanumrique et que t4 est de type date, crire la commande SQL permettant de crer la table T. Exercice 4 Soit la table P ayant la structure suivante : P (p1, p2, t1) En supposant que p1 et p3 sont de type alphanumrique et que t1 est une cl trangre qui se rfre la table T, crire la commande SQL permettant de crer la table P. Exercice 5 Rajouter la table T une contrainte consistant vrifier que t3 est toujours infrieure 100.

108

Objectifs :
Ce chapitre comme principaux objectifs de permettre l'lve de Mettre jour une base de donnes. Dcouvrir les commandes SQL pour l'ajout de nouvelles donnes, la modification de donnes dj existantes et la suppression de celles qui ne sont plus utiles.

Plan :
1. Introduction 2. Base de Donnes exemple 3. Manipulation de donnes en mode assist 3.1. Mise jour de donnes 3.2. Recherche de donnes : requtes 3.3. La dfinition des cls de tri 3.4. Les critres de filtres 3.5. Les formules 3.6. Les proprits d'une colonne ou d'une requte 3.7. Requte slection base sur des calculs 3.8. Les requtes multi-tables 3.9. Echange de donnes avec un tableur 4. Manipulation de donnes en mode commande 4.1. Mise jour de donnes 4.2. Recherche de donnes : requtes Retenons Exercices

1. Introduction Aprs avoir prsent, au chapitre 5, les lments permettant d'exploiter des outils logiciels pour crer et mettre jour la structure d'une base de donnes ainsi que les commandes SQL pour la cration et la modification de cette structure nous allons dcrire dans ce chapitre comment manipuler le contenu d'une base de donnes. La manipulation de donnes consiste effectuer les oprations suivantes sur les tables de la Base de Donnes : - insertion de nouvelles lignes dans une table - modification de lignes existantes dans une table - suppression de lignes d'une table - consultation, ou recherche de lignes existantes dans une ou plusieurs tables Gnralement les trois premires oprations constituent la mise jour de donnes. Comme pour la dfinition des donnes, la manipulation de donnes peut tre effectue selon deux modes : - le mode commande : les quatre types de commandes cites ci-dessus sont for muls en utilisant le langage SQL (LMD). - le mode assist : les mmes oprations cites ci-dessus peuvent tre effectues en utilisant une interface graphique dpendant du SGBD. Le premier mode est plutt destin aux programmeurs alors que le deuxime est la porte des utilisateurs peu avertis. Dans ce qui suit, nous allons commencer par prsenter d'abord le mode assist. Une forme simplifie du mode commande sera ensuite prsent. 2. Base de Donnes exemple Tout au long de ce chapitre, les exemples seront illustrs au moyen d'une Base de Donnes, simplifie, relative la gestion commerciale d'une entreprise de vente en gros, utilisant la messagerie lectronique. Les principaux sujets qui vont nous intresser, dans la suite, sont : les Articles (ou produits) commercialiss les Clients permanents les Commandes faites par ces clients les Dtails des articles commands par les clients. Les articles sont commands par les clients travers des commandes. Un client peut commande un ou plusieurs articles dans la mme commande. L'ensemble d'articles d'une commande constitue les dtails de cette dernire. Un client ne peut commander un article qu'une seule fois dans une commande. Chaque article est identifi par un code (cl primaire). Il est dcrit par sa dsignation (ou son nom), son prix unitaire et sa quantit disponible en stock. Chaque client est identifi par un code (cl primaire). Il est dcrit par son nom, son prnom, son adresse postale, son numro de tlphone, son adresse lectronique, le chiffre d'affaires de l'anne en cours (cumul des montants des commandes faites par le client) ainsi que le cumul de ses chiffres d'affaires des annes antrieures. Chaque commande est identifie par un numro (cl primaire). Elle est dcrite par une date de commande ainsi qu'un code de client (cl trangre).
112

Chaque dtail de commande est identifi par la concatnation du numro de commande et d'un numro squentiel d'une ligne de commande (ces deux proprits constituent la cl primaire). Une ligne de commande (ou Dtail commande) est dcrite par un code de l'article command (cl trangre) ainsi que la quantit commande. Il est noter que le numro de commande, en plus de sa participation la constitution de la cl primaire, doit tre considr en tant que cl trangre. En Adoptant la dmarche de dtermination de la structure de la Bases de Donnes prsente dans le chapitre 4, nous proposons la solution suivante : Liste des colonnes :
Liste des colonnes
Obligatoire Valeurs autorises Valeur par dfaut

Nom colonne

Description

Type de donnes

Taille

Sujet

code_art des_art PU Qte_stock code_client Nom_client Prnom_client Adr_client Tel_client email_client

Code Article qui sert comme identifiant Dsignation (ou nom) du l'article Prix Unitaire de l'article Quantit disponible en stock de l'article Code Client qui sert comme identifiant Nom du client Prnom du Client Adresse Postale du Client Numro Tlphone du Client Adresse lectronique du Client

Caractre Caractre Numrique Numrique Caractre Caractre Caractre Caractre Caractre Caractre

20 50 8,3 30 20 20 30 50 20 50

O O N N O O N O N N 0 >0 0

Articles Articles Articles Articles Clients Clients Clients Clients Clients Clients

Chiffre_Affaires Chiffre d'affaires de l'anne en cours du Client _Anne_encours

Numrique

10,3

Clients

Cumul_Chiffre_Aff Cumul des Chiffres d'affaires du Client aires num_comm Numro de Commande qui sert comme identifiant

Numrique

12,3

Clients

Caractre

20

Commandes

date_comm

Date de la Commande

Date

Commandes

num_ligne

Numro de Ligne de Commande qui sert comme identifiant quand on lui ajoute le Numro de Numrique Commande Quantit Commande d'un produit dans une Numrique commande

Lignes de commandes Lignes de commandes

Qte_comm

>0

113

Liste des tables :


Liste des tables
Nom table Description Sujet

Client Article Commande Detail_Commande

elle contient la liste des clients de l'entreprise elle contient la liste des articles commercialiss

Clients Articles

elle contient la liste des commandes faites Commandes des par l'ensemble des clients Clients elle contient la liste des articles commands par l'ensemble des clients Lignes des Commandes

Liens entre les tables


Table mre Client Article Commande Table fille Commande Detail_commande Detail_commande Cl primaire code_client code_article Num_comm Cl trangre code_client code_article Num_comm

Description textuelle des tables : Article (code_art, des_art, PU, Qte_stock) Client (code_client, Nom_client, Prnom_client, Adr_client, Tel_client, email_client, Chiffre_Affaires _Anne_encours, Cumul_Chiffre_Affaires) Commande (num_comm, date_comm, code_client#) Dtail_Commande (num_comm#, num_ligne, code_art#, Qte_comm) Activit 6.1 En utilisant le mode assist, crer la base de donnes dont la structure est prsente ci-dessous.
Table Article Colonne Code_Art Des_Art PU Qte_stock Type Texte Texte Numrique Numrique 20 50 (8,3) 5 Taille Contrainte Cl primaire Non nulle (PU > 0) (Valeur par dfaut=0) et (Qte_stock >=0)

114

Table Client Colonne Code_client Nom_client Prenom_client Adr_client Tel_client Email_client Chiffre_affaires_annee_encours Cumul_chiffre_affaires Texte Texte Texte Texte Texte Texte Numrique Numrique Type 20 20 30 20 20 50 (10,3) (12,3) Non Nulle Taille Contrainte Cl primaire Non Nulle

Table Commande Colonne Num_comm Date_comm Code_client Type Texte Date Texte 20 Taille 20 Contrainte Cl primaire Non nulle Cl trangre

Table Detail_commande Colonne Num_comm Num_ligne Code_art Qte_comm Type Texte Numrique Texte Numrique Taille 20 4 20 20 Cl trangre Qte_comm>0 Contrainte Cl primaire

3. Manipulation de donnes en mode assist Nous allons nous intresser quatre types d'oprations: l'insertion, la modification, la suppression et la recherche (requte) de donnes. L'insertion, la modification et la suppression constituent ce qu'on appelle les oprations de mise jour. 3.1. Mise jour de donnes Dans la suite, nous allons nous intresser la manipulation d'une seule table. 3.1.1. Insertion de lignes L'opration d'insertion de nouvelles donnes consiste ajouter de nouvelles lignes dans une table dont la structure a t dj cre dans la base. Activit 6.2 Remplir les tables de la base cre dans l'activit prcdente par les donnes indiques dans les tableaux suivants :
115

Table Client
Code S0010 T0122 M5423 Nom Prnom Adresse Tlphone Sousse Tunis Monastir 66536658 66335297 66481124 Email Rania.gloulou@gnet.tn Meriam.attia@topnet.tn Chif. Af. 15679,355 54987,210 Cumul 123765,540 339807,250 564700,590

Gloulou Rania Attia Meriam

Ladhari Youssef

Youssef.Ladhari@planet.tn 22765,705

Table Commande
Numro 000100/2007 002087/2007 001123/2007 003400/2007 Date 20/01/2007 30/03/2007 15/02/2007 24/04/2007 Code Client T0122 S0010 M5423 T0122

Table Article
Code Dis312 CD700 ClaBil SouPS2 AppPho LanCard Description Disquette 3"1/2 CDROM Vierge 700 Mo Clavier Bilingue Souris Appareil Photo Numrique Carte Rseau Prix Unitaire Quantit Stocke 0 0 0 0 0 0

L'insertion de nouvelles lignes dans la table Client se fait en suivant les tapes suivantes : 1. Dans la fentre Base de donnes , slectionner la table Client. 2. Slectionner le bouton . Une nouvelle fentre content un tableau ayant la structure de cette table s'affiche et vous permet introduire les donnes :

La saisie des donnes et la modification de la largeur d'une colonne se fait simplement comme dans un logiciel tableur. Les donnes sont introduites dans les diffrentes cellules et valides en tapant sur la touche Entre ou sur une flche de dplacement ou sur la touche tabulation.
116

Remarques Les boutons situs dans le coin infrieur gauche de la fentre vous permettent de naviguer aisment entre les lignes de la table :
Ligne prcdente

Dernire ligne

Premire ligne Insertion d'une nouvelle ligne En tapant son numro, vous pouvez accder directement une ligne

Ligne suivante

Pour ajouter une nouvelle ligne la fin d'une table, vous pouvez cliquer sur le bouton de la barre d'outils. Le curseur se positionne dans la premire colonne de la nouvelle ligne. Pour revenir la structure de la table (mode cration), vous pouvez cliquer sur le bouton afin de visualiser la structure de la table, d'ajouter une colonne ou de modifier les proprits d'une colonne, etc. Les lignes sont affiches dans la table dans l'ordre de leur saisie. L'affichage des informations sera modifi par l'utilisation des requtes ou/et des formulaires ( voir dans le prochain chapitre). Attention, la validation de l'insertion d'une ligne se fait automatiquement. 3.1.2. La suppression d'une ligne Pour supprimer une ligne, il faut se positionner sur cette ligne l'aide des boutons de navigation et presser la touche Suppr du clavier ou son quivalent. Cette suppression ne devient dfinitive qu'aprs confirmation.

117

Remarques Attention, la suppression confirme d'une ligne ne peut tre annule ! Pour supprimer plusieurs lignes adjacentes, les slectionner puis presser la touche Suppr du clavier ou son quivalent. 3.1.3. La modification d'une ligne Pour modifier une ligne, il faut se positionner sur cette ligne l'aide des boutons de navigation et modifier les cellules concernes. Remarques Attention, la validation des modifications effectues se fait automatiquement. 3.2. Recherche de donnes : requtes En mode assist, la recherche peut se faire de deux faons : La recherche selon un critre (sur une colonne) consiste localiser la premire ligne vrifiant une condition Le filtrage consiste retrouver et afficher l'ensemble des lignes d'une table vrifiant une condition (pouvant porter sur plusieurs colonnes en utilisant les oprateurs logiques) Une requte sert exploiter les donnes contenues dans les tables. Une requte permet, entre autres, de classer les informations dans l'ordre alphabtique d'un ou de plusieurs champs, de rechercher une donne selon un ou plusieurs critres de slection, d'effectuer des calculs, etc. Le rsultat d'une requte peut servir ventuellement de source pour un formulaire (prsentation des donnes des champs l'cran), pour un tat (impression). Ces lments seront dvelopps dans le chapitre 7. Une requte correspond des ordres de programmation enregistrs au format SQL. Les ordres d'une requte peuvent tre mmoriss et excuts tout moment. A chaque excution de la requte, l'ensemble des donnes de la table est analys avant d'en afficher le rsultat. 3.2.1. Dmarche de cration d'une requte 1. Slectionnez l'onglet Requte 2. Cliquez sur le bouton 3. Une bote de dialogue apparat : cliquez sur l'option Mode Cration.

118

4. Cliquez sur le bouton OK. 5. Une bote de dialogue apparat : cliquez sur le nom de la table insrer, puis appuyez sur le bouton Ajouter. Rptez cette opration si une autre table doit tre ajoute. 6. Lorsque vous avez slectionn toutes les tables ncessaires la cration de votre requte, cliquez sur le bouton Fermer. L'cran de cration de la requte affiche la ou les tables slectionnes en haut de la fentre. Une grille d'interrogation permet de dfinir l'ordre des tris, les critres de filtre (ou condition), les calculs, ...

Table

7. Dans la grille d'interrogation, vous slectionnez les champs que vous voulez voir apparatre dans l'affichage de la requte ou que vous utiliserez pour classer, filtrer les lignes. Vous dfinissez ventuellement : Les tris (ordre croissant, dcroissant) Les critres de filtre Les formules de calcul Une proprit pour la requte ou pour des colonnes affiches. 3.2.2. Choix de colonnes afficher dans une requte Pour afficher une colonne dans une requte, il faut cliquer sur la colonne, tout en maintenant le bouton de gauche enfonc, amenez la colonne sur la grille du bas et relchez le bouton ou double cliquer sur la colonne.

Grille d'interrogation

119

Remarque Pour afficher toutes les colonnes d'une ligne, vous slectionnez le champ *. Dans l'exemple ci-dessous, la slection du caractre * affiche dans la zone champ le terme Client.*

3.2.3. Visualisation du rsultat d'une requte Pour visualiser le rsultat de votre requte, vous cliquez sur le bouton . Le rsultat apparat sous la forme d'une feuille de donnes. Sa prsentation peut tre modifie (mme principe que dans un tableur).

En cliquant sur le bouton et vous pouvez la modifier.

, vous revenez sur l'cran de cration de votre requte

3.2.4. Enregistrement d'une requte Pour enregistrer la requte, cliquez sur le bouton
120

et donnez-lui un nom.

Remarque La grille d'interrogation des colonnes et de dfinition des critres gnre automatiquement des ordres de programmation SQL qui permettent d'obtenir le rsultat souhait. La requte sauvegarde mmorise les lignes de programmation et non pas le rsultat affich. Ces commandes seront tudies dans la partie relative au mode commande. 3.3. La dfinition des cls de tri Les donnes fournies par une requte peuvent tre classes selon une ou plusieurs cls. Pour trier le rsultat selon les donnes d'une colonne, il faut l'indiquer sur la ligne Tri en dessous de la colonne concerne. Plusieurs choix vous sont proposs : Croissant Dcroissant (Non tri) : pour ne pas trier. Exemples 1 Le tri dfini permet de classer les lignes de la table dans l'ordre croissant des noms des clients.

A l'excution, vous obtenez ...

Pour combiner les cls de tri, il suffit de placer les colonnes dans l'ordre du tri souhait et d'indiquer sous les colonnes concernes Croissant ou Dcroissant. Les tris sont traits de gauche droite. Exemples 2 On dsire afficher toutes les colonnes de la table Client selon l'ordre croissant des codes des clients.
121

A l'excution, vous obtenez ce rsultat :

Remarquez que les codes des clients sont affichs deux fois car ils sont pris en compte dans les deux champs Code_Client et Client.* Les colonnes de la table seront affiches selon l'ordre croissant des codes des clients. Le contenu de la colonne Date_Nais n'est pas affich car l'option d'affichage n'est pas active.

A l'excution, vous obtenez ...

3.4. Les critres de filtres Le rsultat de la recherche ne concerne que les lignes qui vrifient le filtre (un ou plusieurs critres de slection).

122

3.4.1. Recherche vrifiant un filtre relatif une colonne de type texte Exemples 1 Pour slectionner uniquement les lignes ayant le mot Sousse dans la colonne Adr_client, il faut crire Sousse sous le champ Adr_client et sur la ligne critre. Exemples 2 Il est possible d'exclure les lignes contenant un certain mot dans une colonne. Il faut crire <> ou pas devant le terme exclure.

Exemples 3 Il est possible de slectionner toutes les valeurs d'une colonne commenant par certains caractres. Le critre S* slectionne tous les mots commenant par cette lettre. Le caractre* reprsente un nombre de caractres quelconque aprs la lettres S. Remarque Le caractre * peut se placer diffrents endroits : - S* : le texte commence par la lettre S. - *re : le texte se termine par re. - *m* : le texte contient la lettre m. Le caractre * s'applique uniquement aux champs texte. Lorsque vous tapez un critre dans un champ Texte, certains SGBD ne font pas la distinction entre les majuscules et les minuscules. Par exemple, les critres fruit et Fruit sont vus identiquement. Attention aux caractres accentus, peche et pche sont diffrents. 3.4.2. Recherche vrifiant un filtre relatif une colonne de type numrique Exemple 1 Il est possible de slectionner les colonnes numriques contenant une certaine valeur.
123

Le critre = 1500,5 slectionne tous les champs contenant la valeur 1500,5 Les oprateurs de comparaison usuels ci-dessous peuvent tre appliqus : suprieur infrieur suprieur ou infrieur ou diffrent de gal gal gal > Exemple 2 Il est galement possible de slectionner des valeurs contenues dans un intervalle de valeurs. Un intervalle de valeurs s'obtient par : >= 1000 et <100000 Remarques Le critre >=3000 et <=5000 peut s'crire entre 3000 et 5000 Le ou est galement utilisable dans ce genre de critre. Par exemple, le critre <2000 ou >5000 permet d'afficher les champs contenant des valeurs plus petites que 2000 ou plus grandes que 5000. 3.4.3. Recherche vrifiant un filtre relatif une colonne de type date Les oprateurs de comparaison et leur utilisation sont les mmes que pour les colonnes de type numrique. Exemple Le critre utilis affiche touts les clients dont la date de naissance est suprieure au 01/01/1970. < >= <= <> =

Remarque Certains SGBD rajoutent automatiquement des # autour de la date. 3.4.4. La combinaison de critres Il est possible d'utiliser plusieurs critres de slection, il suffit dans ce cas de les placer dans les diffrentes lignes et colonnes de la grille. Si les critres sont placs sur la mme ligne, ils sont lis par un ET (une ligne est affiche si les deux critres sont remplis); Si les critres sont placs sur des lignes diffrentes, ils sont lis par un OU (une ligne est affiche si l'un des deux critres est rempli).

124

Exemple 1 Les critres utiliss permettent d'afficher les clients de Tunis dont le chiffre d'affaires de l'anne en cours est suprieur 10000. Exemple 2 On dsire afficher les clients dont le nom commence par R ou le prnom contient le caractre Y . 3.4.5. La dfinition d'une requte paramtre Il est possible que le critre d'une requte soit introduit dans une fentre de dialogue lors de son excution. Pour cela, une question crite entre des crochets [ ] est rdige sur la ligne critre. Exemple 2 A l'excution, une fentre de dialogue s'ouvre et permet d'introduire le critre de slection

3.4.6. Autres critres ... Il est possible en utilisant le critre est null ou =null de slectionner les colonnes vides. Exemple 1 On souhaite afficher les clients pour lesquels aucune observation n'a t saisie.

125

Contrairement au cas prcdent, le critre est pas null ou <>null permet d'afficher toutes les lignes colonnes contenant une donne. Exemple 2 On souhaite afficher uniquement les clients pour lesquels des observation ont t saisies.

3.5. Les formules Dans certains SGBD, les intituls des colonnes peuvent tre utiliss comme des variables. Quand une requte est excute, les lignes d'une table sont lues les unes aprs les autres. A chaque lecture d'une ligne, le contenu de ses diverses colonnes est mmoris dans ces variables. Exemple : A la lecture de la premire ligne, la colonne Code_Client contiendra S0010; la colonne Nom_Client contiendra Gloulou;... A la lecture de la deuxime ligne, la colonne Code_Client contiendra T0122; la colonne Nom_Client contiendra Attia; ... Cette proprit des colonnes sert la cration de formules permettant d'obtenir une nouvelle colonne ou une nouvelle valeur. 3.5.1. Exemple : concatnation A partir des donnes alphanumriques de deux colonnes, il est possible de crer une nouvelle donne en utilisant le symbole &. Les noms des colonnes sont crits entre des crochets [ ] dans la formule. Exemple Afin de concatner les deux colonnes Nom_Client et Prenom_Client, suivez les tapes dcrites au niveau du paragraphe 3.2.1 (Dmarche de cration d'une requte) puis rdigez sur la ligne Champ la formule suivante : [Nom_client]&[Prenom_client]

126

L'intitul Expr1 est cr automatiquement par le logiciel. Remarques Il est possible de choisir l'intitul de la nouvelle colonne en l'indiquant avant la formule.

Pour sparer les colonnes par un espace, il faut crire : [Nom_client]&" "&[Prenom_client] 3.5.2. Les champs calculs Les valeurs numriques contenues dans une table peuvent tre utilises dans les requtes pour obtenir de nouvelles valeurs. Une colonne calcule est compose de deux parties : le nom donn cette formule (qui sera le nom de cette nouvelle colonne et qui sera utilis comme libell dans l'en-tte de la colonne); un calcul utilisant les diffrents oprateurs mathmatiques +, -, /, *, et les ()

Exemple Pour obtenir le prix total de chaque article en stock, il faut crire la formule suivante (expression) : Prix total:[PU]*[Qte_stock], o Prix total: est le nom donn la nouvelle colonne qui sera utilis dans la feuille de donnes et o les noms des colonnes de la table utiliss dans la formule sont crit entre des crochets [ ].

127

3.6. Les proprits d'une colonne ou d'une requte Il est possible de mettre des proprits sur les colonnes affiches concernant les valeurs ou les dates. Par exemple, le contenu d'une colonne numrique est affich avec 2 dcimales, le contenu d'une colonne date est affich en indiquant le nom du mois au complet. Dmarche suivre 1.Dans la zone des critres, cliquez ct du nom de la colonne et cliquer sur le bouton afin d'afficher la fentre des proprits ; 2.Slectionnez le format et le nombre de dcimales pour l'affichage des valeurs. Pour obtenir une requte qui affiche les 5 premires lignes correspondant aux critres de slection, il est ncessaire de modifier les proprits de la requte. Dmarche suivre 1. Cliquer sur l'aire grise situe ct de la table et cliquer sur le bouton afin d'afficher la fentre des proprits de la requte. 2. Indiquer le nombre de lignes afficher vis--vis de premires valeurs. Cela peut-tre un nombre ou un pourcentage. Remarque Par dfaut, toutes les lignes sont affiches. Pour revenir la situation initiale, il faut simplement effacer le champ vis--vis de Premires valeurs. 3.7. Requte slection base sur des calculs Dans une table, on trouve des informations relatives des lignes de mme nature (Exemple : 1 ligne = 1 employ). Toutefois on peut souvent en tirer d'autres informations, par exemple si la table contient l'adresse de chaque employ et son salaire, on doit pouvoir en dduire la liste de toutes les villes reprsentes dans la table ainsi que le salaire total des employs. On utilise dans ce cas des requtes avec option de regroupement en activant la ligne dite Opration . La ligne opration est active ou dsactive en cliquant sur le bouton . Elle permet principalement d'utiliser des fonctions de statistique suivantes : Somme : Totalise toutes les valeurs d'une colonne. Moyenne : Calcule la moyenne de toutes les valeurs d'une colonne. Minimum : Calcule la valeur la plus petite dans une colonne. Maximum : Calcule la valeur la plus grande dans une colonne. Compte : Affiche le nombre total des lignes rpondant un critre.
128

Exemple La table ci-dessous contient les informations concernant les employs d'une entreprise.

A partir de cette table et en utilisant la ligne opration, il est possible d'obtenir ...
Avec la fonction Somme On obtient le montant total des salaires verss

A.

B.

Ou encore avec la fonction Max

A l'excution vous obtenez le salaire le plus lev ....

C.

Avec la fonction Compte

A l'excution vous obtenez le salaire le plus lev ....

Le calcul peut tre limit certains critres en utilisant la fonction o A l'excution, vous obtenez D.

Dans le calcul, seules les lignes concernant les vendeurs sont pris en compte.
129

3.8. Les requtes multi-tables Par moments, on a besoin de rechercher des donnes appartenant deux tables. Dans ce cas ces tables doivent avoir au moins une colonne en commun. L'opration est dite dans ce cas jointure. 3.8.1. La cration d'une jointure Dmarche suivre Cliquez dans la premire table sur le nom de la colonne lier, laissez le bouton de gauche enfonc et glissez ce nom vers le nom de la colonne correspondant situ dans la deuxime table.

3.8.2. La proprit de la jointure

Par dfaut, la jointure inclus seulement les lignes des deux tables pour lesquelles les colonnes jointes sont gales. Selon le type de requte, il est ncessaire de modifier la proprit de la jointure pour voir apparatre toutes les lignes de l'une des deux tables. Un double-clique sur la jointure permet d'ouvrir la fentre des proprits ... Certains SGBD offrent plusieurs options de jointure. Ici, seules les lignes ayant une donne identique dans les colonnes qui les lient seront affiches. Exemple Soient les tables : T_Joueurs

130

T_Equipes

Dans cet exemple, seuls les joueurs faisant partie d'une quipe sont pris en considration dans la requte.

La requte affiche :

3.9. Echange de donnes avec un tableur Dans le cas o les donnes insrer dans une table existent dj dans un fichier cr par un tableur, il est plus intressant de les rcuprer directement dans la table correspondante. Cette opration est appele importation. La mme opration peut tre effectue dans le sens inverse : des donnes d'une tables peuvent tre envoyes vers un fichier. Cette opration est dite exportation. Nous allons prsenter chacune de ces oprations dans les sections qui suivent. 3.9.1. Importation de donnes partir d'un tableur Il est possible d'importer, dans une base de donnes, une table de donnes ralise l'aide d'un logiciel tableur. Dmarche suivre 1. Slectionner dans le menu Fichier , la commande Donnes externes, puis la rubrique Importer .
131

2. Dans la fentre Importer , slectionner le type de fichiers (Microsoft Excel (*.xls) par exemple) et votre document. Cliquer sur le bouton pour continuer.

3. Une fentre Assistant s'ouvre. Elle vous permet de slectionner la feuille de votre document que vous voulez importer. 4. L'tape suivante permet d'indiquer que le contenu de la premire ligne de la feuille de calcul correspondra aux noms des champs sous Access. 5. Les donnes de la feuille peuvent tre mmoriss dans une nouvelle table, voir rajouter une table Access qui a videmment la mme structure 6. Dans cette tape, l'assistant vous demande si le premier champ correspondra la cl primaire. Confirmer les options proposes

7. Laisser Access grer la clef primaire. Elle aura la proprit NumroAuto.

132

8. Indiquer le nom de la table et cliquer sur le bouton.

3.9.2. Exportation des donnes vers un tableur Une table peut tre exporte vers une feuille de calcul. La procdure est trs simple. Dmarche suivre 1. Slectionner la table dont vous souhaitez exporter le contenu.

2. Dans le menu Fichier, slectionner la commande Exporter .

3. Dans la fentre Exporter , slectionner le type de fichier et votre document. Cliquer ensuite le bouton.

4. Manipulation de donnes en mode commande Comme pour la manipulation des donnes en mode assist, la manipulation des donnes en mode commande est compose de deux types de commandes : commandes de mise jour d donnes et commande de consultation (ou recherche) de donnes.
133

4.1. Mise jour de donnes La mise jour des tables d'une base de donnes relationnelle se fait l'aide de trois commandes : la commande d'insertion, la commande de modification et la commande de suppression de lignes. 4.1.1. Insertion de lignes L'opration d'ajout de nouvelles donnes consiste insrer de nouvelles lignes dans une table dont la structure a t dj cre dans la base. La commande du langage SQL permettant d'insrer une ligne dans une table est la commande INSERT. La forme gnrale de cette commande est la suivante : INSERT INTO nom_table [ liste_Nom_colonne] VALUES (liste_valeur) Le paramtre liste_Nom_colonne sert prciser la liste des colonnes dans lesquelles va s'effectuer l'opration d'insertion. Cette liste peut tre omise dans le cas o l'opration d'insertion concerne toutes les colonnes de la table. Dans ce cas, l'ordre des valeurs fournies par le paramtre liste_valeur doit tre le mme que celui des colonnes donnes pour la commande CREATE TABLE. Pour que l'opration d'insertion puisse tre excute, les conditions suivantes doivent tre respectes : 1. Les types des donnes de liste_valeur doivent tre compatibles avec ceux des colonnes de la table, 2. Unicit des lignes (contrainte de cl primaire), 3. Caractre obligatoire associ une colonne (clause NOT NULL), 4. Existence de la valeur dans une autre table quand il s'agit d'une cl trangre (contrainte d'intgrit rfrentielle) : ncessit de respecter un certain ordre lors de l'insertion des lignes 5. Vrification d'une condition de validit (contrainte valeur : clause CHECK). Remarque Pour excuter les commandes SQL donnes dans ce chapitre, on doit disposer d'un diteur SQL permettant la saisie, l'excution et l'affichage des rsultats. La plupart des SGBD disposent de tels diteurs.

134

Un exemple d'diteur est fourni en annexe 2. Exemples Objectif : Apprendre ajouter des nouvelles lignes une table. Enonc : On souhaite insrer un nouveau client la base de donnes. On suppose dans la suite que les commandes SQL suivantes ont t excutes pour crer les tables Client, Commande, Article et Dtail_commande : CREATE TABLE client( code_client VARCHAR(20) PRIMARY KEY, Nom_client VARCHAR (20) NOT NULL, Prnom_client VARCHAR(30), Adr_client VARCHAR (100) NOT NULL, Tel_client VARCHAR (20), email_client VARCHAR (50), Chiffre_Affaires_Anne_encours DECIMAL(10,3), Cumul_Chiffre_Affaires DECIMAL(12,3) ); CREATE TABLE commande( num_comm VARCHAR(20) PRIMARY KEY, date_comm DATE NOT NULL, code_client VARCHAR(20) REFERENCES client(code_client) ); CREATE TABLE article( code_art VARCHAR(20) PRIMARY KEY, des_art VARCHAR (50) NOT NULL, PU DECIMAL(8, 3) CHECK (PU > 0), Qte_stock INT(5) DEFAULT 0 CHECK (qte_stock >= 0) ); CREATE TABLE dtail_commande(
num_comm VARCHAR(20) REFERENCES commande ON DELETE CASCADE,

Num_ligne

INT(4),

code_art VARCHAR(20) REFERENCES article(code_art) ON DELETE CASCADE,

Qte_comm INT(5) CHECK (qte_comm > 0), Constraint pk_detail PRIMARY KEY (num_comm, num_ligne) ); Question 1 : Rajouter un nouveau client en prcisant explicitement toutes les colonnes.
135

Exemple 1 On souhaite insrer un nouveau client en prcisant explicitement toutes les colonnes. On doit donc prciser toutes les valeurs insrer explicitement. La commande SQL permettant cette insertion est la suivante : INSERT INTO Client (code_client, Nom_client, Prnom_client, Adr_client, Tel_client,email_client,Chiffre_Affaires_Anne_encours, Cumul_Chiffre_Affaires) ALUES (1000,'TOUNSI', 'Fares''25 Rue des roses 2036 Ariana', "(216)71850310", "Tounsi.Fares@edunet.tn", 0, 0); Remarque Compte tenu que chaque colonne, de la table Client, reoit une valeur et que l'ordre de ces valeurs est le mme que celui des colonnes, on aurait pu dans ce cas omettre de prciser ces colonnes. Dans ce cas, la commande devient : INSERT INTO Client ALUES (1000,'TOUNSI','Fares','25 Rue des roses 2036 ariana', "(216)71850310", "Tounsi.Fares@edunet.tn", 0, 0); Exemple 2 On souhaite toujours l'insertion d'une ligne dans la table Client, en prcisant explicitement toutes les valeurs, mais cette fois dans un ordre diffrent que celui des colonnes. Dans ce cas on doit prciser la liste des colonnes de la table Client dans le mme ordre que celui des valeurs. La commande SQL sera alors la suivante : INSERT INTO Client (Nom_client, Prnom_client, code_client, Tel_client, Adr_client, email_client) VALUES ('BENZARTI','Yasmine',1010,'98850310', '12 Av de la libert 2035 Beja', "Yasmine.Benzarti@is.rnu.tn"); Exemple 3 On souhaite insrer un nouveau client pour lequel on ne dispose que de valeurs relatives certaines colonnes de cette table. Ces colonnes sont : code client, son nom et son adresse. Dans ce cas on doit donner les colonnes, qui sont concernes, dans le mme ordre que ces valeurs. La commande SQL sera alors la suivante : INSERT INTO Client (Nom_client, code_client, Adr_client) VALUES ('Banque Nationale Agricole',1020, '130 Bis Av Mohamed V 2080 Ben Arous'); Remarque Les colonnes, de la table Client, qui sont absentes ne sont soumises aucune des contraintes d'intgrit. Ces colonnes recevront une NULL au moment de l'insertion de la ligne.
136

Exemple 4 On souhaite l'insertion d'une ligne au sein de la table Client, en prcisant explicitement les valeurs relatives son nom et son adresse. La commande SQL sera alors la suivante : INSERT INTO Client (Nom_client, Adr_client) VALUES ('Le Magasin Gnral', 'Cit Mahragne 1004 El Manzah); Remarque Cette commande ne peut pas tre excute cause de la contrainte d'intgrit PRIMARY KEY qui est viole. Les attributs constituant la cl primaire doivent obligatoirement tre prsents. Exemple 5 On souhaite l'insertion d'une ligne au sein de la table Client, en prcisant explicitement les valeurs relatives son nom, son prnom et son code. La commande SQL sera alors la suivante : INSERT INTO Client (Nom_client, Prnom_client, code_client) VALUES ('SOUSSI','Nesrine',1040); Remarque Cette commande ne peut pas tre excute cause de la contrainte d'intgrit NOT NULL pour la colonne Adr_client qui n'a pas t respecte ici. Exemple 6 On souhaite l'insertion d'une ligne au sein de la table Client, en prcisant explicitement les valeurs relatives au code client, son nom et son adresse. La commande SQL sera alors la suivante : INSERT INTO Client (Nom_client, code_client, Adr_client) VALUES ('Banque de l''Habitat', 1010, '65 Av Mongi Slim 1002 Tunis'); Remarque Cette commande ne peut pas tre excute cause de la contrainte d'intgrit d'unicit de la cl primaire qui n'a pas t respecte. Le code client 1010 a t dj attribu. Exemple 7 On souhaite l'insertion d'une ligne au sein de la table Commande. La commande SQL sera alors la suivante : INSERT INTO Commande VALUES (50010,'09/05/2007',2050); Remarque Cette commande ne peut pas tre excute cause de la contrainte d'intgrit FOREIGN KEY (contrainte d'intgrit rfrentielle) qui est viole. En effet, le client ayant le code gal 2050 n'existe pas dans la table Client.
137

Exemple 8 On souhaite l'insertion d'une ligne au sein de la table Article. La commande SQL sera alors la suivante : INSERT INTO Article VALUES (7050'Informatique 4me Anne Mathmatiques, Sciences et Techniques',500,0); Remarque Cette commande ne peut pas tre excute cause de la contrainte d'intgrit CHEK qui n'a pas t respecte. En effet, le prix unitaire d'un article doit respecter la condition qui a t fixe strictement suprieur zro. 4.1.2. Suppression de lignes L'opration de suppression de donnes consiste liminer une ou plusieurs lignes existantes partir d'une table. La commande du langage SQL permettant de supprimer des lignes d'une table est la commande DELETE. La forme gnrale de cette commande est la suivante : DELETE FROM nom_table [WHERE condition] La clause WHERE est optionnelle. Si elle est absente, dans ce cas, toutes les lignes de la table concerne seront supprimes. Le paramtre condition qui apparat dans la clause WHERE sert indiquer la condition qui doit tre vrifie par les lignes supprimer. En cas o la commande de suppression ne respecte pas une contrainte d'intgrit rfrentielle, elle ne peut pas aboutir. La suppression d'une ligne appartenant une table donne peut entraner la suppression d'autres lignes appartenant d'autres tables lorsqu'il existe des contraintes d'intgrit rfrentielles de suppression en cascade : utilisation de la clause ON DELETE CASCADE dans la dfinition des cls trangres. Exemples

Objectif :
Apprendre supprimer des donnes appartenant une base de donnes.

Enonc : On souhaite supprimer des lignes appartenant des tables de la base de donnes. On suppose, qu'avant la suppression, les commandes SQL suivantes ont t excutes : INSERT INTO Client VALUES (1000,'TOUNSI','Ridha' '25 Rue Ibn Khouldoun 2036 Ariana', '(216)71850310','Tounsi.Ridha@edunet.tn');
138

INSERT INTO Client VALUES (1010, 'BENZARTI',' Ahmed', '125 Av de la libert 2035 Le Kram', '(216) 98850310', ' Ahmed.Benzarti @ ensi.rnu.tn'); Exemple 1 On souhaite supprimer tous les clients. La commande SQL permettant de rpondre la question est donc la suivante : DELETE FROM Client ; Remarque Dans la base de donnes, il n'existe que les deux lignes cres par les commandes INSERT qui prcdent la suppression. La commande DELETE sera donc excute et toutes les lignes de la table clients seront supprimes. Exemple 2 On suppose maintenant, qu'avant la suppression, les commandes SQL suivantes ont t excutes : INSERT INTO Client VALUES (1000,'TOUNSI','Ridha','25 Rue Ibn Khouldoun 2036 Ariana', '(216)71850310','Tounsi.Ridha@edunet.tn'); INSERT INTO Client VALUES (1010, 'BENZARTI',' Ahmed', '125 Av de la libert 2035 Le Kram','(216) 98850310', ' Ahmed.Benzarti @ ensi.rnu.tn'); INSERT INTO Commande VALUES (50010,'09/05/2007',1010); INSERT INTO Commande VALUES (70150,'20/07/2007',1000); La commande SQL permettant de rpondre la question est la mme que la prcdente. Elle sera donc : DELETE FROM Client; Remarque Contrairement l'exemple prcdent, la commande DELETE ne sera pas excute et aucune ligne de la table Client ne sera supprime cause de la contrainte d'intgrit rfrentielle qui est viole. En effet, on ne peut pas supprimer des clients qui ont encore des commandes dans la base. Les exemples qui suivent consistent supprimer des donnes respectant certaines conditions.
139

Exemple 3 Supprimer les dtails des commandes ayant une quantit commande (qte_comm) infrieure 150 units. On suppose, qu'en plus des commandes SQL de l'exemple prcdent, les commandes suivantes ont t excutes : INSERT INTO Article VALUES (7050,'Informatique 4me Anne Mathmatiques, Sciences et Techniques',4000,500); INSERT INTO Article VALUES (1020,'4 Stylos Feutres Pointes Fines : Rouge, Jaune,Vert et Bleu',1500,3000); INSERT INTO detail_Commande VALUES (50010,1,7050,200); INSERT INTO detail_Commande VALUES (50010,2,1020,300); INSERT INTO detail_Commande VALUES (70150,1,7050,120); INSERT INTO detail_Commande VALUES (70150,2,1020,4000); La commande SQL permettant de rpondre la question est donc la suivante : DELETE FROM detail_Commande WHERE qte_comm < 150 ; Remarque La commande DELETE sera excute et la ligne de la table Detail_Commande qui contient les valeurs (70150,1, 7050,120) sera supprime.

Exemple 4 Supprimer l'article ayant un code gal 7050. La commande SQL permettant de rpondre la question est la suivante : DELETE FROM Article WHERE code_art = 7050; Remarque La commande DELETE sera excute : La ligne de la table Article qui contient les valeurs (70150, 'Informatique 4me Anne Mathmatiques, Sciences et Techniques', 4000,500) sera supprime puisqu'elle vrifie la condition de suppression. De mme la ligne de la table detail_Commande qui contient les valeurs (50010,1,7050,200) sera galement supprime puisqu'elle doit respecter la contrainte d'intgrit rfrentielle (ON DELETE CASCADE) dfinie au moment de la cration de cette table.

140

Exemple 5 Supprimer la commande ayant un numro (num_comm) gal 50010. La commande SQL permettant de rpondre la question est la suivante : DELETE FROM Commande WHERE num_comm = 50010; Remarque La commande DELETE ne sera pas excute cause de la contrainte d'intgrit rfrentielle qui risque d'tre viole. En effet, on a encore, dans la table detail_Commande, une ligne qui contient les valeurs (50010,2,1020,300) et qui se rfre la commande numro 50010. 4.1.3. Modification de lignes L'opration de mise jour de donnes consiste en la modification de colonnes, appartenant une table, qui contiennent des donnes qui ne sont plus conformes la ralit. La commande du langage SQL permettant de modifier le contenu d'une table est la commande UPDATE. La forme gnrale de cette commande est la suivante : UPDATE nom_table SET Nom_colonne1 = Expression1 [ , Nom_colonne2 = Expression2 ] [WHERE condition] La modification peut toucher une ou plusieurs colonnes. Les valeurs des colonnes identifies par Nom_colonne1, Nom_colonne2, , Nom_colonnen sont modifies dans toutes les lignes qui vrifient la condition de la clause WHERE. En cas o cette dernire est absente, toutes les lignes de la table sont mises jour. Les paramtres donns par expression1, expression2 , expressionn peuvent faire rfrence aux anciennes valeurs de la ligne mettre jour. Le rsultat d'valuation de chaque expressioni remplace l'ancienne valeur de la colonne identifie par Nom_colonnei. Les principaux cas pour lesquels l'ordre UPDATE ne peut aboutir sont les mmes que ceux qui ont ts indiqus pour l'ordre INSERT. Exemples

Objectif : Apprendre mettre jour des donnes qui ne sont plus conformes la ralit. Enonc : On souhaite modifier contenu de colonnes d'une table appartenant la base de donnes.

141

On suppose dans la suite que les commandes SQL suivantes ont t excutes : INSERT INTO Client VALUES (1000,'TOUNSI','Ridha','25 Rue Ibn Khouldoun 2036 Ariana','(216)71850310','Tounsi.Ridha@edunet.tn'); INSERT INTO Commande VALUES (70150, '20/07/2007',1000); INSERT INTO Article VALUES (7050,'Informatique 4me Anne Mathmatiques, Sciences et Techniques',4000,500); INSERT INTO Article VALUES (1020,'4 Stylos Feutres Pointes Fines : Rouge, Jaune, Vert et Bleu',1500,3000); INSERT INTO detail_Commande VALUES (50010,1,7050,200); INSERT INTO detail_Commande VALUES (50010,2,1020,300); INSERT INTO detail_Commande VALUES (70150,1,7050,120); INSERT INTO detail_Commande VALUES (70150,2,1020,4000); Les deux exemples qui suivent consistent mettre jour toutes les lignes d'une table. Exemple 1 Initialiser zro le cumul des chiffres d'affaires de tous les clients. Cette question porte donc sur la modification du contenu d'une seule colonne. Elle concerne toutes les lignes de la table Client. La commande SQL permettant de rpondre la question est donc la suivante : UPDATE Client SET Cumul_Chiffre_Affaires = 0; Remarque Aucune contrainte d'intgrit n'est viole par cette commande. Elle sera donc excute et toute la colonne relative au cumul des chiffres d'affaires de la table client sera gale zro. Exemple 2 Supposons que nous sommes le 31 Dcembre et qu'on doit cette date ajouter au cumul des chiffres d'affaires le montant du chiffre d'affaires de l'anne en cours. On peut par la mme occasion prvoir la prparation de la colonne relative aux chiffres d'affaires des clients pour l'anne prochaine. Cette question porte sur la modification du contenu de deux colonnes (colonne des chiffres d'affaires de l'anne en cours et celle du cumul des chiffres d'affaires). Comme pour le cas prcdent, elle concerne toutes les lignes de la table Client.
142

La commande SQL permettant de rpondre la question est donc la suivante : UPDATE Client SET Cumul_Chiffre_Affaires = Cumul_Chiffre_Affaires + Chiffre_Affaires_Anne_encours, Chiffre_Affaires_Anne_encours = 0; Les exemples qui suivent consistent mettre jour des lignes d'une table qui vrifient une certaine condition. Exemple 3 Mettre jour le prnom du client dont le code est gal 1020. Cette question porte donc sur la modification du contenu d'une seule colonne. Elle concerne des lignes, vrifiant une condition. La commande SQL permettant de rpondre la question est donc la suivante : UPDATE Client SET Nom_client = 'BEJI', Prnom_client = 'Fares' WHERE code_client = 2050; Remarque Aucune contrainte d'intgrit n'est viole par cette commande. Elle sera donc excute et toute la colonne relative au prnom des clients de la table client sera mise jour et ce pour les lignes vrifiant la condition exige. Exemple 4 Mettre jour, NULL, les dates des commandes faites par le client dont le code est gal 2050. La commande SQL permettant de rpondre la question est donc la suivante : UPDATE Commande SET date_comm = NULL WHERE code_client = 2050; Remarque Cette commande ne peut pas tre excute cause de la contrainte d'intgrit (NOT NULL) relative la date de commande qui n'est pas respecte. Exemple 5 Mettre jour la quantit en stock du produit dont le code est gal 7050 en lui retranchant une quantit gale 10. La commande SQL permettant de rpondre la question est donc la suivante : UPDATE Article SET Qte_stock = Qte_stock - 10 WHERE code_art = 7050;
143

Remarque Cette commande ne peut pas tre excute cause de la contrainte d'intgrit relative la quantit en stock (devant tre > 0) qui n'est pas respecte. La quantit en stock initiale du produit en question est gale zro. 4.2. Recherche de donnes : requtes La recherche de donnes est une opration qui consiste en la recherche de donnes appartenant la base. Cette recherche peut tre ralise en faisant rfrence une ou plusieurs tables. Elle peut se rfrer une partie ou la totalit des colonnes des tables concernes tout en tant, ventuellement, conditionnelle. Une recherche peut consister effectuer : - Une projection sur certaines colonnes d'une table - Une slection sur certaines lignes d'une table - Une jointure sur deux tables - Toute combinaison de projection, slection et jointure. La commande permettant d'effectuer une recherche dans une base de donnes est la commande SELECT. 4.2.1. Recherche de colonnes partir d'une table : Projection Souvent, l'utilisateur n'a besoin que d'un sous-ensemble des colonnes d'une table. L'opration correspondante dans SQL s'appelle projection. Elle ne concerne qu'une seule table de la Base de Donnes. Le rsultat de la projection doit comporter au moins une colonne de la table. Cependant, toutes les lignes relatives cette colonne feront parti du rsultat. La forme gnrale de la commande de projection est la suivante : SELECT [DISTINCT] * / liste_Nom_colonne FROM nom_table Le paramtre liste_Nom_colonne sert prciser la liste des colonnes, que l'on veut voir affiches. Le paramtre liste_Nom_colonne peut tre remplac par * qui dsigne toutes les colonnes de la table. L'ordre d'affichage du rsultat donn par le contenu des colonnes est le mme que celui indiqu par le paramtre liste_Nom_colonne. Dans le cas o le paramtre * est donn, l'ordre sera celui spcifi dans la structure de la table. Le paramtre DISTINCT sert liminer les lignes en double dans le rsultat puisque la commande SELECT peut ramener des doublons si la cl primaire ne figure pasdans la liste des colonnes afficher). Le paramtre nom_table sert se rfrer la table concerne par l'opration de slection. Le rsultat de la commande SELECT est une nouvelle table rsultat de l'opration de projection de la table initiale.
144

Par dfaut, les colonnes de la table rsultat portent les mmes noms que ceux de la table de dpart. Il est possible de donner aux colonnes de la table rsultat des noms diffrents de ceux de la table d'origine. On doit dans ce cas donner une entte de colonne juste aprs son nom donn par le paramtre liste_Nom_colonne. Cette entte est gnralement appele Alias. Exemples

Objectif : Apprendre rechercher des donnes relatives une opration relationnelle de projection. Enonc : On souhaite afficher des colonnes appartenant la table Client.
Exemple 1 Donner les codes, noms et prnoms de tous les clients. La commande SQL permettant de rpondre la question est la suivante : SELECT code_client, Nom_client, Prnom_client FROM Client; Remarque Les colonnes demandes par la commande SELECT seront affiches avec comme enttes des colonnes d'affichage les noms des colonnes de la Table Client. Exemple 2 Donner les caractristiques de tous les clients. La commande SQL permettant de rpondre la question est la suivante : SELECT * FROM Client; Remarque Toutes les colonnes de la Table Client seront affiches. Exemple 3 Donner les codes, noms et prnoms de tous les clients. Au moment de l'affichage, les enttes des colonnes doivent tre respectivement 'Code du Client', 'Nom du Client' et 'Pnom du Client'. La commande SQL permettant de rpondre la question est la suivante : SELECT code_client 'Code Client', Nom_client 'Nom Client', Prnom_client 'Prnom Client' FROM Client;
145

Exemple 4 Donner les chiffres d'affaires de l'anne en cours de tous les clients. La commande SQL permettant de rpondre la question est la suivante : SELECT Chiffre_Affaires _Anne_encours FROM Client; Remarque La colonne relative aux chiffres d'affaires de l'anne en cours sera affiche. En cas o plusieurs clients ont le mme montant, on aura plusieurs lignes affiches avec ce mme montant. Exemple 5 Donner les chiffres d'affaires de l'anne en cours de tous les clients. L'affichage d'un montant doit se faire une seule fois en cas d'galit de certains montants. La commande SQL permettant de rpondre la question est la suivante : SELECT DISTINCT Chiffre_Affaires _Anne_encours FROM Client; Exemple 6 Donner la liste des produits et pour chacun calculer la valeur du stock. La commande SQL permettant de rpondre la question est la suivante : SELECT des_art 'Dsignation Produit', PU 'Prix Unitaire', Qte_stock 'Quantit Stock', PU*Qte_stock 'Valeur Stock' FROM Article; Remarque La colonne rsultat, relative la valeur du stock, sera calcule partir du prix unitaire et la quantit en stock. 4.2.2. Recherche de lignes partir d'une table : Slection Souvent, l'utilisateur n'a besoin que d'un sous-ensemble des lignes d'une table. L'opration correspondante dans SQL s'appelle slection. Elle ne concerne qu'une seule table de la Base de Donnes. La diffrence par rapport l'opration de projection c'est que le rsultat est compos d'un sous-ensemble de lignes de la table et de toutes ses colonnes. La slection est souvent combine avec la projection. Dans ce cas le rsultat est un sous ensemble de lignes et de colonnes de cette table. La forme gnrale de la commande de slection est la suivante : SELECT [DISTINCT] * / liste_Nom_colonne FROM nom_table WHERE condition
146

Le paramtre condition sert prciser le critre (ou prdicat) qui doit tre vrifi par les lignes afficher. Ce prdicat est donn sous la forme d'une expression logique. Si le rsultat de l'valuation de l'expression logique est vrai, pour une ligne, celle-ci fera partie du rsultat. Dans l'expression logique, on peut utiliser en particulier : 1. Les oprateurs de comparaison : =, >, <, >=, <= et <>. 2. L'oprateur BETWEEN pour les intervalles de valeurs, bornes incluses. 3. L'oprateur IN pour les listes de valeurs. 4. L'oprateur IS NULL et IS NOT NULL pour les valeurs indtermines. 5. L'oprateur LIKE pour filtrer une chane de caractres. 6. Les oprateurs logiques : AND, OR et NOT. Exemples

Objectif : Apprendre rechercher des donnes relatives une opration relationnelle de slection. Enonc : On souhaite afficher certaines lignes appartenant la table Client.
Exemple 1 Donner la liste des clients qui ont atteint ou dpass un chiffre d'affaires de 100000 Dinars de l'anne en cours. La commande SQL permettant de rpondre la question est la suivante : SELECT * FROM Client WHERE Chiffre_Affaires _Anne_encours >= 100000; Remarque Toutes les colonnes de la table Client sont concernes, mais seules les lignes qui vrifient la condition indique feront parti du rsultat. Exemple 2 On demande la mme liste que l'exemple prcdent sauf qu'on ne s'intresse qu'aux colonnes relatives aux noms et aux prnoms. La commande SQL permettant de rpondre la question est la suivante : SELECT Nom_client 'Nom du Client', Prnom_client 'Prnom Du Client' FROM Client WHERE Chiffre_Affaires _Anne_encours >= 100000;

147

Exemple 3 Donner la liste des clients qui ont un cumul des chiffres d'affaires compris entre 500000 et 800000 et dont le code appartient l'ensemble (1000, 1010, 1050, 1090) et qui ont, une adresse qui commence par la lettre 'T' ou qui a comme deuxime caractre la lettre 'O'. La commande SQL permettant de rpondre la question est la suivante : SELECT * FROM Client WHERE Cumul_Chiffre_Affaires BETWEEN 500000 AND 800000 AND code_client IN (1000, 1010, 1050, 1090) AND (Adr_client IS NULL OR Adr_client LIKE 'T%' OR Adr_client LIKE '_O%'); Remarques Les valeurs 500000 et 800000, utilises avec l'oprateur BETWEEN, sont les bornes de l'intervalle. Les valeurs de l'ensemble de l'oprateur IN doivent tre donnes entre (). Le caractre % utilis avec l'oprateur LIKE sert remplacer une liste de caractres qui peuvent tre quelconques (y compris vide). Le caractre _, par contre, sert remplacer un seul caractre. Pour remplacer deux caractres, il suffit de mettre deux fois successives le caractre _. 4.2.3. Recherche de donnes partir de plusieurs tables : Jointure Dans certaines situations, l'utilisateur a besoin de donnes provenant de plusieurs tables diffrentes de la Base de Donnes. Il s'agit dans ce cas d'une opration de jointure. La forme gnrale de la commande de Jointure est la suivante : SELECT [DISTINCT] * / liste_Nom_colonne FROM nom_table1 [alias1], nom_table2 [alias2] WHERE condition L'opration relationnelle de jointure ralise une liaison entre deux tables en se basant sur l'galit des valeurs entre l'une des colonnes de chaque table. Un alias permet de donner un nom synonyme, abrg, une table. Il permet d'allger l'criture de la commande SELECT en cas d'ambigut. Le paramtre condition sert, particulirement, prciser la condition de jointure. Cette condition ne doit pas tre confondue avec celle indique pour l'opration relationnelle de slection. La condition de jointure doit porter sur les colonnes en commun aux tables utilises pour l'opration de jointure (voir contrainte d'intgrit rfrentielle : cl primaire - cl trangre).

148

Exemples

Objectif : Apprendre rechercher des donnes relatives une opration relationnelle de jointure. Enonc : On souhaite afficher certaines lignes appartenant aux tables Client et Commande.
Exemple 1 Donner la date de chaque commande ainsi que le nom et le prnom du client qui a fait la commande. La commande SQL permettant de rpondre la question est la suivante : SELECT Nom_client, Prnom_client, date_comm FROM Client, Commande WHERE Client.code_client = Commande.code_client; Remarques Pour lever toute ambigut sur les noms des colonnes, nous avons prcis les noms des tables comme prfixes, mais il est possible de simplifier en utilisant des alias. La commande devient alors : SELECT Nom_client, Prnom_client, date_comm FROM Client X, Commande Y WHERE X.code_client = Y.code_client; Si un mme client peut faire plusieurs commandes, le mme jour, et qu'on ne veut pas avoir de doublons dans le rsultat, la commande devient : SELECT DISTINCT Nom_client, Prnom_client, date_comm FROM Client X, Commande Y WHERE X.code_client = Y.code_client; Exemple 2 Donner le numro et la date de chaque commande ainsi que les quantits commandes et les dsignations des articles correspondants. La commande SQL permettant de rpondre la question est la suivante : SELECT C.num_comm, date_comm, Qte_comm, des_art FROM Commande C, dtail_commande D, article A WHERE (C.num_comm=D.num_comm) AND (D.code_art=A.code_art); Remarque Trois relations ont t utilises pour rpondre ce besoin. Deux oprations de jointure seront donc excutes : la premire entre les tables Commande et dtail_commande et la seconde entre le rsultat obtenu et la table Article.
149

Exemple 3 Mme besoin que l'exemple prcdent sauf que les commandes qui nous intressent sont celles qui sont relatives des produits dont la quantit en stock est suffisante. La commande SQL permettant de rpondre la question est la suivante : SELECT C.num_comm, date_comm, Qte_comm, des_art FROM Commande C, dtail_commande D, article A WHERE (Qte_stock <= Qte_comm AND C. num_comm = D. num_comm) AND (D. code_art = A. code_art); Remarque Dans cet exemple, la condition de Jointure, nous avons ajout une condition de slection. Exemple 4 Donner la liste des clients qui ont atteint les mmes montants des chiffres d'affaires de l'anne en cours. La commande SQL permettant de rpondre la question est la suivante : SELECT DISTINCT X.Nom_client, X.Prnom_client, X.Chiffre_Affaires_Anne_encours FROM Client X, Client Y WHERE X.Chiffre_Affaires_Anne_encours = Y.Chiffre_Affaires _Anne_encours); Remarque Dans cet exemple nous avons utilis deux fois la mme table. Il s'agit d'une opration d'auto-jointure. Dans ce cas l'utilisation d'un alias dans la commande SELECT devient indispensable. 4.2.4. Recherche de donnes avec Tri Certaines requtes ont besoin de rechercher des donnes de la Base et d'avoir un rsultat qui soit tri selon un ordre croissant ou dcroissant des valeurs d'une ou de plusieurs colonnes. La forme gnrale de la commande de recherche est la suivante : SELECT [DISTINCT] * / liste_Nom_colonne FROM nom_table1 [alias1] [, nom_table2 [alias2] ] [WHERE condition] ORDER BY Nom_colonne1 [ASC / DESC] [, Nom_colonne2 [ASC / DESC] ] La clause ORDER BY sert exiger le classement (ou tri) du rsultat. Le classement peut se faire selon un ordre croissant (ASC) ou dcroissant (DESC) des valeurs d'une ou de plusieurs colonnes. Ces dernires sont donnes par le paramtre Nom_colonne, et elles doivent obligatoirement figurer parmi celles indiques par le paramtre liste_Nom_colonne.
150

Par dfaut c'est l'ordre croissant (ASC) qui est pris en considration. Les lments dont les valeurs des colonnes concernes par le tri sont indtermines (NULL) sont donns ensemble de manire successive. Le tri peut tre associ n'importe quelle opration de recherche (Projection, Slection et Jointure). Exemples

Objectif : Apprendre rechercher des donnes relatives une opration relationnelle quelconque et de donner le rsultat de manire trie. Enonc : On souhaite afficher certaines lignes appartenant aux tables Client et Commande. Le rsultat doit tre tri.
Exemple 1 Donner la date de chaque commande ainsi que le nom et le prnom du client qui a fait la commande. Le rsultat doit tre class par ordre croissant des noms des clients et par ordre dcroissant des dates de commandes pour le mme client. La commande SQL permettant de rpondre la question est la suivante : SELECT Nom_client, Prnom_client, date_comm FROM Client X, Commande Y WHERE X.code_client = Y.code_client ORDER BY Nom_client, date_comm DESC; Remarque On aurait pu, pour la clause ORDER BY, remplacer les noms des colonnes par leur rang dans le paramtre liste_Nom_colonne. La commande devient alors : SELECT Nom_client, Prnom_client, date_comm FROM Client X, Commande Y WHERE X.code_client = Y.code_client ORDER BY 1, 3 DESC; 4.2.5. Utilisation des fonctions de calculs dans les oprations de recherche (fonctions Agrgat) Certaines requtes ont besoin de faire un certain nombre de calculs sur les lignes recherches. Pour cela, SQL offre certaines fonctions standards de calcul appeles fonctions Agrgat. Ces fonctions ne peuvent tre utilises qu'avec la commande SELECT et en dehors de la clause WHERE. Les fonctions de calcul offertes par SQL sont les suivantes : La fonction COUNT qui sert compter le nombre de lignes du rsultat obtenu par la commande SELECT.
151

La fonction SUM qui sert faire la somme des valeurs d'une colonne dont le type de donnes est numrique. La fonction MIN qui sert dterminer la valeur minimale d'une colonne. La fonction MAX qui sert dterminer la valeur maximale d'une colonne. La fonction AVG qui sert dterminer la moyenne (average) des valeurs numriques d'une colonne. Dans la suite nous donnons quelques exemples simples d'utilisation de ces fonctions. Exemples

Objectif : Apprendre utiliser les fonctions de calcul dans des commandes de recherche de donnes. Enonc : On souhaite calculer certaines donnes appartenant aux tables Client et Commande.
Exemple 1 Donner le nombre de clients qui existent dans la base. La commande SQL permettant de rpondre la question est la suivante : SELECT COUNT(*) FROM Client ; Exemple 2 Donner le nombre de clients qui ont fait des commandes. La commande SQL permettant de rpondre la question est la suivante : SELECT COUNT(DISTINCT (code_client)) FROM Commande; Remarque Le mot cl DISTINCT a t utilis dans la commande SELECT pour liminer les doublons vu qu'un mme client peut avoir plusieurs Commandes. Exemple 3 Donner le nombre de clients qui ont un cumul des chiffres d'affaires suprieur 100000 Dinars. La commande SQL permettant de rpondre la question est la suivante : SELECT COUNT(*) FROM Client WHERE Cumul_Chiffre_Affaires > 100000 ;
152

Exemple 4 Donner la somme des chiffres d'affaires de l'anne en cours de l'ensemble des clients qui ont un cumul des chiffres d'affaires suprieur 100000 Dinars. La commande SQL permettant de rpondre la question est la suivante : SELECT SUM(Chiffre_Affaires _Anne_encours) FROM Client WHERE Cumul_Chiffre_Affaires > 100000; Exemple 5 Pour l'ensemble des clients qui ont un cumul des chiffres d'affaires suprieur 100000 Dinars, donner le plus haut et le plus bas chiffre d'affaires de l'anne en cours ainsi que leur moyenne. La commande SQL permettant de rpondre la question est la suivante : SELECT MIN(Chiffre_Affaires_Anne_encours) 'CA Min', MAX(Chiffre_Affaires_Anne_encours) 'CA Max', AVG(Chiffre_Affaires _Anne_encours) 'CA Moyen' FROM Client WHERE Cumul_Chiffre_Affaires > 100000 ;

153

RETENONS

La manipulation d'une base de donnes consiste insrer, supprimer, modifier ou rechercher des lignes. Elle peut se faire en mode assist ou en mode commande. Le mode assist se fait en utilisant une interface graphique d'un SGBD alors que le mode commande consiste crire explicitement des commandes conformment la syntaxe du langage SQL. L'insertion d'une ligne, en SQL, se fait par l'intermdiaire de la commande INSERT. La suppression de lignes, en SQL, se fait par l'intermdiaire de la commande DELETE. Elle permet de supprimer plusieurs lignes qui vrifient la condition spcifie. La modification de lignes, en SQL, se fait par l'intermdiaire de la commande UPDATE. Elle permet de modifier plusieurs lignes qui vrifient la condition spcifie. La recherche de lignes, en SQL, se fait par l'intermdiaire de commande SELECT. Elle peut consister effectuer des oprations de projection, de slection, de jointure ou toute combinaison de ces dernires. Le rsultat peut tre tri. On parle de Projection si la recherche est relative un sous ensemble de colonnes d'une table. On parle de Slection si la recherche est relative un sous ensemble de lignes d'une table vrifiant une certaine condition. On parle de Jointure si la recherche est relative deux tables ayant au moins une colonne en commun. La condition de jointure doit porter sur ces colonnes communes. La clause ORDER BY, utilise dans la commande SELECT, permet de trier le rsultat obtenu. SQL propose certaines fonctions, dites fonctions agrgat : SUM, COUNT, MIN, MAX et AVG.

154

APPLICATION Soit la base de donnes relative l'exploitation des chambres d'un htel dfinie comme suit : Chambre (Num_Chambre, Prix, Nbr_Lit, Nbr_Pers, Confort, Equ) Client (Num_Client, Nom, Prenom, Adresse) Reservation (Num_Client#, Num_Chambre#, Date_Arr, Date_Dep)

Exemples : Table Chambre Num_Chambre 10 20 25 Prix 80 100 180 Nbr_Lit 01 02 03 Nbr_Pers 02 02 03 Confort WC Douche Bain Equ Non Non TV

Table Client Num_Client 1000 1001 Sahli Chatti Nom Prnom Mohamed Saleh Table Rservation Num_Client 1000 1001 Num_Chambre 20 10 Date_Arr 28/12/2006 01/01/2007 Date_Dep 01/01/2007 Adresse Sousse Tunis

155

Exprimer les requtes suivantes en SQL : 1. Les numros de chambres avec TV. 2. Les numros de chambres et leurs capacits. 3. La capacit thorique d'accueil de l'htel. 4. Le prix par personne des chambres avec TV. 5. Les numros des chambres et le numro des clients ayant rserv des chambres pour le 25/12/2006. 6. Les numros des chambres cotant au maximum 80 Dinars ou ayant un bain et valant au maximum 120 Dinars. 7. Les noms, prnoms et adresses des clients dont les noms commencent par RA 8. Le nombre de chambres dont le prix est entre 85 et 120 Dinars. 9. Les noms des clients n'ayant pas fix la date de dpart. Correction

1.

Select Num_Chambre From Chambre Where Confort = 'TV' ; Select Num_Chambre, Nbr_Pers From Chambre ; Select Sum(Nbr_Pers) From Chambre ; Select Prix/Nbr_Pers, Num_Chambre From Chambre Where Equ = 'TV' Select Num_Chambre, Num_Client From Reservation Where Date_Arr <= '25/12/2006' And (Date_Dep > '25/12/2006' Or Date_Dep is Null) Select Num_Chambre From Chambre Where Prix<='80' Or (Confort='bain' And Prix <='120'); Select Nom From Client Where Nom like 'RA%'; Select Count(Num_Chambre) From Chambre Where Prix between 85 and 120; Select Nom From Reservation R, Client C Where Date_Dep is Null And R.Num_Client = R. Num_Client;
156

2. 3. 4.

5.

6.

7.

8.

9.

EXERCICES
Exercice 1 En utilisant le mode assist du SGBD disponible : 1. Crer une base de donnes nomme Base1 . 2. Crer la table Fournisseur ayant la structure ci-dessous (La colonne Num_fsr est la cl primaire de la table). Table Fournisseurs Nom du champ Num_fsr Societe Adresse Ville Tel Type de champ Numro auto Description Numro du fournisseur

Texte de 10 caractres Nom de la socit Texte de 30 caractres Adresse de la socit Texte de 10 caractres Ville de la socit Texte de 8 caractres N tlphone de la socit

Les lignes de la table Fournisseurs sont : Num_frs 1 2 3 4 Societ Globo Avicenne Ets Belkhiria Bounici Adresse Ville Tl 71 254 458 71 565 855 73 874 654 71 548 458

102, Rue de palmiers Mgrine 45, Rue des jasmins Tunis 32, Av H. Bourguiba 5, Rue Mongi Slim Djemmel Tunis

3. Crer une nouvelle table Article qui comportera les champs suivants :
Table Article Nom du champ Rfrence Catgorie Nom Num_fsr PrixTVA TVA Type de donne Texte de 6 caractres Texte de 15 caractres Texte de 50 caractres Numrique Montaire Format gnral Numrique rel double Doit tre positif Doit tre 0.18 ou 0.10 157 Cl primaire Doit appartenir la liste suivante (Papeterie, Informatique, communication et audiovisuel) Description

Les lignes de la table Articles sont :


Rf R01 R03 R04 R07 R09 R11 R14 Catgorie Papeterie Informatique Communication Audiovisuel Informatique Papeterie Informatique Nom Rame papier Imprimante Fac-simile TV Souris Spirale Streamer 1 2 1 3 4 1 2 Num_fsr Prix HTVA 3.450 120 256 387 7.600 1.250 175.500 18% 10% 18% 10% 10% 18% 10% TVA

4. En imaginant que plusieurs articles peuvent correspondre un mme fournisseur et qu'en revanche, un mme article ne peut pas avoir plusieurs fournisseurs, crer une relation entre les deux tables Fournisseurs et Articles. 5. Crer la requte qui permet d'obtenir le prix TTC des articles sachant que : Prix TTC = Prix Htva *( 1 + TVA)) 6. Crer la requte qui permet d'obtenir la liste des articles ayant la TVA = 10% tris par ordre alphabtique selon la rfrence. 7. Crer la requte qui permet d'avoir la liste des articles da la catgorie informatique. Exercice 2 On veut implmenter sous le SGBD disponible, la base de donne qui gre les rservations des salles de l'auberge le plus simplement possible. Le schma relationnel de la base de donnes se prsente comme suit : Clients (Ref_Cl, Nom_Cl, Prenom_Cl, Adr_Cl, CP, Ville) Cuisiniers (Ref_Cu, Num_SS, Nom_Cu, Prenom_Cu, Nom_Jeune_Fille, Adr_Cu, CP, Ville, Date_Nais) Rservations (Ref_Re, Ref_Cl#, Ref_Cu#, Salle, Date, Heure, Couverts, Montant)

I. Structure de la base de donnes :


1. Crer une base de donnes nomme Rservation.mdb 2. Pour chaque table ci-dessous, crer sa structure. N'oublier pas de spcifier pour chacune d'elles, sa cl primaire. Les colonnes des diffrentes tables sont rsumes dans les tableaux suivants :

158

Table Clients Nom du champ Ref_Cl Nom_Cl Prenom_Cl Adr_Cl CP Ville Type Texte Texte Texte Texte Numrique texte 3 50 50 255 4 50 Table Cuisiniers Taille Proprits 3 Masque de saisie : 2 lettres suivies d'un chiffre 30 50 50 50 255 4 50 Taille Proprits Masque de saisie : 2 lettres suivies d'un chiffre.

Champ Ref_Cu Num_SS Nom_Cu Prenom_Cu NomJeuneFille Adr_Cu CP Ville Date_Nais

Type Texte Texte Texte Texte texte Texte Numrique Texte Date/heure

Table Rservations Champ Ref_Re Ref_Cl REf_Cu Salle Date Heure Couverts Montant Type Numroauto Texte Texte Texte Date/heure Texte Numrique Montaire 10 Entier 3 3 10 Masque de saisie : deux lettres suivies d'un chiffre Masque de saisie : deux lettres suivies d'un chiffre Taille Proprits

Dans la table Rservation , crer une liste de choix pour Ref_Cl, bas sur la table Clients et une liste de choix pour Ref_Cu, bas sur la table Cuisiniers .

II. Relations entre tables


Crer les relations entre les tables.

III. Peuplement de la base de donnes


1. Saisir les informations suivantes dans les tables correspondantes.
159

Table Clients Ref_Cl AA1 AA2 AA3 AA4 Nom_Cl Toumi Ben Brahim Rouatbi Bouhlel Prenom_Cl Mounir Fethi Maher Saf Adr_Cl 12, rue des jasmins 5, place des jacinthes 3, avenue des oxalis 31, rue des pquerettes Table Cuisiniers Ref_Cu NumSS Nom_Cu BB1 BB2 259017 164089 Berriri Benzarti Pre_Cu NomJF Fatma Jawhar Slama Adr_Cu 2, rue des magnolias 51, rue des violettes CP 2000 ville Bja D_Nais 04/01/60 15/08/64 CP 4000 1000 6000 7000 Ville Sousse Tunis Sfax Gabes

5000 Siliana

Table Rservations Ref_Re 1 2 3 4 5 6 7 8 Ref_Cl AA1 AA4 AA1 AA2 AA2 AA1 AA2 AA3 Ref_Cu BB1 BB1 BB1 BB1 BB2 BB2 BB2 BB2 Salle Sminaire Mariage Sminaire Salon Sminaire Salon Sminaire Mariage Date 04/03/07 11/05/07 12/05/07 28/07/07 30/01/07 20/04/07 12/07/07 12/11/07 Heure 12 :00 20 :00 12 :00 19 :00 12 :00 20 :00 13 :00 19 :00 Couverts Montant 25 140 20 5 14 6 10 110 4,000 16,800 3,600 1,150 2,240 1,680 2,000 15,950

IV. Requtes
1. Afficher les donnes concernant les rservations (Ref_Cl, Ref_Cu, Salle, Date, Heure, Couverts, Montant) avec le nom du client ainsi que le nom de cuisinier. 2. Afficher le nom et le prnom des clients qui ont fait rservation avant le mois du juillet 2007, ainsi que la date de rservation. 3. Afficher toutes les rservations d'un client dont le nom est saisi au clavier (Requte slection paramtre). 4. Afficher pour chaque cuisinier le nombre des rservations dont il se charge. 5. Afficher les montants des rservations et les regrouper par date. 6. Afficher les montants des rservations et les regrouper par trimestre. 7. Afficher les montants des rservations regrouper par salle, pour chaque cuisinier et pour chaque client. 8. Crer une table Codes Postaux avec les champs CP et Ville de la table Clients (Requte cration). 9. A l'aide d'une Requte ajout, ajouter les donnes de la table Cuisiniers (CP et Ville) la table cre Codes Postaux .
160

Exercice 3 L'objectif est la cration de la base de donnes CHANGE et les tables qui la constituent, savoir : CLIENT (Num_Passeport, Nom_Cl, Adr_Cl, Nationalite_Cl) AGENCE (Code_Ag, Nom_Ag, Adr_Ag) DEVISE (Code_Devise, Libelle, Unite, Cours_Achat, Cours_Vente) OPERATION (Code_Op, Type_Op, Date_Op, Num_Passeport#, Code_Ag#) DETAIL_OPERATION (Code_Op#, Code_Devise#, Montant_Dev, Cours_Jour)

Table Client Num_Passeport K029534 K054679 K145309 K549027 M123497 M125302 M132089 M134236 M202745 M243678 Nom_Cl Asma Tlili Rim Fakhfakh Ines Lakhoua Ahmed ben Miled Zied Soltani Med Bes Salah Zahra Sallemi Amna Riahi Samir Elouni Sami Meddeb Tunis Sfax Tunis Sfax Tunis Tunis Sfax Sousse Bizerte Tunis Adr_Cl Nationalite_Cl Tunisienne Tunisienne Tunisienne Tunisienne Tunisienne Tunisienne Tunisienne Tunisienne Tunisienne Tunisienne

Table Opration Code_Op 1 2 3 4 5 6 7 Vente Vente Achat Vente Achat Achat Vente Type_Op Date_Op 01/01/01 01/01/01 01/01/01 05/02/01 05/02/01 10/02/01 22/03/01 Num_Passeport M123497 K145309 K054679 M125302 M132089 M123497 M134236

161

Table Dtail Opration Code_Op 1 1 2 2 3 4 4 5 5 6 7 7 7 Code_Devise BEF056 FRF250 CAD124 USD124 ESP724 DEM280 GBP826 SAR682 USD840 EUR978 FRF250 EUR978 DEM280 Montant_Dev 7000 2500 600 500 1250 600 200 200 100 100 2000 150 400 Cours_Jour 3.221 1.981 0.914 1.462 7.603 6.644 2.121 3.802 1.423 1.264 1.981 1.300 6.664

Code_Devise
BEF056 CAD124 CHF756 DEM280 ESP724 EUR978 FRF250 GBP826 ITL380 JPY392 SAR682 USD840

Table Devise Libelle Unite Cours_Achat Cours_Vente


FRANC BELGE DOLLAR CANADIEN FRANC SUISSE DEUTSCHE MARK PESETA ESPANOL EURO FRANC FR LIVRE STERLING LIRA ITL YEN JAPON RIYAL SAOUD DOLLAR U.S 100 1 10 10 1000 1 10 1 1000 1000 10 1 3.137 0.885 8.638 6.474 7.603 1.264 1.932 2.076 0.654 11.463 3.802 1.432 3.221 0.914 8.865 6.644 7.818 1.300 1.981 2.212 0.670 12.561 3.926 1.462

Requtes : 1. Donner les numros des passeports des clients qui habitent Tunis. 2. Donner les natures des oprations effectues par le client Zahra Sallemi ainsi que le cours du jour la date du 05/02/01. 3. Affichez le nombre d'oprations regroupes par ville la date du 01/01/2001. 4. Quelles sont les diffrentes devises qui ont t achetes par les clients ?

162

Exercice 4 : Gestion d'une confrence Soit la base de donnes dfinie comme suit : PARTICIPANTS (numparticipant, nom, prenom, datenaissance, numrue, nomrue, codepostal, ville, pays, langue) CONFERENCES (numconference, titre, date, heuredebut, duree, theme, reforateur, refanimateur, numsalle#) RESERVATIONS (numconference#, numparticipant#) SALLES (numsalle, nom, batiment, numero, superficie, capacite, equipement) Exprimer les requtes suivantes en SQL : 1. Afficher la liste des personnes (numro et nom) qui ont rserv une place pour la confrence numro 16, dans l'ordre alphabtique des noms. 2. Afficher pour chaque confrence la liste des personnes ayant rserv dans l'ordre des numros de confrences et dans l'ordre alphabtique pour chaque confrence. 3. Afficher pour chaque confrence son numro et le nom du confrencier ainsi que la liste des personnes ayant rserv. 4. Afficher le programme de chaque salle pour le 15/11/2007. 5. Afficher pour chaque participant la liste des confrences pour lesquelles il a rserv. 6. Id mais on affichera galement ceux n'ayant pas rserv. 7. Un participant signale qu'il arrivera le 15/11/2007 11h et qu'il doit repartir le 16/11/2007 17h. Donnez la liste des confrences auxquelles il pourrait assister. 8. Afficher la liste des participants parlant la mme langue que monsieur BEN SALEH. 9. Afficher la liste des salles donnes par leur numro, leur emplacement et la prcision petite, moyenne ou grande selon que la capacit est infrieure 40, entre 40 et 100 ou suprieure 100. 10. La salle A7125 du btiment A ne peut tre utilise. Afficher les salles de capacit suprieure. 11. La salle A7125 du btiment A ne peut tre utilise. Afficher les salles de capacit suprieure et de mme niveau d'quipement. 12. Afficher le nombre de salles et la capacit totale des salles. 13. Afficher la capacit totale des salles de moins de 100 places. 14. Afficher la capacit totale des salles par niveau d'quipement. 15. Afficher pour chaque confrence le nombre de participants. 16. Afficher la liste des confrences ayant plus de 100 participants. 17. Lorsque la langue du participant est diffrente de la langue de l'orateur, il faut prvoir un casque pour la traduction. Donner le nombre de casques prvoir pour chacune des confrences. 18. Afficher la liste des participants aux confrences du thme SGBD et des participants aux confrences donnes en anglais. 19. Afficher la liste des confrences ayant le lieu le mme jour et dans la mme salle que la confrence 37. 20. Afficher la liste des salles o sont donnes des confrences avec des participants parlant l'arabe.
163

Exercice5 : utilisation de SQL 1. Cration des Tables Liste_Produit Type_Reduc Liste_Famille IdLF INT (cl primaire auto incremente) Famille CHAR(50)

IdLP INT (cl primaire IdTR INT (cl primaire auto incremente) auto incremente) Produit CHAR(50) Prix FLOAT PrixR FLOAT LPidTR INT LPidLF INT NbStock INT Reduction CHAR(50) Montant INT

Ecrivez les requtes SQL correspondantes. Aucun champ ne doit pouvoir tre vide.

2. Saisie d'information
Maintenant, il faut entrer du contenu dans les tables. Voici des tableaux contenant les informations qui doivent y tre ajoutes. 2.1. Table Liste_Produit
IdLP 1 2 3 4 5 6 7 Produit CD Delerm CD The Darkness CD Placebo Livre DVD Lecteur Mini-Disc Disquette Prix 12 18 14 8 25 150 5 PrixR 0 0 0 0 0 0 0 LPidTR 2 2 2 1 2 3 4 LPidLF 1 1 1 1 1 4 5 NbStock 200 200 200 2000 1000 100 3000

164

2.2. Table Type_Reduc

IdTR

Reduction

Montant

1 2 3 4 5 2.3. Table Liste_Famille


IdLF 1 2 3 4 5

Aucune Multimedia Materiel Alimentaire Base Alimentaire vital


Famille Multimedia Litterature Informatique Hi-Fi Alimentaire

0 20 10 10 25

3. Mise jour des Prix Rduit


Faites une requte qui met jour le champ "PrixR" de la table Liste_Produit en faisant le pourcentage depuis la table rduc. Par exemple, pour le CD, le rsultat doit tre : Prix = 14, Montant = 20 (pourcentage !), donc PrixR = 14*(100-20)/100 = 11,2

4. Ajout d'une colonne dans une table existante


On va maintenant ajouter la colonne "Commentaire" la table Liste_Produit en initialisant tous les enregistrements "" (chane vide) et d'une taille maximale de 250 caractres.

5. Vente d'un livre


On vient de vendre un livre. Il faut donc rduire le stock d'une unit. Ecrivez la requte correspondante.

6. Affichage des CDs selon le prix


6.1. Prix compris entre 13 et 15 On vous demande la liste des CDs dont le prix est compris entre 13 et 15. Vous devez donc rcuprer uniquement les CDs (grce au nom du produit) et ceux dont le prix est 13, 14 ou 15. crivez la requte correspondante. 6.2. Commentaire en fonction du prix On souhaite afficher, selon le prix et pour tous les CDs, les commentaires suivants : infrieur 13 : bon march ; entre 13 et 15 : parfait ; suprieur 15 : trop cher ; Ce commentaire doit tre dans un champ "Comment". Seuls les champs "Produit" et "Comment" doivent tre affich.
165

Objectifs :

Dcouvrir la structure d'une application Apprendre dvelopper des formulaires Apprendre dvelopper des tats Apprendre gnrer une page web de donnes

Plan :
1. Introduction 2. Structure d'une application 2.1 Introduction 2.2 Interface utilisateur 2.3 Code d'une application 2.4 Modes d'utilisation des applications 3. Les formulaires 3.1 Introduction 3.2 Cration d'un formulaire 3.3 Exploitation de formulaire 3.4 Les sous formulaires 4. Les tats 4.1 Introduction 4.2 Cration d'un tat 4.3 Exploitation d'un tat 5. Interaction entre base de donnes et sites web dynamiques 5.1 Introduction 5.2 Alimentation de pages web dynamiques Retenons Exercices

1. Introduction :
Une base de donnes peut tre utilise par deux catgories de personnes : des informaticiens et des non informaticiens. Toutes les manipulations que nous avons vues dans les chapitres prcdents (cration des structures, insertion, modification, suppression et consultation des donnes) sont faites par des informaticiens ou des personnes ayant des connaissances de base en informatique en gnral et en bases de donnes en particulier.

Figure 7.1 : Types d'utilisateurs d'une base de donnes

Pour que des non informaticiens puissent manipuler facilement le contenu d'une base de donnes, on doit mettre leur disposition des applications qui leur permettent de communiquer facilement avec la base de donnes. Ces applications sont composes de deux types de modules (ou programmes) : Des formulaires permettant de saisir, consulter, modifier ou supprimer des donnes Des tats permettant d'diter l'cran ou sur papier des donnes provenant de la base de donnes. Mme si l'objectif principal de ce manuel est de prsenter les concepts, les principes et les techniques permettant de crer et de manipuler une base de donnes, nous allons dcrire dans ce chapitre les lments de base relatifs au dveloppement d'une application autour d'une base de donnes.

2.

Structure d'une application

2.1 Introduction Toute application informatique est constitue de deux composantes principales : Une partie visible aux utilisateurs : interface utilisateur Une partie cache : code Les utilisateurs ne voient qu'une partie minime de l'application : l'interface utilisateur. De point de vue charge de travail, la partie cache de l'application, c'est--dire le code crire par le dveloppeur, constitue la partie majeure de l'application. On assimile souvent une application informatique un iceberg dont la partie visible ne constitue qu'une partie infime par rapport la partie immergente.
168

2.2 Interface utilisateur L'interface utilisateur, appele galement interface homme-machine est compose de deux lments : Des formulaires : Ils permettent aux utilisateurs d'interagir avec l'application travers des champs de type texte, liste, case cocher et autres types d'objets graphiques. Les oprations que peut faire l'utilisateur travers ces formulaires sont la consultation, l'insertion, la modification et la suppression de donnes. Des tats : Ils permettent aux utilisateurs d'obtenir des donnes afin de les imprimer ou les stocker sous une forme quelconque. 2.3 Code d'une application La partie dynamique d'une application est constitue du code qui est associ aux diffrents objets composant l'application. Exemple Exemples d'objets auxquels peut tre associ du code : Une case cocher Un bouton d'action Une liste droulante Gnralement, l'activation du code est dclenche par la ralisation d'un vnement. La programmation est dite alors vnementielle. Exemple Exemples d'vnements : Cocher ou dcocher une case Cliquer sur un bouton d'action Slectionner un lment dans une liste droulante 2.4 Modes d'utilisation des applications Une application dveloppe autour d'une base de donnes peut tre exploite (dploye) selon trois modes : Mono poste : L'application et la base de donnes sont installes sur une mme machine.

169

Client/serveur : La base de donnes est situe sur une machine dite serveur de donnes et l'application est installe sur des machines dites clients. L'ensemble est interconnect travers un rseau local ou distant.

Internet : La base de donnes est situe sur une machine dite serveur de donnes et l'application est sous forme de pages web gres par un serveur web. Les utilisateurs accdent aux pages web partir d'un navigateur install sur leurs postes de travail.

3. Les formulaires 3.1 Introduction Activit

Enonc : Pour formuler une demande d'abonnement une bibliothque, deux propositions courantes peuvent se prsenter : crire une demande sous forme de texte libre. Remplir un formulaire pr tabli par la bibliothque. Question : 1- Proposer un exemple de texte libre pour cette demande. 2- Proposer un exemple de formulaire remplir pour cette demande 3- Prsenter une exploitation ultrieure de chacune des deux formulations au sein de la direction de la bibliothque. 4- Comparer les deux documents et prsenter les avantages de la solution qui prte l'informatisation.
170

Elments de rponse dvelopper avec votre enseignant : Il est vident que la deuxime solution est prfrable la premire car elle cumule plusieurs avantages, notamment : La rapidit : Aussi bien lors de la saisie que lors du traitement de la demande L'harmonisation : N'importe quelle personne remplie le formulaire de la mme faon alors que chacun peut crire une demande sa manire. 5- Reprendre la structure tudie dans l'application 1 du Chapitre 4 et proposer alors un modle de formulaire prvoir. Ceci n'est pas valable uniquement pour les formulaires papiers. Les formulaires informatiques se basent sur le mme principe. Ils permettent, travers une interface graphique conviviale, d'effectuer essentiellement les tches suivantes : Rechercher et afficher des donnes en provenance de la base de donnes selon des critres fixs par l'utilisateur. Saisir de nouvelles donnes pour alimenter la base de donnes. Mettre jour les donnes existantes. Supprimer des donnes de la base. Les formulaires permettent en gnral d'effectuer sur une base de donnes les mmes oprations que nous avons vues dans le chapitre prcdent, savoir la consultation, l'insertion, la modification et la suppression. Les formulaires les plus simples se basent sur une seule table. Lorsque les donnes que l'on souhaite afficher, insrer, modifier ou supprimer proviennent de deux ou plusieurs tables, le formulaire correspondant se base aussi sur deux ou plusieurs tables. Dans le reste de ce chapitre nous allons nous intresser aux formulaires informatiques. Nous allons montrer comment crer, modifier et exploiter ces formulaires. 3.2 Cration d'un formulaire Vous allez apprendre crer un formulaire simple permettant de saisir et d'afficher des donnes d'une table. Dans certains SGBD, il existe trois faons pour crer un formulaire : Cration de formulaire instantan : c'est la forme la plus rapide pour crer un formulaire Utilisation d'un assistant : C'est une forme combinant la rapidit et la diversit lors de la cration d'un formulaire Cration libre : C'est la forme la plus complte (offre le plus de possibilits) mais aussi la plus lente en temps de cration. Ces trois faons peuvent tre combines. Gnralement on commence par la cration d'un formulaire instantan ou en utilisant un assistant, puis on finalise le rsultat obtenu en cration libre. Dans ce qui suit, nous allons prsenter ces modes pour crer un formulaire simple.
171

3.2.1. Cration de formulaire instantan La cration d'un formulaire instantan est le mode le plus facile et le plus rapide. Il est souvent utilis pour crer un premier prototype d'un formulaire. Dans la suite, nous allons crer un formulaire instantan bas sur la table : Detail_commande (N commande, N ligne, Code_art, Qt commande) La cration d'un formulaire instantan se fait en suivant les tapes suivantes : 3. Dans la fentre Base de donnes , slectionner la table Detail_commande 4. Dans le menu principal, slectionner le sous-menu nouvel objet ( ) puis l'option Formulaire instantan.

Figure 7.1 : Slection de la table Detail_commande

5. Ds l'activation de l'option Formulaire instantan , une nouvelle fentre contenant le nouveau formulaire est affiche :

Figure 7.2 : Formulaire instantan de la table Detail_commande 172

6. Cliquer sur Enregistrer dans le menu principal. Une fentre vous invitant saisir un nom pour le nouveau formulaire s'affiche :

Figure 7.3 : Enregistrement d'un formulaire

Par dfaut, c'est le nom de la table qui est attribu au nouveau formulaire. Vous pouvez attribuer un autre nom. Cliquer ensuite sur Ok pour enregistrer le nouveau formulaire. Le nouveau formulaire est maintenant cr, il apparat dans la liste des formulaires (fentre Formulaires).

Figure 7.4 : Liste des formulaires

L'affichage de ce formulaire se fait en double-cliquant sur le nom correspondant dans la liste des formulaires ou bien en activant l'option Ouvrir ( ) dans la fentre Base de donnes . Le formulaire que nous venons de crer est compos de deux parties : Le corps du formulaire constitu par les quatre champs correspondant aux colonnes de la table Detail_commande. C'est dans cette partie que se fait la saisie et l'affichage des donnes changes avec la base de donnes travers le formulaire.
173

Une zone de contrle permettant la navigation entre les lignes de la table. Cette zone permet de se dplacer entre les lignes de la table sur laquelle est bas le formulaire. Une description dtaille de cette zone sera donne dans la section Exploitation d'un formulaire.

Corps

Zone de contrle

Figure 7.5 : Structure d'un formulaire

Le formulaire que nous venons de crer constitue la forme la plus courante. Il a la particularit qu'il permet d'afficher une seule ligne la fois de la table correspondante. La forme tabulaire est la deuxime forme de point de vue manipulation des donnes d'une table travers un formulaire. Comme son nom l'indique, elle permet d'afficher les donnes d'une table sous forme tabulaire. Par exemple, pour la table Detail_commande, le formulaire sous forme tabulaire se prsente comme suit :

Figure 7.6 : Formulaire tabulaire de la table Detail_commande

Ce formulaire permet d'effectuer sur la table Detail_commande les mmes oprations que celles de la figure 7.2 C'est uniquement le mode d'affichage qui change : le premier affiche une ligne la fois alors que le deuxime en affiche plusieurs. La cration d'un formulaire instantan de type tabulaire se fait en suivant les tapes suivantes :
174

1. Dans la fentre Base de donnes, slectionner Formulaires dans la liste des objets, puis dans le menu de cette fentre slectionner l'option Nouveau.

Figure 7.7 : Lancement de l'opration cration d'un formulaire tabulaire

2. Dans la fentre Nouveau formulaire qui s'affiche, slectionner la ligne Formulaire instantan : tableau, puis dans la partie infrieure slectionner la table sur laquelle sera bas le nouveau formulaire (Detail_commande dans notre cas). Cliquer ensuite sur Ok.

Figure 7.8 : Cration d'un formulaire tabulaire

3. Ds l'activation du bouton Ok, une nouvelle fentre contenant le nouveau formulaire tabulaire est affiche :
175

Figure 7.9 : Formulaire tabulaire de la table Detail_commande

4. Cliquer sur Enregistrer dans le menu principal. Une fentre vous invitant saisir un nom pour le nouveau formulaire s'affiche :

Figure 7.10 : Enregistrement du nouveau formulaire

Par dfaut, c'est le nom de la table qui est attribu au nouveau formulaire tendu ventuellement par un numro (1, 2, ) si ce nom existe dj. Dans notre cas nous allons attribuer le nom Detail_commande_tab. Cliquer ensuite sur Ok pour enregistrer le nouveau formulaire. Le nouveau formulaire est maintenant cr. Il apparat dans la liste des formulaires (fentre Formulaires). 3.2.2. Cration de formulaire l'aide d'un assistant La cration d'un formulaire peut se faire galement en utilisant un assistant. Ce mode prend plus de temps que le mode prcdent (instantan) mais il offre plus de possibilits. La cration d'un formulaire l'aide d'un assistant se fait en suivant les tapes suivantes : 1. Dans la fentre Base de donnes, slectionner Formulaires dans la liste des objets, puis dans le menu de cette fentre slectionner l'option Nouveau.
176

Figure 7. 11 : Lancement de l'opration cration d'un formulaire avec assistant

2. Dans la fentre Nouveau formulaire qui s'affiche, slectionner la ligne Assistant formulaire, puis dans la partie infrieure slectionner la table sur laquelle sera bas le nouveau formulaire (Detail_commande dans notre cas). Cliquer ensuite sur le bouton Ok.

Figure 7. 12 : Cration d'un formulaire l'aide d'un assistant : page 1

3. Ds l'activation du bouton Ok, la premire page de l'assistant s'affiche. Elle permet de slectionner les champs qui vont apparatre dans le nouveau formulaire. Il est prciser que nous pouvons intgrer dans le mme formulaire des champs provenant de plus qu'une table, condition bien sur qu'il existe des liens entre ces tables.
177

Dans notre cas, nous allons rajouter la colonne dsignation article partir de la table Article, de sorte que lors de l'affichage d'une ligne du dtail commande, on peut voir la dsignation de l'article command en plus de son code.

Figure 7.13 : Cration d'un formulaire l'aide d'un assistant : page 2

4. Cliquer sur le bouton Suivant . Si le formulaire est bas sur deux ou plusieurs tables, la page suivante de l'assistant s'affiche. Dans le cas o le formulaire est bas sur une seule table, c'est la page de l'tape 5 qui s'affiche.

Figure 7.14 : Cration d'un formulaire l'aide d'un assistant : page 3 178

Cette page permet de prciser l'organisation de l'affichage des donnes en fonction de leur provenance (tables). Dans ce cas, nous choisissons la deuxime option (par Detail_commande). Cliquer ensuite sur le bouton Suivant. 5. La fentre qui s'affiche permet de slection la disposition des donnes du formulaire (colonne simple, tabulaire, feuille de donnes, ).

Figure 7.15 : Cration d'un formulaire l'aide d'un assistant : page 4

Nous allons slectionner l'option Colonne simple . 6. En cliquant sur Suivant , la page suivante de l'assistant s'affiche. Elle permet de choisir un style d'affichage parmi la liste disponible. En fonction du type d'utilisation du formulaire, slectionner le style qui vous semble le mieux appropri.

Figure 7.16 : Cration d'un formulaire l'aide d'un assistant : page 5 179

7. La dernire page de l'assistant permet d'attribuer un nom au nouveau formulaire :

Figure 7.17 : Enregistrement du nouveau formulaire

8. Cliquer sur le bouton Terminer. Le nouveau formulaire s'affiche.

Figure 7.18 : Formulaire Detail_commande_assist

Noter la diffrence par rapport au premier formulaire que nous avons cr : pour chaque ligne de commande, la dsignation est affiche en plus du code article. 3.2.2. Modification d'un formulaire Les deux modes de cration de formulaires que nous avons vus (formulaire instantan et assistant) permettent de crer automatiquement des formulaires sans laisser beaucoup de possibilits celui qui ralise cette opration. On ne peut pas par exemple choisir la disposition des champs, l'intitul de ces champs, leurs types (liste, case cocher, ). Ces deux modes ont gnralement utiliss uniquement pour entamer le dveloppement d'une application. Les formulaires obtenus ne constituent qu'une premire bauche de l'application finale. Nous allons voir dans cette section comment affiner un formulaire en modifiant sa structure et sa prsentation. Nous prenons comme exemple le dernier formulaire (Detail_commande_assist).
180

La modification d'un formulaire se fait en suivant les tapes suivantes : 1. Dans la fentre Base de donnes , slectionner Formulaires dans la liste des objets, le formulaire modifier, puis dans le menu de cette fentre slectionner l'option Modifier .

Figure 7.19 : Lancement de l'opration modification d'un formulaire

2. Ds l'activation de l'option Modifier , un diteur de formulaires s'affiche :

Figure 7.20 : diteur de formulaire

A l'aide de cet diteur on peut modifier la prsentation d'un formulaire. On peut par exemple : Rajouter un titre au formulaire Modifier le libell de certains champs : Code_art Code Des_art Dsignation Modifier la disposition des champs : mettre sur une mme ligne le numro de commande et le numro de la ligne. Modifier la taille des champs : rduire la taille du champ Qt commande.
181

3. Pour rajouter un titre au formulaire : Dplacer vers le bas la zone Dtail . Afficher la boite outils si elle n'apparat pas en activant l'option Bote outils dans le menu Affichage . Dans la boite outils, slectionner le bouton tiquette :
Figure 7.21 : Barre outils de l'diteur de formulaires

Crer une zone texte dans la partie En-tte du formulaire et taper le titre du formulaire. Modifier le style d'affichage de ce titre l'aide des outils de mise en forme de texte dans le menu principal (police, taille, couleur, ).

Figure 7.22 : Ajout d'un titre 'un formulaire

4. Pour modifier le libell d'un champ : Slectionner le champ concern, puis diter le texte de ce champ. On peut galement modifier le style du champ (police, taille, couleur, justification, ). 5. Pour modifier l'emplacement d'un champ, il suffit de le slectionner et le dplacer vers l'emplacement souhait. On peut slectionner plusieurs champs en mme temps. 6. Pour modifier la taille d'un champ, il faut le slectionner puis modifier sa taille en largeur et/ou en hauteur. Le rsultat des modifications effectues apparat dans la fentre suivante :
182

Figure 7.23 : Rsultat de l'dition du formulaire Detail_commande_assist

Pour valider ces modifications, cliquer sur le bouton Enregistrer du menu principal puis fermer la fentre d'dition de formulaires. L'excution de ce formulaire apparat comme suit :

Figure 7.24 : Excution du nouveau formulaire

3.3 Exploitation de formulaire L'exploitation d'un formulaire est trs simple. Ceci est normal puisque les formulaires ont pour principal objectif de faciliter la tache des utilisateurs d'une base de donnes. L'exploitation d'un formulaire consiste effectuer les taches suivantes : Lancement du formulaire, Affichage des donnes travers un formulaire, Insertion de donnes travers un formulaire, Suppression de donnes travers un formulaire, Fermeture d'un formulaire. Dans ce qui suit, nous allons prsenter chacune de ces oprations. 3.3.1 Lancement d'un formulaire Le lancement d'un formulaire peut se faire de diffrentes faons : Slectionner le formulaire puis double-cliquer.
183

Slectionner le formulaire puis activer le bouton Ouvrir . Crer un raccourci (option Crer raccourci du menu dition et excuter le formulaire directement en double-cliquant sur le raccourci. 3.3.2 Affichage de donnes travers un formulaire L'une des principales utilisations des formulaires est de permettre aux utilisateurs de visualiser le contenu de la base de donnes. Lorsqu'un formulaire est ouvert, il affiche automatiquement toutes les lignes de la table sur laquelle il est bas. Si le formulaire est de type colonne, il affiche le premier enregistrement. Les autres enregistrements peuvent tre atteints par navigation. Le formulaire de type tabulaire affiche un ensemble d'enregistrements la fois. La navigation permet d'atteindre les autres enregistrements. Exemples Le formulaire suivant affiche le contenu de la table Detail_commande sous forme tabulaire.

Figure 7.25 : Affichage des donnes dans un formulaire

Lorsqu'un formulaire est utilis en consultation, on peut effectuer les actions suivantes : Navigation entre les lignes Recherche (ou filtrage) de lignes Tri des donnes 3.3.2.1. Navigation entre les lignes La navigation entre les enregistrements se fait l'aide de la zone de contrle situe en bas de la fentre. La figure suivante dcrit les diffrentes composantes de cette zone de contrle.

Figure 7.26 : lments de la zone de contrle d'un formulaire

184

3.3.2.2. Recherche de lignes Lorsque le nombre de lignes d'une table est trs lev, effectuer une recherche par navigation entre toutes les lignes n'est pas pratique. La recherche de lignes se fait en prcisant des critres de recherche. Dans ce cas, seules les lignes vrifiant ces critres sont affiches. On dit alors qu'on applique un filtre sur les donnes. Il existe trois faons d'effectuer un filtre : Par formulaire : La saisie des critres de recherche se fait l'aide d'un formulaire ayant la mme structure que le formulaire courant. Ce mode permet d'appliquer des filtres complexes (combinaison des oprateurs logiques ET et OU). Par slection : Il n'y a pas ici de saisie de critre de recherche. Il suffit de se positionner sur le champ dont la valeur est gale au critre de recherche. Ce mode est utiliser en cas de filtres simples Hors slection : C'est le mme principe que le filtre par slection, sauf que ce sont les lignes qui ont une valeur diffrente de celle mentionne qui seront affiches. Dans ce qui suit nous allons dtailler ces trois types de filtres. Filtre par formulaire : Pour effectuer un filtre par formulaire, on doit procder comme suit : 1. Slectionner l'option Filtrer/Filtrer par formulaire du menu Enregistrements ou cliquer sur le bouton Filtrer par formulaire ( ). La fentre suivante s'affiche :

Figure 7.27 : Filtre par formulaire

2. La fentre qui s'affiche permet de saisir les critres de recherche. Il faut bien noter deux aspects pour cette fentre : Les champs sont sous forme de liste, ce qui facilite la saisie des critres de recherche. Pour la colonne N Commande, on peut soit saisir ce numro, soit le slectionner dans la liste. La fentre est compose de plusieurs pages onglets visibles dans la partie infrieure de la fentre. Ceci permet de composer plusieurs critres de recherche avec l'oprateur logique OU. Pour dfinir un filtre, c'est--dire un critre de recherche, saisissez dans la mme page les conditions qui sont combines avec l'oprateur logique ET et dans des pages spares les critres qui doivent tre combins l'aide de l'oprateur OU.
185

Exemple Pour afficher les commandes vrifiant la condition suivante : (N Commande = 200 et N ligne = 1) ou (code article = 2) Effectuer la saisie telle comme elle est reprsente dans la figure suivante :

Figure 7.28 : Saisie des critres de recherche dans un filtre par formulaire

3. Pour lancer la recherche, cliquer sur le bouton Appliquer filtre ( principal. Le rsultat de la recherche s'affiche dans le formulaire.

) du menu

Figure 7.29 : Rsultat du filtrage de donnes

Remarque Noter bien que dans la ligne de contrle (partie infrieure de la fentre), le nombre d'enregistrements est suivi de la mention (Filtr) pour indiquer que les donnes affiches sont le rsultat de l'application d'un filtre. Pour annuler le filtre actuel, cliquer sur le bouton Supprimer filtre ( ). Filtre par slection : Pour effectuer un filtre par slection, on doit procder comme suit : 1. Dans le formulaire dans lequel on dsire effectuer un filtre, se positionner sur le champ contenant la valeur qui sera utilise comme filtre. Par exemple, si on veut afficher toutes les lignes relatives la commande numro 100, se positionner sur le champ N Commande de n'importe quelle ligne ayant la valeur 100 pour ce champ.
186

2. Slectionner l'option Filtrer/Filtrer par slection du menu Enregistrements ou bien cliquer sur le bouton Filtrer par slection ( ). La fentre contenant le rsultat de la recherche s'affiche.

Figure 7.30 : Rsultat du filtrage par slection

3. Si on veut appliquer d'autres filtres sur les lignes affiches, on peut procder de la mme faon. Par exemple si on veut afficher toutes les lignes de la commande numro 100 relatives l'article dont le code est 2, on doit se positionner sur le champ Code Article dont la valeur est 2.

Figure 7.31 : Filtrage par slection sur le rsultat d'un autre filtre

Filtre hors slection : Pour effectuer un filtre hors slection, on doit procder comme suit : 1. Dans le formulaire dans lequel on dsire effectuer un filtre, se positionner sur le champ contenant une valeur diffrente de celle qui sera utilise comme filtre. Par exemple, si on veut afficher toutes les lignes dont le numro de commande est diffrent de 100, se positionner sur le champ N Commande de n'importe quelle ligne ayant la valeur 100 pour ce champ. 2. Slectionner l'option Filtrer/Filtrer hors slection du menu Enregistrements. La fentre contenant le rsultat de la recherche s'affiche. 3.3.2.3. Tri de lignes Lorsque le nombre de lignes affiches dans un formulaire est trs lev, il est prfrable de trier ces lignes. Le tri peut tre croissant ou dcroissant.
187

Pour effectuer un tri des lignes affiches, on doit procder comme suit : 1. Se positionner sur le champ qu'on souhaite utiliser comme critre de tri. 2. Slectionner l'option Trier/Tri croissant ou dcroissant du menu Enregistrements ou bien cliquer sur le bouton Tri croissant ( ) ou Tri dcroissant ( ). La fentre contenant les lignes tries s'affiche. 3.3.3 Insertion de donnes travers un formulaire Pour dclencher l'insertion de nouvelles lignes dans un formulaire dj ouvert, il existe plusieurs faons : Dans la zone de contrle du formulaire, cliquer sur le bouton Nouvel enregistrement ( ). Dans la barre d'outils, cliquer sur le bouton Nouvel enregistrement ( ). Dans le menu principal, slectionner l'option Saisie de donnes dans le menu Enregistrements . L'activation de l'une de ces options entrane l'affichage d'une ligne vierge. On peut alors saisir les nouvelles donnes. On peut saisir plusieurs lignes. Pour ce faire, utiliser le bouton Enregistrement suivant ( ). La validation des donnes d'une ligne saisie se fait automatiquement lors de la navigation vers une autre ligne. Avant de valider les donnes saisies, le SGBD effectue la vrification de ces donnes et affiche un message appropri l'erreur ventuelle rencontre. Remarque Dans le cas d'un formulaire bas sur deux tables lies par une cl trangre, la saisie d'un champ entrane l'affichage automatique d'une valeur dans le champ provenant de la deuxime table. Exemples Dans le formulaire Detail_commande_assist, la saisie du code article entrane l'affichage automatique de la dsignation correspondante.

Figure 7.32 : Saisie de donnes l'aide d'un formulaire


188

3.3.4 Suppression de donnes travers un formulaire Pour supprimer une ligne dans un formulaire dj ouvert, on peut procder comme suit : 1. Se positionner sur l'enregistrement supprimer. Si le formulaire est de type tabulaire, et si on veut supprimer plus qu'un enregistrement, on doit d'abords marquer les enregistrements supprimer. Pour marquer des enregistrements, maintenir la touche Shift enfonce et cliquer gauche des enregistrements marquer. 2. Dans la barre d'outils, cliquer sur le bouton Supprimer enregistrement ( ). 3. Un message de confirmation s'affiche :

Figure 7.33 : Confirmation de suppression de lignes

Aprs confirmation, les lignes sont dfinitivement supprimes. 3.3.5 Fermeture dun formulaire : La fermeture d'un formulaire peut se faire de deux faons : En cliquant sur le bouton Fermer ( ) de la fentre dans laquelle s'affiche le formulaire. En activant l'option Fermer dans le menu Fichier . 3.4 Les sous formulaires La plupart des formulaires que nous avons vus dans les sections prcdentes sont des formulaires simples, c'est--dire qu'ils se basent sur une seule table. Lorsque les donnes que l'on souhaite manipuler travers un formulaire sont rparties sur des tables lies par une cl trangre, la notion de sous formulaire constitue alors un moyen efficace pour atteindre cet objectif. Exemple Si on veut afficher les donnes relatives une commande, celles-ci sont rparties sur les deux tables Commande et Detail_commande, tel que mentionn dans la figure suivante :
Figure 7.34 : Tables lies par cl trangre
189

Le formulaire correspondant sera compos de deux parties : un formulaire principal (partie suprieure) contenant les donnes en provenance de la table Commande et un sous formulaire (partie infrieure) contenant les donnes en provenance de la table Detail_commande.

Figure 7.35 : Exemple de sous formulaire

Par rapport aux formulaires dj crs dans les sections prcdentes, ce formulaire prsente les particularits suivantes : Le sous formulaire a une prsentation tabulaire alors que le formulaire principal a une prsentation colonnes. Le sous formulaire a sa propre zone de contrle, en plus de la zone de contrle du formulaire principal. Dans le sous formulaire, le champ N Commande n'apparat pas. Il est prciser que la colonne N Commande est une cl trangre dans la table Detail_commande. Donc toutes les lignes affiches dans le sous formulaire sont relatives la commande affiche dans le formulaire principal. Malgr son apparence complexe, ce formulaire n'est pas difficile raliser. Sa cration se fait selon la dmarche formulaire instantan en prenant comme table de base la table Commande (voir 3.2.1 Cration d'un formulaire instantan).

4. Les tats
4.1 Introduction Bien que les formulaires constituent le moyen le plus courant travers lequel les utilisateurs interagissent avec une base de donnes, il existe un autre moyen permettant aux utilisateurs d'extraire des donnes partir d'une base de donnes : ce sont les tats.
190

Un tat est un programme permettant d'afficher des donnes en vue de les imprimer, les stocker sous forme de fichier, les envoyer comme un message lectronique ou bien les exporter vers un autre outil tel qu'un logiciel de type tableur ou traitement de texte. Il existe pas mal de ressemblances entre les oprations relatives aux tats et celles relatives aux formulaires. Nous allons voir dans les sections qui suivent comment crer et exploiter un tat. 4.2 Cration d'un tat Comme pour les formulaires, il existe trois faons pour crer un tat : o Cration d'un tat instantan o Utilisation d'un assistant o Cration libre Ces trois faons peuvent tre combines. Gnralement, on commence par la cration d'un tat instantan ou en utilisant un assistant, puis on finalise l'tat obtenu en cration libre. Dans ce qui suit, nous allons voir ces trois modes pour crer un tat simple. 4.2.1. Cration d'tat instantan La cration d'un tat instantan est le mode le plus facile et le plus rapide pour crer un tat. Il est souvent utilis pour crer un premier prototype d'un tat qui peut tre finalis par la suite. La cration d'un tat instantan se fait en suivant les tapes suivantes : 1. Dans la fentre Base de donnes, slectionner la table sur laquelle sera bas l'tat (ici la table Detail_commande), puis dans le menu principal, slectionner le sous-menu nouvel objet ( ) puis l'option tat . On peut galement dans la fentre Base de donnes slectionner l'objet tats, puis cliquer sur le bouton Nouveau ( ). La fentre suivante s'affiche :

Figure 7.36 : Cration d'tat instantane


191

2.Slectionner le mode de cration tat instantan colonnes ou tat instantan tableau en fonction du mode d'affichage selon lequel vous souhaitez que les donnes apparaissent dans l'tat. Gnralement c'est le mode tableau qui est utilis. Dans la liste, slectionner la table sur laquelle sera bas l'tat. 3.Ds l'activation du bouton Ok , une nouvelle fentre contenant le nouvel tat est affiche :

Figure 7.37 : Excution de l'tat instantan

4. Cliquer sur Enregistrer dans le menu principal. Une fentre vous invitant saisir un nom pour le nouvel tat s'affiche :

Figure 7.38 : Enregistrement d'un tat

Par dfaut, c'est le nom de la table qui est attribu au nouvel tat. Vous pouvez attribuer un autre nom. Cliquer ensuite sur Ok pour enregistrer le nouvel tat.

Le nouvel tat est maintenant cr. Il apparat dans la liste des tats (fentre tats).

Figure 7.39 : Enregistrement d'un tat


192

L'excution de cet tat se fait en double-cliquant sur le nom correspondant dans la liste des tats ou bien en activant l'option Aperu ( ) dans la fentre Base de donnes . 4.2.2. Cration d'tat l'aide d'un assistant La cration d'un tat peut se faire galement en utilisant un assistant. Ce mode prend plus de temps que le mode prcdent (instantan) mais il offre plus de possibilits. La cration d'un tat l'aide d'un assistant se fait en suivant les tapes suivantes : 1. Dans la fentre Base de donnes, slectionner tats dans la liste des objets, puis dans le menu de cette fentre slectionner l'option Nouveau . 2. Dans la fentre Nouvel tat qui s'affiche, slectionner la ligne Assistant tat, puis dans la partie infrieure slectionner la table sur laquelle sera bas le nouvel tat (Detail_commande dans notre cas). Cliquer ensuite sur le bouton Ok. 3. Ds l'activation du bouton Ok, la premire page de l'assistant s'affiche. Elle permet de slectionner les champs qui vont apparatre dans le nouvel tat. Il est prciser que nous pouvons intgrer dans le mme tat des champs provenant de plus qu'une table, condition bien sur qu'il existe des liens entre ces tables. Dans notre cas nous allons rajouter la colonne Dsignation Article partir de la table Article, de telle sorte que lors de l'affichage d'une ligne du dtail commande, on peut voir la dsignation de l'article command la place du code.

Figure 7.40 : Assistant de cration d'un tat : page 1


193

4.Cliquer sur le bouton Suivant . Si l'tat est bas sur deux ou plusieurs tables, la page suivante de l'assistant s'affiche. Dans le cas o l'tat est bas sur une seule table, c'est la page de l'tape 5 qui s'affiche.

Figure 7.42 : Assistant de cration d'un tat : page 2

Cette page permet de prciser l'organisation de l'affichage des donnes en fonction de leur provenance (tables). Dans ce cas, nous choisissons la deuxime option (par Detail_commande). Cliquer ensuite sur le bouton Suivant . 5. La fentre qui s'affiche permet de prciser un ordre de tri pour les donnes. On peut prciser 0, 1 ou plusieurs champs selon lesquels les donnes seront tries. Pour chaque champ on peut choisir galement l'ordre de tri (croissant ou dcroissant).

Figure 7.43 : Assistant de cration d'un tat : page 3

194

6. En cliquant sur Suivant, la page suivante de l'assistant s'affiche. Elle permet de choisir la disposition des donnes (verticale, tabulaire ou justifie) et l'orientation de la page (portrait ou paysage).

Figure 7.44 : Assistant de cration d'un tat : page 4

7. En cliquant sur Suivant , la page suivante de l'assistant s'affiche. Elle permet de choisir le style de prsentation de l'tat.

Figure 7.45 : Assistant de cration d'un tat : page 5


195

8. La dernire page de l'assistant permet d'attribuer un nom au nouvel tat :

Figure 7.46 : Assistant de cration d'un tat : page 6

9. Cliquer sur le bouton Terminer . Le nouvel tat s'affiche.

Figure 7.47 : Rsultat de l'tat cr l'aide d'un assistant


196

Noter la diffrence par rapport au premier tat que nous avons cr : pour chaque ligne de commande, la dsignation est affiche la place du code article. Les donnes sont tries par numro de commande puis par numro de ligne. 3.2.2. Modification d'un tat Les deux modes de cration d'tats que nous avons vus (tat instantan et assistant) permettent de crer automatiquement des tats sans laisser beaucoup de possibilits celui qui ralise cette opration. On ne peut pas par exemple choisir l'emplacement des champs, l'intitul de ces champs, leurs types (liste, case cocher, ). Ces deux modes ont gnralement utiliss uniquement pour entamer le dveloppement d'tats. Les tats obtenus ne constituent qu'une premire bauche de l'application finale. Nous allons voir dans cette section comment affiner un tat en modifiant sa structure et sa prsentation. La modification d'un tat se fait en suivant les tapes suivantes : 1. Dans la fentre Base de donnes, slectionner tats dans la liste des objets, l'tat modifier, puis dans le menu de cette fentre slectionner l'option Modifier.
Figure 7.48 : Liste des tats

2. Ds l'activation de l'option Modifier, un diteur d'tats s'affiche :

Figure 7.49 : diteur d'tats


197

A l'aide de cet diteur on peut modifier la prsentation de l'tat. On peut modifier par exemple : Le titre de l'tat Le libell de certains champs : Des_art Dsignation La disposition des champs : justifier gauche le numro de la ligne. La taille des champs : rduire la taille du champ Qt commande. 3. Pour modifier le titre de l'tat : Slectionner le texte et l'diter directement. Modifier le style d'affichage de ce titre l'aide des outils de mise en forme de texte dans le menu principal (police, taille, couleur, ). 4.Pour modifier le libell d'un champ : Slectionner le champ concern, puis diter le texte de ce champ. On peut galement modifier le style du champ (police, taille, couleur, justification, ). 5. Pour modifier la disposition d'un champ, il suffit de le slectionner et de choisir le style d'alignement l'aide du bouton correspondant dans la boite outils. 6. Pour modifier la taille d'un champ, il faut le slectionner puis modifier sa taille en largeur et/ou en hauteur. Le rsultat de ces modifications apparat dans la fentre suivante :

Figure 7.50 : Rsultat de l'dition d'un tat

Pour valider ces modifications, cliquer sur le bouton Enregistrer du menu principal puis fermer la fentre d'dition d'tats. L'excution de cet tat apparat comme suit :
198

Figure 7.51 : Excution d'un tat

4.3 Exploitation d'un tat L'exploitation d'un tat est plus simple que l'exploitation d'un formulaire car la seule opration possible travers un tat est l'affichage des donnes. Le lancement d'un tat peut se faire de diffrentes faons : Slectionner l'tat puis double-cliquer. Slectionner l'tat puis activer le bouton Aperu. Crer un raccourci (option Crer raccourci du menu dition) et excuter l'tat directement en double-cliquant sur le raccourci. Lorsque le rsultat de l'tat est affich, on peut effectuer l'une des oprations suivantes : Imprimer le contenu : choisir l'option Imprimer dans le menu Fichier ou cliquer sur le bouton Imprimer ( ). Exporter le contenu vers un traitement de texte ou un tableur : cliquer sur le bouton correspondant :

Envoyer le document en tant que pice jointe d'un courrier lectronique : choisir l'option Envoyer vers dans le menu Fichier.
199

5. Interaction entre base de donnes et sites web dynamiques


5.1 Introduction Les donnes diffuses travers des pages web proviennent dans la plus part des cas de bases de donnes. Ces pages sont dites des pages dynamiques par opposition aux pages statiques dont le contenu est fig. Par exemple un site web qui affiche un catalogue des produits alimente la page correspondante partir d'une base de donnes. Nous allons voir dans la section suivante, d'une faon trs brve, comment alimenter une page web dynamique l'aide d'un assistant. Il est noter qu'il existe d'autres faons pour effectuer cette opration. 5.2 Alimentation de pages dynamiques La faon selon laquelle se fait l'alimentation d'une page dynamique partir d'une base de donnes varie en fonction du SGBD et du langage avec lequel la page est crite. Pour crer une page dynamique dont le contenu provient de la base de donnes, on peut procder comme suit : 1. Dans la fentre Base de donnes, slectionner la table sur laquelle sera bas l'tat (ici la table Detail_commande), puis dans le menu principal, slectionner le sous-menu nouvel objet ( ) puis l'option Pages. On peut galement dans la fentre Base de donnes slectionner l'objet Pages, puis cliquer sur le bouton Nouveau ( ). La fentre suivante s'affiche :

Figure 7.52 : Assistant de cration de page web : page 1

2. Slectionner le mode de cration Assistant Page. Dans la liste, slectionner la table sur laquelle sera bas la page. 3. Ds l'activation du bouton Ok, la premire page de l'assistant s'affiche. Elle permet de slectionner les champs qui vont apparatre dans la nouvelle page.
200

Figure 7.53 : Assistant de cration de page web : page 2

4. La fentre qui s'affiche permet de prciser un ordre de tri pour les donnes. On peut prciser 0, 1 ou plusieurs champs selon lesquels les donnes seront tries. Pour chaque champ on peut choisir galement l'ordre de tri (croissant ou dcroissant).

Figure 7.54 : Assistant de cration de page web : page 3

5. La dernire page de l'assistant permet d'attribuer un nom la nouvelle page :

201

Figure 7.55 : Assistant de cration de page web : page 4

6. Cliquer sur le bouton Terminer . La nouvelle page s'affiche.

Figure 7.56 : diteur de pages web

On peut modifier l'apparence de la nouvelle page en prcisant un titre et en modifiant l'emplacement et les proprits des lments de la page. Voici la page aprs modification :

Figure 7.56 : Rsultat de l'dition de page web


202

7. On termine par l'enregistrement de la page. Elle aura comme nom Article.html. Un raccourci cette page est cr dans la fentre Base de donnes :

Figure 7.57 : Liste de pages web

L'excution de la page que nous venons de crer se fait en double-cliquant sur le nom correspondant dans la liste des pages ou bien en activant l'option Ouvrir ( ) dans la fentre Base de donnes.

Figure 7.58 : Excution de page web

On remarque en bas de cette page la prsence d'une barre d'outils permettant la navigation entre les lignes, l'insertion et la suppression de lignes, l'enregistrement et l'annulation des mises jour, le tri des donnes (croissant et dcroissant) et enfin le filtrage des donnes.
203

RETENONS

Vous avez appris dans ce chapitre comment dvelopper une application autour d'une base de donnes. Les composantes de cette application sont les formulaires, les tats et les pages Web. Les formulaires offrent aux utilisateurs un moyen facile pour interagir avec une base de donnes en consultant, insrant, modifiant ou supprimant des donnes. Les tats permettent aux utilisateurs de visualiser, imprimer et ventuellement exporter des donnes provenant d'une base de donnes. Les pages Web dynamiques permettent de rajouter au contenu d'une page Web des donnes provenant d'une base de donnes.

204

EXERCICES
Exercice 1 Reprenez l'exercice 2 du chapitre prcdent (Chapitre 6) et crer un formulaire l'aide de l'assistant, avec un sous-formulaire pour les rservations dont se chargent les cuisiniers. Exercice 2 Un vidoclub dispose d'un grand nombre des cassettes vido. Le volume de ces ressources est devenu si important que la tche de recherche des films est devenue une tche laborieuse. Pour rsoudre ce problme, le responsable du vidoclub dcide d'automatiser la gestion des prts de cassettes vido. Chaque cassette peut faire l'objet d'un prt d'au maximum 24h. Au del, le responsable dcide du montant d'amende que le client doit payer pour ce retard. Le responsable du vidoclub souhaite en outre, garder l'histoire de tous les prts accomplis par ces clients fin d'accorder une remise pour ses clients les plus fidles. La structure de la base de donnes : Cassette (Code_Cas, Titre_Film, Realisateur, Heros, Date_Sortie, Etat, Duree, Type) Abonn (Code_Ab, Nom_Ab, Prenom_Ab, Tel, Adresse) Emprunt (Code_Cas, Code_Ab, Date_Emprunt, Date_Retour) Manipulation 1 : Cration des tables
Table Champs Code_Cas Titre_Film Cassette Heros Date_Sortie Duree Type Code_Ab Nom_Ab Abonn Prenom_Ab Tel Adresse Code_Cas Emprunt Code_Ab Date_Emprunt Date_Jour 205 Type Entier long (cl) Texte (40) Texte (40) Mmo Date Assistant liste choix Entier long (cl) Texte (30) Texte (20) Texte (10) Texte (50) Entier long (cl) Entier long (cl) Date (cl) Date

Remarque : Pour le type assistant liste des choix, choisir : policier, sciences fiction, suspens, dessins anims, comdie. Manipulation 2 : Cration des formulaires Fabonn et Fcassette Crer les formulaires Fabonn et Fcassette puis saisir les lignes des tables Cassette et Abonn par le biais de ces formulaires.
Table CASSETTE Code 1 2 3 4 5 6 7 8 9 Titre Dfi Le saint Les aventures Serial lovers Vampires Kissed Tout le monde Poursuivre Grve party Ralisateur Bob Swaim Philip Stphane James John Lynne Woody Andrew Fabien Hros Date Sortie Dure 2h30 1h30 2h30 1h30 3h00 3h00 2h30 3h00 1h30 Type Policier Suspens Dessins anims Comdie Sciences fiction Suspens Comdie Suspens Comdie

Gregory smith, John 01/01/1995 Hurt Val Kilmer, Elisabet 02/05/1993 Shue Blake, Mortimer Michle Laroque James Woods, Daniel Baldwin 20/02/1989 05/11/1993 20/09/1989

Molly Parker, peter 15/08/1995 Woody Allen, Julia 13/05/1993 Roberts Kean Reevers, 20/04/1993 Morgan Freeman Daniel Russo, 28/07/1993 Vincent Elabaz

Table Abonn Code 4851236 5230148 1235647 6982513 1230458 7891245 8921325 4581202 5558960 Nom Ben Ahmed Salhi Mannoubi Moussa Ben Sassi Ben Nejma Radi Mabrouki Ben Mahmoud Prnom Ali Amine Hatem Monia Amor Montassar Ahmed Nabil Donia Tl 71.120.356 71.270.614 71.558.665 71.987.021 71.561.447 71.480.645 71.987.854 71.746.217 71.225.559 Adresse Sousse M'Saken Akouda Akouda Sidi Bou Ali Sidi Bou Ali Kalaa Kbira M'Saken Hammam Sousse

206

Manipulation 3 : Cration du formulaire principal Femprunt et le sous formulaires Sfemprunt Crer le formulaire Femprunt puis saisir les lignes de la table emprunt par le biais de ce formulaire.
Table EMPRUNT Code_Cas 1 2 3 4 5 6 7 8 1 2 5 6 9 Code_Abonn 4851236 4851236 1235647 6982513 1230458 7891245 8921325 8921325 8921325 6982513 7891245 5230148 6982513 Date_Emprunt 01/01/2005 01/01/2005 02/02/2005 14/03/2005 05/04/2005 01/05/2005 02/05/2005 02/05/2005 02/05/2005 03/05/2005 04/05/2005 05/05/2005 06/05/2005 Date_Retour 02/01/2005 02/02/2005 03/03/2005 15/03/2005 07/04/2005 02/05/2005 03/05/2005 03/05/2005 03/05/2005 04/05/2005

Manipulation 4 : Interrogation de la base 1. Crer la requte R_Abonn_Donn qui nous permet, en donnant le code de l'abonn, d'afficher : le code de l'abonn, son nom, son prnom, son numro de tlphone et son adresse. 2. Crer la requte R_Cassette_Donne qui nous permet d'afficher les informations concernant une cassette donne. 3. Crer la requte R_Emprunt_Retard qui nous permet de calculer le nombre de jours pour chaque retard d'un prt. Manipulation 5 : Formulaire bas sur les requtes Crer les formulaires suivants : 1. F_Emprunt_Retard bas sur la requte R_Emprunt_Retard 2. F_Abonn_Donn bas sur la requte R_Abonn_Donn 3. F_Cassette_Donn bas sur la requte R_Cassette_Donn Manipulation 6 : Cration des tats 1. Crer l'tat E_Emprunt_Retard en se basant sur la requte R_Emprunt_Retard . 2. Crer de l'tat E_Cassette , en se basant sur la table Cassette. 3. Crer de l'tat E_Abonn , en se basant sur la table Abonn. Manipulation 7 : Cration d'un formulaire Menu Crer un formulaire Menu qui contiendra des boutons de commandes permettant d'ouvrir ou de fermer les formulaires dj raliss.
207

Objectifs :

Dcouvrir les concepts fondamentaux de la scurit des Bases de Donnes Etre capable de mettre en uvre des techniques de contrle d'accs des Bases de Donnes Assurer en diffrents modes, la scurit d'une Bases de Donnes

Plan :

1. Problmatique 1.1. Les piliers de la scurit des BD 1.2. Les mcanismes mis en uvre pour la scurit 2. Gestion des droits d'accs 2.1. Dfinir un mot de passe pour une base mono-utilisateur 2.2. Scuriser les accs une base de donnes 3. Cryptage d'une base de donnes 4. Gestion des utilisateurs 4.1. Via l'assistant 4.2. Manuellement 5. Intgrit des donnes 6. Sauvegarde et restauration de bases de donnes Retenons

1. Problmatique
La prservation de la confidentialit est devenue une priorit pour les citoyens ainsi que pour les administrations. Le besoin d'accumuler, de partager et d'analyser des donnes personnelles est multiple : pour rendre plus simples et efficaces les procdures administratives, pour l'amlioration de la qualit des soins grce au dossier mdical lectronique, pour personnaliser les services rendus par une grande quantit d'objets lectroniques dans un environnement d'intelligence ambiante ou mme pour la lutte contre le terrorisme (croisement de bases de donnes commerciales et gouvernementales pour la recherche de suspects). Bien que le traitement de donnes personnelles ait gnralement un but louable, il constitue une menace sans prcdent aux droits lmentaires la protection de la vie prive. Partout dans le monde, les gouvernements adoptent des lois spcifiques pour cadrer l'utilisation de donnes personnelles. Il est cependant difficile de traduire ces lois en moyens technologiques convaincants garantissant leur application. Comme l'atteste le rapport Computer Crime and Security Survey tabli par le Computer Security Institute et le FBI , le nombre d'attaques de serveurs de bases de donnes est croissant malgr la mise en place de politiques de scurit de plus en plus drastiques. 1.1. Les piliers de la scurit des BD On envisage souvent la scurit sous un angle ferm, essentiellement celui de la confidentialit. Mais bien d'autres concepts sous-tendent la scurit. Authentification Elle consiste s'assurer de l'identit d'un utilisateur avant de lui donner l'accs une base de donnes (identification par mot de passe, login, certification etc.). Confidentialit Tout n'est pas accessible tout le monde. Se connecter la base de donnes, donne un certain nombre de droits et de ressources en fonction d'un profil dfini et maintenu par un administrateur . Disponibilit Facult de dlivrer correctement un service en termes de dlai et de qualit l'utilisateur. Des mcanismes de sauvegarde varis doivent tre mis en place pour assurer la disponibilit (mcanismes de journalisation, de reprise permettent de restaurer une information sans pratiquement aucune perte, ) Intgrit Que les donnes soient rparties ou non (dans ce dernier cas les mcanismes mis en jeux seront plus complexes) elles doivent tre cohrentes. Cela sous entend, d'une part que les accs concurrents d'utilisateurs, notamment lors de mises jour,
1 Computer Security Institute. 'CSI/FBI Computer Crime and Security Survey', 2004.
1

http://www.gocsi.com/forms/fbi/pdf.html. 210

ne doivent pas compromettre la cohrence des donnes et d'autre part que ces dernires satisfassent aux contraintes d'intgrit du modle, et / ou aux rgles de gestion de l'entreprise. Traabilit En cas de problme important ou d'attaque du systme, on peut recourir l'analyse de traces ou de journaux. Le niveau de dtail de ces traces est paramtrable, et concerne soit les aspects systme, soit le rseau, soit l'accs aux donnes lmentaires elles-mmes. 1.2. Les mcanismes mis en uvre pour la scurit Les SGBD se doivent de fournir un certain nombre de mcanismes internes ou de fonctionnalits assurant un niveau satisfaisant de scurit. L'authentification, est le processus qui permet de vrifier qu'un utilisateur rclamant un accs est bien celui qu'il prtend tre, ou plus simplement le processus qui contrle l'identit de l'utilisateur. Cette action (dite aussi login) se fait en gnral via la fourniture du couple nom d'utilisateur / mot de passe. Dans certains cas l'authentification peut tre implicite et hrite d'une authentification prcdente, ou reconnue automatiquement (Adresse IP de l'utilisateur sur le rseau par exemple), bien que simplifiant les accs de ce choix peut videmment s'avrer dangereux. Les droits et privilges : une fois correctement identifi, l'utilisateur doit pouvoir accder aux informations et ressources auxquelles il a droit. Ce problme est rsolu le plus simplement avec la gestion de droits lmentaires accords un individu, ou plus efficacement avec des rles et/ou profils affects des groupes d'individus. Les LOGs ou traces : permettent d'enregistrer tout ou partie des informations concernant les accs (russis ou chous). Cette trace pourra tre plus ou moins verbeuse et son volume troitement surveille. De ce fait, on l'utilisera de manire cible sur des priodes de temps spcifiques. Tolrance aux pannes : permet par du matriel ou du logiciel redondant (CPUs, disques, ) de supporter, de manire partiellement ou compltement transparentes, diffrents types de pannes, tant au niveau du client, que du rseau, que du serveur. Une tolrance totale a bien sr un cot certain. Sauvegarde et restauration : sauvegarder les donnes sur des supports externes (disques, CDs, etc.) et pouvoir les restituer, les plus jour possible. Le but est de ne pas perdre de donnes suite un problme matriel (panne disque), logiciel (bug) ou une fausse manipulation d'un utilisateur. Mcanismes transactionnels : l'atomicit des transactions, par dfinition, assure la cohrence des donnes, mme dans des environnements distribus. L'image avant modification, stocke de manire redondante dans ou hors de la BD, permet de faire d'ventuels retours arrire pour retrouver le dernier tat cohrent, ou de s'assurer qu'il n'y a pas eu d'oprations partielles ou incompltes.
211

2. Gestion des droits d'accs


2.1. Dfinir un mot de passe pour une base mono-utilisateur Pour empcher l'accs une base mono-utilisateur, il est conseill de dfinir un mot de passe sur cette base. Si, au contraire, la base est multiutilisateur, il est prfrable d'avoir recours un mot de passe pour chaque utilisateur. Activit 1 Charger une base de donnes existante puis dfinir un mot de passe sur cette base. Vrifiez lors de l'ouverture de la base de donnes qu'un mot de passe est demand. Marche suivre : Pour dfinir un mot de passe sur une base de donnes, on peut procder comme suit : 1. Ouvrez la base de donnes en mode exclusif (menu Fichier - Ouvrir).

2. Allez dans le menu Outils - Scurit - Dfinir le mot de passe de la base de donnes...

212

3. Choisissez un mot de passe.

Les rgles suivantes sont appliquer sous Access pour le choix d'un mot de passe : Entre 1 et 20 caractres (un minimum de 8 caractres est recommand). Case sensitive (un mot de passe doit contenir au moins des minuscules, des majuscules, des chiffres et des symboles). Ne peut pas commencer par un espace et ne peut pas contenir les symboles suivants : \ [ ] : | < > + = ; , . ? * (utilisez les symboles # ou $ par exemple). Un mot de passe ne doit appartenir aucun dictionnaire.

4. Valider

Constatons
Lors de l'ouverture de la base de donnes qu'un mot de passe est demand.

2.2. Scuriser les accs une base de donnes Activit 2 Charger une base de donnes existante puis dfinir les droits d'accs cette base. Marche suivre : Pour dfinir les droits d'accs une base de donnes, on peut procder comme suit : 1. Ouvrez la base de donnes. 2. Activez le menu Outils, la commande Scurit puis l'option Autorisations d'accs. 3. partir de la fentre affiche, fixez les droits d'accs votre base. 4. Validez.
213

3. Cryptage d'une base de donnes


Une base de donnes n'est qu'un document binaire. Si une personne non autorise rcupre ce document, dfaut de pouvoir l'ouvrir si un mot de passe a t mis en place, elle pourra toujours l'ouvrir avec un diteur de texte, et y rcuprer quelques mots cls ou informations sur notre base de donnes. Crypter la base de donnes permet de rendre le dchiffrement par un diteur de texte totalement impossible. Activit 3 Ouvrir un fichier .mdb non crypt avec un diteur de texte. Que constatez-vous ? Crypter cette base de donnes Ouvrir le fichier .mdb crypt avec un diteur de texte. Que constatez-vous ?

Constatons
En ouvrant un fichier .mdb non crypt avec un diteur de texte, on peut constater que l'on peut y retrouver des donnes.

214

Marche suivre : Pour crypter une base de donnes, on peut procder comme suit : 1. Allez dans le menu Outils 2. Activez la commande Scurit 3. Slectionnez l'option Coder/Dcoder une base de donnes....

Constatons
En ouvrant le fichier .mdb crypt avec un diteur de texte, on peut constater qu'il est devenu illisible.

215

4. Gestion des utilisateurs Lorsqu'une base de donnes multiutilisateur grandit, elle peut tre utilise par plusieurs personnes ayant des fonctions diffrentes et n'ayant pas besoin de l'intgralit de la base de donnes pour travailler. Le service commercial aura besoin de la partie commerciale et le service ressources humaines de la partie gestion des employs par exemple. Il convient alors de mettre en place des groupes de travail pour contrler les droits d'accs aux donnes et les modifications de structure de la base. Puis de crer des utilisateurs et de les assigner un ou plusieurs de ces groupes de travail. 4.1. Via l'assistant Activit 4 1. A l'aide de l'assistant, crer des groupes de travail. 2. Crer des utilisateurs et assigner les un ou plusieurs des groupes dj prdfinis. Marche suivre : Pour crer des groupes de travail via l'assistant, on peut procder comme suit : 1. Allez dans le menu Outils - Scurit - Assistant Scurit au niveau utilisateur...

2. Choisissez l'option Crer un nouveau fichier de groupe de travail. Un fichier de groupe de travail porte l'extension .mdw.

216

3. Choisissez le nom du fichier de groupe de travail et son identifiant unique (WID). Ensuite, vous avez le choix entre placer un raccourci sur le bureau, qui ouvrira la base de donnes en appliquant les stratgies de scurit contenues dans ce fichier de groupe de travail, ou d'assigner par dfaut ce fichier de groupe de travail la base de donnes. Nous choisirons dans l'exemple le raccourci sur le bureau.

4. Choisissez les objets sur lesquels vont s'appliquer les stratgies dfinies ultrieurement

217

5. Choisissez les groupes de travail prdfinis dans lesquels on assignera les utilisateurs. Les permissions sur ces groupes pourront tre changes dans la procdure manuelle, et l'on pourra galement crer de nouveaux groupes.

6. Par dfaut, tous les utilisateurs appartiennent au groupe Utilisateurs . On peut dcider de donner des autorisations par dfaut ce groupe, si l'on souhaite par exemple, que tous les utilisateurs de la base de donnes aient le droit de lecture sur les tables.

218

7. Crez les utilisateurs un par un, en leur assignant un mot de passe et un identifiant unique (PID).

8. Assignez des groupes de travail vos utilisateurs ou vice-versa.

219

9. Spcifiez le chemin d'une copie non scurise de la base de donnes, au cas o la nouvelle base cre ne vous conviendra pas.

10. Imprimez et stockez soigneusement et de manire scurise le rapport assistant scurit. Il contient les emplacements des bases de donnes et du fichier de groupe de travail, les groupes de travails utiliss, les utilisateurs crs avec leurs mots de passe, les permissions assignes aux utilisateurs.

Constatons
En ouvrant la base, aprs fermeture, grce au raccourci plac sur le bureau, on peut constater qu'un compte d'ouverture de session est demand.
220

Constatons
Si l'utilisateur User2 tente d'ajouter une colonne la table "Personne", le message suivant apparat. Les droits de modification de structure de la base n'ont pas t accords l'utilisateur User2.

4.2. Manuellement Il est possible sans utiliser l'assistant de crer son propre fichier de groupe de travail, de crer ses propres groupes de travail, de leur assigner des permissions et de les appliquer des utilisateurs. Cela permet galement de vrifier ou d'affiner le rsultat de l'assistant. Marche suivre : Pour crer des groupes de travail via l'assistant, on peut procder comme suit : 1. Pour crer un fichier de groupe de travail, allez dans le menu Outils - Scurit Administrateur de groupe de travail... 2. Pour crer un groupe de travail, un utilisateur, pour assigner un utilisateur un groupe de travail, ou pour changer le mot de passe d'un utilisateur, allez dans le menu Outils - Scurit - Gestion des utilisateurs et des groupes... 3. Pour vrifier ou modifier les permissions assignes un groupe, allez dans le menu Outils - Scurit - Autorisations d'accs...

5. Intgrit des donnes


L'application de l'intgrit des donnes garantit la qualit des donnes stockes dans la base. Par exemple, si un employ est dfini avec un ID d'employ gal 123, la base de donnes ne doit pas autoriser qu'un autre employ ait la mme valeur d'ID. Si une colonne grade est destine accueillir des valeurs comprises entre 1 et 5, la base de donnes ne doit pas accepter de valeur en dehors de cette plage. Si la table contient une colonne dept_id qui stocke le numro de service de l'employ, la base de donnes ne doit accepter que des valeurs correspondant bien aux identificateurs de service de la socit. Lors de la planification des tables, deux tapes importantes consistent d'une part identifier les valeurs valides pour une colonne et d'autre part dcider de la faon d'appliquer l'intgrit des donnes dans cette colonne. L'intgrit des donnes se rpartit entre les catgories suivantes : Intgrit d'entit : L'intgrit d'entit dfinit une ligne comme tant une entit unique pour une table particulire Intgrit de domaine : L'intgrit de domaine fait rfrence la fourchette (au domaine) des entres valides pour une colonne spcifique.
221

Intgrit rfrentielle : L'intgrit rfrentielle prserve les relations dfinies entre les tables lors de l'insertion ou de la suppression de lignes. Intgrit dfinie par l'utilisateur : L'intgrit dfinie par l'utilisateur vous permet de dfinir des rgles propres l'entreprise, qui n'appartiennent aucune des autres catgories d'intgrit. Toutes les catgories d'intgrit acceptent l'intgrit dfinie par l'utilisateur.

6. Sauvegarde et restauration de bases de donnes


Le composant de sauvegarde et restauration apporte une scurit essentielle pour la protection des donnes cruciales stockes dans les bases de donnes. L'implmentation d'une stratgie de sauvegarde et de restauration correctement planifie permet de protger les bases de donnes contre toute perte de donnes due des dgts provoqus par une srie de dfaillances. Vous pouvez tester votre stratgie en restaurant un ensemble de sauvegardes et rcuprer votre base de donnes pour vous prparer ragir efficacement en cas de sinistre. Une copie de donnes qui peut tre utilise pour restaurer et rcuprer des donnes porte le nom de sauvegarde. Les sauvegardes permettent de restaurer les donnes aprs une dfaillance. Avec des sauvegardes appropries, vous pouvez effectuer des rcuprations aprs de nombreux types d'checs, notamment : dfaillance du support ; erreurs utilisateur (telles que la suppression d'une table par inadvertance) ; dfaillances matrielles (telles qu'un lecteur de disque endommag ou la perte permanente d'un serveur) ; catastrophes naturelles. Par ailleurs, il peut tre utile d'effectuer des sauvegardes d'une base de donnes afin d'effectuer des tches administratives de routine, telles que la copie d'une base de donnes d'un serveur vers un autre, la configuration de la mise en miroir de base de donnes et l'archivage.

7. Contrle de donnes dans le langage SQL


7.1. Cration d'utilisateurs L'administrateur d'une base de donnes peut crer tout moment un nouvel utilisateur l'aide de la commande suivante : CREATE USER nom_utilisateur IDENTIFIED BY mot_de_passe ;

222

L'utilisateur cr ne dispose d'aucun droit. Il ne peut mme pas se connecter la base de donnes. 7.2. Attribution des droits Il existe deux types de droits (ou privilges) : des droits globaux sur la base de donnes dits droits systme : Ce sont des droits permettant leurs dtenteurs d'effectuer des oprations globales sur la base de donnes, tel que la connexion, la sauvegarde de la base de donnes. La commande SQL permettant d'attribuer un droit systme un utilisateur est la suivante :

GRANT droit1, droit2, , droitn TO utilisateur1, utilisateur2, , utilisateurp [WITH ADMIN OPTION] On peut utiliser PUBLIC pour dsigner tous les utilisateurs. L'option WITH ADMIN OPTION autorise le nouvel utilisateur accorder les droits reus d'autres utilisateurs des droits sur des objets de la base de donnes dits droits objet : Ce sont des droits permettant leurs dtenteurs d'effectuer des oprations sur des objets la base de donnes, tel que des tables, des vues. La commande SQL permettant d'attribuer un droit objet un utilisateur est la suivante : GRANT droit1, droit2, , droitn ON objet TO utilisateur1, utilisateur2, , utilisateurp [WITH GRANT OPTION] Il est noter que toute table n'est initialement accessible que par l'utilisateur qui l'a cre. On peut utiliser ALL pour dsigner tous les droits et PUBLIC pour dsigner tous les utilisateurs. Quelques exemples de droits objet : ALTER, DELETE, INDEX, INSERT, UPDATE, SELECT, ou aussi ALL pour toutes les oprations. L'option WITH GRANT OPTION autorise le nouvel utilisateur accorder les droits reus d'autres utilisateurs.

223

Exemple 1. L'utilisateur IG21 dcide d'attribuer l'utilisateur ID22 le droit de slection et de mise jour sa table commandes, il tape : GRANT SELECT, UPDATE ON commandes TO IG22 ; 2. L'utilisateur IG22 peut crer une table cde partir de cette commande: CREATE TABLE cde AS SELECT * FROM ID21.commandes ;

7.3. Retrait des droits


La commande qui permet de supprimer un ou plusieurs droits sur un objet est : REVOKE droit1, droit2, , droitn [ON objet] FROM utilisateur1, utilisateur2, ,utilisateurn Cette commande permet de retirer des droits systme ou objet. La clause ON objet est utilise uniquement en cas de retrait de droit objet. Avec REVOKE aussi on peut utiliser ALL pour dsigner tous les droits et PUBLIC pour dsigner tous les utilisateurs. Exemple REVOKE ALL ON commande FROM PUBLIC ;

224

Enonc : Une agence LV de location de voitures gre manuellement son parc, compos d'une centaine de vhicules partir d'un paquet de fiches cartonnes. Ci-aprs, un exemple de fiche de voiture :
Numro de l'immatriculation La marque Le type La couleur La puissance Le kilomtrage L'ge de la voiture Prix par jour Type carburant : : : : : : : : : 124 TN 4951 Peugeot 205 bleu 6 CV 45000 2 ans 65 dinars Essence/Diesel

Le responsable de la socit LV dcide d'implanter une base de donnes pour amliorer la gestion de son parc de voitures. Aprs tude, une voiture est dcrite par le numro d'immatriculation comme identifiant, une marque, un type, une couleur, une puissance, un kilomtrage, un age de voiture, un prix par jour et un type de carburant. Chaque locataire est identifi par un numro locataire et chacun a un nom et une adresse. A chaque location un enregistrement sera effectu : Le numro d'immatriculation de la voiture, le numro du locataire et la date de location. Le kilomtrage de retour et la date de retour (date fin location) seront enregistr au retour de la voiture. Questions I. Partie thorique : 1. Etablir la liste des colonnes. 2. Etablir la liste des tables. 3. Affecter les colonnes aux tables et proposer une description textuelle. 4. Prciser les cls primaires des tables. 5. Identifier les liens entre les tables. II. Partie pratique : traiter en mode assist et en mode commande 1. En utilisant le SGBD disponible dans votre laboratoire, implmenter cette base. 2. Saisir, votre choix, quelques informations dans les tables. 3. Reprsenter la structure de cette base de donnes sous forme graphique. 4. Crer les requtes suivantes : Requte1 : dfinir une requte qui permet d'afficher la liste, selon les numros d'immatriculation, des voitures.
227

Requte2 : dfinir une requte qui permet d'afficher la liste des locataires. Requte3 : dfinir une requte qui permet d'afficher les noms des locataires, par ordre alphabtique, qui ont lou des voitures pendant le mois de janvier de l'anne en cours. 5. Raliser les formulaires de saisie et les tats que vous jugez ncessaires ainsi qu'un menu principal pour toute l'application. Elments de correction

I. Partie thorique :
1. Liste des colonnes : La liste des colonnes est dduite partir de l'nonc et ce en mettant en valeur les proprits. Ces proprits seront regroupes dans le tableau qui suit. Dans la premire colonne, il est recommand d'utiliser les mmes rgles de nommage qu'en programmation (viter les caractres accentus, rduire la taille des noms des colonnes, etc.).
Liste des colonnes Obligatoire Valeurs autorises (2) O (3) Valeur par dfaut Taille

Nom colonne

Description

Type de donnes

Sujet

IMMAT MARQUE TYPE COULEUR PUISS KILOM AGE PRIX_PAR_JOUR


TYPE_CARBURANT

Numros d'immatriculation Marque de la voiture Type de la voiture Couleur de la voiture Puissance de la voiture Le kilomtrage indiqu par le compteur Age de la voiture Prix de location par jour Type de carburant de la voiture Numro de locataire Nom de locataire Adresse de locataire Date de location Kilomtrage de dpart Kilomtrage de retour Date de retour de location

Caractre Caractre Caractre Caractre Numrique Numrique Numrique montaire Caractre Caractre Caractre Caractre Date Numrique Numrique Date

10 10 10 10 2 10 2 4 10 10 20 20

O O O N N O N

Voiture Voiture Voiture Voiture Voiture Voiture Voiture Voiture Voiture

LOC LOCNOM ADR DL KILD KILR DR

O O O O (1)

Locataire Locataire Locataire Location Location Location Location

10 10

(1) La valeur par dfaut de la date de location est la date du jour. (2) La valeur de kilomtrage de retour reste avec le kilomtrage de dpart jusqu' la da te de retour (3) La date de retour d'une voiture doit tre suprieure ou gale la date de location.

228

2. Liste des tables : La liste des tables est dduite partir de la liste des colonnes. A chaque sujet correspond une table. Aux trois sujets Voiture , Locataire et Location vont correspondre trois tables. Pour les tables, on appliquera les mmes rgles de nommage que celles adoptes pour les colonnes.
Liste des tables Nom table Voiture Locataire Location Description Regroupe l'ensemble des voitures de la socit Regroupe les personnes qui louent des voitures de la socit Stocke l'historique des locations de voitures Sujet Voiture Locataire Location

3. Affectation des colonnes aux tables : Il s'agit ici d'affecter chacune des colonnes du premier tableau aux trois tables du deuxime tableau en faisant un rapprochement bas sur la colonne sujet . Nous utilisons la reprsentation textuelle pour dcrire la structure des tables. Voiture (Immat, Marque, Type, Couleur, Puiss, Kilom, Age, Prix_par_jour, Type_carburant) Locataire(Loc, Locnom, Adr) Location(Immat, Loc, Dl, kild, Dr, kilr) 4. Cls primaires des tables : Pour chaque table, nous allons dterminer une cl primaire. Celle ci sera slectionne parmi les colonnes de la table. Table Voiture : Il est dit dans le texte qu'une voiture est dcrite par le numro d'immatriculation comme identifiant. On peut alors l'utiliser comme cl primaire. Table Locataire : Il est galement mentionn dans le texte que chaque locataire est identifi par un numro locataire. On peut donc l'adopter comme cl primaire. Table Location : Une location est identifi par une voiture loue et le locataire qui a lou cette voiture. On peut donc supposer que la cl primaire de cette table est compose des deux colonnes IMMAT et LOC. Cependant, en examinant cette table, on peut constater que cette reprsentation n'est valide que dans le cas o on ne garde pas un historique des locations, c'est-dire que suite au retour d'une voiture, la ligne correspondante sera supprime de la table Location. Si nous souhaitons garder cet historique on doit rajouter la date de location DL la cl primaire de la table Location, nous adoptons cette dernire alternative. La description textuelle de la structure des tables en tenant compte des cls primaires sera la suivante :
229

Voiture (Immat, Marque, Type, Couleur, Puiss, Kilom, Age, Prix_par_jour, Type_carburant) Locataire(Loc, Locnom, Adr) Location(Immat, Loc, Dl, Kild, Dr, Kilr) 5. Liens entre les tables : D'aprs l'nonc, une location est relative une voiture et un locataire. Ainsi, on dduit les deux liens suivants : un lien entre la table Location et la table Voiture un lien entre la table Location et la table Locataire Nous utilisons le tableau suivant pour dcrire ces liens :
Table mre Voiture Locataire Table fille Location Location Cl primaire Immat Loc Cl trangre Immat Loc

Prcisons que la cl primaire figure dans la table mre et la cl trangre dans la table fille. En tenant compte de ces liens entre les tables, la description textuelle des tables devient alors : Voiture (Immat, Marque, Type, Couleur, Puiss, Kilom, Age, Prix_par_jour, Type_carburant) Locataire(Loc, Locnom, Adr) Location(Immat#, Loc#, Dl, Kild, Dr, Kilr)

II. Partie pratique :


A - Mode assist : 1. Implmentation de la base :

La Table voiture

230

La table Locataire

La table Location

2. Saisie des donnes : Saisir, votre choix, quelques informations dans les tables.

3. Reprsentation graphique : On obtient la reprsentation graphique suivante de la structure de la base de donnes :

4. Requtes : Requte 1 : Affichage de la liste des voitures trie par numro d'immatriculation.
231

Requte 2 : Affichage de la liste des Locataires.

Requte3 : Dfinir une requte qui permet d'afficher les noms des locataires, par ordre alphabtique, qui ont lou des voitures pendant le mois de janvier de l'anne en cours.

5. Exemples de formulaires :

232

B - Mode commande : En utilisant le langage SQL, disponible et en se basant sur la syntaxe vue dans les chapitres 5 et 6, crer les tables prcdentes et rpondre aux questions.
Sans tri Avec Tri Croissant Requte 1 : affichage de la liste des voitures Requte 1 : affichage de la liste des SELECT * SELECT * FROM voiture FROM voiture ORDER BY Immat ;

Requte 2 : affichage de la liste des Locataires SELECT * FROM locataire; Requte 3 : Affichage des noms des locataires, par ordre alphabtique, qui ont lou des voitures pendant le mois de janvier de l'anne en cours. Utiliser la commande SELECT de la manire suivante : SELECT Distinct LOCNOM FROM voiture X, Locataire Y, Location Z WHERE (DL Between 01/01/2008 AND 31/01/2008) AND ( X.Immat=Z.Immat AND Y.Loc=Z.Loc) ORDER BY LOCNOM; Amlioration de la solution Sachant qu'une voiture ne peut tre loue qui si elle est disponible : non loue, en tat de circulation ou non rserve. Problmatique : dterminer d'une manire automatique la liste des voitures disponibles pour la location. Elments de rponse : - ajouter une colonne Etat dans la table voiture qui renseigne sur l'tat de la voiture (D pour disponible, L pour loue, R pour rserve et P pour en panne) - en mode commande, Utiliser la commande ALTER TABLE de la manire suivante : ALTER TABLE voiture ADD COLUMN (Etat VARCHAR(1)) ; Utiliser la commande SELECT de la manire suivante : SELECT * FROM voiture WHERE Etat='D';
233

nonc On se propose de concevoir une base de donnes relative la gestion d'un club vido. Dans ce club, un client a le choix de louer des films disponibles en plusieurs exemplaires. Un film est identifi par un code. Il est caractris par un titre, une anne de sortie, une dure, un type (comdie, policier, science-fiction, ) et les principaux acteurs. Un film existe en un ou plusieurs exemplaires. Chaque exemplaire est identifi par un code unique attribu par le club vido, une date d'acquisition et le support. Un support est identifi par un code et est caractris par un type (comme cassette, CD ou DVD). Un exemplaire, sur un support donn, ne peut contenir qu'un seul film. Chaque acteur est identifi par un code et est caractris par un nom, un prnom et ventuellement une nationalit. Le club dtient, pour chaque client, un ensemble d'informations : un identifiant qui est le numro de sa carte d'identit, un nom, un prnom, une adresse, un numro de tlphone et une profession. Lors de la location d'un film, une date donne, le prix de cette location est fix par le personnel du club. Questions

I. Partie thorique :
1. 2. 3. 4. 5. Etablir la liste des colonnes. Etablir la liste des tables. Affecter les colonnes aux tables et proposer une description textuelle. Prciser les cls primaires des tables. Identifier les liens entre les tables.

II. Partie pratique :


1. 2. 3. 4. En utilisant le SGBD disponible dans votre laboratoire, implmenter cette base. Saisir, votre choix, quelques informations dans les tables. Reprsenter la structure de cette base de donnes sous forme graphique. Raliser les formulaires de saisie et les tats que vous jugez ncessaires ainsi qu'un menu principal pour toute l'application.

Elments de correction

I. Partie thorique :
1. Liste des colonnes : La liste des colonnes est dduite partir de l'nonc et ce en mettant en valeur les proprits. Ces proprits seront regroupes dans le tableau qui suit. Dans la premire colonne, il est recommand d'utiliser les mmes rgles de nommage qu'en programmation (viter les caractres accentus, rduire la taille des noms des colonnes, etc.).
235

Liste des colonnes Obligatoire Valeur par dfaut Valeurs autorises

Nom colonne

Description

Type de donnes

Taille

Sujet

Code_Film Titre_Film An_Sortie Type_Film Duree_Film Code_Exempl Date_Acqui Code_Acteur Nom_Acteur Prenom_Acteur Nat_Acteur Code_Support Type_Support CIN_Client Nom_Client Prenom_Client Adresse_Client Tel_Client Prof_Client Date_Location Prix_Location (1)

Le code d'un film Le titre du film L'anne de sortie du film Le type du film La dure du film en minutes Le code de l'exemplaire du film Date d'acquisition de l'exemplaire Le code d'un acteur Le nom de l'acteur Le prnom de l'acteur La nationalit de l'acteur Le code d'un support Le type du support (Cassette, CD, DVD) Le numro de la carte d'identit d'un client Le nom du client Le prnom du client L'adresse du client Le numro de tlphone du client La profession du client La date de location du support Le prix de location d'un film

Numrique Caractre Numrique Caractre Numrique Caractre Date Numrique Caractre Caractre Numrique Numrique Caractre Numrique Caractre Caractre Caractre Numrique Caractre Date Montaire

5 30 4 20 3 10

O O N O O O O

Film Film Film Film Film Exemplaire Exemplaire Acteur Acteur Acteur Acteur Support Support Client Client Client Client Client Client (1) Location Location

5 30 30 8 5 10 8 30 30 50 8 20

O O O N O O O O O O N N O O

La valeur par dfaut de la date de location est la date du jour.

2. Liste des tables : La liste des tables est dduite partir de la liste des colonnes. A chaque sujet correspond une table. A chacun des sujets Film , Exemplaire , Acteur , Client , Support , et Location correspond une table. Pour les tables, on appliquera les mmes rgles de nommage que celles adoptes pour les colonnes. 236

Liste des tables Nom table Film Exemplaire Client Acteur Support Location Description Regroupe l'ensemble des films du club. Regroupe les exemplaires d'un film Regroupe les personnes qui louent un support du club. Regroupe les diffrents acteurs. Regroupe les diffrents supports. Stocke l'historique des locations de films. Film Exemplaire Client Acteur Support Location Sujet

3. Affectation des colonnes aux tables : Il s'agit ici d'affecter chacune des colonnes du premier tableau aux tables du deuxime tableau en faisant un rapprochement bas sur la colonne Sujet. Nous utilisons la reprsentation textuelle pour dcrire la structure des tables. Film (Code_Film, Titre_Film, Nbr_Copie_Film, An_Sortie, Type_Film, Duree_Film) Exemplaire (Code_exempl, Date_Acqui) Acteur (Code_Acteur, Nom_Acteur, Prenom_Acteur, Nat_Acteur) Client (CIN_Client, Nom_Client, Prenom_Client, Adresse_Client, Tel_Client, Prof_Client) Support (Code_Support, Type_Support) Location (Date_Location, Prix_Location) 4. Cls primaires des tables : Pour chaque table, nous allons dterminer une cl primaire. Celle ci sera slectionne parmi les colonnes de la table. Table Film : Il est dit dans le texte qu'un film est identifi par un code. On peut alors l'utiliser comme cl primaire. Table Exemplaire : Il est dit dans le texte qu'un exemplaire est identifi par un code. On peut alors l'utiliser comme cl primaire. Table Acteur : Il est galement mentionn dans le texte que chaque acteur est identifi par un code. On peut donc l'adopter comme cl primaire. Table Client : Le numro de la carte d'identit peut tre adopt comme cl primaire. Table Support : Il est aussi cit dans le texte que chaque support est identifi par un code. On peut donc l'adopter comme cl primaire. Table Location : Une location est identifie par un exemplaire d'un film lou et le client qui l'a lou. On peut donc supposer que la cl primaire de cette table est compose des deux colonnes Code_Exempl et Code_Client. Cependant, en examinant cette table, on peut constater que cette reprsentation n'est valide que dans le cas o on ne garde pas un historique des locations, c'est--dire que lorsque le client retourne l'exemplaire du film, la ligne correspondante sera supprime de la table Location. Si nous souhaitons garder cet historique, on doit rajouter la date de location Date_Location la cl primaire de la table Location, nous adoptons cette alternative. La description textuelle de la structure des tables en tenant compte des cls primaires sera la suivante :
237

Film (Code_Film, Titre_Film, Nbr_Copie_Film, An_Sortie, Type_Film, Duree_Film) Exemplaire (Code_exempl, Date_Acqui) Acteur (Code_Acteur, Nom_Acteur, Prenom_Acteur, Nat_Acteur) Client (CIN_Client, Nom_Client, Prenom_Client, Adresse_Client, Tel_Client, Prof_Client) Support (Code_Support, Type_Support) Location (Code_Film, CIN_Client, Date_Location, Prix_Location) 5. Liens entre les tables : D'aprs l'nonc, on peut dduire les liens suivants : un film peut exister en plusieurs exemplaires un lien entre la table Film et la table Exemplaire un exemplaire est propos sur un support un lien entre la table Exemplaire et la table Support un acteur joue dans un ou plusieurs films et un film est jou un ou plusieurs acteurs ncessit d'une nouvelle table Acteur et la table Acteur Film lie aux tables Acteur et Film une location est lie un client et un exemplaire un lien entre la table client et la table Location et un second lien entre la table exemplaire et la table Location Nous utilisons le tableau suivant pour dcrire ces liens :
Table mre Film Support Acteur Film Client Exemplaire Table fille Exemplaire Exemplaire Acteur_Film Acteur_Film Location Location Cl primaire Code_Film Code_Support Code_Acteur Code_Film CIN_Client Code_Exempl Cl trangre Code_Film Code_ Support Code_Acteur Code_Film CIN_Client Code_Exempl

Prcisons que la cl primaire figure dans la table mre et la cl trangre dans la table fille. En tenant compte de ces liens entre les tables, la description textuelle des tables devient alors : Film (Code_Film, Titre_Film, Nbr_Copie_Film, An_Sortie, Type_Film, Duree_Film) Exemplaire (Code_exempl,Date_Acqui, Code_Film#, Code_Support#) Acteur (Code_Acteur, Nom_Acteur, Prenom_Acteur, Nat_Acteur) Client (CIN_Client, Nom_Client, Prenom_Client, Adresse_Client, Tel_Client, Prof_Client) Support (Code_Support, Type_Support) Location(Code_Exempl#,CIN_Client#,Date_Location, Prix_Location) Acteur_Film (Code_Film#, Code_Acteur#)
238

II. Partie pratique (Mode assist) : 1. Implmentation de la base :

La table Film

La table Exemplaire

La table Acteur

La table Client

La table Support

La table Acteur_Film

La table Location

239

2. Saisie des donnes : Saisir, votre choix, quelques informations dans les tables.

Exemple d'informations saisir dans la table Film

Exemple d'informations saisir dans la table Support

3. Reprsentation graphique : On obtient la reprsentation graphique suivante de la structure de la base de donnes :

240

4. Exemples de formulaires :

Le formulaire Films

formulaire Supports

formulaire Supports

241

nonc Pour ce projet, nous allons aborder la gestion d'un tablissement scolaire de type collge, l'objectif tant de stocker les notes des lves et d'tablir les bulletins trimestriels. Au travers de cette application, un certain nombre d'aspects techniques seront traits, de la mise en place d'une base de donnes (cration des tables) jusqu' la construction d'une interface utilisateur cohrente (formulaires, tats, menus).

Un aperu du projet final

1. Structure de la base La mise en place d'une base de donnes consiste d'abord en une analyse des besoins. La partie la plus importante de votre base de donnes se joue avant mme d'allumer l'ordinateur ! L'analyse doit dgager les tables, leurs colonnes et les liens entre elles. Pour cette application, nous adopterons la structure suivante :
Villes (Code_Postal, Nom_Ville) Familles (Numro_Famille, Nom_Responsable, Prnom_Responsable, Titre, Adresse1, Adresse2, Code_Postal#, Tlphone) Elves (Numro_Elve, Numro_Famille#, Nom_Elve, Prnom_Elve, Date_de_naissance) Enseignants (Numro_Enseignant, Nom_Enseignant, Prnom_Enseignant, Titre, Adresse, Code_Postal#, Tlphone, Email) Classes (Numro_Classe, Nom_Classe, Anne_Scolaire, Remarques) Classes_Elves (Numro_Classe#, Numro_Elve#) Matires (Numro_Matire, Numro_Classe#, Numro_Enseignant#, Discipline, Coefficient) Notes (Numro_Note, Numro_Elve#, Numro_Matire#, Note, Remarques)
243

Travail faire - Analysez la reprsentation ci-dessus. - A l'aide du SGBD disponible dans votre laboratoire, crez la base susmentionne en tenant compte des remarques suivantes : Ralisez une liste de choix pour la colonne Titre (Monsieur, Madame, Mademoiselle) des tables Familles et Enseignants afin de faciliter la saisie. Ralisez une liste de choix pour la colonne Code_Postal des tables Familles et Enseignants construite partir de la table Villes 2. Les relations du projet dans les grandes lignes Une famille peut comprendre plusieurs enfants, donc plusieurs lves. Un lve suit plusieurs matires. Un enseignant peut enseigner plusieurs matires Il est important de dfinir ce qu'est une classe : dans notre exemple, il s'agit d'un ensemble d'lves sur une priode scolaire dtermine. En d'autres termes, la Quatrime SI 1/Anne 2007 est une classe, la Quatrime SI 1/Anne 2008 en est une autre. Pour des raisons de simplification, nous avons galement attribu une cl primaire Numro_Matire dans la table Matires. Une cl idale aurait t la combinaison Numro_Elve, Numro_Classe et Discipline.

Travail faire - Crez les tables constituant cette base de donnes. 3. Mise en place de l'interface Pour tester votre projet, vous pouvez insrer quelques lignes dans les diffrentes tables. Il est cependant plus pratique d'effectuer la saisie au travers de formulaires
244

les utilisateurs y gagneront en confort, tandis que vous-mme pourrez terme effectuer plus de contrles de saisies et plus de traitements. En rsum, le formulaire est l'objet ddi la saisie et la consultation l'cran. 3.1. Construction du formulaire Villes La saisie des villes pourrait se drouler en mme temps que la saisie des familles ou des enseignants. Cependant, pour centraliser la saisie (et les vrifications ultrieures), nous allons construire un formulaire uniquement consacr aux villes. Travail faire Dcrivez puis appliquez la dmarche suivre pour construire un formulaire pour les villes. Essayez ensuite d'amliorer son aspect graphique. 3.2. Construction du formulaire Enseignants Globalement, les techniques utilises pour le formulaire Enseignants sont proches de ce qui a dj t abord, quelques dtails prs : Le formulaire Enseignants comprend un peu plus de champs, il sera donc plus fonctionnel en mode Colonne simple qu'on mode Tabulaire. Le code postal suffira pour afficher automatiquement le nom de la ville.

Travail faire Dcrivez puis appliquez la dmarche suivre pour construire le formulaire Enseignants.
245

3.3. Construction du formulaire Familles et de son sous-formulaire Le formulaire Familles apporte quelques notions techniques intressantes : Comme le formulaire Enseignants, il est bas de prfrence sur les deux tables Familles et Villes, de faon grer de faon automatique l'affichage du code postal en fonction de la ville. Pour amliorer encore la saisie, il serait pratique de pouvoir renseigner les enfants d'une famille sur ce formulaire. Autant la relation Familles/Villes implique dans ce sens une relation Un Un (une famille est rattache une seule ville), autant la relation Familles/Enfants implique une relation de Un Plusieurs (une famille peut comprendre plusieurs enfants). Ceci va nous imposer de raliser un formulaire avec sous-formulaire. Travail faire - Dcrivez puis appliquez la dmarche suivre pour construire le formulaire Familles.

3.4. Construction du formulaire Classes Cette fois, nous allons encore crer un formulaire synthtique pour une saisie optimale. Dans notre schma, une classe regroupe un ensemble d'lves et est associe plusieurs matires, ce qui implique un formulaire avec deux sousformulaires.
246

Travail faire Dcrivez puis appliquez la dmarche suivre pour construire le formulaire Classes avec un premier sous-formulaire pour les matires et un deuxime pour les lves.

3.5. Construction du formulaire Notes Le formulaire Notes va bien sr nous permettre de renseigner les notes des lves, ce qui consiste associer une matire, un lve et une note. Globalement, il suffirait de faire un formulaire simple partir de la table Notes pour que la saisie soit fonctionnelle. Cependant, pour des raisons d'ergonomie et de cohrence, nous allons procder autrement : a priori, les notes s'attribuent en fonction d'une classe et d'une matire, puis lve par lve.

247

Travail faire Dcrivez puis appliquez la dmarche suivre pour construire le formulaire Notes.

Le formulaire Notes

3.6. Construction du bulletin de notes Maintenant que quasiment tous les lments de l'interface sont en place, il s'agit de produire quelques rsultats papier, donc de crer quelques tats. Les tables, requtes et formulaires peuvent tre imprims, comme l'attestent la commande Fichier/Imprimer et l'icne Imprimer qui accompagnent tous ces objets. Cependant, pour une matrise optimale de la mise en page et de divers rglages (sauts de pages entre les sections, options de regroupement), il est fortement conseill de passer par un tat pour tout document imprim de qualit.

Travail faire Prparez l'tat Bulletins de notes. Ajoutez un en-tte au bulletin de notes. Ajoutez la moyenne par matire. Ajouter la priode sur l'tat.

248

Note

Coefficient

Remarques

Visa du chef detablissement

Un exemple de bulletin de notes

3.7. Finalisation de l'application Tous vos lments fonctionnels sont crs. Reste finaliser votre application pour donner encore un peu plus d'ergonomie au projet. Travail faire Crez un menu gnral comme celui prsent au dbut du projet. Rglez les options de dmarrage afin de dfinir le comportement de votre base de donnes l'ouverture.

249

Objectifs :

En se basant sur ses acquis et sur l'ensemble des connaissances assimiles durant toute l'anne scolaire, l'lve doit pouvoir raliser un certain nombre de projets inspirs de sa vie courante.

Plan :

1. Projet 1 : 2. Projet 2 : 3. Projet 3 : 4. Projet 4 : 5. Projet 5 : 6. Projet 6 : 7. Projet 7 : 8. Projet 8 : 9. Projet 9 : 10.Projet 10 :

Gestion de courses de chevaux Gestion d'un aroport Gestion d'un colloque Inventaire d'uvres d'art Annuaire tlphonique Immatriculation de vhicules Gestion d'une institution universitaire Base de donnes Fournisseurs Base de donnes Livraisons Gestion d'une banque

1.1. Enonc
Un parieur assidu des champs de courses et des bases de donnes, voudrait mmoriser dans une base de donnes les courses de chevaux, les paris qu'il a faits et les rsultats. Plus prcisment, il veut enregistrer les informations suivantes pour chaque course : Le nom et la date (exemple: Prix de la Tunisie, 04-09-2000) Le numro, le nom et la cote des chevaux partants (exemple: "1, Salicorne, 20/1", "2, Solstice, 8/1", "3, Samovar, 17/1", etc.) Ses paris, avec pour chacun: le type de pari (coupl, tierc, quart, quint, etc.), la somme joue et les numros de chevaux dans l'ordre du pari (exemple: "tierc, 20 Dt, 13-2-8") Une fois la course joue, on enregistre aussi : Le rsultat : l'ordre d'arrive des chevaux (exemple: <1er,13>, <2me,8>, <3me,14>, etc.) et les rapports pour chacun des types de pari (exemple: <tierc dans l'ordre, 900 Dt>, <tierc dans le dsordre: 112 Dt>, <quart dans l'ordre: 5430 Dt>, <quart dans le dsordre: 750 Dt>, <2 sur 4 : 21 Dt>, etc.) Le gain total du parieur pour la course. Les noms de chevaux sont uniques, et les noms de courses sont uniques.

1.2. Questions
1.2.1. Partie thorique : 1. Etablir la liste des colonnes. 2. Etablir la liste des tables. 3. Affecter les colonnes aux tables et proposer une description textuelle des tables. 4. Prciser les cls primaires des tables. 5. Identifier les liens entre les tables. 1.2.2. Partie pratique : 1. En utilisant le SGBD disponible dans votre laboratoire, implmenter cette base. 2. Saisir, votre choix, quelques informations dans les tables. 3. Reprsenter la structure de cette base de donnes sous forme graphique. 4. Raliser les formulaires de saisie et les tats que vous jugez ncessaires ainsi qu'un menu principal pour toute l'application.
252

2.1 Enonc Pour les besoins de la gestion d'un aroport, on souhaite mmoriser dans une base de donnes les informations ncessaires la description des faits suivants: Chaque avion gr est identifi par un numro d'immatriculation. Il est la proprit soit d'une socit, soit d'un particulier: dans les deux cas on doit connatre le nom, l'adresse et le numro de tlphone du propritaire, ainsi que la date d'achat de l'avion; Chaque avion est d'un certain type, celui-ci tant caractris par son nom, le nom du constructeur, la puissance du moteur, le nombre de places; La maintenance des avions est assure par les mcaniciens de l'aroport. Par scurit, les interventions sont toujours effectues par deux mcaniciens (l'un rpare, l'autre vrifie). Un mme mcanicien peut, selon les interventions, effectuer la rparation ou la vrification. Pour toute intervention effectue, on conserve l'objet de l'intervention, la date et la dure; Pour chaque mcanicien on connat son nom, son adresse, son numro de tlphone et les types d'avion sur lesquels il est habilit intervenir; Un certain nombre de pilotes sont enregistrs auprs de l'aroport. Pour chaque pilote on connat son nom, son adresse, son numro de tlphone, son numro de brevet de pilote et les types d'avion qu'il est habilit piloter avec le nombre total de vols qu'il a effectu sur chacun de ces types. 2.2 Questions 2.2.1. Partie thorique : 1. Etablir la liste des colonnes. 2. Etablir la liste des tables. 3. Affecter les colonnes aux tables et proposer une description textuelle des tables. 4. Prciser les cls primaires des tables. 5. Identifier les liens entre les tables.
2.2.2. Partie pratique : 1. En utilisant le SGBD disponible dans votre laboratoire, implmenter cette base. 2. Saisir, votre choix, quelques informations dans les tables. 3. Reprsenter la structure de cette base de donnes sous forme graphique. 4. Ralisez les requtes suivantes: Liste des avions de la socit "Voltige"; Liste des avions qui sont la proprit de particuliers; Dure totale des interventions faites par le mcanicien HADDED au mois de janvier; Liste des types d'avion de plus de 4 places; Liste des pilotes habilits pour le type d'avion B727 ; Liste des interventions (objet, date) faites sur l'avion numro 3242XZY78K3 . 5. Raliser les formulaires de saisie et les tats que vous jugez ncessaires ainsi qu'un menu principal pour toute l'application.
253

3.1. Enonc Les organisateurs d'un colloque annuel d'informatique veulent monter une base de donnes pour grer les inscriptions des participants, la prparation des actes qui contiennent le texte des articles qui sont prsents au colloque, le choix de ces articles, et l'organisation des diffrentes sessions. Le colloque dure quatre jours et chaque demi-journe est consacre une session qui regroupe des articles portant sur le mme thme (systmes temps rel, multimdia, bases de donnes, ...). Les articles prsents au colloque et imprims dans les actes sont choisis de la faon suivante: ce sont des articles de 15 20 pages, prsentant des rsultats de recherche, proposs par une (ou plusieurs) personne, appele ici auteur, qui travaille dans un laboratoire de recherche d'une universit ou entreprise. Un comit de lecture regroupant une trentaine d'experts fait la slection. Chaque article est valu par trois experts qui attribuent chacun une note. Les experts ne doivent pas proposer euxmmes d'articles ni tre de la mme universit ou entreprise que les auteurs des articles qu'ils valuent. A partir des notes, le comit classe les articles, choisit les meilleurs et les affecte aux diffrentes sessions. Les organisateurs veulent conserver les informations suivantes pour la prparation du prochain colloque: pour chaque article propos: titre, nombre de pages, mots cls, auteur(s) avec mention de l'auteur principal qui envoyer la rponse (acceptation ou refus), les trois experts avec les notes qu'ils ont mises l'article. Si l'article est accept, la session et l'heure laquelle il sera prsent. S'il y a plusieurs auteurs, celui qui le prsentera (appel l'orateur). pour chaque auteur: nom, titre, universit ou entreprise, adresse, le(s) article(s) qu'il propose. S'il est auteur principal, on enregistre en plus ses numros de tlphone et de tlcopie, et son adresse lectronique. S'il est orateur, on enregistre en plus son CV rsum sur cinq lignes pour que le prsident de la session puisse le prsenter. pour chaque expert: nom, titre, universit ou entreprise, adresse, numro de tlphone, numro de tlcopie, adresse lectronique, les articles qu'il value avec la note qu'il leur attribue. pour chaque session: thme, jour, heure de dbut, heure de fin, le prsident (celui qui anime la session, prsente les orateurs, lance la discussion,....; c'est un expert, un participant ou un auteur d'un autre article), liste des articles de la session, avec leur heure de passage, cot de l'inscription la session (toutes les sessions n'ont pas le mme prix).
254

pour chaque participant: nom, affiliation (nom de l'entreprise, universit, ...), adresse, s'il a dj particip ce colloque une (des) anne prcdente: quelles annes et s'il y tait simple participant ou auteur ou expert. On enregistre aussi les sessions auxquelles il s'inscrit et s'il a rgl les frais de son inscription. 3.2. Questions 3.2.1. Partie thorique : 1. Etablir la liste des colonnes. 2. Etablir la liste des tables. 3. Affecter les colonnes aux tables et proposer une description textuelle des tables. 4. Prciser les cls primaires des tables. 5. Identifier les liens entre les tables. 3.2.2. Partie pratique : 1. En utilisant le SGBD disponible dans votre laboratoire, implmenter cette base. 2. Saisir, votre choix, quelques informations dans les tables. 3. Reprsenter la structure de cette base de donnes sous forme graphique. 4. Ralisez les requtes suivantes: Liste des orateurs de telle session Liste des auteurs principaux dont un article au moins a t accept Liste des participants telle session Liste des experts qui n'ont pas encore fait leur valuation Liste des articles accepts Liste des articles de note moyenne suprieure 8 5. Raliser les formulaires de saisie et les tats que vous jugez ncessaires ainsi qu'un menu principal pour toute l'application.

255

4.1. Enonc Les muses d'art veulent constituer une base de donnes commune des uvres d'art qu'ils possdent. Actuellement le conservateur de chaque muse garde, pour chaque uvre, les informations suivantes: type (peinture, collage, sculpture, lithographie, etc.), titre, anne, nom de(s) artiste(s), matire(s), dimensions, le courant artistique (impressionnisme, cubisme, etc.) auquel elle appartient s'il est dfini (certaines uvres sont inclassables) et ventuellement le numro de l'exemplaire possd par le muse (certains types d'uvres comme les lithographies et les sculptures en bronze sont tires en plusieurs exemplaires, le muse peut alors possder l'uvre ou/et l'un, voire plusieurs, des exemplaires de l'uvre). En plus, certains conservateurs se sont constitus des fiches techniques dcrivant: les principaux courants artistiques: nom du courant, priode (anne de dbut, anne de fin), texte descriptif; les artistes: nom, prnom, nationalit, date de naissance, ventuellement date de dcs, les courants auxquels il/elle a particip par ses uvres, texte descriptif. Ils veulent aussi mettre ces fiches en commun dans la base de donnes. 4.2. Questions 4.2.1. Partie thorique : 1. Etablir la liste des colonnes. 2. Etablir la liste des tables. 3. Affecter les colonnes aux tables et proposer une description textuelle des tables. 4. Prciser les cls primaires des tables. 5. Identifier les liens entre les tables.
4.2.2. Partie pratique : 1. En utilisant le SGBD disponible dans votre laboratoire, implmenter cette base. 2. Saisir, votre choix, quelques informations dans les tables. 3. Reprsenter la structure de cette base de donnes sous forme graphique. 4. Ralisez les requtes suivantes: Nom et ville du muse o se trouve telle uvre de tel(s) artiste(s) ? Liste (titre, anne) des uvres cres par tel artiste. A quels courants a particip tel artiste? O sont (nom et ville du muse) les uvres de tel courant artistique ? Liste des titres et des noms de(s) artiste(s) des uvres d'un muse. Renseignements sur tel artiste (information sur l'artiste et liste de ses uvres). Renseignements sur tel courant artistique. Liste des muses de telle ville. 5. Raliser les formulaires de saisie et les tats que vous jugez ncessaires ainsi qu'un menu principal pour toute l'application.
256

5.1. Enonc Une compagnie tlphonique souhaite grer un annuaire des ses abonns, ainsi que la facturation des appels. L'annuaire rpertorie les personnes, les socits et leurs numros de tlphone. Un mme numro peut tre partag par plusieurs personnes ou socits situes la mme adresse. Une mme personne ou socit peut possder plusieurs numros. Les personnes et socits sont rpertories avec leurs noms, adresses, ventuellement un commentaire et leur(s) numro(s) de tlphone. Les personnes et socits possdent en plus un numro d'abonn unique permettant la compagnie de les identifier, mme aprs rsiliation ou changement de numro de tlphone (il n'y a pas deux abonns avec le mme numro d'abonn). Dans le cas d'une personne, on mmorise aussi ses prnoms, et, dans celui d'une entreprise, sa rubrique professionnelle. Pour la gestion de la facturation, qui est fonction de l'heure, de la dure et de la distance, on mmorise pour chaque appel le numro appel, la date, l'heure et la dure. On mmorise aussi, afin de pouvoir calculer la distance, pour chaque numro de tlphone l'indicatif de la rgion correspondant ce numro. Dans le cas d'un numro affect plusieurs personnes ou socits, une de ces personnes/socits est l'abonn principal: c'est elle que sont envoyes les factures. 5.2. Questions 5.2.1. Partie thorique : 1. Etablir la liste des colonnes. 2. Etablir la liste des tables. 3. Affecter les colonnes aux tables et proposer une description textuelle. 4. Prciser les cls primaires des tables. 5. Identifier les liens entre les tables.
5.2.2. Partie pratique : 1. En utilisant le SGBD disponible dans votre laboratoire, implmenter cette base. 2. Saisir, votre choix, quelques informations dans les tables. 3. Reprsenter la structure de cette base de donnes sous forme graphique. 4. Raliser les formulaires de saisie et les tats que vous jugez ncessaires ainsi qu'un menu principal pour toute l'application.

257

6.1. Enonc
L'administration d'Enregistrement des Vhicules dsire connatre les informations relatives aux propritaires et aux transactions (achat/vente) effectues sur les vhicules. chaque vhicule, elle assigne un numro d'enregistrement. Il n'existe pas deux vhicules ayant le mme numro d'enregistrement. tout moment, un vhicule n'appartient qu' un seul propritaire, qui est soit un constructeur, soit un garage, ou encore une personne prive. Il peut avoir t possd par plusieurs propritaires ( des moments distincts). Un constructeur, un garage ou une personne prive est connu de l'administration d'Enregistrement des Vhicules, c'est dire considr comme faisant partie de l'ensemble des propritaires s'il possde ou a possd un vhicule. Qu'il soit constructeur, garage ou personne prive, un propritaire est caractris par un numro l'identifiant. Pour un constructeur, on connat son nom, son adresse ainsi que les garages avec lesquels il travaille (garages concessionnaires). Un garage est caractris par un nom, une adresse et un numro de registre de commerce. On connat le nom, le prnom et l'adresse d'une personne prive. Pour toute transaction effectue sur un vhicule, on connat le vendeur (ancien propritaire), l'acheteur (nouveau propritaire), la date de la transaction et le prix d'achat/vente. Un vhicule peut faire l'objet de plusieurs transactions ( des dates diffrentes). Il n'est pas exclu que deux transactions ralises des dates diffrentes puissent porter sur un mme vhicule, un mme vendeur et un mme acheteur. Un constructeur ne peut vendre ses vhicules d'autres constructeurs, ni directement des personnes prives. Il ne les vend qu' ses garages concessionnaires. Il n'achte aucun vhicule. Un garage peut vendre ou acheter des vhicules des personnes prives ou des garages. Il peut, bien sr, acheter galement des vhicules aux constructeurs pour lesquels il est concessionnaire. Une personne prive ne peut vendre ou acheter des vhicules qu' des personnes prives ou des garages. Ceci signifie donc que seuls, les vhicules dont le propritaire actue l est un constructeur, n'ont t l'objet d'aucune transaction.

6.2. Questions 6.2.1. Partie thorique :


1. Etablir la liste des colonnes. 2. Etablir la liste des tables. 3. Affecter les colonnes aux tables et proposer une description textuelle des tables. 4. Prciser les cls primaires des tables. 5. Identifier les liens entre les tables.

6.2.2. Partie pratique :


1. 2. 3. 4. En utilisant le SGBD disponible dans votre laboratoire, implmenter cette base. Saisir, votre choix, quelques informations dans les tables. Reprsenter la structure de cette base de donnes sous forme graphique. Raliser les formulaires de saisie et les tats que vous jugez ncessaires ainsi qu'un menu principal pour toute l'application.
258

7.1. Enonc Soit la base de donnes d'universit suivante : ETUDIANT (NumEt, NomEt, Adresse) ENSEIGNANT (NumEns, NomEns, Grade) UE (NumUE, Titre) ENSEIGNE (NumUE, NumEns) INSCRIPTION (NumEt, NumUE, Annee, Note) La table Etudiant donne pour chaque tudiant son numro d'tudiant, son nom et son adresse. La table Enseignant donne pour chaque enseignant, son numro, son nom et son grade. La table UE donne pour chaque unit d'tude (matire) son numro et son nom. La table Enseigne fait le lien entre les UE et leurs enseignants. La table Inscription fait le lien entre les tudiants, les UE qu'ils suivent et la ou les annes pendant lesquelles ils ont suivis cette UE et la note qu'ils ont obtenus. 7.2. Questions 7.2.1. Partie thorique : 1. Prciser la cl primaire de chaque table. 2. Identifier les liens entre les tables. 3. Donner les commandes en langage SQL permettant de crer ces tables.
7.2.2. Partie pratique : 1. En utilisant le SGBD disponible dans votre laboratoire, implmenter cette base. 2. Saisir, votre choix, quelques informations dans les tables. 3. Reprsenter la structure de cette base de donnes sous forme graphique. 4. Ralisez les requtes suivantes: Donner la liste des tudiants (Nom, NumEt) par ordre alphabtique de leur nom. Donner le nombre d'tudiants rpertoris dans la base. Donner les numros des enseignants qui enseignent au moins une UE enseigne par l'enseignant numro 150. Donner les noms des enseignants qui enseignent au moins une UE enseigne par l'enseignant numro 150. Donner le numro des UE qui ne sont pas enseignes par l'enseignant numro 150. Donner la liste des tudiants qui n'ont pas suivi d'UE en 2005. Donner dans l'ordre dcroissant des numros d'UE, le nom de l'UE et, par ordre alphabtique, le nom des lves qui ont suivis l'UE en 2007.
259

Donner le nombre d'tudiants ayant suivit au moins une UE en 2007. Donner, pour chaque tudiant, le nombre d'UE dans lesquelles il est inscrit. Donner, pour chaque tudiant son nom et le nombre d'UE dans lesquelles il est inscrit. Donner le nom des UE enseignes par plus de trois enseignants. Donner pour chaque tudiant (NumEt) ayant suivi l'UE 34 sa moyenne annuelle en 2007 (les UE ont toutes un coefficient 1). En supposant que la relation UE soit la suivante : UE (NumUE, Titre, Coef), rpondre la question prcdente en tenant compte des coefficients des UE. 5. Raliser les formulaires de saisie et les tats que vous jugez ncessaires ainsi qu'un menu principal pour toute l'application.

260

8.1. Enonc On travaille dans cet exercice sur la base de donnes FOURNISSEURS dfinie par la structure suivante : FOURNISSEUR (Numfou, Nomfou, Status) PRODUIT (Numpro, Nompro, Couleur, Poids, Villepro) PROJET (Numproj, Nomproj, Villeproj) AFFECTATION (Numfou#, Numpro#, Numproj#, Qte) 8.2. Questions 1.Donner les commandes en langage SQL permettant de crer ces tables. 2.Ajouter, l'aide des commandes SQL, la colonne Villefour dans la table Fournisseur . 3.Donner les commandes SQL ncessaires pour insrer quelques lignes dans chaque table. 4.Exprimer les requtes suivantes en SQL. Donner toutes les affectations dont la quantit est non nulle Donner le nombre de projets livrs par le fournisseur S1. Donner la quantit totale du produit P1 livre par le fournisseur S1. Pour chaque produit affect un projet, donner le numro de produit, le numro de projet et la quantit totale correspondante. 5.Donner la commande SQL permettant d'attribuer tous les utilisateurs tous les droits sur la table Fournisseur .

261

9.1. Enonc Soit le schma de la base de donnes suivant : PALETTE (Code, Libell, Nature, Poids) MAGASIN (NumM, Nom, VilleM) CENTRE (numC, socit, villeC, classe) LIVRAISON (numM#, numC#, numP, quantit) numP tant un code 9.2. Questions Exprimer les requtes suivantes en SQL. 1. Les villes o l'on trouve des magasins (sans duplication d'information!). 2. Le numro des centres (de distribution) effectuant une livraison au magasin "1" (dans l'ordre des numros de centre). 3. Le code des palettes livres par un centre de Sousse un magasin de M'Saken. 4. Les couples "NumM, NumC" correspondant chacun un magasin et un centre localiss dans la mme ville. 5. La nature des palettes livres par le centre "5". 6. Le numro des centres dont la classe est infrieure celle du centre "1". 7. La quantit totale de palettes "5" en cours de livraison par le centre "5". 8. Le nom et la classe des centres (de distribution) localiss Sousse. 9. Le nom et la ville de tous les magasins. 10. Le nom des magasins qui le centre "5" livre au moins une palette. 11. Le numro des magasins qui un centre, d'une ville diffrente, livre une ou plusieurs palettes. 12. Le numro des centres livrant un magasin une quantit de palettes "4" plus grande que la quantit moyenne de ces palettes "4", livres ce mme magasin. 13. Le code (-barre) des palettes livres par un centre de Sousse. 14. Les couples de villes tels qu'un centre de la premire livre quelque chose un magasin de la seconde. 15. Le nombre total de magasins qui le centre "1" livre au moins une palette. 16. Pour chaque groupe de palettes livres (au mme magasin), le code de la palette, le numro du magasin et la quantit totale correspondante. 17. Le code des palettes livres par un centre un magasin de la mme ville. 18. Le code des palettes livres un magasin de Sahloul. 19. Le code des palettes dont la nature commence par "Tn".

262

10.1. Enonc Soit le schma de la base de donnes suivant : AGENCE (Num_Agence, Nom, Ville, Actif) CLIENT (Num_Client, Nom, Ville) COMPTE (Num_Compte, Num_Agence#, Num_Client#, Solde) EMPRUNT (Num_Emprunt, Num_Agence#, Num_Client#, Montant) 10.2. Questions 1. Crer les tables AGENCE , CLIENT , COMPTE et EMPRUNT, avec dfinition des cls primaires et trangres. 2. Insrer des n-uplets dans ces tables de manire pouvoir rpondre aux requtes ci-dessous. 3. Ecrire les requtes suivantes en SQL : Liste des agences ayant des comptes-clients Liste des clients ayant un compte l'agence numro "014". Liste des clients ayant un compte ou un emprunt l'agence numro "014". Liste des clients ayant un compte et un emprunt l'agence numro "014". Liste des clients ayant un compte et pas d'emprunt l'agence numro "014". Liste des clients ayant un compte dans une agence o "Adel" a un compte. Liste des agences ayant un actif plus lev que toute agence de "Tunis". Liste des clients ayant un compte dans chaque agence de "Sousse". Liste des clients ayant un compte dans au-moins une agence de "Sfax". Les emprunteurs de l'agence "231" classs par ordre alphabtique. Le solde moyen des comptes-clients de chaque agence. Le solde moyen des comptes-clients des agences dont le solde moyen est > "10000". Le nombre de clients habitant "Kairouan". Le nombre de clients de l'agence "017" n'ayant pas leur adresse dans la table CLIENT . Diminuer de "5%" l'emprunt de tous les clients habitant "Nabeul". Fermer les comptes de "Amor Tounsi"

263

BIBLIOGRAPHIE

1.Herv INISAN, Microsoft Access 2002. Mico Application, 1re dition Octobre 2001.

2. Abdelaziz ABDELLATIF, Mohamed LIMAME et Abdelmalek ZEROUAL, Oracle 7 : langages, architecture et administration. Edition Eyrolles.

3.Nacer BOUDJLIDA, Bases de donnes et systmes d'information. Le modle relationnel : langages, systmes et mthodes. Edition DUNOD.

4. Chris-J DATE, Introduction aux bases de donnes. Edition Vuibert.

5.Jean-Luc HAINUT, Bases de donnes et modles de calcul. Outils et mthodes pour l'utilisateur. Cours et exercices. Edition DUNOD.

6. Collectif, L'Essentiel Microsoft Access 2000. Microsoft Press.

7.Virginia ANDERSEN, How to do everything with Microsoft Office Access 2003. Edition McGraw Hill/Osborne.

WEBOGRAPHIE
1. http://math.hws.edu/vaughn/cpsc/343/2003/history.html 2. http://www.wikipedia.org 3. http://www.supinfo-projects.com/fr/2005/securiser_access_2003/ 4.www.lirmm.fr/~ips/enseignement05-06/supports/BaseDeDonnees/Cours/BdCours.pdf
264

A N N E X E 1
Conventions syntaxiques et typographiques Afin de faciliter la tche du lecteur, nous avons utilis le long de ce manuel des conventions syntaxiques et typographiques suivantes : MAJUSCULES Tous les mots cls du langage SQL sont crits en majuscules. Exemple : CREATE TABLE, ALTER TABLE, ... italiques Les variables de substitution sont reprsentes en italique. Une variable de substitution est une chane de caractres laquelle sera substitue une valeur d'un type donn (numrique, chane de caractres, date, ...). Exemple : nom_table, nom_colonne, ... Les crochets indiquent une prsence optionnelle des lments qu'ils contiennent. Exemple : [NOT] NULL Les crochets indiquent le choix d'un seul lment parmi la liste contenue l'intrieur de ces accolades. Les lments de la liste sont spars par une barre verticale '|'. Exemple : {PRIMARY KEY | CHECK} Les trois points indiquent que l'lment qui les prcde peut tre rpt. Exemple : nom_colonne, ..

{ }

...

265

A N N E X E 2
Exemple d'diteur SQL : MySQL MySQL est un SGBD relationnel faisant partie de la famille des logiciels libres. Cette annexe est rserve la prsentation de quelques possibilits offertes par le SGBD travers l'excution des ordres SQL en mode commande notamment : La cration d'une base de donnes, La cration de tables L'excution de commandes de mise jour de donnes (INSERT, UPDATE et DELETE) et les commandes de recherche de donnes (SELECT). Nous prendrons comme exemple la base de donnes Commercial utilise essentiellement dans les chapitres 5 et 6. Cration d'une base de donnes : Pour crer une base de donnes on doit suivre les tapes suivantes : 1. Lancer MySQL. La fentre d'accueil suivante s'affiche :

266

2. Dans le champ 'Crer une base de donnes' saisir le nom de la base crer (Commercial par exemple) puis cliquer sur le bouton ( russit, la fentre suivante s'affiche : ). Si l'opration

3.Aprs cette opration, vous pouvez soit quitter MySQL, soit entamer la cration de votre premire table. Cration de tables : Pour crer une table on doit suivre les tapes suivantes : 1. Lancer MySQL et slectionner votre base de donnes (Commercial) 2. Vous pouvez alors crer les tables en mode assist ou bien en mode commandes. En mode assist, il suffit de saisir le nom de la table et le nombre de colonnes (champs) comme l'indique la figure suivante. L'activation du bouton Excuter entrane l'affichage de l'assistant de cration de table.

267

3. Pour lancer le mode commande, cliquer sur le bouton ( SQL apparat

). La fentre de l'diteur

4.On peut alors saisir la commande SQL de cration de table. La fentre suivante illustre la cration de la table Client.

268

5.Cliquer sur Excuter . En cas d'erreurs vous tres invits apporter les corrections ncessaires. En cas d'absence d'erreurs, on obtient alors

6.Ce processus peut tre itr pour crer les autres tables. Il est noter qu'on peut lancer lus qu'une commande la fois. Aprs la cration de toutes les tables, une liste de ces tables cres apparat sous le nom de la base de donnes. Insertion de lignes : Pour insrer, modifier ou supprimer une ligne dans une table, il suffit de saisir la commande correspondante dans l'diteur SQL puis excuter cette commande. Exemple d'insertion d'une ligne dans la table client :

269

Remarques Pour les colonnes de type chane de caractres, il faut dlimiter les valeurs correspondantes par une simple cote. Lorsque ces valeurs contiennent des caractres spciaux, il faut dlimiter la chaine par des doubles cotes. Recherche de lignes : Pour slectionner des lignes, il faut taper la commande SELECT approprie l'aide de l'diteur SQL puis l'excuter.

270

Das könnte Ihnen auch gefallen