Vous êtes sur la page 1sur 16

MODULE : SGBD Enseignante : Mme HIMEUR

CHAPITRE I
L’ALGEBRE RELATIONNELLE
INTRODUCTION :

L’algèbre relationnelle est un support mathématique cohérent sur lequel repose le modèle relationnel. L’objet de
cette section est d’abordé l’algèbre relationnel dans le but de décrire les opérations qu’il est possible de d’appliqué
sur des relations pour produire de nouvelle relation.

On peut distinguer trois famille d’opérateur relationnel :

- LES OPERATEURS UNAIRE (SELECTION, PROJECTION) :

Ce sont les opérateurs les plus simple, ils permettent de produire une nouvelle relation (table) à partir d’une autre
relation (table).

- LES OPERATEURS BINAIRE ENSEMBLISTE (UNION, INTERSECTION, DIFFERENCE) :

Ces opérateurs permettent de produire une nouvelle relation à partir de deux relation de même degré et de même
domaine.

- LES OPERATEURS BINAIRE OU N-AIRES (PRODUIT CARTESIEN, JOINTURE, DIVISION) :

Ils permettent de produire une nouvelle relation à partir de deux ou plusieurs entre relation.

1. SELECTION :

La sélection génère une relation regroupant exclusivement toutes les occurrences de la relation R qui satisfont
l’expression logique E, on la note :  (E) R

Il s’agit d’une opération unaire essentielle, la signature est : relation * expression logique  relation.

En d’autre termes, la sélection permet de choisir (sélectionner) des lignes dans la table. Le résultat de la sélection
est donc une nouvelle relation (R2) qui a les mêmes attributs que R1, si R1 est vide la relation qui résulte de la
sélection est vide.

EXEMPLE : LA RELATION PERSONNE

Numéro Nom Prénom


5 Kaci Salim
1 Mali Mohamed
12 Ali Lila
MODULE : SGBD Enseignante : Mme HIMEUR

3 Kaci Amina
Tableau 1 : relation personne

La sélection sur la relation personne du tableau 1 :  (numéro  5) Personne.

Numéro Nom Prénom


5 Kaci Salim
12 Ali Lila

2. PROJECTION :
La projection consiste à supprimer les attributs autres que A1, A2, …, An d’une relation est à éliminer les n-uplets
en double apparaissant dans la nouvelle relation  (A1, A2, …, An) R.

Il s’agit d’une opération unaire essentielle dont la signature est : relation * liste d’attributs  relation.

En d’autres termes, la projection permet de choisir des colonnes dans la table. Si R est vide la relation qui résulte
de la projection est vide mais pas forcément équivalent. Elle contient généralement moins d’attribut ou colonne.

3. UNION :

L’union est une opération portant sur deux relation ayant le même schéma et construisant 3 ème relation constitué
des n-uplets appartenant à chacune des deux relation R1 et R2 sans doublant, on la note : R1  R2.

Il s’agit d’une opération binaire ensembliste commutative essentielle dont la signature est :
relation 1 * relation 2  relation 3

Si la relation R1 et relation R2 sont vide, la relation qui résulte (R3) est vide. Si R1 (respectivement R2) est vide la
relation qui résulte de l’union est identique à R2 (respectivement R1).

4. INTERSECTION :

L’intersection est une opération portant sur deux relations R1 et R2 ayant le même schéma et construisant une
3ème relation dont les n-uplets sont constitués de ce appartenant aux deux relations, on la note : R1  R2

Il s’agit d’une opération binaire ensembliste commutative dont la signature est : relation  relation 2  relation 3.

Si R1 ou R2 ou les deux sont vide, la relation qui résulte est vide.

5. DIFFERENCE :

La différence est une opération portant sur deux relation R1 et R2 ayant le même schéma et construisant une 3 ème
relation dont les n-uplets sont constitués de ce qui ne se trouve que dans la relation R1. On le note : R1 – R2.

Il s’agit d’une opération binaire ensembliste non commutative essentiel dont la signature est :
relation 1 – relation 2  relation 3.
MODULE : SGBD Enseignante : Mme HIMEUR

Si R1 est vide la relation qui résulte de la différence est vide. Si R2 est vide la relation qui résulte de la différence est
identique à R1.
MODULE : SGBD Enseignante : Mme HIMEUR

6. PRODUIT CARTESIEN :

Le produit cartésien est une opération portant sur deux relations qui construit une 3 ème relation regroupant
exclusivement toutes les possibilités des combinaisons des occurrences des relation R1 et R2, on la note : R1*R2.

