Vous êtes sur la page 1sur 74

Bases de Données Avancées

Master I
Informatique

Université de Bejaia Dr. NASSIMA BOUADEM


- LIMED-
nassima.bouadem@univ-bejaia.dz

2021/2022 M1RN RS/SIA


Plan
BD
• BD: « un ensemble de données modélisant les objets d’une partie du
monde réel avec le moins de redondance » Georges Gardarin [1]
• Modèle le plus populaire pour la description de bases données (BD):
modèle relationnel, Proposé par Edgar Frank Codd [2]
• Basé sur la théorie des ensembles: tables relationnelle::ensembles,
opérateurs ensemblistes::intersection, union, produit cartésien et la
différence + opérateurs propres aux BD:: sélection, la projection, la
jointure et la division [3]
Système de Gestion de Bases de Données
(SGBD)
• Ensemble de programmes assurant le stockage, la modification,
l’accès et la maintenance de données de la BD indépendamment des
programmes d’application[1]
• Le logiciel de base qui permet de manipuler ces données est appelé
un système de gestion de bases de données – SGBD (database
management system – DBMS).
• Tout système d’information est construit autour de bases de données
• Avec la croissance importante du volume de données et de la
diversité de type de données les SGBD ont évolué (figure1)
Système de Gestion de Bases de Données (SGBD)
-évolution-

Big Data

SGBD NoSQL,
SGBD NewSQL (Données NoSQL, Big data,
données NewSQL, Hadoop,
SGBD Objet Relationnel (Oracle Si, DB2,….) Spanner)
+100Go (SQL99, Entrpôt de données, OLAP,
1999-2004 ETL, Data Mining, XML)
SGBD Orienté objet (ObjectStore, 02) (SQL1(86), SQL92, ODL, DQL, UML,
100Go
1985-1995 Données multimédias)
SGBD Relationnel (Oracle, Ingres)
2Go (QUEL, SQUEL, QBE(77), Relation,
1970-1980 OLTP)
Modèle hiérarchique (IBM) Modèle Réseau (CODASYL)
50Mo (Structure hiérarchique, Réseau)
1950-1960
Niveaux d’abstraction
Niveaux d’abstraction
• Niveau conceptuel:

• Description des données d’une entreprise ou d’une partie d’une entreprise


en termes de types d’objets et de liens logiques indépendants de toute
représentation en machine, correspondant à une vue canonique globale de la
portion d’entreprise modélisée.
Exemple
• Permet de définir:
• Les types de données élémentaires
(ex. Nom, Prénom, Titre, …)
- Les types de données composées
(ex. Etudiant, Formation,
Inscription)
- Les règles que devront suivre les
données au cours de leur vie (ex.
tout étudiant doit avoir une
inscription, une durée de
formation est 3 ans pour le niveau
Licence ou 2 ans pour le niveau
Master)
Niveaux d’abstraction
• Niveau interne:

• Description des données d’une base en termes de représentation physique


en machine, correspondant à une spécification des structures de
mémorisation et des méthodes de stockage et d’accès utilisées pour ranger
et retrouver les données sur disques.
Niveaux d’abstraction
• Niveau externe:

• Description d’une partie de la base de données extraite ou calculée à


partir de la base physique, correspondant à la vision d’un programme ou
d’un utilisateur, donc à un arrangement particulier de certaines données.
SGBD avantages
• Indépendance physique
• Indépendance logique
• Manipulation des données par des langages non procéduraux
• Accès plus efficace aux données
• Intégrité et sécurité des données
• Administration centrale des données
• Accès simultané et récupération après incident
• Réduction de temps dans le développement d’application
Fonctionnalités Principales des Bases
de Données
• Mémoriser de grandes quantités de données essentielles à la vie de
l’entreprise, les organiser,
• Faciliter les requêtes et permettre l’évolution,
• Donner l’accès à des applications diverses, à des utilisateurs différents
avec des modes d’accès variés.
Exemples de grandes applications
• Systèmes de compagnies aériennes
• Systèmes bancaires, d'assurance, commerciaux
• Bases de données scientifiques, techniques
• Biologie
• Astronomie
• Produits industriels
• Bases de données bibliographiques et, de plus en plus, interactions
entre applications de divers domaines
• santé, transports, tourisme, …
Exemple 1
• Pour une BD pour une compagnie aérienne

