- Отношение один-к-одному, где зависимая сущность имеет дополнительное отношения к родительской сущности
"Персональные компьютеры принадлежат инженерам, но не все инженеры имеют персональные компьютеры"
CREATE TABLE Engineer
( en_num INT NOT NULL,
pc_num INT,
PRIMARY KEY (en_num) )
CREATE TABLE PC
( pc_num INT NOT NULL,
en_num INT,
PRIMARY KEY (pc_num),
FOREIGN KEY (en_num) REFERENCES Engineer ON DELETE SET NULL )
- Отношение один-к-одному, где зависимая сущность имеет обязательное отношения к родительской сущности
"У каждого отдела должен быть начальник, но начальник должен быть начальником только одного отдела"
CREATE TABLE Manager
( mgr_num INT NOT NULL,
PRIMARY KEY (mgr_num) )
CREATE TABLE Dept
( dep_num INT NOT NULL,
mgr_num INT NOT NULL,
PRIMARY KEY (dep_num),
UNIQUE (mgr_num)
FOREIGN KEY (mgr_num) REFERENCES Manager ON DELETE RESTRICT )
- Отношение один-к-одному, где обе сущности обязательны.
"Государство имеет одного правителя и правитель правит только одним государством"
CREATE TABLE State
( st_name CHAR(20) NOT NULL,
gv_name CHAR(20) NOT NULL,
PRIMARY KEY (st_name))
CREATE TABLE Governor
( st_name CHAR(20) NOT NULL,
gv_name CHAR(20) NOT NULL,
PRIMARY KEY (dv_name),
UNIQUE (st_name)
FOREIGN KEY (st_name) REFERENCES State ON DELETE RESTRICT )
- Отношение один-ко-многим, где зависимая сущность имеет необязательное отношение к родительской сущности.
"У инженера есть только одна секретарша, однако одна секретарша может работать на несколько инженеров"
CREATE TABLE Secretary
( sc_num INT NOT NULL,
PRIMARY KEY (sc_num))
CREATE TABLE Engineer
( en_num INT NOT NULL,
sc_num INT,
PRIMARY KEY (en_num),
FOREIGN KEY (sc_num) REFERENCES Secretary ON DELETE SET NULL )
- Отношение один-ко-многим, где зависимая сущность имеет обязательное отношение к родительской сущности.
"У каждого инженера обязательно есть только одна секретарша, однако одна секретарша может работать на несколько инженеров"
CREATE TABLE Secretary
( sc_num INT NOT NULL,
PRIMARY KEY (sc_num) )
CREATE TABLE Engineer
( en_num INT NOT NULL,
sc_num INT,
PRIMARY KEY (en_num),
FOREIGN KEY (sc_num) REFERENCES Secretary ON DELETE RESTRICT )
- Отношение многие-ко-многим.
"В профессиональное объединение входят как инженеры, так и не инженеры, в то же время, инженер может состоять в нескольких профессиональных ассоциациях."
CREATE TABLE PrfAsso
( ac_num INT NOT NULL,
PRIMARY KEY (ac_num) )
CREATE TABLE Engineer
( en_num INT NOT NULL,
PRIMARY KEY (en_num) )
CREATE TABLE Association_Engineer
( en_num INT NOT NULL,
ac_num INT NOT NULL,
PRIMARY KEY (en_num, ac_num),
FOREIGN KEY is_mem_1 (en_num) REFERENCES Engineer
ON DELETE CASCADE,
FOREIGN KEY is_mem_2 (ac_num) REFERENCES PrfAsso
ON DELETE CASCADE )
- Отношение с атрибутами.
"Лекарства производятся по лицензии фирмы. Фирма лицензировала производство нескольких деталей. Дата выдачи лицензии является атрибутом отношения".
CREATE TABLE Drug
( dt_num INT NOT NULL,
PRIMARY KEY (dt_num) )
CREATE TABLE DrManu
( fm_num INT NOT NULL,
PRIMARY KEY (fm_num) )
CREATE TABLE Drug_Firm
( dt_num INT NOT NULL,
fm_num INT NOT NULL,
Date,
PRIMARY KEY (dt_num, fm_num),
FOREIGN KEY lic_1 (dt_num) REFERENCES Drug ON DELETE CASCADE,
FOREIGN KEY lic_2 (fm_num) REFERENCES DrManu ON DELETE CASCADE )
- Отношение наследования
"Компонент устройства может быть как стандартным компонентом, так и компонентом, выполненным на заказ".
CREATE TABLE Component
( comp_id INT NOT NULL,
PRIMARY KEY (comp_id) )
CREATE TABLE Standard
( inv_num INT NOT NULL,
comp_id INT NOT NULL,
PRIMARY KEY (inv_num),
UNIQUE (comp_id),
FOREIGN KEY (comp_id) REFERENCES Component ON DELETE RESTRICT )
CREATE TABLE Make_To_Order
( ord_num INT NOT NULL,
comp_id INT NOT NULL,
PRIMARY KEY (ord_num),
UNIQUE (comp_id),
FOREIGN KEY (comp_id) REFERENCES Component ON DELETE RESTRICT )
При переносе из реляционного дизайна в модель данных можно не использовать средства моделирования данных. DataAtlas Dictionary обеспечивает способ, посредством которого информация из каталога баз данных переносится в объекты системы TeamConnection с таблицами и определениями таблиц. После этого можно преобразовать полученную таким путем модель данных в модель данных, работающую с DataAtlas Modeler.