Ключи базы данных: комплексный гид

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

Для иллюстрации этих концепций мы используем простую университетскую базу данных с следующими таблицами:

  1. Студенты
  2. Курсы
  3. Записи на курсы
  4. Преподаватели
  5. Подразделения

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

1. Primarnyj Key

Определение

Строка или набор колонок, которые уникально идентифицируют каждую строку в таблице

Характеристики

  • Должны быть уникальными для каждого записи
  • Не могут содержать значения NULL
  • Должны быть неизменными (не менять значения с течением времени)

Пример

В нашей таблице Students мы используем StudentID в качестве первичного ключа.

SQL

 


CREATE TABLE Students (

    StudentID INT PRIMARY KEY,

    FirstName VARCHAR(50),

    LastName VARCHAR(50),

    Email VARCHAR(100) UNIQUE

);

StudentID уникально идентифицирует каждого студента, обеспечивая уникальность ID.

2. Внешний Key

Определение

Столбец или набор столбцов в одной таблице, который ссылается на primary key в другой таблице

Назначение

Maintains referential integrity and creates relationships between tables

Пример

В нашей таблице Enrollments, мы используем StudentID и CourseID как внешние ключи.

SQL

 


CREATE TABLE Enrollments (

    EnrollmentID INT PRIMARY KEY,

    StudentID INT,

    CourseID INT,

    EnrollmentDate DATE,

    FOREIGN KEY (StudentID) REFERENCES Students(StudentID),

    FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)

)

Этот дизайн гарантирует, что каждый запись о регистрации связан с валидными студентами и курсами.

3. Суперключ

Определение

Ключ, состоящий из двух или более столбцов для уникального идентификации записи

Использование

При условии, что каждый столбец не может гарантировать уникальность

Пример

Мы могли бы переделать нашу таблицу Enrollments для использования комбинированного ключа:

SQL

 

CREATE TABLE Enrollments (

    StudentID INT,

    CourseID INT,

    EnrollmentDate DATE,

    Grade CHAR(2),

    PRIMARY KEY (StudentID, CourseID),

    FOREIGN KEY (StudentID) REFERENCES Students(StudentID),

    FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)

);

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

4.кандидатский ключ

Определение

Минимальный набор атрибутов, который может уникально идентифицировать запись

Характеристики

  • Должен быть уникальным
  • Не может содержать значения NULL
  • Таблица может иметь несколько кандидатских ключей.

Пример

В нашей таблице Студенты, как кандидатные ключи могут выступать StudentID и Email, поскольку оба могут уникально идентифицировать студента. Мы выбрали StudentID в качестве primary key, но Email мог быть альтернативным.

5. Суперключ

Определение

Коллекция столбцов, которая может уникально идентифицировать запись, включая неза需要的 столбцы

Различие с кандидатным ключом

может содержать дополнительные атрибуты, не необходимые для уникальной идентификации

Пример

В нашей таблице Студенты, суперклюками могли быть:

  • {StudentID, FirstName, LastName, Email}
  • {StudentID, Email}
  • {Email, FirstName, LastName}

Все эти включают кандидатные ключи (StudentID или Email) с额外的 полями.

6. Альтернативный ключ

Определение

Кандидатный ключ, который не выбран в качестве primary key

Назначение

Предоставляет альтернативный метод уникальной идентификации записей

Пример

В нашей таблице Студенты, если мы выбраем StudentID в качестве primary key, то Email становится альтернативным ключом:

SQL

 

CREATE TABLE Students (

    StudentID INT PRIMARY KEY,

    FirstName VARCHAR(50),

    LastName VARCHAR(50),

    Email VARCHAR(100) UNIQUE  -- This is an alternate key

);

UNIQUE ограничение на Email гарантирует, что它 также может использоваться для уникальной идентификации студентов.

7. Суровый ключ

Определение

Созданный искусственно ключ только для целей уникальной идентификации

Характеристики

  • Обычно генерируется автоматически базой данных
  • Не имеет коммерческого значения

Пример

В нашей таблице Курсы, мы могли бы использовать автоматически увеличивающийся КурсID:

SQL

 

CREATE TABLE Courses (

    CourseID INT PRIMARY KEY AUTO_INCREMENT,

    CourseCode VARCHAR(10) UNIQUE,

    CourseName VARCHAR(100),

    Credits INT

);

КурсID является заместительным ключом, в то время как КурсКод может быть более естественным идентификатором.

8.自然资源键

Definition

Ключ, сформированный из данных, уже существующих в реальном мире

Преимущество

Предоставляет значимую идентификацию

Недостаток

может изменяться с течением времени

Пример

В таблице Профессора, мы могли бы рассмотреть использование номера социальной страховки ( хотя его рекомендуется не использовать по причинам защиты Privacy ):

SQL

 

CREATE TABLE Professors (

    ProfessorID INT PRIMARY KEY,

    SSN CHAR(9) UNIQUE,  -- This could be used as a natural key

    FirstName VARCHAR(50),

    LastName VARCHAR(50),

    Department VARCHAR(50)

);

9. Суперпозиционный ключ

Definition

Ключ, состоящий из двух или более колонок, где комбинация может иметь какое-то коммерческое значение

различие от компонентного ключа

Обычно используется, когда комбинация колонок имеет смысл не только уникальной идентификации.

Пример

В таблице Предложения курсов:

SQL

 

CREATE TABLE CourseOfferings (

    CourseID INT,

    Semester CHAR(6),  -- e.g., '202301' for Spring 2023

    ProfessorID INT,

    RoomNumber VARCHAR(10),

    PRIMARY KEY (CourseID, Semester),

    FOREIGN KEY (CourseID) REFERENCES Courses(CourseID),

    FOREIGN KEY (ProfessorID) REFERENCES Professors(ProfessorID)

);

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

10. Простой Ключ

Определение

Ключ, состоящий из одного столбца

Преимущество

легко внедряется и используется

Пример

В нашей таблице Departments:

SQL

 

CREATE TABLE Departments (

    DepartmentID INT PRIMARY KEY,

    DepartmentName VARCHAR(100) UNIQUE,

    Building VARCHAR(50),

    Budget DECIMAL(10, 2)

);

DepartmentID является простым ключом: один столбец, который уникально идентифицирует каждое отделение.

11. Уникальный Ключ

Определение

Ключ, который гарантирует, что все значения в столбце или наборе столбцов уникальны

Различие Символического Ключа

может разрешать значения NULL (за исключением особых условий)

Пример

В нашей таблице Students, Email является примером уникального ключа:

SQL

 

CREATE TABLE Students (

    StudentID INT PRIMARY KEY,

    FirstName VARCHAR(50),

    LastName VARCHAR(50),

    Email VARCHAR(100) UNIQUE  -- This is a unique key

);

Ограничение UNIQUE удостоверяет, что два студента не могут иметь одинаковый email адрес.

Заключение

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

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

Эта публикация – часть нашей серии Основы баз данных. Оставайтесь с нами для более глубоких статей по управлению и дизайну баз данных.

Source:
https://dzone.com/articles/database-keys-a-comprehensive-guide