数据库管理系统 - 实体关系图表示

你好,有抱负的数据库设计者们!今天,我们将深入到实体关系(ER)图的精彩世界。作为你友善的计算机科学老师邻居,我将引导你了解数据库设计中这个基本概念。如果你之前从未编程过,不用担心——我们将从基础开始,逐步深入。那么,拿起一杯咖啡(或者如果你喜欢,一杯茶),我们开始吧!

DBMS - ER Diagram Representation

实体

什么是实体?

实体就像是现实世界中的“事物”或“对象”,我们希望在我们的数据库中存储关于它的信息。把它想象成一个句子中的名词。例如,在学校数据库中,我们可能有“学生”、“教师”或“课程”这样的实体。

如何在ER图中表示实体

在ER图中,我们用一个包含实体名称的矩形来表示实体。就这么简单!

+---------+
| 学生    |
+---------+

在这个例子中,“学生”是我们的实体。简单吧?

强实体与弱实体

现在,让我们来点刺激的。我们有两种类型的实体:

  1. 强实体:这种实体可以独立存在。就像不需要助手就能独立作战的超级英雄。
  2. 弱实体:这种实体依赖于另一个实体才能存在。它更像是在蝙蝠侠身边的罗宾。

在ER图中,我们用一个双矩形来表示弱实体:

+===========+
|  地址    |
+===========+

在这里,“地址”可能是一个弱实体,因为它依赖于“学生”或“教师”实体才能存在。

属性

什么是属性?

属性是实体的特征或属性。如果实体是名词,那么属性就像是描述它的形容词。对于我们“学生”实体,属性可能包括“姓名”、“年龄”、“学生ID”等。

属性的类型

让我们来分解不同类型的属性:

属性类型 描述 表示
简单 一个单一的、不可分割的值 连接到实体的椭圆
组合 可以被分为更小的子部分 连接有椭圆的椭圆
多值 可以有多个值 双椭圆
派生 从其他属性计算得出的值 虚线椭圆
关键 唯一标识一个实体实例 下划线椭圆

在ER图中表示属性

让我们看看这些在ER图中是如何表示的:

(姓名)
|
(年龄)
|
+--------+    (学生ID)
| 学生  |------(地址)
+--------+        |
((电话号码))
|
/(GPA)\

在这个图中:

  • “姓名”、“年龄”和“地址”是简单属性
  • “学生ID”是关键属性(注意下划线)
  • “电话号码”是多值属性(注意双椭圆)
  • “GPA”是派生属性(注意虚线椭圆)

关系

什么是关系?

关系是两个或多个实体之间的连接。它就像句子中的动词,描述实体之间的相互作用。例如,学生“选修”课程。

在ER图中表示关系

我们在ER图中用菱形来表示关系,并用线连接到相关的实体。

+---------+        +-----------+
| 学生    |--------| 选修       |-------- | 课程 |
+---------+        +-----------+         +--------+

关系中的基数

基数告诉我们一个实体可以与另一个实体的多少个实例相关联。如果你熟悉UML,它就像UML中的多重性。

我们有以下几种基数类型:

  1. 一对一(1:1)
  2. 一对多(1:N)
  3. 多对一(N:1)
  4. 多对多(M:N)

让我们看看如何表示这些:

// 一对一
+---------+        +-----------+        +---------+
| 学生    |--------| 拥有       |--------| 地址    |
+---------+        +-----------+        +---------+
|                                       |
1                                       1

// 一对多
+---------+        +-----------+        +---------+
| 教师    |--------| 教授       |--------| 课程    |
+---------+        +-----------+        +---------+
|                                       |
1                                       N

// 多对多
+---------+        +-----------+        +---------+
| 学生    |--------| 选修       |--------| 课程    |
+---------+        +-----------+        +---------+
|                                       |
M                                       N

参与约束

参与约束告诉我们实体的所有实例是否必须参与关系。我们有两种类型:

  1. 完全参与:所有实例必须参与(用双线表示)
  2. 部分参与:一些实例可能不参与(用单线表示)

这里有一个例子:

+---------+        +-----------+        +---------+
| 学生    |========| 选修       |--------| 课程    |
+---------+        +-----------+        +---------+

在这个图中,双线表示所有学生必须选修课程(完全参与),而单线表示并非所有课程都必须有学生选修(部分参与)。

那么,各位,我们就涵盖了ER图表示的基础。记住,熟能生巧。尝试为你熟悉的一些系统创建ER图——也许是你学校的图书馆系统或当地的披萨递送服务。你练习得越多,就会越熟练。

在我们结束之前,我想起了一个有趣的早期教学故事。我曾经有一个学生,他用表情符号而不是形状来绘制他的整个ER图。虽然这不是标准的表示法,但它确实让评分体验变得难忘!

继续探索,继续提问,最重要的是,在数据库设计中保持乐趣。下次见,快乐绘图!

Credits: Image by storyset