В реляционных базах данных первичный и внешний ключи играют важную роль в организации данных и установлении связей между таблицами. Они обеспечивают целостность данных и помогают избегать дублирования.
Первичный ключ
Первичный ключ (PRIMARY KEY) — это уникальный идентификатор записи в таблице. Он гарантирует, что каждая строка в таблице имеет уникальное значение и не содержит NULL.
Особенности первичного ключа
- Уникальность значений в столбце.
- Не допускает NULL-значений.
- В таблице может быть только один первичный ключ.
Пример использования
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL
);
В этом примере столбец id
является первичным ключом, автоматически увеличивающимся на единицу для каждой новой записи.
Внешний ключ
Внешний ключ (FOREIGN KEY) — это поле, которое ссылается на первичный ключ другой таблицы. Он необходим для установления связей между таблицами.
Особенности внешнего ключа
- Создает связь между таблицами.
- Поддерживает целостность данных.
- При изменении или удалении записей в родительской таблице можно задать каскадные действия (CASCADE, SET NULL и т. д.).
Пример использования
CREATE TABLE orders (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id) ON DELETE CASCADE,
amount DECIMAL(10,2) NOT NULL
);
В этом примере столбец user_id
является внешним ключом, который ссылается на id
в таблице users
. Если запись из users
будет удалена, связанные записи в orders
также удалятся.