Перечислите основные требования к первичному ключу (Primary Key) в реляционных базах данных.

Ответ

Первичный ключ (Primary Key) — это столбец или набор столбцов в таблице, который однозначно идентифицирует каждую запись. К нему предъявляются следующие фундаментальные требования:


  1. Уникальность (Uniqueness)

    Каждое значение первичного ключа в таблице должно быть уникальным. Не может быть двух записей с одинаковым значением Primary Key.



  2. Отсутствие NULL (Not Null)

    Первичный ключ не может содержать значения NULL. Каждая запись обязана иметь значение для этого ключа.



  3. Неизменность (Immutability)

    В идеале, значение первичного ключа не должно изменяться после создания записи. Хотя некоторые СУБД технически позволяют это, изменение ключа является плохой практикой, так как может нарушить целостность данных и связанные внешние ключи (Foreign Keys).



  4. Минимальность (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
}