• Aucun résultat trouvé

Bases de données distribuées

N/A
N/A
Protected

Academic year: 2022

Partager "Bases de données distribuées"

Copied!
5
0
0

Texte intégral

(1)

G. Salzano / Ph Chochois

Bases de données distribuées

Ces exercices illustrent la mise en œuvre des droits dans sous Oracle, dans différents scénarios : environnement centralisé et distribué.

Important : Sauvegardez vos scripts dans des fichiers texte !

Révisions et mise en place de l’environnement.

Connectez vous à la base de données « etud » puis, à l’aide de requêtes SQL, et en prenant soin de choisir des types de champs appropriés, vous devez créer une table « service » afin de renseigner les valeurs suivantes :

num_service nom_service lieu

10 Recherche Rennes

20 Vente Metz

30 Direction Gif-sur-Yvette 40 Fabrication Toulon

50 SAV Metz

Vous devez définir sur la table « service » les contraintes suivantes : - Le numéro de service est la clé primaire de la table

- Le nom du service est unique (sans doublons) - Le lieu du service est obligatoirement renseigné

Créez ensuite une table « employe » pour renseigner les valeurs suivantes :

mat nomemploye fonction Dateembauche salaire commission numservemploye matsuperieur

16712 Martin President 1985-05-07 40000 NULL 30 NULL

17574 Dupont Administratif 1995-05-03 9000 NULL 30 16712

26691 Dupond Commercial 1982-10-14 25000 5000.00 20 27047

15155 Gardarin Ingenieur 1998-12-07 24000 NULL 10 24533

15156 Barbarin Ingenieur 1997-02-14 21000 NULL 10 24533

24533 Lechif Ingenieur 1995-11-12 30000 NULL 10 16712

Vous devez définir sur la table « employe » les contraintes suivantes : - Le matricule est la clé primaire de la table

- Le nom d’employé est obligatoire

- Le numéro de service de l’employé référence la table « service » 5Il est interdit d’avoir un employé rattaché à un service inexistant)

- Le matricule du supérieur de l’employé référence un matricule dans la table des employés.

Remarque : Si le supérieur « disparait », les personnes encadrées ne seront pas supprimées mais n’auront plus de supérieur

Remarque : Si les valeurs saisies sont incorrectes, modifiez-les judicieusement.

(2)

Scénario 1.

Dans ce scénario, on teste les droits des utilisateurs sur une même base de données.

Pour cela, deux utilisateurs, user1 (vous même connecté avec votre login) et user2 (vous même connecté avec un autre login) se connectent sur la même base « etud » (utiliser pour chaque user une fenêtre Xterm). Analyser les réponses du système aux différentes actions.

1) user1 a créé les tables « service » et « employe » sur la base « etud » 2) user2 se connecte et lance des requêtes afin de:

a) lire les tables de user1. Que dit le système ?

b) créer un synonyme appelé « employe » pour la table « employe » de user1 et accéder à la table. Que dit le système ?

3) user1 donne les droits à user2 de lire la table « employe » 4) user2 lance les requêtes suivantes:

a) afficher ses droits sur la table « employe » de user1 b) lire la table « employe » à l’aide su synonyme créé 5) user1 supprime la table « employe »

6) user2 lance la requête suivante: « lire employe de user1 »

7) A l’aide des requêtes préalablement sauvegardées, user1 crée une nouvelle table « employe » et réinsère les occurrences dans la table. User1 ne donne aucun droit sur cette table à user2

8) user2 lance les requêtes suivantes:

a) afficher ses droits sur la table « employe » de user1 et expliquez la réponse du système b) lire la table « employe » de user1 (avec et sans utilisation du synonyme)

(3)

Scénario 2.

Dans ce scénario, on teste les droits d'un même utilisateur sur deux bases de données : bd1 (etud) et bd2 (replik).

Cet utilisateur, user1 (vous même) est connu sur les deux bases. Analyser les réponses du système aux différentes actions.

Note : Dans cet exercice et dans les suivants, on changera de session SQL sans quitter le système, c’est à dire sans passer par la commande "exit"; pour cela on utilisera la commande sqlplus « connect » dont la syntaxe est : Connect nom_d_user/password@base_de_données

1) user1 se connecte sur bd1.user1 a accès aux tables

« service » et « employe » créées précédemment.

a) Afficher la jointure entre ces deux tables pour afficher le nom de l’employé et le nom de la ville.

2) Pour des raisons stratégiques, les données de l’activité « recherche » vont être stockées sur la base de données bd2.

a) Connectez vous sur cette base et créez les tables « serviceRecherche » et « employeRecherche » avec les mêmes structures que les tables « service » et « employe » sur la base bd1:

b) Alimentez les tables avec les informations suivantes : num_service nom_service lieu

10 Recherche Rennes

mat nomemploye fonction dateembauche salaire commission numservemploye matsuperieur

24533 Lechif Ingenieur 1995-11-12 30000 NULL 10 NULL

c) Afficher la jointure entre ces deux tables pour afficher le nom de l’employé et le nom de la ville.

d) Afficher la jointure entre les deux de la base bd1. Que vous dit le système ? e) Créer un database link (commande « create database link etud using 'etud' ; ») f) Observer le contenu du dictionnaire (Vue USER_DB_LINKS)

g) Afficher la jointure entre les deux tables « employe » et « recherche » sur la bd1 en utilisant le database link h) En consultant le dictionnaire, afficher les noms des tables de la bd2

i) Afficher les noms des tables de la bd1

j) Créer des synonymes « service » et « employe » pour ses tables sur bd1 k) Afficher la jointure, grâce aux synonymes, entre les deux tables sur la bd1

