|
|
|
Отношение многие-ко-многим с иерархией
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Есть иерархия: организация - система - сервис (назовем их всех участниками). И есть регламенты, в которых могут быть задействованы произвольные участники. Причем, если в регламенте задействован сервис, то это означает, что в этом регламенте задействована и система, к которой он относится, и организация, к которой относится эта система. Так же и участие в регламенте системы означает участие в нем организации, к которой эта система принадлежит. Производительность вставки данных не очень критична. Важны выборки: например, найти все организации, которые связаны с данной организацией (через регламенты). Или найти все сервисы, связанные с заданным. Или найти все сервисы, с которыми взаимодействует заданная система. Скорей всего понадобится строить топологию со всеми участниками. Какие ещё будут запросы пока сложно сказать. Есть 3 способа представить эти отношения (см. рисунок): 1) 3 отдельных отношения. 2) Одно объединенное отношение 3) Одно отношение с абстрактным участником У 1-го и 2-го вариантов есть ещё по 2 подварианта: а) Если в регламенте указан сервис, то в нем уже не может быть указана ни система, ни организация, к которой принадлежит сервис. Если указана система, то не могут быть указаны ни один из её сервисов, ни организация. Если указана организация, то не могут быть указаны её системы и сервисы. б) Наоборот, если указан сервис или система, то указываются и их родители. Проще запросы, но сложнее поддерживать целостность. Какой вариант лучше? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2013, 16:51 |
|
||
|
Отношение многие-ко-многим с иерархией
|
|||
|---|---|---|---|
|
#18+
Хотя, и у 3-го варианта эти подварианты тоже могут быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2013, 16:52 |
|
||
|
Отношение многие-ко-многим с иерархией
|
|||
|---|---|---|---|
|
#18+
Что-то мне подсказывает, что вариант 2а лучший... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2013, 16:55 |
|
||
|
Отношение многие-ко-многим с иерархией
|
|||
|---|---|---|---|
|
#18+
ой, т.е. 2б - лучший вариант ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2013, 16:55 |
|
||
|
Отношение многие-ко-многим с иерархией
|
|||
|---|---|---|---|
|
#18+
У схемы варианта 2 наличествуют ФЗ в таблице ReglamentUsage. Мне лично больше нравится вариант 3 - единственно я бы в party добавил бы поле type с 3 возможными значениями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2013, 17:05 |
|
||
|
Отношение многие-ко-многим с иерархией
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин, В варианте 2б проще всего искать связи между участниками по регламентам: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Вариант 1а сводится к 2б достаточно заморочено: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 3а - немного проще: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 1б и 3б - вообще не варианты. Согласен, 3ий вариант лучше всего, спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2013, 23:21 |
|
||
|
Отношение многие-ко-многим с иерархией
|
|||
|---|---|---|---|
|
#18+
А какие доводы можно привести в пользу 3-го варианта? Вариант 2а не очень нормализованный, но можно сделать ограничение, чтобы не нулевым был только один столбец из OrganizationId, SystemId, ServiceId, и никаких аномалий не будет. В варианте 2б ограничения будут более сложными, но зато существенный выигрыш в производительности выборок. Этот вариант не очень сложный с точки зрения программистов (им легко при добавлении в регламент сервиса указать ещё и систему, организацию). В 3-ем варианте проще добавлять новые виды сущностей, но их и не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 04:35 |
|
||
|
Отношение многие-ко-многим с иерархией
|
|||
|---|---|---|---|
|
#18+
Ares_ekbЕсть иерархия: организация - система - сервис (назовем их всех участниками). И есть регламенты, в которых могут быть задействованы произвольные участники. Причем, если в регламенте задействован сервис, то это означает, что в этом регламенте задействована и система, к которой он относится, и организация, к которой относится эта система. Параграф мой. Не вижу иерархии. Система-организация-сервис - это параллель, или как там - коаксиал. Хоть стопицот агентов можно повесить на этот кабель. Регламент - это уровень. Скажем типа тикет. Следовательно нужна еще таблица - список тикетов, или форум. Ну я и думаю, чего тут изобретать. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 04:37 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=38323557&tid=1541180]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
162ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 15ms |
| total: | 273ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...