Базы данных Oracle - статьи

         

Люди у проходной


И посетители, и сотрудники проходят через проходную, где отмечаются в таблице CHECKPOINT:

CREATE TYPE checkpoint_typ AS OBJECT ( entrytime DATE , person person_typ ) /

CREATE TABLE checkpoint OF checkpoint_typ;

Вот как они могут "проходить":

INSERT INTO checkpoint VALUES ( SYSDATE , employee_typ ( 'Scott', 1111 ) );

INSERT INTO checkpoint VALUES ( SYSDATE , visitor_typ ( 'Adams', 333 ) );

INSERT INTO checkpoint VALUES ( SYSDATE , doctor_typ ( 'Smith', 2222, 'Therapeutist', '7778899' ) );

INSERT INTO checkpoint VALUES ( SYSDATE , stuff_typ ( 'Alice', 4444, 'Office-cleaner' ) );

Можно проверить, кто прошел:

SELECT * FROM checkpoint;

Обратите внимание на использованное упрощение: никто не запретил пройти через проходную просто сотруднику (Scott), то есть не врачу и не обслуживающему персоналу. Желание запретить такого рода вставки в таблицу во многих случаях возникает вполне законно. Для запрета следовало было описать тип EMPLOYEE_TYP (а заодно и PERSON_TYP) как "абстрактный" (это термин объектно-ориентированного подхода):

CREATE TYPE employee_typ UNDER person_typ ( empid NUMBER ) NOT FINAL NOT INSTANTIABLE /



Содержание раздела