MySQL - Альтернативный ключ: Полное руководство для начинающих

Здравствуйте, стремящиеся к знаниям энтузиасты баз данных! Сегодня мы отправимся в увлекательное путешествие в мир MySQL, конкретно focusing на Альтернативных ключах. Не волнуйтесь, если вы новички в программировании - я буду вести вас через этот концепт шаг за шагом, так же, как я делал это для countless студентов на протяжении многих лет преподавания. Так что возьмите杯 кофе и погружайтесь с нами!

MySQL - Alternate Key

Что такое Альтернативный ключ?

Прежде чем углубиться в детали, давайте начнем с азов. Альтернативный ключ, также известный как Кандидатский ключ, это колонка (или набор колонок) в таблице базы данных, которая потенциально может служить.primary key. Это как иметь запасной ключ к вашему дому - он может открыть дверь, но вы обычно используете ваш основной ключ вместо этого.

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

Реальный мир аналогии

Представьте, что вы организовываете小型 библиотеку. Каждая книга может быть уникально идентифицирована по ее ISBN номеру, комбинации названия и автора или уникальному штрих-коду, который вы назначили. Все они могут служить ключами для идентификации книги, но вы можете выбрать ISBN в качестве вашего основного способа cataloging. Остальные будут вашими Альтернативными ключами.

Features of Alternate Keys

Теперь, когда мы понимаем, что такое Альтернативные ключи, давайте рассмотрим их основные особенности:

  1. Уникальность: Как и Основные ключи, Альтернативные ключи должны содержать уникальные значения для каждой записи в таблице.

  2. Non-Null: Альтернативные ключи не могут содержать NULL значения. Они всегда должны иметь valid значение.

  3. Минимальный: Они должны использовать минимальное количество колонок, необходимое для обеспечения уникальности.

  4. Стабильный: Значения в колонках Альтернативного ключа не должны часто изменяться.

  5. Кандидат на Основной ключ: Любой Альтернативный ключ может потенциально быть выбран в качестве Основного ключа.

Давайте рассмотрим пример, чтобы проиллюстрировать эти особенности:

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

工作时使用 Альтернативные ключи, есть несколько важных правил, которые следует помнить:

  1. Уникальность превыше всего: Каждый Альтернативный ключ должен уникально идентифицировать каждую запись в таблице. Никакие две строки не должны иметь одно и то же значение для Альтернативного ключа.
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.

  1. Не допускаются Null значения: Альтернативные ключи всегда должны содержать значение. Они не могут быть оставлены пустыми.
ALTER TABLE products
MODIFY sku VARCHAR(20) UNIQUE NOT NULL;

Это изменение обеспечивает, что поле sku никогда не может быть NULL.

  1. Минимальное 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 составляет Альтернативный ключ. Мы используем оба, потому что ни один из них не уникален сам по себе, но вместе они уникально идентифицируют заказ.

  1. Предпочтителен иммутабельность: Хотя это не всегда возможно,最好是 значения в колонках Альтернативного ключа не изменялись часто.

  2. Рассмотрите производительность: Помните, что 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