• Pour supporter les réservations:


• Quelles informations doivent être stockées ?
• Quels types d'interrogations sont souhaités ?
Exemple (suite)
• Les données
• les appareils
• les vols
• les aéroports
• les réservations
• les achats
• Les types d'interrogations
• Quels sont les vols au départ de X et arrivant à Y le 15 mars 2014 ?
• Quels sont les prix de ces vols ?
• Combien de passagers ont voyagé sur le vol 1234 du 15 mars 2014 ?
Exemple (suite)
• SGBD relationnel: les données sont stockées dans des tables
• Exemple :

• Requête SQL: Donner le type d'avion du vol 123


SELECT type_avion
FROM Vols
WHERE n°vol = 123 ;
Exemple (2) BD et le web
• Un site dynamique est construit sur une base de données
• l’utilisateur sollicite une page, la demande est envoyée au site,
• le serveur exécute un programme, les informations utiles sont extraites de la base de
données et répertoriés au serveur, une feuille de style est appliquée, un document
html est construit et envoyé
• sur le réseau, le document est affiché dans le navigateur de l’utilisateur.
• l’interêt est de distinguer les données des traitements et de l’affichage :
• pour modifier le contenu du site, il suffit de mettre à jour les informations dans la
base de données ;
• pour modifier la présentation, il suffit de modifier le style du document Web.
Conception d’une BD
Conception d’une BD
• Une des tâches essentielles des développeurs de bases de données

• Objectif :
• structuration du domaine d’application afin de de le représenter sous forme
de types et de tables
• d’accompagner ces structures de contraintes sur les données afin de tirer plus
de sémantique
Conception du schéma des bases(suite)
• La représentation doit être :

• Juste pour éviter les erreurs sémantiques, notamment dans les


réponses aux requêtes ;
• Complète pour permettre le développement des programmes
d’application souhaités ;
• Evolutive afin de supporter la prise en compte rapide de nouvelles
demandes.
Etapes de conception
• Démarche de conception traditionnelle : par abstractions successives
• En descendant depuis les problèmes de l’utilisateur vers le Système
de Gestion de Bases de Données.
• Cinq étapes :
• Perception du monde réel et capture des besoins
• Elaboration du schéma conceptuel
• Conception du schéma logique
• Affinement du schéma logique
• Elaboration du schéma physique
• Etape 1 : plutôt relative au domaine du génie logiciel

• Etapes 2, 3, 4 et 5 : relative au domaine des bases de données


Bases de données relationnelles
• Historiquement, durant trois générations d’évolution des bases de
données à savoir : (i) fichiers systèmes, (ii) bases de données
hiérarchiques, (iii) bases de données CODASYL, le développement de
ces modèles a connue des insuffisances qui persistaient.
• le manque d’indépendance des données et la difficulté d’accès à la
base de données
• naissance de la quatrième génération des bases de données à savoir
la technologie des Bases de Données Relationnelles (BDRs) ou
Relationnel Databases, caractérisées principalement par la notion de
requête déclarative (Kim 1990)
Modèle relationnel
• La structuration des données dans le modèle relationnel repose sur deux
principaux concepts : le domaine et la relation (Hainaut 2012).

• Un domaine: ensemble nommé de valeurs donné a priori. Chaque valeur


est supposée désigner un objet concret ou abstrait du monde réel.
• Une relation contienne des informations sur les objets et les liens.
• La relation peut être définit comme un ensemble d’agrégats de n valeurs,
chacune appartenant à un domaine. Un agrégat est appelé ligne et les
composants de même rang des lignes forment un attribut de la relation.
Modèle relationnel: concepts descriptifs
• Notion de domaine
• Produit cartésien
• Relation
• Attribut
• Clé
• Schéma de relation et de BD
• Clé étrangère
Concept domaine
• Domaine : Ensemble de valeurs

