Должна ли моя промежуточная таблица содержать составной PK или уникальный индекс - PullRequest
1 голос
/ 30 марта 2011

Допустим, у меня есть таблица Products, таблица ProductsCategory и таблица Category.

Таблица ProductsCategory имеет два столбца: ProductID и CategoryID. Должен ли я использовать составной первичный ключ или уникальный индекс для двух столбцов?

Кроме того, если я использую индекс, я могу сделать его уникальным индексом или ключом.

Ответы [ 2 ]

8 голосов
/ 30 марта 2011

Можно также использовать составной ключ - нет необходимости добавлять уникальный индекс, если у вас уже есть семантика уникальности составного первичного ключа.

0 голосов
/ 30 марта 2011

Вы должны создать двусторонний внешний ключ и таблицу с опцией удаления каскада. Потому что, если вы удалите одну из категорий, она должна удалить реляционные строки в ProductCategory.

я имею в виду, вы можете использовать так:

alter table ProductsCategory add constraint ForeignKey1 foreign key (ProductId) references Products (ID) ON DELETE CASCADE;
alter table ProductsCategory add constraint ForeignKey2 foreign key (CategoryId) references Category (ID) ON DELETE CASCADE;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...