ANGD Mathrice – CIRM Marseille Avant-propos Avant

publicité
ANGD Mathrice – CIRM Marseille
Avant-propos
●
●
Introduction aux bases de données
6 novembre 2006
© 2006
Damien BRÉMONT [email protected]
Avant-propos
●
Damien BRÉMONT :
–
Administrateur Systèmes et Réseaux au CNRS
●
–
–
Ingénieur CNAM III-SI en devenir
Gestion du parc du LPTHE
●
Laboratoire de Physique Théorique et des Hautes Énergies
●
120 Linux Fedora Core, 10 Mac OS X, 1 Windows
Enseignant vacataire à l'IUT de Saint Malo
●
Cours de Base de données de 1ère année
●
Cours de Linux en licence professionnelle
Ce cours est distribué sous la licence GNU
FDL (Free Documentation Licence),
Il peut être librement copié, modifié,
distribué, tant que l'intégralité de cette
licence est respectée.
–
●
La GNU FDL est disponible sur
http://www.gnu.org/licenses/fdl.html
© D. Brémont,O. Guillossou 08/2006.
Plan du cours
1.Historique et concepts
2.Modélisation Conceptuelle des Données
3.Théorie de la normalisation
4.Passage au modèle relationnel
5.Stockage Physique
6.Modèle Relationnel
7.SQL
8.Contraintes et Intégrité
9.Transactions
10.Les bases de données pour un ASR
Introduction
●
Introduction et concepts
Constats :
–
Les activités humaines génèrent de plus en plus
de données
–
Les données ont souvent la même structure
–
On veut un accès facile à ces données
–
Tout le monde veut y accéder
Définition
●
Base de Données : (BDD - Data Base)
–
Structure de données permettant de recevoir,
de stocker, et de fournir à la demande, des
données à de multiples utilisateurs
indépendants
Définition
●
Système de Gestion de Bases de Données
–
(SGBD – Data Base Management System)
–
Ensemble de logiciels supportant un modèle de
données et permettant de mettre en oeuvre
une BDD assurant :
●
La description et la gestion des données
●
La cohérence des données
●
Gestion des accès concurrents
●
La gestion des droits utilisateurs
●
Retour à un état cohérent en cas d'incident
Objectifs d'un SGBD
Organisation SGBD
●
Indépendance logique des programmes
●
Indépendance physique des programmes
–
Interprétation syntaxique des requêtes
●
Manipulation par langages non procéduraux
–
Présentation des données
●
Facilité d'administration
●
Efficacité des accès
●
●
●
Architecture fonctionnelle
Outils SGBD et non SGBD
Analyseur de requêtes SQL
Contrôle
Vis-à-vis DD
Optimiseur
de requêtes
SGBD externe
SGBD interne
–
Traitement des requêtes
–
Gestion des objets
Gestionnaire de fichiers
L'approche client-serveur
Client
Serveur
Application cliente
SGBD
Interface de programmation
Interface serveur
Interface de communication
Interface de communication
Noyau SGBD
Exécution des requêtes
Protocole de transport
Protocole de transport
SQL
BD
Réseau
Données
Historique SGBD
●
Années 60 : fichiers reliés par des pointeurs
–
–
●
Séparation description des données/langage
d'accès
Années 80 : BDD Objets, réparties
–
Représenter le plus fidèlement le réel
–
Répondre aux nouveaux besoins nés de
l'Internet et du multimédia
SGBD de type réseaux ou hiérarchiques
●
●
Historique SGBD
CODASYL
●
Années 70 - 80 : modélisation, SQL
–
Objectif : représenter le réel
–
Visent à faciliter l'accès aux données
●
Oracle, Sybase, DB2, Ingres
Le marché des SGBD
●
●
ObjectStore, O2, Intersystem Caché
Marché SGBD 2004 : 14,9 Milliards de $
+8,3% en 2005
Parts de marché :
Éditeur
Produit
IBM
DB2 / Informix
Oracle
Oracle
Microsoft
SQL Server
Sybase
Sybase
NCR Teradata NCR Teradata
Total
2004
2005
30,60% 34,00%
41,30% 33,30%
13,40% 19,00%
3,10% 3,70%
3,10% 3,14%
91,50% 93,14%
Source IDC (2004), Data Base developpement survey (2005)
Les SGBD libres
●
Très forte croissance du nombre d'installation
–
32 % des SGBD installés
●
Produits arrivés à maturité
●
Très utilisés dans les applications orientées web
Plan du cours
1.Historique et concepts
2.Modélisation Conceptuelle des Données
3.Théorie de la normalisation
4.Passage au modèle relationnel
5.Stockage Physique
6.Modèle Relationnel
7.SQL
8.Contraintes et Intégrité
9.Transactions
10.Les bases de données pour un ASR
La modélisation conceptuelle des
données (MCD)
La modélisation conceptuelle
des données (MCD)
●
Objectif final : Modéliser le monde réel
●
Objectifs MCD
–
Représenter de manière structurée, synthétique et fidèle les
données du système d’information indépendamment de son
implantation physique.
La MCD
●
Démarche :
–
●
Centrée sur le discours (parlé ou écrit) des
utilisateurs en langue Naturelle
Importance du MCD :
–
Construire le référentiel du projet
–
Sert à l'évaluation des coûts
–
Documenter le système d’information
–
Une erreur peut avoir des conséquences lourdes
sur le projet
La modélisation conceptuelle
des données (MCD)
●
Exemple de MCD
Règles de construction
●
Le modèle E/R comprend :
–
Le modèle Entité-Relation ou Entité-Association
–
Des entités
–
Proposé en 1976 par P. Chen
–
Des relations ou associations
–
Normalisé en 1988 par l'ANSI
–
Des propriétés ou attributs
–
Des contraintes
Entité
●
Relation ou association
Objet ayant un existence dans le monde
réel et clairement identifiable
Client
Commande
●
Association entre entités précisant un événement du réel
–
Exemple de relation binaire :
Cardinalités
Fournisseur
Client
Produit
Année
budgétaire
0,n
1,1
Passe
Date Livraison
Association
Pattes
Commande
Relation particulières
●
Relation n-aires
Entité faible
Mariage
●
Entité n'existant que si l'entité maître existe
1,1
Salarié
Concluent
0,1
0,1
Homme
●
0,n
Femme
A
Relation récursive
1,1
Enfant
Personne
0,1 Mari
Se marie
0,1 Femme
Cardinalités / occurrences
●
Occurrence
–
●
Synonyme : ligne, tuple, enregistrement
1,1
Est affecté
Cardinalités
–
Cardinalité min : 0/1, Cardinalité max : 1/n
Employé
Nombre d'apparition dans une relation
●
●
Exemple de cardinalités
1,1
Nombre de fois minimum et maximum d'une
occurrence dans une relation
Poste
●
Facture
1,1
Porte sur
0,1
Commande
Facture
1,1
Porte sur
0,n
Commande
Fournisseur
1,n
Fournit
0,n
Produit
Les cardinalités doivent être vérifiées à tout instant
Propriétés
●
Caractéristique élémentaire décrivant :
–
Une entité :
Client
Type de propriété
d'une entité ou d'une relation
0,n
1,1
●
Naturelle
●
Composée
Commande
Passe
NumClient
NumCmd
Nom
DateCmd
Adresse
DateLivraison
●
(le nom d'un employé)
–
Numéro de sécurité sociale
–
=>Peut alors être considérée globale ou concaténée
Artificielle
(NumClient)
0,n
–
Une relation :
Produit
NumProd
synonyme : attribut
0,n
Comprend
Quantité
Prix
Désignation
Clé d'une relation
●
Combinaison minimale de propriétés permettant d'identifier une
occurrence de manière unique dans une relation
–
Clé simple
Caractéristiques d'une clé
●
Univaluée
●
Discriminante
●
Stable
●
Minimale
Client
NumClient
Clé simple
Nom
Adresse
–
Clé composée
Fournisseur
Client
NumFour
Pays
Adresse
Clé composée
Clé candidate
●
Notation
Un individu peut posséder une ou plusieurs
clés distinctes appelées clés candidates
●
Deux façons de représenter une entité
–
Textuelle
●
Employé
Client
NumEmp
Clé primaire
NumSecuSoc
Clé candidate
–
ETUDIANT(NUM_ETU, NOM, PRENOM)
Graphique
ETUDIANT
Adresse
●
NUM_ETU
NOM
PRENOM
La clé retenue est nommée clé primaire
Dans tous les cas les clés sont soulignées
Contraintes inter relations
●
Contraintes inter relations
exemples
Types de contraintes
Equipe recherche
Entité 2
–
–
Domaines
●
Inclusion I
●
Simultanées S
●
Exclusion X
Représentation
●
●
Partielle P
Totale T
Entité 1
Est-dans
Enseignant
Relation A
IT
Enseignant chercheur
?
Relation B
Entité 3
Travaille
Entreprise
Vacataires
Les sous types
●
Contraintes inter entités
Permet de faire apparaître une notion de
spécialisation
Personne
Personne
Matricule
Matricule
Nom
Nom
XT
Étudiant
Étudiant
Filière
Enseignant
Enseignant
Matière
Matière
Qualité d'un MCD
●
Filière
Lisibilité
●
Expressivité
●
Simplicité
●
Des concepts contradictoires...
Plan du cours
1.Historique et concepts
2.Modélisation Conceptuelle des Données
3.Théorie de la normalisation
4.Passage au modèle relationnel
5.Stockage Physique
6.Modèle Relationnel
7.SQL
8.Contraintes et Intégrité
9.Transactions
10.Les bases de données pour un ASR
La théorie de la normalisation
●
Objectif : permet de définir une méthode de
conception de "bonnes" tables :
La théorie de la normalisation
●
Sans redondances
●
Avec une bonne sémantique entre les données
●
Sans valeurs nulles
=>S 'appuie sur la notion de dépendances fonctionnelle
entre attributs
Les dépendances fonctionnelles
●
On dit qu'un attribut (ou groupe d'attribut) Y
est dépendant fonctionnellement d'un autre
X
–
●
Type de DF
●
–
●
Si à une valeur de X est associée une valeur de Y
Exemple de DF
–
VOITURE(nv, couleur, marque, puissance, modèle)
●
●
nv->couleur
●
modèle -> marque
●
modèle -> puissance
●
(puissance et marque) -> modèle
Réflexivité : l'ensemble d'attribut Y est inclus dans X
alors X -> Y
Augmentation : Si X détermine Y, les deux ensembles
peuvent être enrichis par un troisième Z
–
si X -> Y
–
alors XZ=> YZ
Transitivité :
–
si X->Y et Y->Z
–
alors X -> Z
Type de DF
●
●
●
Pseudo-transitivité :
–
si X -> Y et Y,Z -> T
–
alors X,Z -> T
Décomposition :
–
si X -> Y,Z
–
alors X -> Y et X -> Z
Réunion :
–
si X -> Y et X -> Z
–
alors X -> Y,Z
Exemple d'anomalie de DF
COURS
NOMPROF
BREMONT
BREMONT
BREMONT
PETIT
PETIT
PETIT
Objectif :
–
–
Définir des règles pour décomposer des
relations tout en préservant les DF sans perte
d'information
Les seules DF autorisées sont celles dans
lesquelles une clé détermine un attribut
DEPARTEMENT NOMETU
Ille & Vilaine
Durand
Ille & Vilaine
Dupont
Martin
Ille & Vilaine
Ille & Vilaine
Durand
Ille & Vilaine
Dupont
Ille & Vilaine
Martin
AGE
19
19
20
19
19
20
NOMCOURS
BDD
BDD
BDD
Maths
Maths
Maths
NOTE
15
2
12
10
0
5
DF :
NOMPROF -> NOMCOURS
NOMPROF -> VILLE
VILLE -> DEPARTEMENT
NOMETU -> AGE
NOMETU, NOMCOURS -> NOTE
Formes Normales
Boyce-Codd Normal Form
●
VILLE
St Malo
St Malo
St Malo
St Malo
St Malo
St Malo
1ère Forme normale
●
Une relation est en 1FN si tout attribut
contient une valeur atomique (non
décomposable) :
●
Exemple :
●
PERSONNE (NOM,TYPE_TEL_1, TEL_1,TYPE_TEL_2, TEL_2,TYPE_TEL_3, TEL_3)
●
Solution :
●
PERSONNE (NOM)
●
TEL (NOM, TEL, TYPE_TEL)
2ème Forme normale
●
●
Une relation R est en 2 FN si
●
Une relation R est en 3 FN si
–
Elle est en 1FN
–
Elle est en 2FN
–
Tout attribut n'appartenant pas à la clé ne
dépend pas d'une partie de cette clé
–
Tout attribut n'appartenant pas à la clé, ne
dépend pas d'un attribut non clé
Exemple
–
●
3ème Forme normale
●
COURS (NOMPROF, VILLE, NOMETU, AGE, NOMCOURS, NOTE)
Solution
–
ENSEIGNER ( NOMETU, NOMCOURS, NOTE)
–
COURS (NOMCOURS, NOMPROF, VILLE)
–
ETUDIANT (NOMETU, AGE)
Exemple
–
ENSEIGNER ( NOMETU, NOMCOURS, NOTE)
–
COURS (NOMCOURS, NOMPROF, VILLE, DEPARTEMENT)
–
ETUDIANT (NOMETU, AGE)
3ème Forme normale
●
Solution
–
ENSEIGNER ( NOMETU, NOMCOURS, NOTE)
–
COURS (NOMCOURS, NOMPROF, VILLE)
–
ETUDIANT (NOMETU, AGE)
–
LIEU_ENSEIGNEMENT (VILLE, DEPARTEMENT)
Optimisation d'un schéma
●
Objectif :
–
Améliorer les performances du système
●
–
Ex : une jointure très fréquente sur de gros volumes
de données
On peut alors procéder à une dénormalisation
Plan du cours
1.Historique et concepts
2.Modélisation Conceptuelle des Données
3.Théorie de la normalisation
4.Passage au modèle relationnel
5.Stockage Physique
6.Modèle Relationnel
7.SQL
8.Contraintes et Intégrité
9.Transactions
10.Les bases de données pour un ASR
Passage au modèle relationnel
Passage au modèle relationnel
●
Objectif :
–
Passer du Modèle Conceptuel des Données au
Modèle Physique des Données (MPD)
Règles de construction
●
Relation binaire (*,*) – (1,1)
–
MCD
Client
0,n
1,1
Commande
Passe
IdClient
IdCommande
Nomclient
Date
Addrclient
●
Mode opératoire :
–
Basé sur les cardinalités et règles de gestion
–
Manuel ou automatisable
–
Modèle relationnel
Client
Commande
IdClient
IdCommande
Nomclient
Date
Addrclient
IdClient
Règles de construction
●
Règles de construction
Relation binaire (*,n) – (0,1)
–
MCD
Personne
IdPersonne
–
●
Possède
Date_Achat
–
Voiture
0,1
Relation binaire (*,n) – (*,n)
Nom
Couleur
DateCmd
Prenom
Modèle
–
IdPersonne
Nom
Immatriculation
Prenom
Date_Achat
Commande
Personne
0,1
Nom
IdPersonne
Nom
Prenom
SeMarieAvec
OU
Produit
NumProd
Couleur
DateCmd
Désignation
Modèle
DateLivraison
NumProd
Quantité
Prix
Règles de construction
●
Relation réflexive (*,n) – (*,n)
–
Mari
MCD
Travaux
Se marie
0,n
Se décompose
IdTravaux
0,1 Femme
Nom
0,n
responsable
Modèle relationnel
Personne
Comprend
NumCmd
Prenom
–
Désignation
NumCmd
Relation réflexive (*,1) – (*,n)
IdPersonne
NumProd
Immatriculation
Règles de construction
MCD
0,n
Modèle relationnel
Voiture
Possède
Produit
Comprend
Quantité
Prix
0,n
DateLivraison
Modèle relationnel
IdPersonne
–
Commande
NumCmd
0,n
Personne
●
MCD
Immatriculation
–
Modèle relationnel
Mariage
IdPersonne
Personne
IdPersonne
Travaux
IdTravaux
Décompose
IdTravaux
SeMarieAvec
Nom
Nom
Appartient_à
Prenom
responsable
Règles de construction
●
Garage
Relation ternaire -MCD :
–
Règles de construction
●
IdGarage
Adresse
Modèle relationnel
Personne
Hiérarchisation -MCD :
Matricule
Nom
nbplaces
XT
0,n
Gare
0,n
Étudiant
0,1
Enseignant
Filière
Chauffeur
Voiture
Garage
IdChauffeur
Immatriculation
IdGarage
Nom
Couleur
Adresse
Prénom
Modèle
–
Modèle relationnel
Matière
Personne
Matricule
nbplaces
Nom
Gare
IdGarage
Chauffeur
IdChauffeur
Immatriculation
Voiture
IdChauffeur
Immatriculation
Nom
Couleur
Prénom
Modèle
Conclusion
Passage au modèle relationnel
●
Phase importante
●
1 bug dans 1 programme
–
●
1 programme impacté
1 donnée erronée
–
n programmes impactés
Étudiant
Enseignant
Matricule
Matricule
Filière
Matière
Plan du cours
1.Historique et concepts
2.Modélisation Conceptuelle des Données
3.Théorie de la normalisation
4.Passage au modèle relationnel
5.Stockage Physique
6.Modèle Relationnel
7.SQL
8.Contraintes et Intégrité
9.Transactions
10.Les bases de données pour un ASR
Pourquoi structurer un fichier ?
●
Formes non
structurées:
–
Cassette audio
–
Fichier non structuré
Stockage physique
Pourquoi structurer un fichier ?
●
Formes structurées:
–
Pourquoi structurer les fichiers ?
●
CD audio
●
–
Fichier indexé
●
Dans un fichier “plat” :
–
La recherche d'une donnée nécessite l'analyse
de l'intégralité du fichier
–
L'information est rarement ordonnée
Besoin de mécanismes pour retrouver
rapidement les informations
Deux méthodes :
–
Hachage des fichiers
–
Indexation des fichiers
Hachage des fichiers
●
●
●
Hachage des fichiers
Le hachage (“hash”) de fichier est la
structuration d'un fichier en articles
(“slices”),
●
Exemple de structure de fichier haché
clé
La position de chaque article dans le fichier
est calculée à l'aide d'une fonction de
hachage appliquée sur une clé unique.
nombre de 0 à N-1
0
1
2
...
N-1
Exemple de fonctions de hachage
–
MD4, MD5
–
SHA1, SHA2
Hachage des fichiers
●
Fct de hachage
Hachage des fichiers
La fonction de hachage doit être rapide
–
●
la plus simple : calcul de modulo.
●
Exemple : dans un fichier de 35 articles, la fonction
modulo 35 sera utilisée pour calculer la position de
l'article.
●
Clé : 127
0
%35
...
22
...
34
●
Opérations de lecture d'un fichier haché :
–
application de la fonction de calcul,
–
positionnement du curseur de lecture sur
l'article recherché.
Opérations d'écriture d'un fichier haché :
–
calcul de la position de l'article à l'aide de la
fonction de hachage appliqué à la clé,
–
écriture de l'article.
Exemples d'utilisation : Postfix
Indexation des fichiers
●
Qu'est-ce qu'un index ?
–
●
Indexation des fichiers
●
Exemple de fichier indexé :
Un index est une table de correspondance entre
une clé et la position de l'article dans le fichier.
clé
À la différence du hachage, le calcul de
l'index est réalisé lors des opérations
d'écriture.
0
0
1
0
20
2
10 15
30
4
55
6
1
2 20 4
0 10 15 30 55 59
59
adresse relative
Indexation des fichiers
●
●
Opérations de lecture d'un fichier indexé :
–
lecture de l'index,
–
recherche dans l'index de la position de
l'article,
–
positionnement du curseur de lecture,
–
lecture de l'article
Opérations d'écriture des fichiers indexés :
–
écriture de l'article à la fin du fichier,
–
ajout à l'index d'une entrée (clé, position)
Index hiérarchisés
●
Objectif : améliorer la recherche
d'informations
–
●
Mais mise à jour plus coûteuse
Exemple
–
6
les Arbres-B (“B-Tree” pour “Balanced Tree”)
Index hiérarchisés – Arbres B
●
Modèle d'Arbre B
Index hiérarchisés – Arbres B
●
11
●
5
1 2 3 4
6
7
8
16
9 10
21
●
On descend en comparant la clé recherchée
aux valeurs inscrites dans les noeuds
12 13 14 15 17 18 19 20 22 23 24 26
Utilisation des index
●
Une recherche dans un arbre B se passe
toujours depuis la racine,
Les méthodes d'indexation de fichiers sont
utilisées de façon intensive et complexe par
les SGBDR.
Chaque SGBDR a son propre format de
représentation des données sur le disque
Plan du cours
1.Historique et concepts
2.Modélisation Conceptuelle des Données
3.Théorie de la normalisation
4.Passage au modèle relationnel
5.Stockage Physique
6.Modèle Relationnel
7.SQL
8.Contraintes et Intégrité
9.Transactions
10.Les bases de données pour un ASR
Bases du modèle relationnel
●
Principe
–
●
Modèle Relationnel
●
La manipulation des données selon leur concept
mathématique : l'algèbre relationnel
Utilisé en général à l'intérieur de tout SGBD
relationnel
Un LMD algébrique est possible, mais en
général peu commode pour l'homme
–
On préfère les requêtes SQL ...
Opérations en algèbre
relationnel
Bases du modèle relationnel
–
Attribut : un identificateur décrivant une
information pouvant être stockée en base.
–
Tuple : (N-uplet, occurrence) c'est un ensemble
figuré par une relation
–
–
Cardinalité : pour une relation, il s'agit de son
nombre d'occurrences
Degré : le degré d'une relation est son nombre
de tuples
●
Illustration des définitions :
Attribut
Tuple, n-uplet
Marque
Peugeot
Renault
Fiat
Modèle
206
Clio
Punto
Année
2000
2003
1999
Couleur
Vert
Bleu
Orange
Relation
Opérations en algèbre
relationnel
●
Union :
Opérations en algèbre
relationnel
–
–
Seulement sur deux tables de même schéma,
–
Construction d'une table contenant toutes les
lignes des deux tables primitives.
–
Notation : RELATION1∪RELATION2
Exemple d'union :
Voiture1 Marque
Peugeot
Renault
Fiat
Modèle
206
Clio
Punto
Année
2000
2003
1999
Opérations en algèbre
relationnel
Différence :
–
Seulement sur deux tables de même schéma,
–
Construction d'une table contenant les lignes de
la première table primitive qui n'appartiennent
pas à la seconde table primitive.
RELATION1­RELATION2
Voiture2 Marque
Citroën
Renault
Ford
Modèle
C3
Clio
Fiesta
Année
2005
2003
1987
Couleur
Noir
Bleu
Rouge
Année
2005
2003
1987
Couleur
Noir
Bleu
Rouge
∪
Voitures Marque
Peugeot
Renault
Fiat
Citroën
Ford
●
Couleur
Vert
Bleu
Orange
Modèle
206
Clio
Punto
C3
Fiesta
Année
2000
2003
1999
2005
1987
Couleur
Vert
Bleu
Orange
Noir
Rouge
Opérations en algèbre
relationnel
–
Exemple de différence :
Voiture1 Marque
Peugeot
Renault
Fiat
Modèle
206
Clio
Punto
Année
2000
2003
1999
Couleur
Vert
Bleu
Orange
Voiture2 Marque
Citroën
Renault
Ford
­
Voitures Marque
Peugeot
Fiat
Modèle
206
Punto
Année
2000
1999
Couleur
Vert
Orange
Modèle
C3
Clio
Fiesta
Opérations en algèbre
relationnel
●
Produit cartésien :
–
le schéma des tables primitives peut être
différent,
–
addition de toutes les combinaisons des lignes
et des colonnes des tables primitives
Opérations en algèbre
relationnel
–
Voiture1 Marque
Peugeot
Renault
Fiat
–
Sélection d'une ou plusieurs colonnes d'une
table
∏ Attribut i , Attribut j  RELATION1
Couleur
Vert
Bleu
Orange
Années
Voitures Marque Modèle
Peugeot
206
Renault
Clio
Fiat
Punto
Peugeot
206
Renault
Clio
Fiat
Punto
Opérations en algèbre
relationnel
Projection :
Modèle
206
Clio
Punto
Année
2000
2005
×
RELATION1×RELATION2
●
Exemple de produit cartésien
Couleur
Vert
Bleu
Orange
Vert
Bleu
Orange
Année
2000
2000
2000
2005
2005
2005
Opérations en algèbre
relationnel
–
Exemple de projection :
Voitures Marque
Peugeot
Renault
Fiat
Peugeot
Ford
Modèle
206
Clio
Punto
307
Fiesta
∏ marque , modèle
Rés
Marque
Peugeot
Renault
Fiat
Peugeot
Ford
Modèle
206
Clio
Punto
307
Fiesta
Année
2000
2003
1999
2004
1987
Couleur
Vert
Bleu
Orange
Jaune
Rouge
Opérations en algèbre
relationnel
●
Opérations en algèbre
relationnel
Sélection
–
–
Extraction de lignes d'une table en fonction
d'une condition.
Exemple de sélection simples :