• Exemples
• Entier, réel, chaîne de caractères, booléen
• Salaire = 1000…100000 (€)
• Couleur = {‘rosé’, ‘blanc’, ‘rouge’}
Concepts produit cartésien
• Le produit cartésien de D1, ...., Dn est l'ensemble des n-uplets
(tuples) <V1, ...., Vn> tel que Vi ϵDi
• Notation:
• D1 X ....X Dn
• Exemple :
• D1 = {‘BD’, ‘IO’} (Code UV)
• D2 = {‘Chamil’, ‘Lami’, ‘Miri } (Prof)
Concept Relation
• Définition
• Sous-ensemble du produit cartésien d'une liste de domaines
• Caractérisée par un nom
• Exemple
• D1 = Code UV
• D2 = Prof
• Concraitement: une relation est un tableau à deux dimensions
• Une ligne est un n-uplet (tuple)
• On associe un nom à chaque colonne afin de la repérer
• Indépendamment de l'ordre = attribut
• Prend ses valeurs dans un domaine
• Exemple : code
Concepts Clé
• Définition: Une clé est un groupe d'attributs minimum qui détermine
un n-uplet unique dans une relation (à tout instant)
• Exemple
• Clé de Elève ?
• Clé de UV ?
• Clé de Inscrit ?
• Contrainte d'intégrité
• Toute relation doit posséder une clé renseignée (sans valeur inconnue)
Schéma d’une relation
• Définition
• Le schéma d'une relation décrit :
• Son nom
• La liste des attributs qu'elle comporte et des domaines associés
• La liste des attributs composant la clé (la clé est soulignée)
• Exemple
• Elève(num : entier, nom : chaîne, adresse : chaîne, age : entier de 18 à 35)
• Intention vs. Extension
• Schéma de relation : intention de la relation
• Table : extension
• Schéma d'une BD relationnelle : ensemble des schémas des relations
Clé étrangère
Une clé étrangère est un groupe d'attributs qui apparaît comme clé
dans une autre relation

• Rôle
• Les clés étrangères définissent des contraintes d'intégrités référentielles entre
relations
Bases de Données Avancées
Master I
Informatique

Université de Bejaia NASSIMA BOUADEM


- LIMED-
Nassima.bouadem@univ-bejaia.dz

2021/2022 M1RN RS/SIA


Chapitre1
(Suite )

Université de Bejaia NASSIMA BOUADEM


- LIMED-
Nassima.bouadem@univ-bejaia.dz

2021/2022 M1RN RS/SIA


Dépendance fonctionnelle élémentaire
• Une dépendance fonctionnelle (DF) donnée1 -> donnée2 est
élémentaire, s'il n'existe pas une donnée3, incluse dans donnée1, qui
assure elle-même une DF donnée3 -> donnée2.
• Exemples :
• Ref_Article -> Nom_Article VRAI
• Num_Facture, Ref_Article -> Qte_Article VRAI
• Num_Facture, Ref_Article -> Nom_Article FAUX
Dépendance fonctionnelle directe
• Une dépendance fonctionnelle (DF) donnée1 -> donnée2 est directe,
s'il n'existe pas une donnée3 (ou une collection de rubriques) qui
engendrerait une DF transitive donnée1 -> donnée3 -> donnée2.
• Exemples :
• Num_Facture -> Num_Représentant
• Num_Représentant -> Nom_Représentant
• Num_Facture -> Nom_Représentant DF non directe car on peut
écrire:
• Num_Facture -> Num_Représentant -> Nom_Représentant
Normalisation des relations
• À partir des règles sémantiques qui traduisent les contraintes de
l‘existant modélisé, le concepteur doit définir les dépendances à
introduire dans la définition du schéma relationnel.
• Ces dépendances seront utilisées pour générer les différentes
relations irréductibles du schéma.
Les différentes formes normales
d'une relation
• La théorie est basée sur une série de formes normales :
• Première forme normale (1FN)
• Deuxième forme normale (2FN)
• Troisième forme normale (3FN)
• Forme normale de Boyce and Codd
Première forme normale
• Une relation est dite en première forme normale (1NF), si chacun de
ses attributs a un domaine atomique mono-valué.
• Donc: les relations avec attributs dont les valeurs sont des ensembles
ou des listes ne sont pas en 1NF.
• NB: Les travaux menus dans le cadre des modèles orientés objet et des modèles
relationnels-objet visent justement à surpasser cette contrainte de 1NF.
Exemples
Lequel satisfait la 1FN?

