Database Reference
In-Depth Information
Tableau 4-18 : Vues à créer
Code SQL
Commentaire
Vue.pour.assurer.la.cohérence.du.parent.vers.l'enfant.
CREATE VIEW v1
AS SELECT * FROM t1 pere
WHERE NOT EXISTS
(SELECT employee_id
FROM t2
WHERE department_id=pere.department_id);
Vue.pour.assurer.la.cohérence.de.l'enfant.vers.le.parent.
CREATE VIEW v2
AS SELECT * FROM t2
WHERE (department_id IN
(SELECT department_id FROM t1)
OR department_id IS NULL)
WITH CHECK OPTION;
La vue
v2
restitue les départements qui n'embauchent aucun employé. La vue
v1
restitue les
employés associés à un département existant et ceux qui ne sont associés à aucun département
(la condition
IS NULL
peut être omise dans la vue si chaque enfant doit être obligatoirement
rattaché à un parent).
Les.règles.que.vous.devez.respecter.pour.manipuler.les.données.sont.les.suivantes.
•. Côté.
parent
:.modifications,.insertions.et.suppressions.par.la.vue
v1
.et.lecture.de.la.table
t1
.
•. Côté.
enfant
:.modifications,.insertions,.suppressions.et.lecture.par.la.vue
v2
.
Manipulons à présent les données de notre exemple par ces vues.
Tableau 4-19 : Manipulations des vues pour l'intégrité référentielle
Cohérence fils
→
père
Cohérence père
→
fils
Insertion.correcte :
INSERT INTO v2
(employee_id, irst_name, last_name, email,
hire_date, job_id,salary, commission_pct,
manager_id, department_id )
VALUES (99,'Fred','Brouard','sqlpro',
SYSDATE,'IT_PROG',3400,0,100,90);
Toute.insertion.à.travers.la.vue.
v1
.est.possible.(sous.
réserve.de.la.validité.du.type.des.colonnes.et.de.
l'existence.d'autres.contraintes.référentielles).
Insertion.correcte :
INSERT INTO v1
(department_id, department_name,
manager_id, location_id)
VALUES (800,'Eyrolles info.', 100,1700);