Ключ с несколькими столбцами называется Составным ключом или Составным ключом
. Как уже говорилось, они полностью действительны и имеют преимущества. См. Ссылки. : -)
Я рекомендую использовать:
PRIMARY KEY (category_id, posts_id)
Значение id
всегда будет уникальным - чего не будет, так это сопоставление category_id
и posts_id
.
Но я пропустил, что у вас уже есть уникальный ключ, определенный в столбцах category_id
и posts_id
, поэтому вашим первичным ключом может быть просто id
. Но первичный ключ означает, что это будет кластеризованный индекс - вы будете искать эти два столбца чаще, чем столбец id
, поэтому поиски должны улучшаться мгновенно по сравнению с некластеризованным индексом по двум столбцы.