Il s’agit d’une opération binaire commutative dont la signature est : relation 1 * relation 2  relation 3.

Le résultat du produit cartésien est une nouvelle relation qui a tous les attributs de R1 et tous ceux de R2. Si R1 ou
R2 ou les deux sont vides, la relation qui résulte du produit cartésien est vide. Le nombre d’occurrence de la
relation qui résulte du produit cartésien est le nombre d’occurrence de R1 multiplié par le nombre d’occurrence de
R2.

EXEMPLE : 3*4 COMBINAISON

No_ID Article
101 A
225 B
757 C
Tab 1: R1

Code Nom Prix


A Lessive 50
B Biscuit 25
C Bonbons 12
D Savon 37
Tab 2: R2

7. JOINTURE :

La jointure est une opération portant sur deux relation R1 et R2, qui construit une 3ème relation regroupant
exclusivement toute les possibilités de combinaison des occurrences des relations R1 et R2 qui satisfont
l’expression logique E. La jointure est notée :

Il s’agit d’une opération binaire commutative, dont la signature est : R1 E R2


relation 1*relation 2 * expression logique (E)  relation 3

Si R1 ou R2 ou les deux sont vident, la relation qui résulte de la jointure est vide.

Enfaite la jointure n’est rien d’autre qu’un produit cartésien suivit d’une sélection. R1 E R2 = (R1*R2).
MODULE : SGBD Enseignante : Mme HIMEUR

Nom Prénom Age


NAIT Ali 6
FALI Nadia 42
SABER Karim 16

Tab 1 : R1

Age C Article Prix


99 Livre 30
6 Poupée 60
20 Baladeur 45
10 Déguisement 15

Tab 2 : R2 (cadeau)

R3=Famille cadeau ((Age  AgeC)  (prix < 50))

Nom Prénom Age Age C Article Prix


NAIT ALI 6 99 Livre 30
NAIT ALI 6 20 Baladeur 45
NAIT ALI 6 10 Déguisement 15
FALI Nadia 42 99 Livre 30
SABER Karim 16 99 Livre 30
SABER KARIM 16 20 Baladeur 45

7.1. LA JOINTURE NATURELLE (EQUIJOINTURE, JOINTURE D’EGALITE) :

La jointure d’égalité (également appelé jointure naturelle ou équijointure) est une opération binaire qui associe
deux relation qui ne sont pas obligatoirement différente sur tous leurs attributs communs. La jointure d’égalité est
un produit cartésien dont le quel on retiens tous les tuples résultant de la concaténation des tuples de la 1ère
relation avec ce de la 2nd qui ont des valeurs identiques pour un ensemble commun d’attributs. Les attributs
communs sont ceux qui ont le même domaine et la même signification, même s’ils n’ont pas le même nom.
MODULE : SGBD Enseignante : Mme HIMEUR

EXEMPLE :

R1 (personnel) :

ID Nom Dept Titre


100 BenMhidi Ventes Employé
200 BenBoulaid Marketing Employé
300 Didouche Comptabilité Employé
400 Zighout Comptabilité Chef Comptable

R2 (Département) :

ID Nom Lien
100 Comptabilité Alger
200 Marketing Oran
300 Vente Alger
R3=R1 R2 (personnel.Dept = Departement.Nom)

ID Nom Dept Titre ID Nom Lien


100 BenMhidi Ventes Employé 100 Comptabilité Alger
200 BenBoulaid Marketing Employé 200 Marketing Oran
300 Didouche Comptabilité Employé 300 Vente Alger
400 Zighout Comptabilité Chef 100 Comptabilité Alger
Comptable

7.2. LA JOINTURE EXTERIEURE :

Est basé sur le même principe que la jointure d’égalité à la différence qu’elle conserve les occurrences qui n’ont pas
d’associées dans l’autre relation. On associe au attribut non renseigné la valeur nulle symbolisé par ().

EXEMPLE :

No.Employe Nom No.Bureau


11 Ahmed 15
22 Ali 20
MODULE : SGBD Enseignante : Mme HIMEUR

33 Leïla 35
44 Sihem 45

No.Bureau Batiment
45 
55 
15 B
65 C

R2 (Bureau) :

R1 R2 (employe.NoBureau = Bureau.NoBureau)

8. LA DIVISION :

La division est une opération portant sur deux relations R1 et R2, tel que le schéma de R2 est strictement inclus
dans celui de R1, qui génère une 3ème relation regroupant toutes les partis d’occurrences de la relation R1 qui sont
associé à toutes les occurrences de la relation R2, on la note : R1R2

