Vous êtes sur la page 1sur 138

CONCEPTION ET MODÉLISATION Chapitre 1

D'UNE BASE DE DONNÉES


2
PLAN
1. Introduction gérérale
2. Formalismes utilisés (Modèle E/A, UML, …)
3. Dépendance et normalisation
4. Le modèle relationnel
5. Passage Modèle E/A vers Modèle
Relationnel
6. Le langage algébrique
3

INTRODUCTION GÉNÉRALE Section 1


4
INTRODUCTION GÉNÉRALE
Qu'est-ce qu'une base de données?
 C'est un ensemble structuré et organisé permettant le stockage
de grandes quantités d’informations afin d’en faciliter
l’exploitation (ajout, mise-à-jour, recherche de données).

 Ce stockage permet l’évolution indépendante des programmes


et des données.

 Sa mise en œuvre se fait au moyen d’un outil logiciel spécialisé


: Le Système de Gestion des Bases de Données (ou SGBD,
DBMS "DataBase Managment System" en englais).
5
INTRODUCTION GÉNÉRALE
La cohérence des données est la problématique fondamentale
des bases de données. les critères que doit satisfaire une base
de données sont :
 Bonne représentation du monde réel
• Reflète la réalité et les données doivent être fiables et à jour.
 Non redondance de l’information
• Unicité de l'information.
 Indépendance des programmes d’application par rapport aux
données
• Séparation entre traitement et données
 Sécurité et confidentialité des données
• Sécurité physique assurée (sauvegardée) et droits d'accès.
 Performances des applications et des requêtes
• Réponses rapides et optimisation de l’accès aux données.
6
INTRODUCTION GÉNÉRALE
Grandes classes d’utilisation des bases de données :
 BD personnelles:
• 10Ko à 100Ko
 BD professionnelles typiques:
• 100Ko – 100Go
 BD professionnelles très grandes ou Very Large DataBase
(VLDB):
• plus de 100Go
7
INTRODUCTION GÉNÉRALE
Qu'est-ce qu'un SGBD?
 Ensemble de programmes qui assure la gestion et l’accès à
une base de données.
 C'est un système client/Serveur (plusieurs utilisateurs peuvent
accéder au SGBD et ainsi manipuler les BS en même temps).
 Il permet à chaque utilisateur de:
• Mettre en forme
• Sauvegarder
• Manipuler
• Interroger
• Mettre à jour la BD, tout en garantissant: Client Client
o L’intégrité Client
o La confidentialité des données dans un environnement multiutilisateurs
o La sécurité des données
8
INTRODUCTION GÉNÉRALE
Histoire des SGBD :
 Années 1960: Premier modèle de SGBD appelés "modèle
hiérarchique".
 Fin des années 1960: Apparition du "modèle réseau"
(généralise le modèle hiérarchique).
 En 1970: Codd propose le "modèle relationnel"
 Années 1990: Introduction du "modèle objet".
 Après: Emergence du modèle "relationnel-objet" dont l’objectif
est d’étendre le modèle relationnel avec les concepts essentiels
de l’objet.  apparition de la norme SQL-3.
9
INTRODUCTION GÉNÉRALE
Modèle hiérarchique:
 Il lie les enregistrements dans une structure
arborescente de façon à ce que chaque
enregistrement n’ait qu’un seul possesseur :
lien père/fils.

Modèle réseau:
 Comme le modèle hiérarchique, ce modèle
utilise des pointeurs vers des enregistrements.
Toutefois la structure n’est plus forcément
arborescente dans le sens descendant.
10
INTRODUCTION GÉNÉRALE
Inconvénients :
 Incohérence des données :
• redondance de l’information.
 Coûts élevés :
• nécessitent de la place mémoire avec la gestion de pointeurs.
 Maintenance difficile :
• modifier, ajouter et effacer sont complexes.
• Lorsqu’on détruit un nœud tous ses fils sont également détruits.
• Possibilité de perte d’information en supprimant des données.
 Difficultés de gestion :
• Pas de gestion de panne.
• Pas de partage des données.
• Pas de confidentialité.
11
INTRODUCTION GÉNÉRALE
Modèle relationnel:
 Les données sont enregistrées dans des
tableaux à deux dimensions (lignes et
colonnes). Il existe des liens ou relations
entre les tables.
 La manipulation de ces données repose
sur la théorie mathématique des
relations.
 Le premier langage fût SEQUEL
(Structured English QUEry Language), qui
sera ensuite rebaptisé SQL (Structured
Query Language).
 A partir de la fin des années 90, les BD
relationnelles deviennent les plus
répandues.
12
INTRODUCTION GÉNÉRALE
Avantages du modèle relationnel :
 Eliminer la redondance des données.
 Centraliser et organiser correctement les données.
 Plusieurs niveaux de modélisation.
 Outils de conception.
 Administration facilitée.
13
INTRODUCTION GÉNÉRALE
Modèle objet:
 Basé sur les techniques de
l'orienté objet:
• Classe
o Propriété
o Méthode
o Evènement
• Héritage
• Composition
• Spécialisation
• Généralisation
• Polymorphisme
14
INTRODUCTION GÉNÉRALE
Les niveaux de conception d'une BD relationnel :

Réel

Modèle • Indépendant du modèle de données


conceptuel • Indépendant du SGBD

Modèle • Dépendant du modèle de données


Codasyl Relationnel Objet XML
logique • Indépendant du SGBD
• Dépendant du modèle de données • Organisation physique des données
Modèle
• Dépendant du SGBD • Structures de stockage des données
physique
• Structures accélératrices (index)
15
INTRODUCTION GÉNÉRALE
Les principaux SGBD-R par ordre décroissant de part de
marché:
 Oracle, DB2(IBM),
 SQLServer (Microsoft), Systèmes payants
 Sybase (Teradata).

 MySQL,
 PostgreSQL et Systèmes libres
 Firebird.
16
INTRODUCTION GÉNÉRALE
Les SGBD-R son basés sur une architecture ANSI/SPARC à
trois niveaux :
 Le niveau externe ou logique : accessible aux utilisateurs et
aux programmes d’applications.

 Le niveau conceptuel : permet de décrire la structure de la


base de données, en définissant les contraintes associées aux
données et les relations qui existent entre elles.

 Le niveau interne ou physique : Implantation de la BD sur les


ordinateurs (stockage des données sur disque).
17
INTRODUCTION GÉNÉRALE
Les objectifs des SGBD-R :
 Indépendance physique des données :
• Possibilité de modifier les structures de stockage (fichiers, index, chemins d’accès,…)
sans modifier les programmes.
• Ecriture des applications par des non-spécialistes des structures de stockage.
• Meilleure portabilité des applications et indépendance vis-à-vis du matériel.

 Indépendance logique des données :


