Ответ
Первичный ключ (Primary Key, PK) — это ограничение в реляционной базе данных, которое однозначно идентифицирует каждую строку (запись) в таблице. Это столбец или комбинация столбцов со следующими свойствами:
Свойства первичного ключа:
- Уникальность (UNIQUE): В таблице не может быть двух строк с одинаковым значением первичного ключа.
- Непустота (NOT NULL): Значение первичного ключа не может быть
NULL. - Неизменяемость: Значение PK должно оставаться стабильным на протяжении всего жизненного цикла строки. Менять его крайне не рекомендуется.
Назначение:
- Гарантирует целостность данных, предотвращая дубликаты.
- Служит точкой ссылки для внешних ключей (Foreign Keys) из других таблиц, устанавливая связи между данными.
Пример создания в SQL:
-- Один столбец в качестве PK
CREATE TABLE Users (
user_id INT PRIMARY KEY, -- Простой первичный ключ
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(100)
);
-- Составной первичный ключ (из нескольких столбцов)
CREATE TABLE OrderItems (
order_id INT,
product_id INT,
quantity INT,
PRIMARY KEY (order_id, product_id) -- Составной ключ
);
-- С автоинкрементом (часто используется для суррогатных ключей)
CREATE TABLE Products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL
);
В Java (JPA/Hibernate):
@Entity
@Table(name = "users")
public class User {
@Id // Указывает на первичный ключ
@GeneratedValue(strategy = GenerationType.IDENTITY) // Стратегия генерации (автоинкремент)
private Long id;
private String username;
// ... другие поля и геттеры/сеттеры
}