Il s’agit d’une opération binaire non commutative dont la signature est : relation 1*relation 2  relation 3

La relation R2 ne peut pas être vide. Tous les attributs de R2 doivent être présent dans R1 et R1 doit posséder au
moins un attribut de plus que R2. Le résultat de la division est une nouvelle relation qui a tous les attributs de R1
sans aucun de ce de R2. Si R1 est vide la relation qui résulte est vide.

EXEMPLE :

R1 (Enseignement)

Enseignant Etudiant
Germain Dubois
Fidus Pascal
Robert Dubois
Germain Pascal
Fidus Dubois
Robert Durand
Germain Durand

R2 (Etudiant)

Nom
MODULE : SGBD Enseignante : Mme HIMEUR

Dubois
Pascal

R3

Enseignant
Germain
Fidus
Robert

EXERCICE :

Soit la relation contrat :

Contrat (N-CNT, objet, montant, Date_CNT, nb_produit).

Exprimé en algèbre relationnelle les requêtes suivantes :

a- Afficher tous les contrats établis le 10/02/2015


b- Afficher les objets ainsi que le montant de tous les contrats.
c- Afficher l’objet ainsi que le montant et le nombre de produit des contrats ayant le nombre d’objet compris
entre 10 et 20.
d- Afficher les numéros ainsi que l’objet des contrats établis en mars 2015, et dont le montant ne dépasse
pas 10 000 DZD.