• Bien qu'ils partageant la même BD, les programmes d’application ou les utilisateurs
peuvent avoir des vues différentes des données.
• Une réorganisation du schéma conceptuel ne doit pas avoir d’impact sur la vue des
utilisateurs.
18
INTRODUCTION GÉNÉRALE
Les objectifs des SGBD-R :
 Accès aux données :
• L’accès aux données se fait par un langage de manipulation de données (DML), tel
que SQL.
• Le langage doit être optimisé de manière à minimiser le nombre d’accès disques.
• Il doit être transparente pour les utilisateurs.
 Administration centralisée des données :
• toutes les données doivent être centralisées dans un lieu de stockage commun à
toutes les applications.
 Non redondance des données :
• Chaque information ne doit être représentée qu’ne seule fois dans la base,
• Eviter les problèmes lors des mises à jour.
19
INTRODUCTION GÉNÉRALE
Les objectifs des SGBD-R :
 Cohérence des données :
• Les données sont soumises à des contraintes d’intégrité pour définir un état cohérent de
la base.
• Elles doivent être exprimées simplement et vérifiées à chaque mise à jour
o Exemple :
 Salaire entre 1K€ et 50k€, ou
 Nom de type alphabétique ou
 Relations entre les données ex : prix de vente > prix d’achat.
 Partage des données :
• Intervention simultanée sur les données de la base.
 Sécurité des données :
• Associe des droits d’accès aux utilisateurs. Pour protéger l’accès à certaines données.
 Résistance aux pannes :
• Pouvoir récupérer les données après une panne,
o En récupérant l’état de la BD avant la panne,
o Soit terminer l’opération interrompue.
20

FORMALISMES UTILISÉS Section 2


(MODÈLE E/A, UML, …)
21
FORMALISMES UTILISÉS (MODÈLE ENTITÉ/ASSOCIATION)

1er niveau 2ème niveau


Base de données

Réalisation Traduction en
d’un modèle un modèle
conceptuel relationnel

Processus de modélisation
22
FORMALISMES UTILISÉS (MODÈLE ENTITÉ/ASSOCIATION)
1er niveau (dit conceptuel):
 Phase d’analyse du problème réel.
 Délicate et permet de définir les données à utiliser, leur mode
d’évolution dans le temps et les relations entre elles.
 Réalisé par des spécialistes de l’analyse.
 Exprimé dans un formalisme de type entité-association, UML ou
Merise.
2ème niveau (dit relationnel):
 Elaborer l’ensemble des objets manipulables par un SGBD-R.
 Travail est souvent réalisé par l’architecte de données, ou un
administrateur de SGBD.
 Peut être découpé en deux étapes :
• la conception de modèle logique (représentation en tables indépendantes du SGBD)
• la traduction en un modèle physique (propre à un SGBD spécifique).
23
FORMALISMES UTILISÉS (MODÈLE ENTITÉ/ASSOCIATION)
1er niveau (dit conceptuel):
 Phase d’analyse du problème réel.
 Délicate et permet de définir les données à utiliser, leur mode
d’évolution dans le temps et les relations entre elles.
 Réalisé par des spécialistes de l’analyse.
 Exprimé dans un formalisme de type entité-association, UML ou
Merise.
2ème niveau (dit relationnel):
 Elaborer l’ensemble des objets manipulables par un SGBD-R.
 Travail est souvent réalisé par l’architecte de données, ou un
administrateur de SGBD.
 Peut être découpé en deux étapes :
• la conception de modèle logique (représentation en tables indépendantes du SGBD)
• la traduction en un modèle physique (propre à un SGBD spécifique).
24
FORMALISMES UTILISÉS (MODÈLE ENTITÉ/ASSOCIATION)
Le modèle conceptuel de données (MCD), il représente :
 Les faits et les évènements qui décrivent le monde à modéliser.
Exemple : une compagnie aérienne, ses avions et ses pilotes.
 Certaines contraintes.
Exemple : un pilote ne doit voler que s’il détient une licence en cours de validité
et une qualification correspondant au type d’avion.
Un MCD est un diagramme avec des entités et des associations. Il existe
des outils pour la modélisation:
 Avec licence: Microsoft Visio, Maestro SQL, Oracle Designer, PowerAMC (de
Sybase), Erwin et ER/Studio
 Libres: MySQL Workbench et DBDesigner
Le problème le plus couramment rencontré au sein des BD mal conçues
est la redondance. Ça entraîne des incohérences en modification,
insertion et suppression de données, et rend la base peu performante.
25
FORMALISMES UTILISÉS (MODÈLE ENTITÉ/ASSOCIATION)
Le modèle Entité-Association:
 L’idée force du modèle E/A est de représenter, par un schéma
standardisé, les différents éléments constitutifs du système
d’information, appelés attributs et les relations qui les unissent,
appelées associations.
 Il suffit de décrire la réalité par une phrase :
Le sujet et le complément représentent des entités, et le
verbe l’association.
 Exemple : un utilisateur (entité) poste (association) une news
(entité).
26
FORMALISMES UTILISÉS (MODÈLE ENTITÉ/ASSOCIATION)
L'Entité:
 Une entité est un objet, une chose concrète ou abstraite qui
peut être reconnue distinctement et qui est caractérisée par
son unicité.
 Un type-entité désigne un ensemble de d’entités qui possèdent
une sémantique et propriétés communes

Représenté par
27
FORMALISMES UTILISÉS (MODÈLE ENTITÉ/ASSOCIATION)
L'association:
 Une association (ou relation) est un lien entre plusieurs entités.
Exemple : L’ABONNÉ Paul Leroy Emprunte le LIVRE "Le horla".
28
FORMALISMES UTILISÉS (MODÈLE ENTITÉ/ASSOCIATION)
Définitions:
 Les type-entités intervenant dans un type-association sont appelés
participants.
 L’ensemble de participants d’un type-association est appelé la collection
de type-association. La collection d’un type-association peut ne
comporter d’un seul type-entité.
 La dimension d’un type-association est le nombre de type-entités
contenu dans la collection.
 Un type-association est dit :
• N-aire : dans le cas général,
• Binaire : dans le cas où n=2 (la collection contient deux type-entités),
• Ternaire : dans le cas où n=3.

Les type-associations avec n>2, bien qu’existants, sont rares et


problématiques
29
FORMALISMES UTILISÉS (MODÈLE ENTITÉ/ASSOCIATION)
Attribut et valeur:
 Un attribut (ou propriété) est une caractéristique associée à un
type-entité ou à un type association.

 Chaque attribut possède une valeur compatible avec son


domaine de définition.
30
FORMALISMES UTILISÉS (MODÈLE ENTITÉ/ASSOCIATION)
Identifiant:
 Un identifiant (ou clé) d’un type-entité ou d’un type-association, est
un ensemble minimal d’attributs qui permet d’identifier chaque
entité ou association de manière unique.

 Règles:
