数据库管理系统 - 实体关系图表示
你好,有抱负的数据库设计者们!今天,我们将深入到实体关系(ER)图的精彩世界。作为你友善的计算机科学老师邻居,我将引导你了解数据库设计中这个基本概念。如果你之前从未编程过,不用担心——我们将从基础开始,逐步深入。那么,拿起一杯咖啡(或者如果你喜欢,一杯茶),我们开始吧!
实体
什么是实体?
实体就像是现实世界中的“事物”或“对象”,我们希望在我们的数据库中存储关于它的信息。把它想象成一个句子中的名词。例如,在学校数据库中,我们可能有“学生”、“教师”或“课程”这样的实体。
如何在ER图中表示实体
在ER图中,我们用一个包含实体名称的矩形来表示实体。就这么简单!
+---------+
| 学生 |
+---------+
在这个例子中,“学生”是我们的实体。简单吧?
强实体与弱实体
现在,让我们来点刺激的。我们有两种类型的实体:
- 强实体:这种实体可以独立存在。就像不需要助手就能独立作战的超级英雄。
- 弱实体:这种实体依赖于另一个实体才能存在。它更像是在蝙蝠侠身边的罗宾。
在ER图中,我们用一个双矩形来表示弱实体:
+===========+
| 地址 |
+===========+
在这里,“地址”可能是一个弱实体,因为它依赖于“学生”或“教师”实体才能存在。
属性
什么是属性?
属性是实体的特征或属性。如果实体是名词,那么属性就像是描述它的形容词。对于我们“学生”实体,属性可能包括“姓名”、“年龄”、“学生ID”等。
属性的类型
让我们来分解不同类型的属性:
属性类型 | 描述 | 表示 |
---|---|---|
简单 | 一个单一的、不可分割的值 | 连接到实体的椭圆 |
组合 | 可以被分为更小的子部分 | 连接有椭圆的椭圆 |
多值 | 可以有多个值 | 双椭圆 |
派生 | 从其他属性计算得出的值 | 虚线椭圆 |
关键 | 唯一标识一个实体实例 | 下划线椭圆 |
在ER图中表示属性
让我们看看这些在ER图中是如何表示的:
(姓名)
|
(年龄)
|
+--------+ (学生ID)
| 学生 |------(地址)
+--------+ |
((电话号码))
|
/(GPA)\
在这个图中:
- “姓名”、“年龄”和“地址”是简单属性
- “学生ID”是关键属性(注意下划线)
- “电话号码”是多值属性(注意双椭圆)
- “GPA”是派生属性(注意虚线椭圆)
关系
什么是关系?
关系是两个或多个实体之间的连接。它就像句子中的动词,描述实体之间的相互作用。例如,学生“选修”课程。
在ER图中表示关系
我们在ER图中用菱形来表示关系,并用线连接到相关的实体。
+---------+ +-----------+
| 学生 |--------| 选修 |-------- | 课程 |
+---------+ +-----------+ +--------+
关系中的基数
基数告诉我们一个实体可以与另一个实体的多少个实例相关联。如果你熟悉UML,它就像UML中的多重性。
我们有以下几种基数类型:
- 一对一(1:1)
- 一对多(1:N)
- 多对一(N:1)
- 多对多(M:N)
让我们看看如何表示这些:
// 一对一
+---------+ +-----------+ +---------+
| 学生 |--------| 拥有 |--------| 地址 |
+---------+ +-----------+ +---------+
| |
1 1
// 一对多
+---------+ +-----------+ +---------+
| 教师 |--------| 教授 |--------| 课程 |
+---------+ +-----------+ +---------+
| |
1 N
// 多对多
+---------+ +-----------+ +---------+
| 学生 |--------| 选修 |--------| 课程 |
+---------+ +-----------+ +---------+
| |
M N
参与约束
参与约束告诉我们实体的所有实例是否必须参与关系。我们有两种类型:
- 完全参与:所有实例必须参与(用双线表示)
- 部分参与:一些实例可能不参与(用单线表示)
这里有一个例子:
+---------+ +-----------+ +---------+
| 学生 |========| 选修 |--------| 课程 |
+---------+ +-----------+ +---------+
在这个图中,双线表示所有学生必须选修课程(完全参与),而单线表示并非所有课程都必须有学生选修(部分参与)。
那么,各位,我们就涵盖了ER图表示的基础。记住,熟能生巧。尝试为你熟悉的一些系统创建ER图——也许是你学校的图书馆系统或当地的披萨递送服务。你练习得越多,就会越熟练。
在我们结束之前,我想起了一个有趣的早期教学故事。我曾经有一个学生,他用表情符号而不是形状来绘制他的整个ER图。虽然这不是标准的表示法,但它确实让评分体验变得难忘!
继续探索,继续提问,最重要的是,在数据库设计中保持乐趣。下次见,快乐绘图!
Credits: Image by storyset