DBMS - Реляционная модель данных

Здравствуйте,future database enthusiasts! Сегодня мы отправляемся в увлекательное путешествие в мир реляционных моделей данных. Как ваш доброжелательный сосед по компьютерам, я буду вести вас через этот fundamental concept в системах управления базами данных (DBMS). Не волнуйтесь, если вы новички в программировании – мы начнем с азов и будем подниматься. Итак, возьмите杯咖啡, и давайте погружаться!

DBMS - Relational Data Model

Концепции

Что такое реляционная модель данных?

Представьте, что вы организовываете огромную библиотеку. У вас есть книги, авторы, жанры и издатели. Как вы будете эффективно отслеживать всю эту информацию? Вот где на помощь приходит реляционная модель данных!

Реляционная модель данных – это способ структурирования данных в базе данных, который организует информацию в таблицы (также называемые отношениями) с строками и столбцами. Это как создание серии взаимосвязанных таблиц.

Давайте разберем это на примере:

CREATE TABLE Books (
BookID INT PRIMARY KEY,
Title VARCHAR(100),
AuthorID INT,
GenreID INT,
PublisherID INT
);

CREATE TABLE Authors (
AuthorID INT PRIMARY KEY,
Name VARCHAR(50),
BirthDate DATE
);

В этом примере мы создали две таблицы: Books и Authors. Каждая таблица имеет столбцы (поля), которые описывают различные атрибуты. BookID и AuthorID являются уникальными идентификаторами для каждой записи в своих соответствующих таблицах.

Основные компоненты реляционной модели

  1. Таблицы (Отношения): Это основные структуры, которые хранят данные. В нашем примере библиотеки, Books и Authors являются таблицами.

  2. Атрибуты (Столбцы): Они представляют свойства сущностей в наших таблицах. Например, Title и Name являются атрибутами.

  3. Кортежи (Строки): Каждая строка в таблице представляет одну запись или экземпляр сущности.

  4. Домен: Это множество допустимых значений для атрибута. Например, домен для BookID может быть положительными整数ами.

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

Типы ключей

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

Тип ключа Описание Пример
Primary Key Уникально идентифицирует каждую запись в таблице BookID в таблице Books
Foreign Key Ссылается на primary key другой таблицы AuthorID в таблице Books
Candidate Key Может быть использован в качестве primary key ISBN для книг
Composite Key Ключ, состоящий из нескольких столбцов (CourseID, StudentID) для таблицы регистрации на курсы

Отношения

Одним из самых мощных аспектов реляционной модели является ее способность устанавливать отношения между таблицами. Есть три основных типа:

  1. One-to-One (1:1): Each record in Table A is related to one record in Table B.

Пример:

CREATE TABLE Passport (
PassportID INT PRIMARY KEY,
PassportNumber VARCHAR(20),
ExpiryDate DATE,
CitizenID INT UNIQUE,
FOREIGN KEY (CitizenID) REFERENCES Citizens(CitizenID)
);
  1. One-to-Many (1:N): One record in Table A can be related to many records in Table B.

Пример:

CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
OrderDate DATE,
CustomerID INT,
FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);
  1. Many-to-Many (M:N): Many records in Table A can be related to many records in Table B.

Пример:

CREATE TABLE StudentCourses (
StudentID INT,
CourseID INT,
PRIMARY KEY (StudentID, CourseID),
FOREIGN KEY (StudentID) REFERENCES Students(StudentID),
FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)
);

Ограничения

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

Типы ограничений

Тип ограничения Описание Пример
NOT NULL Обеспечивает, чтобы столбец не мог содержать NULL значения Name VARCHAR(50) NOT NULL
UNIQUE Обеспечивает, чтобы все значения в столбце были разными Email VARCHAR(100) UNIQUE
PRIMARY KEY Уникально идентифицирует каждую запись в таблице StudentID INT PRIMARY KEY
FOREIGN KEY Обеспечивает referential integrity между таблицами FOREIGN KEY (AuthorID) REFERENCES Authors(AuthorID)
CHECK Обеспечивает, чтобы все значения в столбце удовлетворяли конкретное условие CHECK (Age >= 18)
DEFAULT Устанавливает значение по умолчанию для столбца, когда не указано значение Balance DECIMAL(10,2) DEFAULT 0.00

Давайте посмотрим, как работают эти ограничения:

CREATE TABLE Students (
StudentID INT PRIMARY KEY,
Name VARCHAR(50) NOT NULL,
Email VARCHAR(100) UNIQUE,
Age INT CHECK (Age >= 18),
EnrollmentDate DATE DEFAULT CURRENT_DATE,
DepartmentID INT,
FOREIGN KEY (DepartmentID) REFERENCES Departments(DepartmentID)
);

В этом примере:

  • StudentID является primary key.
  • Name не может быть null.
  • Email должен быть уникальным для каждого студента.
  • Age должен быть 18 или старше.
  • EnrollmentDate будет установлен по умолчанию на текущую дату, если не указано значение.
  • DepartmentID является foreign key, ссылающийся на таблицу Departments.

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

Заканчивая это введение в реляционную модель данных,我希望 вы начали видеть, насколько мощной и организованной может быть эта подход к управлению данными. Это как иметь идеально организованную библиотеку, где каждая книга находится на своем месте, легко найти и связана со всей соответствующей информацией.

помните, что обучение базам данных – это путешествие. Не волнуйтесь, если все не сложится сразу. Практикуйте создание таблиц, установление отношений и настройку ограничений. Soon, you'll be designing efficient and robust database structures like a pro!

В следующем уроке мы погрузимся глубже в запросы к этим реляционным структурам с использованием SQL. Пока что,快乐数据建模!

Credits: Image by storyset