Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как лучше дважды связать одни и те же сущности? / 12 сообщений из 12, страница 1 из 1
13.09.2013, 13:15
    #38395951
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше дважды связать одни и те же сущности?
Есть сущности: А и Б. В предметной области между ними может быть слабая и сильная связь. При этом слабая исключает сильную и наоборот. Я делаю две таблицы связи:

А(id) - АБ_сильная(idA, idБ) - Б(id)

и

А(id) - АБ_слабая(idA, idБ) - Б(id)

Таблиц А и Б по одной, естественно, просто между ними две таблицы связи для двух взаимодействий - слабого и сильного. Это нормальный вариант, или можно лучше? Например, через одну таблицу, где будет ещё поле на тип связи (а для этого, наверное, придётся ещё и таблицу типов связей заводить)? По идее, типов связей больше не будет - только два.

Я вижу пока только один минус моего варианта - выделенное выше жирным никак не контролируется, кроме как самим пользователем, заполняющим БД.
...
Рейтинг: 0 / 0
13.09.2013, 13:17
    #38395957
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше дважды связать одни и те же сущности?
Да, и при моём варианте это может быть распознано как нарушение нормальности БД или что-то в этом роде.
...
Рейтинг: 0 / 0
13.09.2013, 13:23
    #38395967
Кот Матроскин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше дважды связать одни и те же сущности?
Разумеется, одна таблица с полем "тип связи" лучше. Контроль осуществляется примитивным уникальным индексом на IdA, IdB
...
Рейтинг: 0 / 0
13.09.2013, 13:34
    #38395984
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше дважды связать одни и те же сущности?
Кот МатроскинРазумеется, одна таблица с полем "тип связи" лучше. Контроль осуществляется примитивным уникальным индексом на IdA, IdB
Т. е. придётся завести таблицу "тип связи"?
...
Рейтинг: 0 / 0
13.09.2013, 13:53
    #38396023
Кот Матроскин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше дважды связать одни и те же сущности?
user7320Кот МатроскинРазумеется, одна таблица с полем "тип связи" лучше. Контроль осуществляется примитивным уникальным индексом на IdA, IdB
Т. е. придётся завести таблицу "тип связи"?

Да как хотите.
Заводить на каждый чих таблицу-справочник необязательно, хотя зачастую удобно (если интересно более подробно - поищите на форуме "справочник полов")
...
Рейтинг: 0 / 0
13.09.2013, 14:53
    #38396144
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше дважды связать одни и те же сущности?
http://www.sql.ru/forum/1037616/vopros-o-celesoobraznosti-spravochnikov-m-i-zh?hl=?????????? ?????
Ладно, гомосеки победили )) , хотя у меня и не полы! Да и я тоже склонялся к таблице-справочнику, т. к. вроде есть вероятность появления третьего варианта связи, потому её в сущность неплохо бы.
...
Рейтинг: 0 / 0
13.09.2013, 15:26
    #38396200
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше дважды связать одни и те же сущности?
user7320Это нормальный вариант, или можно лучше?
Скажу так: если эти связи очень непохожи друг на друга (обладают совершенно разными наборами атрибутов, разными подпрограммами работы с ними итп), то такой вариант имеет право на жизнь, но "по умолчанию" тип связи - куда лучше.
...
Рейтинг: 0 / 0
13.09.2013, 16:37
    #38396311
Как лучше дважды связать одни и те же сущности?
Я так и не понял, зачем отдельная таблица - справочник. Да пусть этих типов связей хоть 1000 разных - с условием "одна исключает другую" это никак не связано.
...
Рейтинг: 0 / 0
13.09.2013, 16:38
    #38396313
Как лучше дважды связать одни и те же сущности?
Я так и не понял, зачем отдельная таблица - справочник. Да пусть этих типов связей хоть 1000 разных - с условием "одна исключает другую" это никак не связано.
...
Рейтинг: 0 / 0
13.09.2013, 18:43
    #38396429
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше дважды связать одни и те же сущности?
Теперь я сделал так.

Код: plaintext
1.
2.
А(id) -- АBсвязь(idA, idB, idТипСвязи) -- B(id)
          |
	ТипСвязи(id)

А как бы сделали вы? При условии, что типов связей гипотетически может стать больше, чем 2.
...
Рейтинг: 0 / 0
13.09.2013, 18:49
    #38396432
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше дважды связать одни и те же сущности?
Мимо пробегал...Я так и не понял, зачем отдельная таблица - справочник. Да пусть этих типов связей хоть 1000 разных - с условием "одна исключает другую" это никак не связано.
Можно и руками написать, что за тип связи, но лучше заставить пользователя выбирать из выпадающего списка готовые типы, чем обрабатывать ошибки пользователя при вводе руками.
...
Рейтинг: 0 / 0
13.09.2013, 18:49
    #38396433
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше дважды связать одни и те же сущности?
user7320Мимо пробегал...Я так и не понял, зачем отдельная таблица - справочник. Да пусть этих типов связей хоть 1000 разных - с условием "одна исключает другую" это никак не связано.
Можно и руками написать, что за тип связи, но лучше заставить пользователя выбирать из выпадающего списка готовые типы, чем обрабатывать ошибки пользователя при вводе руками.
Ну, а готовые типы лучше хранить в таблице-справочнике.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как лучше дважды связать одни и те же сущности? / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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