© int 1 evry, 29-31 mai 2000 programme introduction aux bd et aux sgbd le modèle relationnel le...
TRANSCRIPT
© INT 1Evry, 29-31 mai 2000
Programme
• Introduction aux BD et aux SGBD
• Le modèle relationnel
• Le langage de requête SQL
• La conception d’une BD relationnelle
Protection des informations
• Perspectives des BD
© INT 2Evry, 29-31 mai 2000
Protection des informations
Respect des règles de gestion des données (contraintes
d’intégrité)
• Définition de schémas externes (vues relationnelles)
• Définition de droits d’accès en fonction des utilisateurs
© INT 3Evry, 29-31 mai 2000
Contraintes d’intégrité
• Règles de gestion des données
• Etat cohérent de la base
• Vérifiées en permanence
© INT 4Evry, 29-31 mai 2000
Exemples de contraintes d’intégrité
Schéma de la BD Vins
Vins(num, cru, annee, degre)
Producteurs(num, nom, prénom, region)
Recoltes(nprod, nvin, quantité)
Modèle relationnel :Unicité de la clé (num dans vins)CI référentielle (nvin vers num)
Domaine :Année entre 1970 et 2000Région : ‘ Bourgogne ’,
‘ Beaujolais ’, …Non nullité :
Nom de cru de vin obligatoireComportementale:
Le degré d’un vin est supérieur à 7Le degré d’un vin augmente
© INT 5Evry, 29-31 mai 2000
Les CIs dans les SGBD• Quand les déclarer ?
À la création du schéma de BD
Au cours de la vie de la BD
• Comment les exprimer?
SQL
Extensions de SQL
• Qu’offrent les SGBD ?
Peu de CIs en général
Autres CIs vérifiées par programme
© INT 6Evry, 29-31 mai 2000
Les CIs dans les SGBD (2)
• Normes :
SQL 86 : unicité, non nullité, vue avec « check option »
SQL89 : domaine, clé, intégrité référentielle avec « rejet »
SQL2 (SQL92) : intégrité référentielle avec «cascade delete et update »
• Définition d ’une CI
2 possibilités:
À chaque définition d’attribut
À la fin de la définition d’une relation
© INT 7Evry, 29-31 mai 2000
ExempleCREATE TABLE VINS (
num integer PRIMARY KEY,cru char (40) NOT NULL,annee integer CONSTRAINT Cannee CHECK
(annee between 1970 and 2000),degre number(4,2) CONSTRAINT Cdegre CHECK
(degre between 9.0 and 15.0))
CREATE TABLE PRODUCTEURS (num integer PRIMARY KEY,nom char(40),prenom char(40),region char(40))
ALTER TABLE PRODUCTEURS add CONSTRAINT Cregioncheck (region in ('Bourgogne', 'Beaujolais', 'Alsace', 'Jura', 'Corse'))
CREATE TABLE RECOLTES(nprod integer, nvin integer,quantite integer)
ALTER TABLE RECOLTES add primary key (nprod, nvin)
ALTER TABLE RECOLTES add constraint refVIN foreign key (nvin) references VINS(num) on delete cascade
ALTER TABLE RECOLTES add constraint refREP foreign key (nprod) references PRODUCTEURS(num) on delete cascade
© INT 8Evry, 29-31 mai 2000
BD incohérente ?
CI et transactions
• BD cohérente : toutes les CIs sont vérifiées
• Transaction = ensemble de traitements sur la BD
Fait passer la BD d’un état cohérent à un autre état cohérent
Il se peut que ces contraintes d’intégrité ne soit pas vérifiées au cours de
la transaction
Exécution atomique
© INT 9Evry, 29-31 mai 2000
Problèmes liés aux CIs
• Cohérence
Pas de règles contradictoires
• Redondance
Age > 18 et âge > 21
• Optimisation
Nombre minimal de données mises à jour en jeu pour la vérification
Vérification sur certains types de màj uniquement
© INT 10Evry, 29-31 mai 2000
Protection des informations
• Respect des règles de gestion des données (contraintes
d’intégrité)
Définition de schémas externes (vues relationnelles)
• Définition de droits d’accès en fonction des utilisateurs
© INT 11Evry, 29-31 mai 2000
Vues relationnelles
© INT 12Evry, 29-31 mai 2000
Vues relationnelles (2)
• Objectifs :
Indépendance logique
Adaptation aux applications
Intégration des applications existantes
Dynamique du schéma de la base
Confidentialité et sécurité
Décentralisation de l’administration d’une BD
Hétérogénéité des modèles
© INT 13Evry, 29-31 mai 2000
Vues relationnelles
• Relation virtuelle
Ensemble de tuples n ’existe pas physiquement
Calculable à l ’exécution
• Définie par une requête SQL
• Utilisable comme une relation
• Utilisable pour définir une autre vue
© INT 14Evry, 29-31 mai 2000
SyntaxeCREATE VIEW nom_vue [{nom_attribut}]
AS requête
[WITH CHECK OPTION ]
“ WITH CHECK OPTION ” interdit :
d’insérer des tuples qui ne respectant pas les restrictions de la vue
de modifier un tuple en violant les contraintes définies sur la vue
Exemple CREATE VIEW vins_beaujolais (no, nom, degre)
AS SELECT num, cru, degre
FROM vins
WHERE cru=‘Beaujolais ’;
© INT 15Evry, 29-31 mai 2000
ExemplesCreate view crus (nom) as
select distinct cru
from vins;
Create view buveurs_beaujolais_paris (num, nom, qté_cdée) as
select B. nb, B.nom, sum(qté)
from buveurs B, cdes C, Vins V
where B. nb = C.nb and C.nv=V.nv
and V.cru = ‘ Beaujolais’
and B.ville = ‘Paris’
group by B. nb, B.nom;
© INT 16Evry, 29-31 mai 2000
Exemples (2)Relation : Parent (asc, dsc)
create view grand_parent (asc, dsc)as
select P1.asc, P2.dsc
from parent P1, parent P2
where P1.dsc = P2.asc;
create view arr_grd_parent (asc, dsc) as
select P.asc, GP.dsc
from parent P, grand_parent GP
where P.dsc=GP.asc;
© INT 17Evry, 29-31 mai 2000
Manipulation de la BD au travers des vues
• Consultation
Toujours possible
Nom de la vue dans la clause from
SELECT *
FROM vins_beaujolais;
• Mises à jour :
Rarement possible
© INT 18Evry, 29-31 mai 2000
Mises à jour• La clause DISTINCT ne doit pas être utilisée dans la requête
• La clause FROM ne doit contenir qu'une seule relation; si la relation source
est une vue, celle-ci doit vérifier cette contrainte
• La clause SELECT ne doit pas faire référence à des expressions, ou des
fonctions
• La clause WHERE ne doit pas contenir de requête imbriquée
• La requête ne doit pas contenir de clause GROUP BY ni de clause HAVING
© INT 19Evry, 29-31 mai 2000
Mises à jour (2)Create view Vins_bordeaux as
select nv, mil, deg
from vins
where cru = ‘Bordeaux ’
create view deg_moy_par_cru as
select cru, avg (deg)
from vins
group by cru
Tuples identifiables
Augmenter la moyenne
des degrés de 1?
© INT 20Evry, 29-31 mai 2000
Mises à jour (2)Create view buveurs_beaujolais_paris (num, nom, qté,_cdée) as
select B. nb, B.nom, sum(qté)
from buveurs B, cdes C, Vins V
where B. nb = C.nb and C.nv=V.nv
and V.cru = ‘ Beaujolais ’
and B.ville = ‘ Paris ’
group by B. nb, B.nom
Ajouter 10 à la quantité commandée
par le buveur 10?
© INT 21Evry, 29-31 mai 2000
Suppressions et renommage
• Destruction: DROP VIEW
Toutes les vues qui utilisent cette vue sont automatiquement détruites
• Relation de base détruite => toutes les vues définies sur
cette relation sont automatiquement détruites
• Renommage:
RENAME ancien_nom TO nouveau_nom
© INT 22Evry, 29-31 mai 2000
Traitements des vues par un SGBD
• Techniques:
Modification de question (Ingres)
Restructuration d ’arbre algébriques (System/R)
Matérialisation de la vue (Sabre)
© INT 23Evry, 29-31 mai 2000
Modification de question
• Principe:
modification de la question posée sur la vue en réintégrant les relations de base
• Exemplecreate view recoltes10
as select nvin select *
from recoltes from recoltes10
where nprod = 10 where qte > 250
select nvin
from recoltes
where nprod = 10 and qte > 250
© INT 24Evry, 29-31 mai 2000
Restructuration algébrique
• Nécessite une compilation préalable des vues
• Principe :
fusionner les arbres algébriques
optimiser le nouvel arbre
© INT 25Evry, 29-31 mai 2000
Matérialisation des vues
• Réalisée à l’exécution de la requête
• Principe :
Matérialisation de la vue par exécution de la question la spécifiant
Optimisation et exécution de la requête sur la vue, considérée comme une
relation de base
© INT 26Evry, 29-31 mai 2000
Critiques des vues
• Sécurité
• Différentes façons de voir la
BD
• Indépendance logique
• Faciliter la manipulation
• Mise à jour impossibles en
général
© INT 27Evry, 29-31 mai 2000
Protection des informations
• Respect des règles de gestion des données (contraintes
d’intégrité)
• Définition de schémas externes (vues relationnelles)
Définition de droits d’accès en fonction des utilisateurs
© INT 28Evry, 29-31 mai 2000
Autorisations
• Techniques pour assurer la confidentialité:
Définition de contraintes d'autorisation
Contrôle de flux de données
Contrôle d'inférence
Cryptographie
© INT 29Evry, 29-31 mai 2000
Concepts SQL
• Notion d'utilisateur : User_name + mot de passe
• Notion de BD logique == propriétaire
• Classes d'utilisateurs hiérarchisées
Utilisateur final : CONNECT
Programmeur : RESSOURCE
Administrateur : DBA
© INT 30Evry, 29-31 mai 2000
Privilèges
• Créateur d'une relation ou d'une vue = propriétaire
• Peut donner un droit
• Peut autoriser à transmettre un droit
• Droits sur un objet :
SELECT : consultation DELETE : suppression
INSERT : insertion UPDATE : modification
© INT 31Evry, 29-31 mai 2000
Langage de définition de contraintes d'autorisation
GRANT <privilège>
ON <objet>
TO <utilisateur>
[WITH GRANT OPTION];
DefudeGRANT SELECT ON vinsTO carpentier;
GRANT SELECT, UPDATE(cru)ON vinsTO carpentier, assarWITH GRANT OPTION;
GRANT ALLON vinsTO carpentier;
Carpentier
select *on defude.vins
Synonyme définivins=defude.vins
select *on vins
© INT 32Evry, 29-31 mai 2000
Rôles
Droit 1(lect. sur vins)
Droit 2(lect. sur récoltes)
Droit 3(lect. sur prod.)
Droit 1(lect. sur vins)
Droit 2(lect. sur récoltes)
Droit 3(lect. sur prod.)
Rôle
© INT 33Evry, 29-31 mai 2000
Droits et vues
• Donner des droits de lecture non pas sur la relation entière,
mais sur une vue basée sur la relation
• => restreindre l’accès à quelques attributs CREATE VIEW vins_beaujolais AS
SELECT num, cru, degre
FROM vins
WHERE cru=‘ Beaujolais ’;
GRANT SELECT ON vins_beaujolais TO producteurs_beaujolais;
• Droits + vues => bonne protection des données
© INT 34Evry, 29-31 mai 2000
Retirer des droits
• REVOKE <privilèges>
ON <objet>
FROM <utilisateurs>
• Retire les droits transmis
REVOKE ALL
ON vins
FROM defude;