Vous êtes sur la page 1sur 6

Interrogation TABD (COURS) Nom 

:
Question
1. Comment procède le RSI pour lutter contre les menaces internes ensuite Prénom :
externes sur la BD ?
2. Citez deux attaques importantes sur les BD et montrer comment pouvoir Matricule :
lutter contre ces menaces ?
Groupe :

1.
Menaces Internes :
1. Il doit d’abord faire de la sensibilisation de tous les employés
2. Asseoir une politique de sécurité assortie d’une charte signée par tous les employés
3. Sécuriser physiquement le serveur de BD
4. Concevoir des outils de traçabilité

Menaces externes

1.Installer un firewall
2.Renforcer les mécanismes d’authentification et de droits d’accès
3.Crypter les données
4.Concevoir des outils de monitoring pour comprendre le comportement des hakers.
5.Insister auprès des concepteurs d’application pour lutter contre les injections SQL et
dénis de services
2. Deux attaques
a. Injection SQL : l’utilisateur malintentionné injecte du code SQL pour pouvoir accéder
à des données dont il n’a pas droit.
b. Dénis de service : l’attaquant créé des applications qui bombardent le serveur avec
des requêtes multiples ce qui le charge et arrive à la bloquer.
3. Lutte
a. Injection SQL : restreindre la taille des zones d’édition dans les formulaires, interdire
tout mot clé SQL, re vérification des informations coté serveur, etc.
b. Dénis de service : Captcha, détection et blocage des adresses IP, etc.
Nom :
Prénom :
Interrogation TABD (TD) Matricule :
Soit le schéma de BD suivant : Groupe :
ARTICLE (REF-ART, DESIGNATION, PRIX UNITAIRE, STOCK)
CLIENT (NUMCLT, NOM, PRENOM, DATE DE NAISSANCE, RUECLIENT, VILLECLIENT, CODEPOSTAL)
FACTURE (NUMFACT, NUMCLT*, DATE)
LIGNEFACTURE (NUMFACT*, REF-ART*, QUANTITE)
Une société de vente d’articles scolaires souhaite se décentraliser de manière à ce que sa filiale à MSILA s’occupe des
clients de MSILA, sa filiale à BATNA s’occupe des clients de BATNA, même chose pour la filiale de SKIKDA mais la filiale de
Annaba s’occupe des clients de toutes les autres villes.
Questions  :
1. Proposer un schéma de fragmentation des trois relations CLIENT, FACTURE, LIGNEFACTURE pour répondre à ce besoin.
a. Donner le type de fragmentation utilisé
b. Donner les expressions algébriques
c. Donner les scripts SQL
d. Si les tables contiennent déjà des données, proposer une solution. Appliquer la solution sur la table CLIENT.

Table Type de Fragmentation Schéma


Client Primaire sur Ville.Client Client_Msila=σVilleClient=’Msila’ (Client)
en 4 fragments Client_Batna= σVilleClient=’Batna’ (Client)
Client_Skikda= σVilleClient=’Skikda’ (Client)
Client_Annaba= σVilleClient<>’Constantine’, Msila,Batna,Skikda (Client)
Requête SQL
Create Table Client_Frag
(….
Partition by list(Ville)
(Partition Client_Msila values (‘Msila),
Partition Client_Batna values (‘Batna’),
Partition Client_Skikda values (‘Skikda’),
Partition Client_Annaba default))
Si les tables sont vides  :
Remplir lanouvelle table  :Insert into Société_frag select * from
société
Supprimer l’ancienne table  : Drop table société
Renommer la table fragmentée  : Alter table société_frag
rename to société
Facture Dérivée par rapport au Facture_Msila= Facture ⋉ Client_Msila
schéma de fragmentation
Facture _Batna= Facture ⋉ Client_Batna
de la table Client
Facture _Skikda= Facture ⋉ Client_Skikda

Facture _Annaba= Facture ⋉ Client_Annaba


LigneFacture Dérivée par rapport au LigneFacture_Msila= LigneFacture ⋉ Facture_Msila
schéma de la table
LigneFacture_Batna = LigneFacture ⋉ Facture _Batna
Facture
LigneFacture_Skikda = LigneFacture ⋉ Facture _Skikda

LigneFacture_Annaba = LigneFacture ⋉ Facture _Annaba

La projection sur NUMCLT de la table CLIENT donne l’ensemble suivant :


{1, 3, 7, 15, 2, 8, 77, 6, 10, 105, 23, 13, 38, 44, 89, 19, 5, 18, 37, 49, 60, 153, 100, 28, 50, 78, 4, 9, 46}

1. Créer un index b-arbre sur cet attribut (d=3).


