Vous êtes sur la page 1sur 41

Bases de données avancées

Elaboré par Dr. Emna HKIRI


Emna.hkiri@fsm.rnu.tn

2021-2022
MSRII-MPRAD
Plan du cours
 Chapitre I. Base de données relationnelles

 Chapitre II. Base de données objet-relationnelles

 Chapitre III. Les données semi-structurées

 Chapitre V. La gestion des accès concurrents

2
Plan du cours
Chapitre I. Base de données relationnelles
I. Base de données
II. Système de Gestion de Base de Données
III. SQL : Structured Query Language
IV. Les schémas en SQL

3
Chapitre 1 : Base de données relationnelle(Rappel)

4
Bases de Données
 Un ensemble de données structurées modélisant les objets d’une partie du monde réel
avec le moins de redondance possible
 Indépendante de l’application et de langage de programmation
 Accessible par un LMD
 Stockage et mise à jour de données
 Recherche de données multi-critères
 Partagées par de multiples utilisateurs
 Assurant la fiabilité et sécurité des données
 Gérée par un SGBD (DBMS)

5
Objectifs des bases de données

1. Élimination de la redondance des données.

2. Indépendance entre les programmes et les données : on peut isoler le niveau

utilisation (application) de l'organisation physique de données.

3. Intégration de données : intégration de toutes les données de l'entreprise dans un

réservoir unique de données.

6
SGBD (DBMS)

Ensemble de logiciels permettant :

• La description des données et des relations (LDD)

• L’interrogation et la mise à jour de la base (LMD)

• Le contrôle de données par LCD

• La gestion des transactions.

7
Evolution des SGBD

8
Depuis 1995…
 Bases de données et web
• Etendre les possibilités des SGBD pour répondre aux applications fonctionnant dans
l’environnement web
•Accès distant au contenu des BD
• Fédération et inter-opération des BD
• Transformations des données et des requêtes

 Bases de données et décisionnel


• Entreposage de données
• Analyse de données
• Qualité des données

 Bases de données réparties :


•Permettre d’intégrer, d’interroger et de mettre à jour des données provenant de sites répartis
géographiquement

9
Depuis 1995…
 Bases de données objet :
• Intégrer les concepts objets dans les SGBD (classe, objet)

 Bases de données déductives :


• Enrichir les SGBD de possibilités de déduction

 Bases de données multimédia :


• Intégrer dans un SGBD la gestion de données textuelles,
graphiques, images, sons etc..

 Bases de données à grande échelle:


• 5V (Volume, Véracité, Variété, Vélocité, Valeur)
• Big Data, Hadoop/MapReduce

10
SGBD (DBMS)
Principales fonctionnalités :
• Contrôle de la redondance d’information
•Partage des données et confidentialité
• Gestion des accès concurrents
• Vérifications des contraintes d’intégrité
• Sécurité et reprise sur panne
• Indépendance des données: Niveau physique, logique et externe (vue)

11
SQL
 SQL « Structured Query Language » est inventé à IBM San Jose, 1974 (Boyce &
Chamberlin) pour System R
 Le langage standard de SGBD relationnels DB2, Oracle, Informix, Ingres,..
 Il existe plusieurs dialectes SQL
 Chacun de ces SGBDR a sa propre variante du langage
 Normes SQL
 En évolution contrôlée par ANSI (SQL1, 2, 3...)
 SQL a été normalisé dès 1986 mais les premières normes, trop incomplètes, ont été
ignorées par les éditeurs de SGBD.
 La norme SQL2 (SQL92) est respectée par les SGBD relationnels qui dominent
actuellement le marché.
Elle définit trois niveaux :
• Full SQL (ensemble de la norme)
• Intermediate SQL
• Entry Level (ensemble minimum à respecter pour se dire à la norme SQL2)
12
SQL
 SQL3 (SQL99) est la nouvelle norme SQL.

 Langage complet de gestion des bases de données relationnelles :


 Basé sur le calcul de tuple & algèbre relationnelle
 Langage de définitions de données (CREATE, ALTER, DROP)
 Langage d’interrogation de la base (SELECT)
 Langage de manipulation des données (UPDATE, INSERT, DELETE)
 Langage de contrôle de l’accès aux données (GRANT, REVOKE)

