В мире управления базами данных ключи играют crucial role в организации, доступе и поддержании целостности данных. Независимо от того, являетесь опытным администратором баз данных или только начинаете свой путь в управлении данными, понимание различных типов ключей в базе данных важно. В этом посте мы посмотрим на все различные типы ключей, их цели и то, как они способствуют эффективному дизайну баз данных.
Для иллюстрации этих концепций мы используем простую университетскую базу данных с следующими таблицами:
- Студенты
- Курсы
- Записи на курсы
- Преподаватели
- Подразделения
Продолжим каждый тип ключа и посмотрим, как они применяются в нашей университетской базе данных.
1. Primarnyj Key
Определение
Строка или набор колонок, которые уникально идентифицируют каждую строку в таблице
Характеристики
- Должны быть уникальными для каждого записи
- Не могут содержать значения
NULL
- Должны быть неизменными (не менять значения с течением времени)
Пример
В нашей таблице Students
мы используем StudentID
в качестве первичного ключа.
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
как внешние ключи.
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
для использования комбинированного ключа:
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
становится альтернативным ключом:
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
:
CREATE TABLE Courses (
CourseID INT PRIMARY KEY AUTO_INCREMENT,
CourseCode VARCHAR(10) UNIQUE,
CourseName VARCHAR(100),
Credits INT
);
КурсID
является заместительным ключом, в то время как КурсКод
может быть более естественным идентификатором.
8.自然资源键
Definition
Ключ, сформированный из данных, уже существующих в реальном мире
Преимущество
Предоставляет значимую идентификацию
Недостаток
может изменяться с течением времени
Пример
В таблице Профессора
, мы могли бы рассмотреть использование номера социальной страховки ( хотя его рекомендуется не использовать по причинам защиты Privacy ):
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
Ключ, состоящий из двух или более колонок, где комбинация может иметь какое-то коммерческое значение
различие от компонентного ключа
Обычно используется, когда комбинация колонок имеет смысл не только уникальной идентификации.
Пример
В таблице Предложения курсов
:
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
:
CREATE TABLE Departments (
DepartmentID INT PRIMARY KEY,
DepartmentName VARCHAR(100) UNIQUE,
Building VARCHAR(50),
Budget DECIMAL(10, 2)
);
DepartmentID
является простым ключом: один столбец, который уникально идентифицирует каждое отделение.
11. Уникальный Ключ
Определение
Ключ, который гарантирует, что все значения в столбце или наборе столбцов уникальны
Различие Символического Ключа
может разрешать значения NULL
(за исключением особых условий)
Пример
В нашей таблице Students
, Email
является примером уникального ключа:
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 для эффективного дизайна и управления
Помните, выбор ключей может оказать значительное влияние на производительность вашей базы данных, maintainability и способности представлять реальные мирские связи с точностью. Всегда учитывайте специфические потребности вашего приложения и природу ваших данных при решении, какие ключи использовать.
Эта публикация – часть нашей серии Основы баз данных. Оставайтесь с нами для более глубоких статей по управлению и дизайну баз данных.
Source:
https://dzone.com/articles/database-keys-a-comprehensive-guide