• Chaque type-entité possède au moins un identifiant, éventuellement formé de plusieurs
attributs.
• La valeur de l'identifiant est unique
31
FORMALISMES UTILISÉS (MODÈLE ENTITÉ/ASSOCIATION)
Cardinalité:
 Les cardinalités d’une patte reliant un type-association et un
type-entité précisent le nombre de fois minimal et maximal
d’interventions d’une entité du type-entité dans une association
de type-association.
32
FORMALISMES UTILISÉS (MODÈLE ENTITÉ/ASSOCIATION)
Règles:
 La cardinalité maximale n'est pas égale à 0.
 Une cardinalité minimale est toujours 0 ou 1 et une cardinalité
maximale est toujours 1 ou n.
 Les seules couples de cardinalités admises sont :
• 0,1 : une occurrence du type-entité peut exister en étant impliquée soit dans aucune
association soit au maximum dans une seule.
• 0,n : une occurrence du type-entité peut exister en étant impliquée soit dans aucune
association soit dans plusieurs associations (sans limite).
• 1,1 : une occurrence du type-entité ne peut exister que si elle est impliquée dans
exactement une association.
• 1,n : une occurrence de type-entité ne peut exister que si elle est impliquée dans au
moins une association.
33
FORMALISMES UTILISÉS (MODÈLE ENTITÉ/ASSOCIATION)
Identifiant d'un type-association:
 Les type-associations peuvent être catégorisés en fonction des
cardinalités maximales de leurs pattes :
Catégories de
Description Exemple Autre appellation
type-association
Binaire La cardinalité maximale sur chacune de 0:1  0:1 1 vers 1
ses pattes est 1. 1:1  1:1
Fonctionnel Une cardinalité maximale est à 1 et 0:1  0,1:n 1 vers n
L'autre cardinalité maximale est à n. 1:1  1:n
Maillé La cardinalité maximale de chacune 0:n  0:n n vers n
de ses pattes est à n. 1:n  1:n

 Seuls les type-associations maillés ont des propriétés.


34
FORMALISMES UTILISÉS (MODÈLE ENTITÉ/ASSOCIATION)
Règles:
 L’identifiant d’un type-association maillé est composé des
identifiants de ses participants. Cet identifiant n’est pas
mentionné sur le modèle, il est implicite.

 Quel est l'identifiant de l'association Emprunter?


35
FORMALISMES UTILISÉS (MODÈLE ENTITÉ/ASSOCIATION)
Solution:
 Si un abonné Emprunte un même livre à
deux différentes dates, alors l’identifiant du
type-association Emprunter comptera un
doublon, ce qui est impossible.

 Pour permettre à notre modèle d’autoriser


un tel emprunt, il faut rajouter un 3ème
identifiant dateEmprunt au type-association
Emprunter. Pour cela il faut rajouter un type-
entité DATE avec comme identifiant
dateEmprunt. Ainsi nous obtenons le modèle
E/A suivant:

 Ce modèle autorise donc l’emprunt d’un


même livre par un abonné à des
différentes dates.
36
FORMALISMES UTILISÉS (MODÈLE ENTITÉ/ASSOCIATION)
Normalisation des attributs:
 Un attribut multiple ou composite sera éclater
 Un attribut ne peut être calculées ou dérivées.
 Un attribut peut-être placé dans un type-association
uniquement lorsqu’il dépend de toutes les entités liées par le
type-association.
 Un attribut énuméré devient un type-entité.
37
FORMALISMES UTILISÉS (MODÈLE ENTITÉ/ASSOCIATION)
Normalisation des attributs:
38
FORMALISMES UTILISÉS (MODÈLE ENTITÉ/ASSOCIATION)
Normalisation des attributs:
39

DÉPENDANCE ET NORMALISATION Section 3


40
QU’EST-CE QUE LA NORMALISATION ?
Normaliser une relation consiste à la représenter sous une
forme qui respecte certains critères assurant l’intégrité
des données (correspondance au réel) et évitant au
concepteur de la base des erreurs graves

La théorie de la normalisation propose des méthodes


systématiques visant à assurer la cohérence de cette
représentation.
41
NÉCESSITÉ DE LA NORMALISATION (1)
Soit la relation
R (produit, client, adresse, date, quantité_commandée, montant)
produit client adresse date quantité_commandée montant
Cassettes audio Dupuis Lille 10/02/01 100 1000
CD-ROM Dupuis Lille 15/02/01 150 1500
Disquettes Dupuis Lille 30/02/01 200 400
CD-ROM Martin Marseille 01/03/01 15 150
CD-ROM Dubois Paris 02/03/01 50 500
Disquettes Dupont Lyon 05/03/01 300 600

Cette relation pose des problèmes...


42
NÉCESSITÉ DE LA NORMALISATION (2)
1. L’adresse du client est répétée autant de fois qu’il y a de
commandes

redondance des informations

anomalie de modification

2. Si Martin annule sa commande, on perd son nom et son


adresse…

anomalie de suppression
43
NÉCESSITÉ DE LA NORMALISATION (3)
1. Si on insère la ligne (Disquettes, Dubois, Dijon,
10/03/01, 100, 200), Dubois aura deux adresses

anomalie d'insertion
44
NÉCESSITÉ DE LA NORMALISATION (4)
Cette relation n’est donc pas cohérente, alors que la base
formée des trois relations :

R1 (code_client, nom_client, adresse)


R2 (code_produit, nom_produit, prix_unitaire)
R3(code_commande, code_client, date, code_produit, quantité)

n’aura aucun problème de cohérence.


45
NÉCESSITÉ DE LA NORMALISATION (5)
code_ client adresse code_ produit prix_
client produit unitaire
CL001 Dupuis Lille P0001 Cassettes audio 10
CL002 Martin Marseille P0002 CD-ROM 10
CL003 Dubois Paris P0003 Disquettes 2
CL004 Dupont Lyon

code_ code_ date code_ quantité


commande client produit
C0001 CL001 10/02/01 P0001 100
C0002 CL001 15/02/01 P0002 150
C0003 CL001 30/02/01 P0003 200
C0004 CL002 01/03/01 P0001 15
C0005 CL003 02/03/01 P0003 50
C0006 CL004 05/03/01 P0001 300
46
BUT DE LA NORMALISATION

Fixer des règles


permettant de passer
de la première représentation (incohérente)
à la deuxième (cohérente).
47
DÉPENDANCES FONCTIONNELLES (1)
Une dépendance fonctionnelle (DF) traduit le fait qu’à une valeur
d’une donnée, on associe dans une relation, à un instant donné, une
valeur au plus d’une autre donnée.
Exemple
Dans la relation VOL, à une certaine date, un vol ne peut être
associé qu’à un seul pilote. Il y a une DF entre (NUMVOL, JDEP) et
NUMPIL. On écrit

