Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Вопрос по теории / 5 сообщений из 5, страница 1 из 1
17.03.2011, 09:21
    #37169150
mar55555
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по теории
Есть таблица, которая реализует связь типа M:M

ID(РК)
TypeId(FK)
RequestId(FK)

пара TypeId -RequestId должна быть уникальной.

Вопрос как правильнее это сделать?
1. Убрать ID и сделать TypeId -RequestId составным ключом
2. Создать уникальный индекс для пары TypeId -RequestId, который так же не даст вставить одинаковую пару и оставить ID для возможности связывания данной таблицы еще с какой-нибудь в будущем(в случае расширения системы)

Модератор: Тема перенесена из форума "Microsoft SQL Server".
...
Рейтинг: 0 / 0
17.03.2011, 09:25
    #37169155
studieren
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по теории
mar55555,

Мне больше всего нравится Ваш 2-вариант. Но в принципе и 1-вариант теоретически возможно, но потом при составлении запросов не очень удобно.
...
Рейтинг: 0 / 0
17.03.2011, 09:27
    #37169165
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по теории
Я за второй вариант... В нашей СУБД вообще ИД у таблицы никак не убрать, он там есть всегда.
...
Рейтинг: 0 / 0
17.03.2011, 10:55
    #37169393
Flying Dutchman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по теории
mar55555Есть таблица, которая реализует связь типа M:M

ID(РК)
TypeId(FK)
RequestId(FK)

пара TypeId -RequestId должна быть уникальной.

Вопрос как правильнее это сделать?
1. Убрать ID и сделать TypeId -RequestId составным ключом
2. Создать уникальный индекс для пары TypeId -RequestId, который так же не даст вставить одинаковую пару и оставить ID для возможности связывания данной таблицы еще с какой-нибудь в будущем(в случае расширения системы)

Модератор: Тема перенесена из форума "Microsoft SQL Server".

Если используется только две колонки для реализации связи M:N, то Id не создавать и создать первичный ключ по (TypeId, RequestId).

Если кроме этих колонок есть еще другие (т.е. связь превращается в objectified relation), то возможно добавление Id в качестве суррогатного первичного ключа (при этом, конечно, необходимо оставить unique constraint по (TypeId, RequestId)).

В этом случае Id может быть удобен для реализации ссылок на эту таблицу из других таблиц.
...
Рейтинг: 0 / 0
17.03.2011, 16:17
    #37170520
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по теории
Id как первичный ключ не нужен.
Кстати подумайте над созданием дополнительного индекса по RequestId-TypeId.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Вопрос по теории / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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