13
Définition d’un schéma en SQL2
CREATE SCHEMA [nom_du_schéma]
[AUTHORIZATION utilisateur]
[Liste des éléments du schéma] ;
 La clause AUTHORIZATION précise le nom du créateur. Une des deux premières zones doit
obligatoirement intervenir. Si le nom du schéma n'est pas indiqué, le nom du créateur devient le
nom du schéma.
 La dernière clause est facultative et permet de définir les divers éléments du schéma, ils ne doivent
pas être définis tous au même moment :
 les domaines,
 les tables,
 les vues,
 les contraintes,
 les permissions d'accès au schéma, etc.

14
Suppression d’un schéma en SQL2

DROP SCHEMA [nom_du_schéma] {RESTRICT | CASCADE} ;

 Si RESTRICT est spécifié, l'opération ne sera possible que si le schéma est


vide.

 Si CASCADE est spécifié, l'opération réussira toujours et détruira non


seulement le schéma mais aussi tous les éléments qu'il contient.

15
Définition de table en SQL2
• Définition de table en SQL2
CREATE TABLE <nom de table>
(Définition d’attributs [, Définition d’attributs]…) ;

où Définition d’attributs :
 <nom attribut> <Type de donnée et sa longueur> [ [NOT] NULL | PRIMARY KEY | … ]

 Chaque SGBD possède ses règles pour nommer les tables.


 Ainsi sous ORACLE, un nom doit commencer par une lettre, comporter
moins de 30 caractères (lettres, chiffres et _ ), être différent d'un autre nom de
table ou de vue, et d'un mot réservé de SQL, les lettres majuscules et
minuscules sont équivalentes.
16
Les types de données
Type de données Syntaxe Description
Alphanumérique CHAR(n) Chaîne de caractères de longueur fixe n (n<16383)

VARCHAR(n) Chaîne de caractères de n caractères maximum


(n<16383)

Numérique NUMBER(n [,d]) Nombre de n chiffres [optionnellement d après la


virgule]

SMALLINT Entier signé de 16 bits (-32768 à 32767)


INT Entier signé de 32 bits (-2E31 à 2E31-1)
FLOAT Nombre à virgule flottante
Temporel DATE Date sous la forme 16/07/99
TIME Heure sous la forme 12:54:24.85
TIMESTAMP Date et Heure
17
Les contraintes
Clauses CONSTRAINT permettent de définir
 PRIMARY KEY
 UNIQUE
 les clés étrangères FOREIGN KEY … REFERENCES
 les contraintes d'intégrité CHECK
 Autres
CONSTRAINT <nom_contrainte> <définition_contrainte>
 Contrainte clé primaire : PRIMARY KEY (attribut1, attribut2, … )
 Contrainte d’unicité : UNIQUE (attribut1, attribut2, …)
interdit qu’un attribut(ou la concaténation de plusieurs attributs) contienne deux valeurs
identiques.
 Contrainte de clé étrangère
FOREIGN KEY colonne1 REFERERENCES nom_table(Att1)
 Contrainte CHECK :CHECK (condition)

18
Exemple de BDD :
EMPLOYE (Nom, Prenom , NoSS, Date_NAISS, ADRESSE, SEXE, SALAIRE,
NoSSSUPER, NoSce)

SERVICE (Nom_SCE, NoSce, NoSSDIR, DATEDEBDIR)


....

 CREATE SCHEMA Entreprise


AUTHORIZATION directeur;

 DROP SCHEMA Entreprise RESTRICT ;

19
Création des tables
> CREATE TABLE EMPLOYE (
Nom varchar (15) not null,
Prenom varchar (15) not null,
NoSS char(13) not null,
Date_NAISS date,
ADRESSE varchar(30),
SEXE char,
SALAIRE decimal(10,2),
NoSSSUPER char(13),
NoSce int not null,
PRIMARY KEY (NoSS),
FOREIGN KEY (NoSSSUPER) REFERENCES EMPLOYE(NoSS),
FOREIGN KEY (NoSce) REFERENCES SERVICE(NoSCE)
); 20
Création des tables
> CREATE TABLE SERVICE (
Nom_SCE varchar (15) not null,
NoSce INT not null,
NoSSDIR char(13) NOT NULL,
DATEDEBDIR DATE,
PRIMARY KEY (NoSce),
UNIQUE (Nom_SCE),
FOREIGN KEY (NoSSDIR) REFERENCES EMPLOYE(NoSS)
);

