Первичный ключ не обязателен, но не рекомендуется создавать таблицы без первичного ключа.СУБД создает автоматический индекс на PK, но вы можете сделать столбец уникальным и индексировать его, например, столбец user_name
в таблице users
обычно делается уникальным и индексируется, поэтому вы можете пропустить PK здесь.Но это все еще плохая идея , потому что PK может использоваться как внешний ключ для ссылочной целостности.
В общем, вы почти всегда должны иметь PK в таблице, если у вас нет веских оснований оправдывать отсутствие PK.
Таблицы связей (во многих отношениях со многими) могут не иметь первичного ключа.Но мне лично нравится, что в этих таблицах есть и PK.