Sie sind auf Seite 1von 113

pour plus de documents : www.almohandiss.

com

Universit Mohammed V- Agdal Ecole Mohammadia d'Ingnieurs Dpartement Gnie Informatique Rabat

Initiation aux Bases de Donnes


EL FADDOULI NOUR-EDDINE 2010-2011

pour plus de documents : www.almohandiss.com

Plan de Cours (12h)


1. Qu'est ce qu'une base de donnes? - Dfinition de BD - SGBD: Fonctionnalits et Structure 2. Base de donnes relationnelle (BDR) - Le modle relationnel - Le langage SQL 3. Conception de BD: DF, 1FN, 2FN, 3FN
2010-2011 \ N. El Faddouli 2

pour plus de documents : www.almohandiss.com

TP (16h)
1. 2. 3. 4. 5. Utilisation de Access pour crer une BD Interrogation de la BD avec l'assistant Utilisation de SQL : LMD Cration de formulaire Projet : Conception et ralisation d'une BD et de formulaires de manipulation.

2010-2011 \ N. El Faddouli

pour plus de documents : www.almohandiss.com

Qu'est ce qu'une BD?


Exemples d'applications BD: Bibliothques: gestion des emprunts, Banques: gestion des comptes, Commerces: gestion des commandes, Administrations: gestion du personnel, Internet: moteur de recherche, etc. (les BDs sont prsentes partout!)

2010-2011 \ N. El Faddouli

pour plus de documents : www.almohandiss.com

Qu'est ce qu'une BD?