Voitures Marque
Peugeot
Renault
Fiat
Peugeot
Ford
année2000
Modèle
206
Clio
Punto
307
Fiesta
Année
2000
2003
1999
2004
1987
Couleur
Vert
Bleu
Orange
Jaune
Rouge
 condition  RELATION1
Voitures Marque
Peugeot
Renault
Peugeot
Opérations en algèbre
relationnel
●
Rappel des notations en algèbre booléenne
–
–
–
●
∧
∨
¬
« et »
« ou »
« non »
Ces opérateurs permettent d'écrire des
opérations plus complexes sur les relations
Modèle
206
Clio
307
Année
2000
2003
2004
Couleur
Vert
Bleu
Jaune
Opérations en algèbre
relationnel
●
Exemples d'opérations :
 annee2000∧regulateurVitesse=vrai Voiture
Marque
Peugeot
Renault
Fiat
Peugeot
Ford
VW
BMW
Modèle
206
Clio
Punto
307
Fiesta
Passat
320
Année RegulateurVitesse
2000
FAUX
2003
VRAI
1999
FAUX
2004
VRAI
1987
FAUX
1999
VRAI
1998
VRAI
Opérations en algèbre
relationnel
●
La jointure :
–
Deux tables ayant une contrainte référentielle
commune, mais des structure pouvant être
différentes
–
Addition de toutes les combinaisons des lignes
et des colonnes des tables primitives
–
Puis sélection sur les contraintes référentielles
●
●
RELATION1ZYRELATION2
 clefs  RELATION1×RELATION2
