MySQL - Альтернативный ключ: Полное руководство для начинающих
Здравствуйте, стремящиеся к знаниям энтузиасты баз данных! Сегодня мы отправимся в увлекательное путешествие в мир MySQL, конкретно focusing на Альтернативных ключах. Не волнуйтесь, если вы новички в программировании - я буду вести вас через этот концепт шаг за шагом, так же, как я делал это для countless студентов на протяжении многих лет преподавания. Так что возьмите杯 кофе и погружайтесь с нами!
Что такое Альтернативный ключ?
Прежде чем углубиться в детали, давайте начнем с азов. Альтернативный ключ, также известный как Кандидатский ключ, это колонка (или набор колонок) в таблице базы данных, которая потенциально может служить.primary key. Это как иметь запасной ключ к вашему дому - он может открыть дверь, но вы обычно используете ваш основной ключ вместо этого.
В терминологии баз данных, Альтернативный ключ уникально идентифицирует каждой записи в таблице, так же, как и Основной ключ. Основное различие в том, что mientras можно иметь несколько Альтернативных ключей, только один выбирается в качестве Основного ключа.
Реальный мир аналогии
Представьте, что вы организовываете小型 библиотеку. Каждая книга может быть уникально идентифицирована по ее ISBN номеру, комбинации названия и автора или уникальному штрих-коду, который вы назначили. Все они могут служить ключами для идентификации книги, но вы можете выбрать ISBN в качестве вашего основного способа cataloging. Остальные будут вашими Альтернативными ключами.
Features of Alternate Keys
Теперь, когда мы понимаем, что такое Альтернативные ключи, давайте рассмотрим их основные особенности:
-
Уникальность: Как и Основные ключи, Альтернативные ключи должны содержать уникальные значения для каждой записи в таблице.
-
Non-Null: Альтернативные ключи не могут содержать NULL значения. Они всегда должны иметь valid значение.
-
Минимальный: Они должны использовать минимальное количество колонок, необходимое для обеспечения уникальности.
-
Стабильный: Значения в колонках Альтернативного ключа не должны часто изменяться.
-
Кандидат на Основной ключ: Любой Альтернативный ключ может потенциально быть выбран в качестве Основного ключа.
Давайте рассмотрим пример, чтобы проиллюстрировать эти особенности:
CREATE TABLE students (
student_id INT AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(50) UNIQUE,
social_security_number VARCHAR(11) UNIQUE,
first_name VARCHAR(50),
last_name VARCHAR(50)
);
В этой таблице students
, both email
и social_security_number
являются Альтернативными ключами. Они уникальны, не равны NULL (в enforced UNIQUE constraint) и могут потенциально служить Основным ключом, если бы мы не выбрали student_id
.
Types of Keys in a Table
Чтобы лучше понять Альтернативные ключи, полезно знать о различных типах ключей в таблице MySQL. Вот быстрый обзор:
Тип ключа | Описание |
---|---|
Primary Key | Основной идентификатор для каждой записи в таблице |
Alternate Key (Candidate Key) | Колонка или набор колонок, которые могут служить Основным ключом |
Foreign Key | Колонка, которая ссылается на Основной ключ в другой таблице |
Composite Key | Ключ, состоящий из двух или более колонок |
Surrogate Key | Искусственный ключ, созданный только для целей идентификации |
Rules to be Followed for Alternate Keys
工作时使用 Альтернативные ключи, есть несколько важных правил, которые следует помнить:
- Уникальность превыше всего: Каждый Альтернативный ключ должен уникально идентифицировать каждую запись в таблице. Никакие две строки не должны иметь одно и то же значение для Альтернативного ключа.
CREATE TABLE products (
product_id INT AUTO_INCREMENT PRIMARY KEY,
sku VARCHAR(20) UNIQUE,
name VARCHAR(100),
price DECIMAL(10, 2)
);
В этом примере, sku
(Stock Keeping Unit) является Альтернативным ключом. Он помечен как UNIQUE, чтобы обеспечить, чтобы у двух продуктов не было одного и того же SKU.
- Не допускаются Null значения: Альтернативные ключи всегда должны содержать значение. Они не могут быть оставлены пустыми.
ALTER TABLE products
MODIFY sku VARCHAR(20) UNIQUE NOT NULL;
Это изменение обеспечивает, что поле sku
никогда не может быть NULL.
- Минимальное composition: Используйте минимальное количество колонок, необходимое для достижения уникальности.
CREATE TABLE orders (
order_id INT AUTO_INCREMENT PRIMARY KEY,
order_date DATE,
customer_id INT,
UNIQUE KEY (order_date, customer_id)
);
Здесь, комбинация order_date
и customer_id
составляет Альтернативный ключ. Мы используем оба, потому что ни один из них не уникален сам по себе, но вместе они уникально идентифицируют заказ.
-
Предпочтителен иммутабельность: Хотя это не всегда возможно,最好是 значения в колонках Альтернативного ключа не изменялись часто.
-
Рассмотрите производительность: Помните, что MySQL создаст индекс для каждого UNIQUE constraint, что может повлиять на производительность на больших таблицах.
CREATE TABLE large_table (
id INT AUTO_INCREMENT PRIMARY KEY,
column1 VARCHAR(50) UNIQUE,
column2 VARCHAR(50) UNIQUE,
-- Будьте осторожны с добавлением слишком большого количества UNIQUE constraint
data VARCHAR(1000)
);
В этом случае, наличие множества UNIQUE constraint может замедлить вставки и обновления на非常大的 таблицах.
Практический пример: База данных книг
Давайте applied все наши знания к более сложному примеру. Представим, что мы создаем базу данных для书店:
CREATE TABLE books (
book_id INT AUTO_INCREMENT PRIMARY KEY,
isbn VARCHAR(13) UNIQUE NOT NULL,
title VARCHAR(200) NOT NULL,
author_first_name VARCHAR(50) NOT NULL,
author_last_name VARCHAR(50) NOT NULL,
publication_year INT,
price DECIMAL(10, 2),
UNIQUE KEY (title, author_last_name, author_first_name)
);
В этой таблице books
:
-
book_id
является нашим Основным ключом. -
isbn
является Альтернативным ключом (каждая книга имеет уникальный ISBN). - Комбинация
title
,author_last_name
, иauthor_first_name
составляет другой Альтернативный ключ (предполагая, что автор не написал две книги с одним и тем же названием).
Эта структура позволяет нам уникально идентифицировать книги несколькими способами, предоставляя гибкость в наших запросах и проверках целостности данных.
Заключение
И вот мы и arrived, друзья! Мы совершили путешествие через страну Альтернативных ключей в MySQL, от их базового определения до их особенностей, типов и правил, регулирующих их использование. Помните, что Альтернативные ключи являютсяuten英雄ами вашей базы данных - они предоставляют дополнительные способы обеспечения целостности и уникальности данных.
Продолжая ваше приключение в MySQL, продолжайте экспериментировать с различными структурами таблиц и комбинациями ключей. Чем больше вы практикуетесь, тем более интуитивно понятным станет дизайн базы данных. И кто знает? Может быть,有一天 вы обнаружите, что учите других чудесам Альтернативных ключей!
Счастливого кодирования, и пусть ваши запросы всегда возвращают ожидаемые результаты!
Credits: Image by storyset