数据库管理系统 - 实体-关系模型基本概念

你好,未来的数据库大师们!今天,我们将深入到一个迷人的世界——实体-关系(ER)模型。作为你友善的计算机科学老师邻居,我将会在这个旅程中引导你,即使你一生中从未编写过一行代码。所以,拿起你的虚拟记事本,让我们开始吧!

DBMS - ER Model Basic Concepts

实体

什么是实体?

实体就像是数据库宇宙中的明星。它是一个事物、一个人、一个地方或一个我们想要存储信息的概念。想象你正在为一个图书馆创建数据库。书籍、作者和读者都将被视为实体。

让我们来看一个简单的例子:

实体 描述
书籍 实体或数字阅读材料
作者 写书的人
读者 借书的人

### 实体集

现在,想象一个标有“书籍”的大盒子,里面装着你图书馆里所有的书籍。这个盒子就是我们所说的实体集——一组相似的实体。这个盒子里的每一本书都是“书籍”实体集中的唯一实体。

## 属性

### 什么是属性?

如果实体是数据库宇宙中的明星,那么属性就是让每颗明星独一无二的光辉细节。它们是描述实体的属性或特征。

让我们扩展我们的图书馆例子:


| 实体    | 属性                            |
|---------|--------------------------------|
| 书籍    | 国际标准书号(ISBN)、标题、出版日期、类型 |
| 作者    | 作者ID、姓名、出生日期、国籍   |
| 读者    | 读者ID、姓名、地址、电话号码   |

这些属性中的每一个都帮助我们更精确地识别和描述实体。例如,ISBN(国际标准书号)是每本书的唯一标识符。

属性的类型

并非所有的属性都是平等的。让我们看看一些不同类型的属性:

  1. 简单属性:这些是原子单位,如一个人的年龄。
  2. 复合属性:这些可以细分为更小的部分,如地址(街道、城市、邮编)。
  3. 单值属性:这些对于一个特定的实体只有一个值,如一个人的出生日期。
  4. 多值属性:这些可以有一个以上的值,如一个人的电话号码。
  5. 派生属性:这些可以从其他属性计算得出,如年龄(从出生日期派生)。

下面是一个总结这些类型的表格:

属性类型 示例
简单 年龄
复合 地址(街道、城市、邮编)
单值 出生日期
多值 电话号码
派生 年龄(从出生日期派生)

## 关系

### 什么是关系?

现在,让我们连接数据库宇宙中的星星!关系是两个或更多实体之间的关联。在我们的图书馆例子中,一个作者“写”了一本书,一个读者“借”了一本书。

### 关系的类型

关系根据涉及到的实体数量有不同的类型:

1. **一元关系**:同一实体集中的实例之间的关系。
2. **二元关系**:两个实体集的实例之间的关系。
3. **三元关系**:涉及三个实体集的实例之间的关系。

让我们用我们的图书馆例子来阐述这些:


| 关系类型 | 示例                                    |
|----------|----------------------------------------|
| 一元     | 书籍“是续集”书籍                        |
| 二元     | 作者“写”书籍                            |
| 三元     | 读者“从”图书馆分馆“借”书籍            |

关系中的基数

基数就像是数据库宇宙中的交通规则。它定义了一个实体的实例可以与另一个实体的多少实例相关联。主要的类型有:

  1. 一对一(1:1):实体A的一个实例恰好与实体B的一个实例相关联,反之亦然。
  2. 一对多(1:N):实体A的一个实例可以与实体B的多个实例相关联,但B的每个实例只与A的一个实例相关联。
  3. 多对多(M:N):实体A的多个实例可以与实体B的多个实例相关联。

下面是如何将这些应用到我们的图书馆:

基数 示例
一对一 书籍“有”ISBN(每本书有一个唯一的ISBN)
一对多 作者“写”书籍(一个作者可以写很多书)
多对多 读者“借”书籍(很多读者可以借很多书)


就这样,大家!我们已经完成了ER模型基本概念的旅程。记住,就像任何好的故事一样,一个设计良好的数据库会告诉我们关于其角色(实体)、他们的特质(属性)以及他们如何互动(关系)。

在我们结束之前,我想起了一个有趣的早期教学事件。我曾经尝试用一个浪漫喜剧的比喻来解释关系。只能说,把数据库关系比作约会场景导致了一些非常困惑(但也很有趣)的学生!

继续练习这些概念,很快你将在到处看到实体和关系——从你最喜欢的咖啡店到你的社交媒体动态。快乐建模!

Credits: Image by storyset