Что такое первичный ключ в базах данных?

Ответ

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

Основные свойства и назначение:

  • Уникальность: Каждое значение первичного ключа должно быть уникальным в пределах таблицы. Это гарантирует, что каждая запись может быть однозначно найдена.
  • Неизменность (NOT NULL): Первичный ключ не может содержать NULL значения. Каждая запись должна иметь определенный идентификатор.
  • Единственность: В одной таблице может быть только один первичный ключ, который может состоять из одного или нескольких столбцов (составной ключ).
  • Индексирование: Как правило, первичный ключ автоматически индексируется, что значительно ускоряет операции поиска и соединения таблиц.
  • Целостность данных: Обеспечивает ссылочную целостность при создании связей с другими таблицами через внешние ключи (Foreign Key).

Пример создания таблицы с первичным ключом в SQL (SQLite):

CREATE TABLE users (
    id INTEGER PRIMARY KEY,  -- Столбец 'id' является первичным ключом
    username TEXT NOT NULL UNIQUE,
    email TEXT NOT NULL UNIQUE
);

В этом примере id — это первичный ключ. При добавлении новой записи СУБД автоматически гарантирует его уникальность и непустоту.

Пример в Django ORM:

В Django ORM первичный ключ обычно создается автоматически как поле id для каждой модели, если не указан явно другой столбец с primary_key=True.

from django.db import models

class User(models.Model):
    username = models.CharField(max_length=100, unique=True)
    email = models.EmailField(unique=True)
    # Поле 'id' (AutoField) будет автоматически создано как PrimaryKey

    def __str__(self):
        return self.username

Первичные ключи являются фундаментальным элементом для организации данных, обеспечения их целостности и построения эффективных связей между таблицами в реляционных базах данных.