0% ont trouvé ce document utile (0 vote)
232 vues205 pages

Introduction aux Bases de Données

Transféré par

Abderrahmane Rachedi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
232 vues205 pages

Introduction aux Bases de Données

Transféré par

Abderrahmane Rachedi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

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: R1R2.
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 ?

Vous aimerez peut-être aussi