|
Как связать различные сущности с одним полем?
|
|||
---|---|---|---|
#18+
Есть таблица, описывающая системы (system, например). А у систем есть владелец - сотрудник, подразделение или организация. Как мне это связать в БД?! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2017, 09:42 |
|
Как связать различные сущности с одним полем?
|
|||
---|---|---|---|
#18+
Victor Mog, Как это сделано в операционных системах: Сделай группу доступа, в неё включи тех, кто имеет права. К защищаемой системе присоединить один к одному группу доступа и, возможно, поле владельца системы. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2017, 09:51 |
|
Как связать различные сущности с одним полем?
|
|||
---|---|---|---|
#18+
Victor MogКак мне это связать в БД?! Используй foreign key между таблицами system и owner, Люк! Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2017, 11:18 |
|
Как связать различные сущности с одним полем?
|
|||
---|---|---|---|
#18+
Может я не смог объяснить подробно... Нет таблицы owner ! Есть employees/i], [i]organisatrions и divisions - разные сущности! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2017, 11:34 |
|
Как связать различные сущности с одним полем?
|
|||
---|---|---|---|
#18+
Victor MogНет таблицы owner! Так создай. И перенеси туда общие поля из трёх перечисленных. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2017, 12:02 |
|
Как связать различные сущности с одним полем?
|
|||
---|---|---|---|
#18+
Victor Mogу систем есть владелец - сотрудник, подразделение или организация.Иными словами, экземпляр сущности "контрагент" является атрибутом сущности "система". В этом случае - просто поле в таблице систем и FK в таблицу с деревом контрагентов. Либо экземпляр сущности "контрагент" является мульти-атрибутом сущности "система" (несколько экземпляров контрагента одновременно являются владельцем экземпляра системы). В таком случае дополнительная связывающая таблица СистемаКонтрагент, и FK из неё в обе таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2017, 12:44 |
|
Как связать различные сущности с одним полем?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2017, 18:28 |
|
Как связать различные сущности с одним полем?
|
|||
---|---|---|---|
#18+
registerersкак то так?Нет, как-то не так. Организация, Отдел, Сотрудник - в рамках предметной области это одна и та же сущность Владелец. И таблица должна быть одна, а не три. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2017, 08:37 |
|
Как связать различные сущности с одним полем?
|
|||
---|---|---|---|
#18+
Akinaэто одна и та же сущность Владелец. И таблица должна быть одна, а не три. Ты предлагаешь создать таблицу OWNER. А как ты бы поступал дальше? Вариант с полем-дискриминантом и IDом без внешнего ключа (OwnershipType + OwnerId) уже многократно (и справедливо) раскритикован именно за то, что не позволяет создать внешний ключ и добится декларативного контроля целостности ссылок. Его рассматривать не будем. Можно сделать в таблице OWNER по внешнему ключу на каждый тип владельца. Это позволит легко создать ограничение "тип владельца должен быть один и только один" (подсчитать количество NOT NULL'ов и потребовать, чтобы оно было равно 1). Но потребует вмешаться в структуру таблицы всякий раз, когда набор возможных типов владельцев изменяется. Второй вариант — сделать ссылки в противоположном направлении, от владельцев каждого конкретного типа к общей таблице OWNER. Но проконтролировать, чтобы на каждую запись OWNER была ровно одна ссылка — наверное, здесь придётся накручивать нетривиальную логику на триггерах или хранимках. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 15:14 |
|
Как связать различные сущности с одним полем?
|
|||
---|---|---|---|
#18+
Victor MogЕсть таблица, описывающая системы (system, например). А у систем есть владелец - сотрудник, подразделение или организация. Как мне это связать в БД?! Наследование и связь с общим предком. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 16:22 |
|
|
start [/forum/topic.php?fid=32&tid=1540135]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 142ms |
0 / 0 |