Cours TBD G2
Cours TBD G2
Cours TBD G2
Notes de cours
SOMMAIRE
Chapitre 1 : Introduction
Chapitre 8 : Normalisation
1. INTRODUCTION
1.1. Objectifs
• Définition : base de données (BD) = ensemble de données accessibles et
• Exemples de SGBD :
• Exemples d’utilisations :
- consultation (en local ou à distance1) des données relatives aux produits d’une
entreprise,
1 2
Intro. Internet, Intranet
cf. cours Système
Ir. Héritier Kangela heritierkangela2013@gmail.com ISC-GOMA
3
ou interfaces-utilisateurs,
proches).
• Conséquences :
- Redondances : fichiers contenant les mêmes données, mais utilisées par des
personnes différentes,
programmées (ex : contrôles sur date de naissance, sur code postal, numéro
de tél., ...),
2
Sous-ensemble du système d’exploitation
Ir. Héritier Kangela heritierkangela2013@gmail.com ISC-GOMA
4
1.6. Langages
• 2 types de langages :
• Langages procéduraux
Analyse fonctionnelle
• Classes d’utilisateurs
Code prog.
d’applications
Noyau du SGBD
(éval. / trait. des
requêtes)
Gestionnaire
de fichiers
Index Statistiques
Dictionnaire
Données
des données
2. MODELISATION CONCEPTUELLE
2.1. Introduction
Objectif = représentation symbolique et réduite de la réalité
Les modèles conceptuels de type entité-association (E/A) tels que MERISE sont
2.2. Entité
Définition : entité = représentation logique d’un individu (au sens large, c’est-à-dire
Une entité est caractérisée par son unicité => identifiant unique (“clé”). Ex : no. SS,
Une entité peut être représentée par un ensemble d’attributs 3 . Ex : nom d’une
personne, âge, adresse, nom d’un produit, prix unitaire, quantité en stock, ... Chaque
Une entité du monde réel est ainsi représentée par un ensemble d’attributs
Une entité peut être considérée comme dépendante si son existence est
conditionnée par l’existence d’une autre ou d’autres entités. Ex: si un produit n’est
livré que par un seul fournisseur et que ce fournisseur disparait, le produit va lui
3
La clé en fait partie.
4
A rapprocher de la notion de type en programmation (types étendus)
Ir. Héritier Kangela heritierkangela2013@gmail.com ISC-GOMA
8
2.3. Association
Une association relie des classes d’entités entre elles.
Ex: association reliant : (i) des commandes caractérisées par une date de commande,
le numéro d’identification du client, les numéros de produits commandés ainsi que les
quantités, avec (ii) des produits vendus par l’entreprise et caractérisées par un
Une association relie en général deux classes d’entités (ass. binaire), mais elle peut
Une association peut avoir des propriétés particulières. Par exemple, la date
Adhérent Exemplaire
Emprunter
date d’emprunt
Les entités jouent des rôles différents dans une association. Ex: un client passe une
commande, la commande est passée5 par un client (autre classe d’entités), le produit
Au sein d’une même classe, une ou plusieurs entités peuvent être mises en relation
La cardinalité d’une association pour une entité constituante est constituée d’une
5
Remarquer la dualité présent / passé
Ir. Héritier Kangela heritierkangela2013@gmail.com ISC-GOMA
9
Exemple : une commande peut concerner plusieurs produits, mais un produit peut
qu’on appelle aussi clé (ou clé primaire) d’accès à l’entité. Lorsqu’une entité possède
plusieurs identifiants uniques, la clé peut être choisie parmi ces identifiants qui sont
Cet identifiant peut être constitué par un seul attribut de l’entité (ex. no. SS), mais
parlera alors de clé composée. Ex: pour des personnes dont on ne connait pas le no.
SS, on peut combiner nom, prénom et code postal ou année de naissance afin de
On pourra aussi affecter à une association un identifiant unique qui sera obtenu par
Dans ce cas, on qualifiera l’entité d’entité faible (vs. entité forte). Cette notion est
-> losanges.
Les propriétés d’une entité sont également appelées des attributs, ou des
Notion d’héritage : une entité spécialisée hérite des attributs de l’entité généralisée.
3. MODELE RELATIONNEL
3.1. Introduction
• En 1970, CODD présente le modèle relationnel
mathématiques)
3.2. LE DOMAINE
Ensemble de valeurs atomiques d'un certain type sémantique
Ex. :
Les domaines sont les ensembles de valeurs possibles dans lesquels sont puisées les
données.
3.3. LA RELATION
Sous ensemble du produit cartésien de plusieurs domaines
vue logique (mathématique), il s’agit d’un prédicat qui met en relation les attributs
de la relation.
• Il n’y a pas d’ordre sur les lignes (ni sur les colonnes) dans une table / relation.
• Il n’y a pas non plus d’information sur l’organisation physique (stockage des
Le schéma de la BDR qui dit comment les données sont organisées dans la base
suivant :
• Les langages de calcul relationnel, qui sont des langages de type déclaratif (ou
(LDD)
Données
GRANT – REVOKE – COMMIT – ROLLBACK – Contrôle des données Langage de contrôle des
4.4. Variables
Les principaux types disponibles sont :
• INT entier
égale à 64
• Suppression de tables :
(valeur_attribut_1, …, valeur_attribut_n)
condition]
» à savoir :
− Pour voir tous les attributs d’une relation : select * from nom_table
Attention : même si le langage SQL est normalisé, chaque SGBD a des particularités
5. ALGEBRE RELATIONNELLE
6.1. Introduction
• Les requêtes SQL soumises par l’utilisateur sont traduites par le SGBD en
manipulation qu’utilise le SGBD pour effectuer des opérations sur les relations
(tables).
Utilisateurs
Requêtes SQL
SGBD
Algèbre relationnelle
6.2. Opérateurs
• Deux types d’opérateurs, unaires (opérant sur une relation) et binaires (opérant
• Cinq opérateurs de base : sélection (σ), projection (π), union (∪), différence (-)
r ∩ s = r - (r - s) r
s = σ (r x s)
relations
n’appartenant pas à s
relation t (de même schéma) contenant l’ensemble des données appartenant à la fois
à r et à s
attributs Ai1, Ai2, …, Aip est une relation r’ de schéma R’ (A i1, Ai2, …, Aip) dont les
données sont obtenus par élimination des valeurs des attributs de R n’appartenant
Sélection (r σ s) : la sélection sur la relation r par une qualification Q est une relation
de tous les données qui, concaténés à chacun des données de s, donnent toujours un
données de r.
Exemples :
Prix).
Cela permet d’exploiter la puissance des bases de données relationnelles pour obtenir
des résultats qui combinent les données de plusieurs tables de manière efficace.
Exemple
l’égalité des valeurs d’une colonne d’une première table par rapport à la valeur d’une
Imaginons qu’une base de 2 données possède une table " utilisateur " et une autre
table " adresse " qui contient les adresses de ces utilisateurs. Avec une jointure, il
est possible d’obtenir les données de l’utilisateur et de son adresse en une seule
requête. On peut aussi imaginer qu’un site web possède une table pour les articles
(titre, contenu, date de publication …) et une autre pour les rédacteurs (nom, date
d’inscription, date de naissance …). Avec une jointure il est possible d’effectuer une
seule recherche pour afficher un article et le nom du rédacteur. Cela évite d’avoir à
afficher le nom du rédacteur dans la table " article ". Il y a d’autres cas de jointures,
incluant des jointures sur la même table ou des jointures d’inégalité. Ces cas étant
assez particulier et pas si simple à comprendre, ils ne seront pas élaborés sur dans
ce cours.
Types de jointures
condition est vraie dans les 2 tables. C’est l’une des jointures les plus communes.
2 tables. En d’autres mots, permet de joindre chaque ligne d’une table avec chaque
ligne d’une seconde table. Attention, le nombre de résultats est en général très élevé.
• LEFT JOIN (ou LEFT OUTER JOIN) : jointure externe pour retourner tous
• RIGHT JOIN (ou RIGHT OUTER JOIN) : jointure externe pour retourner
• FULL JOIN (ou FULL OUTER JOIN) : jointure externe pour retourner les
résultats quand la condition est vrai dans au moins une des 2 tables.
Dans le langage SQL la commande INNER JOIN, aussi appelée EQUIJOIN, est un
type de jointures très communes pour lier plusieurs tables entre-elles. Cette
commande retourne les enregistrements lorsqu’il y a au moins une ligne dans chaque
Syntaxe
Pour utiliser ce type de jointure il convient d’utiliser une requête SQL avec cette
syntaxe :
SELECT *
FROM table1
Exemple
Imaginons une application qui possède une table utilisateur ainsi qu’une table
commande qui contient toutes les commandes effectuées par les utilisateurs.
Table utilisateur :
Table commande :
Pour afficher toutes les commandes associées aux utilisateurs, il est possible
Résultats :
b)
CROSS JOIN
Dans le langage SQL, la commande CROSS JOIN est un type de jointure sur 2 tables
SQL qui permet de retourner le produit cartésien. Autrement dit, cela permet de
retourner chaque ligne d’une table avec chaque ligne d’une autre table. Ainsi
effectuer le produit cartésien d’une table A qui contient 30 résultats avec une table
commande CROSS JOIN est combinée avec la commande WHERE pour filtrer les
Attention, le nombre de résultat peut facilement être très élevé. S’il est effectué
sur des tables avec beaucoup d’enregistrements, cela peut ralentir sensiblement le
serveur.
Syntaxe
Pour effectuer une jointure avec CROSS JOIN, il convient d’effectuer une requête
SELECT *
FROM table1
SELECT *
L’une ou l’autre de ces syntaxes permettent d’associer tous les résultats de table1
Exemple
Pour une raison quelconque l’application doit associer tous les légumes avec tous les
fruits. Toutes les combinaisons doivent être affichées. Pour cela il convient
SELECT l_id, l_nom_fr_fr, f_id, f_nom_fr_fr FROM legume CROSS JOIN fruit
ou :
Dans le langage SQL, la commande LEFT JOIN (aussi appelée LEFT OUTER JOIN)
Cela permet de lister tous les résultats de la table de gauche (left = gauche) même
Syntaxe
Pour lister les enregistrements de table1, même s’il n’y a pas de correspondance avec
SELECT *
FROM table1
table1 tout en récupérant les données associées, même s’il n’y a pas de
correspondance avec table2. A savoir, s’il n’y a pas de correspondance les colonnes
Exemple
Imaginons une application contenant des utilisateurs et des commandes pour chacun
de ces utilisateurs. La base de données de cette application contient une table pour
les utilisateurs et sauvegarde leurs achats dans une seconde table. Les 2 tables sont
Table utilisateur :
Table commande :
Pour lister tous les utilisateurs avec leurs commandes et afficher également les
utilisateurs qui n’ont pas effectuées d’achats, il est possible d’utiliser la requête
suivante :
commande.utilisateur_id
Résultats
En SQL, la commande RIGHT JOIN (ou RIGHT OUTER JOIN) est un type de
jointure entre 2 tables qui permet de retourner tous les enregistrements de la table
de droite (right = droite) même s’il n’y a pas de correspondance avec la table de
Syntaxe
Cette syntaxe stipule qu’il faut lister toutes les lignes du tableau table2 (tableau de
Exemple
Prenons l’exemple d’une base de données qui contient des utilisateurs et un historique
d’achat de ces utilisateurs. Cette 2 tables sont reliées entre grâce à la colonne
utilisateur_id de la table des commandes. Cela permet de savoir à quel utilisateur est
associe un achat.
Table utilisateur :
Table commande :
Pour afficher toutes les commandes avec le nom de l’utilisateur correspondant il est
Résultats :
Dans le langage SQL, la commande FULL JOIN (ou FULL OUTER JOIN) permet de
combiner les résultats des 2 tables, les associer entre eux grâce à une condition et
Syntaxe
SELECT *
FROM table1
SELECT *
FROM table1
La condition présentée ici consiste à lier les tables sur un identifiant, mais la
Exemple
Prenons l’exemple d’une base de données qui contient une table utilisateur ainsi qu’une
Il est possible d’utiliser FULL JOIN pour lister tous les utilisateurs ayant effectué
ou non une vente, et de lister toutes les ventes qui sont associées ou non à un
FROM utilisateur
6. CALCUL RELATIONNEL
6.1. Introduction
Le calcul relationnel est langage déclaratif de niveau supérieur qui indique quel est
6.2. Vues
Une vue est une vision partielle ou particulière des données d'une ou plusieurs
tables de la base. La définition d'une vue est donnée par un SELECT qui indique
les données de la base qui seront vues. Les utilisateurs pourront consulter la
dire manipuler les données renvoyées par la vue comme si c'était des données
a) CREATE VIEW
ou
AS requête
Nom
b) DROP VIEW
DROP VIEW vue_Name
Supprime la vue.
il est possible de consulter la vue EMP10. Tout se passe comme s'il existait une table
voient les données, du découpage en tables. On sépare l'aspect externe (ce que voit
données. Si la structure des données est modifiée, les programmes ne seront pas à
modifier si l'on a pris la précaution d'utiliser des vues (ou si on peut se ramener à
a. DISTINCT
L’utilisation de la commande SELECT en SQL permet de lire toutes les données
lignes en doubles. Pour éviter des redondances dans les résultats il faut
suivante :
Cette requête sélectionne le champ " ma_colonne " de la table " nom_du_tableau
Permet de renommer le nom d’une colonne dans les résultats d’une requête SQL. C’est
pratique pour avoir un nom facilement identifiable dans une application qui doit
La syntaxe pour renommer une table dans une requête est la suivante :
c. WHERE
La commande WHERE dans une requête SQL permet d’extraire les lignes d’une
base de données qui respectent une condition. Cela permet d’obtenir uniquement
Syntaxe
Exemple: Pour obtenir seulement la liste des clients qui habitent à Paris, il faut
Exemple
Imaginons une base de données appelée " client " qui contient le nom des clients,
Pour obtenir seulement la liste des clients qui habitent à Paris, il faut effectuer la
requête suivante :
Opérateurs de comparaisons
Une requête SQL peut être restreinte à l’aide de la condition WHERE. Les
Les opérateurs sont à ajoutes dans la condition WHERE. Ils peuvent être combines
condition3)
Cela permet d’éviter les erreurs car et ça améliore la lecture d’une requête par
un humain.
d. IN
vérifier si une colonne est égale à une des valeurs comprise dans une liste des
valeurs déterminées. C’est une méthode simple pour vérifier si une colonne
est égale à une valeur OU une autre valeur OU une autre valeur et ainsi de
Syntaxe
Pour chercher toutes les lignes ou la colonne «nom_colonne " est égale a ‘valeur
valeur3,
...)
NB.
La syntaxe utilisée avec l’opérateur est plus simple que d’utiliser une succession
d’opérateur OR. Pour le montrer concrètement avec un exemple, voici 2 requêtes qui
retourneront les mêmes résultats, l’une utilise l’opérateur IN, tandis que l’autre
OR prenom = 'Thimote'
'Thimote' )
e. BETWEEN
L’opérateur BETWEEN est utilisé dans une requête SQL pour sélectionner un
Syntaxe
La requête suivante retournera toutes les lignes dont la valeur de la colonne "
Exemple1:
Si l’on souhaite obtenir les membres qui se sont inscrit entre le 1 avril 2020 et
AND ’2020-04-20′
Exemple2:
Si l’on souhaite obtenir tous les résultats dont l’identifiant n’est pas situé entre
clé permet d’effectuer une recherche sur un modèle particulier. Il est par
colonne commence par telle ou telle lettre. Les modèles de recherches sont
multiples.
Ir. Héritier Kangela heritierkangela2013@gmail.com ISC-GOMA
33
Syntaxe
Exemples:
• LIKE ‘%a’ : le caractère " % " est un caractère joker qui remplace tous
commence par " pa " et qui se terminent par " on ", comme " pantalon " ou "
pardon ".
contiennent la valeur NULL. Cet opérateur est indispensable car la valeur NULL
est une valeur inconnue et ne peut par conséquent pas être filtrée par les
Syntaxe
Pour filtrer les résultats ou les champs d’une colonne sont a NULL il convient
NB :
condition est vrai ou FALSE si la condition n’est pas respectée. Cet opérateur est
souvent utilisé avec la condition WHERE mais peut aussi trouve son utilité lorsqu’une
Procédures stockées
Pour SQL Server une procédure stockée peut être définie comme une suite
identifiée par son nom. Les procédures stockées (Stored Procedures) sont des
par simple appel de leur nom ou par l’instruction EXECUTE. Ce sont de véritables
programmes pouvant recevoir des paramètres, renvoyer des valeurs, être exécutés
à distance, ayant leurs propres droits d’accès (privilège EXECUTE). De plus, les
procédures stockées sont stockées dans le cache mémoire sous forme compilée lors
de leur première exécution, ce qui accroît les performances (pour les exécutions
suivantes !).
Syntaxe
Nom
Nom d’objet unique dans la base. Précédé d’un signe #, la procédure sera temporaire
Numéro
FOR REPLICATION
WITH RECOMPILE
WITH ENCRYPTION
Autres syntaxes.
AS
BEGIN
END
Remarque :
b) Exemples
AS
SELECT *
FROM clients
PROC´EDURES STOCK´EES 45
b.3) Dernier exemple avec un paramètre d’entrée muni d’une valeur par défaut :
AS
SELECT *
FROM clients
3 AS
e Utilisation
On peut ensuite utiliser ces procédures stockées dans du code SQL avec l’instruction
EXEC.
EXEC InfoDuClient 12
Remarque :
– On peut aussi utiliser des variables comme valeurs de paramètre (et pas
– Si la procédure a besoin d’une liste de paramètres, il faut les séparer par des
virgules ;
variable.
différents niveaux :
a) consultation
a) Dupont possède tous les droits d’accès (consultation, MAJ) sur la relation
PERSONNEL
modifier
d) Dupont ne peut que lire que l’information le concernant, et il peut modifier son
adresse
e) Dupont ne peut que lire que l’information le concernant, et il peut modifier son
f) Dupont ne peut que lire que l’information le concernant, et il peut modifier son
salaire s’il est responsable du service (information présente dans une autre
table)
relation)
Syntaxe
WITH DEFAULT_SCHEMA=schemaParDefaut
• SQL server
ALTER USER
nomUtilisateur
WITH
NAME=nouveauNomUtilisateur,
DEFAULT_SCHEMA =
nomNouveauSchema
b) Suppressions
passe saisi à l’installation). Cet utilisateur est le DBA que SQL SERVER vous offre.
droits.
Il existe des rôles prédéfinis et il est possible de définir ses propres rôles. Les
modifications sur les rôles sont dynamiques et les utilisateurs n’ont pas besoin de se
db_owner
activités possibles dans les autres rôles de la base de données, ainsi que la possibilité
membres de ce groupe vont créer des objets dont le propriétaire est dbo. Il s’agit
du propriétaire par défaut de tous les objets et il n’est pas nécessaire de le préciser
db_accessadmin
utilisateurs Windows.
db_datareader
db_datawriter
db_ddladmin
la base de données.
db_securityadmin
Permet de gérer les rôles, les membres des rôles, et les autorisations sur les
db_backupoperator
db_denydatareader
db_denydatawriter
Pour attribuer rôle de base de données à un user on exécute la requête SQL suivante
7.3. GRANT
Les droits d’utilisation des instructions SQL pour créer de nouveaux objets au
ordres SQL. Un utilisateur qui dispose de tels droits est capable par exemple
de créer ses propres tables, ses procédures... L’accord de ces droits peut être
dangereux et comme pour tous les droits, doivent être accordés uniquement
• CREATE DATABASE
• CREATE PROCEDURE
• CREATE FUNCTION
• CREATE TABLE
• BACKUP DATABASE
• CREATE VIEW
• BACKUP LOG
TO utilisateur[,...]
Permission
des privilèges d’exécution de toutes les instructions mais simplement sur les
instructions pour créer des bases de données, des tables, des procédures, des
fonctions, des tables vues ainsi que d’effectuer des sauvegardes de la base et
du journal.
Utilisateur
permissions.
Exemple1
Remarque : Paul et Henri doivent déjà posséder un compte utilisateur sur SQL
Server.
ou suppression) l’utilisateur peut réaliser sur des données contenues dans une
table, ou bien donner le droit d’exécution d’une procédure stockée. Ces droits
Par défaut, il s’agit de toutes les colonnes. Les principaux droits d’utilisation des
ordres :
• INSERT
• UPDATE
• DELETE
• SELECT
Les droits sont accordés par la commande GRANT dont voici la syntaxe :
GRANT {ALL [PRIVILEGES]|permission[(colonne,[,...])]
[,...]}
ON
objet[,...]
TO utilisateur
[,...]
[WITH GRANT
OPTION ]
des droits. Il est préférable de passer par une vue ou bien une procédure stockée
Exemple :
Livre
7.4 Revoke
Permet de retirer des droits à un utilisateur (ou plusieurs sur certains SGBD)
[CASCADE ]
ou
8. NORMALISATION
8.1. Introduction
L'objectif de la normalisation est de construire un schéma de base de données
normales.
modifications). Exemple :
Prix).
données.
jointure nécessaires.
Les 3 premières formes normales ont été proposées par E.F. Codd ("inventeur" du
1974. Les 4ème (1977) et 5ème (1979) formes normales ont été proposées ensuite par
Fagin, mais elles ne concernent que des cas rares et très spécifiques.
Les formes normales s'appuient sur les dépendances fonctionnelles entre attributs
a1, a2, b1, b2 étant des réalisations (valeurs) des attributs A et B dans des données
de la base de données.
Exemple :
Soit le schéma de relation PERSONNE (No_SS, Nom, Adresse, Age, Profession). Les
suivantes :
No_SS -> Nom, No_SS -> Adresse, No_SS -> Age, No_SS -> Profession.
L'attribut No_SS détermine tous les attributs du schéma de relation. Il s'agit d'une
Exercice :
A B C D E
a1 b1 c1 d1 e1
a1 b2 c2 d2 e1
a2 b1 c3 d3 e1
a2 b1 c4 d3 e1
a3 b2 c5 d1 e1
Définition : une relation est en 1ère forme normale si elle ne contient que des " valeurs
De la même façon, on ne pourra pas mettre dans un même attribut Parent tous les
enfants d'une personne. Il faudra, soit prévoir autant de colonnes que de nombre
d'enfants possibles, soit insérer dans la base autant de données que d'enfants en
d'applications telles que la conception assistée par ordinateur (CAO) ou les systèmes
La 2ème forme normale s'appuie sur la notion de DF " complète" (ou "pleine"). Une DF
X -> Y est complète si, X et Y étant attributs d'une même relation, Y n'est pas
Définition : une relation est en 2 ème forme normale si elle est déjà en 1ère forme
complètes.
Remarque : si toutes les DF sont des DF "simples", avec un seul attribut en partie
"transitives".
Définition : une relation est en troisième forme normale si elle satisfait FN1 et
relation.
Pour rendre la relation FN3, il faut donc éliminer les DF transitives en plaçant
Autre définition : Une relation est FN3 si, pour toute DF X -> A s'appliquant sur R
avec A non inclus dans X, soit X est clé de R, soit A fait partie d'une clé de R.
comme ensemble de DF F = {Nom_F -> Adresse_F ; Nom_F Produit -> Prix}. La clé
de R est [Nom_F Produit]. Pour Nom_F -> Adresse_F, Nom_F n'est pas clé, et
Adresse_F ne fait pas partie de la clé. La relation n'est donc pas FN3.
Avec FN3, les DF partielles et transitives ont été éliminées pour les clés primaires,
mais il faut également considérer les autres clés possibles (clés "candidates") si elles
existent.
Remarque : si la relation ne contient qu'une clé et qu'elle est FN3, alors elle est aussi
FNBC.
Définition : une relation est FNBC si elle est FN1, FN2 et FN3, et si toutes les parties
Autre définition : une relation est FNBC si, pour toute DF X -> A s'appliquant sur R
comme ensemble de DF F = {Nom_F -> Adresse_F ; Nom_F Produit -> Prix}. La clé
de R est [Nom_F Produit]. Pour Nom_F -> Adresse_F, Nom_F n'est pas clé, et la
9.1. Introduction
9.1.1. Organisation physique des données sur disque
Un disque (parfois désigné comme un volume) est organisé en pistes qui sont-elles
L'unité élémentaire d'information qui peut être lue ou écrite sur un disque est le
disque à une adresse donnée (no. piste / no. cylindre + no. secteur),
au système d'exploitation.
Pour diminuer les phases d'initialisation et de terminaison, les données sont lues /
tampon est plein / vide, une opération d'écriture / lecture est réalisée.
Schéma Disque
logique (par exemple personne) ou physique (bloc ou secteur physique d'un disque).
On aura donc des enregistrements logiques (ou articles) en correspondance avec des
La clé est l'identifiant unique d'un enregistrement logique (par exemple no. de
Schéma Fichier
suite les uns des autres dans des enregistrements physiques, indépendamment de
leur contenu.
L'organisation des données sur disque est fixée lors de la création du fichier. Le
placement des données sur disque lors des opérations d'écriture / insertion dépend
de ce choix d'organisation.
Schéma Organisations
modification / suppression.
d'accès), en ne lui laissant voir (si possible) que l'organisation logique qu'il a lui-même
définie.
9.2.2. Performances
réel).
l'efficacité en ce domaine passe par une organisation physique des données efficace.
b) un fichier créé par le SGBD, le dictionnaire des données, qui contiennent des
c) des fichiers créés par le SGBD, les index, qui permettent d'accélérer les
fichiers, nombre de valeurs différentes par attribut, …), mais aussi aux opérations
b) la mémoire "cache",
d) des unités d’archivage tel que des bandes magnétiques ou disques optiques.
EXERCICES D'APPLICATION
1. On considère la base de données
BD AIRBASE suivante :
Convention :
Les clés primaires sont soulignées et les clés étrangères sont précédés du
caractère "#"
Q1 : Donnez la liste des avions dont la capacité est supérieure à 350 passagers.
Q3 : Quels sont les numéros des pilotes en service et les villes de départ de
leurs vols ?
Q5 : Quel est le nom des pilotes domiciliés à Paris dont le salaire est supérieur
à 15000 ? Q6 : Quels sont les avions (numéro et nom) localisés à Nice ou dont
Q8 : Quels sont les numéros des pilotes qui ne sont pas en service ?
Q9 : Quels sont les vols (numéro, ville de départ) effectués par les pilotes de
EXERCICE 2
Sachant que les champs soulignés dans le modèle Logique des données
sont des clés Primaires et les champs précédés par ”#” sont des clés
étrangères.
NB: La désignation des articles ne doit pas accepter des valeurs nulles
supérieur ou égal à
ZERO.
9. Insérer les enregistrements dans les 3 tables selon les tables ci-
dessus.
10. Ajouter le numéro de téléphone pour les clients qui n’en possèdent
pas.
11. Supprimer tous les articles dont le prix est entre 12 et 20.
EXERCICE 4
a) DATE '18/11/2004'
b) DATE '2002-11-18'
e)123,55
f)1E-10
Ir. Héritier Kangela heritierkangela2013@gmail.com ISC-GOMA
56
g)3.145 E-1
h)'456,78'
EXERCICE 5
Une société désire informatiser les visites des chantiers de ses employés. Pour
définir cette base de données, une première étude fait apparaître les
informations suivantes :
le numéro d’immatriculation, le type (un code valant par exemple 0 pour une
camionnette, 1 pour une moto et 2 pour une voiture) ainsi que le kilométrage en
fin d’année.
• Chaque jour, un seul employé sera désigné conducteur des visites d’un véhicule.
transportés.
Exercice 6 :
Tour de France 97, dont une des étapes de type "contre la montre individuel"
se déroula à Saint-Etienne :
NuméroCoureur*)
Remarque : les clés primaires sont soulignées et les clés étrangères sont
marquées par *
Questions :
coureurs) ?
Montagne"?
4 - Quels sont les noms des coureurs qui n'ont pas obtenu de bonifications ?
5 - Quels sont les noms des coureurs qui ont participé à toutes les étapes ?
6 - Quel est le classement général des coureurs (nom, code équipe, code pays et
temps des coureurs) à l'issue des 13 premières étapes sachant que les
bonifications ont été intégrées dans les temps réalisés à chaque étape ?
7 - Quel est le classement par équipe à l'issue des 13 premières étapes (nom et
EXERCICE 7
Soit le modèle relationnel suivant relatif à la gestion des notes annuelles d'une
promotion d'étudiants :
Remarque : les clés primaires sont soulignées et les clés étrangères sont
Requête 2 - Quelles sont, parmi l'ensemble des notes, la note la plus haute et la
Requête 3 - Quelles sont les moyennes de chaque étudiant dans chacune des
matières ?
Requête 7 - Quels sont les étudiants qui ont une moyenne générale supérieure
EXERCICE 8
Tour de France 97, dont une des étapes de type "contre la montre individuel"
se déroula à Saint-Etienne :
PAYS(CodePays, NomPays)
TYPE_ETAPE(CodeType, LibelléType)
Questions :
des coureurs) ?
Requête 3 - Quel est le nombre de kilomètres total des étapes de type "Haute
Montagne"?
Requête 4 - Quels sont les noms des coureurs qui n'ont pas obtenu de
bonifications ?
Requête 5 - Quels sont les noms des coureurs qui ont participé à toutes les
étapes ?
Requête 6 - Quel est le classement général des coureurs (nom, code équipe,
code pays et temps des coureurs) à l'issue des 13 premières étapes sachant que
les bonifications ont été intégrées dans les temps réalisés à chaque étape ?
Requête 7 - Quel est le classement par équipe à l'issue des 13 premières étapes
EXERCICE 9
alphabétique.
boissons alcoolisées.
6. Nom du restaurant, nom du chef, nombre d‘étoiles, prix mini, moyen et maxi
10. Donnez la liste des restaurants (nom, adresse, téléphone) qui proposent
11. Donnez la liste (idem) des restaurants ayant le même nombre d’étoiles