Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Что такое Primary Key
Primary Key (первичный ключ) — это один или несколько столбцов в таблице БД, которые уникально идентифицируют каждую строку. Это основной механизм для обеспечения уникальности и целостности данных.
Основные характеристики Primary Key
- Уникальность — каждое значение в PK столбце(ах) должно быть уникальным
- NOT NULL — значение не может быть пустым
- Только один PK на таблицу — хотя PK может состоять из нескольких столбцов (составной ключ)
- Индекс — БД автоматически создаёт индекс на PK для быстрого поиска
- Ссылка для внешних ключей — другие таблицы ссылаются на PK через Foreign Key
Примеры Primary Key
1. Простой Primary Key (один столбец)
CREATE TABLE users (
user_id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE
);
2. Составной Primary Key (несколько столбцов)
CREATE TABLE order_items (
order_id INT NOT NULL,
item_id INT NOT NULL,
quantity INT,
PRIMARY KEY (order_id, item_id)
);
3. Auto-increment Primary Key (самостоятельно генерируемый)
CREATE TABLE products (
product_id SERIAL PRIMARY KEY,
product_name VARCHAR(100),
price DECIMAL(10, 2)
);
Типы Primary Key
Natural Key — использует реальные данные:
CREATE TABLE users (
email VARCHAR(100) PRIMARY KEY,
name VARCHAR(100)
);
Surrogate Key — искусственный уникальный идентификатор (UUID, SERIAL):
CREATE TABLE users (
user_id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
email VARCHAR(100) UNIQUE,
name VARCHAR(100)
);
Primary Key и Foreign Key
CREATE TABLE users (
user_id INT PRIMARY KEY
);
CREATE TABLE orders (
order_id INT PRIMARY KEY,
user_id INT,
order_date DATE,
FOREIGN KEY (user_id) REFERENCES users(user_id)
);
Здесь user_id в таблице orders является Foreign Key, который ссылается на Primary Key в таблице users.
Практические рекомендации
- Всегда используй Primary Key — даже если данные кажутся уникальными. Используй UUID или SERIAL
- Избегай Natural Key из нескольких столбцов — они усложняют Foreign Key
- UUID для распределённых систем — если данные реплицируются
- SERIAL для простых случаев — быстрее и проще
- Не меняй значение PK — это нарушит referential integrity
Проверка Primary Key в PostgreSQL
SELECT constraint_name, column_name
FROM information_schema.key_column_usage
WHERE table_name = 'users' AND constraint_type = 'PRIMARY KEY';
Похожие вопросы
- Как объединить два SELECT-запроса?
- Как называется структура задач в Airflow?
- Какие знаешь встроенные структуры данных в Python?
- Какая стандартная репликация в HDFS и на что она влияет?
- Для чего нужно виртуальное окружение?
- Расскажи про свой опыт в инженерии данных
- Расскажи про объемы данных, с которыми сталкивался
- Разница в подготовке данных для BI и ML
- Какие BI-системы знаешь и как DE взаимодействует с BI-инструментами?
- Как решали технические долги на проекте?
- С какими классическими моделями данных работала
- Работало ли на проекте партиционирование автоматически
- Почему витрины не OBT?
- Как определить метод класса и статический метод?
- В каких случаях стоит выбирать PaaS
- Какой задачей больше всего гордишься?
- Что такое асимптотическая оценка сложности алгоритмов?
- Что такое качество данных?
- Что такое Spark RDD, DataFrames и Datasets? В чём различия и когда использовать каждый?
- Всегда ли спил на диск это плохо?