l) L’objectif d’avoir 2 bases de données est de répartir les informations entre ces 2 bases, pas de les dupliquer. A l’aide de requêtes, identifiez les redondances d’informations entre les 2 bases.

m) Grâce aux liens entre les 2 bases, et sans vous obliger à resaisir les informations, répartissez de façon cohérente les informations entre les 2 bases. Attention à bien réfléchir à l’ordre des requêtes pour ne pas violer les contraintes.

n) En une seule requête, affichez tous les noms d’employés (des 2 bases de données) ainsi que leur lieu de travail 3) Connecter user1 avec une seconde console sur la base de données bd1. Voit-il les modifications apportées ? 4) Déconnecter user1 de la première console

5) User1 voit-il maintenant les modifications apportées ?

(4)

Scenario 3

Dans ce scénario, on teste le travail coopératif de deux utilisateurs différents sur les objets (tables et vues) de deux bases de données : bd1 (etud) et bd2 (replik).

Les utilisateurs sont :

- user1 (vous même avec votre compte) : il travaille à partir de la bd1 (etud)

- user2 (utilisation d’un autre compte) : il travaille à partir de la bd2 (replik)

1) user1 se connecte sur bd1

Les 2 tables « employe » et « service » sont toujours présentes sur bd1. L’entreprise propose à certains de ses employés qui le souhaitent des emplacements de parking pour garer leur véhicule. Pour des raisons de sécurité, elle souhaite mémoriser les véhicules et leur propriétaire.

Compte-tenu du nombre de places de parkings, il y aura 5 fois moins de véhicules à mémoriser que d’employés et pour cette raison, on autorise un seul véhicule par employé.

Si l’employe quitte l’entreprise (Delete dans la base), on supprime les informations concernant son véhicule.

Créez la table « vehicule », en choisissant judicieusement les contraintes, permettant de mémoriser : - Le numéro d’immatriculation du véhicule

- La désignation du véhicule - La couleur du véhicule

Mémoriser les informations suivantes dans la table

- Martin possède le véhicule BMW 750i noire immatriculé 233 EFG 75 - Dupont ne possède pas de véhicule

- Dupond possède le véhicule Renault Clio Sport rouge immatriculé 123 ABC 77

User2 doit posséder les droits de lecture sur les deux tables « employe » et « service ». Ne donner aucun droit sur la table « vehicule »

2) user2 se connecte sur bd2 et lance les requêtes suivantes:

a) Afficher les noms de vos propres tables sur bd2 b) Créer un database link vers bd1

c) Afficher les noms de vos propres tables sur bd1

d) Afficher les noms des tables auxquelles vous avez accès sur bd1 avec le nom du propriétaire

e) Créer des synonymes pour « employe » et « service ». Si cela ne fonctionne pas, trouvez la raison et corrigez ! f) Afficher la jointure entre les deux tables « employe » et « service ». Si cela ne fonctionne pas, corrigez ! g) Afficher la table « vehicule ». Que vous dit le système ?

3) user1 se connecte sur bd1

a) Créer une vue « vue_totale » afin d’obtenir toutes les informations sans redondance, en faisant la jointure des trois tables

b) Afficher le contenu de la vue

c) Donner les droits de lecture sur la vue à user2 4) user2 se connecte sur bd2

a) Afficher le contenu de la vue créée précédemment (sans ou avec des synonymes) b) Afficher le contenu de la table « vehicule ». Que vous dit le système ? Expliquez ! 5) user1 se connecte sur bd1

a) Créer une vue « vue_vehicule » sur la table « vehicule »

b) Donner les droits de lecture et de mise à jour à user2 sur la vue « vue_vehicule »

(5)

6) user2 se connecte sur bd2

a) Créez un synonyme sur la vue créée précédemment puis afficher le contenu de la vue et de la table. Que vous dit le système

b) Le président a fait repeindre sa BMW en jaune fluo. Modifiez la couleur de la table sans passer par la vue, ni par le synonyme. Que vous dit le système ?

c) Modifier des valeurs dans la table »vehicule » en utilisant la vue. Que vous dit le système ?

7) Essayez d’écrire une requête de jointure entre 2 tables de bases différentes et d’utilisateurs différents. Que vous dit le système ?

8) Pour les plus avancés, essayez de créer un cluster sur les clés de 2 tables de bases de données différentes. Que vous dit le système ?

Références

Documents relatifs

On désire ecrire un programme qui calcule le discriminant et les éventuelles racines d’un trinôme du second degré ax 2 + bx + c... Première S Programmer

Cliquer sur le lien « Tableau de bord », puis aller dans l’onglet « Cours » pour voir la liste des cours dont vous êtes gestionnaire. Cliquer sur le cours que vous voulez éditer..

En cas de redistribution du document ou d’une version dérivée, il doit être partagé à son tour sous licence Creative Commons BY SA. Le police cursive utilisée est « AA

VENTE (NUMSERIE*, LOT, NOMCLIENT, NOMVENDEUR, MONTANT) Vente est fragmentée selon une fragmentation horizontale dérivée « FHD » de la table production donc on regroupera les

 Distribuée : le graphe global est construit au niveau de chaque site, donc chaque site reçoit tous les graphes locaux pour construire le graphe global.. 

•  Les données d’une application sont de plus en plus souvent distribuées entre plusieurs SGBD/serveurs.. •  Dans cette séquence,

Depuis la liste des applications, appuyez sur Paramètres → Connexions → Appareils à proximité, puis faites glisser le curseur Appareils à proximité vers la droite pour activer

Créer un fichier ASCII (fichier texte, séparateurs tabulations) avec 4 colonnes (3 numériques et une caractère) et 5 observations, en précisant dans une première ligne le