Opérations en algèbre
relationnel
●
Exemple de jointure
Voiture Immatriculation Marque Modèle Couleur Maintenance Idmaint Immatriculation
Panne
Km
123 ABC 75
Vert
1
123 ABC 75
Joint de culasse 200000
Peugeot 206
Renault
Clio
456 ABC 75
Bleu
2
456 ABC 75
Pneus
50000
Punto Orange
789 ABC 75
Fiat
3
456 ABC 75
Embrayage
60000
×
Immatriculation
123 ABC 75
456 ABC 75
789 ABC 75
123 ABC 75
456 ABC 75
789 ABC 75
123 ABC 75
456 ABC 75
789 ABC 75
Marque
Peugeot
Renault
Fiat
Peugeot
Renault
Fiat
Peugeot
Renault
Fiat
Modèle
206
Clio
Punto
206
Clio
Punto
206
Clio
Punto
Couleur Idmaint Immatriculation
Panne
Km
Vert
1
123 ABC 75 Joint de culasse 200000
Bleu
1
123 ABC 75 Joint de culasse 200000
Orange
1
123 ABC 75 Joint de culasse 200000
Vert
2
456 ABC 75
Pneus
50000
Bleu
2
456 ABC 75
Pneus
50000
Orange
2
456 ABC 75
Pneus
50000
Vert
3
456 ABC 75
Embrayage
60000
Bleu
3
456 ABC 75
Embrayage
60000
Orange
3
456 ABC 75
Embrayage
60000
sélection voiture1.immatriculation=panne.immatriculation
Immatriculation
123 ABC 75
456 ABC 75
456 ABC 75
Marque Modèle Couleur Idmaint Immatriculation
Panne
Km
Vert
1
123 ABC 75 Joint de culasse 200000
Peugeot 206
Renault
Clio
Bleu
2
456 ABC 75
Pneus
50000
Renault
Clio
Bleu
3
456 ABC 75
Embrayage
60000
Plan du cours
1.Historique et concepts
2.Modélisation Conceptuelle des Données
3.Théorie de la normalisation
4.Passage au modèle relationnel
5.Stockage Physique
6.Modèle Relationnel
7.SQL
8.Contraintes et Intégrité
9.Transactions
10.Les bases de données pour un ASR
SQL
Structured Query Language
SQL
La définition de données
●
A la fois LDD (Langage de Définition de Données)
●
et LMD (Langage de Manipulation de Données)
●
Développé par IBM (1982)
●
Devenu une norme (ANSI/ISO) en 1986 (SQL1)
●
Puis en 1992 sortie de SQL2
●
permet de :
–
●
créer
●
modifier
●
supprimer
●
Renommer
les éléments du schéma d'une base de données :
–
les tables
–
les vues
–
les index
Exemple utilisé
●
FOURNISSEUR
0,n
0,n
Les tables
PRODUIT
FOURNIT
FOURNUM
PRODNUM
NOMFOUR
NOMPROD
●
●
NOTE
VILLE
●
FOURNISSEUR (FOURNUM, NOMFOUR, NOTE, VILLE)
●
FOURNIT (FOURNUM, PRODNUM)
●
PRODUIT (PRODNUM, NOMPROD)
Création
CREATE TABLE nomtable
( nomcol1 typecol1 [contraintecol1],
nomcol2 typecol2 [contraintecol2], ...,
contraintetable1,
contraintetable2,...);
–
CREATE TABLE `FOURNISSEUR` (
`FOURNUM` INT NOT NULL ,
`NOMFOUR` VARCHAR( 20 ) NOT NULL ,
`NOTE` TINYINT NOT NULL ,
`VILLE` VARCHAR( 50 ) NOT NULL ,
PRIMARY KEY ( `FOURNUM` ));
Les types de données
Nom
TINYINT
SMALLINT
MEDIUMINT
INT
BIGINT
FLOAT
DOUBLE
DATE
DATETIME
TIME
CHAR(M)
VARCHAR(M)
BLOB
TEXT
LONGBLOB
LONGTEXT
Nb octets
Plage
1
-128 à 127
2
-32 768 à 32 767
3
...
4
8
4 ou 8
Précision 24 ou 53
8
Nombre flottant double précision
3
8
4
M
L+1
L+1
L+2
L+4
L+4
Option
Unsigned
Unsigned
Unsigned
Unsigned
Unsigned
Unsigned
AAAA-MM-JJ
AAAA-MM-JJ HH:MM:SS
HH:MM:SS
<255 caractères
<65535 caractères
<65535 caractères
<4 M caractères
<4 M caractères
Les types de données
(MySQL)
●
●
●
Sensible casse
Sensible casse si binary
Insensible casse
Sensible casse
Insensible casse
Sensible casse
Les listes de valeur
ENUM('valeur_possible1','valeur_possible2','valeur_possible3
',...)
–
1 à 2 octets
–
65535 valeurs max
SET('valeur_possible1','valeur_possible2',...)
–
1 à 8 octets
–
64 valeurs max
Les contraintes
●
UNIQUE (nomcol1,nomcol2,...)
●
PRIMARY KEY (nomcol1,nomcol2,..)
●
NOT NULL CONSTRAINT MA_CONTRAINTE
●
CHECK (AGE BETWEEN 7 AND 77)
●
Clés étrangères
Modification tables
●
ALTER TABLE nomtable modification
–
Ajouter un colonne
●
–
–
–
FOREIGN KEY nomcol REFERENCES nomtable (nomcol)
[ON DELETE CASCADE]
FOREIGN KEY ( FOURNUM ) REFERENCES MEMBRES( FOURNUM )
Ajouter une contrainte :
●
–
ALTER TABLE FOURNISSEUR
ADD PAYS VARCHAR(15)
ALTER TABLE FOURNISSEUR
ADD UNIQUE (VILLE);
Modifier la définition d'une colonne : (taille,
type, propriétés)
●
ALTER TABLE FOURNISSEUR
MODIFY VILLE VARCHAR(20) NOT NULL;
Modifications table
●
Modification
–
Supprimer des contraintes nommées :
●
●
Suppression :
–
●
Ce sont des tables virtuelles
●
Ce sont des questions stockées
●
Permet l'indépendance logique des données
●
Création :
DROP TABLE nomtable;
●
●
DROP CONSTRAINT nomcontrainte
Les vues
DROP TABLE FOURNISSEUR;
Renommage :
–
RENAME anciennom TO nouveaunom;
●
RENAME FOURNISSEUR TO F;
Suppression : DROP VIEW nomvue;
–
●
DROP VIEW FOURNISSEUR_LONDRES;
En interrogation
●
–
Comme avec une table réelle : l'ordre SQL est
réexécuté à chaque référence à la vue.
En mise à jour
●
●
Il existe des limitations
(fonction des SGBD)
–
exemple : Fournisseurs de Londres
CREATE VIEW FOURNISSEUR_LONDRES
AS SELECT FOURNUM, FNOM,STATUT FROM FOURNISSEUR
WHERE VILLE="Londres";
Les index
●
●
Utilisation :
–
CREATE VIEW nomvue [alias1,alias2,...]
AS question;
●
Les vues
●
–
Hors norme (mais implémenté sous MySQL)
un index permet d'accélérer les interrogations, mais
peut pénaliser les MAJ
●
Pour accélérer l'accès aux données
●
Peuvent être créés sur une ou plusieurs colonnes
●
un index peut être unique ou non unique
●
Pour garantir l'unicité de certaines données
●
structure interne : B-trees
Les index
●
●
Création
CREATE [UNIQUE] INDEX Nom_index
ON nom_table (nom_colonne,...)
–
CREATE UNIQUE INDEX I_VILLE
ON FOURNISSEUR(VILLE);
–
ALTER TABLE `FOURNISSEUR`
ADD INDEX ( `VILLE` )
Utilisation des index
●
●
Suppression : DROP INDEX nomindex;
–
ALTER TABLE `FOURNISSEUR`
Usages :
–
les colonnes servant souvent de critère de
recherche
–
les colonnes de jointure
–
les colonnes identifiantes
on les évite pour :
–
les colonnes souvent modifiées
–
les colonnes contenant peu de valeurs distinctes
DROP INDEX `I_VILLE`
Manipulation des Données
●
Interrogation :
–
●
La clause SELECT
●
SELECT
Interrogation simple
–
SELECT liste-colonnes
FROM nom_table
WHERE condition
Limit borne_inférieur,nombre;
–
Remarques :
Mise à jour :
–
INSERT
ajout
–
UPDATE
modification
–
DELETE
suppression
●
si on veut toutes les colonnes : *
●
si on ne veut pas les doubles : DISTINCT
●
Liste-colonnes accepte des expressions à calculer
●
si la condition est complexe, on la construit à l'aide
des opérateurs AND, OR et NOT
Les opérateurs
Exemples SELECT
●
=, !=, >=, >, <= , <
●
FOURNISSEUR (FOURNUM, NOMFOUR, NOTE, VILLE)
●
BETWEEN Min AND Max
●
Afficher le contenu de la table FOURNISSEUR
●
IS NULL (ne contient pas de valeur)
●
IS NOT NULL (a une valeur, même 0)
●
LIKE chaîne de caractères (avec jokers)
–
–
●
●
% remplace n'importe quelle suite de caractères
●
'-' (souligné) remplace n'importe quel caractère
●
IN ( , , , ) inclusion d'une valeur dans une liste
●
NOT IN
●
( , , , )
Interrogation avec tri du résultat
–
●
SELECT NOMFOUR, NOTE, VILLE
FROM FOURNISSEUR
WHERE FOURNISSEUR.NOMFOUR LIKE 'Dupon%';
Interrogations avec fonctions
●
SELECT liste-colonnes
FROM nomtable
WHERE condition
ORDER BY liste-colonnes [ASC|DSC]
Trier les fournisseurs de Rennes par note décroissante
–
SELECT FOURNUM, NOMFOUR
FROM FOURNISSEUR
WHERE VILLE='Paris' OR VILLE='Marseille' ;
Quels sont les fournisseurs dont le nom commence par dupon ?
–
Opérations de tri
●
Quels sont les fournisseurs de Paris ou de Marseille?
–
caractères jokers :
SELECT FOURNUM, NOMFOUR, NOTE, VILLE
FROM FOURNISSEUR
WHERE 1;
SELECT NOMFOUR, NOTE
FROM FOURNISSEUR
WHERE VILLE='Rennes'
ORDER BY NOTE DSC
●
Quelques opérations numériques et statistiques
–
ABS(n)
valeur absolue
–
AVG(n)
valeur moyenne
–
COUNT(n)
nombre d'occurrences
–
FLOOR(n)
partie entière
–
MAX, MIN
valeur max, min
–
SQRT(n)
racine carrée
–
SUM
Somme de colonnes
Fonctions sur les date
–
SYSDATE
date système
Exemples avec des fonctions
●
FOURNISSEUR (FOURNUM, NOMFOUR, NOTE, VILLE)
●
Combien y a t-il de fournisseurs à Rennes ayant une note supérieure à 3 ?
–
●
●
Permet de réaliser le produit cartésien
–
SELECT COUNT( FOURNUM )
FROM FOURNISSEUR
WHERE VILLE = 'Rennes'
AND NOTE > '3'
Quel est la note moyenne des fournisseurs malouins ?
–
Expression des jointures
●
SELECT AVG( NOTE )
FROM FOURNISSEUR
WHERE VILLE = 'Saint Malo'
Quels fournisseurs fournissent le produit 34 ?
–
SELECT FOURNIT.FOURNUM, NOMFOUR
FROM FOURNISSEUR, FOURNIT
WHERE FOURNISSEUR.FOURNUM=FOURNIT.FOURNUM
AND FOURNI.PRODNUM ='34'
–
FOURNISSEUR (FOURNUM, NOMFOUR, NOTE, VILLE)
FOUNRNIT (FOURNUM, PRODNUM)
PRODUIT (PRODNUM, NOMPROD)
Expression des unions
●
●
Mot clé UNION [ALL | DISTINCT]
Quels sont les fournisseurs de Rennes et quels sont ceux ayant une note
supérieure à 3
–
Les sous questions
●
●
SELECT NOMFOUR
FROM FOURNISSEUR
WHERE VILLE='Rennes'
UNION ALL
SELECT NOMFOUR
FROM FOURNISSEUR
WHERE NOTE > '3';
SELECT liste-colonnes
FROM nomtableA, nomtableB
WHERE nomtableA.critere_jointure =
nomtableB.critere_jointure
●
Permet d'imbriquer des questions
SELECT liste-colonnes
FROM nomtable
WHERE condition
SELECT liste-colonnes
FROM nomtable
WHERE condition
Exemple :
–
LISTEVILLE(IDVILLE, NOMVILLE)
SELECT NOMFOUR
FROM FOURNISSEUR
WHERE VILLE IN
SELECT NOMVILLE
FROM LISTEVILLE
Opérations de mise à jour
●
insertion de lignes INSERT :
–
●
●
Opérations de mise à jour
●
INSERT INTO nomtable
[(nomcol1[,nomcol2]...)]
VALUES (val1[,val2]...);
INSERT INTO `FOURNISSEUR`
( `FOURNUM` , `NOMFOUR` , `NOTE` , `VILLE` )
VALUES ('1', 'Dupont', '3', 'Saint Malo');
INSERT INTO `FOURNISSEUR`
VALUES ('1', 'Dupont', '3', 'Saint Malo');
Opérations de mise à jour
●
suppression de lignes DELETE :
–
–
–
DELETE FROM nomtable
[WHERE condition];
DELETE FROM `FOURNISSEUR`
WHERE NOTE <2;
modification de lignes UPDATE :
–
UPDATE nomtable
SET nomcol1=exp1
[,nomcol2=exp2]....
[WHERE condition];
–
UPDATE `FOURNISSEUR`
SET `NOMFOUR` = 'Dupond',
`NOTE` = '4'
WHERE `FOURNUM` =1
LIMIT 1 ;
Autorisations d'accès
●
●
●
DELETE FROM `FOURNISSEUR`
WHERE `FOURNUM`=1;
●
Le créateur d'une table (ou d'une vue) en
est le propriétaire
Par défaut, les autres utilisateurs n'ont pas
accès à ces objets
Le propriétaire d'une table ou d'une vue
peut autoriser d'autres utilisateurs à
effectuer certaines opérations
Seul le droit de suppression (DROP VIEW ou
DROP TABLE) ne peut se céder
Autorisations d'accès
●
L'autorisation
–
●
GRANT liste de droits
ON objet
TO liste d'utilisateurs
[WITH GRANT OPTION]; si droit transmissible
Les droits
–
UPDATE : peut être suivi d'une liste de colonnes
–
ALL : autorise toutes les opérations (sauf DROP)
Suppression d'une autorisation
–
●
●
REVOKE liste de droits
ON objet
FROM liste d'utilisateurs;
Un droit ne peut être retiré que par
l'utilisateur qui l'a accordé (ou par le DBA)
Exemple :
–
REVOKE ALL PRIVILEGES
ON FOURNISSEUR
FROM 'web';
Exemple autorisations d'accès
●
●
GRANT ALL
ON FOURNISSEUR
TO 'web'
WITH GRANT OPTION;
GRANT SELECT ,INSERT ,UPDATE,
ON FOURNISSEUR
TO 'web'
WITH MAX_QUERIES_PER_HOUR 0
MAX_CONNECTIONS_PER_HOUR 0
MAX_UPDATES_PER_HOUR 0;
Plan du cours
1.Historique et concepts
2.Modélisation Conceptuelle des Données
3.Théorie de la normalisation
4.Passage au modèle relationnel
5.Stockage Physique
6.Modèle Relationnel
7.SQL
8.Contraintes et Intégrité
9.Transactions
10.Les bases de données pour un ASR
Les contraintes d'intégrité
●
Dans une SGBDR, les données sont
interdépendantes.
–
●
Contraintes et intégrité
●
●
Les contraintes d'intégrité sont statiques et
définies lors de la création du schéma.
Les données insérées ou modifiées doivent
répondre à ces critères.
Ces contraintes servent à maintenir les données de
la base dans un état cohérent
Les contraintes d'intégrité
●
Unicité de clé :
–
Voitures ID_voit
0
1
2
3
4
Les contraintes d'intégrité
●
on oblige à rendre uniques tous les éléments
d'une colonne. Chaque élément définit de
manière unique l'enregistrement associé.
Marque
Peugeot
Renault
Fiat
Peugeot
Ford
Modèle
206
Clio
Punto
307
Fiesta
Année
2000
2003
1999
2004
1987
Couleur
Vert
Bleu
Orange
Jaune
Rouge
Il faut donc garantir leur intégrité
Contrainte référentielle :
–
indique qu'un élément d'une colonne d'une table
donnée ne peut exister que si la valeur de cet
élément existe en tant que clé unique d'une
autre table.
–
On parle aussi de clé étrangère ou foreign key.
Les contraintes d'intégrité
–
Exemple de clé étrangère :
Voitures ID_voit ID_marque Modèle
0
0
206
1
1
Clio
2
2
Punto
3
0
307
4
4
Fiesta
Année
2000
2003
1999
2004
1987
Les contraintes d'intégrité
●
Contrainte de domaine :
–
Couleur
Vert
Bleu
Orange
Jaune
Rouge
●
Contrainte de non-nullité
–
Marques ID_marque
0
1
2
3
4
Marque
Peugeot
Renault
Fiat
VW
Ford
Pays
FR
FR
IT
DE
US
Les contraintes d'intégrité
●
●
Lors de la définition du schéma, il faut
veiller à ne pas définir des contraintes
redondantes ou conflictuelles.
Le système n'est pas capable de modifier la
requête pour satisfaire aux conditions
d'intégrité !
–
il faut tester la validité de la requête avant de
la faire, au risque de la voir échouer.
cette contrainte oblige les éléments d'une
colonne à appartenir à un intervalle donné.
Oblige les éléments d'une colonne à contenir
une valeur non nulle.
Les contraintes d'intégrité
–
Pour toute application se basant sur un SGBDR,
il est indispensable qu'à tout niveau les saisies
des utilisateurs soient vérifiées :
●
●
Au niveau client :
–
Vérification des champs avec JavaScript,
–
Vérification des données saisies dans un client lourd...
Au niveau application (PHP, ASP, JSP...) :
–
●
Vérification et remise en forme des données reçues.
Au niveau base de données :
–
contraintes d'intégrité.
Les contraintes en SQL
●
Contraintes lors de la création d'une table :
●
NOT NULL
●
UNIQUE
●
PRIMARY KEY
●
REFERENCES
●
CHECK
Les contraintes en SQL
●
CREATE TABLE Voitures (
ID_VOIT INT NOT NULL,
ID_MARQUE INT NOT NULL REFERENCES MARQUE(ID),
NB_PLACES SMALLINT DEFAULT 5,
CHECK NB_PLACES <= 8,
PRIMARY KEY (ID_VOIT))
Contraintes - Triggers
●
●
Les triggers peuvent s'activer lors
d'évènement particuliers
–
avant ou après un INSERT, SELECT, DELETE
–
avant ou après une transaction
–
avant ou après une procédure stockée
–
à une date précise
les déclencheurs (SQL92) ne sont pas
implantés dans toutes les SGBDR
–
Introduits seulement dans la version 5.0.2 de
MySQL (dec 2004)
Exemple :
Contraintes - Triggers
●
Syntaxe des déclencheurs en SQL :
CREATE TRIGGER nom_trigger
événement ON table
WHEN (condition)
instructions
FOR EACH ROW | STATEMENT
Contraintes - Triggers
●
Plan du cours
Exemple d'un déclencheur :
–
1.Historique et concepts
2.Modélisation Conceptuelle des Données
3.Théorie de la normalisation
4.Passage au modèle relationnel
5.Stockage Physique
6.Modèle Relationnel
7.SQL
8.Contraintes et Intégrité
9.Transactions
10.Les bases de données pour un ASR
Cet exemple va automatiquement remplir la
colonne “DateMAJ” avec la date actuelle
CREATE TRIGGER SetEntryDate
BEFORE UPDATE ON Document
(UPDATE Document
SET Document.DateMAJ = NOW() );
Transactions - Définition
●
●
Transactions
●
Une transaction est une suite d'opérations
dépendantes entre elles
Les Données doivent vérifier les propriétés ACID
–
Atomicité
–
Cohérence
–
Isolation
–
Durabilité
Les données doivent rester cohérentes
Transactions - Définition
●
Atomicité :
Transactions - Définition
●
–
Une transaction doit effectuer toutes ses mises
à jour ou ne rien faire du tout.
–
En cas d'échec, le système doit être capable de
revenir dans l'état initial.
Atomicité
Erreur !
Données
consistantes
Transaction
« Recovery Manager »
Transactions - Définition
●
Cohérence
–
–
En cas d'échec, l'état cohérent initial doit être
rétabli.
Données
consistantes
TRN
Données
consistantes
Données
inconsistantes
Journal de
transactions
Transactions - Définition
●
Une transaction doit faire passer la base de
données d'un état cohérent à un autre état
cohérent.
Abandon
Isolation :
–
Les résultats d'une transaction ne doivent être
visibles qu'après l'entière exécution de celle-ci.
–
L'accès concurrentiel aux données remet en
cause l'isolation des donneés.
Transactions - Définition
●
Isolation :
Transactions - Définition
●
–
TRN 1
Données
consistantes
Données
inconsistantes
TRN 2
TRN 1
Données
consistantes
Durabilité :
Après l'exécution d'une transaction, le système
doit garantir qu'elles seront conservées en cas
de panne.
Données
consistantes
TRN 2
Contrôle de
concurrence
Transactions - Définition
●
Durabilité
Transaction – Concurrence
●
Exemple de perte de cohérence
Coupure électrique
Données
consistantes
TRN
Données
consistantes
TR
Données
inconsistantes
A=B
T1: lire A -> a
T1: a+3.14 -> a
T1: 3A -> A
T2: lire A -> b
T2: A+1 -> A
T2: b*6.55957 -> b
T2: écrire b -> A
T2: B+1 -> B
T1: écrire a -> A
« Recovery Manager »
TR
Journal de
transactions
t
Perte de mise à jour
T1: 3B -> B
t
Incohérence
Transactions - SQL
●
●
●
Les transactions sont simples à définir en
SQL :
–
Chaque transaction commence par « BEGIN
TRANSACTION » et se finit par « COMMIT »
–
Il est possible de revenir dans l'état initial avec
la commande « ROLLBACK »
Supporté depuis version 4.0.11 (février
2003) de MySQL avec tables InnoDB
Attention cependant de ne pas générer des
inter-blocages
Plan du cours
1.Historique et concepts
2.Modélisation Conceptuelle des Données
3.Théorie de la normalisation
4.Passage au modèle relationnel
5.Stockage Physique
6.Modèle Relationnel
7.SQL
8.Contraintes et Intégrité
9.Transactions
10.Les bases de données pour un ASR
Les bases de données pour un
ASR
Les bases de données pour un ASR
Aspects juridiques
Aspects juridiques
●
Loi informatique et liberté Art. 2
●
Qu'est ce qu'une donnée à caractère personnel ?
●
●
●
●
" Constitue une donnée à caractère personnel toute
information relative à une personne physique
identifiée ou qui peut être identifiée, directement
ou indirectement, par référence à un numéro
d’identification ou à un ou plusieurs éléments qui
lui sont propres "
–
Son nom apparait
–
Un fichier comporte des informations permettant indirectement
son identification
Aspects juridiques
Dans la mesure où ils sont réalisés des opérations
(traitements) sur les données à caractère personnel alors
Déclaration
–
Simplifiée (fichier fournisseurs, rémunération, ...)
–
Normale CNIL
●
–
En clair une personne est identifiable si :
ex. : n° d’immatriculation, adresse IP, n° de téléphone, photographie,
une empreinte digitale, l’ADN, une date de naissance, ...
●
Aspects juridiques
●
Cf annexe et www.cnil.fr
Dispense déclaration (newsletters, blogs, organigramme)
Droit d'accès de la personne pour contrôler l'exactitude des
données et, au besoin, de les faire rectifier ou supprimer si
un intérêt légitime le justifie.
–
Plus d'infos : guide informatique et libertés CNRS :
http://www.dsi.cnrs.fr/cnil/guideil/Guide_IetL_CNRS.pdf
Les bases de données pour un
ASR
Le RNIPP
–
Répertoire National d'Identification des
Personnes Physiques (ou numéro INSEE)
–
Numéro identifiant mais aussi signifiant
–
Déclaration obligatoire et usage très strict
●
Usage justifié et en aucun cas systématique
●
Sanctions maximales prévues par la loi
–
300 000 Euros d'amende
–
5 ans d'emprisonnement
MySQL Vs PgSQL
Interface d'administration
PhpMyAdmin
MySQL Vs PgSQL
●
Version
Langage SQL
Rapidité
Transactions
Clés étrangères
Vues
Triggers
Contraintes
Procédures stockées
Type de tables
Sécurité
●
PgSQL
8
SQL92/99
Oui
Oui
Oui
Oui
Oui
Oui
PgSQL
++
MySQL
5 (Juillet 2004)
SQL92 allégé
++
Oui (InnoDB,BDB)
Oui (InnoDB)
Depuis 5.0
Depuis 4.0
Depuis 5.0.2
Depuis 5.0
MyISAM, InnoDB, MEMORY, BerkeleyDB,
MB Archive, NDBCluster
+
Mais avons-nous vraiment le choix ?
Interface d'administration
PhpPgAdmin
Les bases de données pour un
ASR
Administration de MySQL
Administration de MySQL
●
Connexion au SGBD
–
●
●
Administration de MySQL
●
mysql -h hote -u utilisateur -p nom_de_la_base
–
Enter Password :
–
mysql>
quit pour quitter
–
SELECT VERSION();
●
Sélectionner un base de données : USE test;
●
Créer une base de données
–
●
●
CREATE DATABASE cirm;
Supprimer une base de données
–
Administration de MySQL
SHOW DATABASES;
+----------+
| Database |
+----------+
| mysql
|
| test
|
| tmp
|
+----------+
Connaître la version
–
Bases de données d'un serveur
DROP DATABASE cirm;
Les bases de données pour un
ASR
Gestion des tables : SHOW TABLES;
+----------------+
| Tables_in_cirm |
+----------------+
| QUESTIONS
|
+----------------+
Structure d'une table : describe QUESTIONS;
●
+----------------+---------+------+-----+---------+----------------+
| Field
| Type
| Null | Key | Default | Extra
|
+----------------+---------+------+-----+---------+----------------+
| NUMEROQUESTION | int(11) | NO
| PRI | NULL
| auto_increment |
| QUESTION
| text
| NO
|
| NULL
|
|
| TYPEQUESTION
| int(4) | NO
| MUL | 0
|
|
+----------------+---------+------+-----+---------+----------------+
Gestion des utilisateurs
Gestion des utilisateurs
●
Les tables systèmes
●
Utilisateurs
–
●
●
●
Création d'un utilisateur
–
SELECT * FROM mysql.user;
+------------------------+----------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+--------------+--------------+-----------+------------+-----------------+------------+------------+
| Host
| User | Password
| Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv |
Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv |
+------------------------+----------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+--------------+--------------+-----------+------------+-----------------+------------+------------+
|%
| root | 43789327azeraz32 | Y
|Y
|Y
|Y
|Y
|Y
|Y
|Y
|Y
|Y
|N
|Y
|Y
|Y
|
| localhost
| glpi | 5ce8185f4cazer30 | N
|N
|N
|N
|N
|N
|N
|N
|N
|N
|N
|N
|N
|N
|
+------------------------+----------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+--------------+--------------+-----------+------------+-----------------+------------+------------+
●
●
Les bases de données pour un
ASR
–
DELETE FROM mysql.db WHERE User='monuser' AND
Host='localhost' AND Db='tp1';
–
FLUSH PRIVILEGES;
Sauvegarde
●
●
Sauvegardes
SELECT * FROM mysql.db WHERE User='monuser' AND
Host='localhost' AND Db='tp1' ;
Suppression
SELECT * FROM mysql.db;
+-----------+----------+----------+-------------+-------------+-------------+-------------+-------------+-----------+------------+-----------------+------------+------------+
| Host
| Db
| User
| Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Grant_priv | References_priv | Index_priv | Alter_priv |
+-----------+----------+----------+-------------+-------------+-------------+-------------+-------------+-----------+------------+-----------------+------------+------------+
|%
| test
|
|Y
|Y
|Y
|Y
|Y
|Y
|N
|Y
|Y
|Y
|
|%
| test\_% |
|Y
|Y
|Y
|Y
|Y
|Y
|N
|Y
|Y
|Y
|
| localhost | glpi | glpi
|Y
|Y
|Y
|Y
|Y
|Y
|N
|Y
|Y
|Y
|
+-----------+----------+----------+-------------+-------------+-------------+-------------+-------------+-----------+------------+-----------------+------------+------------+
GRANT les_privileges ON mabase.* TO monuser@'%'
IDENTIFIED BY 'motdepasse';
Vérification :
–
Droits sur les bases de données
–
●
Gestion des utilisateurs
●
La sauvegarde des bases de données est un
devoir pour tout DBA.
Il faut aussi être capable d'exploiter les
sauvegardes le moment venu...
Les méthodes de sauvegarde dépendent du
SGBDR utilisé.
Sauvegarde
●
Attention : ne jamais sauvegarder le fichier
de la base alors que le SGBD est en
fonctionnement normal !
–
Sauvegarde base fermée
●
●
Sauvegarde base fermée
●
Mode opératoire :
–
Arrêter le démon pilotant la base,
–
Après s'être assuré qu'aucun processus n'a ouvert les
fichiers, les copier vers leur destination,
–
Démarrer le démon.
Avantage :
–
●
Nécessite une indisponibilité totale de la
base de données pendant la sauvegarde.
Risques d'incohérences
●
●
La plus simple des méthodes,
Simplicité
Inconvénients :
–
Indisponibilité
–
Risque au redémarrage.
Consiste à la copie de l'ensemble des
fichiers de la base de données sur un
disque, une bande...
Sauvegarde base fermée
●
Exemple :
# /etc/init.d/mysql stop
# tar cf /dev/st0 /var/lib/mysql
# /etc/init.d/mysql start
Arrêt de MySQL
Utilisation de tar (Tape
ARchiving) pour écrire
sur un lecteur de bande le
contenu du répertoire où
sont tous les fichiers de
base de MySQL
Redémarrage de
MySQL
Sauvegarde base fermée
●
Pour restaurer ce type de sauvegarde :
–
Arrêter le daemon
–
Recopier les fichiers depuis le média de
sauvegarde,
–
Redémarrer le daemon.
Sauvegardes SQL
●
Consiste à « dumper » l'intégralité des bases.
●
Mode opératoire :
–
●
Avantage :
–
●
Sauvegardes SQL
●
Exemple avec MySQL :
$ mysqldump –all-databases –single-transaction > sauvegarde.sql
●
Restauration avec MySQL :
$ cat sauvegarde.sql | mysql -u user -p
La plupart des SGBDR fournissent l'utilitaire permettant
de récupérer l'ensemble des données et schémas.
La sauvegarde se fait base ouverte (seuls les écritures
sont interdites)
Inconvénients :
–
Propre à chaque SGBDR
–
Non Optimisé
Téléchargement