21
Suppression et modification des tables
Suppression de table
Il est possible à tout instant de supprimer une relation de base.
 
DROP TABLE <nom de table> ;
 
Cette commande efface tous les tuples de la table, élimine la définition de la table du dictionnaire,
de même que les index à cette table et ses privilèges.

Modification de la structure des table


modifier le schéma des relations existantes (ajouter un nouveau constituant afin de prendre en
compte une information qui n'avait pas été prévue au départ)

ALTER TABLE <nom de table>


{ ADD <nom attribut> <type attribut> [BEFORE <nom attribut>]
[, <nom attribut> <type attribut> [BEFORE <nom attribut>] ... ]
| DROP <nom attribut> [, <nom attribut>... ]
| MODIFY <nom attribut> <type attribut>[ , <nom attribut> <type attribut> …]};

22
Exemple
Exemple :

 ALTER TABLE EMPLOYE


ADD FONCTION CHAR(10) ;

 ALTER TABLE EMPLOYE


MODIFY NOM CHAR(20) ;

 ALTER TABLE EMPLOYE


DROP FONCTION ;

23
Les chemins d’accès
 Les chemins d’accès
A l'administrateur de demander au système la création des chemins d'accès sur les
relations stockées et au système de choisir parmi les chemins disponibles celui qui
est le plus adéquat pour l’exécution d’une requête d’interrogation.
CREATE [UNIQUE] INDEX <nom index> ON <nom de relation> (<nom attribut>
[ORDRE] [ , <nom attribut> [ORDRE] ... ] ) ;
 où ORDRE est soit ASC (ascendant) ou DESC (descendant) et s'il n'est pas spécifié,
l'ordre ASC est pris par défaut.
 L'option UNIQUE permet d'une part de définir qu'un attribut (ou un groupe
d'attributs) est clé discriminante de la relation et d'autre part de fournir un chemin
d'accès direct aux n-uplets ayant une valeur de clé donnée.
Exemple :
Si on n’a pas défini auparavant «PRIMARY KEY (NoSS) »

 24
CREATE UNIQUE INDEX XNoSS ON EMPLOYE (NoSS) ;
Requête d’interrogation SQL 2 :
3. Requête d’interrogation SQL 2 :

SELECT { * | table.* | [table.]attribut1 [, table.]attribut2.[, ...]]}


[AS alias1 [, alias2 [, ...]]]

FROM tableexpression [, ...]

[WHERE... ]

[GROUP BY... ]

[HAVING... ]

[ORDER BY... ]
;

25
Requête d’interrogation SQL 2 :
SELECT <liste d’attributs>
FROM <noms de relations>
[Where < condition>] ;

SELECT Nom, NoSS


FROM EMPLOYE;

SELECT Nom, NoSS


FROM EMPLOYE
WHERE ADRESSE = Monastir ;

• mot clé DISTINCT


SELECT DISTINCT NoSSSUP
FROM EMPLOYE  ;
• Astérix (*)
SELECT *
26
FROM EMPLOYE ;
Le prédicat
 Prédicat de la clause WHERE : expression logique composée d’une suite de
conditions, combinées entre elles par des opérateurs AND, OR et NOT.
 expression logique  :
 comparaison à une valeur ( = , <> , > , > , >= , <=)
 comparaison à une fourchette de valeurs (BETWEEN)
 comparaison à une liste de valeurs (IN, MATCH)
 comparaison à un filtre (LIKE)
 test sur l’indétermination d’une valeur (IS NULL)
 test « tous » ou « au moins » (ALL, ANY)
 test existentiel (EXISTS)
 test d’unicité (UNIQUE)

27
Exemples
Exemples: « Donner les numéros des employés de ‘tunis’ qui ont un NoSce supérieur à 10 »  :
SELECT NoSS
FROM EMPLOYE
WHERE ADRESSE = tunis
AND NoSce > 10 ;
•  comparaison à une valeur
SELECT NoSS
FROM EMPLOYE
WHERE NOT ( ADRESSE= bizerte ) ;
  comparaison à une fourchette de valeurs :