(NUMVOL, JDEP)  NUMPIL


(NUMVOL, JDEP) est la source de la DF, NUMPIL en est le but.
48
DÉPENDANCES FONCTIONNELLES (2)
Remarque
Il s’agit bien d’une dépendance, car s’il existe une occurrence où
NUMVOL = V0010, JDEP=15/5/2004 et NUMPIL = P0005,
alors
on ne peut pas introduire une nouvelle occurrence où
NUMVOL = V0010, JDEP=15/5/2004 et NUMPIL = P0001
sans supprimer la première (problème de l’unicité de la clé).
49
CLÉ D’UNE RELATION : DÉFINITION
Lorsque, dans une relation, un attribut ou un groupe
d’attributs est source de plusieurs DF ayant respectivement
pour buts chacun des autres attributs de la relation, cet
attribut ou ce groupe d’attributs est appelé clé de la
relation.
Un attribut est appelé attribut clé s’il fait partie d’au
moins une clé.

Un attribut est dit attribut non clé s’il ne participe à


aucune clé.
50
CLÉ D’UNE RELATION : EXEMPLES
Dans la relation PILOTE (numpilote, nom, prenom),
on a deux DF de source NUMPILOTE :
NUMPILOTE  NOM
NUMPILOTE  PRENOM

NUMPILOTE est donc bien la clé de la relation PILOTE et


le seul attribut clé.
51
CLÉ D’UNE RELATION : EXEMPLES
Dans la relation
VOL (numvol, depart, arrivee, numav, numpil, jdep, hdep, jarr, harr),
on a sept DF de source (NUMVOL, JDEP) :
(NUMVOL, JDEP)  DEPART (NUMVOL, JDEP)  ARRIVEE
(NUMVOL, JDEP)  NUMAV (NUMVOL, JDEP)  NUMPIL
(NUMVOL, JDEP)  HDEP (NUMVOL, JDEP)  JARR
(NUMVOL, JDEP)  HARR
Le couple (NUMVOL, JDEP) est donc bien la clé de la
relation VOL. Il y a donc deux attributs clé.
52
DÉPENDANCE FONCTIONNELLE ÉLÉMENTAIRE ET DIRECTE
Soit X un groupe d’attributs et Y un attribut unique
n’appartenant pas à X.
La DF X  Y est dite élémentaire si aucun sous-ensemble
de X ne suffit pour être source de la DF (X est donc la plus
petite quantité d’information permettant de déduire Y).
Une DF de source A et de but B est dite directe s’il n’existe
pas d’attribut C tel que A  C et C  B.
53
PROPRIÉTÉS DES DÉPENDANCES FONCTIONNELLES
Les règles d’Amstrong
Réflexivité : si X est inclus dans Y, alors Y  X
Augmentation : si X  Y alors X, W  Y, W
Transitivité : si X  Y et Y  Z alors X  Z
Les règles qui s’en déduisent
Union : si X  Y et X  Z alors X  Y, Z
Décomposition : si X  Y, Z alors X  Y et X  Z
Pseudo-transitivité : si X  Y et W,Y  Z alors X,W  Z
54
PREMIÈRE FORME NORMALE : DÉFINITION
Une relation est dite normalisée ou en première forme normale
(1 FN) si un même attribut n’est pas représenté plusieurs fois et si
un attribut n’est pas décomposable en d’autres attributs.
nom diplôme enfants
Exemple de relation prénom date naissance
Dupuis bac Luc 1986
non normalisée licence André 1989
Dupont bac Jeanne 1991
ingénieur Lucie 1995

 l’attribut enfants est décomposable en deux attributs,


 Les attributs diplôme et enfant sont représentés plusieurs fois
pour une même personne.
55
PREMIÈRE FORME NORMALE : DÉFINITION
La relation
VENTE (num_client, num_article, nom_client, nom_article)
où (num_client, num_article) est la clé, est en première forme
normale.

Les dépendances fonctionnelles sont :


 (num_client, num_article)  nom_client
 (num_client, num_article)  nom_article.
56
DEUXIÈME FORME NORMALE : DÉFINITION
Une relation est en deuxième forme normale (2 FN) si
 elle est en 1 FN et
 si toutes les DF issues de la clé sont élémentaires.
Exemple de relation qui n’est pas en 2 FN
VENTE (num_client, num_article, nom_client, nom_article) est en 1
FN, mais pas en 2 FN car des deux DF :
 (num_client, num_article)  nom_client
 (num_client, num_article)  nom_article
on peut extraire les DF élémentaires :
 num_client  nom_client
 num_article  nom_article.
57
DEUXIÈME FORME NORMALE : EXEMPLE
La relation
REPRESENTANT (num_client, nom_client, num_représentant, nom_représentant)
où num_client est la clé, est en 2FN car les trois DF qui en
découlent :
 num_client  nom_client
 num_client  num_représentant
 num_client  nom_représentant
sont toutes les trois élémentaires.
58
TROISIÈME FORME NORMALE : DÉFINITION
Une relation est en troisième forme normale (3 FN) si
1. elle est en deuxième forme normale (2 FN) et
2. si toutes les DF issues de la clé sont directes.

Alors
 aucune DF n’est issue d’un sous-ensemble de la clé.
 aucune DF n’est issue d’un attribut non clé vers un autre attribut
non clé.
59
TROISIÈME FORME NORMALE : DÉMONSTRATION (1)
Aucune DF n’est issue d’un sous-ensemble de la clé.

En effet,
si X, Y, Z forment la clé et s’il existe une DF : Y  U
alors
X, Y, Z  Y  U et la DF X, Y, Z  U n’est donc pas
directe.
60
TROISIÈME FORME NORMALE : DÉMONSTRATION (2)
Aucune DF n’est issue d’un attribut non clé vers un autre
attribut non clé.
En effet,
si X, Y forment la clé et s’il existe une DF : Z  U (Z et U
non clés)
alors
X, Y  Z  U et la DF X, Y  U n’est donc pas directe.
61
TROISIÈME FORME NORMALE : EXEMPLES
Les relations
 CLIENT (num_client, nom_client, adresse)
 VENTE (num_commande, num_article, quantité)
sont en 3 FN.
On a les DF élémentaires et directes :
 num_client  nom_client
 num_client  adresse
 num_commande, num_article  quantité.
62

LE MODÈLE RELATIONNEL Section 4


63
OBJECTIFS D’UN MODÈLE RELATIONNEL
Les principaux objectifs d’un modèle relationnel sont :
 utiliser des structures de données simples
• une table relationnelle est un tableau
 proposer des langages permettant d’accéder aux données de
manière assez naturelle
• QBE, SQL
 permettre à chaque utilisateur d’avoir une vue de la base de
