PK - быть или не быть? Вот в чем вопрос!

123
10 октября 2019, 08:00

У меня такой вопрос: обязательно ли нужен Primary Key если он нигде не используется? Например есть таблицы articles(id, name) и tags(id, name), а в таблице article_tags(article_id, tag_id) идет связь. Так вот надо ли добавлять в эту таблицу столбец id просто чтобы был PK? Потому что в логике он никогда не будет использоваться.

Answer 1

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

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

create table article_tags(
    article_id int not null,
    tag_id int not null,
    primary key (article_id, tag_id)
)
READ ALSO
Выпадающее меню, где внутри картинка. На чистом CSS [закрыт]

Выпадающее меню, где внутри картинка. На чистом CSS [закрыт]

Ребят, приветКак сделать выпадающее меню

126
Как написать разные заголовки в одной строке html

Как написать разные заголовки в одной строке html

Мне нужно сделать что-то на подобии этого

131
Путь HTML файла в JS скрипте

Путь HTML файла в JS скрипте

Имеется такой вопрос

117
Safari на macbook: расширяется textarea при вводе текста?

Safari на macbook: расширяется textarea при вводе текста?

Safari на macbook: расширяется textarea при вводе текста на сайтеКак только начинаешь вводить текст в textarea, оно расширяется на ширину всего экрана и тянет...

99