Professional Documents
Culture Documents
Bases de Données 3 LMD Informatique
Bases de Données 3 LMD Informatique
CHELLAKH
Notre programmeur devra par la suite écrire des programmes, qui exploitent les
fichiers, (dont il connaît la structure), pour automatiser les traitements voulus.
Bien que cette réflexion ait des chances d’aboutir à une solution provisoire, elle ne risque pas
de donner lieu à une automatisation durable, et efficace.
Les reproches qui pourraient être faits :
www.etudpdf.com
Module BDD : Introduction aux BDD Mme H.CHELLAKH
1- Comment définir de façon claire et efficace, les structures des fichiers, en évitant les
redondances, et les incohérences.
2- La solution proposée, ne peut résister, ou s’adapter facilement à un changement, par
exemple rajouter une quatrième note.
3- L’ajout, la suppression, et la modification d’enregistrements, ainsi que les contrôles de
saisie, devront être programmés explicitement, et influeront sur le temps d’accès, aux
données.
4- En cas de démission de notre jeune programmeur, il sera difficile à son remplaçant de
maintenir l’application, sans avoir une connaissance complète des détails
d’implémentation.
En résumé, une application solide de gestion, ne peut être le résultat d’un bricolage, même
si elle est l’œuvre d’un programmeur de génie. En fait il faut remarquer, que certains des
inconvénients, que nous reprochons à la solution précédente, sont dus à l’absence d’une
démarche de conception claire, et décidable. Alors que d’autres sont liés aux limites du
système de gestion de fichiers (SGF), qui n’offre pas des techniques spécifiques à une telle
application.
www.etudpdf.com
Module BDD : Introduction aux BDD Mme H.CHELLAKH
www.etudpdf.com
Module BDD : Introduction aux BDD Mme H.CHELLAKH
SGBD Utilisateur 1
Application 1
Utilisateur 2
Application 2
BD
Application 3 Utilisateur 3
www.etudpdf.com
Module BDD : Introduction aux BDD Mme H.CHELLAKH
Niveau
Vue Vue Vue
Externe
externe 1 externe 2 externe n
.....
Niveau
Logique Vue conceptuelle
www.etudpdf.com
Module BDD : Introduction aux BDD Mme H.CHELLAKH
- Matricule
Etudiant - Nom
- Prénom
- Adresse
Est inscrit
- Cod-mod
Module - Libellé-mod
- Coeff
Un type de set exprime une liaison père-fils entre deux types record
Les SGBD CODASYL supportent deux types de modèles : le modèle hiérarchique et
le modèle réseau.
Le modèle hiérarchique :
Les SGBD hiérarchique gèrent des schémas dans lesquels un type de record peut être
propriétaire de plusieurs types de sets mais il ne peut être membre que d’un seul type de set. Il
permet de représenter les entités (classes) et des relations de type « père-fils » entre ces
classes, ce qui génère une représentation sous forme arborescence de ces entités. Les SGBD
de type hiérarchique gèrent les liens « père-fils », ils offrent des primitives pour naviguer dans
de telles structures
- Matricule
- Nom
Etudiant - Prénom
- Adresse
Est inscrit
- Cod-filière
Filière - Libellé-filière
Comporte
- Cod-mod
Module
- Libellé-mod
Le modèle réseau :
Dans un schéma réseau, un type record peut être propriétaire de plusieurs types de
sets, et peut être membre de plusieurs types de sets.
www.etudpdf.com
Module BDD : Introduction aux BDD Mme H.CHELLAKH
Exemple :
- Num-ens - Cod-mod
- - Nom-ens - Libellé-mod
Enseignant Module
- Prénom-ens - Coeff
- Jour
- Heure
Emploi du
- Local
temps
Au-delà des SGBD CODASYL, existent les SGBD relationnels et les SGBD objets.
Le modèle relationnel :
Il permet de voir une base de données comme un ensemble de tables, il est doté d’une
algèbre relationnelle. Les langages relationnels de manipulation de données se caractérisent
par leur nature déclarative.
Contrairement aux SGBD réseau ou hiérarchique, les SGBD relationnels (SGBDR)
offrent un langage de manipulation de données standard (SQL fondé sur l’algèbre
relationnelle).
Le modèle orienté objet :
Permet de voir une base de données comme un ensemble de classes d’objets, ayant des
liens d’héritage, d’agrégation, de composition ou de simple association entre elles.
Moyen de transport
Représentation de l’héritage
1 4
Moteur Roue
Dans chacune des classes représentées, il faudra spécifier les attributs et les méthodes
correspondantes.
www.etudpdf.com
Module BDD : Introduction aux BDD Mme H.CHELLAKH
www.etudpdf.com
Module BDD : Introduction aux BDD Mme H.CHELLAKH
SGBD. L’objectif de débit élevé nécessite un overhead minimal dans la gestion des tâches
accomplie par le système. L’objectif de bon temps de réponse implique qu’une requête courte
d’un utilisateur n’attende pas une requête longue d’un autre utilisateur. Il faut donc partager
les ressources (unités centrales, unités d’entrées-sorties) entre les utilisateurs en optimisant
l’utilisation globale et en évitant les pertes en communication de contextes.
6. Redondance contrôlée des données :
Dans les systèmes classiques à fichiers non intégrés, chaque application possède ses
données propres. Cela conduit généralement à de nombreuses duplications de données avec,
outre la perte en mémoire secondaire associée, un gâchis important en moyens humains pour
saisir et maintenir à jour plusieurs fois les mêmes données. Avec une approche base de
données, les fichiers plus ou moins redondants seront intégrés en un seul fichier partagé par
les diverses applications. L’administration centralisée des données conduisait donc
naturellement à la non duplication physique des données afin d’éviter les mises à jour
multiples.
En fait, avec les bases de données réparties sur plusieurs calculateurs interconnectés, il
est apparu souhaitable de faire gérer par le système des copies multiples de données. Cela
optimise les performances en interrogation, en évitant les transferts sur le réseau et en
permettant le parallélisme des accès. Il s’agit donc de bien contrôler la redondance, qui
permet d’optimiser les performances, en la gérant de manière invisible pour les utilisateurs.
7. Cohérence des données :
Bien que les redondances anarchiques entre données soient évitées, les données vues
par l’utilisateur ne sont pas indépendantes. Au niveau d’ensemble de données, il peut exister
certaines dépendances entre données. Par exemple une donnée représentant le nombre de
commandes d’un client doit correspondre au nombre de commandes dans la base. Plus
simplement, une données élémentaire doit respecter un format et ne peut souvent prendre une
valeur quelconque. Par exemple, un salaire mensuel doit être supérieur au SMIG et doit
raisonnablement rester inférieur à un seuil. Un SGBD doit veiller à ce que les applications
respectent ces règles lors des modifications des données et ainsi assurer la cohérence des
données. Les règles que doivent explicitement ou implicitement suivre les données au cours
de leur évolution sont appelées contraintes d’intégrité.
8. partage des données :
L’objectif est de permettre aux applications de partager les données de la base dans le
temps mais aussi simultanément. Une application doit pouvoir accéder aux données comme si
elle était seule à les utiliser, sans attendre mais aussi sans savoir qu’une autre application peut
les modifier concurremment.
En pratique, un utilisateur exécute des programmes généralement cours qui mettent à
jour et consultent la base de données. Un tel programme interactif appelé transaction,
correspond par exemple à l’entrée d’un produit en stock ou à une réservation de place
d’avion. Il est important que deux transactions concurrentes (par exemple, deux réservations
sur le même avion) ne s’emmêlent pas dans leurs accès à la base de données (par exemple
réservent le même siège pour deux passagers différents). On cherchera donc à assurer que le
résultat d’une exécution simultanée de transactions reste le même que celui d’une exécution
séquentielle dans un ordre quelconque de transactions.
9. Sécurité des données :
Cet objectif a deux aspects. Tout d’abord, les données doivent être protégées contre
les accès non autorisés ou mal intentionnés. Il doit exister des mécanismes adéquats pour
www.etudpdf.com
Module BDD : Introduction aux BDD Mme H.CHELLAKH
autoriser, contrôler ou enlever les droits d’accès de n’importe quel usager à tout ensemble de
données. D’un autre côté, la sécurité des données doit aussi être assurée en cas de panne d’un
programme ou d’un système, voire de la machine. Un bon SGBD doit être capable de
restaurer des données cohérentes après une panne disque, à partir de sauvegardes précédentes.
Aussi, si une transaction commence une mise à jour (par exemple un transfert depuis votre
compte en banque sur celui de l’auteur) et est interrompue par une panne en cours de mise à
jour, le SGBD doit assurer l’intégrité de la base et par suite défaire la transaction qui a
échoué. Une transaction doit être totalement exécutée, ou pas du tout : il faut assurer
l’atomicité des transactions, et ainsi garantir l’intégrité physique de la base de données.
10
www.etudpdf.com
Module BDD : Le modèle relationnel Mme H.CHELLAKH
Le modèle relationnel
1. Introduction :
Le modèle relationnel a été proposé en 1970, par Ted Codd, chercheur chez IBM, dans un
exposé désormais célèbre qui attira immédiatement l’attention grâce à la simplicité de son
fondement mathématique. Le modèle exploite la notion de relation mathématique, bloc de
construction qui se fonde sur la théorie des ensembles et la logique des prédicats de premier ordre.
Le modèle relationnel est aujourd’hui la base de nombreux systèmes, et les architectures
permettant d’accéder depuis une station de travail à des serveurs de données s’appuient en général
sur lui. Le relationnel a donc atteint ses objectifs au-delà de toute espérance.
Les objectifs du modèle relationnel ont été formulés par Codd comme suit :
1- Permettre un haut degré d’indépendance des programmes d’application et des activités
interactives à la représentation interne des données.
2- Fournir une base solide pour traiter les problèmes de cohérence et de redondance des
données.
3- Permettre le développement de langage de manipulation de données non procéduraux basés
sur les théories solides.
4- Etre un modèle extensible permettent de modéliser et de manipuler simplement des données
tabulaires, mais pouvant être étendu pour modéliser et manipuler des données complexes.
5- Devenir un standard pour la description et la manipulation des bases de données.
www.etudpdf.com
Module BDD : Le modèle relationnel Mme H.CHELLAKH
à l’aide d’un schéma relationnel ; R est le nom de cette relation. Le degré d’une relation est le
nombre d’attributs n de son schéma relationnel.
Exemple de schéma relationnel de degré sept décrivant les étudiants de l’université :
Nom de la Attributs
relation
www.etudpdf.com
Module BDD : Le modèle relationnel Mme H.CHELLAKH
www.etudpdf.com
Module BDD : Le modèle relationnel Mme H.CHELLAKH
Clé 1 Recherche
primaire 4 Administration Clé
5 Comptabilité étrangère
Le concept d’intégrité référentielle est lié au concept de clé étrangère. Les conditions
d’existence d’une clé étrangère imposent l’existence d’une contrainte d’intégrité référentielle entre
les schémas R1 et R2.
L’ensemble d’attributs FK du schéma relationnel R1 est une clé étrangère de R1 qui
référence la relation R2 si les deux règles suivantes sont respectées :
1- Les attributs de FK doivent avoir le ou les mêmes domaines que les attributs de clé
primaire PK de R2 ; on dit alors que les attributs FK référencent la relation R2.
2- La valeur en FK d’un tuple t1 de l’état courant r1(R1) doit avoir la valeur en PK d’un
tuple t2 de l’état courant r2(R2), faute de quoi elle est NULL. Dans le premier cas, nous
avons t1(FK)=t2(PK). On dit alors que le tuple t1 référence le tuple t2.
Selon cette définition, R1 est appelée relation référençante et R2 relation référencée.
www.etudpdf.com
Module BDD : Le modèle relationnel Mme H.CHELLAKH
Remarque : pour éviter toute confusion avec la relation du modèle E/A, la relation au sens
relationnel sera toujours appelée Table relationnelle.
Règle 1 : Chacune des entités du modèle E/A devient une table relationnelle.
Règle 2 : L’identifiant des entités du Modèle E/A devient la clé primaire des tables relationnelles.
Règle 3 : Les propriétés portées par les entités du modèle E/A deviennent des attributs des tables
relationnelles.
Règle 4 : Une relation R du modèle E/A de type :
O,1
A O,N R B
ou 1 ,1
ou 1,N
a. R n’est pas porteuse de propriétés : elle disparaît dans le modèle relationnel, l’identifiant de
A devient une clé étrangère dans la relation B
b. R est porteuse de propriétés : celles-ci migrent vers B (c'est-à-dire deviennent des attributs
de B).
O, N O, N
A R B
ou 1,N ou 1 ,N
La relation R devient une table relationnelle, sa clé primaire étant obtenue par la
concaténation des identifiants des entités qui participent à la relation, si elle est porteuse de
propriétés celles-ci deviendront des attributs.
Règle 6 : Si la relation est de dimension supérieure à 2, elle devient une table relationnelle avec
comme clé primaire la concaténation des identifiants des entités qui participent à la relation.
www.etudpdf.com
Module BDD : Conception de BDD relationnelles Mme H.CHELLAKH
Sur la base de cet ensemble d’attributs, nous construisons une relation qui nous renseigne
sur l’emploi du temps, d’une filière donnée (informatique par exemple, toutes années confondues.
Emploi du temps :
Jour Heure local Cod-mod Num-ens An-étude Section
Dimanche 8h 00 L1 Algo E1 2 A
Dimanche 13h 00 L2 Archi E2 2 A
Lundi 9h 30 L1 Algo E4 2 B
Mardi 11h 30 L3 Log E3 2 B
Dimanche 13h 00 L3 Sys E4 3 A
…
www.etudpdf.com
Module BDD : Conception de BDD relationnelles Mme H.CHELLAKH
Ou encore :
Jour , Heure, Local Cod mod
Jour , Heure, Local num ens
Jour , Heure, Local An étude
Jour , Heure, Local Section
Nous constatons aussi que Cod-mod ne détermine pas Num-ens. En effet, pour le module
Algo, nous avons deux enseignants différents E1 et E4.
Connaissant le module, nous ne pouvons pas déterminer l’enseignant.
De même, Num-ens ne détermine pas Cod-mod, du fait que l’enseignant E4 assure deux module
différents Algo et Sys.
Remarques :
Une DF est une assertion qui est définie sur toutes les réalisations (tuples) d’une réalisation
et pas sur un tuple particulier.
Une DF traduit une certaine perception de la réalité, elle correspond à une contrainte sur les
données, qui doit être vérifiée en permanence.
Définition (Dépendance Fonctionnelle) :
Soit R a1 , a 2 ,..., a n ( n 2) un schéma de relation, soit X, Y, Z trois sous-ensembles
d’attributs de A= a1 , a 2 ,..., a n tels que : X Y Z et X Y Z A (Z peut être vide)
On dira que X détermine Y, ou Y dépend fonctionnellement de X et on notera X Y si quels que
soient les tuples (x,y,z) et ( x , y , z ) de R, x x y y
Autrement dit : une valeur de x détermine une et une seule valeur de y, ou bien connaissant la
valeur de x, nous pouvons déterminer la valeur de y sans ambiguïté.
Exemples :
Dans une relation qui décrit les modules enseignés R(Code-mod, Libellé-mod, coef), nous
avons les DFs suivantes :
Code mod Libellé mod
Code mod Coef
Connaissant Cod-mod, nous pouvons déterminer son libellé et son Coefficient.
Dans une relation qui décrit les enseignants, nous avons les DFs suivantes :
Num ens Grade
Num ens Nom ens
Num ens Pr énom ens
On pourra les écrire aussi comme suit :
Num ens Grade, Nom ens, Pr énom ens
Dans une relation qui décrit les sections, nous avons :
Section, An étude Nbre étudiants
www.etudpdf.com
Module BDD : Conception de BDD relationnelles Mme H.CHELLAKH
Transitivité :
Si X Y et Y Z alors X Z
Exemple :
Num ens grade et grade salaire de base Num ens salaire de base
Les trois règles précédentes ci-dessus sont connues sous le nom d’axiomes
d’ARMSTRONG, d’autres règles peuvent en être déduites : il s’agit de l’union, la pseudo
transitivité et la décomposition.
Union :
Si X Y et X Z alors X Y Z
Exemple :
Jour , Heure, Local Cod mod et Jour , Heure, Local num ens
Jour , Heure, Local Cod mod, Num ens
Pseudo-transitivité :
Si X Y et Y W Z X W Z
Exemple :
Num ens grade
Grade, Nom ens salaire
Num ens, Nom ens salaire
Décomposition :
Si X Y et Z Y alors X Z
Exemple :
Code mod Libellé mod, Coef Coef Libellé mod, Coef
Cod mod Coef
www.etudpdf.com
Module BDD : Conception de BDD relationnelles Mme H.CHELLAKH
www.etudpdf.com
Module BDD : Conception de BDD relationnelles Mme H.CHELLAKH
Remarque :
La recherche de la couverture minimale d’un ensemble de DF est un élément essentiel dans
le processus de normalisation, afin de décomposer une relation en plus petites relations.
www.etudpdf.com
Module BDD : Conception de BDD relationnelles Mme H.CHELLAKH
Définition :
Soit A un ensemble d’attributs qui constitue la clé primaire d’une relation R1. A est dite
étrangère de R2, si :
1- A apparaît dans R2.
2- Une valeur de clé extérieure d’un tuple quelconque de R2 est soit « NULL », soit apparaît
comme valeur de clé primaire d’un tuple de R1.
Exemple :
Module (Cod-mod, Libellé-mod, Coef, An-étude, Code-filière)
Filière (Cod-filière, Libellé-filière)
Code-filière est une clé primaire dans la relation Filière et elle est étrangère dans la relation module.
www.etudpdf.com
Module BDD : Conception de BDD relationnelles Mme H.CHELLAKH
www.etudpdf.com
Module BDD : Conception de BDD relationnelles Mme H.CHELLAKH
www.etudpdf.com
Module BDD : Conception de BDD relationnelles Mme H.CHELLAKH
Remarque :
La troisième forme normale a pour objectif d’éliminer les redondances dues aux DF
transitives.
4. Algorithme de synthèse :
En appliquant les étapes de cet algorithme, vous pourrez déduire un schéma de relation en
3FN. Vous devez démarrer de la relation universelle et de ses dépendances fonctionnelles. La
relation universelle est une relation qui contient tous les attributs du domaine d’étude.
Relation Ensemble
universelle de DF
Algorithme de
synthèse
Relations
En 3FN
www.etudpdf.com
Module BDD : Conception de BDD relationnelles Mme H.CHELLAKH
Soit F, l’ensemble de toutes les dépendances fonctionnelles définies sur les attributs de la relation
universelle. Les étapes de l’algorithme de synthèse sont les suivantes :
1. Trouver l’ensemble IRR(F) contenant la couverture irréductible (couverture minimale) de F
2. Partitionner l’ensemble IRR(F) en sous ensembles Fi, tels que toutes les DFs d’un ensemble
Fi aient la même partie gauche.
3. pour chaque ensemble Fi de DFs, construire une relation composée de tous les attributs
formant les DFs de Fi, la clé de la relation sera la partie gauche commune à toutes ces DFs.
4. traiter les attributs isolés.
Exemple :
Soient les DFS suivantes relatives à la gestion de la scolarité :
1. Code mod Libellé mod
2. Code mod An etude
3. Code mod Libellé filière
4. Code filière Libellé filière
5. Matricule Nom etud
6. Matricule Adresse etud
7. Matricule Date naiss etud
8. Num ens Nom ens
9. Num ens Date naiss ens
10. Num ens Grade
11. Num ens Situation familiale
12. Num ens salaire
13. Grade Nbre heures
14. Grade Salaire
15. Code mod Coef
16. Code mod Code filière
17. Matricule Pr énom etud
18. Num ens Pr énom ens
19. Num ens Adresse ens
20. Num ens, Grade Nbre heures
21. Num ens, Grade salaire
22. Num ens Nbre heures
23. Matricule Section
24. Matricule Groupe
25. Code mod, Matricule Code filière
Question :
Concevoir un schéma de relations en 3FN, à partir de cet ensemble de DFs en appliquant
l’algorithme de synthèse.
10
www.etudpdf.com
Module BDD : L’algèbre relationnelle Mme H.CHELLAKH
L’algèbre relationnelle
1. Introduction :
L’algèbre relationnelle a été inventée par E.Codd comme une collection d’opérations
formelles qui agissent sur des relations et produisent les relations en résultats. On peut considérer
que l’algèbre relationnelle est aux relations ce qu’est l’arithmétique aux entiers. Dans le modèle
relationnel, c’est l’algèbre relationnelle qui fournit cet ensemble d’opérations, permettant de
formuler des requêtes qui extrairont des données de la base. Une suite d’opérations forme une
expression algébrique relationnelle dont le résultat sera également une relation représentant le
résultat d’une requête.
L’algèbre relationnelle est importante à plusieurs titres. D’une part, elle fournit une
fondation formelle pour les opérations du modèle relationnel. D’autres part, elle sert de base pour
l’implémentation et l’optimisation des requêtes dans les systèmes de gestion de bases de données
relationnelles (SGBDR), enfin plusieurs de ses concepts sont intégrés à SQL (Standard Query
Language) , le langage de requête des SGBDR.
L’algèbre relationnelle est souvent considérée comme faisant partie du modèle relationnel.
Ses opérations peuvent être divisées en deux groupes. Un groupe comprend les opérations
ensemblistes et est issue de la théorie mathématique des ensembles. Parmi ces opérations figurent
l’union, l’intersection, la différence et le produit cartésien. L’autre groupe comprend des
opérations développées spécifiquement pour les bases de données, notamment la sélection, la
projection et la jointure.
Comme il n’est pas possible de réaliser certaines requêtes de base à l’aide des seules
opérations de l’algèbre relationnelle d’origine, des opérations supplémentaires ont été ajoutées en
raison de leur importance dans de nombreuses applications de bases de données. Parmi celles-ci
figurent les fonctions agrégats, qui permettent d’agréger des données de différentes tables, ainsi
que d’autres types de jointures et d’unions.
2.2 L’intersection :
Opération portant sur deux relations de même schéma Relation1 et Relation2 consistant à
construire une relation de même schéma Relation3 ayant pour tuples ceux appartenant à Relation1
et Relation2.
Plusieurs notations ont été introduites pour cette opération, selon les auteurs :
Re lation1 Re lation 2
Intersect (Relation1, Relation2)
And (Relation1, Relation2)
www.etudpdf.com
Module BDD : L’algèbre relationnelle Mme H.CHELLAKH
2.3 La différence :
Opération portant sur deux relations de même schéma Relation1 et Relation2 consistant à
construire une relation de même schéma Relation3 ayant pour tuples ceux appartenant à Relation1
et n’appartenant pas à Relation2.
La différence est un opérateur non commutatif : l’ordre des relations opérandes est donc
important. Plusieurs notations ont été introduites, selon les auteurs :
Relation1 - Relation2
Différence (Relation1, Relation2)
Remove (Relation1, Relation2)
Minus (Relation1, Relation2)
2.4 Le produit cartésien : (les deux relations n’ont pas nécessité d’avoir le même schéma de
relation).
Opération portant sur deux relations Relation1 et Relation2 consistant à construire une
relation Relation3 ayant pour schéma la concaténation de ceux des relations opérandes et pour
tuples toutes les combinaisons des tuples des relations opérandes.
Des notations possibles pour cette opération sont :
Relation1 x Relation2
Product (Relation1, Relation2)
Times (Relation1, Relation2)
Exemple : Etudiant1 Nom Prénom Date-nais Moyenne
Ammari Mohammed 23/11 /1988 12
Mohammadi Ayoub 07/03/1985 10.5
Barket Hocine 12/12/1982 8
Etudiant2 Nom Prénom Date-nais Moyenne
Allouche Fatima 01/02/1987 13
Mohammadi Ayoub 07/03/1985 10.5
Etudiant1 Etudiant2
Etudiant3 Nom Prénom Date-nais Moyenne
Ammari Mohammed 23/11 /1988 12
Mohammadi Ayoub 07/03/1985 10.5
Barket Hocine 12/12/1982 8
Allouche Fatima 01/02/1987 13
Etudiant1 Etudiant2
Etudiant3 Nom Prénom Date-nais Moyenne
Mohammadi Ayoub 07/03/1985 10.5
Etudiant1 - Etudiant2
Etudiant3 Nom Prénom Date-nais Moyenne
Ammari Mohammed 23/11 /1988 12
Barket Hocine 12/12/1982 8
Etudiant2 - Etudiant1
Etudiant3 Nom Prénom Date-nais Moyenne
Allouche Fatima 01/02/1987 13
Module Libellé-mod
Algo
Structure
www.etudpdf.com
Module BDD : L’algèbre relationnelle Mme H.CHELLAKH
Etudiant1 x Module
Etudiant3 Nom Prénom Date-nais Moyenne Libellé-mod
Ammari Mohammed 23/11 /1988 12 Algo
Ammari Mohammed 23/11 /1988 12 Structure
Mohammadi Ayoub 07/03/1985 10.5 Algo
Mohammadi Ayoub 07/03/1985 10.5 Structure
Barket Hocine 12/12/1982 8 Algo
Barket Hocine 12/12/1982 8 Structure
www.etudpdf.com
Module BDD : L’algèbre relationnelle Mme H.CHELLAKH
condition (Relation1)
Relation1 [Condition]
Restrict (Relation1, condition)
Exemple :
Etudiant1 Nom Prénom Date-nais Moyenne
Ammari Mohammed 23/11 /1988 12
Mohammadi Ayoub 07/03/1985 10.5
Barket Hocine 12/12/1982 8
3.3 La jointure :
L’opération de jointure sert à former des tuples uniques à partir de tuples liés provenant de
deux relations. Elle est très importante pour toute base de données comportant plusieurs relations
parce qu’elle permet de traiter des liaisons au sein de relations. On peut la définir comme suit :
La jointure est une opération consistant à rapprocher selon une condition les tuples de deux
relations Relation1 et Relation2 afin de former une troisième relation Relation3 qui contient
l’ensemble de tous les tuples obtenus en concaténant un tuple de Relation1 et un tuple de Relation2
vérifiant la condition de rapprochement.
La condition doit être du type <Attribut1> <opérateur> <Attribut2>
Où Attribut1 appartient à Relation1 et Attribut2 appartient à Relation2.
Selon le type d’opérateur on distingue :
L’équi-jointure dans le cas où l’opérateur est « = », qui est une véritable composition de
relations au sens mathématique du terme.
L’inéqui-jointure dans les autres cas, c'est-à-dire avec des opérateurs , , , , .
Dans le cas d’équi-jointure, les deux attributs égaux apparaissent chacun dans le résultat : il y a
donc duplication d’une même valeur dans chaque tuple. Afin d’éliminer cette redondance, on
définit la jointure naturelle comme suit :
La jointure naturelle est une opération consistant à rapprocher les tuples de deux relations
Relation1 et Relation2 afin de former une troisième relation Relation3 dont les attributs sont l’union
des attributs de Relation1 et Relation2, et dont les tuples sont obtenus en composant un tuple de
Relation1 et un tuple de Relation2 ayant même valeurs pour les attributs de même nom.
L’opération de jointure est représentée par l’une des notations suivantes, la condition étant
simplement omise dans le cas de jointure naturelle (c’est alors l’égalité des attributs de même
nom) :
Relation1 Relation2
Condition
Join (Relation1, Relation2, Condition)
Exemple :
Employé N°SS Nom Prénom Date- Adresse Sexe N°Sce
nais
80100 Kadri Mourad 12/02/80 Sétif M 5
72123 Mehani Ali 04/05/72 Alger M 4
59600 Mokrani Rabah 01/05/59 BBA M 5
70560 Chaib Zahia 23/12/70 BBA F 2
www.etudpdf.com
Module BDD : L’algèbre relationnelle Mme H.CHELLAKH
Service Code Sce Libellé service
1 Recherche
2 Administration
3 Finance
4 Comptabilité
5 Technique
1. Equi-jointure
Employé Service
N°Sce=CodeSce
Employé N°SS Nom Prénom Date- Adresse Sexe N°Sce Code Libellé service
nais Sce
80100 Kadri Mourad 12/02/80 Sétif M 5 5 Technique
72123 Mehani Ali 04/05/72 Alger M 4 4 Comptabilité
59600 Mokrani Rabah 01/05/59 BBA M 5 5 Technique
70560 Chaib Zahia 23/12/70 BBA F 2 2 Administration
On remarque que les attributs NSce et CodeSce sont identiques dans tous les tuples, l’un des deux
attributs est superflu.
2. Jointure naturelle :
Employé Service
Employé N°SS Nom Prénom Date- Adresse Sexe N°Sce Libellé service
nais
80100 Kadri Mourad 12/02/80 Sétif M 5 Technique
72123 Mehani Ali 04/05/72 Alger M 4 Comptabilité
59600 Mokrani Rabah 01/05/59 BBA M 5 Technique
70560 Chaib Zahia 23/12/70 BBA F 2 Administration
Une jointure naturelle équivaut à une équi-jointure suivie de la suppression des attributs superflus.
www.etudpdf.com
Module BDD : L’algèbre relationnelle Mme H.CHELLAKH
4. Les opérations dérivées :
Les opérations dérivées peuvent être obtenues par combinaison des opérations précédentes.
Cod-Mod Num-Ens
ALGO E1
MATHS01 E2
ARCHI01 E1
TM06 E3
ALGO E2
MATHS01 E1
TM06 E1
TM06 E4
On voudrait répondre à la question suivante : quels sont les numéros d’enseignants qui
enseignent tous les modules (i.e les 4 modules décrit dans la relation module) ?
On effectue d’abord une projection de la relation Module sur l’attribut Cod-Mod, dans une nouvelle
relation R1=Ens-Mod sur la relation R2.
R 2 Code Mod ( Module)
R3 R1 R 2 et sera constitué d’un seul attribut Num-Ens avec une seule valeur E1.
www.etudpdf.com
Module BDD : Le Langage SQL Mme H.CHELLAKH
Le langage SQL
1. Introduction :
Le passage au modèle physique, nous pose à priori, deux problèmes de taille :
1. Définir l’environnement matériel : spécifications de la machine, type de mémoire de
stockage…
2. Définir l’environnement logiciel : Quel SGBD relationnel doit-on utiliser ?
Cependant, l’utilisation d’un SGBD, nous dispense de toute préoccupation de l’aspect matériel.
En effet l’un des objectifs d’un SGBD est l’indépendance physique : le SGBD prend en charge les
détails techniques de stockage de données.
Cependant le choix d’un SGBD relationnel, parmi ceux disponibles sur le marché (ACCESS,
ORACLE, MICROSOFT SQL SERVER…etc.), il est vrai que le langage de définition de données,
pourrait être différent d’un SGBD à un autre.
Fort heureusement ce n’est pas le cas, la majorité des SGBD relationnels, utilisent le même
langage de définition de données. Structered Query Language : SQL est considéré comme le
standard incontournable de définition et d’interrogation de données.
Niveau Physique
S
B G
D B
D D
SQL est un langage informatique standard pour la communication avec les SGBDR. Il a été
défini par l’ANSI (Américan National Standar Institute) et l’ISO (International Standards
Organization).
Une caractéristique principale de SQL est qu’il est déclaratif et non procédural. Le
programmeur n’a pas à spécifier les étapes à suivre pour obtenir un résultat, il indique au SGBD ce
qui doit être accompli et il laisse alors le système décider par lui-même comment obtenir le résultat
souhaité.
Les instructions du langage SQL se divisent en deux catégories DDL et DML
DDL (Data Définition Langage) : Permet de créer les tables de la BD, de spécifier les
attributs, les vues, modifier la structure d’une table ou même supprimer des tables.
DML (Data Manipulation Langage) : permet de créer, modifier ou supprimer les
enregistrements (tuples) de tables déjà créer par le DDL.
SQL peut s’employer de deux manières différentes :
Interactive : Permet à l’utilisateur d’exécuter des commandes directement sur le
SGBDR et de visualiser directement les résultats.
Intégrée : Les instructions SQL font partie d’un programme écrit en langage C, C++,…
www.etudpdf.com
Module BDD : Le Langage SQL Mme H.CHELLAKH
Exemple :
Création de la table étudiant :
CREATE TABLE Etudiant (Matricule char (9), Nom-Etud char (20), Prénom-Etud char (20),
Adresse-Etud char (250)) ;
Création de la table Etud-Mod :
CREATE TABLE Etud-Mod (Matricule char (9), Cod-Mod char(6), Moyenne Number (4,2)) ;
www.etudpdf.com
Module BDD : Le Langage SQL Mme H.CHELLAKH
www.etudpdf.com
Module BDD : Le Langage SQL Mme H.CHELLAKH
SELECT <attribut1>,<attribut2>,…<attributn>
FROM <Nom-table> ;
Exemple :
Matricule Nom Prénom Adresse
52003502 Abed Karim El annasser
52003305 Benali Samir Bordj ghedir
Remarque :
Si l’on veut afficher la table sans projection, il est possible de spécifier l’ensemble des
attributs, ou plus simplement d’utiliser le caractère générique *, on écrira par exemple :
SELECT *
FROM Etudiant ;
SELECT <attribut1>,<attribut2>,…<attributn>
FROM <Nom-table>
WHERE <Condition>;
Exemple : On veut avoir la liste des étudiant admis dans un module donné.
SELECT *
FROM Etud-mod
WHERE (cod-mod=’SYS01’) and (note>=10);
Si on s’intéresse uniquement aux matricules de ces étudiants, il est également possible de
combiner la projection et la restriction dans une même requête.
SELECT Matricule
FROM Etud-mod
WHERE (cod-mod=’SYS01’) and (note>=10);
4
www.etudpdf.com
Module BDD : Le Langage SQL Mme H.CHELLAKH
Les conditions exprimées dans une restriction, sont basées sur la logique des propositions, elles
peuvent contenir des conjonctions (and), des disjonctions (or) ou des négations (not).
Chaque élément de la condition est une comparaison (=, < > ,<, >, <=, >=) entre deux attributs
de même type, ou entre un attribut et une valeur de même type.
Remarque :
Dans les comparaisons des chaînes de caractères, il est possible d’utiliser l’opérateur like, et les
caractères génériques ‘%’ et ‘ ?’, pour exprimer les requêtes du genre les noms des étudiants qui
commencent par ‘BEN’, ou dont le deuxième caractère est ‘A’.
‘%’ remplace une chaîne de caractère de taille quelconque (supérieure ou égale à 0).
‘ ?’ remplace un seul caractère
Exemple :
SELECT Matricule, Nom, Prénom SELECT Matricule, Nom, Prénom
FROM Etudiant FROM Etudiant
WHERE Nom like ‘BEN%’ ; WHERE Nom like ‘?A%’ ;
2.3. La jointure:
Supposons que l’on veuille avoir les noms des étudiants admis au module de code ‘SYS01’.
La table Etud-Mod, ne contient pas les noms des étudiants, il faudrait la mettre en lien avec la table
Etudiant, pour obtenir cette information. Il s’agit d’une opération de jointure entre ces deux tables :
www.etudpdf.com
Module BDD : Le Langage SQL Mme H.CHELLAKH
Remarque :
L’attribut Matricule existe dans les deux tables, pour lever l’ambiguïté dans ce cas nous
devons préciser les noms des tables à chaque fois que l’attribut apparaît dans la requête. Une autre
solution est d’utiliser des nom de variables associés à chaque table comme suit :
SELECT Matricule, Nom, Prénom
FROM Etud-mod EM, Etudiant E
WHERE (Cod-Mod= ‘SYS01’) and (note>= 10) and (EM.Matricule= E.Matricule) ;
La variable E est associée à la table Etudiant et la variable EM est associée à la table Etud-Mod.
Jointure par imbrication de requêtes :
Il existe d’autres façons d’exprimer la jointure, en raisonnant de façon incrémentale sur les
différentes relations induites par la jointure.
Pour obtenir le même résultat que l’exemple précédent, on pourrait exprimer la requête en langage
naturel, de la façon suivante :
Les matricules, noms, prénoms de la relation Etudiant, pour lesquels, le matricule se trouve dans la
relation Etud-Mod, avec les conditions Cod-Mod=’SYS01’ et note>= 10.
En SQL on obtiendra :
L’opérateur IN exprime l’inclusion ensembliste. Les deux ensembles comparés par cet opérateur
doivent être du même type. On ne peut pas avoir des comparaisons comme :
… WHERE Matricule IN SELECT Nom…
Ou encore :
… WHERE Matricule In SELECT *…
Une troisième solution pour exprimer la même requête, consiste à utiliser l’opérateur existentiel :
La condition associée au WHERE est vraie lorsque l’ensemble retourné par la clause
SELECT, n’est pas vide. C'est-à-dire, lorsqu’il y a au moins un matricule dans Etud-Mod qui vérifie
à la fois les conditions Cod-Mod= ‘SYS01’) and (note>= 10), et qu’il soit le même que celui de la
table Etudiant.
www.etudpdf.com
Module BDD : Le Langage SQL Mme H.CHELLAKH
2.4 L’intersection :
Il est possible d’exprimer l’intersection entre deux ensembles, à condition qu’ils aient la
même structure. Par exemple pour connaître les matricules des étudiants ayant obtenu la moyenne
en même temps dans les modules de code ‘SYS01’ et ‘BD’, on peut écrire :
SELECT Matricule
FROM Etud-Mod
WHERE (Cod-Mod=’SYS’) and (note>=10)
INTERSECT
SELECT Matricule
FROM Etud-Mod
WHERE (Cod-Mod=’BD’) and (note>=10)
Pour obtenir leurs noms, il est possible de joindre le résultat de cette jointure à la table Etudiant
comme suit :
SELECT Nom
FROM Etudiant
WHERE Matricule IN (
SELECT Matricule
FROM Etud-Mod
WHERE (Cod-Mod=’SYS’) and (note>=10)
INTERSECT
SELECT Matricule
FROM Etud-Mod
WHERE (Cod-Mod=’BD’) and (note>=10)
);
Il est possible d’exprimer la même requête sans utiliser l’opérateur INTERSECT, en exploitant la
conjonction. La solution serait:
SELECT Nom
FROM Etudiant
WHERE Matricule IN (
SELECT Matricule
FROM Etud-Mod
WHERE (Cod-Mod=’SYS’) and (note>=10))
AND Matricule IN (
SELECT Matricule
FROM Etud-Mod
WHERE (Cod-Mod=’BD’) and (note>=10));
2.5 La différence :
La différence entre deux ensembles de même structure, peut être exprimée de la même façon
que dans les langages algébriques. Par opposé à l’exemple précédent, si l’on veut avoir les
matricules et les noms des étudiants ayant obtenu la moyenne dans le premier module, et échoué
dans le deuxième module, on peut écrire :
www.etudpdf.com
Module BDD : Le Langage SQL Mme H.CHELLAKH
Ou bien :
SELECT Matricule, Nom
FROM Etudiant
WHERE Matricule IN (
SELECT Matricule
FROM Etud-Mod
WHERE (Cod-Mod=’SYS’) and (note>=10))
AND Matricule NOT IN (
SELECT Matricule
FROM Etud-Mod
WHERE (Cod-Mod=’BD’) and (note>=10)
);
Ou encore:
SELECT Matricule, Nom
FROM Etudiant E
WHERE Matricule IN (
SELECT Matricule
FROM Etud-Mod
WHERE (Cod-Mod=’SYS’) and (note>=10))
AND NOT EXISTS (
SELECT Matricule
FROM Etud-Mod EM
WHERE (Cod-Mod=’BD’) and (note>=10)
And (E.Matricule= EM.Matricule)
);
2.6 La division:
SQL ne comporte pas d’opérateur spécifique à la division. Cependant il est possible
d’exprimer la sémantique de cet opérateur algébrique, en se basant sur les opérateurs logiques.
Prenant par exemple, la requête suivante :
« Quels sont les étudiants (Matricules, Noms), qui ont obtenu une note supérieure à 10 dans
tous les modules ? »
Avant de donner la solution, nous proposons de reformuler la requête de façon plus
intuitive, par rapport aux opérateurs logiques.
Ce sont les étudiants pour lesquels, il n’y a pas de module, dans lequel ils n’ont pas une
note supérieure ou égale à 10.
8
www.etudpdf.com
Module BDD : Le Langage SQL Mme H.CHELLAKH
Exemples :
Pour afficher les noms des étudiants en majuscule, quelque soient leurs formats de saisie, on
peut écrire :
SELECT UPPER (Nom)
FROM Etudiant;
Il est également possible d’exploiter ces fonctions dans les conditions de restrictions.
SELECT adresse
FROM Etudiant
WHERE LOWER (Nom) = ‘ameur’ and LOWER (Prénom) = ‘yacine’ ;
Fonctions numériques :
Fonction Résultat
Arrondit un nombre à la précision
ROUND (number, précision)
spécifiée
Tronque le nombre à la précision
TRUNC (number, précision)
spécifiée
MOD (int, int) Reste de la division entière
www.etudpdf.com
Module BDD : Le Langage SQL Mme H.CHELLAKH
Exemple :
SELECT Matricule, Cod-Mod, ROUND (note, 2)
FROM Etud-Mod ;
Opérations sur les dates :
Fonction Résultat
Retourne la date après ajout du nombre de jours
Date+ nombre de jours
spécifié.
Retourne la date après suppression du nombre de jours
Date – nombre de jours
spécifié.
Date – Date Retourne le nombre de jours entre deux dates.
Fonction Résultat
Retourne la moyenne des valeurs de la colonne
AVG (colonne)
spécifiée.
Retourne la somme des valeurs de la colonne
SUM (colonne)
spécifiée.
Retourne le nombre d’occurrences des valeurs de
COUNT (colonne)
la colonne spécifiée dans la table.
Retourne la valeur minimale de la colonne
MIN (colonne)
spécifiée.
Retourne la valeur maximale de la colonne
MAX (colonne)
spécifiée.
Exemples :
Pour calculer la moyenne des notes de l’étudiant de matricule 52004, il suffit d’écrire :
10
www.etudpdf.com
Module BDD : Le Langage SQL Mme H.CHELLAKH
Pour calculer le nombre d’étudiants ayant une note supérieure à 10, dans le module SYS01, on
écrit :
SELECT COUNT (*)
FROM Etud-Mod
WHERE (Cod-Mod = ‘SYS01’) and (Note >=10);
Remarque :
Les fonctions de synthèse ne peuvent pas apparaître dans une clause WHERE, car celle-ci,
est évaluée pour chaque ligne, alors que la fonction concerne un groupe de lignes.
Si on s’intéresse plutôt à analyser les résultats obtenus dans Cod-Mod Matricule Note
chaque module, on pourrait écrire : BD 520001 12
BD 520004 10
SELECT Cod-Mod, Matricule, Note SYS01 520001 8
FROM Etud-Mod
SYS01 520004 14
GOUP BY Cod-Mod, Matricule, Note;
ROP 520001 6
ROP 520004 12
Cependant, quand on veut faire des analyses par rapport à des groupes de données, il est
souvent plus utile de faire abstraction de certaines colonnes, ou de les remplacer par un calcul de
synthèse.
Plus concrètement, si on veut analyser les résultats de chaque module, on pourrait
s’intéresser à la moyenne du module, et faire abstraction des matricules des étudiants.
Remarque : Une fonction de synthèse ne peut être utilisée comme facteur de groupage.
11
www.etudpdf.com
Module BDD : Le Langage SQL Mme H.CHELLAKH
La fonction AVG dans HAVING a la même interprétation que dans l’exemple précédent,
elle est évaluée à l’intérieur de chaque groupe.
Etud-Mod5 est le nom de la vue, qui peut être considérée par la suite comme une table, et interrogée
dans les requêtes. On peut par exemple obtenir les matricules des étudiants ayant obtenu une note
supérieure ou égale à 10 dans ces modules en écrivant :
SELECT matricule
FROM Etud-Mod5 (*)
WHERE Note >=10;
12
www.etudpdf.com
Module BDD : Le Langage SQL Mme H.CHELLAKH
SELECT E.Matricule, E.Nom, E.Prénom Le résultat est trié par nom, alors que le
FROM Etud-Mod EM, Etudiant E prénom est utilise pour départager des
WHERE (Cod-Mod = ‘SYS01’) and (Note >= 10) étudiants ayant le même nom.
And (EM.Matricule = E.Matricule) L’ordre d’affichage du tri est ascendant par
ORDER BY E.Nom, E.Prénom ; défaut (A..Z), si l’on veut obtenir l’ordre
inverse, il suffit de rajouter le mot réservé
DESC Comme suit :
13
www.etudpdf.com