Exemple introductif: Gestion d'une Bibliothque Donnes: Livres Emprunteurs Emprunts Quelques Traitements possibles: Stocker tous les livres de la bibliothque; Pouvoir ajouter de nouveaux livres; Retrouver un livre d'aprs sa cote, son titre ou son auteur; Enregistrer un emprunt (Crer une fiche d'emprunt), .
2010-2011 \ N. El Faddouli 5

pour plus de documents : www.almohandiss.com

Qu'est ce qu'une BD?


Exemple introductif: (suite) Livres
Cote 15 4 24 25 67 Titre Le Langage C L'algbre de base Bases de donnes Oracle 10g Les BD XML Auteur Claude Delanoy Frank Shin Georges Gardarin Ian Abramson Georges Gardarin ISBN 2-266-0865-4 2-123-2301-5 2-212-11281-5 2-7440-1778-7 2-266-01303-3

2010-2011 \ N. El Faddouli

pour plus de documents : www.almohandiss.com

Qu'est ce qu'une BD?


Exemple introductif: (suite) Emprunteurs Matricule Nom_Prenom 12308 12408 12508 Alami Samir Semah Amal Brahimi Said Date_De_Naissance 1981 1985 1980 Date_Remise 2/11/2007 7/11/2007
7

Emprunts Cote Matricule 15 4 24 12308 12408 12308

Date_Emprunt 11/10/2007 1/11/2007 12/10/2007

2010-2011 \ N. El Faddouli

pour plus de documents : www.almohandiss.com

Organisation en fichiers
Interface (Saisie) Utilisateur Fichier Utilisateur Interface (Saisie) Utilisateur Traitement (Programme) tats de Sortie Traitement (Programme) Fichier

2010-2011 \ N. El Faddouli

pour plus de documents : www.almohandiss.com

Organisation en fichiers
Limites:
- Non indpendance des donnes: Saisie et traitement en fonction des fichiers (un ou plusieurs programmes par fichier) - Redondance de donnes. - Risque de problme d'intgrit. - Pas de contrle de concurrence entre utilisateurs. - Manque de scurit. - Lourdeur d'accs aux donnes.
9

2010-2011 \ N. El Faddouli

pour plus de documents : www.almohandiss.com

Organisation en BD
Interface (Saisie) Utilisateur Traitements (Programme) Contrles

Utilisateur

BD

Utilisateur

tats de Sortie

2010-2011 \ N. El Faddouli

10

pour plus de documents : www.almohandiss.com

Qu'est ce qu'une BD?


Dfinition:
- Une Base de donnes est un ensemble de donnes structures avec le minimum de redondance, mmorises sur un support permanent et qui peut tre partage par plusieurs applications et interrogeables de faon slective par plusieurs utilisateurs. - Une BD est gre par un Systme de Gestion de Bases de Donnes (SGBD): Assure la structuration, le stockage, la consultation et la mise jour des donnes. Exemple: Gestion des tudiants, internat, inscription, cours, notes, emploi du temps, d'une cole (universit).
2010-2011 \ N. El Faddouli 11

pour plus de documents : www.almohandiss.com

Avantages de BD
- Minimum de redondance de donnes. - Partage entre plusieurs applications - Contrle d'intgrit. - Indpendances des donnes et des traitements - Scurit d'accs. - Ensemble compact de tables contenant les donnes de la BD. Ces tables sont physiquement des fichiers. Tout cela grce au SGBD

2010-2011 \ N. El Faddouli

12

pour plus de documents : www.almohandiss.com

SGBD
Dfinition:
Logiciel(s) assurant structuration, stockage, maintenance, mise jour et consultation des donnes dune BD en excutant des requtes exprimes selon une vue logique de la BD. Vue logique: Reprsente la vision de l'utilisateur qui ne se soucie pas des dtails de stockage et d'accs aux donnes (Vue physique). Exemple: Vue logique d'une BD de bibliothque Il y a trois tables: livres, emprunteurs et emprunts contenant les donnes utilises (cote, titre, .) Exemples de SGBD: Access, Oracle, Ingres, Postgress, Mysql,
2010-2011 \ N. El Faddouli 13

pour plus de documents : www.almohandiss.com

SGBD
Fonctionnalits :
1- Description des donnes qui seront stockes: Langage de Dfinition des Donnes (LDD). Structure, Contraintes, Droits d'accs, . 2- Manipulation des donnes (recherche, ajout, modification et suppression): Langage de Manipulation des Donnes (LMD). 3- Partage des donnes: Utilisation simultane des donnes par diffrentes applications. Gestion des accs concurrents (techniques de verrouillage, ). Cohrence des donnes
2010-2011 \ N. El Faddouli 14

pour plus de documents : www.almohandiss.com

SGBD
Fonctionnalits (suite):
4- Satisfaction des contraintes d'intgrit (Exemple: un emprunt doit concerner un livre qui existe dans la BD) pour conserver la validit des donnes. 5- Scurit des donnes: - les donnes doivent tre protges contre les accs non autoriss. - Rcuprer les donnes aprs panne. 6- Confidentialit des donnes: chaque utilisateur doit avoir accs aux donnes auxquelles il a droit.
15

2010-2011 \ N. El Faddouli

pour plus de documents : www.almohandiss.com

SGBD
Architecture:

Gestionnaire de fichiers - Stockage des donnes sur des supports physique. - Mcanisme de recherche par le contenu. - Optimisation du stockage.
2010-2011 \ N. El Faddouli 16

pour plus de documents : www.almohandiss.com

SGBD
Architecture:

SGBD interne (systme d'accs au donnes) - Assemblage des tables partir des donnes dans les fichiers. - Placement des tables dans les fichiers. - Gre les liens et l'accs rapide.
2010-2011 \ N. El Faddouli 17

pour plus de documents : www.almohandiss.com

SGBD
Architecture:

SGBD externe - Analyse et interprtation des requtes des applications et des utilisateurs interactifs. - Mise en forme des donnes pour les changes avec le monde extrieur.
2010-2011 \ N. El Faddouli 18

pour plus de documents : www.almohandiss.com

SGBD
Outils d'un SGBD:
Ils offrent un certain nombre de fonctionnalits: 1- ISQL/ESQL: Permet d'interroger, modifier, ajouter ou supprimer des donnes de la base. 2- Form: Permet de crer des formulaire pour accder facilement aux donnes de la base. 3- Report: Permet de crer des tats de sorties (rapport). Etc

2010-2011 \ N. El Faddouli

19

pour plus de documents : www.almohandiss.com

Types d'utilisateurs
L'administrateur de la BD:
- Crer la BD en prcisant la structure ainsi que les dtails de stockage sur disque. - Contrler l'accs la BD afin de le permettre aux applications et aux personnes qui y ont droit. - Conserver une bonne performance d'accs aux donnes (bonne organisation de stockage, index, .) - Sauvegarder la BD et assurer les reprises aprs panne. Toutes ces tches sont ralises travers des outils du SGBD.
20

2010-2011 \ N. El Faddouli

pour plus de documents : www.almohandiss.com

Types d'utilisateurs
Le programmeur:
Dveloppe des applications qui traitent les donnes de la base.

L'utilisateur final:
N'a accs qu'aux donnes qui lui sont utiles: Via une application Via une interface du SGBD afin d'interroger directement les tables auxquelles il a droit.

2010-2011 \ N. El Faddouli

21

pour plus de documents : www.almohandiss.com

Organisation des fichiers


Un fichier:
Rcipient d'informations sur disque caractris par un nom. Il est caractris particulirement par:
UN NOM UN CREATEUR UNE DATE DE CREATION UN EMPLACEMENT EN MEMOIRE SECONDAIRE UNE ORGANISATION

Il est contient un ensemble d'articles (des livres par exemple).

Mthode d'accs:
Mthode d'exploitation du fichier utilise par les programmes d'application pour slectionner des articles.
2010-2011 \ N. El Faddouli 22

pour plus de documents : www.almohandiss.com

Organisation des fichiers


Mthode d'accs (suite):
1- Mthode d'Accs Squentielle: Pour accder un article donn: On doit lire tous les articles depuis le premier jusqu' l'article recherch. Fichier squentiel Beaucoup d'accs disque. 1- Mthodes d'Accs Slectives: Ensemble de mthodes permettant l'accs un article donn au moyen de quelques accs disque (idalement 1). Exemple: Mthodes d'accs par index (variantes: Arbre B, Arbre B+ , )
2010-2011 \ N. El Faddouli 23

pour plus de documents : www.almohandiss.com

Organisation des fichiers


Mthodes d'Accs par Index:
- Chaque article possde une cl qui est Une cl permet de: Identifier un article (Par exemple: la cote d'un livre). Slectionner un article unique dans le fichier. - Chaque article possde dans le fichier une adresse relative qui indique le dplacement par rapport au dbut du fichier. - Principe de base de l'organisation et mthode d'accs par index: Associer la cl d'un article son adresse relative dans le fichier. une information (ou donne).

2010-2011 \ N. El Faddouli

24

pour plus de documents : www.almohandiss.com

Organisation des fichiers


Mthodes d'Accs par Index (Exemple):
Articles (ai est une cl)
a5 a2 a57 a3 a10 { a5 {0 2 4 a2 67 a57 10 12 a3 14 16 18 a10 20 0 4 7 12 18

22 Index 24

Lindex peut faire partie du fichier index Adresses relatives ou stock dans un fichier spar.
2010-2011 \ N. El Faddouli 25

pour plus de documents : www.almohandiss.com

Cycle de Vie d'une BD


1- Conception de la base Dterminer les informations qu'il conviendra de mettre dans la base de donnes ainsi que sa structure. 2- Implantation des donnes Transmettre la structure de la BD et les contraintes d'intgrit au SGBD choisi (au moyen du LDD) 3- Utilisation Interroger et mettre jour les donnes (au moyen du LMD) 4- Maintenance Correction, volution
2010-2011 \ N. El Faddouli 26

pour plus de documents : www.almohandiss.com

Etapes de conception de BD
Monde rel
Analyse Conception

Spcifications Schma conceptuel Schma logique


Description en LDD

Transformation en modle logique

Schma interne
27

2010-2011 \ N. El Faddouli

pour plus de documents : www.almohandiss.com

Modlisation des donnes


Modlisation:
- Reprsentation d'une partie du monde rel utilisant les concepts d'un modle de reprsentation. Par exemple: la modlisation d'une personne pour une application de gestion des inscriptions d'tudiants sera diffrente de celle pour une application de gestion mdicale. Les donnes choisies pour la modlisation diffrent. - Il existe plusieurs modles de reprsentation: Modle hirarchique et modle rseau (1960). Modle Relationnel (1970). Modle Objet (1990)
2010-2011 \ N. El Faddouli 28

pour plus de documents : www.almohandiss.com

Modle Relationnel
- Le plus utilis dans les BD et les SGBD (BDR et SGBDR). - Fond sur le concept mathmatique de relation (thorie des ensembles): Sous-ensemble du produit cartsien de diffrents ensembles (domaines). - Reprsentation des donnes sous forme de tables deux dimensions contenant des valeurs simples. - Concepts: Domaine, Relation, Attribut Tuple Schma conceptuel Cl Contraintes

2010-2011 \ N. El Faddouli

29

pour plus de documents : www.almohandiss.com

Modle Relationnel
Domaine
Ensemble de valeurs de mme type. Caractris par un nom.
Exemple: D1 = { Informatique, lectrique, Civil, Mcanique, Procds, Industriel, MIS } D2 = IN (ensemble des entiers) D3 = Dates D4 = suite de caractre de longueur maximale 30 (texte)
2010-2011 \ N. El Faddouli 30

pour plus de documents : www.almohandiss.com

Modle Relationnel
Relation
SOUS-ENSEMBLE du produit cartsien de n domaines Di. Caractrise par un nom. Une relation R: R D1 D2 D3.Dn Les n domaines ne sont pas ncessairement distincts. Relation de n-aire, d'arit n ou de degr n. Exemple: Livres D2 D4 D4 D4 Livres est d'arit 4
2010-2011 \ N. El Faddouli 31

pour plus de documents : www.almohandiss.com

Modle Relationnel
Relation (suite)
Une relation est compose de vecteurs (lignes) qui forment une table deux dimensions: - Chaque ligne correspond un vecteur. - Chaque colonne correspond un domaine du produit cartsien.
Exemple: Attribut / Colonne /champ Titre Le Langage C L'algbre de base Bases de donnes Auteur Claude Delanoy Frank Shin Relation / Table

Tuple / Ligne/ Enregistrement Cote 15 4 24 ISBN 2-266-0865-4 2-123-2301-5

Georges Gardarin 2-212-11281-5


32

2010-2011 \ N. El Faddouli

pour plus de documents : www.almohandiss.com

Modle Relationnel
Attribut
Nom donn une composante d'une relation. Exemple: Cote est un attribut de la relation Livres

Tuple (ou n-uplet)


Un lment d'une relation. Une ligne dans une table Exemple: t1 (Cote:15, Titre:Le Langage C, Auteur: Claude Delanoy, ISBN: 2-266-0865-4) est un tuple de la relation Livres.
2010-2011 \ N. El Faddouli 33

pour plus de documents : www.almohandiss.com

Modle Relationnel
Schma conceptuel de la relation :
Nom de la relation suivi de la liste des attributs et de leurs domaines.
Domaines

Exemple:

Livres(Cote:D2, Titre:D4, Auteur:D4, ISBN:D4)


Attributs

2010-2011 \ N. El Faddouli

34

pour plus de documents : www.almohandiss.com

Modle Relationnel
Schma Conceptuel (suite)
On peut donner aux domaines des noms relativement au SGBD utilis. Exemple:
Livres(Cote:INTEGER,Titre:CHAR(50), Auteur:CHAR(50),ISBN:CHAR(50))

La plupart du temps, les domaines sont implicites et dcoulent du nom de l'attribut Exemple:
Livres(Cote, Titre, Auteur, ISBN )
2010-2011 \ N. El Faddouli 35

pour plus de documents : www.almohandiss.com

Modle Relationnel
Cl candidate d'une relation
Un ensemble minimal des attributs dont les valeurs identifient de manire unique un tuple. La valeur d'une cl candidate est donc distincte pour tous les tuples. Toute relation a au moins une cl candidate et peut en avoir plusieurs. Exemple: Salari (Matricule, nom, prnom, CIN, salaire, fonction) Hypothse: Deux salaris ne peuvent pas avoir le mme nom. Les cls candidates sont:
2010-2011 \ N. El Faddouli

Matricule, nom et CIN


36

pour plus de documents : www.almohandiss.com

Modle Relationnel
Cl Primaire
Attribut ou ensemble d'attributs dont les valeurs identifient de manire unique chaque tuple de la relation. Exemple:
Livres(Cote, Titre, Auteur, ISBN ) Emprunteurs(Matricule, Nom_Prenom, Date_De_Naissance) Emprunt (Matricule, Cote, Date_Emprunt, Date_Remise)
Remarque: La cl primaire fait partie de l'ensemble des cls candidates.
2010-2011 \ N. El Faddouli 37

pour plus de documents : www.almohandiss.com

Modle Relationnel
Cl trangre
Une cl trangre dans une relation R1 est un attribut ou ensemble d'attributs qui reprsentent une cl primaire dans une autre relation R2. On prcde une cl trangre par le caractre dise (#) Exemple: Emprunt ( #Matricule, #Cote, Date_Emprunt, Date_Remise) Remarque: La cl trangre peut avoir un nom diffrent de la cl primaire correspondante.

2010-2011 \ N. El Faddouli

38

pour plus de documents : www.almohandiss.com

Modle Relationnel
Contrainte (d'intgrit)
Toute rgle spcifiant les valeurs permises pour certaines donnes, ventuellement en fonction d'autres donnes, et permettant d'assurer une certaine cohrence de la BD: - Contrainte de l'unicit de cl. - Contrainte rfrentielle. - Contrainte de domaine. - Contrainte d'entit.

2010-2011 \ N. El Faddouli

39

pour plus de documents : www.almohandiss.com

Modle Relationnel
Contrainte d'unicit de cl
Elle permet d'assurer l'unicit de la cl primaire: Deux tuples dans une relation ne peuvent pas avoir la mme valeur de la cl primaire.

Contrainte rfrentielle
Une contrainte d'intgrit portant sur une relation R1, consiste imposer que la valeur d'un ou de plusieurs attributs apparaissent comme valeur de cl primaire dans une autre relation R2. Exemple: Pour chaque tuple de la relation Emprunt, il faut que la valeur de l'attribut Cote apparaisse dans un tuple de la relation Livres comme valeur de sa cl primaire Cote.
2010-2011 \ N. El Faddouli 40

pour plus de documents : www.almohandiss.com

Modle Relationnel
Contrainte de domaine
Elle impose qu'une colonne d'une relation doit comporter des valeurs appartenant une plage de valeurs ou une liste de valeurs.

Exemple: Salaire 5000 et 30000 Couleur {Bleu, Blanc, Rouge}

2010-2011 \ N. El Faddouli

41

pour plus de documents : www.almohandiss.com

Modle Relationnel
Valeurs Nulles et Cls
Si la valeur d'un attribut est inconnue au moment de l'insertion d'un tuple dans une relation: on lui attribue une valeur conventionnelle, appele valeur nulle (Null) Exemple: Dans la relation Emprunt, Dat_Remise est gale NULL si le livre emprunt n'est pas encore remis.

Contrainte d'entit
Une contrainte d'intgrit imposant que toute relation possde une cl primaire et que tout attribut participant cette cl primaire soit non nul.
2010-2011 \ N. El Faddouli 42

pour plus de documents : www.almohandiss.com

Modle Relationnel
Instance (Extension)
Le schma d'une relation reprsente les proprits (attributs) des tuples qu'elle va contenir au cours du temps. Une table reprsente une instance d'une relation, c.--d. une vue des tuples qu'elle contient un instant donn. Instance d'une BD est l'ensembles des instances des relations de la BD: l'ensemble des table de la BD.

2010-2011 \ N. El Faddouli

43

pour plus de documents : www.almohandiss.com

SQL
Structured Query Langage(SQL):
- Langage de base dans les SGBD - Langage de Dfinition des Donnes (LDD): Il permet la dfinition des structures des tables et des autres objets de la BD (index, ) - Langage de Manipulation des Donnes (LMD): Il permet de faire des recherches (slection) et des mises jour (ajout, suppression, modification) des donnes de la base.

2010-2011 \ N. El Faddouli

44

pour plus de documents : www.almohandiss.com

SQL: LDD
Dfinition des schmas
Cration de tables (relations)
CREATE TABLE nom_de_table ( colonnes et intgrits ) Exemple 1: CREATE TABLE Emprunteurs ( Matricule INT NOT NULL PRIMARY KEY, Nom_Prenom CHAR(60) NOT NULL, Dat_Nais DATE )

2010-2011 \ N. El Faddouli

45

pour plus de documents : www.almohandiss.com

SQL: LDD
Cration de tables (suite)
Exemple 2: CREATE TABLE Livres ( Cote INTEGER NOT NULL PRIMARY KEY, Titre CHAR(255) NOT NULL, Auteur CHAR(255), ISBN CHAR(100) )

2010-2011 \ N. El Faddouli

46

pour plus de documents : www.almohandiss.com

SQL: LDD
Cration de tables (suite)
Exemple 3: CREATE TABLE Emprunt ( Matricule INTEGER NOT NULL REFERENCES Emprunteurs (Matricule), Cote INTEGER NOT NULL, Dat_Emprunt DATE NOT NULL, Dat_Remise DATE, PRIMARY KEY (Matricule, Cote, Dat_Emprunt), FOREING KEY (Cote) REFERENCES Livres (Cote)
2010-2011 \ N. El Faddouli

)
47

pour plus de documents : www.almohandiss.com

SQL: LDD
Cration de tables (suite)
Exemple 4: CREATE TABLE Personne_Eau ( CIN CHAR(10) NOT NULL PRIMARY KEY, Nom CHAR(50) NOT NULL, Dat_B DATE, Quantit SMALLINT DEFAULT 1, CHECK (Quantit BETWEEN 1 AND 5) )

2010-2011 \ N. El Faddouli

48

pour plus de documents : www.almohandiss.com

SQL: LDD
Exercice:
Donnez le code SQL permettant de crer les tables de la BD dont le schma conceptuel est le suivant: Etudiant (Matricule, Nom, Prnom, DatN, Niveau) Matire (CodMat, NomMat, Coefficient, VHoraire) Notes(#Matricule, #CodMat, Note) N.B: Les coefficients sont entre 1 et 5 dont la valeur par dfaut est 1 Les notes sont entre 0 et 20.
2010-2011 \ N. El Faddouli 49

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Langage de Manipulation des donnes (LMD)
C'est un ensemble d'instructions permettant la recherche (slection), l'ajout, la modification et la suppression de donnes. Les instructions de recherche correspondent des oprations de l'algbre relationnelle. Les oprations traites seront: Projection Restriction Jointure (Produit Cartsien)
2010-2011 \ N. El Faddouli 50

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Projection
Opration sur une relation R1 consistant composer une relation R2 en relevant la relation initiale (R1) tous les attributs non mentionns en oprandes, et en liminant les lments en double qui sont conservs une seule fois. Soit la relation R1(A1, A2,.Am), la projection de R1 comportant les attributs Ai, Aj, Ap est note par l'une des notations suivantes: PROJECT (R1, Ai, Aj,,Ap)

Ai, Aj,,Ap (R1)


2010-2011 \ N. El Faddouli 51

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Projection(suite)
Exemple:
15 4 24 Livres Cote Titre Le Langage C L'algbre de base Bases de donnes Auteur Claude Delanoy Frank Shin Georges Gardarin ISBN 2-266-0865-4 2-123-2301-5 2-212-11281-5

PROJECT(Livres ,Titre, Auteur)


Titre Le Langage C L'algbre de base Bases de donnes
2010-2011 \ N. El Faddouli

Auteur Claude Delanoy Frank Shin Georges Gardarin


52

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Projection en SQL:
SELECT Attributs FROM Table

Exemple 1: Slection des titres et auteurs de tous les livres disponibles SELECT Titre, Auteur FROM Livres

Remarque: Pour ne pas avoir des tuples en double, on utilise DISTINCT Exemple: Slection de tous les auteurs SELECT DISTINCT Auteur Auteur FROM
2010-2011 \ N. El Faddouli

Livres
53

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Projection en SQL (suite)
Si on veut slectionner toutes les colonnes (attributs) d'une table (relation) SELECT * FROM Table

Exemple 2: Slection de tous les attributs de tous les livres disponibles


* SELECT Cote, Titre, Auteur, ISBN

FROM

Livres

2010-2011 \ N. El Faddouli

54

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Restriction
Opration sur une relation R1 produisant une relation R2 de mme schma (mmes attributs), mais comportant seulement les tuples qui vrifient une condition prcise en argument. Soit la relation R1, la Restriction de R1 selon une condition donne est note par l'une des notations suivantes: RESTRICT (R1, Condition)

Condition (R1)

2010-2011 \ N. El Faddouli

55

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Restriction (suite)
Exemple: Cote 15 4 30 24
Emprunts

Matricule 12308 12308 12408 12308

Date_Emprunt 11/10/2007 1/11/2007 4/11/2007 12/10/2007

Date_Remise 2/11/2007 11/11/2007 7/11/2007

Restrict (Emprunts, Matricule=12308) (Emprunts) Matricule = 12308


Cote 15 4 24
2010-2011 \ N. El Faddouli

Matricule 12308 12308 12308

Date_Emprunt 11/10/2007 1/11/2007 12/10/2007

Date_Remise 2/11/2007 7/11/2007


56

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Restriction en SQL:
SELECT * FROM table

WHERE Condition Exemple 1: Slection des emprunts dont le matricule de l'emprunteur est 12308. SELECT * FROM Emprunts

WHERE Matricule = 12308


2010-2011 \ N. El Faddouli 57

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Restriction en SQL (Suite)
La condition de la clause WHERE peut tre exprime en fonction de: Oprateurs de comparaison: =, <=, >=, <, >, <> Oprateurs logiques: AND, OR, NOT Les mots cls: - BETWEEN pour tester si une la valeur d'une expression est comprise entre deux valeurs constantes. - IN pour tester si la valeur d'une expression appartient une liste de constantes. - LIKE pour tester si une expression de type chane de caractres contient une sous-chane.
2010-2011 \ N. El Faddouli 58

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Restriction en SQL (Suite)
Exemple 2: Slection des livres dont la cote est entre 130 et 160. SELECT * FROM Livres Cote BETWEEN 130 AND 160

WHERE Cote >= 130 AND Cote<=160 Exemple 3: Slection des livres dont la cote n'est pas entre 130 et 160. SELECT * FROM Livres NOT(Cote >= 130 AND Cote<=160)

WHERE Cote < 130 OR Cote>160


2010-2011 \ N. El Faddouli 59

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Restriction en SQL (Suite)
Exemple 4: Slection des livres dont la cote est 130, 140, 145 et 160. SELECT * FROM Livres

WHERE Cote IN (130, 140, 145, 160) Exemple 5: Slection des livres dont le titre contient "BD". SELECT * FROM Livres

WHERE Titre LIKE '*BD*'


2010-2011 \ N. El Faddouli 60

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Restriction en SQL (Suite)
Exemple 6: Slection des livres dont le titre commence par "Algbre". SELECT * FROM Livres

WHERE Titre LIKE 'Algbre*' Exemple 7: Slection des livres dont le titre se termine par "BD". SELECT * FROM Livres

WHERE Titre LIKE '*BD'


2010-2011 \ N. El Faddouli 61

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Restriction en SQL (Suite)
Exemple 8: Livres dont le titre commence par un caractre suivi de "BD": SELECT * FROM Livres WHERE Titre LIKE '?BD*' Remarque: En SQL standard: * % , ? _ et # un chiffre

Exemple 9: Slection des emprunts dont la date de remise est indtermin. SELECT * FROM Livres WHERE Dat_Remise IS NULL
2010-2011 \ N. El Faddouli 62

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Restriction en SQL (Suite)
Exemple: Livres dont le titre contient deux chiffres qui se suivent: SELECT * FROM Livres WHERE Titre LIKE '*##*' Exemple : Livres dont le titre ne contient pas le mot "algbre" SELECT * FROM Livres WHERE Titre NOT LIKE '*algbre*'

2010-2011 \ N. El Faddouli

63

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Combiner Projection et Restriction en SQL
Slectionner d'une relations R1 certains attributs des tuples vrifiant une condition. Notation:

Ai, Aj,,Ap (Condition(R1))


SELECT Attributs FROM WHERE Table Condition

Syntaxe en SQL:

2010-2011 \ N. El Faddouli

64

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Combiner Projection et Restriction en SQL (Suite)
Exemple 10: Slection du titre des livres de "Claude Delanoy". SELECT Titre FROM Livres WHERE Auteur = "Claude Delanoy" Exemple 11: Slection du titre et de l'auteur des livres dont le titre contient "Algbre" ou dont le nom de l'auteur contient "Gardarin". SELECT Titre , Auteur FROM Livres
65 2010-2011 \ N. El Faddouli

WHERE Tite LIKE "*Algbre*" OR Auteur LIKE "*Gardarin*"

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Produit Cartsien
Opration portant sur deux relation R1 et R2, consistant construire une troisime relation ayant pour schma la concatnation de ces deux relations et pour tuples toutes les combinaisons des tuples des relations R1 et R2. Notations possibles: R1 R2 PRODUCT (R1, R2)

2010-2011 \ N. El Faddouli

66

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Produit Cartsien (Suite)
Exemple 12:
Dpartement

Code 1 2 3
tudiant

Nom_Dept Informatique Civil lectrique

Matricule 12308 12408


2010-2011 \ N. El Faddouli

Nom_Prenom Alami Samir Semah Amal

Code_Dept 1 3
67

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Produit Cartsien (Suite)
Dpartement tudiant Code 1 1 2 2 3 3 Nom_Dept Informatique Informatique Civil Civil lectrique lectrique Matricule Nom_Prenom Code_Dept 12308 12408 12308 12408 12308 12408 Alami Samir Semah Amal Alami Samir Semah Amal Alami Samir Semah Amal 1 3 1 3 1 3

2010-2011 \ N. El Faddouli

68

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Produit Cartsien en SQL
SELECT * FROM Table1 , Table2 , , TableN Exemple 13: SELECT * FROM Dpartements, tudiants

2010-2011 \ N. El Faddouli

69

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


La Jointure
Consiste combiner deux relations R1 et R2 tuple tuple (ligne ligne) en vrifiant la concordance entre certains attributs (colonnes) des deux relations (en gnral: une cl primaire avec une cl trangre). C'est une projection d'une restriction sur un produit cartsien entre plusieurs relations afin de: slectionner certains attributs des tuples du produit cartsien vrifiant une condition donne. Notations possibles: R1 wv R2 (Condition) Join (R1,R2,Condition)
2010-2011 \ N. El Faddouli 70

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


La Jointure (Suite)
Exemple: Join (Dpartement , tudiant, Code = Code_Dept) ou Join (Dpartement, tudiant, Dpartement.Code=tudiant.Code_Dept)

Join (Dpartement , tudiant, Code = Code_Dept)

Code 1 3

Nom_Dept Informatique lectrique

Matricule Nom_Prenom Code_Dept 12308 12408 Alami Samir Semah Amal 1 3


71

2010-2011 \ N. El Faddouli

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


La Jointure (Suite)
Exemple 14:
Project ( Join (Dpartement, tudiant, Code=Code_Dept), Nom_Dept,Nom_Prenom)

SELECT Nom_Dept , Nom_Prenom FROM Dpartement , tudiant

WHERE Dpartement.Code Code_Dept = Code= tudiant.Code_Dept Rsultat? .. ..

2010-2011 \ N. El Faddouli

72

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


La Jointure (Suite)
S'il y des attributs de mme nom dans les relations de la jointure, on doit prfixer ces attributs par les noms de leurs tables respectives comme suit: Exemple 15: Table.Attribut Ville (Code_V, Nom_Ville) Ecole (Code_E, Nom_Ecole, #Code_V) Ville Code_V Nom_Ville 1 2 3 Rabat Casa Tanger
2010-2011 \ N. El Faddouli

Ecole Code_E 120 130 140 Nom_Ecole Mohammed V Imam Malek Al Massira NbSalle Code_V 20 15 25 1 1 3
73

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Exemple 15 (Suite) Ville Ecole Code_V Nom_Ville 1 1 1 2 2 2 3 3 3 Rabat Rabat Rabat Casa Casa Casa Tanger Tanger Tanger Code_E 120 130 140 120 130 140 120 130 140 Nom_Ecole Imam Malek Al Massira Imam Malek Al Massira Imam Malek Al Massira NbSalle 15 25 15 25 15 25 Code_V 1 1 3 1 1 3 1 1 3
74

Mohammed V 20

Mohammed V 20

Mohammed V 20

2010-2011 \ N. El Faddouli

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Exemple 15 (Suite) Slectionner le nom de l'cole suivi du nom et du code de ville SELECT FROM WHERE Nom_Ecole , Nom_Ville, Ville. Code_V Ville , Ecole Ville. Code_V =Ecole. Code_V

2010-2011 \ N. El Faddouli

75

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Les Jointures (Suite)
On peut utiliser des alias comme prfixes des attributs au lieu des noms de tables. Exemple 16: Ville (Code_V, Nom_Ville) Ecole (Code_E, Nom_Ecole, #Code_V) SELECT FROM WHERE V. Code_V, Nom_Ville, Nom_Ecole Ville V , Ecole E V. Code_V = E. Code_V
76

2010-2011 \ N. El Faddouli

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Les Jointures (Suite)
Utilisation d'une table plusieurs fois dans la clause FROM. Exemple: Joueur(IdJ, NomJ) Comptition (IdC, NomC, #IdJ1, #IdJ2, #IdJ3)
Chercher le nom de chaque comptition ainsi que les noms des gagnants.

SELECT NomC, J1.NomJ, J2.NomJ, J3.NomJ FROM Comptition, Joueur J1, Joueur J2, Joueur J3

WHERE J1.IdJ = C.IdJ1 and J2.IdJ = C.IdJ2 and J3.IdJ = C.IdJ3

2010-2011 \ N. El Faddouli

77

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Classement des tuples
On peut classer les lignes d'une requte de slection dans l'ordre croissant ou dcroissant selon un ou plusieurs attributs. Syntaxe: SELECT Attribut(s) FROM Table(s)

WHERE Condition ORDER BY Attribut1 DESC, Attribut2 ASC, L'ordre par dfaut: Croissant (ASC).

2010-2011 \ N. El Faddouli

78

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Classement des tuples (Suite)
Exemple 17: SELECT FROM WHERE Nom_Ecole, Nom_Ville Ville V , Ecole E V.Code_V = E.Code_V

ORDER BY Nom_Ecole, Nom_Ville DESC Exemple 18: SELECT FROM WHERE Nom_Ecole, Nom_Ville Ville V , Ecole E V.Code_V = E.Code_V

ORDER BY 1, 2 DESC
2010-2011 \ N. El Faddouli 79

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Fonctions de Calcul (Fonctions dagrgation)
Elles prennent le nom d'un attribut comme argument. Elles fournissent une seule valeur en rsultat. Cette valeur est calcule avec toutes les valeurs de l'attribut (colonne) spcifi. Fonctions de calcul: COUNT : Nombre de valeurs d'une colonne. AVG SUM MIN MAX : Moyenne des valeurs d'une colonne. : Somme des valeurs d'une colonne. : Minimum des valeurs d'une colonne. : Maximum des valeurs d'une colonne.
80

2010-2011 \ N. El Faddouli

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Fonctions de Calcul (Suite)
Exemple 19: Nombre d'coles SELECT COUNT(Nom_Ecole) FROM Ecole SELECT COUNT(*) FROM Ecole

Remarque: Le rsultat est compos d'une seule colonne sans nom explicite. On peut donner un nom explicite une colonne comme suit: SELECT FROM COUNT(Nom_Ecole) AS [Nombre d'coles] Ecole

2010-2011 \ N. El Faddouli

81

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Fonctions de Calcul (Suite)
Exemple 20: Nombre d'coles Rabat SELECT COUNT(Nom_Ecole) AS [Nombre d'coles Rabat] FROM Ville V , Ecole E

WHERE V.Code_V = E.Code_V AND Nom_Ville = "Rabat" Exemple 21: Moyenne des salles par cole. SELECT AVG(NbSalle) AS [Moyenne des salles] FROM Ecole
82

2010-2011 \ N. El Faddouli

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Fonctions de Calcul (Suite)
Exemple 22: Le minimum de nombre de salles des coles SELECT MIN(NbSalle) AS [Minimum de nombre de salles] FROM Ecole

Exemple 23: Le nombre total de salles de toutes les coles. SELECT SUM(NbSalle) AS [Nombre total de salle] FROM Ecole

2010-2011 \ N. El Faddouli

83

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Regroupement (ou agrgat): (Suite)
Partitionnement des lignes d'une table en plusieurs groupes selon les valeurs d'un ou de plusieurs attributs afin d'appliquer des fonctions de calcul. Regroupement ralis en utilisant le mot-cl GROUP BY suivi d'une liste d'attributs. Exemple 24: Nom de ville et nombre de ses coles SELECT Nom_Ville, COUNT(Nom_Ecole) FROM VILLE V, ECOLE E WHERE V.Code_V = E.Code_V GROUP BY V.Code_V
2010-2011 \ N. El Faddouli 84

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Regroupement (Suite)
Remarque: En ACCESS, les attributs de regroupement (ceux devant Group By) doivent apparatre dans la clause SELECT. Dans la requte prcdente: On doit faire un groupement par Nom_Ville ou inclure V.Code_V dans la clause SELECT. Exercices: - Nom de ville suivi du nombre total des salles de ses coles. - Titre du livre et le nombre d'emprunteurs qui l'ont emprunt.
2010-2011 \ N. El Faddouli 85

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Regroupement (Suite)
Clause HAVING Pour considrer seulement les groupes satisfaisant une condition. La condition doit comporter des fonctions d'agrgation. Remarque: La condition de la clause WHERE ne doit pas comporter des fonctions d'agrgation.

2010-2011 \ N. El Faddouli

86

pour plus de documents : www.almohandiss.com

Algbre Relationnelle et SQL


Regroupement (Suite)
Exemple 25: Les villes ayant plus qu'une cole SELECT Nom_Ville, COUNT(Nom_Ecole) FROM WHERE GROUP Ville V, Ecole E V.Code_V = E.Code_V Nom_Ville BY V.Code_V

HAVING COUNT(Nom_Ecole) >= 2

2010-2011 \ N. El Faddouli

87

pour plus de documents : www.almohandiss.com

SQL: Mise jours de donnes


Insertion de donnes:
Ajouter une ligne dans une table.

Insertion d'une ligne complte


INSERT INTO Table VALUES (Val_Attr1, Val_Attr2, .) Respecter lordre et le type des colonnes dfinies la cration Exemple: INSERT INTO Ville VALUES (234, 'Kenitra')

Insertion d'une ligne incomplte


INSERT INTO Table (Attr1, Attr2, ) VALUES (Val_Attr1, Val_Attr2, .) Les attributs non indiqus auront la valeur par dfaut ou NULL. Exemple: INSERT INTO Livres (Cote, Titre ) VALUES (100, 'XML')
2010-2011 \ N. El Faddouli 88

pour plus de documents : www.almohandiss.com

SQL: Mise jours de donnes


Modification de donnes:
Modifier des lignes dans une table.

Modification de toutes les lignes


UPDATE table SET attr1 = expression1 , attr2 = expression2 , Exemple: Incrmenter de 1 le nombre de salles de toutes les coles UPDATE Ecole SET NbSalle = NbSalle +1

Modification des lignes satisfaisant une condition donnes


UPDATE table SET attr1 = expression1 , attr2 = expression2 , WHERE condition Exemple: Doubler le nombre de salle de l'cole dont le code est 23 UPDATE Ecole SET NbSalle = 2*NbSalle WHERE Code_Ecole = 23
2010-2011 \ N. El Faddouli 89

pour plus de documents : www.almohandiss.com

SQL: Mise jours de donnes


Suppression de donnes: Supprimer des lignes d'une table. Suppression de toutes les lignes
DELETE FROM table Exemple: Vider la table Ville DELETE FROM Ville

Suppression des lignes satisfaisant une condition donnes


DELETE FROM table WHERE condition Exemple: Supprimer les cole dont le nombre de salles est <10 DELETE FROM Ecole WHERE NbSalle <10
2010-2011 \ N. El Faddouli 90

pour plus de documents : www.almohandiss.com

Normalisation d'un schma relationnel


Problme de la redondance
[En dehors des cls trangres] Exemple: Soit la relation Produit_Stock NumProd 101 106 105 123 Quantit 200 1000 234 55 NumFour 801 803 890 801 Adresse Av Nassr Imble A N1 Casa Av Mouahidin N3 Casa Rue Dakar N 34 Tanger Av Nassr Imble A N1 Casa

2010-2011 \ N. El Faddouli

91

pour plus de documents : www.almohandiss.com

Normalisation d'un schma relationnel


Problme de la redondance
Anomalies lies la redondance:
Anomalies de modification: Si l'on souhaite mettre jour l'adresse d'un fournisseur, il faut le faire pour tous les tuples concerns. Anomalies d'insertion: Pour ajouter un nouveau fournisseur, il faut obligatoirement fournir des valeurs pour NumProd et Quantit. Anomalies de suppression: La suppression du produit 106 par exemple fait perdre des informations concernant le fournisseur 803.
2010-2011 \ N. El Faddouli 92

pour plus de documents : www.almohandiss.com

Normalisation d'un schma relationnel


But de la normalisation des relations
viter les problmes de mise jour lis la redondance. Minimisation de l'espace de stockage.

Origine du Problme
Les problmes viennent en fait des dpendances fonctionnelles internes aux relations.

2010-2011 \ N. El Faddouli

93

pour plus de documents : www.almohandiss.com

Normalisation d'un schma relationnel


Dpendances fonctionnelles (DF)
Soient X et Y deux attributs (ou groupe d'attributs) d'une mme relation. Il y a dpendance fonctionnelle entre X et Y (ou Y dpend de X) si la valeur de X dtermine celle de Y. On note: X Y Exemples: Etudiant ( Matricule, Nom, Prnom, Moyenne) Matricule Nom, Prnom, Moyenne Stock (NumProd, NumMagasin, Quantit) NumProd , NumMagasin Quantit
2010-2011 \ N. El Faddouli 94

pour plus de documents : www.almohandiss.com

Normalisation d'un schma relationnel


Proprits des DF
Rflexivit: Y X

X Y X , Z Y, Z X Z X, Z T

Augmentation: X Y

Transitivit: X Y et Y Z

Pseudo-transitivit: X Y et Y, Z T Union: X Y et X Z

X Y, Z X Z

Dcomposition: X Y et Z Y N.B: La notation X,Y signifie X Y


2010-2011 \ N. El Faddouli

95

pour plus de documents : www.almohandiss.com

Normalisation d'un schma relationnel


Pratique de la normalisation
Normaliser un schma relationnel d'une BD (l'ensemble des relations de la BD) consiste remplacer chaque relation du schma par des relations qui sont dans la forme normale (FN) voulue. Une FN reprsente une condition qu'une relation doit vrifier. Il existe plusieurs degrs de normalisation de la 1re forme normale la 5me.

2010-2011 \ N. El Faddouli

96

pour plus de documents : www.almohandiss.com

Normalisation d'un schma relationnel


Premire forme normale
Une relation est en 1FN si tout attribut n'est pas dcomposable (multivalue) cd que chaque attribut doit tre atomique. Exemple: Livre (Cote, Titre, Auteurs) n'est pas en 1FN car l'attribut Auteurs est dcomposable (il s'agit de plusieurs auteurs). Cette relation peut tre dcompose en deux relations: Livre (Cote, Titre) Auteurs ( Cote, Auteur)
2010-2011 \ N. El Faddouli 97

pour plus de documents : www.almohandiss.com

Normalisation d'un schma relationnel


Premire forme normale
Remarque La jointure des deux nouvelles relations sur l'attribut Cote donnera l'quivalent de la relation de dpart: Join (Livre, Auteurs, Livre.Cote = Auteurs.Cote) Cette jointure permettra d'avoir, pour chaque livre, la Cote, le titre et les auteurs.

2010-2011 \ N. El Faddouli

98

pour plus de documents : www.almohandiss.com

Normalisation d'un schma relationnel


Deuxime forme normale
Une relation est en 2FN si: elle est en 1FN. chaque attribut non cl primaire est dpendant de la cl primaire entire. Exemple: Client (NumCli, Nom, Prnom, RueNum, CodPostale, Ville) est en 2FN Employ (Mat, CodeProjet, Nom, FonctionProjet) n'est pas en 2FN: Mat Nom
2010-2011 \ N. El Faddouli 99

pour plus de documents : www.almohandiss.com

Normalisation d'un schma relationnel


Normalisation en deuxime forme normale
Thorme de dcomposition sans perte d'informations (SPI): Soit une relation R (A,B,C) o A, B et C sont des ensembles d'attributs disjoints, avec B C, alors: R1 = Project(R, A, B) R1(A, B) R2 = Project(R,B, C) R2 (B, C) R(A, B, C) = Join(R1, R2, R1.B = R2.B) En dcomposant R en deux relation R1 et R2, on dit que l'on a "extrait" la DF de R
2010-2011 \ N. El Faddouli 100

pour plus de documents : www.almohandiss.com

Normalisation d'un schma relationnel


Normalisation en deuxime forme normale
Exemple 1: Normalisation en 2FN de la relation Employ (Mat, CodeProjet, Nom, FonctionProjet) Les dpendances de la relation sont: Mat Nom CodeProjet, Mat FonctionProjet Le rsultat de normalisation en 2FN est: Employ(Mat, Nom) Participation(Mat, CodeProjet, FonctionProjet)
2010-2011 \ N. El Faddouli 101

pour plus de documents : www.almohandiss.com

Normalisation d'un schma relationnel


Normalisation en deuxime forme normale
Exemple 2: Normalisation en 2FN de la relation Magasin(NumProd, Quantit, NumFour, Ville) on a: NumProd, NumFour Quantit NumFour Ville

La relation n'est pas en 2FN

Le rsultat de la normalisation: Magasin (NumProd, NumFour, Quantit) Fournisseur (NumFour, Ville)


2010-2011 \ N. El Faddouli 102

pour plus de documents : www.almohandiss.com

Normalisation d'un schma relationnel


Troisime forme normale
Une relation est en 3FN si: elle est en 2FN. il n'existe aucune DF entre deux attributs non cl primaire. Exemple: Musique(NoChanson, NoChanteur, NomChanteur) Avec les DF: NoChanson NoChanteur NoChanson NomChanteur et NoChanteur NomChanteur Cette relation est en 2FN mais pas en 3FN.
2010-2011 \ N. El Faddouli 103

pour plus de documents : www.almohandiss.com

Normalisation d'un schma relationnel


Algorithme de dcomposition en 3FN
Soit un schma de relation R. Pour chaque DF: X A, on cre une relation Ri (X, A) Si on a plusieurs DF: X A1, X A2, , X An; on les regroupe toutes dans une mme relation Rj (X, A1, A2, , An) Les attributs n'appartenant aucune DF seront regroups dans une mme relation Pour avoir une dcomposition SPI: il doit y avoir au moins une cl de R dans une des relations de dcomposition. Si ce n'est pas le cas, on ajoute une relation contenant une cl de R, ou on ajoute des attributs dans une des relations de dcomposition.
2010-2011 \ N. El Faddouli 104

pour plus de documents : www.almohandiss.com

Normalisation d'un schma relationnel


Algorithme de dcomposition en 3FN Exemple:
BAINS (NNag, Nom, Prnom, Dure, Date, NP, NomP, Region) DF: NNag Nom, Prnom, NP NomP, Region NP, NNag, Date Dure Rsultat de normalisation: NAGEUR (NNag, NOM, PRENOM) PLAGE (NP, NOMP, REGION) BAIGNADE (NNag, NP, DATE, DUREE)
2010-2011 \ N. El Faddouli 105

pour plus de documents : www.almohandiss.com

Normalisation d'un schma relationnel


Algorithme de dcomposition en 3FN Exercice: Normaliser les relations suivantes
1) VOITURE (IMMATRICULATION, COULEUR, MODELE, MARQUE)

2) COMMANDE ( NOM_FOURNISSEUR, ADRESSE_FOURNISSEUR, ARTICLE, QUANTITE, PRIX )

2010-2011 \ N. El Faddouli

106

pour plus de documents : www.almohandiss.com

Normalisation d'un schma relationnel


Pour chaque relation ci-dessous: - dfinir sa forme normale et la justifier - tablir un graphe de ses dpendances, - proposer une dcomposition optimale si ncessaire. 1) Pice (Npice, prix-unit, TVA, libell, catgorie) Une pice est identifie par un n et a un prix unitaire, un libell, une tva et une catgorie. La tva est dtermine en fonction de la catgorie 2) Prime (Nmachine, Ntechn, atelier, montant-prime, nom-techn) Une machine est identifie par un n et affecte un seul atelier. Un technicien est identifi par un n et a nom Une prime est donne un technicien ayant travaill sur une machine donne
2010-2011 \ N. El Faddouli 107

pour plus de documents : www.almohandiss.com

Normalisation d'un schma relationnel


3) Employ ( NEmp, NLab, NProj, NomEmp, NomProj, adresse) Un employ est identifi par un n, a un nom et une adresse et peut travailler sur plusieurs projets pour plusieurs laboratoire.

