Académique Documents
Professionnel Documents
Culture Documents
Présenté par
BOUZIDI Houssem Eddine
houssem.ipeim@gmail.com
1
BASE DE DONNEE 02/02/2021
Introduction
L’utilisation des fichiers présente des risque liés au
manque de sécurité et la multiplication des efforts pour
trouver l’information, ce qui engendre:
Les redondances
2
BASE DE DONNEE 02/02/2021
3
BASE DE DONNEE 02/02/2021
5
BASE DE DONNEE 02/02/2021
6
BASE DE DONNEE 02/02/2021
L’algèbre relationnel
L’algèbre relationnelle fournit un cadre théorique
indépendant du langage, proche de la théorie des
ensembles.
7
BASE DE DONNEE 02/02/2021
L’algèbre relationnel
La BDR représente la base de données comme un
ensemble de tables sans préjuger de la façon dont
les information sont stockées dans la machine
Donc:
Les données sont organisées sous forme de tables à
deux dimensions, encore appelées relations, dont
les lignes sont appelées n-uplet ou tuple ou
enregistrement
Les données sont manipulées par des opérateurs de
l’algèbre relationnelle
8
8
BASE DE DONNEE 02/02/2021
L’algèbre relationnel
9
BASE DE DONNEE 02/02/2021
L’algèbre relationnel
Domaine:
C’est un ensemble fini ou infini de valeurs
caractérisées par un nom dans lequel les données
(d’une colonne) prennent valeur (c’est-à-dire entier,
flottant, chaîne de caractère ou autre).
Attribut (colonne):
10
10
BASE DE DONNEE 02/02/2021
L’algèbre relationnel
Conclusion:
• Ensemble d’opérateurs qui s’appliquent aux
relations
• L’algèbre relationnelle permet de faire des
recherches dans les relations (Résultat : nouvelle
relation qui peut à son tour être manipulée)
• Opérations de base: sélection (noté σ), projection
(π)
• Opérations ensemblistes: produit cartésien (x),
jointures (|X|), union (∪),intersection (∩),différence
(−), division (÷)
11
11
BASE DE DONNEE 02/02/2021
L’algèbre relationnel
Schéma relationnel
12
12
BASE DE DONNEE 02/02/2021
Règles d’intégrité
Les règles d’intégrité (R.I.) sont des assertions qui doivent être vérifiées à
tout moment par les données contenues dans la base de données
Trois types de R.I. complètent obligatoirement la description d’un
schéma relationnel:
1- Contrainte de clé
La contrainte de clé impose que chaque relation possède une clé
primaire
2- Contrainte de référence
Elle porte sur une relation R et impose que la valeur d’un attribut
(clé étrangère) apparaisse comme valeur de clé primaire dans une autre
relation S.
3- Contrainte d’entité
Elle impose que tout attribut faisant partie de la clé primaire d’une
relation soit non nul. 13
13
BASE DE DONNEE 02/02/2021
LANGAGE SQL
Création d’une table
14
14
BASE DE DONNEE 02/02/2021
15
BASE DE DONNEE 02/02/2021
Règles d’intégrité
Les contraintes d’intégrité, portant sur une ou plusieurs colonnes,
possibles sont :
PRIMARY KEY: spécifie qu’un ensemble d’attributs est clé primaire,
UNIQUE: spécifie qu’un ensemble d’attributs ne contient pas des
doublons ( comme PRIMARY KEY, sauf qu’il est possible de spécifier
plusieurs UNIQUE sur la même table)
FOREIGN KEY... REFERENCES: spécifie qu’un ensemble d’attributs est
clé étrangère,
16
16
BASE DE DONNEE 02/02/2021
Règles d’intégrité
17
17
BASE DE DONNEE 02/02/2021
Schéma relationnel
base_Etudiant
Etudiant=(NCIN,NOM_ETUD,PRENOM_ETUD,AGE,#NUM_GR)
Groupe=(NUM_GR,Filiere)
Enseignant=(NUM_ensg,nom_ensg,prenom_ensg,#num_mat)
Matiere=(num_mat,nom_mat)
Note=(#ncin,#num_mat,NOTE_DS,NOTE_EXAMEN)
18
18
BASE DE DONNEE 02/02/2021
EXEMPLE:
Le schéma relationnel de la table ETUDIANT
ETUDIANT=(NCIN:entier,NOM_ETUD:chaine,PRENOM_ETUD:CHAINE,AGE:entier,#NUM_GR:entier)
SQL:
CREATE TABLE ETUDIANT(
NCIN integer,
NOM_ETUD char,
PRENOM_ETUD text,
AGE int,
NUM_GR int,
PRIMARY KEY (NCIN),
19
FOREIGN KEY (NUM_GR) REFERENCES GROUPE(NUM_GR));
19
BASE DE DONNEE 02/02/2021
EXEMPLE:
Le schéma relationnel de la table NOTE
NOTE=(#NCIN:entier,#NUM_MATIERE:entier ,NOTE_DS:reel,NOTE_EXAMEN:reel)
SQL:
20
BASE DE DONNEE 02/02/2021
21
21
BASE DE DONNEE 02/02/2021
ALTER TABLE R
ADD colonne type C.I;
ALTER TABLE R
22
DROP colonne ;
22
BASE DE DONNEE 02/02/2021
• Les attributs qui n’ont pas de valeurs vont prendre la valeur NULL ou la
valeur par défaut
23
23
BASE DE DONNEE 02/02/2021
24
BASE DE DONNEE 02/02/2021
Algèbre relationnelle :
Π attributs (R)
SQL:
SELECT Ai ,…., Ap
FROM R ;
25
BASE DE DONNEE 02/02/2021
26
BASE DE DONNEE 02/02/2021
Exemple: Les noms et les prénoms des étudiants qui ont un âge >=20
Π NOM_ETUD,PRENOM_ETUD(σAGE>=20(ETUDIANT))
Select NOM_ETUD,PRENOM_ETUD
FROM (select * FROM ETUDIANT where AGE>=20)
Select NOM_ETUD,PRENOM_ETUD
FROM ETUDIANT
where AGE>=20
27
27
BASE DE DONNEE 02/02/2021
28
BASE DE DONNEE 02/02/2021
IS: par exemple AGE is NULL pour chercher les tuples dont la
valeur de l’attribut AGE est vide ;
EXISTS: L’utilisation basique de la commande EXISTS consiste à
vérifier si une sous-requête retourne un résultat ou non, en
utilisant EXISTS dans la clause conditionnelle. La requête
externe s’exécutera uniquement si la requête interne retourne au
moins un résultat.
29
BASE DE DONNEE 02/02/2021
Select NOM_ETUD,PRENOM_ETUD
FROM ETUDIANT
Where NUM_GR in (select NUM_GR
FROM GROUPE
Where FILIERE =‘MP’)
Select NOM_ETUD,PRENOM_ETUD
FROM ETUDIANT E
Where exists(select *
FROM GROUPE G
Where G.NUM_GR = E.NUM_GR and
FILIERE =‘MP’)
30
30
BASE DE DONNEE 02/02/2021
Les noms et les prénoms des étudiants qui ont les même âges que
les étudiants dont le nom commence par la lettre ‘b’
Select NOM_ETUD,PRENOM_ETUD
FROM ETUDIANT
Where AGE in (select AGE
FROM ETUDIANT
Where NOM_ETUD like ‘b%’)
31
31
BASE DE DONNEE 02/02/2021
manipulation de données
Les opérations binaires:
Intersection : T = R∩S
Différence : T=R-S
Division R ÷ S
32
32
BASE DE DONNEE 02/02/2021
SQL: 2 6 4 9
3 8
SELECT A1,A2 R∪S
FROM R A B
1 5
Union
2 6
SELECT A1,A2
3 8
FROM s 3 8 33
4 9
33
BASE DE DONNEE 02/02/2021
les noms et les prénoms des étudiants qui ont un âge = 19 ou 20.
Algèbre relationnelle :
ou
Π NOM_ETUD,PRENOM_ETUD(σ AGE=19(ETUDIANT))
∪
Π NOM_ETUD,PRENOM_ETUD(σAGE=20(ETUDIANT))
34
34
BASE DE DONNEE 02/02/2021
SQL:
Select NOM_ETUD,PRENOM_ETUD
From (select * from ETUDIANT where AGE=19 or AGE=20)
Select NOM_ETUD,PRENOM_ETUD
From ETUDIANT
Where AGE=19 or AGE=20
Select NOM_ETUD,PRENOM_ETUD
From ETUDIANT
Where AGE=19
Union
Select NOM_ETUD,PRENOM_ETUD
From ETUDIANT
Where AGE=20
35
35
BASE DE DONNEE 02/02/2021
les noms et les prénoms des étudiants et les enseignants qui ont un
nom qui se termine par la lettre ‘b’
Select NOM_ETUD,PRENOM_ETUD
From ETUDIANT
Where NOM_ETUD like ‘%b’
Union
Select NOM_ENSG,PRENOM_ENSG
From ENSEIGNANT
Where NOM_ENSG like ‘%b’
36
36
BASE DE DONNEE 02/02/2021
manipulation de données(Intersection)
Intersection : sélectionner dans une même relation les tuples qui
existent à la fois dans R et S
Algèbre relationnelle : R S
A B A B
R∩S 1 5 3 8
SQL: 2 6 1 5
3 8 4 9
SELECT A1,A2 R∩S
FROM R A B
INTERSECT 1 5
SELECT A1,A2 3 8
FROM s
37
37
BASE DE DONNEE 02/02/2021
manipulation de données(Intersection)
les NCIN des étudiants qui ont une note de DS et une note
d’examen >= 10
Algèbre relationnelle :
SQL:
Select NCIN
From NOTE
Where NOTE_DS>=10
intersect
Select NCIN
From NOTE
Where NOTE_EXAMEN >=10
38
38
BASE DE DONNEE 02/02/2021
manipulation de données(Différence)
Différence: sélectionner les tuples de R qui ne sont pas dans S
Algèbre relationnelle :
R S
R-S A B A B
1 5 3 8
SQL:
2 6 1 5
3 8 4 9
SELECT A1,A2
R-S
FROM R
A B
MINUS ou EXCEPT
2 6
SELECT A1,A2
FROM s
39
39
BASE DE DONNEE 02/02/2021
manipulation de données(Différence)
Les noms et les prénoms des étudiants qui ont toutes les notes de ds >=10
dans toutes les matières
Select NOM_ETUD,PRENOM_ETUD
From ETUDIANT
EXCEPT
Select NOM_ETUD,PRENOM_ETUD
From ETUDIANT
Where NCIN in (select NCIN
From NOTE
Where NOTE_DS <10)
ou
Select nom_etud,prenom_etud
From ETUDIANT E
Where not exists (select *
From note N
Where E.NCIN = N.NCIN
40
And NOTE_DS <10)
40
BASE DE DONNEE 02/02/2021
manipulation de données
(Produit cartésien)
41
BASE DE DONNEE 02/02/2021
manipulation de données(Jointure)
Jointure: créer toutes les combinaisons significatives entre les
tuples de deux relations
Algèbre relationnelle : R S
A B B C
R |X|R.Ai=S.Ai S 1 5 5 8
SQL: 2 6 6 3
SELECT * 3 5
A B B C
FROM R,S R [X] S 1 5 5 8
Where R.B=S.B A B B C 1 5 6 3
1 5 5 8 2 6 5 8
SELECT *
2 6 6 3 2 6 6 3
FROM R join S 3 5 5 8 3 5 5 8
On R.A1=S.A1 3 5 6 3
42
42
BASE DE DONNEE 02/02/2021
Les ncin, noms et les prénoms des étudiants ainsi que leurs
numéros du groupe et leurs filières
SELECT E.NCIN,E.NOM_ETUD,E.PRENOM_ETUD,E.NUM_GR,G.FILIERE
FROM ETUDIANT E JOIN GROUPE G
ON E.NUM_GR = G.NUM_GR;
43
43
BASE DE DONNEE 02/02/2021
SELECT E.NOM_ETUD,E.PRENOM_ETUD
FROM ETUDIANT E , GROUPE G
where E.NUM_GR = G.NUM_GR
And FILIERE = ‘MP’
Les noms , les prénoms , le nom de la matière, la note de ds et
la note d’examen pour chaque étudiant
44
44
BASE DE DONNEE 02/02/2021
EXEMPLE:
45
45
BASE DE DONNEE 02/02/2021
manipulation de données
Soit le schéma relationnel suivant:
Article = (desig, #coul)
Couleur=(coul)
Desig: désignation de l’article
Coul: est le couleur de l’article
46
BASE DE DONNEE 02/02/2021
ARTICLE ÷ COULEUR : est la réponse à la question quels sont les articles qui
47
47
BASE DE DONNEE 02/02/2021
Quel sont les articles qui sont disponibles dans toutes les couleurs
48
48
BASE DE DONNEE 02/02/2021
manipulation de données
(Fonction d’agrégation)
49
BASE DE DONNEE 02/02/2021
manipulation de données
(Fonction d’agrégation)
GROUP BY: est utilisée en SQL pour grouper plusieurs résultats et utiliser une
fonction d’agrégation sur un groupe de résultat.
HAVING: est similaire à une clause WHERE si ce n'est qu'elle qui s'applique
uniquement aux groupes dans leur ensemble (c'est-à-dire aux lignes du jeu de
résultats qui représentent des groupes), tandis que la clause WHERE
s'applique aux lignes individuelles. Une requête peut comporter à la fois une
clause WHERE et une clause HAVING
ORDER BY: permet de trier les lignes dans un résultat d’une requête SQL. Il
est possible de trier les données sur une ou plusieurs colonnes, par ordre
ascendant ou descendant. Par défaut les résultats sont classés par ordre
ascendant, toutefois il est possible d’inverser l’ordre en utilisant le suffixe
50
DESC après le nom de la colonne.
50
BASE DE DONNEE 02/02/2021
manipulation de données
(Fonction d’agrégation)
Syntaxe général:
SELECT Fonction (Attribut)
FROM Relation
WHERE condition
GROUP BY (Attribut)
HAVING condition
ORDER BY Attribut
51
BASE DE DONNEE 02/02/2021
manipulation de données
Le nombre des nom des étudiants dont leur nom commence par ‘s’:
Select count (distinct(NOM_ETUD)) from ETUDIANT where NOM_ETUD like ‘s%’
52
BASE DE DONNEE 02/02/2021
manipulation de données
Le nombre des étudiants
Select count (*) FROM ETUDIANT
Le nombre des étudiants par groupe
Select count (*),NUM_GR FROM ETUDIANT groupe by (NUM_GR)
manipulation de données
Les noms des étudiants qui ont la meilleure note de DS en informatique
Select nom_etud,prenom_etud
From etudiant
Where ncin in (select ncin
From note
Where note_ds = (select max(note_ds)
From note
Where num_mat = (select N_MAT
From matiere
Where NOM_MAT = ‘INF%’))
And NUM_Mat = (select N_MAT
From matiere
Where NOM_MAT=‘INFORMATIQUE’)
54
54
BASE DE DONNEE 02/02/2021
manipulation de données
Le nom, prénom, le nom de la matière et la moyenne de chaque matière pour
chaque étudiant (Sachant que la moyenne d’une matière est calculée comme
suit : 40% note de ds et 60% note d’examen)
Select E.nom_etud as NOM, E.PRENOM_ETUD as PRENOM, M.NOM_MAT as
MATIERE, (note_ds*0.4 + note_examen*0.6) as MOYENNE
from ETUDIANT E ,NOTE N , MATIERE M
55
BASE DE DONNEE 02/02/2021
DELETE FROM R
WHERE C;
56
56
BASE DE DONNEE 02/02/2021
57
57
BASE DE DONNEE 02/02/2021
UPDATE R
SET A1 = V1,A2=V2,…,An=Vn
WHERE C;
Cette requête modifie tous les lignes de R pour les attributs Ai avec Vi
satisfaisant la condition C.
58
58
BASE DE DONNEE 02/02/2021
UPDATE NOTE
Set NOTE_DS = NOTE_DS + 1
WHERE NCIN in (select NCIN
from ETUDIANT
Where NUM_GR in (select NUM_GR
from GROUPE
where FILIERE = ‘MP’))
59
59
BASE DE DONNEE 02/02/2021
import sqlite3
Pour se connecter à la base de donnée
BD=sqlite3.connect(‘’nom_base.db’’)
• Le nom de la base de donnée doit être une chaine de caractère qu’il peut
être le chemin relatif ou absolu de la base
• Si la base de donnée n’existe pas elle sera créer
• La variable BD dans notre exemple sera le lien à notre base
60
60
BASE DE DONNEE 02/02/2021
Cur.executemany(Req,L)
Cur.fetchall()
61
BASE DE DONNEE 02/02/2021
Cur.fetchone()
valide une transaction avec la base
BD.commit()
Fermer la connexion avec la base de données
BD.close()
62
62
BASE DE DONNEE 02/02/2021
63
BASE DE DONNEE 02/02/2021
64
BASE DE DONNEE 02/02/2021
for i in L:
Cur.execute("INSERT INTO GROUPE VALUES (?,?) ",i)
65
65
BASE DE DONNEE 02/02/2021
L est une liste du tuple où chaque tuple contient deux éléments qui seront
respectivement le nom et le prénom des étudiants ‘MP’
66
66
BASE DE DONNEE 02/02/2021
def insertion_etudiant(L):
import sqlite3
B=sqlite3.connect(‘BASE_ETUD.bd’)
c=B.cursor()
for i in L:
c.execute(‘insert into ETUDIANT values(?,?,?,?,?),i)
B.commit() 67
B.close()
67
BASE DE DONNEE 02/02/2021
def recherche_etudiant_age(A):
import sqlite3
B=sqlite3.connect(‘BASE_ETUD.bd’)
c=B.cursor()
c.execute(‘’’ select NOM_ETUD, PRENOM_ETUD
from ETUDIANT where AGE = ?)’’’, [A])
L= c.fetchall()
B.close()
return (L)
68
68
BASE DE DONNEE 02/02/2021
def recherche_etudiant_age(A):
import sqlite3
B=sqlite3.connect(‘BASE_ETUD.bd’)
c=B.cursor()
c.execute(‘’’ select NOM_ETUD, PRENOM_ETUD
from ETUDIANT where AGE = {}’’’.format(A))
L= c.fetchall()
b.close()
Return (L)
69
69
BASE DE DONNEE 02/02/2021
def remplir_fich_etudiant(FIL):
import sqlite3
B=sqlite3.connect(‘BASE_ETUD.bd’)
c=B.cursor()
c.execute(‘’’ select NOM_ETUD, PRENOM_ETUD
from ETUDIANT where NUM_GR in (select NUM_GR
From GROUPE where FILIERE = ?)’’’, [FIL])
L= c.fetchall()
B.close()
f=open(‘fich_etud.txt’,’w’)
for i in L:
f.write(‘;’.join(i)+’\n’)
70
f.close()
70
BASE DE DONNEE 02/02/2021
None NULL
int INTEGER, INT
float REAL
str TEXT, CHAR, VARCHAR
bytes BLOB
71
71