« liste des employés dont NoSce est compris entre 10 et 15  »
SELECT NOM
FROM EMPLOYE
WHERE
28 NoSce BETWEEN 10 AND 15 ;
Exemples
 Comparaison à une liste de valeurs 
SELECT NOM
FROM EMPLOYE
WHERE ADRESSE IN (Sfax , Tunis ) ;
 Comparaison à un filtre
% n’importe quelle séquence de zéro ou plusieurs caractères.
_ un seul caractère quelconque
  SELECT NOM FROM EMPLOYE
WHERE ADRESSE LIKE Tun% ;
 Sélection sur l’indétermination d’un attribut :
« rechercher tous les employés pour lesquels on a négligé d’encoder le salaire  »
SELECT NOM FROM EMPLOYE
WHERE SALAIRE IS NULL ;
29
Attribut indéterminé
Il existe des données qui,
- soient ne s’appliquent pas dans le cas du tuple (tel que le nom de l’époux pour une personne
célibataire),

- soient ne sont pas connues.


Si on se contente de laisser l’attribut à blanc, ou de le mettre à 0 si la valeur est numérique, on risque de
prendre en considération le tuple par erreur.

Par exemple, dans la base de données des employés, si on veut retrouver ceux possédant un salaire
inférieur à la moyenne, et que, à l’encodage, lorsque le salaire n’est pas connu, on met la valeur 0,
tous ceux avec un salaire inconnu seront sélectionnés.

 Pour éviter ce genre d’imprécisions, SQL prévoit un flag associé à chaque attribut, pour spécifier si
l’attribut a été ou non initialisé. S’il ne l’a pas été, l’attribut prend la valeur indéterminée NULL.

 Toute expression comportant un attribut indéterminé prend la valeur NULL.

30
Order by
 L’ordre peur être spécifié par ORDER BY <nom_attribut> ASC / DESC, <nom_attribut>
ASC /DESC …
 
Et l’ordre de gauche à droite des noms_attributs signifie un tri du majeur au mineur.
 
« Donner les numéros et les noms des employés de ‘Monastir’ dans un ordre descendant du salaire »
 
SELECT NoSS, NOM
FROM EMPLOYE
WHERE ADRESSE = Monastir 
ORDER BY SALAIRE DESC ;

31
Recherche complexe
Recherche complexe SQL utilise les opérateurs d’appartenance IS IN (ou IN), IS NOT IN (ou NOT IN) en
imbriquant des blocs de SELECT.
« Donner les noms des employés qui travaillent dans le service de nom ‘finances’  »
SELECT NOM
FROM EMPLOYE
WHERE NoSce IS IN ( SELECT NoSce
FROM SERVICE
WHERE NOM_SCE = finances) ;

 référence inter_bloc
« Donner les noms des employés qui ne travaillent pas dans le service dont le supérieur est directeur de ce service »
  SELECT NOM
FROM EMPLOYE
WHERE NoSce NOT IN
( SELECT NoSce
FROM SERVICE
WHERE NoSSDIR = EMPLOYE.NoSSSUPER ) ;
32
Recherche complexe
 Imbrication des blocs SELECT en faisant intervenir la même relation.
« Donner les numéros des employés travaillant au moins dans un service que l’employé ‘N1000’
SELECT NoSS FROM EMPOYE
WHERE NoSce IN
( SELECT NoSce
FROM EMPLOYE
WHERE NoSS = N1000) ;
 Il est parfois utile d’introduire des variables synonymes pour lever certaines ambiguïtés.
« Donner tous les noms des employés travaillant dans plus d’un service »
SELECT DISTINCT NOM
FROM EMPLOYE X , EMPLOYE Y
WHERE (X.NoSS = Y.NoSS) and (X.NoSce <> Y.NoSce ) ;
ou bien
SELECT DISTINCT NOM
FROM EMPLOYE X JOIN EMPLOYE Y ON
33 (X.NoSS = Y.NoSS) and( X. NoSce <> Y. NoSce ) ;
Recherche complexe
 Pour exprimer la division SQL utilise une recherche avec NOT EXISTS

« Donner les noms des employés qui ne travaillent pas dans le service  ’finances’ » :
SELECT NOM
FROM EMPLOYE
WHERE NOT EXISTS
(SELECT *
FROM SERVICE
WHERE NoSce = EMPLOYE .NoSce
AND NOM_SCE = ‘finances’);