2010-2011 \ N. El Faddouli

108

pour plus de documents : www.almohandiss.com

Exercice
Soit le schma relationnel de la base d'une bibliothque contenant les relations suivantes: Livre ( NumInv, Titre, Auteur, Qte) Abonne ( NumAb, Nom, Prnom) Prt ( #NumInv, #NumAb, DatePret, DateRemise) Exprimez les requtes suivantes en algbre relationnelle et en SQL: 1) Les titres et les quantits des livres. 2) Les livres disponibles en quantit suprieure ou gale 2 3) Les titres et les quantits des livres dont la quantit 2 4) Les livres dont la quantit est entre 2 et 10 ou dont le titre est "Unix". 5) Les quantits maximale et minimale disponibles.
2010-2011 \ N. El Faddouli 109

pour plus de documents : www.almohandiss.com

Exercice (Suite)
6) Les auteurs sans rptition. 7) Les titres et auteurs classs par titre croissant. 8) Les titres,auteurs et quantits classs par quantit dcroissante et par titre croissant. 9) Les livres dont le titre commence par "Programmation" et l'auteur contient "Meyer". 10) Le nombre de livre. 11) La moyenne des quantits. 12) Le numro et le nom de l'abonn et le titre d'un livre emprunt. 13) Le numro et le nom de l'abonn et le titre d'un livre emprunt. 14) Le nom de l'abonn et le nombre d'emprunt effectus.
2010-2011 \ N. El Faddouli 110