No-cours Titre No pré-requis Type


GMC230 Energétique GIN400 et GIN200 Antérieure
GEI210 Electronique I GEI205 Antérieure
GEI215 Electronique II GEI210 Préalable

No-cours Titre No pré-requis Type


GMC230 Energétique GIN400 Antérieure
GMC230 Energétique GMC200 Antérieur
GEI210 Electronique I GEI205 Antérieure
GEI215 Electronique II GEI210 Préalable
Deuxième forme normale 2FN
• Une relation R est dite en deuxième forme normale si et seulement si:
• Elle est en première forme normale
• Si toutes les DFs entre la clé et les autres attributs sont élémentaires.
• Càd:
• tout attribut n’appartenant pas à une clé ne dépend pas d’une partie
de la clé de R
Exemple
• La relation:
EVALUATION(MODULE, FORMATION, LIBELLE, NOTE)
où la dépendance:
FORMATION  LIBELLE n’est pas en 2NF car
l’attribut LIBELLE ne dépend que de la partie FORMATION
de la clé MODULE, FORMATION
Troisième forme normale
• Une relation est en troisième forme normale (3NF) si
• (i) elle est en 2NF et si
• (ii) tout attribut n’appartenant pas à la clé ne dépend pas d’un
attribut non clé (ou encore ne dépend pas transitivement de la clé).
• Càd
• Toutes les DFs entre la clé et les autres attributs sont élémentaires
et directes.
Forme normale de Boyce and Codd
• Une relation R est en forme normale de Boyce and Codd (BCNF) si et
seulement si:
• les seules dépendances fonctionnelles élémentaires qu’elle
comporte sont celles où une clé détermine un attribut.
Exemple
• R(A, B*, C*, D)
• Avec les dépendances : B,C → A ; B,C → D ; D → B, (ce qui
entraine de nombreuses redondances)
• On propose les relations :
• R(A, B*, C*)
• R’ (D*, B#)
Normalisation par décomposition
• Selon Delobel et al, la relation R(A, B, C, D), qui a une dépendance
fonctionnelle AB peut être décomposée en deux relations R1(A, B)
et R2(A,C, D) (Delobel 1973).
• Pour l’exemple de la relation ACHAT, la décomposition sera comme
suit :
• ACHAT(CLIENT, PRODUIT, PRIX), PRODUITPRIX peut être
décomposée en deux relations TARIF(PRODUIT, PRIX) et
ACHAT(CLIENT, PRODUIT)
Exemple
• Malgré que la relation:
LIVRE(TITRE, PREMIER_AUTEUR, NATIONALITE_AUTEUR, PAGES,
ANNEE_EDITION, NUM_EDITION) avec les DFs
TITRE PREMIER_AUTEUR et
TITRE PREMIER_AUTEUR, NATIONALITE_AUTEUR est en 3NF
mais les redondances ne sont pas toutes éliminées. La forme normale
de Boyce and Codd permet d’éliminer ce type de redondance.
Exemple (suite)
Exemple
SQL : Structured Query Language
• SQL est un langage pour les BDR. Créé en 1970 par IBM. Ses
principales caractéristiques sont :
1. Normalisation : SQL implémente le modèle relationnel.
2. Standard : la plupart des éditeurs de SGBDR intègrent SQL à leurs
produits (Oracle, MS SQL Server, DB2, etc.) pour que les données,
requêtes et applications soient facilement portables d’une BD à une
autre.
3. Non procédural : SQL est un langage déclaratif non procédural
permettant d'exprimer des requêtes dans un langage relativement
simple. En contrepartie il n'intègre aucune structure de contrôle
permettant par exemple d'exécuter une boucle itérative.
Le langage de définition de données (LDD)
• Permet la description de la structure de la base de données (tables,
vues, attributs, index).
• Les commandes du LDD sont :

CREATE : création des objets.


ALTER : modification de la structure des objets.
DROP : suppression des objets
Création d’une table
• create table: on spécifie le nom de la table et la description de ses
colonnes (nom de la colonne et le type de ses valeurs)

Exemple:
Types de base (déclarer les colonnes)
• SMALLINT : entier signé long (par ex. 16 bits),
• INTEGER ou (INT) : entier signé long (par ex. 32 bits),
• NUMERIC(p, q) : nombre décimal de p chiffres dont q après le point
• décimal (q prend par défaut la valeur de 0),
• FLOAT(p) ou (FLOAT) : nombre en virgule flottante d’au moins p bits
• significatifs,
• CHARACTER(p) ou (CHAR) : chaîne de longueur fixe de p caractères,
• CHARACTER VARYING ou (VARCHAR(p)) : chaîne de longueur variable
• d’au plus p caractères,
• BIT(p) : chaîne de longueur fixe de p bits,
• BIT VARYING: chaîne de longueur variable d’au plus p bits,
• DATE: date (année, mois de et jour),
• TIME: instant (heure, minute, seconde, éventuellement 1000e de seconde),
• TIMESTAMP: date + temps,
• INTERVAL: intervalle en années/mois/jours entre dates ou en
• heures/minutes/secondes entre instants,
• Il est possible de déclarer des domaines de valeurs pour les types de
base comme suit :
Clé
• Elle peut être primaire:

• Secondaire
• elle peut être étrangère
Opérations sur les tables
• Une table peut être supprimée et son contenu sera perdu
• drop table EVALUATION
• La commande suivante ajoute la colonne NATIONALITE à la table
ETUDIANT :
alter table ETUDIANT add column NATIONALITE char(30);
• La commande suivante élimine la colonne DATE_EXAM de la table
EVALUATION :
alter table EVALUATION drop column DATE_EXAM;
• Une caractéristique d’une colonne peut être modifiée :
• alter table ETUDIANT alter column GENRE set default ‘M’;
• alter table ETUDIANT alter column GENRE drop default;
• Un domaine peut être modifié ou supprimé :
• alter domain NOTE set default 0.0;
• drop domain MATRICULE ;
• Il est possible d’ajouter une clé primaire :
• alter table ETUDIANT add primary key (NETUD);
• ou étrangère:
• alter table EVALUATION add foreign key (NETUD) references ETUDIANT;
• Lors de la déclaration d’une contrainte, Il est possible de la nommée:

• Il est possible d’ajouter une contrainte à une table existante


• alter table EVALUATION add constraint CT3 foreign key (NETUD)
references ETUDIENT;
• Il est aussi possible de supprimer une contrainte nommée existante:
alter table EVALUATION drop constraint CT3;
Data Manipulation Langage (DML)
• L’extraction est réalisée par une seule commande : la requête
• select
• trois parties principales:
- La clause select précise les colonnes à extraire
- La clause from précise la ou les table(s) à partir desquelles les
données seront extraites
- La clause where précise les conditions à respecter lors de la
sélection des lignes
Requête simple
• Afficher toutes les colonnes de la table ETUDIANT
select * from ETUDIANT;
• Afficher certaines colonnes NETUD, NOM, PRENOM de la table ETUDIANT
select NETUD, NOM, PRENOM from ETUDIANT;
• Afficher certaines lignes sélectionnées de la table ETUDIANT
select NETUD, NOM, PRENOM from ETUDIANT where LIEU_NAISS =
‘BEJAIA’;
• Pour éliminer les lignes en double, on peut utiliser la clause distinct
comme suit :
select distinct LIEU_NAISS from ETUDIANT where DATE_NAISS =
‘21/12/1971’;
Conditions
• Au lieu de l’égalité, on peut utiliser d’autres relations de comparaison (>,<, <>, >=, <=) qui correspondent respectivement à (plus
grand que, plus petit que, différent de, plus grand que ou égal, plus petit que ou égal)
• Exemple: Une condition peut porter sur l’existence de la valeur NULL
DATE_NAISS is null
DATE_NAISS is not null
• Une condition peut également porter sur l’appartenance à un ensemble :
GENRE in (‘F’, ‘M’) ou GENRE not in (‘F’, ‘M’)
• Ou à un intervalle:
• NOTE_EXAM between 0.0 and 20.00
• NOTE_EXAM not between 0.0 and 9.99
• Ou encore sur la présence de certains caractères dans une valeur
• PRENOM like ‘M_STAPHA’
• ADRESSE like ‘%BEJAIA%’ ou ADRESSE not like ‘%BEJAIA%’
• DATE_NAISS like ‘%1971%’
• Le signe “_” désigne un caractère quelconque et “%” désigne toute suite
de caractères.
• Pour utiliser les deux signes ensemble dans une même recherche, il suffit
de les préfixer par un caractère spécial comme suit :
ADRESSE like ‘%$_chaine%’
• Les conditions peuvent êtres composées :
select NOM, NOTE_EXAM from EVALUATION where NOM =’M%’ and
NOTE_EXAM>=10 ;
Données dérivées
• En plus des données extraites de la base de données, il est possible
de spécifier des données dérivées, des constantes et des alias de
colonnes:
• select ‘Moyenne de’, NETUD as ETUDIANT, ‘=’,
0.6*NOTE_EXAM+0.2*NOTE_TD+0.2*NOTE_TP as moy;
from EVALUATION
where moy>=10.00
Données dérivées
• Encore, il est possible de dériver des données en utilisant des
fonctions avec:
• la clause select ou la clause where et aussi avec les instructions
update et insert.
Fonctions statistiques
• count(*) : retourne le nombre de lignes trouvées,
• count(nom-colonne) : retourne le nombre de valeurs de la colonne,
• avg(nom-colonne) : retourne la moyenne des valeurs de la colonne,
• sum(nom-colonne) : retourne la somme des valeurs de la colonne,
• min(nom-colonne) : retourne la minimum des valeurs de la colonne,
• max(nom-colonne) : retourne la maximum des valeurs de la colonne
Condition par sous requêtes
• La requête suivante donne les étudiants qui ont passé les examens
des modules dont leurs libellés comportent la chaine de caractère
‘Algo’,
Extraction de données de plusieurs tables
• La requête suivante réalise une jointure entre les tables ETUDIANT et
EVALUATION où les lignes obtenues sont formées d’une ligne de
chacune des deux tables. Les lignes couplées ont la même valeur de la
colonne NETUD qui constitue une clé étrangère dans la table
EVALUATION et primaire dans la table ETUDIANT.
Extraction des données
• On peut fusionner les lignes obtenues d’une requête à celles
obtenues d’une autre requête en utilisant l’opérateur union comme
suit :
select ADRESSE from ETUDIANT where LIEU_NAISS <> ‘BEJAIA’
union
select ADRESSE from ETUDIANT where GENRE=’F’
• Cependant, l’utilisation de l’opérateur union all empêche l’élimination
des lignes en double.
Extraction de données groupées
• Par exemple, on peut obtenir le nombre d’étudiants pour chaque
groupe d’étudiants classés en utilisant la clause group by pour une
colonne donnée comme suit :
select NOM, PRENOM, count(*) as NOMBRE_ETUDIANTS
from ETUDIANT
group by GENRE
select NETUD, count(*)
from ETUDIANT
where NETUD in
(select NETUD
from EVALUATION
where NOTE_EXAM < 10.00)
group by NETUD
having count(*) >= 1;
Modification des données
• On peut ajouter des lignes à une table existante par l’instruction
insert. L’ordre des valeurs doit respecter l’ordre des colonnes lors de
leurs créations. Toute colonne non spécifiée prend la valeur null ou la
valeur par défaut.
Insert into EVALUATION values (‘1201’, ‘Algo1’, 14.5, 16.00, 15.00,
‘21/12/2019’);
References
• [1] Gardarin, G, Bases de données,2003Editions Eyrolles,
• [2] Codd, E.F., A relational model for data for large shared data banks.
Communications of the ACM, 1970. 13(6): p. 377-387.
• [3] Connolly, T.M. and C.E. Begg, Database systems: a practical
approach to design, implementation, and management. 2005:
Pearson education.

Vous aimerez peut-être aussi