У меня есть таблица с наборами настроек для пользователей, в ней есть следующие столбцы:
UserID INT
Set VARCHAR(50)
Key VARCHAR(50)
Value NVARCHAR(MAX)
TimeStamp DATETIME
UserID вместе с Set и Key являются уникальными. Таким образом, конкретный пользователь не может иметь две одинаковые клавиши в определенном наборе настроек. Настройки извлекаются с помощью набора, поэтому, если пользователь запрашивает определенный ключ из определенного набора, загружается весь набор, так что в следующий раз, когда потребуется ключ из того же набора, он не должен идти в базу данных. .
Должен ли я создать первичный ключ во всех трех столбцах (идентификатор пользователя, набор и ключ) или создать дополнительное поле с первичным ключом (например, целочисленное значение автоинкремента с именем SettingID, я думаю, плохая идея) или нет создать первичный ключ и просто создать уникальный индекс?
----- ОБНОВЛЕНИЕ -----
Просто чтобы прояснить ситуацию: это конец таблицы строк, в любом случае он не объединен. UserID - это FK для таблицы Users. Набор не ФК. Это в значительной степени вспомогательная таблица для моего графического интерфейса.
Просто в качестве примера: пользователи получают в первый раз, когда они посещают части сайта, всплывающую подсказку, которую они могут закрыть, если захотят. Как только они его щелкнули, я добавлю некоторые настройки в набор «GettingStarted», в которых будет указано, что helpballoon X отключен. В следующий раз, когда пользователь зайдет на ту же страницу, в настройке будет указано, что всплывающая подсказка X больше не должна отображаться.