powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как связать различные сущности с одним полем?
10 сообщений из 10, страница 1 из 1
Как связать различные сущности с одним полем?
    #39518996
Victor Mog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица, описывающая системы (system, например).
А у систем есть владелец - сотрудник, подразделение или организация.
Как мне это связать в БД?!
...
Рейтинг: 0 / 0
Как связать различные сущности с одним полем?
    #39519002
Фотография netfrog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Mog,

Как это сделано в операционных системах:

Сделай группу доступа, в неё включи тех, кто имеет права.

К защищаемой системе присоединить один к одному группу доступа и, возможно, поле владельца системы.
...
Рейтинг: 0 / 0
Как связать различные сущности с одним полем?
    #39519047
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor MogКак мне это связать в БД?!

Используй foreign key между таблицами system и owner, Люк!
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как связать различные сущности с одним полем?
    #39519062
Victor Mog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может я не смог объяснить подробно...
Нет таблицы owner !
Есть employees/i], [i]organisatrions и divisions - разные сущности!
...
Рейтинг: 0 / 0
Как связать различные сущности с одним полем?
    #39519083
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor MogНет таблицы owner!

Так создай. И перенеси туда общие поля из трёх перечисленных.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как связать различные сущности с одним полем?
    #39519110
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Mogу систем есть владелец - сотрудник, подразделение или организация.Иными словами, экземпляр сущности "контрагент" является атрибутом сущности "система". В этом случае - просто поле в таблице систем и FK в таблицу с деревом контрагентов.
Либо экземпляр сущности "контрагент" является мульти-атрибутом сущности "система" (несколько экземпляров контрагента одновременно являются владельцем экземпляра системы). В таком случае дополнительная связывающая таблица СистемаКонтрагент, и FK из неё в обе таблицы.
...
Рейтинг: 0 / 0
Как связать различные сущности с одним полем?
    #39519426
registerers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Victor Mog,

как то так?

...
Рейтинг: 0 / 0
Как связать различные сущности с одним полем?
    #39519645
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
registerersкак то так?Нет, как-то не так. Организация, Отдел, Сотрудник - в рамках предметной области это одна и та же сущность Владелец. И таблица должна быть одна, а не три.
...
Рейтинг: 0 / 0
Как связать различные сущности с одним полем?
    #39521913
Фотография Владимир П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akinaэто одна и та же сущность Владелец. И таблица должна быть одна, а не три.
Ты предлагаешь создать таблицу OWNER. А как ты бы поступал дальше?

Вариант с полем-дискриминантом и IDом без внешнего ключа (OwnershipType + OwnerId) уже многократно (и справедливо) раскритикован именно за то, что не позволяет создать внешний ключ и добится декларативного контроля целостности ссылок. Его рассматривать не будем.

Можно сделать в таблице OWNER по внешнему ключу на каждый тип владельца. Это позволит легко создать ограничение "тип владельца должен быть один и только один" (подсчитать количество NOT NULL'ов и потребовать, чтобы оно было равно 1). Но потребует вмешаться в структуру таблицы всякий раз, когда набор возможных типов владельцев изменяется.

Второй вариант — сделать ссылки в противоположном направлении, от владельцев каждого конкретного типа к общей таблице OWNER. Но проконтролировать, чтобы на каждую запись OWNER была ровно одна ссылка — наверное, здесь придётся накручивать нетривиальную логику на триггерах или хранимках.
...
Рейтинг: 0 / 0
Как связать различные сущности с одним полем?
    #39521965
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor MogЕсть таблица, описывающая системы (system, например).
А у систем есть владелец - сотрудник, подразделение или организация.
Как мне это связать в БД?!

Наследование и связь с общим предком.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как связать различные сущности с одним полем?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]