Примеры трансформации объектов модели данных.

  1. Отношение один-к-одному, где зависимая сущность имеет дополнительное отношения к родительской сущности

    "Персональные компьютеры принадлежат инженерам, но не все инженеры имеют персональные компьютеры"

    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 )
  2. Отношение один-к-одному, где зависимая сущность имеет обязательное отношения к родительской сущности

    "У каждого отдела должен быть начальник, но начальник должен быть начальником только одного отдела"

    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 )
  3. Отношение один-к-одному, где обе сущности обязательны.

    "Государство имеет одного правителя и правитель правит только одним государством"

    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 )
  4. Отношение один-ко-многим, где зависимая сущность имеет необязательное отношение к родительской сущности.

    "У инженера есть только одна секретарша, однако одна секретарша может работать на несколько инженеров"

    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 )
  5. Отношение один-ко-многим, где зависимая сущность имеет обязательное отношение к родительской сущности.

    "У каждого инженера обязательно есть только одна секретарша, однако одна секретарша может работать на несколько инженеров"

    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 )
  6. Отношение многие-ко-многим.

    "В профессиональное объединение входят как инженеры, так и не инженеры, в то же время, инженер может состоять в нескольких профессиональных ассоциациях."

    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 )
  7. Отношение с атрибутами.

    "Лекарства производятся по лицензии фирмы. Фирма лицензировала производство нескольких деталей. Дата выдачи лицензии является атрибутом отношения".

    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 )
  8. Отношение наследования

    "Компонент устройства может быть как стандартным компонентом, так и компонентом, выполненным на заказ".

    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.

[Назад] [Содержание] [Вперед]