données appropriée à ses besoins.
64
LE MODÈLE RELATIONNEL (1)
Le concept de base du modèle relationnel est la relation,
de structure tabulaire
 Une relation a plusieurs attributs
 Le degré de la relation est le nombre de ces attributs
Exemple : la relation PRODUIT, de degré 3, comporte les
attributs : num_produit, nom_produit et stock
num_produit nom_produit stock
N101 table 25
N201 chaise 120
N251 fauteuil 36
N541 lit 12
… … …
65
LE MODÈLE RELATIONNEL (2)
Occurrence : chaque ligne du tableau (un n-uplet) correspond
à une occurrence de la relation.
Cardinalité : nombre d’occurrences de la relation dans la
base. La relation PRODUIT est donc de cardinalité 4.
Clé : chaque relation contient un attribut particulier (ou un
ensemble d’attributs) appelé clé, dont la valeur est unique.
On représente symboliquement une relation R par un schéma
SR de la forme : R(clé, a1, a2, …, an).

On aura donc :
PRODUIT(num_produit, nom_produit, stock).
66
EXEMPLE DE BD RELATIONNELLE (1)
Relation VOL (numvol, depart, arrivee, numav, numpil, jdep, hdep, jarr, harr)
 numvol : numéro du vol (clé)
 depart : ville de départ
 arrivee : ville d’arrivée
 numav : numéro d’avion
 numpil : numéro du pilote
 jdep : jour de départ (clé)
 hdep : heure de départ
 jarr : jour d’arrivée
 harr : heure d’arrivée
NUMVOL DEPART ARRIVEE NUMAV NUMPIL JDEP HDEP JARR HARR
V0001 Paris San Francisco A0001 P0002 15/05/2004 10:00 16/05/2004 09:30
V0002 Londres Moscou A0003 P0001 15/05/2004 10:30 15/05/2004 17:00
V0003 Berlin Madrid A0002 P0003 15/05/2004 11:15 15/05/2004 18:00
V0004 Londres Madrid A0004 P0006 16/05/2004 06:20 16/05/2004 09:30
V0005 Bruxelles Rome A0006 P0005 16/05/2004 10:00 16/05/2004 15:10
V0006 Berlin Amsterdam A0005 P0001 16/05/2004 14:30 16/05/2004 17:00
V0007 Paris Bruxelles A0001 P0002 16/05/2004 18:00 16/05/2004 20:00
V0008 New York Paris A0001 P0003 17/05/2004 03:00 17/05/2004 21:30
V0009 Paris Bruxelles A0004 P0006 17/05/2004 06:00 17/05/2004 07:00
V0010 Berlin Madrid A0002 P0004 17/05/2004 08:00 17/05/2004 11:00
67
EXEMPLE DE BD RELATIONNELLE (2)
Relation PILOTE(numpilote, nom, prenom) NUMPILOTE NOM PRENOM
 numpilote : numéro du pilote (clé) P0001 Dupuis Antoine
P0002 Simon Georges
 nom : nom du pilote P0003 François Luc

 prenom : prénom du pilote P0004


P0005
André
Arthur
Georges
Louis
P0006 Mathieu François

Relation AVION(numavion, type, cap)


NUMAVION TYPE CAP
 numavion : numéro de l’avion (clé) A0001 Boeing 747 420
A0002 Airbus 320 300
 type : type de l’avion A0003 Airbus 300 280

 cap : capacité de l’avion A0004


A0005
Boeing 737
DC 10
250
120
A0006 Boeing 747 410
68

PASSAGE MODÈLE E/A VERS MODÈLE Section 5


RELATIONNEL
69
PASSAGE DU MODÈLE E/A AU MODÈLE RELATIONNEL (1)
Il y a trois règles de passage.
Règle 1:
 Chaque type-d’entité donne naissance à une relation
du même nom.
 Chaque propriété du type-entité devient un attribut de
la relation.
 L’identifiant du type-d’entité devient la clé de la
relation.
70
PASSAGE DU MODÈLE E/A AU MODÈLE RELATIONNEL (2)
Règle 2:
Si un type-association n’a aucune patte de cardinalité
maximale égale à 1, alors:
 ce type-association devient une relation
 chaque propriété du type-association devient un attribut de la
relation
 l’identifiant du type-association devient la clé de la relation.
71
PASSAGE DU MODÈLE E/A AU MODÈLE RELATIONNEL (3)
Règle 3:
Si un type-association a une patte dont la cardinalité
maximale est égale à 1, il s’agit d’une dépendance
fonctionnelle.
 Le type-association n’est pas transformé en relation, mais est
matérialisé par l’ajout d’un attribut dans la relation source
de la dépendance fonctionnelle.
 Cet attribut est la clé du type-entité but de la dépendance
fonctionnelle.
72
PASSAGE DU MODÈLE E/A AU MODÈLE RELATIONNEL (4)
Type d’association “achète”

Le modèle relationnel sera :


 CLIENT(num_client, nom_client, adresse)
 FOURNISSEUR(num_fournisseur, nom_fournisseur, adresse)
auquel s’ajoute la relation issue du type-association “achète” :
 ACHAT(num_client, num_fournisseur).
73
PASSAGE DU MODÈLE E/A AU MODÈLE RELATIONNEL (4)
Type d’association “propriétaire”

Le modèle relationnel sera :


 PERSONNE (identifiant_personne, …)
 APPARTEMENT (identifiant_appartement, …)
auquel s’ajoute la relation, issue du type d’association
“propriétaire” :
 PROPRIETAIRE(identifiant_personne, identifiant_appartement).
74
PASSAGE DU MODÈLE E/A AU MODÈLE RELATIONNEL (4)
Type d’association “commande”

Dépendance
Fonctionnelle
75
PASSAGE DU MODÈLE E/A AU MODÈLE RELATIONNEL (4)
Type d’association “commande”

 Le type d’association “Passée par” est une dépendance


fonctionnelle.
 Il n’est donc pas transformé en relation : on ajoute un attribut
dans la source de la DF (donc dans le type-entité Commande).
 L’attribut ajouté est la clé du type-entité but de la DF, donc
l’attribut num_client est clé de Client.
76
PASSAGE DU MODÈLE E/A AU MODÈLE RELATIONNEL (4)
Type d’association “commande”
Le modèle relationnel sera donc :
 COMMANDE (num_commande, date, num_client*)
 CLIENT (num_client, nom, adresse)
 ARTICLE (num_article, designation, prix)
auquel s’ajoute la relation issue de “Concerne” que l’on
appellera DETAIL_COMMANDE :
 DETAIL_COMMANDE (num_commande, num_article, quantité).
77
PASSAGE DU MODÈLE E/A AU MODÈLE RELATIONNEL (4)
Type d’association “enseignement”

Dépendance
Fonctionnelle
78
PASSAGE DU MODÈLE E/A AU MODÈLE RELATIONNEL (4)

