DBMS - Реляционная модель данных
Здравствуйте,future database enthusiasts! Сегодня мы отправляемся в увлекательное путешествие в мир реляционных моделей данных. Как ваш доброжелательный сосед по компьютерам, я буду вести вас через этот fundamental concept в системах управления базами данных (DBMS). Не волнуйтесь, если вы новички в программировании – мы начнем с азов и будем подниматься. Итак, возьмите杯咖啡, и давайте погружаться!
Концепции
Что такое реляционная модель данных?
Представьте, что вы организовываете огромную библиотеку. У вас есть книги, авторы, жанры и издатели. Как вы будете эффективно отслеживать всю эту информацию? Вот где на помощь приходит реляционная модель данных!
Реляционная модель данных – это способ структурирования данных в базе данных, который организует информацию в таблицы (также называемые отношениями) с строками и столбцами. Это как создание серии взаимосвязанных таблиц.
Давайте разберем это на примере:
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
являются уникальными идентификаторами для каждой записи в своих соответствующих таблицах.
Основные компоненты реляционной модели
-
Таблицы (Отношения): Это основные структуры, которые хранят данные. В нашем примере библиотеки, Books и Authors являются таблицами.
-
Атрибуты (Столбцы): Они представляют свойства сущностей в наших таблицах. Например, Title и Name являются атрибутами.
-
Кортежи (Строки): Каждая строка в таблице представляет одну запись или экземпляр сущности.
-
Домен: Это множество допустимых значений для атрибута. Например, домен для BookID может быть положительными整数ами.
-
Ключи: Это особые атрибуты, используемые для уникальной идентификации записей и установления отношений между таблицами.
Типы ключей
Давайте углубимся в ключи с помощью удобной таблицы:
Тип ключа | Описание | Пример |
---|---|---|
Primary Key | Уникально идентифицирует каждую запись в таблице | BookID в таблице Books |
Foreign Key | Ссылается на primary key другой таблицы | AuthorID в таблице Books |
Candidate Key | Может быть использован в качестве primary key | ISBN для книг |
Composite Key | Ключ, состоящий из нескольких столбцов | (CourseID, StudentID) для таблицы регистрации на курсы |
Отношения
Одним из самых мощных аспектов реляционной модели является ее способность устанавливать отношения между таблицами. Есть три основных типа:
- 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)
);
- 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)
);
- 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