DBMS - 关系数据模型

你好,有抱负的数据库爱好者!今天,我们将踏上一段激动人心的旅程,探索关系数据模型的世界。作为你友好邻里的计算机老师,我将引导你了解数据库管理系统(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。每个表格都有描述不同属性的列(字段)。BookIDAuthorID 是各自表中每条记录的唯一标识符。

关系模型的键组件

  1. 表格(关系):这些是持有数据的主要结构。在我们图书馆的例子中,Books 和 Authors 是表格。

  2. 属性(列):这些代表我们表格中实体的特性。例如,Title 和 Name 是属性。

  3. 元组(行):表中的每一行代表一个单独的记录或实体的实例。

  4. :这是一个属性允许的值的集合。例如,BookID 的域可能是正整数。

  5. :这些是用于唯一标识记录并建立表格之间关系的特殊属性。

键的类型

让我们更深入地了解键,以下是一个便捷的表格:

键类型 描述 示例
主键 在表中唯一标识每条记录 Books 表中的 BookID
外键 引用另一个表的主键 Books 表中的 AuthorID
候选键 可以用作主键的键 书籍的 ISBN
复合键 由多个列组成的键 (课程ID, 学生ID) 用于课程报名表

关系

关系模型最强大的方面之一是它能够在表格之间建立关系。主要有三种类型:

  1. 一对一(1:1):表 A 中的每条记录与表 B 中的一条记录相关联。

示例:

CREATE TABLE Passport (
PassportID INT PRIMARY KEY,
PassportNumber VARCHAR(20),
ExpiryDate DATE,
CitizenID INT UNIQUE,
FOREIGN KEY (CitizenID) REFERENCES Citizens(CitizenID)
);
  1. 一对多(1:N):表 A 中的记录可以与表 B 中的多条记录相关联。

示例:

CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
OrderDate DATE,
CustomerID INT,
FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);
  1. 多对多(M:N):表 A 中的多条记录可以与表 B 中的多条记录相关联。

示例:

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

约束

现在,让我们来谈谈约束——帮助维护数据完整性和一致性的规则。把它们想象成确保书籍正确分类和上架的图书馆管理员。

约束类型

约束类型 描述 示例
NOT NULL 确保列不能有 NULL 值 Name VARCHAR(50) NOT NULL
UNIQUE 确保列中的所有值都是不同的 Email VARCHAR(100) UNIQUE
主键 在表中唯一标识每条记录 StudentID INT PRIMARY KEY
外键 确保表间引用完整性 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 是主键。
  • Name 不能为空。
  • Email 必须是每个学生的唯一值。
  • Age 必须是 18 岁或以上。
  • EnrollmentDate 如果未指定,将默认为当前日期。
  • DepartmentID 是一个外键,引用 Departments 表。

这些约束帮助维护数据库的完整性和一致性。它们就像我们图书馆中的规则,确保书籍被正确分类、唯一标识,并链接到正确的作者和出版商。

在我们结束对关系数据模型的介绍时,我希望你开始看到这种数据管理方法有多么强大和有序。这就像拥有一个完美组织的图书馆,每本书都在正确的位置,容易找到,并与所有相关信息相连。

记住,学习数据库是一个旅程。如果一切都不立即明白,请不要担心。练习创建表格、建立关系和设置约束。很快,你就会像一个专业人士一样设计出高效和健壮的数据库结构!

在我们下一次的课程中,我们将更深入地了解如何使用 SQL 查询这些关系结构。在此之前,快乐数据建模!

Credits: Image by storyset