34
SQL & les opérateurs ensemblistes

 SQL utilise les opérateurs ensemblistes


MOINS (EXCEPT),
UNION (UNION) et
Intersection (INTERSECT).

Exemple:
« Donner les numéros des services dans lesquels ne travaillent aucun employé »
 
(SELECT NoSCE FROM SERVICE)
EXCEPT
(SELECT NoSCE FROM EMPLOYE) ;

35
Mises à jour en SQL
 Mises à jour en SQL
UPDATE INSERT INTO DELETE FROM

UPDATE <nom de table>


SET attribut = valeur
[WHERE prédicat ];

INSERT INTO <nom de table> VALUES (<valeur tuple> ) ;

DELETE FROM <nom de table>


[WHERE prédicat] ;
36
Mises à jour en SQL

UPDATE EMPLOYE
SET NOM=  Mariem 
WHERE NoSS= 162124521212 1 ;
 

INSERT INTO EMPLOYE  VALUES


(Riadh, Tounsi, 1621245212121, 1962-12-30, ‘Gabes’, ‘M’, 3700, ‘24106254589223’,4
) ;
 
«  Supprimer toutes les employés »
DELETE FROM EMPLOYE ;
 
37
Les fonctions de groupe en SQL
 Opérateurs d’évaluation d’ensembles.
 COUNT compte le nombre d’occurrences de l’attribut
 SUM calcule la somme des valeurs de l’attribut (de type numérique)
 AVG calcule la moyenne des valeurs de l’attribut (de type numérique)
 MAX recherche la plus grande valeur de l’attribut
 MIN recherche la plus petite valeur de l’attribut.

 Exemple :
« Donner le nombre des employés  »
SELECT COUNT( NoSS )
FROM EMPLOYE ;

38
Exemple
«  Donner le nombre des employés du service 10»
SELECT COUNT(NoSS)
FROM EMPLOYE
WHERE NoSce = 10 ;

«  Donner le nombre des employés par service  »


SELECT NoSce ,COUNT(NoSS)
FROM EMPLOYE
GROUP BY NoSce
ORDER BY NoSce ;

39
Les fonctions de groupe
 La clause GROUP BY réarrange la table résultat du SELECT en un nombre minimum de
groupes tels que, à l’intérieur de chaque groupe, l’attribut spécifié possède la même valeur pour
chaque tuple.
Lorsqu’une clause GROUP BY est spécifiée, les fonctions de groupe sont calculées pour chaque
groupe.
 La clause HAVING est l’équivalent du WHERE appliqué aux groupes. Cette clause ne peut
généralement être spécifiée que si une clause GROUP BY l’a été.
« Rechercher le nom du service dont le nombre d’employés est supérieure à 100 »
SELECT No_SCE, COUNT(NoSS)
FROM EMPLOYE, SERVICE
WHERE EMPLOYE.NoSCE=SERVICE.NoSCE
GROUP BY SERVICE.NoSCE
HAVING COUNT(NoSS) > 100
ORDER BY SERVICE.NoSCE ;
40
All/Any
 La liste obtenue peut être traitée par un des opérateurs ALL ou ANY.
La requête est à placer dans une clause WHERE composée d’un opérateur de comparaison ( = ,
<> , < , > , <= , >=) suivi d’un des opérateurs ALL ou ANY, et suivi de la requête imbriquée.
 Avec l’opérateur ALL, la condition est vérifiée si la comparaison se vérifie pour toutes les valeurs
ramenées par la requête imbriquée.

 Avec l’opérateur ANY, la condition est vérifiée si la comparaison se vérifie pour au moins une
des valeurs ramenées par la requête imbriquée. L’opérateur SOME est synonyme de ANY.

 La requête existentielle est à placer dans une clause WHERE après le mot clé EXISTS. La
condition est vérifiée si la requête imbriquée donne un résultat composé d’au moins un tuple.
 Dans le cas du test d’unicité la requête est à placer dans une clause WHERE après le mot clé
UNIQUE. La condition est vérifiée si la requête imbriquée donne un résultat contenant un seul
tuple.

41

Vous aimerez peut-être aussi