Type d’association “enseignement”


 Le type-association “Enseignant” est une DF. Il
n’est pas transformé en relation, mais on ajoute
dans la relation source de la DF (c’est-à-dire
dans UV) l’attribut clé (code_professeur) du
type-entité but (Professeur).
79
PASSAGE DU MODÈLE E/A AU MODÈLE RELATIONNEL (4)
Type d’association “enseignement”
Le modèle relationnel sera donc :
 ELEVE(code_eleve, nom, prenom)
 UV(code_UV, nom, annee, code_professeur*)
 PROFESSEUR(code_professeur, nom, prenom)
auquel s’ajoute la relation issue de “A suivi” que l’on
appellera NOTE :
 NOTE(code_eleve, code_UV, note).
80

LE LANGAGE ALGÉBRIQUE Section 6


81
INTRODUCTION
L’algèbre relationnelle (AR) est une partie autonome des
mathématiques.
 Elle es constituée d’un ensemble de règles et d’opérations
formelles qui permettent de manipuler les relations (au sens du
modèle relationnel).

 Ainsi, les relations sont à la base de l’AR. Toutes les opérations


présentent ces caractéristiques :
• à l’entrée se trouve une ou plusieurs relations;
• le résultat est toujours une relation (qu’elle contienne plusieurs éléments, un seul
ou qu’elle soit vide)
82
ELÉMENTS FONDAMENTAUX
Formellement, la relation est définie comme suit
dans le cadre de l’AR :
 À la base, on retrouve la notion de domaine qui
détermine la nature d’une.
 Une relation est d’abord définie par son schéma, c’est-
à-dire la définition de sa structure.
 Une relation possède ensuite une extension qui est
constituée de tuples.
 une relation possède une clé définie par un ou une
composition minimale d’attributs
83
LES OPÉRATEURS DE L'AR
L’algèbre relationnelle permet de manipuler les
informations afin d’extraire efficacement de
l’information à partir d’une base de données
constituée de plusieurs relations.
Il existe plusieurs familles d’opérateurs :
 opérateurs unaires;
 opérateurs ensemblistes;
 opérateurs de jointure;
 opérateurs et fonctions arithmétiques;
 opérateurs et fonctiouns sur les chaînes de caractères;
 opérateurs d’agrégation(de regroupement).
84
LES OPÉRATEURS UNAIRES – LA PROJECTION
La projection est l’opérateur qui permet de
sélectionner des attributs selon le prédicat donné.
Notation :

 Interprétation : la relation R’ correspond à la projection des


attributs a1 et a2 de la relation R.
 On remarque qu’il est possible que le résultat soit sans clé
primaire définie. Dans ce cas, le résultat défini
automatiquement une clé primaire par la composition de tous
les attributs restant et élimine tous les doublons existants.
85
LES OPÉRATEURS UNAIRES – LA PROJECTION
86
LES OPÉRATEURS UNAIRES – LA SÉLECTION
La sélection (parfois appelé restriction) est
l’opérateur qui permet de sélectionner des tuples
selon le prédicat donné.
Notation :

 Interprétation : la relation R’ correspond à la sélection des


tuples de R respectant la ou les conditions données.
 Les conditions sont déterminées par des opérateurs appliqués
sur les valeurs des attributs
87
LES OPÉRATEURS UNAIRES – LA SÉLECTION
88
LES OPÉRATEURS UNAIRES – LE SYNONYME
Le synonyme (souvent appelé l’alias ou le renommage) est
l’opérateur qui permet de donner un nouveau nom à un
attribut existant.
Notation :

 Interprétation : la relation R’ correspond en tout point à la relation


R à la différence où l’attribut a se nomme maintenant b.
 Cet opérateur peut devenir très utile pour préciser le rôle d’un
attribut ou pour lever l'ambiguïté d’une attribut lorsqu’un opérateur
met en commun deux relations ayant des noms d’attributs similaires.
89
LES OPÉRATEURS UNAIRES – LE SYNONYME
90
LES OPÉRATEURS ENSEMBLISTE – L'UNION
L’union est un opérateur binaire permettant de produire
une relation R’ avec tous les tuples appartenant à R1 ou à
R2.
Notation :

 R1 et R2 doivent être de même schéma sinon l’union est


impossible. R’ est de même schéma.
 L’union élimine tous les doublons existants.
 Cet opérateur est commutatif.
91
LES OPÉRATEURS ENSEMBLISTE – L'UNION
92
LES OPÉRATEURS ENSEMBLISTE – L'INTERSECTION
L’intersection est un opérateur binaire permettant de
produire une relation R’ avec tous les tuples appartenant
à R1 et à R2 à la fois.
Notation :

 R1 et R2 doivent être de même schéma sinon l’intersection est


impossible. R’ est de même schéma.
 Cet opérateur est commutatif.
93
LES OPÉRATEURS ENSEMBLISTE – L'INTERSECTION
94
LES OPÉRATEURS ENSEMBLISTE – LA DIFFÉRENCE
La différence est un opérateur binaire permettant de
produire une relation R’ avec tous les tuples appartenant
à R1 et qui n'appartiennent pas à R2.
Notation :

 R1 et R2 doivent être de même schéma sinon la différence


est impossible. R’ est de même schéma.
 Cet opérateur n'est pas commutatif.
95
LES OPÉRATEURS ENSEMBLISTE – LA DIFFÉRENCE
96
LES OPÉRATEURS ENSEMBLISTE – LA DIFFÉRENCE
97
LES OPÉRATEURS ENSEMBLISTE – LA DIVISION
La division est un opérateur binaire (complexe) permettant
de produire une relation R’ qui inclue tous les tuples de R1
qui ont un lien total vers R2 (c’est-à-dire, il existe un lien
de R1 à R2 pour chaque instance de R1 et pour chaque
valeur de R2).

Notation :

 Cet opérateur n'est pas commutatif.


98
LES OPÉRATEURS ENSEMBLISTE – LA DIVISION
99
LES OPÉRATEURS ENSEMBLISTE – LE PRODUIT CARTÉSIEN
Le produit cartésien est un opérateur binaire permettant
de produire une relation R’ avec tous les tuples qui
appartiennent à R1 combinés à chacun des tuples de R2.
De plus, le schéma de R’ est l’union des schémas de R1 et
R2.
Notation :

 Cet opérateur n'est pas commutatif.


 Attention, le résultat obtenu n’est pas garantie de sens.
 C’est ce qu’on fait du résultat qui donne du sens au résultat.
100
LES OPÉRATEURS ENSEMBLISTE – LE PRODUIT CARTÉSIEN
101
LES OPÉRATEURS ENSEMBLISTE – LE PRODUIT CARTÉSIEN
 L’opérateur de produit cartésien est au cœur de l’algèbre
