© INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le...

34
© INT 1 Evry, 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

Transcript of © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le...

Page 1: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© 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

Page 2: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© 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

Page 3: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© 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

Page 4: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© 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

Page 5: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© 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

Page 6: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© 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

Page 7: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© 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

Page 8: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© 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

Page 9: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© 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

Page 10: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© 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

Page 11: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© INT 11Evry, 29-31 mai 2000

Vues relationnelles

Page 12: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© 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

Page 13: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© 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

Page 14: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© 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 ’;

Page 15: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© 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;

Page 16: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© 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;

Page 17: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© 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

Page 18: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© 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

Page 19: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© 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?

Page 20: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© 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?

Page 21: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© 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

Page 22: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© 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)

Page 23: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© 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

Page 24: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© 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

Page 25: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© 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

Page 26: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© 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

Page 27: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© 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

Page 28: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© 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

Page 29: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© 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

Page 30: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© 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

Page 31: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© 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

Page 32: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© 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

Page 33: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© 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

Page 34: © INT 1 Evry, 29-31 mai 2000 Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception dune BD relationnelle.

© 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;