BASES DE DONNEES et SGBD

publicité
BASES DE DONNEES
et SGBD
Conception
Structure
Organisation
Michel Tuffery
Bases de Données
Système de Gestion
de Bases de Données
Présentation
Historique des Systèmes de Gestion de Bases
de Données (SGBD)
SGBD
IMS IDMS
SOCRATE
1965
Langages
Assembleur
Fortran
Cobol
PL1
SGBD
Propriétaires
(hiérarchiques
ou réseaux)
System R DB2 INGRES
O2 ONTOS ORACLE INFORMIX
ORACLE INFORMIX ORION
(OR)
1975
1985
Pascal
C
2005
1995
C++
SGBD relationnels
Standard
SQL
Michel Tuffery
JAVA
SGBD
Objet
SGBD
Objet-Relationnel
3
BD et SGBD : Définitions
BD
Une Base de Données est un ensemble structuré
d’informations enregistrées mis à la disposition de
manière sélective à un ensemble d’utilisateurs
SGBD
Un Système de Gestion de Base de Données permet de gérer
toutes les informations stockées (Description, Consultation,
Adjonction, Modification, Suppression, Autorisations) en
toute sécurité dans un contexte multi-utilisateurs.
Michel Tuffery
4
Objectifs des Bases de Données
•
Centraliser l’information
– Ensemble unique de stockage
– Non redondance de l’information
•
Centraliser les contrôles
– Contraintes d’intégrité au sein de la BD
– Modifications aisées des règles de gestion
•
Rendre indépendant les données et les programmes
– Modification de la structure des données sans toucher aux
traitements
•
Faciliter l’accès aux données
– Langage standard d’accès aux données : SQL
Michel Tuffery
5
Fonctions d’un SGBD
•
Décrire l’information
– Création des objets avec leurs contraintes
– Modification des structures et des contraintes
– Gestion de l’espace disque
•
Partager l’information
– Droits et devoirs des utilisateurs
– Notion de rôles et de privilèges
•
Assurer la Sécurité de l’information
– Reprise après incident
•
Respecter l’Intégrité de l’information
– Transaction : annulation ou confirmation
•
Autoriser la Confidentialité des informations
– Tout le monde ne peut pas voir et faire n’importe quoi
Michel Tuffery
6
SGBD Hiérarchiques : définitions
•
•
•
•
•
Applications liées au langage COBOL
Associations de type Père-Fils
Encapsulation des objets fils avec le père
Attributs en occurrence (tableaux)
Associations N-N possibles en dupliquant la base
Michel Tuffery
7
SGBD Hiérarchiques : présentation
ENSEIGNANT
CodeEns
Enom
Egrade
1
N
MATIERE
CodeMat
Mnom
Mcoeff
Mheures
Association 1-N
EMPLOYE
PROJET
CodeEmp
nomEmp
Salaire
CodeProjet
1
1
N
PROJET
N
EMPLOYE
CodeProjet
BudgetProj
CodeEmp
nomEmp
Association N-N
(par duplication !)
Michel Tuffery
8
SGBD Hiérarchiques :
Avantages et Inconvénients
• Compréhension aisée pour les développeurs
COBOL avec les occurrences
• Accès rapide à tous les objets fils pour un père
nommé
• Accès lent pour chercher le père d’un fils nommé
• Pas de sécurité des données : la suppression
d’un père entraîne la suppression de ses fils
SGBD Réseaux
Michel Tuffery
9
SGBD réseaux : définitions
•
•
•
•
Amélioration des SGBD hiérarchiques
Associations N-N autorisées
Parcours des données en réseau
Notion de
FOURNISSEUR
PIECE
CodeFour
CodePiece
nomFour
Libelle
RECORD
VilleFour
Couleur
1
et de SET
1
FOUR-VEN
PIECE-VEN
N
N
VENDRE
PrixUnitaire
Qte
DelaiMinimum
Michel Tuffery
RECORD
SET
10
SGBD réseaux : structure physique
Tête d’anneau (OWNER)
MEMBER
RECORD Père
RECORDs Fils
Michel Tuffery
11
SGBD réseaux : avantages et inconvénients
• Avantages
– Problèmes des ajouts, suppressions, modifications
résolus
– Sécurité des données
– Accès rapide à l’information
• Inconvénients
– Langage navigationnel : parcours des SET
– Gestion des pointeurs physique à la charge du SGBD
SGBD Relationnels
Michel Tuffery
12
SGBD Relationnels : présentation succincte
• Représentation des données sous forme
tabulaire (tables)
• Plus de pointeurs physiques : clés étrangères
pour relier les données des différentes tables
• Pas d’occurrences autorisées : attributs simples
• Langage standardisé pour structurer et accéder
aux données : SQL
• SGBD indépendants des constructeurs
Michel Tuffery
13
BD Relationnelle :
structure et accès aux données
UV
IdUV NomUV
Etudiant
IdEtu Nom
Adresse
100 Jean
Tlse
200 Michel
Paris
300 Sylvie
Tlse
SELECT u.nomuv, u.valeur
c.note
FROM etudiant e, uv u,
cours c
WHERE e.idetu=c.idetu
AND c.iduv=u.iduv
AND e.nom=‘Jean’
Michel Tuffery
Valeur
Bd
Bases de D.
5
C
Langage C
3
Or
oracle
8
Cours
IdEtu
IdUV
Note
100
Bd
12
100
C
15
100
Or
8
300
Bd
12
200
Bd
14
300
Or
13
14
Structure d’une BD et
d’un SGBD
Concepts généraux
Exemple avec Oracle
Le Dictionnaire des données :
un rôle essentiel
•
Centralise les contrôles
–
–
–
–
•
Contrôles simples ou statiques
Contrôles dynamiques (Si insee(1)=2 alors sit_mil=null)
Contrôles de références fils-père (code_dip étudiant)
Contrôles complexes (3 emprunts maximum)
Centralise les déclarations d’attributs
– Plusieurs types possibles (char, varchar, ….)
– Longueurs dynamiques ( nom varchar(40))
•
Lien entre programmes et données
– indépendance données – traitements :
– Æ aucune action physique sur les données
– Æ aucune modification de programmes
•
Enregistre de nombreuses informations
– informations statistiques (valeurs max , min )
– informations de taille d’attributs ,… Æ optimisation
Michel Tuffery
16
Le Dictionnaire des données :
Organisation générale
Dictionnaire de Données
SGBD
Base de Données
Michel Tuffery
17
Le Dictionnaire des données :
Organisation avec Oracle
• Tablespace spécial (system)
– Présenté sous forme de tables SQL :
SELECT * FROM USER_TABLES ;
– Trois types d’objets : USER_, ALL_ et DBA_
– Uniquement en mode lecture pour l’utilisateur
• Sauvegarde obligatoire , toujours en ligne
• Utilisation
– Les renseignements nécessaires sont chargés en
mémoire centrale
– Le système conserve en mémoire les informations pour
l’utilisateur
Michel Tuffery
18
Les composants d’une base de données :
Objets physiques (données)
• Les tables contenant les données
• Les fichiers index (primaire ou
secondaire)
• Les clusters contenant les mélanges de
tables
• Les fichiers de reprise (Logs)
• Les fichiers de contrôle
• Le dictionnaire de données
• Les Snapshots
Michel Tuffery
19
Les composants d’une base de données :
Objets physiques (programmes)
• Les traitements stockées
– Packages
– Procédures
– Fonctions
• Les triggers ou déclencheurs
– Mise à jour automatique de colonnes dérivées
– Mise en œuvre de contraintes complexes
– Génération automatique d’évènement
BD = Données + Programmes
Michel Tuffery
20
Les composants d’une base de données :
Objets virtuels
• Les vues
– Tables virtuelles
– Schémas externes ou sous-schémas
• Les synonymes
• Les database link
– Liens inter-bases
• Les contraintes
Pas d’implémentation physique :
Activation à l’appel
Michel Tuffery
21
Notion de ‘base de données’ :
Plusieurs ‘bases utilisateur’
•
•
•
Notion de propriétaire (‘owner’) d’objets
Partage de la même base par plusieurs utilisateurs
L’utilisateur système : DBA système
–
–
–
–
–
•
responsable de la ‘base’
sauvegarde et restauration
gestion des utilisateurs
gestion de l’espace disque
gestion des ressources système
L’utilisateur propriétaire : DBA données
– responsable de ses objets
– délègue des droits sur ses objets à d’autres utilisateurs
– gère ses propres sauvegardes
•
L’utilisateur ’de base’ accède aux objets et aux actions
autorisés
Michel Tuffery
22
Notion de ‘base de données’ :
Notion de ‘rôle utilisateur’
• Le rôle DBA : équivalent du ‘root’ système
• Le rôle RESOURCE : création et modification de
ressources (propriétaire)
• Le rôle CONNECT : connexion à la base et
respect des privilèges reçus
• Des rôles sur mesure :
– CREATE ROLE secr_scol ;
– GRANT SELECT,INSERT ON etudiant TO secr_scol ;
– GRANT SELECT,UPDATE(adr,tel) ON enseignant TO
secr_scol ;
– GRANT secr_scol TO martine, simone ;
Michel Tuffery
23
Notion de ‘base de données’ :
Instance
•
•
•
1 instance = 1 Base en mouvement
Plusieurs instances possibles sur une même machine (1
licence serveur)
Les composants d’une instance :
–
–
–
–
•
un ensemble de process
un dictionnaire de données
autonomie complète (DBA)
liens possibles entre instances
Pourquoi plusieurs instances ?
– sécurisation de certaines bases
– bases tests
– répartition physique et administrative
Michel Tuffery
24
Base de Données en architecture
Client-Serveur
• Le poste Client
– Interface de présentation
– Interface graphique
• Le Middleware
– Drivers de communication
• Le Serveur
– Base de données
– Sécurité, Intégrité et Confidentialité
Michel Tuffery
25
Base de données en Client-Serveur
Les composants du Client
Interface graphique extérieure
ODBC
Interface graphique de la base
SQL*Net
TCP/IP
Transport / Communication
Michel Tuffery
26
Base de données en Client-Serveur
Les composants du Serveur
SGBD
BD
Listener
SQL*NET
TCP/IP
Transport / Communication
Michel Tuffery
27
Bases de Données et Intranet
Client léger
navigateur
URL
Serveur Web
Pages.html
HTML
SGBD
Objets
Multi-média
HTTP
Pages HTML
dynamiques
Serveur Applicatif
Serveur de Données
connexion
requêtes
Exécution
du
programme
Michel Tuffery
résultats
Base de Données
28
Conception d’une
Base de Données
Le Diagramme de Classes
UML
Conception d’une BD : les niveaux
•
•
•
•
schéma
conceptuel
schéma
logique
conceptuel
logique
physique
externe
Utilisateurs
schéma
physique
R1
R2
Michel Tuffery
30
Conception d’une BD : les étapes
Produits
Monde Extérieur
idPro
désignation
poids
Modélisation
(UML)
<< Association >>
1
*
Fournir
Fournisseurs
1..*
1
prixAchat
idFour
raisonSociale
adresse
Schéma Conceptuel : DC
Règles de
passage
Produits (IdPro, désignation, poids)
Normalisation ?
Fournir(IdPro, IdFour, PrixAchat)
Fournisseurs(IdFour, RaisonSociale, adresse)
Mise en œuvre
de la BD
Schéma Logique ou Relationnel
Schéma Physique
Michel Tuffery
31
Le Diagramme de Classes (DC) :
concepts de base
•
Classe
– Ensemble d’objets concrets ou abstraits de même nature
– Une classe est décrite par ses attributs, méthodes et
contraintes
– Exemples : Etudiant, Employe, Produit, …
•
Attribut
– Propriété décrivant une classe
– Valeur unique pour chaque classe
– Exemple : nom, prenom, adresse , ….
•
Identifiant
– Attribut particulier permettant de repérer une occurrence
– Exemple : idClient, idEtudiant, ….
•
Association
– Permet de relier une classe à une ou plusieurs autres
– Æ
Michel Tuffery
32
Le Diagramme de Classes :
Notion d’Association
• Dimension d’une association
– Nombre de classes entrant liées
– Binaire : 2, Ternaire : 3, N-aire : n
• Nom d’une association
– Verbe à l’infinitif : Appartenir, Fournir, …
• Multiplicité
– Nombre minimum et maximum d’objets liés
Minimum, Maximum
Unicité
Multiplicité
Optionnel
Obligatoire
0..1
1..1 ou 1
0..* ou *
1..*
Michel Tuffery
33
Représentation des classes
Étudiant
Nom de la Classe
IneEtudiant
NomEtudiant
AdrEtudiant
Moyenne()
Modules_obtenus()
Inscription_correcte
Nombre_inscrits_dip
Identifiant
Attributs
Méthodes
Contraintes
Michel Tuffery
Procédures
Stockées
Déclencheurs
34
Associations de type Mère-Fille (1-N)
Etudiant
Diplome
IdDip
NomDip
RespDip
Inscrire
1
*
IneEtudiant
NomEtudiant
AdrEtudiant
Un diplôme (classe mère) peut concerner aucun ou plusieurs
étudiants (classe fille).
Un étudiant doit être inscrit à , au moins et au plus, un seul
diplôme.
Michel Tuffery
35
Associations de type multiple (N-N)
sans attributs
Etudiant
IneEtudiant
NomEtudiant
AdrEtudiant
Stage
Choisir
*
1..*
IdStage
ThémeStage
Entreprise
RespStage
Un étudiant doit choisir au moins un stage et peut en choisir
plusieurs.
Un stage peut être choisi par aucun étudiant ou plusieurs.
Michel Tuffery
36
Associations de type multiple (N-N)
avec attributs
Fournisseur
IdFour
NomFour
AdrFour
Produit
*
1..*
IdProduit
NomProduit
QtéStock
Fournir
Classe d’association
Prix
DélaiLivraison
QuantitéMin
Michel Tuffery
37
Associations de type multiple (N-N)
N aires (N>2)
Conditionnement
IdCond
LibCond
Fournisseur
IdFour
NomFour
AdrFour
Produit
*
1..*
*
IdProduit
NomProduit
QtéStock
Fournir
Prix
DélaiLivraison
QuantitéMin
Michel Tuffery
38
Associations de type symétrique (1-1)
Etudiant
IneEtudiant
NomEtudiant
AdrEtudiant
Stage
Effectuer
0..1
1
IdStage
ThémeStage
Entreprise
RespStage
Note stage
Un étudiant effectue au moins un et un seul stage.
Un stage peut être effectué par aucun ou un seul étudiant.
(Une association de type 1-1 est souvent le résultat d’un éclatement de classe)
Michel Tuffery
39
Associations réflexives
Æ 1-N réflexif
0..1
Est responsable de
Enseignant
IdEnseignant
NomEnseignant
Fonction
indice
*
A pour responsable Æ
Michel Tuffery
40
Associations réflexives
Æ N-N réflexif
*
Est composé de
Produit
Composer
IdProduit
LibelléProduit
Prix
Quantité
*
Entre dans la composition de
Michel Tuffery
41
Assemblage de classes
Reprise d’une classe d’association
• Certaines associations N-aires peuvent être
transformées en plusieurs associations binaires
• On associe d’abord les deux classes les plus
stables : stabilité du schéma
• La classe d’association se transforme en classe
normale pour la troisième classe associée
• Merise parlait d’agrégation d’entités
Michel Tuffery
42
Reprise d’une classe d’association
Associations de type 1-N et N-N
Classes
stables
Joueur
IdLicence
NomJoueur
Classement
Amende
IdAmende
Montant
Tournoi
*
*
Recevoir
*
*
Participer
Résultat
IdTournoi
NomTournoi
Ville
Date
Obtenir
*
0..1
Association 1-N
Association N-N
sans attribut
Prix
IdPrix
Montant
(La classe d’association ‘Participer’ est transformée en classe normale)
Michel Tuffery
43
Associations d’agrégation
et de composition
UV
Etudiant
IneEtudiant
Nom
1..8 IdUV
*
IntUV
Inscrire
Note
Résultat
En cas de suppression d’un étudiant : on supprime toutes ses inscriptions
On ne peut pas supprimer une UV ayant au moins un inscrit
Michel Tuffery
44
Généralisation et Spécialisation
Personnel
IdPers
Nom
Indice
Ingénieur
Enseignant
Chercheur
Grade
Fonction
Domaine
Section
Titre
HeuresCours
Spécialité
Laboratoire
Michel Tuffery
45
Conception d’une
Base de Données
Le Modèle Logique
Conception d’une BD : les niveaux
•
•
•
•
schéma
conceptuel
schéma
logique
conceptuel
logique
physique
externe
Utilisateurs
schéma
physique
R1
R2
Michel Tuffery
47
Conception d’une BD : les étapes
Produits
Monde Extérieur
idPro
désignation
poids
Modélisation
(UML)
<< Association >>
1
*
Fournir
Fournisseurs
1..*
1
prixAchat
idFour
raisonSociale
adresse
Schéma Conceptuel : DC
Règles de
passage
Produits (IdPro, désignation, poids)
Normalisation ?
Fournir(IdPro, IdFour, PrixAchat)
Fournisseurs(IdFour, RaisonSociale, adresse)
Mise en œuvre
de la BD
Schéma Logique ou Relationnel
Schéma Physique
Michel Tuffery
48
Schéma Logique : Schéma Relationnel
Présentation
• Base théorique du langage SQL
• Modèle basé sur les valeurs
– Di = {valeurs atomiques}
• Attribut
– ai prenant sa valeur dans Di
• Relation
– R[a1,..., an] définie sur les domaines D1, ..., Dn
– R sous-ensemble du produit cartésien D1*D2*...*Dn
ETUDIANT (INE, NOM,ADRESSE)
INE = {100, 200, 300}
NOM = {‘Sylvie’,’Patrick’}
ADRESSE = {‘Toulouse’,’Montauban’}
Michel Tuffery
49
Schéma relationnel
Concepts et Terminologie
• Relation : nom de la structure tabulaire
regroupant les informations de même nature
• Tuple ou N-Uplet : ligne d’une relation
• Attribut : nom du domaine
• Clé primaire : attribut(s) permettant d’identifier
d’une manière unique une ligne
• Clé étrangère : attribut(s) permettant d’identifier
d’une manière unique une ligne d’une autre
relation (correspondant à une clé primaire)
• Clé candidate : attribut(s) pouvant se substituer à
la clé primaire
Michel Tuffery
50
Schéma relationnel
Exemple
SERVICE
IdSer NomSer
EMPLOYE
NombreEmp
IdEmp NomEmp IdSer IdEmp_Resp
10 Informatique 2
100
Michel
20
300
20 Achats
200
Sylvie
10
400
300
Bernard 20
------
400
Claude
------
500
Thomas 10
3
10
400
Clés Primaires
Clé Candidate
Michel Tuffery
Clés Étrangères
51
Schéma relationnel
Quelques postulats
• Clé primaire
– Obligatoire pour toutes les relations
– Peut être composée de plusieurs attributs
– Ne peut pas avoir de valeur indéfinie (NULL)
• Clé étrangère
– Aucune ou plusieurs par relation
– Peut être composée de plusieurs attributs
– Æ Contrainte d’Intégrité Référentielle
• Clé candidate
– Accès rapide dans le schéma physique
Michel Tuffery
52
Passage du S. Conceptuel au S. Relationnel
Les règles de passage
•
Règle n°1 : Classes normales
– Chaque classe devient une relation
– L’identifiant de la classe devient la clé primaire de la relation
•
Règle n°2 : Classes d’Associations 1-N (Mère-Fille)
– Cette classe disparaît
– La clé de la relation mère glisse dans la relation fille Æ Clé
Étrangère
•
Règle n°3 : Classes d’Associations N-M (et n-aires)
– Cette classe devient une relation
– La clé primaire est composée des clés associées (clé primaire
composée)
•
Règle n°4 : Classes d’Associations 1-1
– Cas particulier : expliqué plus loin
•
Règle n°5 : Généralisation et Spécialisation
– Expliqué plus loin
Michel Tuffery
53
Association 1-N : Exemple
Etudiant
Diplome
IdDip
NomDip
RespDip
Inscrire
1
*
IneEtudiant
NomEtudiant
AdrEtudiant
DIPLÔME (IdDip, NomDip, RespDip)
ETUDIANT (IneEtudiant, NomEtudiant, AdrEtudiant, IdDip#)
Michel Tuffery
54
Association N-N sans attribut : Exemple
Etudiant
IneEtudiant
NomEtudiant
AdrEtudiant
Stage
Choisir
*
1..*
IdStage
ThémeStage
Entreprise
RespStage
ETUDIANT (IneEtudiant, NomEtudiant, AdrEtudiant)
CHOISIR (IneEtudiant#, IdStage# )
STAGE (IdStage, Thèmestage, Entreprise, RespStage)
Michel Tuffery
55
Clé primaire composée : postulats
• Autant de composants que de classes associées
(N-aires)
• Composée entièrement de clés étrangères
• L’ordre des composants n’a pas d’importance
(pour le schéma relationnel)
ETUDIANT (IneEtudiant, NomEtudiant, AdrEtudiant)
CHOISIR (IneEtudiant#, IdStage# )
STAGE (IdStage, Thèmestage, Entreprise, RespStage)
Michel Tuffery
56
Association N-N avec attributs : Exemple
Fournisseur
IdFour
NomFour
AdrFour
*
1..*
Fournir
Produit
IdProduit
NomProduit
QtéStock
Prix
DélaiLiv
QtéMin
FOURNISSEUR(IdFour, NomFour, AdrFour)
FOURNIR (IdFour #, IdProduit#, Prix, DélaiLiv, QtéMin )
PRODUIT (IdProduit, NomProduit, QtéStock)
Michel Tuffery
57
Association de type N-aires : Exemple
Conditionnement
IdCond
LibCond
Fournisseur
IdFour
NomFour
AdrFour
Produit
*
1..*
*
IdProduit
NomProduit
QtéStock
Fournir
Prix
DélaiLiv
QtéMin
Michel Tuffery
58
Association de type N-aires : Exemple
FOURNISSEUR(IdFour, NomFour, AdrFour)
PRODUIT (IdProduit, NomProduit, QtéStock)
CONDITIONNEMENT (IdCond, LibCond)
FOURNIR (IdFour #, IdProduit#, IdCond#,
Prix, DélaiLiv, QtéMin )
Michel Tuffery
59
Association 1-N réflexive : Exemple
0..1
Est responsable de
Enseignant
IdEns
NomEns
Fonction
*
A pour responsable Æ
(nul autorisé)
ENSEIGNANT (IdEns, NomEns, Fonction, IdEns_Resp#)
Michel Tuffery
60
Association N-N réflexive : Exemple
*
Est composé de
Produit
Composer
IdProduit
LibProduit
Prix
*
Qté
Entre dans la composition de
PRODUIT (IdProduit, LibProduit, Prix)
COMPOSER (IdProduitComposé#, IdProduitComposant#, Qté)
Michel Tuffery
61
Reprise de classe d’association : Exemple
Tournoi
Joueur
IdLicence
NomJoueur
Classement
Amende
IdAmende
Montant
*
*
Recevoir
*
*
Participer
Résultat
Michel Tuffery
IdTournoi
NomTournoi
Ville
Date
Obtenir
*
0..1
Prix
IdPrix
Montant
62
Reprise de classe d’association : Exemple
(nul autorisé)
JOUEUR (IdLicence, NomJoueur, Classement)
TOURNOI (IdTournoi, NomTournoi, Ville, date)
PARTICIPER (IdLicence#, IdTournoi#, Résultat, IdPrix#)
PRIX (IdPrix, Montant)
AMENDE (IdAmende, Montant)
RECEVOIR (IdAmende#,(IdLicence,IdTournoi)#)
2 clés étrangères
Michel Tuffery
63
Associations de type symétrique (1-1)
Règle N°4 : 3 cas possibles
C1
IdC1
Association
1
1
C2
IdC2
UNIQUE
C1 (IdC1, ……., IdC2#)
Valeurs nulles
autorisées ou pas
selon les valeurs
minimums
C2 (IdC2, ………..)
C1 (IdC1, …….)
C2 (IdC2, ……….., IdC1#)
Dans le cas d’une
association
optionnelle
C1 (IdC1, …….)
C2 (IdC2, ………..)
Association (IdC1#, IdC2#)
Michel Tuffery
64
Associations de type 1-1 : Exemple
Etudiant
IneEtudiant
NomEtudiant
AdrEtudiant
Stage
Effectuer
0..1
0..1
IdStage
ThémeStage
Entreprise
ETUDIANT (IneEtudiant, NomEtudiant, AdrEtudiant)
STAGE (IdStage, ThèmeStage, Entreprise)
EFFECTUER (IdStage#, IdEtudiant#)
UNIQUE
Michel Tuffery
65
Généralisation et Spécialisation : Règle N°5
• Chaque classe devient une relation
• Une ‘super classe’ peut contenir un attribut de
spécialisation
• Chaque relation de l’ensemble possède la même
clé primaire
• La vraie spécialisation avec l’héritage
correspondant sera pris en charge avec les
SGBD Objet-Relationnel
Michel Tuffery
66
Généralisation et Spécialisation : Exemple
Personnel
IdPers
Nom
Indice
Ingénieur
Enseignant
Chercheur
Grade
Fonction
Domaine
Section
Titre
HeuresCours
Spécialité
Laboratoire
Michel Tuffery
67
Généralisation et Spécialisation : Exemple
Attribut de Spécialisation
PERSONNEL (IdPers, Nom, Indice, TypePers)
INGENIEUR (IdPers, Grade, Fonction, Domaine)
ENSEIGNANT (IdPers, Section, Titre, HeuresCours)
CHERCHEUR (IdPers, Spécialité, laboratoire)
Michel Tuffery
68
Notion de Dépendance Fonctionnelle (DF)
• Objectifs des DF
• Conception du Schéma Logique
• Aide à la normalisation des relations
•
Définition
• Soit a et b deux attributs, b est fonctionnellement
dépendant de a si à toute valeur de a correspond au
plus une valeur de b (notation : a→b)
•
Exemples et contre exemple
• IneEtudiant → NomEtudiant
• IneEtudiant → AdrEtudiant
• NomEtudiant → AdrEtudiant
Michel Tuffery
69
Qualité des dépendances fonctionnelles
• DF Élémentaire
• a→b est une DF élémentaire si ∀ a’⊂a alors a’→b
n’est pas une DF
• IdLicence, IdTournoi, IdPrix → Résultat
est une DF non élémentaire
•
DF Directe
• a→b est une DF directe si il n’existe pas b⊄c et c⊄a
tel que a→c et c→b
• une DF non directe est déduite par transitivité
Michel Tuffery
70
Propriétés des dépendances fonctionnelles
• Réflexivité
– a attribut de R ⇔ a→a est une DF
• Transitivité
– Si a→b et b→c sont des DF ⇒ a→c est une DF
• Pseudo-transitivité
– a→b et b,c→d DF ⇒ a,c→d DF
• Additivité (union)
– a→b et a→c DF ⇔ a→b,c est une DF
•
Décomposition
–
•
a→b,c DF ⇔ a→b et a→c DF
Augmentation
– a→b DF et ∀ c ⇒ a,c→b DF
Michel Tuffery
71
Fermeture et couverture minimale
d’un graphe F (ensemble de DF)
• Fermeture
• la fermeture de F est l’ensemble de toutes les DF
résultant de l’application des propriétés des DF
(réflexivité...)
• Exemple : soit F={ a→b ;b→c}, F+ est composée de
21 DF en plus (a→a ; b→b ; a→c...)
• Couverture minimale
• la couverture minimale est un ensemble minimal de
DF (élimination des DF redondantes)
• Exemple : F = {a→b1 ;b→c2 ; c→d3 ;a→d4 ; c,f→g5 ;
a→b,c6 ;a,f→g7}, la couverture minimale de F
est {a→b1 ;b→c2 ; c→d3 ; c,f→g5}
Michel Tuffery
72
Conception directe du Schéma logique :
deux approches possibles
• Approche par Décomposition
– Notion de Forme normale
– Décomposition ou normalisation
• Approche par Synthèse
– Étude des DF
– Construction directe du schéma normalisé
Michel Tuffery
73
Approche par Décomposition :
Normalisation
• Schéma
• Ensemble de relations
• Ensemble de DF
• Objectifs de la normalisation
• Classification des relations
• Minimiser la redondance d’informations
• Préserver l’intégrité des informations
• Dénormalisation
• Diminuer le nombre de relations
• Réduire les futures jointures
Michel Tuffery
74
Approche par Décomposition :
les formes normales
•
1e forme normale
• Tous les attributs non clé sont en DF avec la clé
• Pas d’attributs tableaux
•
2e forme normale
• Déjà en 1e forme normale
• Toutes les DF issues de la clé sont des DF élémentaires
•
3e forme normale
• Déjà en 2e forme normale
• Toutes les DF issues de la clé sont des DF directes
•
4e forme normale : test de validité du schéma
• Déjà en 3e forme normale
• Pas de DF à l’intérieur d’une clé
Michel Tuffery
75
Approche par Décomposition :
Les étapes de décomposition
ETUDIANT
Ine
Nom
Matières
Adresse
IdMat
LibMat
(n)
IdRespEns NomRespEns
IdPar
LibPar
Partiels (m)
Note
ETDIANT(Ine, nom, adresse, Matières(IdMat, LibMat, IdRespEns,
(n)
NomRespEns, Partiels(IdPar, LibPar, Note)))
(m)
Michel Tuffery
76
Approche par Décomposition :
Les étapes de décomposition (suite)
ONF
ETDIANT(Ine, nom, adresse, Matières(IdMat, LibMat,
(n)
IdRespEns, NomRespEns, Partiels(IdPar, LibPar, Note)))
(m)
Élimination des attributs tableaux : éclatement des relations imbriquées
1NF
ETDIANT(Ine, nom, adresse)
MATIERES(Ine,IdMat, LibMat, IdRespEns, NomRespEns)
PARTIELS(Ine,IdMat,IdPar, LibPar, Note)
Élimination des DF non élémentaires
2NF
../
Michel Tuffery
77
Approche par Décomposition :
Les étapes de décomposition (suite et fin)
ETDIANT(Ine, nom, adresse)
2NF
MATIERES(IdMat, LibMat, IdRespEns, NomRespEns)
COURS(Ine, IdMat)
(IdMat est en occurrence avec Ine)
PARTIELS(IdPar, LibPar, IdMat)
NOTES(Ine,IdPar, Note)
Élimination des DF non directes ou transitives
ETDIANT(Ine, nom, adresse)
3NF
MATIERES(IdMat, LibMat, IdRespEns#)
ENSEIGNANT(IdRespEns, NomRespEns)
4NF : OK
COURS(Ine#, IdMat#)
PARTIELS(IdPar, LibPar, IdMat#)
NOTES(Ine#,IdPar#, Note)
Michel Tuffery
78
Avantages de la Normalisation
• Non redondance de l’information
– Pour une matière donnée, on n’enregistre pas toute
l’information sur son enseignant responsable
• Mise à jour facilitée
– MAJ de l’intitulé d’un partiel : 1 fois
• Accès identique à toutes les informations
– Jointures identiques
• Sécurité de l’information assurée
– On n’attend pas les notes pour enregistrer les
informations sur un partiel
Constructions d’une base à partir de fichiers existants
Michel Tuffery
79
Approche par Synthèse : Présentation
• Généralités
• Concevoir ou modifier un schéma
• Point de départ : F = {a→b1 ;b→c2, … }, résultat
schéma relationnel normalisé : R1[a, b, …]...
• Étapes
• Construction de l’ensemble départ des DF
• Suppression des DF redondantes déduites par
transitivité, union et décomposition
• Regroupement des DF ayant même partie gauche
dans des sous ensembles, les DF de type x→y et
y→x doivent être regroupés dans le même sous
ensemble
Michel Tuffery
80
Approche par Synthèse :
la démarche
• 1ére étape : suppression des DF redondantes
– Déduite par transitivité, union, décomposition
– Exemple : a→b1, b→c2, c→d3, a→d4 la dernière est
redondante
• 2éme étape : regroupement des DF
– DF ayant même partie gauche sont regroupés dans des
sous ensembles
– DF de type x→y et y→x doivent être regroupés dans le
même sous ensemble
• 3éme étape : relations (3 NF)
– Chaque sous ensemble devient une relation dont la clé
primaire est la partie gauche des DF du sous ensemble
Michel Tuffery
81
Approche par Synthèse :
Exemple de mise en oeuvre
• Point de départ :
– A = {a, b, c, d, e, f, g, h, j, k}
– F = {a→b1 ; a→c2 ; a,b,h→e,g3 ; h→j4 ; j→k5 ; h→k6 ;
b→a7}
• 1ére étape : suppression des DF redondantes
– 6 est redondante car elle peut être obtenue avec 4 et 5
par transitivité : h→j ; j→k donne h→k
– 1 et 3 permettent de simplifier 3 par pseudo-transitivité
a→b et a,b,h→e,g donne a,a,h→e,g
a,a,h→e,g donne a,h→e,g3
Michel Tuffery
82
Approche par Synthèse :
Exemple de mise en œuvre (suite)
• 2éme étape : regroupement des DF
– même partie gauche
E1 = {a→b1 ; a→c2} ; E2 = { a,h→e,g3}
E3 = {h→j4} ; E4 = {j→k5} ; E5 = {b→a7}
– x→y et y→x
E1 = {a→b1 ; a→c2 ; b→a7} et E5 = {b→a7}
• 3éme étape : relations (4 NF)
–
–
–
–
R1[a,b,c]
R2[a#,h#,e,g]
R3[h,j#]
R4[j,k]
Michel Tuffery
83
Langage
Relationnel
Graphe de
Requêtes
Présentation
• Basé sur la théorie des ensembles
– relations , opérateurs et opérandes
– Opérateurs : relationnels, de test (<, >, = , …) et
booléens (ET, OU, NON)
– Opérandes : constantes ou variables
• Recherche d’informations sur les relations par
langage algébrique
– Résultat d’une recherche : relation
– Base du langage SQL
GRAPHE DES REQUETES
Michel Tuffery
85
Opérateurs relationnels
• Opérateurs unaires
– Sélection
– Projection
• Opérateurs binaires
–
–
–
–
–
–
Union
Intersection
Opérateurs ensemblistes
Différence
Division
Produit Cartésien
jointure
Michel Tuffery
86
Sélection
• Définition
– Une sélection appliquée sur la relation R1[a1,...,an], selon
le prédicat p1 (condition) donne une relation R2[a1,...,an]
ayant les n-uplets satisfaisant la condition
R
• Symbole utilisé
Prédicat de Sélection
R1
Michel Tuffery
87
Sélection : exemple
ETUDIANT
Ine
Nom
Groupe Année
100
Sylvie
1
2
200
Michel
3
2
300
Corinne
1
1
400
Laurent
3
2
500
Jérôme
4
2
R
Année = 2
ET
Groupe = 3
ETUDIANT
Étudiants du groupe 3
de deuxième année ?
R
Ine
Nom
Groupe Année
200 Michel
3
2
400 Laurent 3
2
Michel Tuffery
88
Projection
• Définition
– la projection de la relation R1[a1,...,an] sur les attributs
ai,...,am (ai,...,am ⊂a1,...,an) est une relation R2[ai,...,am]
– Pas de duplication des n-uplets résultats
• Symbole utilisé
R
ai,...,am
R1
Michel Tuffery
89
Projection : exemple
ETUDIANT
Ine
Nom
Groupe Année
100
Sylvie
1
2
200
Michel
3
2
300
Corinne
1
1
400
Laurent
3
2
500
Jérôme
4
2
R
Année
ETUDIANT
Quelles sont les années
existantes ?
R
Année
1
2
Michel Tuffery
90
Union
• Définition
– Soient R1[a1,..., an] et R2[b1,..., bn] deux relations de
même schéma ,
– Le résultat de l’union R contient les tuples de R1 et les
tuples de R2 qui n’appartiennent pas à R1
– Opérateur commutatif
R
R1
U
R2
U
• Symbole utilisé
R1
Michel Tuffery
R2
91
Union : Exemple
CLIENTS_TOULOUSE (IdCli, nom, adresse)
CLIENTS_BORDEAUX (IdClient, nomclient, chiffre)
R (nom)
R
Contient l’ensemble des clients
de l’entreprise
U
nom
CLIENTS_TOULOUSE
nomclient
CLIENTS_BORDEAUX
Michel Tuffery
92
Intersection
• Définition
– Soient R1[a1,..., an] et R2[b1,..., bn] deux relations de
même schéma
– Le résultat de l’intersection R contient les tuples qui
appartiennent, à la fois, à R1 et R2
– Opérateur commutatif
R
R1
∩ R2
∩
• Symbole utilisé
R1
Michel Tuffery
R2
93
Intersection : exemple
CLIENTS_TOULOUSE (IdCli, nom, adresse)
CLIENTS_BORDEAUX (IdClient, nomclient, chiffre)
R (nom)
R
Contient les clients de l’entreprise
à la fois, de Toulouse et Bordeaux
∩
nom
CLIENTS_TOULOUSE
nomclient
CLIENTS_BORDEAUX
Michel Tuffery
94
Différence
• Définition
– Soient R1[a1,..., an] et R2[b1,..., bn] deux relations de
même schéma ,
– Le résultat de la différence R contient les tuples de R1
qui n’appartiennent pas à R2
– Opérateur non commutatif
R
R1
R2
• Symbole utilisé
R1
Michel Tuffery
R2
95
Différence : exemple
CLIENTS_TOULOUSE (IdCli, nom, adresse)
CLIENTS_BORDEAUX (IdClient, nomclient, chiffre)
R (nom)
R
Contient les clients de Toulouse
qui ne sont pas à Bordeaux
nom
CLIENTS_TOULOUSE
nomclient
CLIENTS_BORDEAUX
Michel Tuffery
96
Division
•
Définition
– Soient R1[a1,...,an,b1,...,bn] et R2[b1,...,bn] deux relations telles
que la structure de R2 soit incluse dans la structure de R1
– R = résultat de la division de R1 par R2
– R est une relation de structure R[a1,...,an] qui contient les
tuples ti vérifiant :
ti ∈ R (ti est un tuple de structure [a1,...,an])
tj ∈ R2 (tj est un tuple de structure [b1,...,bn])
ti,tj ∈ R1 (ti,tj est un tuple de structure [a1,...,an,b1,...,bn])
•
•
Opérateur non commutatif
Sert à comparer un ensemble avec un autre ensemble (dit
de référence)
Michel Tuffery
97
Division (suite)
• Symbole utilisé
R
R1 de schéma S1,S2
R2 de schéma S2
R de schéma S1
R1
Michel Tuffery
R2
98
Division : exemple
BICOLORE
VEHICULE
Codev Nomv
Portes
BM1
316i
2P
noir
noir
BM1
316i
2P
blanc
blanc
BM2
318i
4P
noir
BM3
320d
4P
blanc
S1
Couleur
Coloris
S2
S2
Question : Quels sont les véhicules (Nomv) fabriquées en noir ET en blanc ?
Michel Tuffery
99
Division : exemple (suite)
R
R
Nomv
316i
Nomv
VEHICULE
BICOLORE
Michel Tuffery
100
Produit cartésien
• Définition
– Soient R1[a1,...,an] et R2[b1,...,bm] deux relations de schéma
différent, R = résultat du produit R1× R2
– R est une relation de structure R3[a1,...,an,b1,...,bm] qui contient
les combinaisons des tuples de R1 et R2
• Opérateur
commutatif
R
• Symbole utilisé
×
R1
Michel Tuffery
R1
101
Produit cartésien : exemple
ETUDIANT
MATIERE
Ine
Nom
IdM
100
Sylvie
BD
Bases de Données
200
Michel
ACSI
Analyse
300
Laurent
MATH
Mathématiques
NomM
Question : Créer la relation COURS (Ine, IdM) sachant que chaque étudiant
suit toutes les matières ?
Michel Tuffery
102
Produit cartésien : exemple (suite)
COURS
Ine IdM
COURS
Ine, IdM
×
ETUDIANT
MATIERE
Michel Tuffery
100
BD
100
ACSI
100
MATH
200
BD
200
ACSI
200
MATH
300
BD
300
ACSI
300
MATH
103
Jointure
• Définition
– Soient R1[a1,...,an] et R2[b1,...,bm] deux relations, R =
jointure de ces relations avec un prédicat
– R[a1,...,an,b1,...,bm] contient les tuples de R1 et de R2
résultant un produit cartésien vérifiant le prédicat
• Opérateur fondamental (basé sur les valeurs)
• Le prédicat contient une clause de jointure et
éventuellement d’autres conditions
• Opérateur binaire commutatif
Michel Tuffery
104
Jointure (suite)
• Symbole utilisé
R
R1 de schéma S1
R2 de schéma S2
Prédicat
R de schéma S1,S2
R1
Michel Tuffery
R1
105
Jointure : exemple
CLIENTS (IdCli, Nom, Adresse)
OUVRAGES (IdOuv, Titre, Nbex)
EMPRUNTS (IdCli#, IdOuv#, DateEmp)
Question : Nom et Adresse des
clients ayant emprunté l’ouvrage
‘BD’ le ’10/10/2003’ ?
Michel Tuffery
106
Jointure : exemple (suite)
R
Nom, Adresse
IdCli=C.IdCli
CLIENTS C
idCli
IdOuv= O.IdOuv ET
DateEmp = ‘10/10/2003’
idOuv
OUVRAGES O
Titre = ‘BD’
OUVRAGES
Michel Tuffery
107
Graphe des requêtes et SGBD
• Tous les SGBD R de type SQL mettent en œuvre
un graphe de requêtes
• Oracle fournit une table (plan_table) montrant le
schéma global
• Ce graphe permet d’optimiser les requêtes
• Certains, comme SQL Server présentent ce
graphe sous forme graphique
Michel Tuffery
108
Exemple de graphe SQL Server
EMPRUNT
CLIENT
100 Michel Toulouse
100 o1
2003-10-10
OUVRAGE
o1 BD
200 Sylvie
Toulouse
200 o1
2003-10-10
o2 SGBD
300 Laurent Toulouse
100 o2
2003-10-08
300 o2
2003-10-08
Question : Nom et Adresse des
clients ayant emprunté l’ouvrage
‘BD’ le ’10/10/2003’ ?
Michel
Toulouse
Sylvie
Toulouse
SELECT c.nom,c.adresse
FROM client c, emprunt e, ouvrage o
WHERE o.titre=‘BD’
AND o.idouv=e.idouv
AND e.dateemp = ‘10/10/2003’
AND e.idcli=c.idcli
Michel Tuffery
109
Exemple de graphe SQL Server (suite)
Michel Tuffery
110
Exemple de graphe SQL Server (suite)
Michel Tuffery
111
Le Modèle Physique des
Données
Mise en œuvre d’une
base de données
Les 3 niveaux de Conception :
termes utilisés
SGF
Conceptuel
Logique
Physique
Fichier
Relation
Table
Article
Classe
Association
Occurrence
Tuple
Ligne
Rubrique
Propriété
Attribut
Colonne
Clé Primaire
Identifiant
Clé
Primaire
Clé
étrangère
Clé
Primaire
Clé
étrangère
Clé
Secondaire
Michel Tuffery
113
Organisation physique des données
• Les données sont rangées dans des objets
appelées ‘tables’
• L’ordre de création d’une table :
CREATE TABLE employé …… ;
– crée la structure de la table dans le dictionnaire
– nom et type de chaque colonne
– les contraintes associées
• La table est associée à un ‘tablespace’
• La table est crée avec des paramètres initiaux :
– paramètres de la commande ou
paramètres du tablespace
Michel Tuffery
114
Organisation physique et logique
des données
Logique (BD)
Physique (OS)
Tables
Fichier FT11
Tablespace T1
Fichier FT21
Tables
Tables
Tablespace T2
Fichier FT22
Michel Tuffery
115
Schéma conceptuel de la structure physique
d’une base
Database
1
1..* Tablespace 1
1..* Fichier OS
1
1
1..*
Extent
1..*
1
1..*
Bloc
1..*
1
Extent Libre
Index
Cluster
Extent utilisé 1..*
Data
Michel Tuffery
1 Segment
Rollback
Temporary
116
Notion de Tablespace
• Unité logique de stockage des données
• Un ou plusieurs fichiers
• Peut être désactivé (OFF LINE) sauf celui
contenant le dictionnaire de données (système)
• Allocation par défaut à l’utilisateur pour stocker
ses objets
• Sauvegarde et restauration limitée
• Distribution des informations sur plusieurs unités
• Paramètres d’allocation par défaut pour les
données
Michel Tuffery
117
Tablespace système
• Créé à la création de la database
• Contient :
–
–
–
–
le dictionnaire de données
procédures, fonctions, packages et triggers
le rollback segment system
les tables des produits Oracle
• Peut contenir des données utilisateur
(déconseillé)
• Sauvegarde obligatoire
Michel Tuffery
118
Gestion d’un Tablespace
• Création d’un tablespace
create tablespace stagiaire
datafile ‘usr/oracle/dbs/tssta.ora/’
size 10M
default storage
(initial
100K
next
10K
pctincrease
0
minextents
1
maxextents
100
)
online ;
Michel Tuffery
119
Gestion d’un Tablespace (suite)
• Modification d’un tablespace
alter tablespace nom
add datafile ‘spécification fichier’
size taille
rename datafile ancien_nom to nouveau_nom
default storage (clauses storage)
online
normal | temporary | immediate;
• Suppression d’un tablespace
drop tablespace nom
including contents
cascade contraints ;
Michel Tuffery
suppression
des
segments
120
Notion de Segment
• Ensemble d’extensions logiques et de blocs
physiques
• Plusieurs types de segments :
–
–
–
–
–
–
segments de données (table, index et cluster)
segment d’index
segment rollback
segment temporaire
segment de démarrage
segments libres
Michel Tuffery
121
Le segment de données : la table
• Création d’une table
create table nom
(colonne1
type(longueur),
colonne2
type(longueur),
constraint nom_contrainte
type_contrainte,
)
pctfree
valeur1 %libre aux insertions
pctused
valeur2
storage
( idem tablespace )
tablespace nom_tablespace
cluster
nom_cluster(colonne);
• Suppression d’une table
drop table nom
cascade contraints ;
Michel Tuffery
122
Le segment de données : la table
Les contraintes
• Contraintes de tables
–
–
–
–
-
unique
primary key
foreign key
check
• Contraintes de colonnes
-
not null
• Mises à la création de la table
– – -
dans le dictionnaire de données
nom de contrainte
Michel Tuffery
123
Le segment de données : la table
Les contraintes (suite)
•
Contraintes ajoutées
alter table nom
add contraint nom_contrainte
type_contrainte;
•
Contraintes supprimées
alter table nom
drop contraint nom_contrainte [cascade];
•
Contraintes désactivées
alter table nom
disable contraint nom_contrainte [cascade];
•
Contraintes activées
alter table nom
enable contraint nom_contrainte
[exceptions into nom_table_rejets];
Michel Tuffery
124
Modification de la structure une table
•
Ajout d’une nouvelle colonne
alter table nom add
(colonne1
type(longueur),
colonne2type(longueur)) ;
•
Modification d’une colonne
alter table nom modify
(colonne1
colonne2
•
type(longueur),
type(longueur)) ;
Suppression d’une colonne : attention danger !
alter table nom drop column nom_colonne;
Michel Tuffery
125
Format d’un bloc de données
I ème tablespace
EN TETE DU BLOC
Liste des tables
(cluster)
J ème bloc
Liste des lignes
ESPACE
LIBRE
DONNEES
K ème ligne
ROWID (I, J, K)
Michel Tuffery
126
Le segment de données : le cluster
Principe
•
•
•
Assemblage de tables mère-fille
Dans chaque bloc : une ligne mère avec les lignes filles
La jointure est déjà faite physiquement
INFO, Informatique
Bloc 1
SERVICE
100, Michel, Toulouse
300, Sylvie, Blagnac
COM, Commercial
Bloc 2
EMPLOYE
200, Laurent, Toulouse
400, Thomas, Albi
Michel Tuffery
127
Cluster : création et utilisation
•
Création du cluster
create cluster personnel
(no_ser number) size 10K
storage
(initial 100K
next 50K pctincrease 10);
•
Création de l’index
create index ind_pers
on cluster personnel;
•
Création des tables en cluster
create table service(………)
cluster personnel(no_ser) ;
create table employe(………)
cluster personnel(no_ser) ;
Michel Tuffery
128
Le segment de données :
Les index
•
•
•
•
•
Index unique ou non
Optimisation des recherches
Unicité de la clé
Organisés en B-Arbre
Création d’un index
create [unique] index nom_fichier
on nom_table (colonne1[,colonne2..])
tablespace nom_ts storage (clauses) ;
• Suppression d’un index
drop index nom_fichier ;
Michel Tuffery
129
Le segment de rollback:
Le rollback segment
• Fichier ‘image avant’ pour :
– les lectures consistantes
– l’annulation de la transaction
– les reprises ‘à chaud’
• Premier rollback segment crée dans le tablespace
system
• Il faut en créer au moins un autre
• Nombre en fonction du débit transactionnel
– nombre de transactions simultanées / 4 (<50)
– utilisation automatique par oracle
Michel Tuffery
130
Le segment de rollback:
Le rollback segment (suite)
•
•
•
•
On peut orienter une transaction vers un rollback segment
particulier :
set transaction use rollback segment
nom_rs ;
Le système utilise les extents libres du tablespace
On peut orienter une transaction vers un rollback segment
particulier
Création d’un rollback segment
create rollback segment nom_rs
tablespace nom_ts
storages (clauses) ;
– le segment doit être actif :
alter rollback segment nom_rs
online | offline
storage (clauses) ;
Michel Tuffery
131
Le segment temporaire:
Le temporary segment
• Utilisé si la mémoire n’est pas suffisante :
–
–
–
–
jointures
sous - interrogations
create index ..
select ..order by, distinct, group by, union, intersect,
minus
• Utilisé par défaut dans le tablespace courant
• Possibilité de dédier un tablespace temporaire à
un utilisateur
Michel Tuffery
132
Les fonctions assurées par un
SGBD
Sécurité
Intégrité
Confidentialité
Mise en œuvre avec Oracle
Les fonctions essentielles d’une base de
données
• Sécurité
– Reprise après incident
– Journalisation des transactions
• Intégrité
– Problème des accès concurrents
– Verrouillage des ressources
– Interblocages : détection et résolution
• Confidentialité
– Droits d’accès
– Sous-schémas ou schémas externes
Michel Tuffery
134
Sécurité : notion de transaction
• Suite finie d’actions portant sur des objets
T = < [ Ai, Oi], i=1,n>
• Principe du « tout ou rien »
– Toutes les actions doivent être exécutées correctement
– Point de confirmation ou de validation
• Condition indispensable pour assurer la
cohérence de la base de données
Michel Tuffery
135
Transaction : ACID
• Atomicité
– Les opérations d’une transaction sont atomiques (tout
ou rien)
• Cohérence
– Passage d’un état cohérent à un autre état cohérent
• Isolation
– Degré total d’isolation entre deux transactions
concurrentes
• Durabilité
– Effets durables même en cas de panne (persistance)
Michel Tuffery
136
Sécurité : exemple de transaction
BD : état cohérent
DEBUT TRANSACTION
Lire livre ‘SGBD’ (nombre_disp = 50)
Ajouter dans emprunt (client/livre)
Si problème
ici ????
nombre_disp = nombre_disp –1 ;
Modifier dans livre (nombre_disp)
FIN TRANSACTION
Michel Tuffery
137
Sécurité : les vies possibles d’une transaction
• Vie sans histoire
– La transaction arrive sur la fin
– Point de confirmation : commit
• Un assassinat
– Arrêt par un événement extérieur
– Arrêt par le sgbd lui même (dead lock)
– Le système fait marche arrière (rollback) et annule les
actions déjà effectuées
• Un suicide
– Arrêt et annulation par la transaction elle même
(rollback)
Michel Tuffery
138
Sécurité : journalisation des transactions
• Principe général
– Conservation de la trace des opérations sur la base
dans un fichier
– Plusieurs copies physiquement séparées
• Les informations enregistrées
–
–
–
–
Utilisateur, date , …
Code de l’opération (insert, update, delete)
Ancienne valeur – nouvelle valeur
commit et rollback
• Les sauvegardes sont notées
Michel Tuffery
139
Sécurité : travail et sauvegarde
• Travail normal sur la base
Transaction 1
Update …
Insert …
Delete …
BD
SGBD
Transaction 2
Update …
Insert …
Delete …
• Sauvegarde
JOURNAL
BD
SAUVEGARDE
SGBD
SGBD
JOURNAL
Michel Tuffery
140
Sécurité : les reprises
• Reprise « à chaud »
BD
SGBD
• Reprise « à froid » : RECOVERY
JOURNAL
(J)
JOURNAL
SAUVEGARDE
(J-1)
RECOVERY
BD
(J)
Michel Tuffery
141
Sécurité : reconstruction de la base ou
« recovery »
•
Lecture arrière du journal et conservation d’informations sur les
transactions
•
Exemples de reprises
Panne
T1
T2
Transactions
T3
T4
T5
sauvegarde
Michel Tuffery
temps
142
Intégrité : accès concurrents et partage des
ressources
• Plusieurs transactions accèdent simultanément
aux mêmes ressources
• Lecture des données Æ mémoire locale
• Calcul nouvelle valeur Æ re-écriture ! !
Transaction 1
Transaction 2
Lire nb_places
(10)
Lire nb_places
(10)
nb_places=-5
(5)
nb_places=-3
(7)
Update nb_places
(5)
État incohérent
Update nb_places
(7)
Michel Tuffery
143
Intégrité : problème des accès concurrents
• Une solution : l’exclusion mutuelle (verrouillage)
Transaction 1
Lire nb_places
avec verrou
(10)
File d’attente sur
les verrous
1er arrivé Æ 1er
servi
nb_places=-5
(5)
Update
nb_places
(5)
Commit
Michel Tuffery
Transaction 2
Lire nb_places
Avec verrou
ATTENTE
Lire nb_places
Avec verrou
(5)
144
Intégrité : problème du verrouillage des
ressources
Transaction 1
Lire vol1 avec
verrou
Travail
Transaction 2
Lire vol2 avec
verrou
Travail
Lire vol2 avec
verrou
ATTENTE
Lire vol1 avec
verrou
ATTENTE
DEAD LOCK
INTERBLOCAGE
Michel Tuffery
145
Intégrité : résolution des interblocages
Méthode préventive
• Toutes les ressources nécessaires à la
transaction sont verrouillées au départ
• Problème : cas des transactions qui ne démarrent
jamais !
• Méthode peu utilisée aujourd’hui
Michel Tuffery
146
Intégrité : méthode préventive
•
Exemple de situation blocage
T1
T2
T3
T4
Verrou R1
Verrou R2
Verrou
R1, R3
Travail
Travail
FIN
•
Attente
FIN
Verrou
R2, R3
Travail
Le système note l’attente de T3, arrête T4 et l’annule, lance
T3 et reprend éventuellement T4
Michel Tuffery
147
Intégrité : méthode curative
•
•
Le SGBD permet les interblocages et les transactions
peuvent verrouiller à tout moment
Détection de l’interblocage
– Consultation (péroidique ou lors d’une attente) du graphe QAQ
– Détection d’un cycle
T1
T2
T3
•
T4
Résolution de l’interblocage
– Arrêt et annulation de la transaction la « moins lourde »
(assassinat)
– Poursuite et fin de l’autre, reprise éventuelle et fin de la
transaction annulée
Michel Tuffery
148
Confidentialité dans les bases de données
• Principe : « Tout le monde ne peut pas VOIR et
FAIRE n’importe quoi »
• Restriction de la VISION
– Utilisation de sous – schémas ou schémas externes
– Objets virtuels : les vues
• Restriction des ACTIONS
– Délégation de privilèges avec l’ordre GRANT
– Rôles utilisateurs
– Encapsulation des données
Michel Tuffery
149
Confidentialité : principe
Entrée
Utilisateur
Reconnaissance de
l’utilisateur
Identification
(nom, code)
Authentification
(agorithme,
voix, carte,…)
salaire
update
Affectation d’un
Rôle
(sous-schéma)
oui
Autorisations
d’accès
Michel Tuffery
150
Gestion des accès concurrents avec Oracle :
Lecture consistante au niveau ligne
• Même vision des données du début à la fin d’une
interrogation
• Vue fixe ou « cliché » pour l’interrogation
(utilisation des rollback segment)
• Exemple : montant des soldes des comptes de
dépôt avec de nombreuses transactions de
virement de comptes :
SELECT sum(solde) INTO somme FROM comptes ;
Michel Tuffery
151
Lecture consistante multi version
•
•
Problème : plusieurs lectures consistantes
Oracle permet de conserver un cliché pour plusieurs lectures :
• SET TRANSACTION READ ONLY ;
•
Exemple:
EXEC SQL set transaction read only ;
Lire code_uer
Tant_que code_uer # ‘fin’ Faire
EXEC SQL select count(*) INTO n
FROM etudiant WHERE uer= :code_uer ;
Afficher(n,’étudiants de’,code_uer)
Fin_tant_que
Les changements d’uer
ne sont pas « vus »
durant les interrogations
EXEC SQL commit ;
Michel Tuffery
152
Points de confirmation implicites
• Dans les versions antérieures, Oracle exécutait
un rollback complet de la transaction sitôt un
problème rencontré
• Impossible de continuer la transaction
• Aujourd’hui, Oracle pose des points de
confirmations implicites à chaque action :
« statement level rollback »
• L’utilisateur peut donc choisir :
– Effectuer lui même un rollback
– Tenter de poursuivre la transaction
Michel Tuffery
153
Points de confirmation explicites
•
•
•
Possibilité de poser des points de confirmation (pas de validation)
explicites
EXEC SQL savepoint nom_save_point ;
Possibilité de défaire jusqu’au point de confirmation
Exemple :
EXEC SQL insert into employe values(…) ;
EXEC SQL savepoint apres_insert ;
EXEC SQL delete from employe where … ;
IF %rowcount>50 THEN
EXEC SQL rollback to apres_insert ;
EXEC SQL commit ;
ELSE
EXEC SQL commit ;
END IF ;
Michel Tuffery
154
Modification en accès concurrent :
modification sans verrouillage
•
Modifications sans précaution : attention au problème des
transactions concurrentes
•
EXEC SQL update employe
set salaire=salaire*1.1
where catégorie= :cat ;
– Lectures simultanées
– Écritures avec écrasement (et verrouillage)
•
Éviter dans un contexte transactionnel concurrent
Michel Tuffery
155
Modification en accès concurrent :
modification avec verrouillage préventif
• Les lignes sélectionnées sont verrouillées
préventivement
• Utilisation d’un cursor : le verrouillage est effectif
à la fin de l’ouverture (sélection des lignes)
• EXEC SQL declare cursor c1 for select
nom,salaire from employe where catégorie= :cat
for update of salaire ;
• Les lignes sélectionnées sont chargées en SGA
puis verrouillées
• EXEC SQL update employe set salaire=salaire*1.1
where current of c1 ;
Michel Tuffery
156
Les différents types de verrous
•
Les verrous DDL (Data Dictionary Lokcs)
– Le système interdit toute opération pendant une modification
structurelle
– A l’inverse : le système interdit toute modification structurelle
si un utilisateur travaille sur la table
•
Trois types de verrous
– Exclusif : posé sur l’objet si aucun autre verrou (DDL ou DML)
– Partagé : posé sur l’objet si l’un des ordres suivants est
utilisé : audit, noaudit, grant, revoke, comment, create table,
create view, create synonym
– « Parsing » : posé chaque objet référencé dans un ordre SQL
et utilisé pour déterminer si l’ordre SQL dans la zone de
partage n’est pas obsolète (changement structure)
Michel Tuffery
157
Téléchargement