-  (Date_CNT=10/02/2015) contrat
- (Objet, montant) Contrat
- ((Objet, montant, nb_produit)((nb_produit 10  nb_Produit20))
- (N_CNT,objet)((Date_CNT2015/03/01)(2015/03/31)(montant10000)) Contrat

EXERCICE 2 :

On considère la BD AIR_Base :

- Pilote (NUMPIL, nompil,ADR,SAL)


- AVION (NUMAV, NomAv, CAP, LOC)
- Vol (NUMVOL, NUMPIL, NUMAV, ville_DEP, Ville_ARR, H_DEP, H_ARR)

Exprimer en algèbre relationnelle les requêtes suivantes :


MODULE : SGBD Enseignante : Mme HIMEUR

Q1. Donner la liste des Avions dont la capacité est supérieure à 350 passager.
Q2. Quels sont les numéros et nom des avions localisé à Nice.
Q3. Quels sont les numéros des pilotes en services et les villes de départ de leurs vols.
Q4. Quels sont les avions (numéros et nom) localisé à Nice ou dont la capacité est inférieure à 300 passager.
Q5. Afficher la liste des vols au départ de Nice allant à Paris après 18H.
Q6. Quels sont les numéros des pilotes qui ne sont pas en service.
Q7. Quels sont les vols effectués par un avion qui n’est pas localisé à Nice.

Réponse :

R1. (CAP<350) Avion


R2. ((NUMPIL,NomAV)((LOC=Nice)) Vol
R3. (NUMPIL,Ville_DEP)) Vol
R4. ((NUMAV,NomAV)((LOC=nice  CAP<300)) Avion
R5. (ville_DEP=Nice Ville_ARR=Paris H_DEP>18H) Vol
R6. (NUMPIL) Pilote - (NUMPIL) Vol
R7. (NUMAV) Vol - (LOC=Nice) Avion /
MODULE : SGBD Enseignante : Mme HIMEUR

CHAPITRE II : SQL
INTRODUTION :

SQL : Structured Query Language

C’est un langage de gestion de base de donnée relationnelle pour :

- Définir les données (LDD)


- Interrogé la base de donnée (langage de requête)
- Manipulé les données (LMD)
- Contrôler l’accès aux données (LCD)

QUELQUES REPERES HISTORIQUE :

- 1974 SEQUEL (Structured English Query Language) ancêtre de SQL.


- 1979 premier SGBD basé sur SQL.
- 1986 SQL1 (1ère Norme ISO).
- 1989 ajout de contraintes d’intégrité de base (clé primaire clé étrangère)
- 1992 SQL2 extension de SQL1 (nouveau types, nouveaux opérateurs)
- 1999 SQL3 extension de SQL2 (Introduction des types orientés objet)

I. LES IDENTIFICATEURS MYSQL

1. REGLES GENERALES :

 Utilisés pour : noms de BD, tables, colonnes.


o Taille : mots de 30 caractères max.
o Caractères autorisés : lettres, chiffres, #, $, _ (le premier caractère doit être une lettre).
o Pas de destruction entre minuscule et majuscules (sauf sous UNIX).
o Pas d’accents
o Pas de mot clefs (SELECT, WHERE)
o On peut utiliser le même nom de colonne dans plusieurs tables.

2. TYPES DE DONNEES :

 Strings :
o Délimiteurs : ‘ ‘ ou ‘’ ‘’ (apostrophes ou guillemets droit)
o Il faut quotter les caractères spéciaux avec le \ (\t (tab), \’, \’’…)

TABLEAU RECAPITULATIFS :

REMARQUE :

 UNSIGNED (pour les entiers) : Nombres positives seulement.


 ZeroFill (tous les nombres) : retourne des 0 dans les cases vides (Ex : 0004).
 M : taille maximale d’affichage.
MODULE : SGBD Enseignante : Mme HIMEUR

 D : nombre flottants : chiffres après la virgule.


 La valeur NULL :
o Une colonne vide contient NULL (qui signifie vide et pas zéro ou ‘’ ‘’).

3. LES OPERATEURS :

II. LA CREATION D’UNE BASE DE DONNEES AVEC SQL REQUETE SQL :

CREATE DATABASE [nom de la base]

EXEMPLE :

CREATE DATABASE text1 ;

INTERCLASSEMENT :
La table de caractères qui sera utilisé par la base de donnée : UTF8_general (tous types de caractères pour éviter
des problèmes).

CI : case non sensible (c.à.d. majuscule = minuscule).

EXEMPLE :

- Créer la base de données test en utilisant PHPmyAdmin


- Créer la base de données test1 en utilisant SQL.

CREATE DATABASE test1 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci

LA CREATION D’UNE TABLE :


La création d’une table implique :

- Lui donner un nom.


- Définir des colonnes : Type, taille, valeurs par défaut, …
- Rajouter les contraintes pour les colonnes.

SYNTAXE :

CREATETABLE [Nom de la table] (Définition colonnes).

- Col_name Type[NOTNULL/NULL] [DEFAULT Valeur par défaut]


[Auto_Increment].
- PRIMARY KEY(col_name).
- CHECK(exp).
- UNIQUE(col_name).
- FOREIGN KEY (col_name) References [table de référence] (col_name_reference).
- CONSTRAIT [nom_cont].
MODULE : SGBD Enseignante : Mme HIMEUR

EXEMPLE :

- Créer une base de données : Exercice.


- Deux tables :
o Table utilisateur (Id_util, nom, prenom, sexe, date_naiss).
o Table Article (Id_art, titre, url, contenu, date_creation ‘’timestamp ‘’).
 CREATE TABLE article (
 nom VARCHAR( 20 ) NOT NULL ,
contenu TEXT NOT NULL ,
datec TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
 ) ENGINE = INNODB;

MODIFIER UNE TABLE :

AJOUTER UNE COLONNE :

ALTER TABLE [nom_table] ADD [nom_col] Type ….

EXEMPLE :

Ajouter colonne Ville dans la table utilisateur.

SUPPRIMER UNE COLLONE :

ALTER TABLE [nom_TABLE] DROP [nom_col].

MODIFIER UNE COLONNE :

ALTER TABLE utilisateur CHANGE Date_Naiss birthday DATE.

MODIFIER LE TYPE :

ALTER TABLE utilisateur MODIFY birthday DATETIME NOT NULL.

INSERER DES VALEURS DANS LA TABLE :

INSERT INTO [nom de la table] (Col1, Col2, Col3 …) VALUES (Val1, Val2, Val3 …).

INSERT INTO [nom de la table] (Col1, Col2) VALUES (Val1, Val2)

INSERT INTO [nom de la table] SET champ1=valeur1, champ2=valeur2…

MODIFIER LES VALEURS D’UNE TABLE :

UPDATE [nom de la table] SET champ1=val1, champ2=val2 WHERE [condition].


MODULE : SGBD Enseignante : Mme HIMEUR

SUPPRIMER LES VALEURS D’UNE TABLE :

DELETE FROM [nom de la table] WHERE [condition] LIMIT (interv).

REMARQUE :
Lorsque vous supprimez un ID dans une table avec la clause DELETE, il n’est jamais régénéré avec MYSQL.

Si vous ajoutez une ligne ou un enregistrement, MYSQL donne l’ID suivant. Pour régler ce problème on utilise la
clause TRUNCATE TABLE [nom de la table]. Exemple : TRUNCATE TABLE utilisateur.

LA DEFINITION DES CLES PRIMAIRES ET ETRANGERES :

SYNTAXE :

CLE PRIMAIRE :
PRIMARY KEY (Liste de cols).

CLÉ ÉTRENGÈRE :
FOREIGN KEY(Liste-Col1) REFERENCES table (Liste-Col2).

Les modifications automatiques à faire sur les clés étrangères en cas de changement de la clé primaire
associée par les clauses ONDELETE et ONUPDATE.

ONDELETE {RESTRICT, CASCADE, SET NULL, SETDEFAULT}.

o RESTRICT : Donne un échec si la valeur effacée correspond à la clé de la table référencée.


o CASCADE : signifie que les lignes correspondantes seront effacées en cascade en cas
d’effacement d’une ligne de la table référencée.
o SET NULL : Place une valeur NULL dans la ligne de la table en cas d’effacement d’une ligne de la
table référencée.
o SET DEFAULT : Place une valeur par défaut dans la ligne de la table en cas d’effacement d’une
ligne de la table référencée.

ONUPDATE {RESTRICT, CASCADE, SET NULL, SETDEFAULT}.

REMARQUE :

RESTRICT, CASCADE, SET NULL, SETDEFAULT : Même principe que « ON DELETE ».


MODULE : SGBD Enseignante : Mme HIMEUR

EXERCICE
Soit la base de données vente qui contient 03 tables :

- Table Fournisseur (fno, nom, prenom, adresse, ville).


- Table Produit (pno, design, prix, poids, couleur).
- Table Commande (Cno, fno*, pno*, quantité).

Créer la BD vente et les 3 tables en utilisant le langage SQL.


MODULE : SGBD Enseignante : Mme HIMEUR

LA MANIPULATION DES DONNEES


(LMD)
L’OBTENTION DES DONNEES

L’obtention des données se fait exclusivement par SELECT.

SYNTAXE MINIMALE :

SELECT (Liste des noms-cols) FROM (Nomtable) ;

SELECT permet d’exprimer les projections, les restrictions, les jointures, les tris … etc.

FROM, WHERE, GROUP BY, ORDER BY.

EXPRESSION DES PROJECTIONS :

R1 : Lister les fournisseurs.

SELECT * FROM fournisseur.

R2 : Lister les numéros et les noms de fournisseurs.

SELECT fno, nom FROM fournisseur ;

R3 : Lister les différentes désignations de produits.

SELECT DISTINCT design FROM produits ;

EXPRESSION DE RESTRI CTION :

R1 : Lister les données sur les produits dont le poids > 15.

SELECT* FROM produit WHERE poids > 15 ;

R2 : Lister les produits dont le poids et compris entre 15 et 40.

SELECT * FROM produit WHERE poids>15 AND poids<40 ;

SELECT * FROM produit WHERE poids BETWEEN 15 AND 40 ;

R3 : Lister les fournisseurs habitants à Ouled Fayet, Draria, BabaHcen.

SELECT * FROM fournisseur WHERE ville IN (‘Ouled Fayet’,’Draria’,’Alger’) ;


MODULE : SGBD Enseignante : Mme HIMEUR

R4 : Lister les produits dont le poids n’est pas compris entre 15 et 35.

SELECT * FROM produit WHERE poids NOT BETWEEN 15 AND 35 ;

R5 : Lister les fournisseurs dont le nom ne commence pas par D.

SELECT * FROM fournisseur WHERE nom NOT LIKE ‘D%’ ;

R6 : Lister les fournisseurs dont l’adresse n’est pas renseignée.

SELECT * FROM fournisseur WHERE adresse IS NULL ;

R7 : Lister les fournisseurs dont l’adresse est renseignée.

SELECT * FROM fournisseur WHERE adresse IS NOT NULL ;

TRI ET PRESENTATION DES RESULTATS :

R1 : Afficher les produits rouges, verts ou bleus triés sur

la désignation croissante et la couleur décroissante.

SELECT design, couleurs FROM produit WHERE couleurs

IN (‘rouge’,’vert’,’bleu’) ORDER BY design ASC, couleur DESC ;

Par défaut, les noms des colonnes de la table résultat de la requête sont les noms des colonnes spécifiés dans la
liste des colonnes du SELECT.

Il est possible de changer le nom de la colonne à l’affichage en accolant aux noms des colonnes choisis le prédicat
AS suivi du nouveau nom de colonne devant apparaitre à l’affichage.

R2 : Afficher les produits et leurs couleurs avec des noms de colonnes compréhensibles.

SELECT design AS designation, couleurs AS Couleurs FROM produit;

R3 : Afficher numéro, design, prix avec une TVA à 17% des produits.

SELECT pno AS Numéro, design AS designation, prix+((prix*17)/100) AS prix_ttc FROM produit

Vous aimerez peut-être aussi