2. Dessinez l’arbre correspondant à l’insertion progressive des valeurs précédentes, en respectant l’ordre donné. On
prendra soin de donner les b-arbres intermédiaires remarquables.
3. Si toutes les requêtes font des sélections sur la ville du client et supposons que nous avons seulement 4 villes différentes.
4. Proposer un index bitmap pour optimiser ces requêtes en donnant la commande correspondante.

Créer un index bitmap sur l’attribut Ville.


Create Index Ville_ib_isx on Client.Ville

5. Quelle serait la taille de cet index en Ko si la table client contient 1000 000 clients.
Taille(Ville_ib_idx)=4*1000 000/8*1024 = 488.28 Ko
Nom :
Prénom :
Interrogation SGBD (TP) Matricule :
Groupe :
Une compagnie d’assurance spécialisée dans l’assurance automobile dispose de la base de données suivante :
ASSURE (NOASSURE, NOM-ASS, ADRESSE-ASS, AGE-ASS, WILAYA-ASS)
VEHICULE (NOVEHICULE, TYPE, PUISSANCE, MARQUE, ANNEE, WILAYA-VEH)
CONTRAT (NOCONTRAT, NOASSURE*, NOVEHICULE*, DATE-C, NATURE, PRIME)
SINISTRE (NOSINISTRE, NOCONTRAT*, DATE-S, CAUSE)
Les clés primaires sont soulignées et * représente une clé étrangère.

1) Donnez le script complet de création de la table CONTRAT par l’utilisateur BDD1


Create Table Contrat
(NOCONTRAT number, NOASSURE number, NOVEHICULE Number, Date-C Date, Nature
varchar(30), Prime number(10,2),
Constraint pk_ct Primary Key (NOCONTRAT),
Constraint fk-ass foreign key (NOASSURE) references ASSURE(NOASSURE),
Constraint fk-Veh foreign key (NOVEHICULE) references VEHICULE(NOVEHICULE));

2) La date du sinistre doit être supérieure à la date du contrat.


a. Proposez une solution pour répondre à ce besoin avec les commandes SQL correspondantes
Un trigger qui vérifie lors de l’insertion d’un sinistre que la date soit supérieure à
la date du contrat.
a. Donnez les commandes SQL (1.5 PTS)
Create or replace trigger verif_date
Before Insert on Sinistre
For each row
d Date;
Begin
Select DATE-C into d from CONTRAT where NOCONTRAT=:New.NOCONTRAT;
If (:new.DATE-S<d) Raise_application_error(‘2255’, ‘ La date du sinistre doit être
supérieur à la date du contrat’) ;
End ;
3) Soit la requête SQL : Insert into SINISTRE (12,10,’15/10/2016’,’Chaussée Glissante’).
a. Dans quels cas cette requête échoue.
b. Donnez une solution pour chaque cas.
Cas d’échec Solution
Clé primaire dupliquée Changer la clé
Contrat numéro 10 n’existe pas Changer le numéro 10 par un autre numéro existant
Créer le contrat numéro 10 ensuite insérer le sinistre
La date du sinistre est supérieure Choisir une date du sinistre supérieure à la date du
à la date du contrat contrat.
L’utilisateur n’a pas le droit Donner le droit d’insertion
d’insérer Grant insert on Sinistre to user
Table Space saturé Étendre le table space
Alter table space TBS Auto extend on ;

4) Donner le script permettant de créer un utilisateur BDD2 en lui attribuant un tablespace principal TBSP (un quota de 30 Mo
sur 50 Mo de taille globale) et un autre temporaire (20 Mo). Les deux tablespaces sont auto extensibles (donner leur script
de création).
Action Commande
Création du tablespace par Create Tablespace TBSB Datafile “tbsb.dat”
défaut Size 50 M AutoExtend ON
Création du tablespace Create Temporary Tablespace
temporaire TBSB_TEMP_TBS tempfile “tbsb_temp.dat”
Size 20 M AutoExtend ON
Création de l’utilisateur Create User BDD2 identified by xxxxxx
Default Tablespace TBSB_TEMP_TBS Quota 30
M
Temporary Tablespace INFO_TEMP_TBS

5) BDD2 peut lire et modifier toutes les tables de tous les utilisateurs. Donner la commande lui permettant d’avoir ce droit.
Donner la même commande en utilisant un rôle.
Grant select any table, Alter Any Table to BDD2
Create Role R1;
Grant select any table, Alter Any Table to R1
Alter user BDD 2 Role R1

6) Peut-il créer les tables ci-dessus ? Pourquoi ?


Il ne peut pas le faire, car il n’a pas un quota sur les tables space des utilisateurs
7) Donner les commandes lui permettant de le faire.
Sur tout table space TBS_XXX de utilisateur où il veut créer des tables, on doit lui donner un quota
Alter User BDD2 Quota unlimited On TBS_XXX

Vous aimerez peut-être aussi