ість, фірма).
Договір (Ім'я договору, номер, дата).
Історія.
Так само на основі логічної моделі будується фізична ER-модель показана на малюнку 2.2.
Малюнок 2.2 - Фізична модель даних
2.3 SQL
.3.1 DDL-скрипт
Далі щоб перенести спроектовану модель бази даних вOracle 10gнеобходімо згенерувати SQLскріпт:
CREATE TABLE Device
(_ OB INTEGER NOT NULL, _DEV VARCHAR2 (20) NULL, _VID INTEGER NULL, _SOST INTEGER NULL, _DOG INTEGER NULL
); UNIQUE INDEX XPKDevice ON Device
(ID_OB ASC); TABLE DeviceCONSTRAINT XPKDevice PRIMARY KEY (ID_OB); TABLE Dogovor
(_ DOG INTEGER NOT NULL, _DOG VARCHAR2 (20) NULL, _DOG VARCHAR2 (20) NULL, DATE NULL, _POD INTEGER NULL, _SOTR INTEGER NULL, _DOLJ INTEGER NULL
); UNIQUE INDEX XPKDogovor ON Dogovor
(ID_DOG ASC); TABLE DogovorCONSTRAINT XPKDogovor PRIMARY KEY (ID_DOG); TABLE Doljnost
(_ DOLJ INTEGER NOT NULL, CHAR (30) NULL, DECIMAL (8,2) NULL
); UNIQUE INDEX XPKDoljnost ON Doljnost
(ID_DOLJ ASC); TABLE DoljnostCONSTRAINT XPKDoljnost PRIMARY KEY (ID_DOLJ); TABLE History
(_ HIST INTEGER NOT NULL, _DOG INTEGER NULL, _OB INTEGER NULL
); UNIQUE INDEX XPKHistory ON History
(ID_HIST ASC); TABLE HistoryCONSTRAINT XPKHistory PRIMARY KEY (ID_HIST); TABLE Korpus
(_ KOR INTEGER NOT NULL, CLOB NULL, _POM INTEGER NULL
); UNIQUE INDEX XPKKorpus ON Korpus
(ID_KOR ASC); TABLE KorpusCONSTRAINT XPKKorpus PRIMARY KEY (ID_KOR); TABLE Podrazdelenie
(_ POD INTEGER NOT NULL, _POD VARCHAR2 (50) NULL, _POD VARCHAR2 (20) NULL, _KOR INTEGER NULL
); UNIQUE INDEX XPKPodrazdelenie ON Podrazdelenie
(ID_POD ASC); TABLE PodrazdelenieCONSTRAINT XPKPodrazdelenie PRIMARY KEY (ID_POD); TABLE Pomewenie
(_ POM INTEGER NOT NULL, _LEVELS CHAR (30) NULL, _SQUARE CHAR (30) NULL, SMALLINT NULL
); UNIQUE INDEX XPKPomewenie ON Pomewenie
(ID_POM ASC); TABLE PomewenieCONSTRAINT XPKPomewenie PRIMARY KEY (ID_POM); TABLE Sostoyanie
(_ SOST INTEGER NOT NULL, SMALLINT NULL
); UNIQUE INDEX XPKSostoyanie ON Sostoyanie
(ID_SOST ASC); TABLE SostoyanieCONSTRAINT XPKSostoyanie PRIMARY KEY (ID_SOST); TABLE Sotrudnik
(_ SOTR INTEGER NOT NULL, VARCHAR2 (30) NULL, VARCHAR2 (30) NULL, VARCHAR2 (30) NULL
); UNIQUE INDEX XPKSotrudnik ON Sotrudnik
(ID_SOTR ASC); TABLE SotrudnikCONSTRAINT XPKSotrudnik PRIMARY KEY (ID_SOTR); TABLE Vid
(_ VID INTEGER NOT NULL, DECIMAL (8,2) NULL, VARCHAR2 (20) NULL,
); UNIQUE INDEX XPKVid ON Vid
(ID_VID ASC); TABLE VidCONSTRAINT XPKVid PRIMARY KEY (ID_VID); TABLE Device (CONSTRAINT R_9 FOREIGN KEY (ID_VID) REFERENCES Vid (ID_VID) ON DELETE SET NULL); TABLE Device (CONSTRAINT R_10 FOREIGN KEY (ID_SOST) REFERENCES Sostoyanie (ID_SOST) ON DELETE SET NULL); TABLE Device (CONSTRAINT R_11 FOREIGN KEY (ID_DOG) REFERENCES Dogovor (ID_DOG) ON DELETE SET NULL); TABLE Dogovor (CONSTRAINT R_4 FOREIGN KEY (ID_POD) REFERENCES Podrazdelenie (ID_POD) ON DELETE SET NULL); TABLE Dogovor (CONSTRAINT R_6 FOREIGN KEY (ID_SOTR) REFERENCES Sotrudnik (ID_SOTR) ON DELETE SET NULL); TABLE Dogovor (CONSTRAINT R_7 FOREIGN KEY (ID_DOLJ) REFERENCES Doljnost (ID_DOLJ) ON DELETE SET NULL); TABLE History (CONSTRAINT R_12 FOREIGN KEY (ID_DOG) REFERENCES Dogovor (ID_DOG) ON DELETE SET NULL); TABLE History (CONSTRAINT R_14 FOREIGN KEY (ID_OB) REFERENCES Device (ID_OB) ON DELETE SET NULL); TABLE Korpus (CONSTRAINT R_2 FOREIGN KEY (ID_POM) REFERENCES Pomewenie (ID_POM) ON DELETE SET NULL); TABLE Podrazdelenie (CONSTRAINT R_3 FOREIGN KEY (ID_KOR) REFERENCES Korpus (ID_KOR) ON DELETE SET NULL);
2.3.2 Послідовності і тригери
Приклад створення послідовності:
CREATESEQUENCEm_sequenceWITH 11;
Приклад створення тригера:
OR REPLACE TRIGGER Channel_triggerINSERTDNIWE.POMEWENIENEW AS NEWEACH ROWm_sequence.NEXTVALINTO: NEW.ID_POM FROM dual;
END;
/
згенерувати дані sql-коди для кожної таблиці, то отримаємо автоматичне ...