Ответ
Первичный ключ (Primary Key) — это столбец или набор столбцов в таблице, который однозначно идентифицирует каждую запись. К нему предъявляются следующие фундаментальные требования:
Уникальность (Uniqueness)
Каждое значение первичного ключа в таблице должно быть уникальным. Не может быть двух записей с одинаковым значением Primary Key.Отсутствие NULL (Not Null)
Первичный ключ не может содержать значенияNULL
. Каждая запись обязана иметь значение для этого ключа.Неизменность (Immutability)
В идеале, значение первичного ключа не должно изменяться после создания записи. Хотя некоторые СУБД технически позволяют это, изменение ключа является плохой практикой, так как может нарушить целостность данных и связанные внешние ключи (Foreign Keys).Минимальность (Minimality)
Если ключ составной (состоит из нескольких полей), он должен содержать минимально необходимый набор полей для обеспечения уникальности. Не следует включать в него лишние поля.
Пример в Go с использованием GORM:
ORM-библиотеки в Go, такие как GORM, упрощают работу с первичными ключами.
import "gorm.io/gorm"
// GORM автоматически использует поле `ID` как первичный ключ.
// gorm.Model уже содержит ID, CreatedAt, UpdatedAt, DeletedAt.
type User struct {
gorm.Model
Name string
}
// Явное указание первичного ключа с помощью тега.
// Здесь `Code` будет первичным ключом вместо стандартного `ID`.
type Product struct {
Code string `gorm:"primaryKey"`
Price uint
}