pour plus de documents : www.almohandiss.com

Contrle Continu
Exercice 1 : A partir du schma de base suivant : Etudiant (numEtudiant, nom, prnom, age, adresse) Cours (numCours, intitule, nbreHeure, salle, #numDep) Inscription (#numCours, #numEtudiant) Dpartement (numDep, nomDep, nbreEnseignant) Inscription modlise linscription dun tudiant (numEtudiant) un cours (numCours). Un cours est gr par un dpartement (numDep) Exprimer les requtes en algbre relationnelle: R1) Donner toutes les informations associes aux cours grs par le dpartement de nom "Informatique". R2) Donner les numEtudiant et nom des tudiants inscrits dans les cours grs par le dpartement de nom "Informatique".
2010-2011 \ N. El Faddouli 111

pour plus de documents : www.almohandiss.com

Contrle Continu
Exercice 2: Exprimer en SQL les requtes suivantes : R1) Donner les nom et prnom et intitule des cours pour lesquels ltudiant est inscrit. R2) Donner les numCours et intitule des cours pour lesquels ltudiant de cl numEtudiant = 1 est inscrit R3) Donner les numCours, intitule et nombre d'inscrits des cours. R4) Donner les numCours, intitule et nombre d'inscrits des cours pour lesquels il y a 15 tudiants inscrits ou plus R5) Donner pour chaque cours les numCours et intitule du cours ainsi que le nombre dlves inscrits dans ce cours R6) Donner pour chaque dpartement le nombre dtudiants inscrits dans chaque cours gr par ce dpartement ainsi que numCours et intitule
2010-2011 \ N. El Faddouli 112

pour plus de documents : www.almohandiss.com

Code_V Nom_Ville Code_V Rabat Nom_Ville 1 1 Rabat 1 Rabat 1 1 3 2 2 2 3 3 3 SELECT FROM WHERE Rabat Rabat Nom_Ville Tanger Casa Casa Rabat Casa Tanger Tanger Tanger Tanger

Code_E Nom_Ecole Code_E Mohammed Nom_EcoleV 120 120 Mohammed 130 Imam Malek V 130 140 140 120 130 140 120 130 140

NbSalle Code_V NbSalle 1 Code_V 20 20 1 15 1 1 3 3 1 1 3 1 1 3

Imam Malek 25 15 Al Massira Expr1000 Nbre d'coles Al Massira 25 Mohammed V 20 Imam 2 Malek Al Massira 1 Imam Malek COUNT(*) Al Massira 15 25 15 25

Mohammed V 20

Nom_Ville, COUNT(Nom_Ecole) AS [Nbre d'coles] VILLE V, ECOLE E V.Code_V = E.Code_V

GROUP BY Code_V
2010-2011 \ N. El Faddouli 113

Das könnte Ihnen auch gefallen