У меня есть следующие таблицы в моей базе данных, которые имеют отношение "многие ко многим", которое выражается таблицей соединений, которая имеет внешние ключи к основным ключам каждой из основных таблиц:
- Виджет: WidgetID (PK), название, цена
- Пользователь: UserID (PK), FirstName, LastName
Предположим, что каждая комбинация User-Widget уникальна. Я вижу два варианта структурирования таблицы соединений, которая определяет отношение данных:
- UserWidgets1: UserWidgetID (PK), WidgetID (FK), UserID (FK)
- UserWidgets2: WidgetID (PK, FK), UserID (PK, FK)
Вариант 1 имеет единственный столбец для Первичного ключа. Однако это кажется ненужным, поскольку единственными данными, хранящимися в таблице, является взаимосвязь между двумя первичными таблицами, и сама эта связь может сформировать уникальный ключ. Таким образом, приводя к варианту 2, который имеет первичный ключ с двумя столбцами, но теряет уникальный идентификатор с одним столбцом, который имеет параметр 1. Я также мог бы добавить в первую таблицу уникальный индекс с двумя столбцами (WidgetID, UserID).
Есть ли какая-либо реальная разница между двумя характеристиками по производительности или по какой-либо причине предпочитают один подход над другим для структурирования таблицы UserWidgets many-to-many?