Contrôle de données
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
Ministère de l’Enseignement Supérieur et de la Recherche Scientifique
Université Dr Tahar Moulay de Saïda
Faculté de Technologie
Département d’Informatique
Master II - Réseaux Informatiques et Systèmes Répartis (RISR)
UEF32 - Administration et Sécurité des Systèmes d’Information Répartis (ASSIR)
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
1- Gestion des contraintes
Types de contraintes
Domaine
Unicité
Intégrité référentielle
Dans un SGBD centralisé, c’est bien géré
Dans la définition des tables
Les contraintes peuvent être déclarées de deux manières :
Inline constraints : En même temps que la colonne (valable pour les
contraintes monocolonnes), ces contraintes sont dites « en ligne ».
Out-of-line constraints : Une fois la colonne déclarée, ces contraintes ne sont
pas limitées à une colonne et peuvent être personnalisées par un nom.
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
1- Gestion des contraintes
Contraintes de Domaine
Check
NOT NUL
Se gère par fragment
Exemple: Inline constraints
CREATE TABLE Etudiant
(num_etud NUMBER(6) PRIMARY KEY,
nom_etud CHAR(20) NOT NULL,
Prenom_etud CHAR(30),
note NUMBER(4,2) CHECK (note BETWEEN 0 AND 20));
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
1- Gestion des contraintes
Exemple: Out-of-line constraints
CREATE TABLE Etudiant
(num_etud NUMBER(6) PRIMARY KEY,
nom_etud CHAR(20),
Prenom_etud CHAR(30),
note NUMBER(4,2),
CONSTRAINT nn_nom CHECK (nom IS NOT NULL),
CONSTRAINT ck_note CHECK (note BETWEEN 0 AND 20));
Conventions recommandées
- Préfixez par pk_ le nom d’une contrainte clé primaire, fk_ une clé étrangère,
ck_ une vérification, un_ une unicité.
- Si vous ne nommez pas une contrainte, un nom est automatiquement généré
sous la forme suivante : SYS_Cnnnnnn (n entier).
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
1- Gestion des contraintes
Contraintes d’unicité
Unique
Primary key
Gérable par fragment
Globalement non
Utilisation de trigger
Exemple: Out-of-line constraints
CREATE TABLE Produit
(num_prod NUMBER(5),
design_prod CHAR(20),
Qte_stk NUMBER(10,2) DEFAULT 0,
CONSTRAINT pk_produit PRIMARY KEY(num_prod),
CONSTRAINT un_design UNIQUE (design_prod));
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
2- Gestion de la clé primaire distribuée
CREATE TRIGGER cle_primmaire
INSTEAD OF INSERT ON Table
BEGIN
IF :New.cle < 1000 THEN
INSERT INTO Table1@site1(cle,attr1)
VALUES(:New.cle,:New.attr);
ELSE
INSERT INTO Table2@site2(cle,attr2)
VALUES (:New.cle,:New.attr);
END IF;
END;
1- Utilisation d’un trigger pour la gestion de la clé primaire selon une politique
(clé<1000 dans site 1 les autres dans site2).
CREATE VIEW Table AS
SELECT * FROM Table1@site1
UNION
SELECT * FROM Table2@site2;
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
2- Gestion de la clé primaire distribuée
CREATE TRIGGER Existe_cle
BEFORE INSERT ON Table1
FOR EACH ROW
DECLARE
v_cle NUMBER := 0;
BEGIN
SELECT COUNT(*) INTO v_cle FROM Table2@site2
WHERE cle2 = :NEW.cle1;
IF v_cle=1 THEN
RAISE_APPLICATION_ERROR(-20102, 'Le numéro de la cle existe dans la table
Table2!');
END IF;
END;
2- Utilisation d’un trigger pour la recherche de l’existence de la clé primaire dans
le deuxième site, sinon on insert le tuple.
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
3- Gestion de la clé étrangère distribuée
Intégrité référentielle
Gérable si la table mère et fille sont dans le même site
Globalement non
Utilisation de trigger
Exemple: Out-of-line constraints
CREATE TABLE Achat
(num_achat NUMBER(5),
num_prod NUMBER(5),
prix_ach NUMBER(10,2),
Qte_ach NUMBER(10,2),
CONSTRAINT pk_produit PRIMARY KEY(num_achat),
CONSTRAINT fk_ach_prod FOREIGN KEY (num_prod) REFERENCES
Produit(num_prod));
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
3- Gestion de la clé étrangère distribuée
Utilisation d’un trigger pour la recherche de l’existence de la clé étrangère dans
la table mère.
CREATE TRIGGER not_existe_cle
BEFORE INSERT ON Table_enfant
FOR EACH ROW
DECLARE
v_cle NUMBER := 0;
BEGIN
SELECT COUNT(*) INTO v_cle FROM Table_parent@site2
WHERE cle_parent = :NEW.cle_enfant;
IF v_cle=0 THEN
RAISE_APPLICATION_ERROR(-20102, 'Le numéro de la clé inexistant dans la
table parent!');
END IF;
END;
Master II - RISR ... Adminstartion et Sécurité des Systèmes d'Information Répartis (ASSIR)
Correspondance Oracle norme SQL