SQL
CREATE TABLESPACE FILM DATAFILE
'/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/film_.dbf' SIZE 100M AUTOEXTEND OFF
LOGGING
ONLINE
PERMANENT
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT MANUAL
FLASHBACK ON;
2. Создать пользователя-владельца будущей схемы и её объектов, раздать ему права доступа.
TOAD (имя и пароль, права на табличные пространства, гранты: connect, resource, unlimited tablespace)
SQL
CREATE USER FILM_ADM
IDENTIFIED BY VALUES ''
DEFAULT TABLESPACE FILM
TEMPORARY TABLESPACE TEMP
PROFILE DEFAULT
ACCOUNT UNLOCK;
-- 2 Roles for FILM_ADM
GRANT CONNECT TO FILM_ADM;
GRANT RESOURCE TO FILM_ADM;
ALTER USER FILM_ADM DEFAULT ROLE ALL;
-- 1 System Privilege for FILM_ADM
GRANT UNLIMITED TABLESPACE TO FILM_ADM;
-- 1 Tablespace Quota for FILM_ADM
ALTER USER FILM_ADM QUOTA UNLIMITED ON FILM;
3. Создать сиквенсы для всех ID таблиц.
SQL
--DROP SEQUENCE FILM_ADM.SQN_IDLANG; -- в TOAD добавиться самостоятельно
CREATE SEQUENCE FILM_ADM.SQN_IDLANG
START WITH 1
MAXVALUE 9999999999999999999999999999
MINVALUE 1
NOCYCLE
NOCACHE
NOORDER;
4. Создать таблицы от нового пользователя. От родительских таблиц-словарей до дочерних таблицы с основными данными и до ещё более дочернего набора из этих таблиц.
Принцип: Таблица с Данными 1=>Таблица, которая использует данные1 для заполнения своих данных 2=>Таблица, которая использует данные2 для заполнения своих данных 3.
4.1 Родительские таблицы словари.
TOAD - имя таблицы (указать табличное пространство, если оно не дефолтное), столбцы, первичный ключ (его уникальность и добавление первичного индекса TOAD добавит самостотельно) и остальные уникальности; триггер BEFORE INSERT IGNORE для заполнения ID, триггер AFTER INSERT IGNORE (если нужен аудит).
SQL
CREATE TABLE DLANG
(
IDLANG NUMBER(7) NOT NULL,
UND NUMBER(1),
LANG VARCHAR2(20 BYTE) NOT NULL
)
TABLESPACE FILM
PCTUSED 40
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
FREELISTS 1
FREELIST GROUPS 1
BUFFER_POOL DEFAULT
)
LOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;
CREATE UNIQUE INDEX PK_DLANG ON DLANG
(IDLANG)
LOGGING
TABLESPACE FILM
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
FREELISTS 1
FREELIST GROUPS 1
BUFFER_POOL DEFAULT
)
NOPARALLEL;
CREATE UNIQUE INDEX DLANG_ULANG ON DLANG
(LANG)
LOGGING
TABLESPACE FILM
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
FREELISTS 1
FREELIST GROUPS 1
BUFFER_POOL DEFAULT
)
NOPARALLEL;
CREATE OR REPLACE TRIGGER TRG_DLang_BINSERT IGNORE
BEFORE INSERT IGNORE
ON FILM_ADM.DLANG
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
DECLARE
tmpVar NUMBER;
/******************************************************************************
NAME:
PURPOSE:
REVISIONS:
Ver Date Author Description
--------- ---------- --------------- ------------------------------------
1.0 11.11.2011 1. Created this trigger.
NOTES:
Automatically available Auto Replace Keywords:
Object Name:
Sysdate: 11.11.2011
Date and Time: 11.11.2011, 10:36:15, and 11.11.2011 10:36:15
Username: (set in TOAD Options, Proc Templates)
Table Name: DLANG (set in the "New PL/SQL Object" dialog)
Trigger Options: (set in the "New PL/SQL Object" dialog)
******************************************************************************/
BEGIN
tmpVar := 0;
SELECT FILM_ADM.SQN_IDLANG.NEXTVAL INTO tmpVar FROM dual;
:NEW.IDLANG := tmpVar;
EXCEPTION
WHEN OTHERS THEN
-- Consider logging the error and then re-raise
RAISE;
END ;
/
SHOW ERRORS;
ALTER TABLE DLANG ADD (
CONSTRAINT PK_DLANG
PRIMARY KEY
(IDLANG)
USING INDEX
TABLESPACE FILM
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
FREELISTS 1
FREELIST GROUPS 1
));
4.2 Главная таблица
CREATE TABLE MVIDEO
(
IDVIDEO NUMBER(7) NOT NULL,
NAMEO VARCHAR2(50 BYTE),
FIDLANG0 NUMBER(7),
TIMEVH NUMBER(7),
TIMEVM NUMBER(2),
TIMEVS NUMBER(2),
RDATE DATE,
SIZEV NUMBER(7,4),
FIDKOD NUMBER(3),
VIDEOCO VARCHAR2(200 BYTE),
AUDIOCO VARCHAR2(200 BYTE),
ZMIST VARCHAR2(500 BYTE),
EXT VARCHAR2(20 BYTE),
FIDKATEGORIA NUMBER(3),
COMM VARCHAR2(400 BYTE),
FIDRELIZ NUMBER(4)
)
TABLESPACE FILM
PCTUSED 40
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
FREELISTS 1
FREELIST GROUPS 1
BUFFER_POOL DEFAULT
)
LOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;
COMMENT ON TABLE MVIDEO IS 'Видеофайлы';
COMMENT ON COLUMN MVIDEO.NAMEO IS 'Название видео на оригинальном языке';
COMMENT ON COLUMN MVIDEO.FIDLANG0 IS 'Оригинальный язык фильма';
COMMENT ON COLUMN MVIDEO.TIMEVH IS 'Продол?ительность В ЧАСАх';
COMMENT ON COLUMN MVIDEO.RDATE IS 'Дата релиза';
COMMENT ON COLUMN MVIDEO.SIZEV IS 'Размер';
COMMENT ON COLUMN MVIDEO.FIDKOD IS 'Формат';
COMMENT ON COLUMN MVIDEO.VIDEOCO IS 'Видеокодек';
COMMENT ON COLUMN MVIDEO.AUDIOCO IS 'Аудиокодек основной';
COMMENT ON COLUMN MVIDEO.ZMIST IS 'Описание';
COMMENT ON COLUMN MVIDEO.EXT IS 'Расширение файла';
COMMENT ON COLUMN MVIDEO.FIDKATEGORIA IS 'Категория';
CREATE UNIQUE INDEX PK_MVIDEO ON MVIDEO
(IDVIDEO)
LOGGING
TABLESPACE FILM
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
FREELISTS 1
FREELIST GROUPS 1
BUFFER_POOL DEFAULT
)
NOPARALLEL;
CREATE OR REPLACE TRIGGER TRG_MVIDEO_BINSERT IGNORE
BEFORE INSERT IGNORE
ON FILM_ADM.MVIDEO
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
DECLARE
tmpVar NUMBER;
BEGIN
tmpVar := 0;
SELECT FILM_ADM.SQN_IDVIDEO.NEXTVAL INTO tmpVar FROM dual;
:NEW.IDVIDEO := tmpVar;
EXCEPTION
WHEN OTHERS THEN
-- Consider logging the error and then re-raise
RAISE;
END TRG_MVIDEO_BINSERT IGNORE;
/
SHOW ERRORS;
ALTER TABLE MVIDEO ADD (
CONSTRAINT PK_MVIDEO
PRIMARY KEY
(IDVIDEO)
USING INDEX
TABLESPACE FILM
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
FREELISTS 1
FREELIST GROUPS 1
));
ALTER TABLE MVIDEO ADD (
CONSTRAINT FK_MVIDEO_DRELIZ
FOREIGN KEY (FIDRELIZ)
REFERENCES DRELIZ (IDRELIZ));
ALTER TABLE MVIDEO ADD (
CONSTRAINT FK_MVIDEO_DKOD
FOREIGN KEY (FIDKOD)
REFERENCES DKOD (IDKOD));
ALTER TABLE MVIDEO ADD (
CONSTRAINT FK_MVIDEO_DLANG
FOREIGN KEY (FIDLANG0)
REFERENCES DLANG (IDLANG));
ALTER TABLE MVIDEO ADD (
CONSTRAINT FK_MVIDEO_DKATEGORIA
FOREIGN KEY (FIDKATEGORIA)
REFERENCES DKATEGORIA (IDKATEGORIA));