Fondements de BD
Fondements de BD
Fondements de BD
Module: Fondements de BD
Niveau : 1LSI
1
Chapitre 1: Introduction
2
LES BASES DE DONNÉES
Toute organisation a besoin d'informations.
Exemples :
3
LES BASES DE DONNÉES
7
QUE DOIT-ON SAVOIR POUR
UTILISER UN SGBD?
9
SCHÉMA DE DONNÉES
Un modèle de données définit un mode de
représentation de l’information selon trois composantes:
10
SCHÉMA DE DONNÉES
11
L’ARCHITECTURE ANSI/SPARC
12
L’ARCHITECTURE ANSI/SPARC
Le niveau externe:
Le concept de vue permet d'obtenir
l'indépendance logique
Le niveau conceptuel:
il contient la description des données et des
contraintes d’intégrité (Dictionnaire de Données)
le schéma logique découle d’une activité de
Modélisation
Le niveau interne
il correspond aux structures de stockage et aux
moyens d’accès (index)
14
NOTION DE MODÉLISATION DE DONNÉES
15
MODÈLE ENTITÉ/ASSOCIATION
16
SCHÉMA RELATIONNEL
Il n’existe en effet qu’une seule structure, la relation. Une
relation peut simplement être représentée sous forme de
table. Une relation a donc un nom (Film) et se compose
d’un ensemble de colonnes désignées par un nom
d’attribut.
18
MODÈLE ENTITÉ/ASSOCIATION
19
CONCEPT ENTITÉ
Représentation d’un objet matériel ou immatériel
Par exemple un employé, un projet, un bulletin de
paie
23
LES CARDINALITÉS
Lacardinalité d’une association pour une entité
constituante est constituée d’une borne
minimale et d’une borne maximale :
26
LES CARDINALITÉS
Lien fonctionnel 1:n
Une instance de A ne peut être associée qu'à une
seule instance de B
Par exemple :
27
Unemployé ne peut travailler que dans un seul
département
LES CARDINALITÉS
Lien hiérarchique n:1
Une instance de A peut être associée à plusieurs
instances de B
28
Un département emploie généralement plusieurs
employés
LES CARDINALITÉS
Lien maillé n:m
Une instance de A peut être associée à plusieurs
instances de B et inversement
Par exemple :
De ce schéma, on déduit qu’un employé peut
participer à plusieurs projets.
29
EXEMPLE DE DIAGRAMME E/A
30
EXERCICE
On veut représenter la gestion de la SACEM :
Nous devons représenter :
Des livres avec : numéro du livre (ISBN), Titre du livre
Attention : ici un « livre » n’est pas le « livre physique » (un exemplaire) mai
plutôt une « édition »
L’investigation du domaine a permis de définir les règles suivantes :
Un livre peut être :
Écrit par plusieurs auteurs
Édité par plusieurs éditeurs, mais une seul fois par chacun d’entre eux.
Pour distinguer, on donne alors l’année éditions
Stocké dans plusieurs dépôts, et cela pour chaque éditeur.
31
Chaque livre stocké est stocké avec une quantité définie.
Donner le schéma entité-association et les éventuels contraintes d’intégri
Chapitre 3:
Modèle Relationnel
32
LES MODÈLES DE DONNÉES
L'organisation des données au sein d'une BD a une
importance essentielle pour faciliter l'accès et la mise à
jour des données
33
LES MODÈLES DE DONNÉES
Les modèles hiérarchique et réseau sont issus du modèle
GRAPHE
données organisées sous forme de graphe
langages d'accès navigationnels (adressage par liens
de chaînage)
on les appelle "modèles d'accès«
35
LE MODÈLE RELATIONNEL
En 1970, CODD présente le modèle relationnel
Schéma logique représenté par des RELATIONS
intégrités référentielles
LE MODÈLE RELATIONNEL
Exemple
37
LE MODÈLE RELATIONNEL: AVANTAGES
SIMPLICITE DE PRÉSENTATION: représentation
sous forme de tables
OPÉRATIONS RELATIONNELLES
algèbre relationnelle
langages assertionnels
INDEPENDANCE PHYSIQUE
concept de VUES
MAINTIEN DE L’INTEGRITÉ
39
HISTORIQUES ET SYSTÈMES
40
HISTORIQUES ET SYSTÈMES
Principaux systèmes
Oracle
DB2 (IBM)
Ingres
Informix
Sybase
SQL Server (Microsoft)
Gemstone
Sur micro :
Access
Paradox
FoxPro
Windev
Sharewares :
MySQL 41
MSQL, Postgres
InstantDB
MODÈLE RELATIONNEL: CONCEPTS
LE DOMAINE:
ensemble de valeurs atomiques d'un certain type
sémantique
Exemple:
NOM_VILLE = { Nice, Paris, Rome }
Exemple:
« Dupont pierre est un élève né le 1 janvier1992 »
44
MODÈLE RELATIONNEL: CONCEPTS
LES ATTRIBUTS
Chaque composante d'une relation est un attribut
Le nom donné à un attribut est porteur de sens
Il est en général différent du nom de domaine
Plusieurs attributs peuvent avoir le même domaine
Exemple:
La relation TRAJET :
TRAJET ⊂ NOM_VILLE × NOM_VILLE
Dans laquelle la première composante représente la ville
de départ VD, la deuxième composante la ville d’arrivée
VA d’un trajet.
45
MODÈLE RELATIONNEL: CONCEPTS
LE SCHÉMA D’UNE RELATION
Le schéma d'une relation est défini par :
le nom de la relation
la liste de ses attributs
on note : R (A1, A2, ... , An)
Exemple:
ELEVE (NOM, PRENOM, NAISS)
INSCRIPT (NOM_ELV, SPORT)
TRAJET (VD, VA)
46
MODÈLE RELATIONNEL: CONCEPTS
LE SCHÉMA D’UNE BDR
Le schéma d'une base de données est défini par l'ensemble
des schémas des relations qui la composent
47
MODÈLE RELATIONNEL: EXEMPLE
Exemple:
48
EXERCICE
49
DÉPENDANCE FONCTIONNELLE
Soit R(A1, A2, ...., An) un schéma de relation
Soit X et Y des sous ensembles de {A1,A2,...An)
Exemple:
PRODUIT (no_prod, nom, prixUHT)
Exemple:
CATEG (no_cat, design, tva)
PRODUIT(no_prod, nom, marque, #no_cat, prixUHT)
no_cat dans PRODUIT est une clé étrangère (représenté
par #no_cat dans PRODUIT) 52
INTÉGRITÉ DE CLÉ
Les valeurs de clés primaires doivent être :
Uniques
non NULL
Unicité de clé
Unicité des n-uplets 54
LES RÈGLES D’INTÉGRITÉ
INTÉGRITÉ RÉFÉRENCIELLE
Les valeurs de clés étrangères sont 'NULL' ou sont des
valeurs de la clé primaire auxquelles elles font référence
Relations dépendantes
55
LES RÈGLES D’INTÉGRITÉ
INTÉGRITÉ RÉFÉRENCIELLE
Exemple :
CLIENT (no_client, nom, adresse)
ACHAT (#no_produit, #no_client, date, qte)
Clé étrangère no_client dans ACHAT(représenté par le
#no_client)
insertion tuple no_client = X dans ACHAT: vérification si X
existe dans CLIENT
suppression tuple no_client = X dans CLIENT
Redondances
Valeurs NULL
57
FORME NORMALE
La décomposition
Objectif:
59
FORME NORMALE
1ère Forme Normale 1FN
Une relation est en 1FN si tout attribut est atomique (non
décomposable)
Contre-exemple
ELEVE (no_elv, nom, prenom, liste_notes)
Un attribut ne peut pas être un ensemble de valeurs
Décomposition
ELEVE (no_elv, nom, prenom)
NOTE (#no_elv, #no_matiere, note)
60
FORME NORMALE
2ème Forme Normale 2FN
Une relation est en 2FN si
elle est en 1FN
si tout attribut n’appartenant pas à la clé ne dépend
pas d’une partie de la clé
C’est la phase d’identification des clés
Cette étape évite certaines redondances
Tout attribut doit dépendre fonctionnellement de la
totalité de la clé
Contre-exemple
une relation en 1FN qui n'est pas en 2FN
COMMANDE (date, #no_cli, #no_pro, qte, prixUHT)
elle n'est pas en 2FN car la clé = (date, no_cli, no_pro),61
et le prixUHT ne dépend que de no_pro
FORME NORMALE
2ème Forme Normale 2FN
Contre-exemple
une relation en 1FN qui n'est pas en 2FN
COMMANDE (date, #no_cli, #no_pro, qte, prixUHT)
elle n'est pas en 2FN car la clé = (date, no_cli, no_pro),
et le prixUHT ne dépend que de no_pro
Décomposition
COMMANDE (date, no_cli, no_pro, qte)
PRODUIT (no_pro, prixUHT)
62
FORME NORMALE
3ème Forme Normale 3FN
Une relation est en 3FN si
elle est en 2FN
si tout attribut n’appartenant pas à la clé ne dépend
pas d’un attribut non clé
Ceci correspond à la non transitivité des D.F. ce qui
évite les redondances.
En 3FN une relation préserve les D.F. et est sans
perte.
Contre-exemple
une relation en 2FN qui n'est pas en 3FN
VOITURE (matricule, marque, modèle, puissance)
on vérifie qu'elle est en 2FN ; elle n'est pas en 3FN car la63
clé = matricule, et la puissance dépend de (marque,
modèle)
FORME NORMALE
3ème Forme Normale 3FN
Contre-exemple
une relation en 2FN qui n'est pas en 3FN
VOITURE (matricule, marque, modèle, puissance)
on vérifie qu'elle est en 2FN ; elle n'est pas en 3FN car la
clé = matricule, et la puissance dépend de (marque,
modèle)
Décomposition
VOITURE (matricule, marque, modèle)
64
MODELE (marque, modèle, puissance)
FORME NORMALE
3ème Forme Normale de BOYCE-CODD BCNF
Contre-exemple
une relation en 3FN qui n'est pas BCNF
CODEPOSTAL (ville, rue, code)
on vérifie qu'elle est FN3, elle n'est pas BCNF car la clé =
(ville, rue) (ou (code, ville) ou (code, rue)), et code → ville
66
EXERCICE
En quelle forme normale est la relation suivante, qui
concerne les employés d’une société implantée sur
plusieurs bâtiments?
EMPLOYES (NumE, Nom, Salaire, Département,
Bâtiment)
Sachant qu’un employé travaille dans un département
donné, et qu’aucun département ne possède des locaux
dans plusieurs bâtiments.
68
DÉFINITION
Une requête est une expression algébrique qui s’applique
à un ensemble de relations (la base de données) et produit
une relation finale (le résultat de la requête).
o La sélection dénotée
o La projection dénotée
o L’union dénotée
o La différence dénotée -
o La jointure dénotée
70
LA SÉLECTION
Exemple:
adresse='Sousse' (Client)
71
LA PROJECTION
Exemple:
Numclt,Nomclt(Client)
72
LE PRODUIT CARTÉSIEN X
Exemple:
R S RxS
73
L’UNION
RS
74
LA DIFFÉRENCE -
Exemple:
R-S
75
LA JOINTURE
Exemple:
Vente Produit
76
Chapitre 5:
Langage SQL
-La recherche
77
LES OPÉRATIONS SUR LES DONNÉES
La destruction
La recherche
L’insertion
SELECT nomStation
81
FROM Station
WHERE region = ’Antilles’
SÉLECTIONS SIMPLES
Le résultat d’un ordre SQL est toujours une relation (une
table) temporaire dont les attributs sont ceux spécifiés
dans la clause SELECT. On peut donc considérer en
première approche ce résultat comme un ’découpage’,
horizontal et vertical, de la table indiquée dans le FROM.
Les fonctions applicables aux valeurs des attributs sont
par exemple les opérations arithmétiques (*, ...) pour les
attributs numériques ou des manipulations de chaîne de
caractères (concaténation, souschaînes, mise en
majuscule, ...).
Il n’existe pas de norme mais la requête suivante devrait
fonctionner sur tous les systèmes : on convertit le prix des
activités en euros et on affiche le cours de l’euro avec
chaque tuple. 82
SÉLECTIONS SIMPLES
Exemple:
SELECT libelle, prix / 6.56, ’Cours de l’euro = ’, 6.56
FROM Activite
WHERE nomStation = ’Santalba’
Ce qui donne le résultat :
83
SÉLECTIONS SIMPLES
Renommage
Les noms des attributs sont par défaut ceux indiqués
dans la clause SELECT, même quand il y a des
expressions complexes. Pour renommer les attributs, on
utilise le mot-clé AS.
Exemple:
SELECT libelle, prix / 6.56 AS prixEnEuros, ’Cours de
l’euro = ’, 6.56 AS cours
FROM Activite
WHERE nomStation = ’Santalba’
On obtient alors :
84
SÉLECTIONS SIMPLES
Doublons
L’introduction de fonctions permet d’aller au-delà de ce qui
est possible en algèbre relationnelle. Il existe une autre
différence, plus subtile: SQL permet l’existence de doublons
dans les tables (il ne s’agit donc pas d’ensemble au sens
strict du terme). La spécification de clés permet d’éviter les
doublons dans les relations stockées, mais il peuvent
apparaître dans le résultat d’une requête.
Exemple :
SELECT libelle
FROM Activite
91
SÉLECTIONS SIMPLES
AND & OR
Une requête SQL peut être restreinte a l'aide de la
condition WHERE. Les opérateurs logiques AND et OR
peuvent être utilisées au sein de la commande WHERE
pour combiner des conditions.
Les opérateurs sont ajoutés dans la condition WHERE.
Ils peuvent être combines à l'infini pour filtrer les
données comme souhaites.
L'opérateur AND permet de s'assurer que la condition1
ET la condition2 sont vrai .
L'opérateur OR vérifie quant a lui que la condition1 OU
la condition2 est vrai.
92
SÉLECTIONS SIMPLES
IN
L'opérateur logique IN dans SQL s'utilise avec la
commande WHERE pour vérifier si une colonne est
égale a une des valeurs comprise dans set de valeurs
déterminés.
Exemple:
SELECT *
FROM Client
WHERE addr_ville IN ( 'Paris', 'Graimbouville‘)
93
SÉLECTIONS SIMPLES
TO_CHAR(nombre, format)
Elle convertit un nombre en une chaine de caractère
selon un format défini.
Format est une chaîne de caractères pouvant contenir
les caractères suivants :
9 représente un chiffre (non représenté si non
significatif)
0 représente un chiffre (représenté même si non
significatif)
. point décimal apparent
Exemple:
Employee (CIN, NOM, PRENOM, SALAIRE, GRADE,
NDEPT)
Afficher tous les salaires avec un $ en tête et au moins
trois chiffres ( dont deux décimales)
FROM Employee
SÉLECTIONS SIMPLES
TO_CHAR(DATE, format)
permet de convertir une date en une chaine de caractère
selon un format défini. Le format indique quelle partie
de la date doit apparaître, c'est une combinaison des
codes suivants :
Scc : siècle avec signe
Cc: siècle
sy,yyy: année (avec signe et virgule)
y,yyy: année( avec virgule)
yyyy: année
yyy 3 derniers chiffres de l'année
yy 2 derniers chiffres de l'année
y dernier chiffre de l'année 96
99
SÉLECTIONS SIMPLES
Fonctions d’agrégation
Ces fonctions s’appliquent à une colonne, en général de
type numérique. Ce sont :
1. COUNT qui compte le nombre de valeurs non nulles.
2. MAX et MIN.
3. AVG qui calcule la moyenne des valeurs de la
colonne.
4. SUM qui effectue le cumul.
Exemple :
SELECT COUNT(nomStation), AVG(tarif), MIN(tarif),
MAX(tarif)
100
FROM Station;
SÉLECTIONS SIMPLES
Calcul sur plusieurs groupes
Il est possible de subdiviser la table en groupes,
chaque groupe étant l'ensemble des lignes ayant une
valeur commune.
C'est la clause GROUP BY qui permet de découper la
table en plusieurs groupes:
GROUP BY expr_1, expr_2, ...
Si on a une seule expression, ceci définit les groupes
comme les ensembles de lignes pour lesquelles cette
expression prend la même valeur.
Si plusieurs expressions sont présentés les groupes
sont définis de la façon suivante : parmi toutes les
lignes pour lesquelles expr_1 prend la même valeur,
on regroupe celles ayant expr_2 identique, ... 101
SELECT SUM(SALAIRE)
FROM Employee
GROUP BY NDEPT
102
SÉLECTIONS SIMPLES
Sélection des groupes
De la même façon qu'il est possible de sélectionner
certaines lignes au moyen de la clause WHERE, il est
possible dans un SELECT comportant une fonction de
groupe de sélectionner par la clause HAVING, qui se
place après la clause GROUP BY.
Le prédicat dans la clause HAVING suit les mêmes
règles de syntaxe qu'un prédicat figurant dans une
clause WHERE.
Cependant, il ne peut porter que sur des
caractéristiques du groupe : fonction de groupe ou
expression figurant dans la clause GROUP BY, dans
ce cas la clause HAVING doit être placée après la
103
clause GROUP BY.
SÉLECTIONS SIMPLES
Sélection des groupes
SELECT SVG(SALAIRE)
FROM Employee
GROUP BY GRADE
104
HAVING (COUNT(CIN)>2))
JOINTURE DES REQUÊTES
Les jointures en SQL permettent d’associer plusieurs
tables dans une même requête.
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.
En général, les jointures consistent à associer des lignes
de 2 tables en associant l’égalité des valeurs d’une
colonne d’une première table par rapport à la valeur
d’une colonne d’une seconde table.
Il y a d’autres cas de jointures, incluant des jointures sur
la même table ou des jointure d’inégalité.
105
JOINTURE DES REQUÊTES
Exemple:
109