Plan
1. Généralité sur les BDD
• BDD, SGBD, MCD
2. Le modèle logique relationnel
• CONCEPTS, INTEGRITE REFERENTIELLE
3. Interrogation des BDD & langage SQL
• algèbre relationnelle
• SQL
1
Chapitre1
Généralités sur les
bases de données
2
Plan du Cours
•Base de données
•Système de Gestion de BDD « SGBD »
–Fonctions
–Avantages
•Modèle conceptuel de données MCD
– Concepts Modèle Entité Association
– schéma d’un MCD
–exemples
3
Définitions « données »
Un ensemble de données c’est :
• DES OBJETS :
un nom, par exemple ‘Mohamed’, ‘Ali’, ‘Salima’…
un cours, par exemple ‘Bases de données’, ‘droit’…
une date, par exemple 20/12/2020
...
• Mais aussi DES LIENS OU RELATIONS ENTRE OBJETS :
Halimi enseigne le cours ”Initiation aux bases de données” le
20/12/2020 à la ”Section 1”
4
« Base de données »
•DEF1: Un ensemble structuré de données
enregistrées dans un ordinateur et accessibles
de façon sélective par plusieurs utilisateurs
•DEF2: Un ensemble de fichiers sémantiquement liés.
• un fichier est un ensemble d’informations relatives
à un même sujet
Exemple: fichiers: étudiant, produit, facture, avion
5
Base de données (École)
Scolarité Comptabilité Bibliothèque
OBJETS: Étudiants, enseignants, modules
Livres, mémoires, auteurs, emploi du
temps, … + LIENS
BDD centralisée
6
Exemples d’utilisation de
bases de BDD
• la gestion des personnels, étudiants, cours,
inscriptions, ... d'une université ou école.
• un système de réservation de places
d'avion des compagnies d'aviation.
• la gestion des comptes des clients des
sociétés bancaires.
• etc
7
Intérêt: Pourquoi une BDD?
• Éviter les redondances et les incohérences
• partager les données entre plusieurs
utilisateurs
8
Qualités requises pour une BDD
• Offrir des langages de haut niveau pour
l’interrogation des données
• Contrôler la confidentialité, la sécurité des
données
9
Qu’est ce qu’un SGBD
On appelle SYSTÈME DE GESTION DE
BASE DE DONNÉES (ou SGBD) une
collection de logiciels qui permet
d'interagir avec une base de données
10
Qu’est ce qu’un SGBD
APPLICATION APPLICATION APPLICATION
SGBD
BDD
11
Fonctions d'un SGBD
• Décrire les données qui seront stockées
• Manipuler ces données (ajouter, modifier,
supprimer des informations)
• Consulter les données et traiter les
informations obtenues (sélectionner, trier,
calculer, agréger,...)
• Définir des contraintes d'intégrité sur les
données (contraintes de domaines,
d'existence,… )
12
Fonctions d'un SGBD
• Définir des protections d'accès
(mots de passe, autorisations,...)
• Résoudre les problèmes d'accès
multiples aux données (blocages)
• Prévoir des procédures de reprise en
cas d'incident (sauvegardes,
journaux,...)
13
Sans base de données
Fichiers Applications
Étudiant, enseignant, scolarité
Note, module,…
Étudiant, enseignant,
Stage, module, article… Poste graduation
Étudiant, enseignant,
livre, auteur, bibliothèque
Délais de mise à jour
Données contradictoire
14
Avec base de données
BDD SGBD Applications
VUES
scolarité
étudiant
Enseignant, livre,
Auteur, note, article Poste graduation
…….
bibliothèque
15
Avec base de données
• Une information n'est stockée qu'une seule
fois
• Une seule base pour toutes les applications
• …mais chaque application ne voit que ce
qu'elle doit voir (contrôle par les vues)
16
Avantages de l'utilisation
des SGBD
Les SGBD relationnels offrent des
langages de requêtes simples
→ interrogation directe possible par
les utilisateurs et réponses rapides à
des questions non prévues par
l'application
17
Avantages de l'utilisation
des SGBD
• Centralisation des données
→ intégrité des données
• Contrôle centralisé de l'accès aux données
→ sécurité accrue
• Instructions de traitement très puissantes
→ grande rapidité de développement
• Indépendance vis-à-vis de la structure physique
et logique des données
→ maintenance facilitée
18
Un peu d'histoire
• 1960: Uniquement des systèmes de gestion de
fichiers plus ou moins sophistiqués.
• 1970 : Début des systèmes de gestion de bases de
données réseaux et hiérarchiques proches des
systèmes de gestion de fichiers.
• Fin 1970 : Sortie du papier de CODD sur la
théorie des relations, fondement de la théorie des
bases de données relationnelles.
• 1980 : Les systèmes de gestion de bases de
données relationnels apparaissent sur le marché.
• 1990 : Les systèmes de gestion de bases de
données relationnels dominent le marché.
Début des systèmes de gestion de bases de
données orientés objet.
19
Étapes pour la construction d’une BDD
Analyse (entreprise,
documents…..)
• MCD
MLD
MPD
20
MCD: les Concepts du modèle
Entité Association
Modèle introduit par Chen en 1976, raffiné par Chen et
d'autres.
Entité [définition de Chen] :
chose qui peut être identifiée distinctement: Fournisseur,
pièce, Personne, Employé, département
Association [définition de Chen] :
Lien entre entités, peut être binaire, ternaire, n-aire:
fabrication( fournisseur- pièce), Affectation( employé
département)
Propriété (ou Attribut) :
les entités (et les associations) sont décrites par des
propriétés caractérisées par un nom et un type. Exemple :
nom, prénom, date_naissance, taille, couleur yeux, adresse,
etc
21
Les diagrammes E-A
• Les entités
– Représentées par un rectangle contenant le
nom de l'entité
• Les propriétés (ou attributs)
– le nom de la propriété écrit dans l'entité ou
l'association correspondante
– La propriété clé est soulignée
et est appelée l’identifiant.
22
Les diagrammes E-A
• Les associations (relation)
– Représentées par une ellipse contenant le nom de
l'association
– Les entités participantes de chaque association sont
rattachées à l'association au moyen de lignes
continues.
– Chacune de ces lignes est étiquetée par la
cardinalité de l'association
23
Les diagrammes E-A
24
Exemple: MCD
25
les Concepts du modèle EA
OCCURRENCE :
– Réalisation particulière d'une entité, propriété ou association.
– Synonyme : INSTANCE
« étudiant Mohamed …..» est une occurrence de l’entité Étudiant
« commande n° 55 …… » est une occurrence de l’entité commande
En pratique, et en l'absence de précision, un mot sera relatif à
un concept et lorsque l'on voudra parler d'un individu, on dira
occurrence de ...
26
Les cardinalités
C'est l'expression d'une CONTRAINTE (une "loi") perçue
sur le monde réel, et que l'on écrit dans le modèle.
Par exemple:
"il n'est pas possible de trouver dans le monde réel une
commande qui ne concerne aucun produit".
Dans le modèle E-A, on se pose la question suivante:
Pour une occurrence de cette entité, combien y a-t-il
d'occurrences d’associations auxquelles cette occurrence
d'entité participe, au plus et au moins ?
27
Les cardinalités
•Pour calculer la cardinalité, se POSITIONNER sur l'entité concernée
et regarder EN FACE combien de fois l'une de ses occurrences
participe à l'association.
•Puis se DEPLACER de l’autre côté (du côté de l'autre entité) et faire
la même chose (dans l'autre sens).
28
CARDINALITES
CARDINALITES MINIMUM :
« 0 »/ Une occurrence de l'entité peut exister sans participer
à l'association
Exemple: un produit peut ne pas être commandé
« 1 »/ Une occurrence de l'entité participe nécessairement
(au moins une fois) à une occurrence d'association
Exemple: toute commande concerne au moins un produit
29
CARDINALITES
CARDINALITES MAXIMUM :
« 1 »/ Une occurrence de l'entité participe au plus une fois
Exemple: un employé travaille au plus dans un service
un employé a au plus un chef immédiat
« N »/ Une occurrence de l'entité peut participer plusieurs
fois
Exemple: une commande peut concerner plusieurs produits
30
CARDINALITES
CONFIGURATIONS POSSIBLES :
• « O,1 » Une occurrence participe au moins 0 fois et au plus
1 fois à l'association
• « 1,1 » Une occurrence participe exactement 1 fois à
l'association
• « 0,N » Une occurrence peut ne pas participer à
l’association, ou participer plusieurs fois
• « 1,N » Une occurrence participe au moins 1 fois (voir
plusieurs)
31
IDENTIFIANT D'ENTITE
Définition:
c’est une propriété PARTICULIERE de
l'entité telle que pour chacune des valeurs
de cette propriété, il existe une occurrence
UNIQUE de l'entité.
Présentation :
L'identifiant est inscrit en tête de la liste
des propriétés et est souligné.
32
Exemples MCD
Interpréter les 2 exemples
33
Dimensions d'une association
• On appelle DIMENSION d'une association le
nombre d'entités qu'elle relie. On dit souvent :
son nombre de "pattes".
• Une association "réflexive" est une association
qui lie des occurrences d'une même entité entre
elles (c'est un cas particulier de la dimension 2)
34
Association binaire (exemple)
35
Association binaire
(occurrences)
36
Relation réflexive
37
Interpréter une association
38
Interpréter une association
• Un client peut disposer d’une seule carte membre
• La carte membre est disposée par un et un seul client
39
Dimensions d'une association
Association ternaire
Compléter les cardinalités
40
Exemples MCD
Interpréter le schéma
Association père / fils 41
Exemples MCD
Interpréter le schéma
Association Plusieurs/ plusieurs 42
Exemple: interpréter
43
Exemple: interpréter
Un professeur peut enseigner 1 à n fois,
une matière à une classe.
Une matière peut être enseignée 1 à n fois,
par un professeur à une classe.
À une classe peut être enseignée 1 à n fois
une matière par un professeur.
44
Plan UE
Introduction aux Bases de Données
Généralités sur les
• BDD, SGBD, MCD
BDD
Le modèle
logique • Concepts, Passage,
Intégrité référentielle
relationnel
• Algèbre
Interrogation des relationnelle
BDD & langage SQL
• SQL
1
CHAPITRE2
LE MODÈLE LOGIQUE
DE DONNÉES
MODÈLE RELATIONNEL
2
Plan
•M O D È L E L O G I Q U E D E D O N N É E S
•M O D È L E R E L A T I O N N E L
Généralités
Concepts fondamentaux
• PASSAGE MCD VERS MLD
Règles de passage
Exemples
C O N T R A I N T E S D ’ I N T É G R I T É
3
I/Modèle Logique de Données
Analyse (entreprise, 4
documents…..)
MCD
MLD
MPD
BDD
Modèle Logique de Données
Un modèle est un ensemble d’outils utilisés pour décrire
et manipuler des données
Le modèle logique est une REPRESENTATION du
système tel qu'il sera implémenté dans des ordinateurs.
– il ne faut pas confondre le modèle conceptuel (entité association par
ex.) avec le modèle logique (relationnel par exemple)
– il ne faut pas confondre le modèle logique (relationnel par ex. ) avec
son implémentation physique en machine (avec Access ou Oracle
par ex.)
Modèle Logique de Données
On passe du modèle conceptuel au modèle logique
par une opération de TRADUCTION
II/ Modèle relationnel
Créé par CODD (IBM
69/70).
La majorité des SGBD
actuels sont basés sur ce
modèle.
Dispose d’un Langage
d’interrogation et de
requêtes simple
Principe simple : 1 seul
concept (relation ou table)
pour décrire les données et
les liens entre ses données.
défini par la notion
d’ensemble
Le Rapport de Recherche qui a lancé les SGBDs Relationnels (Résumé)
MLD Relationnel
Rôle : préparer le modèle physique de données.
• Il s’appuie sur le modèle conceptuel de données.
• Les entités et certaines associations deviennent des
relations (tables).
• Les propriétés deviennent des attributs (champs).
• Il fait apparaître les clés étrangères indispensables
aux relations (liens) entre les données.
Le modèle relationnel
Concepts fondamentaux
Relation
sous-ensemble du produit cartésien de n domaines d'attribut (n > 0).
caractérisée par:
– un nom
– des champs (attributs) qui correspondent aux noms de chacun
des domaines mis en jeu (les colonnes)
– des n-uplets (tuples) qui correspondent aux différentes
combinaisons valides du produit cartésien (les lignes)
La relation est alors notée R (A1:D1, A2:D2,…, An:Dn)
où R est le nom de la relation.
ATTRIBUTS Concepts fondamentaux
Exemple:
EMPLOYE (Nom: String, Prénom: String, Adresse: String,
Localité: STRING, Date_naiss: Date, Date_entrée: Date,
Salaire_mensuel: Num, Département: String)
ATTRIBUTS Concepts fondamentaux
Tuple (ou n-uplet): ligne de la table
Liste de n valeurs (v1, ..., vn) où chaque valeur vi est la valeur
d’un attribut Ai de domaine Di.
Exemple :
(‘Capon’, ‘Al’,‘3, Rue de la Gare’, ‘Luxembourg’, 17.06.1969,
23.08.1972, 49.000, ‘comptabilité’)
ATTRIBUTS Concepts fondamentaux
Combien y a-t-il de tuple dans la table EMPLOYÉS?
Concepts fondamentaux
Domaine
Un domaine est un ensemble de valeurs que peut prendre un
attribut; c'est le domaine définition d'un ou plusieurs attributs.
Exemple de domaines:
Dnom : chaînes de caractères de longueur maximale 30
Dnum : entiers compris entre 0 et 99999
Dcouleur : {"bleu", "vert", "jaune"}
Dâge : entiers compris entre 16 et 65
Concepts fondamentaux
Attribut
Nomment les colonnes d’une relation.
Un attribut est toujours associé à un domaine.
Concepts fondamentaux
Exemple:
Attributs: Nom, Prénom, Adresse, Localité, Date_naiss,
Date_entrée, Salaire mensuel, Département
Exemple : une relation
Relation (table): employé
Attributs: Nom, Prénom, Adresse, Localité, Date_naiss,
Date_entrée, Salaire mensuel, Département
10 tuples (les lignes)
Concepts fondamentaux
Degré d’une relation:
DEGRÉ (ou encore, ORDRE, ARITÉ) d’une relation : le nombre des
attributs (ou colonnes) qu’elle contient.
Rien à voir donc avec la dimension d'une association.
Concepts fondamentaux
Caractéristiques d’une relation:
L ’ordre des lignes et des colonnes n ’est pas
significatif
Pas de lignes identiques (comment?)
Une case ne peut contenir qu’une valeur au plus
(une case est l’intersection d’une ligne et d’une
colonne)?
Concepts fondamentaux
Base de données relationnelle:
BDD dont le schéma est un ensemble de schémas de
relations et dont les occurrences sont les tuples de
ces relations.
Système de gestion de bases de données
relationnel (SGBDR) :
C'est un logiciel supportant le modèle relationnel, et
qui peut manipuler les données avec des opérateurs
relationnels.
clé primaire
Pour identifier chaque ligne dans une relation, la
relation doit avoir une clé.
Définition:
Une clé est un groupe d’attributs minimal qui
détermine un tuple d’une manière unique dans une
relation.
clé primaire
Exemples de clés :
• le Numéro d’identification à la sécurité sociale
• Le Numéro (Matricule) de l’étudiant dans un service
de scolarité
• Le Numéro d’adhérent dans la bibliothèque nationale
clé primaire
Un autre exemple de clé:
Dans les bibliothèques, on utilise pour la table
OUVRAGES une clé qui est l’attribut « cote » de la table.
La cote permet de déterminer de façon unique une ligne
de la table
clé primaire
Une relation doit avoir une clé primaire
Une clé primaire peut être:
Soit simple (constituée d’1 seul attribut)
Soit composée (constituée de plusieurs attributs)
Clé primaire => Irréductibilité + unicité+sa valeur
ne peut être nulle
clé primaire
Clé candidate:
Un attribut pouvant jouer le rôle d’une clé primaire
dans une relation.
Exemple:
Discuter des clés candidates dans la table EMPLOYÉS?
clé primaire
Clé étrangère:
un attribut dans une relation, qui est en même
temps la clé primaire d’une autre relation
Clé référentielle (elle permet de faire le lien
entre relations)
clé primaire
Autres exemples:
• EMPLOYE (matricule, nom, salaire) a 1 clé candidate : matricule
Si on est certain que 2 employés n'ont jamais le même nom
nom est une 2ème clé candidate.
• EMPLOYES(matricule, nom, prénom, salaire) a 2 clés candidates :
– matricule (que l'on choisira certainement comme clé primaire)
– (nom, prénom), En supposant que 2 employés n'ont jamais les
mêmes noms et prénoms.
III/ Passage du MCD vers MLDR
Une entité se transforme en relation (table)
ENTITÉ
identifiant
propriété_1
propriété_2
...
propriété_n
Clé primaire attributs
MLD
ENTITÉ (identifiant, propriété_1, ..., propriété_n)
Relation binaire aux cardinalités x,n-x,1 (x=0 ou 1)
La clé primaire de la relation à la cardinalité x,n devient clé
étrangère dans la table à la cardinalité x,1
ENTITÉ A ENTITÉ B
identifiant_A identifiant_B
propriété_A1 x,n x,1 propriété_B1
Relation_ab
………. propriété_ab1 ……….
propriété_An propriété_Bn
MLD :
ENTITÉ A (identifiant_A,propriété_A1, ...,
propriété_An)
ENTITÉ B (identifiant_B, propriété_B1, ...,
propriété_Bn, #identifiant_A, propriété_ab1)
Clé étranger Propriété association
Relation binaire aux cardinalités x,n-x,n (x=0 ou 1)
création d’une relation supplémentaire ayant comme clé
primaire une clé composée des identifiants des deux entités.
ENTITÉ A ENTITÉ B
identifiant_A identifiant_B
propriété_A1 x,n x,n propriété_B1
RelationAB
………. propriété_ab1 ……….
propriété_An propriété_Bn
MLD :
ENTITÉ A (identifiant_A, propriété_A1, ..., propriété_An)
ENTITÉ B (identifiant_B, propriété_B1, ..., propriété_Bn)
RELATION AB (#identifiant_A, #identifiant_B,
propriété_ab1)
Clé multi attributs
Relation binaire aux cardinalités 0,1-1,1
La clé primaire de la relation à la cardinalité 0,1 devient
clé étrangère dans la relation à la cardinalité 1,1.
ENTITÉ A ENTITÉ B
identifiant_A identifiant_B
propriété_A1 0,1 1,1 propriété_B1
Relation_ab
………. propriété_ab1 ……….
propriété_An propriété_Bn
MLD :
ENTITÉ A (identifiant_A,propriété_A1, ..., propriété_An)
ENTITÉ B (identifiant_B,propriété_B1, ..., propriété_Bn,
#identifiant_A, propriété_ab1)
Clé étrangère
Relation binaire aux cardinalités 0,1-0,1
La clé primaire d’une des relations devient clé étrangère
de l’autre.
ENTITÉ A ENTITÉ B
identifiant_A identifiant_B
propriété_A1 0,1 0,1 propriété_B1
Relation_ab
………. propriété_ab1 ……….
propriété_An propriété_Bn
MLD : Clé étranger
ENTITÉ A (identifiant_A,propriété_A1, ...,
propriété_An, #identifiant_B, propriété_ab1)
ENTITÉ B (identifiant_B,propriété_B1, ...,
propriété_Bn)
Exemple 1
soit le MCD
MLDR associé
Client(idClient, nom_client, adresse_client,
code_postal, ville_client)
Facture(idFacture, date_facture, #idClient)
Contient(#idFacture, #idArticle, quantité)
Article(idArticle, libelle_article, prix_article)
Exemple2: Passage MCD vers MLD
Exemple3: Passage MCD vers MLD
Exemple3: MLDR
Location (Code_location, Date_départ, Date_arrivée,
Kilométrage_départ, Kilométrage_arrivée, #Code_client,
#Code_véhicule)
Véhicule (Code_véhicule, Immatriculation,
Date_immatriculation, #Code_couleur, #Code_modèle)
Client (Code_client, Nom, Adresse, Code_postal, Ville,
Téléphone, Email)
Modèle (Code_modèle, Nom_modèle, #Code_marque)
Marque (Code_marque, Nom_marque)
Couleur (Code_couleur, Nom_couleur)
Entretien (Code_entretien, Date_entretien,
Kilométrage, Description, #Code_véhicule)
IV / Contraintes d’intégrité
une assertion (ou condition) qui doit être vrai
durant toute la vie de la base de donnée
Permet de limiter les possibilités pour les valeur
affectées aux champs dans les tuples (les valeurs
d’une propriété)
Les contraintes d’intégrité sont vérifiées
(exécutées) à chaque mise à jour de la base de
données
Une base de donnée est dite cohérente si toutes
les contraintes d’intégrité sont vérifiées
IV / Contraintes d’intégrité
Type de contrainte d’intégrité:
Intégrité de clé
Intégrité de domaine (type)
Intégrité de référence
Contraintes d ’intégrité
CONTRAINTES DE CLÉ
Une relation doit posséder une clé primaire;
Une clé primaire doit être unique et non nulle;
Contraintes d ’intégrité
CONTRAINTES DE DOMAINE
Tout attribut de la relation appartient un domaine.
Un domaine peu être fini ou non fini.
Contraintes d ’intégrité
CONTRAINTES DE RÉFÉRENCE
Cette contrainte concerne les clés étrangères; c’est
une contrainte exprimée entre deux tables.
Tout tuple d’une relation faisant référence à une
autre relation doit se référer à un tuple qui existe
déjà; autrement dit, le tuple référencé doit avoir
été saisi dans la table référencée avant même de s’y
référer.
Contraintes d’intégrité pour un
attribut: possibilités
Contrainte Effet de la contrainte
Être non NULL la valeur de l’attribut ne peut être vide.
Être unique la valeur de l’attribut pour une ligne est
unique (clé)
Être fini contenir uniquement certaines valeurs
(fini).
Exemple :
Couleur={Rouge,Vert,Bleu}.
Sexe = {féminin; masculin}
Être bornée Exemple :
Date doit être supérieure au 01/01/1900
et inférieure au 31/12/2040.
Être calibrée Exemple :
Téléphone doit se présenter selon la
norme OXXX XX XX XX.
Contraintes d’intégrité
Exemple :
la relation MARQUE
MARQUE (IdMarque, NomMarque, ClasseMarque, IdFabriquant)
Domaines :
Dom (IdMarque) = [1..99 999]
Dom (NomMarque) = ensemble de tous les mots construits sur
l'alphabet {A, B, ..Z, a, b, .., z, 0.. 9}
Dom (ClasseMarque) = [1..30]
Dom (IdFabriquant) = tous les noms possibles de sociétés
(chaînes limitées à 100 caractères)
Contraintes d ’intégrités
Exemple :
Soit le schéma d’une base de données relationnelle permettant la gestion
de notices bibliographiques :
EDITEUR (NumEditeur, Nom, Prénom, adresse, tel)
AUTEURS (NumAuteur, Nom, Prénom)
OUVRAGES (Cote, Titre, NbExemplaire, Année, #NumEditeur,
Thème)
On souhaite poser les contraintes suivantes :
1. Le nombre d’exemplaires de chaque OUVRAGE doit être supérieur à
0 (zéro) et inférieur à 50.
2. Chaque OUVRAGE doit avoir au moins un auteur.
Questions : Pour chacun des deux cas :
1. Donnez le type de (des) la contrainte(s) d’intégrité impliqué(es).
2. Écrire la contrainte.
Contraintes d’intégrité
Le nombre d’exemplaires de chaque OUVRAGE doit être supérieur à 0
(zéro) et inférieur à 50.
Type de contrainte : CI de domaine
Attribut concerné : NbExemplaire (relation : OUVRAGES)
Écriture de contrainte: (NbExemplaire >0) et (NbExemplaire<50)
Contraintes d’intégrité
Chaque OUVRAGE doit avoir au moins un auteur.
Analyse :
Il ne peut pas s’agir d’une CI de domaine (sinon, quel est l’attribut
concerné?)
Il ne peut pas s’agir non plus d’une CI de clé puisqu’aucun attribut n’est
cité dans la contrainte.
Problème : Dans le schéma de la BD, il n’y a aucune modélisation des
données citées dans la contrainte. En d’autres termes, il n’y a aucun
lien entre les deux relations OUVRAGES et AUTEURS qui permet de
répondre au deux questions : Quel(s) auteur(s) a écrit quel(s)
ouvrage(s)? Quel(s) ouvrage(s) a (ont) été écrit(s) par quel(s) auteur(s)?
Toutes ces données, il faut les modéliser dans la BD.
Contraintes d’intégrité
Modélisation:
Un ouvrage est écrit par un ou plusieurs auteurs.
Un auteurs peut écrire un ou plusieurs ouvrages.
Ceci peut être modélisé par la création d’une nouvelle relation ÉCRIT
faisant référence:
et à l’auteur
et aux ouvrages qu’il a écrit
ou autrement:
et à l’ouvrage
et aux auteurs qui l’ont écrit.
Contraintes d’intégrité
Schéma en intension : ÉCRIT (#NumAuteur, #cote)
Schéma en extension :
Relation : ÉCRIT
NumAuteur cote
12 45
12 55
88 45
29 3
12 3
Contraintes d’intégrité
Maintenant, il faut écrire les CI associées à ce schéma:
CI DE CLÉ PRIMAIRE :
NumAuteur, cote (unique et non nulle)
CIS DE CLÉ RÉFÉRENTIELLE :
ECRIT.NumAuteur REFERENCE AUTEURS.NumAuteur
ECRIT.cote REFERENCE OUVRAGES.cote
CHAPITRE 2.3: INTERROGATION
DES BASES DE DONNÉES
Introduction à SQL
LANGAGE DE REQUETES RELATIONNEL
Le langage SQL
SQL = Structured Query Langage
Langage standard - 4ème génération (SQL89,
SQL2, SQL3)
Langages de requêtes SQL pour BdD
relationnelles
(LDD)
Création de tables, contraintes, modification, …
(LMD)
Interrogation/Modification de la BdD
SQL
Instructions: CREATE, DROP, ALTER TABLE
Instructions: SELECT, INSERT, DELETE, UPDATE
Introduction à SQL
DÉFINITION DES DONNÉES LDD
DÉFINITION DU SCHEMA DE LA BDD
Création de table
Une table (relation en algèbre relationnelle) se
créé par l’instruction CREATE TABLE
CREATE TABLE nom_table
(
nom_col1 type_col1 [contrainte1]
[, nom_col2 type_col2 [contrainte2] …]
);
Contraintes sur les colonnes
PRIMARY KEY
Clé primaire de la table. Pour désigner plus d’une colonne, on
l’utilise comme une clause PRIMARY KEY(col1, col2, …) à côté
des définitions de colonnes
NOT NULL
Doit avoir une valeur pour chaque enregistrement
UNIQUE
Chaque enregistrement doit avoir une valeur différente
CHECK condition
La valeur doit respecter une condition donnée
Exemple de création de table
CREATE TABLE Etudiant
(
Matricule INT PRIMARY KEY,
Nom VARCHAR(30) NOT NULL,
Prénom VARCHAR(30) NOT NULL
DateNais date,
Résidence VARCHAR(30),
Spécialité VARCHAR(15) CHECK (type IN (‘Tcommun’, ‘management’,
‘comptabilité’,’autres’)
);
Suppression & renommage d’une table
Une table est supprimée par l’instruction DROP TABLE
DROP TABLE nom_table;
Une table est renommée par l’instruction RENAME TABLE
RENAME TABLE ancien_nom TO nouveau_nom;
Modification d’une table
Le contenu d’une table peut être modifié par l’instruction
ALTER TABLE
ALTER TABLE nom_table
modification1,
modification 2…;
Les modifications portent sur des ajouts, suppressions
ou remplacements de colonnes avec pour syntaxe :
ADD (nom_col type_col [contrainte])
DROP nom_col
MODIFY nom_col type_col [contrainte]
Exemple de modification de table
ALTER TABLE ETUDIANT
ADD (Université VARCHAR(30)),
MODIFY Nom VARCHAR(20) NOT NULL,
DROP DateNais;
Introduction à SQL
LANGAGE DE MANIPULATION DES
DONNÉES LMD
Insertion d’enregistrement (TUPLE)
Un enregistrement (tuple en algèbre relationnelle)
s’insère dans une table par l’instruction INSERT
INTO
INSERT INTO nom_table[(nom_col1, nom_col2, …)]
VALUES (val1, val2, …)
[(val3, val4, …)];
Exemple :
INSERT INTO ETUDIANT
VALUES (1, ‘ Hamidi’, ‘Omar’, 19/08/1989, ‘alger’, ‘autre’),
(2, ‘ Achouri’, ‘Karim’, 12/08/1988, ‘Ourgla’, ‘Tcommun’);
Suppression d’enregistrement
Un ou plusieurs enregistrements se suppriment par
l’instruction DELETE
DELETE FROM nom_table
WHERE conditions;
conditions exprime un ensemble de condition pour
sélectionner (à la manière de l’opérateur relationnel
de sélection) les enregistrements à effacer.
Exemple :
DELETE FROM Client
WHERE nom = ‘ Messoudi’;
Modification d’enregistrement
Un ou plusieurs enregistrements se modifient par
l’instruction UPDATE
UPDATE nom_table
SET nom_col1 = expr1 [, nom_col2 = expr2]…
WHERE conditions;
conditions exprime un ensemble de condition pour
sélectionner les enregistrements à modifier et les
clauses SET indiquent les modifications à effectuer.
Exemple : UPDATE Client
SET spécialité = ‘comptabilité’
WHERE nom = ‘ Hamidi ’;
Requête SELECT
Une requête d’interrogation de la BdD s’écrit à
l’aide de l’instruction SELECT ….Consultation
SELECT [DISTINCT] table1.attr1 [, table2.attr2]… | expr
FROM table1 [, table2]…
[WHERE condition]
[ORDER BY expr [DESC]]
[GROUP BY expr]
[HAVING expr]
Tables des exemples - ÉTUDIANT
ÉTUDIANT
matricule Nom Prénom AnnéeNais résidence Université
0012/06 Betouche Malek 1990 Alger ESC
0045/07 Trabelssi Ismail 1988 boumerdes USTHB
0124/05 Guessoum Lila 1989 Medea ESC
0166/07 Bouchardi Ahmed 1992 Mascara ESI
0485/07 Dilmi Ahmed 1991 Adrar ESC
0120/08 Ziadi Mounir 1988 Alger USTHB
0225/08 Othmani Djamila 1990 Blida ESI
Interrogation de la BdD
Projection
Sélection
Requêtes de projection
L’ensemble des enregistrements d’une table est
désigné par le symbole *.
SELECT * FROM ETUDIANT;
Une projection se réalise en précisant les
colonnes à conserver.
SELECT Etudiant.prenom, Etudiant.nom FROM Etudiant;
DISTINCT ne conserve pas les doublons.
SELECT DISTINCT Etudiant.prenom, Etudiant.nom FROM Etudiant;
Projection sur plusieurs champs
SELECT Nom, Prénom, Université FROM ÉTUDIANT
Nom Prénom Université
Betouche Malek ESC
Trabelssi Ismail USTHB
Guessoum Lila ESC
Bouchardi Ahmed ESI
Dilmi Ahmed ESC
Dilmi Mounir USTHB
Othmani Djamila ESI
La liste des étudiants avec l’Université où ils sont inscrits
Requêtes de sélection
Les conditions d’une sélection s’expriment après
la clause WHERE
SELECT * FROM Etudiant WHERE nom=‘ Messoudi ’;
Plusieurs conditions peuvent être exprimées et
combinées par les opérateurs logiques OR et
AND
SELECT * FROM Etudiant
WHERE (spécialité=‘autre’)
AND ((nom=‘Messoudi’) OR (nom=‘Hamidi’));
Sélection – Exemples avec 2 critères (OU et ET)
SELECT * FROM ÉTUDIANT WHERE
[ AnnéeNais = 1991 ] AND [ Université = ‘ESC’ ]
matricule Nom Prénom AnnéeNais résidence Université
0485/07 Dilmi Ahmed 1991 Adrar ESC
SELECT * FROM ÉTUDIANT WHERE
(Résidance= ‘ boumerdes’) OR (Université = ‘ESI’)
matricule Nom Prénom AnnéeNais résidence Université
0045/07 Trabelssi Ismail 1988 boumerdes USTHB
0225/08 Othmani Djamila 1990 Blida ESI
0166/07 Bouchardi Ahmed 1992 Mascara ESI
Expression des conditions
Opérateurs simples de comparaison
=, !=, <, >, <=, >=
Autres opérateurs
expr1 BETWEEN expr2 AND expr3
Ex : salaire BETWEEN 5000 AND 10000
expr1 IN (expr2, expr3, …)
Ex : nom IN (‘Malki’, ‘Hamidi’)
expr1 LIKE chaîne
Ex : nom LIKE H%
Ordre du résultat
Le résultat d’une requête peut être trié selon les
valeurs d’une ou plusieurs colonne(s).
Par ordre croissant :
SELECT * FROM Etudiant ORDER BY Annéenais;
Par ordre décroissant (ici le tri est d’abord fait par le nom puis
par le prenom pour les enregistrements de même nom) :
SELECT * FROM Etudiant ORDER BY nom, prenom DESC;
Jointure
Une jointure s’exprime par une sélection
couvrant plusieurs tables
Il suffit de tester l’égalité d’attributs de 2 tables
différentes
SELECT * FROM Vehicule, Proprietaire
WHERE Vehicule.proprietaire = Proprietaire.numero;
Interrogation de la BdD
Jointure naturelle
Opérateurs de groupe
Renvoie la somme des valeurs de l’attribut
SUM (attribut)
Renvoie le nombre d’enregistrements
COUNT(*)
Renvoie la valeur maximale d’une expression (qui
MAX(expr)
peut être un attribut)
Renvoie la valeur minimale d’une expression (qui
MIN(expr)
peut être un attribut)
Renvoie la moyenne des valeurs de l’attribut
AVG(attribut)
Exemples d’opérateurs de groupe
SELECT COUNT(*) FROM Vehicule;
SELECT COUNT(*) FROM Vehicule WHERE
marque=‘BMW ’;
SELECT MAX(solde) FROM Client;
SELECT SUM(solde) FROM Client WHERE
nom = ‘Durand ’;
Groupement des résultats
Par défaut les opérateurs de groupe s’appliquent
sur l’ensemble des enregistrements sélectionnés
L’instruction GROUP BY permet d’appliquer un
opérateur à des groupes séparés d’enregistrements
Par exemple, pour obtenir le nombre de vehicule de
chaque marque on peut écrire :
SELECT COUNT(*) FROM Vehicule GROUP BY
marque;
Clause HAVING
La clause HAVING réalise une sélection (à la
manière du WHERE) sur les groupes à
retenir.
Par exemple, si on souhaite connaître le
nombre de véhicules de chaque marque en
ayant plus de 5, on peut écrire :
SELECT COUNT(*) FROM Vehicule GROUP
BY marque HAVING COUNT(*) > 5;
Sous-interrogations
Un critère de recherche employé dans une clause
WHERE peut être lui-même le résultat d’un SELECT
Par exemple, pour connaître le nom des personnes nées
le même jour que le client « Martin » on peut écrire :
SELECT nom FROM Client
WHERE naissance = (SELECT naissance FROM Client
WHERE nom = ‘ Martin ’);
Sous-interrogations (2)
Dans le cas où plusieurs enregistrements peuvent
être renvoyés on peut utiliser :
IN : pour tester une appartenance à l’ensemble de ce qui est
renvoyé
Un opérateur de comparaison (<, >, …) suivi de ANY ou de ALL
pour tester si la comparaison est vraie au moins une fois ou pour
tous les enregistrements.
Par exemple pour connaître le client le plus jeune on
peut écrire :
SELECT nom FROM Client
WHERE naissance <= ALL (SELECT naissance
FROM Client);
Insertion utilisant une sélection
Une requête imbriquée peut-être utilisée pour
réaliser des insertions.
Par exemple, pour insérer dans la table 2A tous
les élèves de la table 1A dont l’attribut note est
supérieur à 10, on peut écrire :
INSERT INTO 2A
SELECT * FROM 1A
WHERE note > 10;
Les instructions UPDATE et DELETE peuvent aussi utiliser une
requête imbriquée
Création utilisant une sélection
Une requête imbriquée peut-être utilisée pour
créer et remplir une table.
Par exemple, pour une table 2A comprenant les
colonnes nom et prenom et remplie avec tous les
noms et prenoms des enregistrements d’une
rable 1A, on peut écrire :
CREATE TABLE 2A
AS SELECT nom, prenom FROM 1A;
Introduction à SQL
En relationnel :
Client (numero: int, nom: string, prenom: string, no_adresse: int)
Adresse (numero: int, no_rue: int, rue: string, zip: int, ville: string)
Station (nom: string, no_adresse: int)
Velo(numero: int, nom_station: string)
Trajet(numero: int, no_client: int, no_velo: int, date_depart: Date, heure_depart:
int, station_depart: int, date_arrivee: Date, heure_arrivee: int, station_arrivee: int)
Requêtes en algèbre relationnelle
l’ensemble des noms des stations
∏{nom}(Station)
le prénom du client dont le nom est « Martin »
∏{prenom}(σ{nom=« Martin »}(Client))
les identifiants des vélos situés sur la station
nommée « Gare SNCF »
∏{numero}(σ{nom_station=« Gare SNCF »}( Velo))
Requêtes en algèbre relationnelle
le nom des personnes qui habitent à la même
adresse que la station nommée « Gare SNCF »
∏{nom}(Client |><|{no_adresse=no_adresse} (σ{nom=« Gare
SNCF »}(Station)))
le nom des personnes ayant utilisé le vélo numero
2 entre le 10/12/1980 et le 01/01/1990
∏{nom}((σ{no_velo=2, 10/12/1980 <date_depart <
01/01/1990}(Trajet)))
Requêtes en SQL
l’ensemble des noms des stations
SELECT Station.nom
FROM Station;
le prénom du client dont le nom est « Martin »
SELECT Client.prenom FROM Client
WHERE (Client.nom = "martin");
les identifiants des vélos situés sur la station
nommée « Gare SNCF »
SELECT Velo.numero FROM Velo
WHERE (Velo.nom_station = "Gare SNCF");
Requêtes en SQL
le nom des personnes qui habitent à la même
adresse que la station nommée « Gare SNCF »
SELECT Client.nom FROM Client, Station
WHERE Client.adresse = Station.no_adresse
AND Station.nom = "Gare SNCF";
le nom des personnes ayant utilisé le vélo numero 2
entre deux le 10/12/1980 et le 01/01/1990
SELECT Client.nom FROM Client, Trajet
WHERE Client.numero = Trajet.no_client
AND Trajet.no_velo = 2
AND Trajet.date_depart>#10/12/1980#
AND Trajet.date_depart<#1/1/1990#;
Des questions ?
CHAPITRE 2.2
LA NORMALISATION DU MODÈLE
RELATIONNEL
plan
1) Introduction à la normalisation des relations
1.1 Qu’est ce que la normalisation
1.2 Objectifs
2) Les dépendances fonctionnelles
1.1 Définitions
1.2 Représentation des DFs sous forme de graphes
3) Normalisation du modèle relationnel
1.1 Première forme normale
1.2 Deuxième forme normale
1.3 Troisième forme normale
4) exemples
Notion de normalisation
Etymologie : du latin norma, règle.
Plusieurs sens (dans plusieurs domaines)
Sens 1
Une norme est une règle, une loi auxquelles on doit
se conformer.
Sens 2
Une norme est un ensemble de caractéristiques
décrivant et régissant un domaine particulier, un
objet, un produit, un être.
Sens 3…
Objectifs de la normalisation (1)
L'objectif étant de construire un schéma de base de
données cohérent.
Le but essentiel de la normalisation est d'éviter les
anomalies transactionnelles pouvant découler d'une
mauvaise modélisation des données et ainsi éviter un
certain nombre de problèmes potentiels tels que les
anomalies de lecture, les anomalies d'écriture, la
redondance des données et la contre-performance.
Objectifs de la normalisation (2)
La normalisation des modèles de données permet de
vérifier la robustesse de leur conception pour
améliorer la modélisation (et donc obtenir une
meilleure représentation) et faciliter la mémorisation
des données en évitant la redondance et les
problèmes sous-jacents de mise à jour ou de
cohérence.
Conséquence:
L’élimination des redondances doit aboutir à une
minimisation de l’espace de stockage.
Mauvaise modélisation: conséquences
Un mauvais schéma logique peut conduire à un
certain nombre d'anomalies pendant la phase
d'exploitation de la base de donnée.
Problème de la redondance
Exemple: Soit la relation COMMANDE_PRODUIT.
Num Qté Num Adr Anomalies de modification
Prod Four Mise à jour de l’adresse d’un
fournisseur: il faut le faire pour tous
101 300 901 Pêcherie, Alger
les tuples concernés.
104 1000 902 Pêcherie, Bouharoun Anomalies d’insertion :
112 78 904 Pêcherie, Bousmail Ajout d’un nouveau fournisseur: il
faut obligatoirement fournir des
103 250 901 Pêcherie, Alger
valeurs pour NumProd et Qté.
104 3000 901 Pêcherie, Alger Anomalies de suppression :
104 500 903 Pêcherie, Douaouda Suppression du produit 104: perte
de toutes les données sur le
112 150 901 Pêcherie, Alger fournisseur 902.
Modèle normalisé
un modèle relationnel est dit normalisé, s’il respecte
certaines contraintes (règles ou normes) appelées les
formes normales.
Les formes normales s’appuient sur les dépendances
fonctionnelles entre attributs.
DÉFINITION:
Deux rubriques R1 et R2 sont dites en Dépendance
Fonctionnelle si le fait de connaître la valeur de R1 permet de
connaître une valeur et une seule de R2.
On écrit: R1R2.
R1 est la source de la DF et R2 le but.
Exemples:
numéro client ----- nom client
matricule étudiant ---- âge, adresse
La question fondamentale qui se pose : « connaissant une valeur
de la source, peut-on connaître une valeur unique du but? ».
Dépendance fonctionnelle à partie gauche composée
Dépendance fonctionnelle élémentaire
Dépendance fonctionnelle directe
Graphe de DF
La 1ère forme normale(1FN)
Définition :
Est en 1FN, une relation (ayant par définition une clé) dont
les attributs possèdent tous une valeur sémantiquement
atomique.
Atomicité : un attribut est dit « atomique » si aucune
subdivision de l’information initiale n’apporte une
information supplémentaire ou complémentaire.
Normalisation en 1F:
Un attribut non atomique doit être décomposé en ses
différents attributs atomique.
La 1ère forme normale(1FN)
Exemple:
ÉTUDIANT (Mat, Nom, Prénoms, DateNaiss)
Normaliser en 1FN.
La 1ère forme normale(1FN)
ÉTUDIANT (Mat, Nom, Prénoms, DateNaiss)
Analyse:
La relation ÉTUDIANT possède une clé primaire.
Mais l’attribut Prénoms n’est pas élémentaire.
Qu’en est-il de l’attribut DateNaiss?
Relativité de la notion d'atomicité
L'atomicité d'un attribut est souvent relative : on peut décider qu'un
attribut contenant une date n'est pas atomique (et que le jour, le mois et
l'année constituent chacun une valeur), ou bien que l'attribut est de
domaine date et donc qu'il est atomique.
Conclusion:
La relation ÉTUDIANT n’est pas en 1FN.
La 1ère forme normale(1FN)
Normalisation:
Un étudiant donnée peut avoir un ou plusieurs
prénoms.
Il faut ajouter une nouvelle relation PRÉNOM.
Cette relation contient les différents prénoms des
étudiants.
Cette relation est à lier à la relation ÉTUDIANT par un
lien Père (ÉTUDIANT )-Fils (PRÉNOM).
La 1ère forme normale(1FN)
Schéma en intension:
ÉTUDIANT (Mat, Nom, DateNaiss)
PRÉNOM (#Mat, prénom)
Schéma en extension: PRÉNOM
#Mat prénoms
ÉTUDIANT 14 Omar
Mat Nom DateNaiss 69 Mahmoud
69 Halimi 14-05-1980 69 Fawzi
14 Biskri 09-06-1982 101 Ahmed
101 Frendi 04-11-1962 101 Amine
La 1ére forme normale(1FN)
La 1ére forme normale(1FN)
La 2ème forme normale(2FN)
Définition :
Une relation est en 2FN ssi :
Elle est en 1FN ;
Chacun des attributs ne faisant pas partie de la clé primaire est en
Dépendance Fonctionnelle élémentaire avec la clé primaire (toute
entière et pas une partie).
Conséquence :
Une relation en 1FN avec un seul attribut comme clé primaire est
automatiquement en 2FN.
Le problème se pose uniquement pour les tables qui ont une clé primaire
composée.
Rappel :
Un attribut est en dépendance fonctionnelle élémentaire avec la clé primaire
lorsqu’il n’est en dépendance fonctionnelle avec aucune partie de la clé.
La 2ème forme normale(2FN)
CLIENT (NumCli, Nom, DateNaiss)
Analyse:
Elle est en 1FN.
Sa clé est simple.
Conclusion:
La relation est en 2FN.
La 2ème forme normale(2FN)
COMMANDE_PRODUIT (NumProd, NumFour, Quantité, VilleFour)
Analyse:
Elle est en 1FN (existence d’une clé, tous les attributs sont atomiques).
NumProd, NumFour → Quantité
La Quantité ne peut être connue que si on connaît le NumProd et le
NumFour, donc toute la clé primaire.
mais
NumFour → VilleFour
Donc, le NumFour , qui est une partie de la clé primaire, est suffisant pour
connaître la ville du fournisseur: il joue le rôle de la clé.
Donc: la DF
NumProd, NumFour → VilleFour
n’est pas élémentaire.
Conclusion:
La relation n’est pas en 2FN.
La 2ème forme normale(2FN)
Normalisation:
Méthode: Décomposer la relation initiale en plusieurs nouvelles relations
(leur nombre est lié au nombre des DFs non élémentaires).
Astuce: Pour éviter toute confusion, renomer la relation initiale X.
COMMANDE_PRODUIT (NumProd, NumFour, Quantité, VilleFour)
Écriture utilisant les DFs:
COMMANDE_PRODUIT (NumProd, NumFour → Quantité; NumProd,
NumFour → VilleFour; NumFour → VilleFour)
Renomons cette relation X comme suit:
X (NumProd, NumFour → Quantité; NumProd, NumFour → VilleFour;
NumFour → VilleFour)
Il faut éliminer la DF non élémentaire.
Nous obtenons les deux nouvelles relations suivantes:
X1 (NumProd, NumFour → Quantité)
X2 (NumFour → VilleFour)
La 2ème forme normale(2FN)
Soit :
X1 (NumProd, NumFour, Quantité)
X2 (NumFour, VilleFour)
Maintenant, nous pouvons renommer les deux relations en fonction de la
nature de la base de données: la première relation concerne les données
sur les commandes (les fournisseurs qui ont émis ces commandes et les
quantités commandées) et la deuxième les données sur les
fournisseurs.
COMMANDE (NumProd, NumFour, Quantité)
FOURNISSEUR (NumFour, VilleFour)
Les deux relations COMMANDE et FOURNISSEUR sont en 2FN.
La 2ème forme normale(2FN)
La 3ème forme normale(3FN)
Définition :
Une relation est en 3FN ssi :
Elle est en 2FN ;
Chacun des attributs ne faisant pas partie de la clé primaire est en
Dépendance Fonctionnelle élémentaire et directe avec la clé primaire
et uniquement avec elle (autrement dit: (i) il n’existe aucune DF entre
deux attributs non clé primaire et (ii) chaque attribut non clé doit
obligatoirement dépendre fonctionnellement de la clé primaire).
Rappel : un attribut est en dépendance fonctionnelle
directe avec la clé primaire lorsque cette dépendance
fonctionnelle n’est pas obtenue par transitivité.
La 3ème forme normale(3FN)
La relation :
COMPAGNIE (Vol, Avion, Pilote)
avec les DF :
Vol →Avion
Avion → Pilote
Vol → Pilote
est en 2FN mais pas en 3FN.
La 3ème forme normale(3FN)
Anomalies de mise à jour sur la relation COMPAGNIE : il n’est
pas possible d’introduire un nouvel avion sur un nouveau vol
sans préciser le pilote correspondant.
La décomposition suivante donne deux relations en 3FN qui
permettent de retrouver (par transitivité) toutes les DF :
R1 (Vol, #Avion) ;
R2 (Avion, Pilote).
La 3ème forme normale(3FN)
Résumé
Modèle relationnel normalisé = relations
avec
une clé, qui permet de distinguer chaque occurrence
des attributs élémentaires (1FN)
en dépendance de TOUTE la clé (2FN),
et RIEN QUE de la clé (3FN)
Illustration : maximiser l’espace de stockage (1)
Illustration : maximiser l’espace de stockage (2)
CHAPITRE 3: INTERROGATION
DES BASES DE DONNÉES
Algèbre relationnelle
Interrogation des BDD
La manipulation des données dans le relationnel se
fait à l’aide d’opérations formelles
reposant sur des concepts mathématiques issus de la
théorie des ensembles : l’algèbre relationnelle.
Les opérations de l’algèbre relationnelle portent sur
une ou plusieurs relations (ou tables).
Le résultat retourné par ces opérations est toujours
une relation (ou table).
Algèbre relationnelle
Chaque opération d’algèbre relationnelle prend
une/plusieurs tables et les transforme afin de
produire une nouvelle table
3 opérations principales
Sélection
Projection
Jointure
3 opérations secondaires
Union
Intersection
Différence
Tables des exemples - ÉTUDIANT
ÉTUDIANT
matricule Nom Prénom AnnéeNais résidence Université
0012/22 Betouche Malek 2004 Alger ESC
0045/21 Trabelssi Ismail 2003 Boumerdes USTHB
0124/19 Guessoum Lila 2000 Medea ESC
0166/21 Bouchardi Ahmed 2002 Mascara ESI
0485/21 Dilmi Ahmed 2004 Adrar ESC
0120/20 Dilmi Mounir 2002 Alger USTHB
0225/23 Othmani Djamila 2003 Blida ESI
Tables des exemples - UNIVERSITÉ
UNIVERSITÉ
Sigle NomInstitution Ville NbrÉtudiants
ESI Ecole Supérieure Elharrach 1500
d’informatique
ESC École Supérieure de Koléa 2000
Commerce
USTHB Université des Sciences Bab ezzouar 18000
et Technologies Houari
Boumediene
Tables des exemples - VILLE
VILLE
Nom Région
Bab ezzouar Dar el beida
El harrach El harrach
Koléa Koléa
Sélection
S’effectue sur une seule table
Produit une nouvelle table étant un sous-ensemble
de la table originale selon des critères appliqués sur
certains champs
Opérateur : σ (en majuscule, )
Format
σ (table source) [critères]
Sélection - Exemples
σ (ÉTUDIANT) [Nom = ‘Dilmi’]
matricule Nom Prénom AnnéeNais résidence Université
0485/21 Dilmi Ahmed 2004 Adrar ESC
0120/20 Dilmi Mounir 2002 Alger USTHB
La liste des étudiants dont le nom de famille est « Dilmi »
σ (ÉTUDIANT) [Université = ‘USTHB’]
matricule Nom Prénom AnnéeNais résidence Université
0045/21 Trabelssi Ismail 2003 Boumerdes USTHB
0120/20 Dilmi Mounir 2002 Alger USTHB
La liste des étudiants inscrits à l’Université « Usthb »
Sélection - Exemples
Exemple de sélection donnant une table vide
σ (ÉTUDIANT) [AnnéeNais = 1993]
matricule Nom Prénom AnnéeNais résidence Université
La liste des étudiants nés en 1993 (vide)
Sélection – Exemples avec 2 critères (OU et ET)
σ (ÉTUDIANT) [AnnéeNais = 2000 ET Université = ‘ESC’]
matricule Nom Prénom AnnéeNais résidence Université
0124/19 Guessoum Lila 2000 Medea ESC
La liste des étudiants nés en 2000 et inscrits à l’Université « ESC »
σ (ÉTUDIANT) [résidence = ’Alger’ OU Université = ‘USTHB’]
matricule Nom Prénom AnnéeNais résidence Université
0012/22 Betouche Malek 2004 Alger ESC
0120/20 Dilmi Mounir 2002 Alger USTHB
0045/21 Trabelssi Ismail 2003 Boumerdes USTHB
La liste des étudiants inscrits à « Usthb » ou qui habite à « alger »
Sélection – Exemples avec 3 critères
(Les parenthèses sont importantes !)
σ (ÉTUDIANT) [(Université = ‘ESC’ OU Université = ‘usthb’) ET AnnéeNais = 2002]
matricule Nom Prénom AnnéeNais résidence Université
0120/20 Dilmi Mounir 2002 Alger USTHB
La liste des étudiants inscrits à l’ESC ou à l’Usthb et qui sont nés en 1988
La liste des étudiants (qui sont inscrits à l’ESC ou à l’Usthb) et (qui sont nés en
2002)
σ (ÉTUDIANT) [Université = ‘ESI’ OU (Université = ‘Esc’ ET AnnéeNais = 2000)]
matricule Nom Prénom AnnéeNais résidence Université
0166/21 Bouchardi Ahmed 2002 Mascara ESI
0124/19 Guessoum Lila 2000 Medea ESC
0225/23 Othmani Djamila 2003 Blida ESI
La liste des étudiants inscrits à l’ESI ou ceux qui sont inscrits à l’Esc et nés en 2000
La liste des étudiants (qui sont inscrits à l’ESI) ou (qui sont inscrits à l’ESC et nés en
2000)
Sélection – Exemples basés sur un critère
d’inégalité et sur critère partiel
σ (ÉTUDIANT) [AnnéeNais < 2001]
matricule Nom Prénom AnnéeNais résidence Université
0124/19 Guessoum Lila 2000 Medea ESC
La liste des étudiants nés avant 2001
σ (ÉTUDIANT) [Nom = ‘B*’]
matricule Nom Prénom AnnéeNais résidence Université
0012/22 Betouche Malek 2004 Alger ESC
0166/21 Bouchardi Ahmed 2002 Mascara ESI
La liste des étudiants dont le nom de famille commence par B
Projection
S’effectue sur une seule table
Produit une nouvelle table qui est un sous-ensemble
de la table originale selon le ou les champs
sélectionnés
Sert à déterminer quelles données seront présentées
comme résultat de la requête
Opérateur : (en majuscule, )
Format
{champs} (table source)
Projection simple
{Nom} (ÉTUDIANT)
Nom
Othmani
Betouche
Trabelssi
Guessoum
Bouchardi
Dilmi
La liste des noms de famille des étudiants
Note : les éléments identiques sont éliminés
Une table ne doit jamais contenir deux tuples identiques
Projection sur plusieurs champs
{Nom, Prénom, Université} (ÉTUDIANT)
Nom Prénom Université
Betouche Malek ESC
Trabelssi Ismail USTHB
Guessoum Lila ESC
Bouchardi Ahmed ESI
Dilmi Ahmed ESC
Dilmi Mounir USTHB
Othmani Djamila ESI
La liste des étudiants avec l’Université où ils sont inscrits
Jointure
Jointure naturelle
Opération s’effectuant sur 2 tables ayant au moins un champ
commun (de même domaine)
Produit une nouvelle table qui est une combinaison des 2
tables originales selon l’égalité des champs communs
Permet de créer de l’information qui ne se trouve pas dans une
seule table, mais par la combinaison de deux tables
Opérateur :
Format
table 1 [champs1 champs2] table 2
Jointure = Exemple
ÉTUDIANT [Université Sigle] UNIVERSITÉ
Matricule Nom Prénom AnnéeNais Résidence Université NomInstitution Ville NbrÉtudiants
0012/22 Betouche Malek 2004 Alger ESC École supérieure de commerce Koléa 2000
0045/21 2003 Université des sciences et technologies
Trabelssi Ismail Boumerdes USTHB Bab ezzouar 18000
houari boumediene
0124/19 2000
Guessoum Lila Medea ESC École supérieure de commerce Koléa 2000
0166/21 2002
Bouchardi Ahmed Mascara ESI Institut nationale d’informatique Elharrach 1500
0485/21 2004
Dilmi Ahmed Adrar ESC École supérieure de commerce Koléa 2000
0120/20 2002 Université des sciences et technologies
Dilmi Mounir Alger USTHB Bab ezzouar 18000
houari boumediene
0225/23 Othmani Djamila 2003 Blida ESI Institut nationale d’informatique Elharrach 1500
Note : le nom du champ peut être le même ou différent, en autant que les domaines soient identiques
Notes sur les jointures
Si aucun champ n’est commun (de même domaine/type)
entre 2 tables, la jointure est impossible
Si un champ est commun mais qu’il n’y a aucune donnée
commune, alors la jointure donne une table vide
Jointure universelle
La jointure universelle est une opération particulière s’effectuant sur
2 tables et qui fait la jointure entre tous les tuples des 2 tables
Aucun attribut commun n’est requis
Opération aussi appelée « Produit cartésien »
Opérateur :
Format: table1 table2
Plan
Combinaisons d’opérations de sélection,
projection et jointure
Tables des exemples - ÉTUDIANT
ÉTUDIANT
matricule Nom Prénom AnnéeNais résidence Université
0012/22 Betouche Malek 2004 Alger ESC
0045/21 Trabelssi Ismail 2003 Boumerdes USTHB
0124/19 Guessoum Lila 2000 Medea ESC
0166/21 Bouchardi Ahmed 2002 Mascara ESI
0485/21 Dilmi Ahmed 2004 Adrar ESC
0120/20 Dilmi Mounir 2002 Alger USTHB
0225/23 Othmani Djamila 2003 Blida ESI
Tables des exemples - UNIVERSITÉ
UNIVERSITÉ
Sigle NomInstitution Ville NbrÉtudiants
ESI Ecole Supérieure Elharrach 1500
d’informatique
ESC École Supérieure de Koléa 2000
Commerce
USTHB Université des Sciences Bab ezzouar 18000
et Technologies Houari
Boumediene
Tables des exemples - VILLE
VILLE
Nom Région
Bab ezzouar Dar el beida
El harrach El harrach
Alger Alger
Combinaison de sélections
σ (σ (ÉTUDIANT) [Université = ‘Esc’]) [AnnéeNais < 2002]
matricule Nom Prénom AnnéeNais résidence Université
0124/19 Guessoum Lila 2000 Medea ESC
Cela reviens à combiner les deux critères:
σ (ÉTUDIANT) [Université = ‘Esc’ ET AnnéeNais <
2002]
Combinaison de jointures
une jointure produit une table, on peut donc en
combiner plusieurs, l’une après l’autre.
(ÉTUDIANT [Université Sigle] UNIVERSITÉ) [Ville Nom] VILLE
matricule Nom Prénom AnnéeNais résidence Université NomInstitution Ville NbrÉtudian Région
0012/22 2004 Alger ESC École supérieure de commerce Koléa 2000
Betouche Malek Koléa
0045/21 2003 boumerdes USTHB Université des sciences et Bab ezzouar 18000 Dar elbeida
Trabelssi Ismail technologies houari boumediene
0124/19 2000 Medea ESC École supérieure de commerce Koléa 2000
Guessoum Lila Koléa
0166/21 2002 Mascara ESI Institut nationale d’informatique Elharrach 1500
Bouchardi Ahmed El harrach
0485/21 2004 Adrar ESC École supérieure de commerce Koléa 2000
Dilmi Ahmed Koléa
0120/20 2002 Alger USTHB Université des sciences et Bab ezzouar 18000 Dar elbeida
Dilmi Mounir
technologies houari boumediene
0225/23 Othmani Djamila 2003 Blida ESI Institut nationale d’informatique Elharrach 1500 El harrach
Combinaison de sélection et projection
Permet d’afficher seulement les données qui nous
intéressent
La projection se fait généralement en dernier
{Nom, Prénom} (σ (ÉTUDIANT) [AnnéeNais = 2004])
Nom Prénom
Betouche Malek
Dilmi Ahmed
La liste des noms et prénoms des étudiants nés en
2004
Combinaison de jointure et projection
EXERCICE:
Donnez la liste des étudiants avec leurs régions.
Combinaison de jointure et projection
ÉTUDIANT[Université Sigle]UNIVERSITÉ
(ÉTUDIANT[Université Sigle]UNIVERSITÉ) [Ville Nom] VILLE
{Matricule, Nom,Prénom,Région}((ÉTUDIANT[Université Sigle]UNIVERSITÉ)
[Ville Nom] VILLE)
Matricule Nom Prénom Région
0012/22 Betouche Malek Koléa
0045/21 Trabelssi Ismail Dar el beida
0124/19 Guessoum Lila Koléa
0166/21 Bouchardi Ahmed El harrach
0485/21 Dilmi Ahmed Koléa
0120/20 Dilmi Mounir Dar el beida
0225/23 Othmani Djamila El harrach
Combinaison de jointure et projection
(optimisation)
Les jointure sont couteuses en termes de temps d’exécution: le
temps d’exécution dépend du volume des tables jointes.
R1= {Matricule, Nom, Prénom, Université} (ÉTUDIANT)
R2= {Sigle,Ville} (UNIVERSITÉ))
R3= R1 [Université Sigle] R2
R4= R3 [Ville Nom] VILLE
R5= {Matricule, Nom, Prénom, région}(R4)
Combinaison de sélection et jointure
Dans certains cas, une sélection suivie d’une jointure peut
être équivalente à une jointure suivie d’une sélection
σ (ÉTUDIANT [Université Sigle] UNIVERSITÉ) [NbrÉtudiants > 10 000]
Ou
ÉTUDIANT [Université Sigle] (σ (UNIVERSITÉ) [NbrÉtudiants > 10 000])
matricule Nom Prénom AnnéeNais résidence Université NomInstitution Ville NbrÉtudiants
0045/21 Trabelssi Ismail 2003 Boumerdes USTHB Université des sciences et technologies Bab ezzouar 18000
houari boumediene
0120/09 Dilmi Mounir 1988 Alger USTHB Université des sciences et technologies Bab ezzouar 18000
houari boumediene
La 2e option est toutefois plus efficace. La jointure ne se fait
pas sur toute la table UNIVERSITÉ, mais sur une partie de
cette table résultant de la sélection, donc de taille réduite.
Les opérations ensemblistes
3 opérations
Union
Intersection
Différence
Ne peuvent s’effectuer que sur des tables ayant une
structure identique
Tables des exemples
ÉTUDIANT SPORT
matricule Nom Prénom AnnéeNais résidence Université
0012/22 Betouche Malek 2004 Alger ESC
0045/21 Trabelssi Ismail 2003 boumerdes USTHB
0124/19 Guessoum Lila 2000 Medea ESC
0166/21 Bouchardi Ahmed 2002 Mascara ESI
ÉTUDIANT Musique
matricule Nom Prénom AnnéeNais résidence Université
0485/21 Dilmi Ahmed 2004 Adrar ESC
0120/20 Dilmi Mounir 2002 Alger USTHB
0225/23 Othmani Djamila 2003 Blida ESI
0045/21 Trabelssi Ismail 2003 boumerdes USTHB
0124/19 Guessoum Lila 2000 Medea ESC
Union
Résultat : l’ensemble des tuples contenus dans les
deux tables
Opérateur :
Format
Table 1 Table 2
Union
ÉTUDIANT SPORT ÉTUDIANT MUSIQUE
matricule Nom Prénom AnnéeNais résidence Université
0012/22 Betouche Malek 2004 Alger ESC
0045/21 Trabelssi Ismail 2003 boumerdes USTHB
0124/19 Guessoum Lila 2000 Medea ESC
0166/21 Bouchardi Ahmed 2002 Mascara ESI
0485/21 Dilmi Ahmed 2004 Adrar ESC
0120/20 Dilmi Mounir 2002 Alger USTHB
0225/23 Othmani Djamila 2003 Blida ESI
Intersection
Résultat : l’ensemble des tuples communs aux deux
tables
Opérateur :
Format
Table 1 Table 2
Intersection
ÉTUDIANT SPORT ÉTUDIANT MUSIQUE
matricule Nom Prénom AnnéeNais résidence Université
0045/21 Trabelssi Ismail 2003 boumerdes USTHB
0124/19 Guessoum Lila 2000 Medea ESC
Différence
Résultat : l’ensemble des tuples de la première table
qui ne sont pas présents dans la deuxième table
Opérateur : -
Format
Table 1 - Table 2
Différence
ÉTUDIANT SPORT - ÉTUDIANT MUSIQUE
matricule Nom Prénom AnnéeNais résidence Université
0012/22 Betouche Malek 2004 Alger ESC
0166/21 Bouchardi Ahmed 2002 Mascara ESI
Note sur l’algèbre relationnelle
Habituellement, la planification des requêtes se fait
sans connaître les données emmagasinées à
l’intérieur des tables
On utilise donc un modèle en mode formel
Dans la plupart des SGBD, l’utilisation de l’algèbre
relationnelle se fait par l’entremise du langage SQL.
Des questions ?