Это ссылки на Циркулярные базы данных / внешний ключ? - PullRequest
0 голосов
/ 29 марта 2012

Я новичок в разработке баз данных.Это система, которую я должен разработать.

В компании есть сотрудники, которые работают на них.У Компании есть Клиенты, с которыми они имеют дело.У Компании есть Задачи, которые они могли бы сделать для Клиентов.Задача имеет вехи, которые должны быть выполнены до ее завершения.У сотрудника есть этапы, необходимые для выполнения задач.

Таким образом, моя структура базы данных выглядит следующим образом:

Company CompanyID PK

Клиент ClientID PK CompanyID FK

FixedTask FixedTaskID PK CompanyID FK

Вехи MilestoneID PK FixedTaskID FK

Сотрудник EmployeeID PK CompanyID FK

TaskPlanning TaskPlanningID PK EmployeeID FK ClientID FK MilestoneID FK

Может кто-нибудь сказать мне, если это циклическая ссылка?И если да, как я могу это исправить?

Спасибо !!

Ответы [ 2 ]

2 голосов
/ 29 марта 2012

это круговой? Нет, это не так.

Вы бы увидели, что мгновенно , если бы нарисовали диаграмму ситуации, подключив ссылки на внешний ключ:

               +--------------+
    +--------> |   Company    | <--------+
    |          +--------------+          |
    |                 ^                  |
    |                 |                  |
+--------+     +--------------+     +----------+
| Client |     |  FixedTask   |     | Employee |
+--------+     +--------------+     +----------+
    ^                 ^                  ^
    |                 |                  |
    |          +--------------+          |
    |          |  Milestone   |          |
    |          +--------------+          |
    |                 ^                  |
    |                 |                  |
    |          +--------------+          |
    +----------| TaskPlanning |----------+
               +--------------+

Следовательно, нет необходимости исправлять это.

0 голосов
/ 31 марта 2012

Как показывает paxdiablo , это не круговая ссылка.

Это, однако, "ромбовидная" зависимость , означающая, что у вас не только есть "расщепление", но и "слияние" линий, которые обозначают отношения между таблицами. Другими словами, это DAG , но не дерево.

Нет ничего, что неотъемлемо «исправляло бы» в ромбовидных зависимостях, однако некоторые СУБД (в частности, MS SQL Server) не могут принудительно применять ромбовидные отношения (т. Е. С помощью синтаксиса FOREIGN KEY), поэтому вам придется использовать триггеры вместо этого.

...