relationnelle et donc des bases de données relationnelles.
 Néanmoins, nous verrons que cet opérateur est rarement utilisé
tel quel étant donné sa très grande inefficacité.
 En effet, pensez à deux relations ayant chacune 10 000 et
750 000 tuples. Le résultat obtenu serait est une relation de
15 000 000 000 de tuples!
102
LES OPÉRATEURS DE JOINTURE
Les jointures (parfois dérivé de l’anglais et appelé
jonction), permettent d’effectuer un ensemble d’opérations
de base afin de maximiser la combinaison de deux
relations.
Il existe plusieurs types de jointure et elles sont regroupées
principalement en deux catégories :
 jointures internes (théta-jointure, équi-jointure, jointure
naturelle, semi-jointure et anti-jointure);
 jointure externes (jointure externe entière, jointure externe
gauche et jointure externe droite).
103
LES OPÉRATEURS DE JOINTURE – THÉTA-JOINTURE
La théta-jointure est l’opération qui consiste à appliquer à
la fois un produit cartésien et une sélection.
Notation :

 Interprétation (même sens mathématique*) :

 Lorsque la théta-jointure n’a exclusivement que des opérateurs


de rapprochement, on la nomme équi-jointure.
104
LES OPÉRATEURS DE JOINTURE – THÉTA-JOINTURE
105
LES OPÉRATEURS DE JOINTURE – LA JOINTURE NATURELLE
La jointure naturelle est une équi-jointure dont la condition
de rapprochement concerne tous les attributs de même nom
et de même domaine.
De plus, une seule occurrence des attributs communs est
gardée.

Notation :
106
LES OPÉRATEURS DE JOINTURE – LA JOINTURE NATURELLE
107
LES OPÉRATEURS DE JOINTURE – LA SEMI-JOINTURE
La semi-jointure est une jointure naturelle pour laquelle on
ne garde que les attributs de R1 (semi-jointure de gauche)
ou de R2 (semi-jointure de droite).

Notation :
 semi-jointure de gauche

 semi-jointure de droite
108
LES OPÉRATEURS DE JOINTURE – LA SEMI-JOINTURE
109
LES OPÉRATEURS DE JOINTURE – LA SEMI-JOINTURE
110
LES OPÉRATEURS DE JOINTURE – L'ANTI-JOINTURE
L’anti-jointure est une semi-jointure retournant le
complément des tuples sélectionné.

Notation :
 anti-jointure de gauche

 anti-jointure de droite
111
LES OPÉRATEURS DE JOINTURE – L'ANTI-JOINTURE GAUCHE
112
LES OPÉRATEURS DE JOINTURE – L'ANTI-JOINTURE DROITE
113
LES OPÉRATEURS DE JOINTURE – JOINTURE EXTERNE
Les trois types de jointures externes sont toutes basées sur le même
principe (qu’on nomme jointure externe entière).
Les jointures externes sont des opérateurs qui créent une nouvelle
relation R à partir du produit cartésien de R1 et R2. De plus, on
identifie les tuples qui correspondent au prédicat donnés. Les tuples ne
correspondant pas au prédicat sont mis à une valeur nulle.

Notation :
 Jointure externe entière

 jointure externe gauche

 jointure externe droite


114
LES OPÉRATEURS DE JOINTURE – JOINTURE EXTERNE

 Étape 1: produit cartésien


115
LES OPÉRATEURS DE JOINTURE – JOINTURE EXTERNE
 Étape 2 : en considérant chaque tuple de R1, on identifie les
tuples qui ne trouvent pas de correspondant dans R2 et on met
les attributs propres à R2 égale à nulle.
116
LES OPÉRATEURS DE JOINTURE – JOINTURE EXTERNE
 Étape 3 : en considérant chaque tuple de R2, on identifie les
tuples qui ne trouvent pas de correspondant dans R1 et on met
les attributs propres à R1 égale à nulle.
117
LES OPÉRATEURS DE JOINTURE – JOINTURE EXTERNE
 Étape 4 : on supprime les doublons.
118
LES OPÉRATEURS DE JOINTURE – JOINTURE EXTERNE
 Étape 5 : dans le cadre d’une jointure naturelle, on supprime
les occurrences des attributs en double.
 En regardant ce résultat, on peut identifier rapidement:
• les producteurs qui ne produisent pas (Perrier),
• les produits qui n’on aucun producteur (maïs) et finalement
• les producteurs qui produisent associés à leurs produits.
119
LES OPÉRATEURS DE JOINTURE – JOINTURE EXTERNE
 Les jointures externes gauches et droites suppriment les tuples concernés
par l’étape 3 au lieu de mettre les valeurs à nulles.
120
LES OPÉRATEURS ET LES FONCTIONS ARITHMÉTIQUES
On utilise les opérateurs et les fonctions arithmétiques dans
les expressions algébriques pour :
1. les opérateurs de l’AR les nécessitant (sélection et
jointures) :

2. modifier les valeurs numériques des attributs utilisés :


121
LES OPÉRATEURS ET LES FONCTIONS ARITHMÉTIQUES
1. Opérateurs conditionnels: 2. Opérateurs arithmétiques 3. Fonctions
 = (égal)  + (addition)  ABS, SIGN
 <> (différent)  - (soustraction ou val. Nég.)  PI, DEGREES, RADIANS
 < (plus petit)  * (multiplication)  COS, SIN, TAN
 <= (plus petit ou égal)  / (division)  ACOS, ASIN, ATAN, ATAN2
 > (plus grand)  ^ (exposant)  LOG, LOG2, LOG10, LN
 >= (plus grand ou égal)  % (pourcentage)  POW, EXP
 div (division entière)  RAND
 mod (modulo)  ROUND, FLOOR, CEIL
122 OPÉRATEURS ET FONCTIONS SUR LES CHAINES DE
CARACTÈRES
On utilise l’opérateur sur les chaînes de caractères LIKE
afin d’offrir plus de flexibilité que l’opérateur de
comparaison habituel.
 L’opérateur LIKE permet des caractères spéciaux permettant :
• de remplacer le caractère «_» par un caractère quelconque à la position
déterminée;
• de remplacer le caractère «%» par une chaîne de caractères de longueur
quelconque à la position déterminée;
 Attention, les opérateurs conditionnels standards sont toujours
disponibles pour les chaînes de caractères.
123 OPÉRATEURS ET FONCTIONS SUR LES CHAINES DE
CARACTÈRES
Exemple: Fournir les tuples dont
1. le nom Tremblay

2. les noms de 6 caractères mais débutant par la lettre T

3. les noms commençant par T (longueur quelconque)

4. les noms terminant par y (longueur quelconque)

5. les noms ayant un a comme deuxième lettre


124 OPÉRATEURS ET FONCTIONS SUR LES CHAINES DE
CARACTÈRES
Les fonctions de transformations habituelles sur les chaînes de
caractères sont aussi disponibles.
 LENGTH (longueur de la chaîne de caractères)
 LOWER (mise en minuscule)
 UPPER (mise en majuscule)
 CONCAT (concaténation de plusieurs chaînes de car.)
 LEFT (les n caractères de gauche)
 RIGHT (les n caractères de droite)
 MID (une sous chaîne)
 …
125
OPÉRATEURS D'AGRÉGATION
On utilise les opérateurs d’agrégation afin d’exécuter de simples
calculs statistiques sur un ensemble de données.
Ces opérateurs font un calcul sur un ensemble de données et
retourne une seule valeur.
Les fonctions suivantes sont disponibles :
 COUNT (nombre de valeurs);
 MIN (valeur minimum);
 MAX (valeur maximum);
 SUM (somme des valeurs);
 AVG (valeur moyenne).
126
OPÉRATEURS D'AGRÉGATION
Notation :

Interprétation : la relation R’ correspond aux valeurs


calculées par f1 et f2 des regroupements faits sur les
attributs a1 et a2 de la relation R.
 Si aucun attribut de regroupement n’est spécifié alors les
fonctions s’appliquent sur tous les tuples à la fois.
 Le nom des attributs de sortie est constitué de la concaténation
de la fonction et de l’attribut spécifié.
127
OPÉRATEURS D'AGRÉGATION
128
NOTE COMPLÉMENTAIRE SUR LES OPÉRATEURS
1. Pour tous les opérateurs, il est possible de nommer les
attributs de la relation résultat en les déclarant
directement sur la structure de sortie.
2. La déclaration doit respecter le même nombre
d’attributs que le schéma de sortie le requiert.
3. Aussi, l’ordre des noms données dans la déclaration est
appliqué dans le même ordre aux colonnes de sortie.
129
NOTE COMPLÉMENTAIRE SUR LES OPÉRATEURS
130
EXERCICE 1
Quel est le résultat de la requête Q3 suivante en
considérant l’instance de la relation Enseignant ?

Q3 = Nom (Prénom = ‘Jean’ (Enseignant) )


131
EXERCICE 2
Quel est le résultat de la requête Q4 suivante en
considérant les instances des relations ci-dessous ?
132
EXERCICE 3
Soit une base de données composée des relations suivantes:
 Emprunt(Personne, Livre, DateEmprunt, DateRetourPrevue, DateRetourEffective)
 Retard(Personne, Livre, DateEmprunt, PenalitéRetard)
Exprimer les requêtes suivantes en algèbre relationnelle
1. Quelles sont les personnes ayant emprunté le livre "Recueil Examens BD" ?
2. Quelles sont les personnes n'ayant jamais rendu de livre en retard ?
3. Quelles sont les personnes ayant emprunté tous les livres (empruntés au moins une
fois) ?
4. Quels sont les livres ayant été empruntés par tout le monde (i.e. tous les
emprunteurs) ?
5. Quelles sont les personnes ayant toujours rendu en retard les livres qu'elles ont
empruntés ?
133
EXERCICE 3 - CORRECTION
1. Quelles sont les personnes ayant emprunté le livre
"Recueil Examens BD" ?
Personne(σLivre='Recueil Examen BD'(Emprunt))
2. Quelles sont les personnes n'ayant jamais rendu de livre
en retard ?
Personne(Emprunt)-Personne(Retard)
134
EXERCICE 3 - CORRECTION
3. Quelles sont les personnes ayant emprunté tous les livres
(empruntés au moins une fois) ?
Personne,Livre(Emprunt) ÷ Livre(Emprunt)

4. Quels sont les livres ayant été empruntés par tout le


monde (i.e. tous les emprunteurs) ?
Personne,Livre(Emprunt) ÷ Personne(Emprunt)
135
EXERCICE 3 - CORRECTION
5. Quelles sont les personnes ayant toujours rendu en
retard les livres qu'elles ont empruntés ?

R1=Personne,Livre,DateEmprunt(Emprunt)
R2= Personne,Livre,DateEmprunt(Retard)
R3= Personne(R1-R2)
R4= Personne(Emprunt)-R3
136
EXERCICE 4
Soit la BD pour la gestion des spectacles suivante:
 Spectacle(Spectacle_ID, Titre, DateDéb, Durée, Salle_ID, Chanteur)
 Concert (Concert_ID, Date, Heure, Spectacle_ID)
 Salle (Salle_ID, Nom, Adresse, Capacité)
 Billet (Billet_ID, Concert_ID, Num_Place, Catégorie, Prix)
 Vente (Vente_ID, Date_Vente, Billet_ID, MoyenPaiement)

Exprimez les requêtes suivantes en algèbre relationnelle.


1. Quelles sont les dates du concert du chanteur Corneille au Zenith ?
2. Quels sont les noms des salles ayant la plus grande capacité ?
3. Quels sont les chanteurs n'ayant jamais réalisé de concert dans la salle Cygale ?
4. Quels sont les chanteurs ayant réalisé au moins un concert dans toutes les salles ?
5. Quels sont les dates et les identificateurs des concerts pour lesquels il ne reste aucun billet
invendu ?
137
EXERCICE 4 - CORRIGÉ

Cette requête comporte deux jointures naturelles. La première jointure,


entre les relations Concert et Spectacle, associe les nuplets de Spectacle,
correspondant aux spectacles du chanteur `Corneille' (puisqu'il y a une
sélection avant), avec les nuplets de la relation Concert ayant la même
valeur pour l'attribut Spectacle_ID. La jointure se fait naturellement sur
l'attribut de même nom, Spectacle_ID. La deuxième jointure associe les
nuplets résultats de la première jointure (donc les concerts des spectacles
de 'Corneille') avec le nuplets correspondant à la salle du 'Zenith' (résultat de
la requête de sélection σNom='Zenith'(Salle)). La jointure se fait naturellement
sur l'attribut commun Salle_ID. La projection finale se fait sur l'attribut Date.
138
EXERCICE 4 - CORRIGÉ

La requête Π [Salle×(ΠMAX(Capacite)-→CapaciteMax)(Salle))] retourne une


Salle_ID,CapacitMax

relation temporaire de deux colonnes, la première contenant les valeurs de


l'attribut Salle_ID de la relation Salle et la deuxième colonne contenant une
seule valeur (répétée pour toutes les valeurs de Salle_ID) correspondant à
la valeur maximale de l'attribut Capacité (calculée par la fonction
d'agrégation MAX et renommée en CapaciteMAX). L'opérateur utilisé est
le produit cartésien (×). Pour obtenir le nom des salles avec la plus grande
capacité, il suffit donc de joindre à cette relation temporaire à la relation
Salle et de sélectionner les nuplets ayant une valeur de Capacité
supérieure ou égale à celle de l'attribut CapaciteMax.

Vous aimerez peut-être aussi