欢迎来到数据库设计!
你有没有想过像 Amazon 或 Netflix 这样的大型网站,是如何在不乱成一团的情况下,追踪数以百万计的用户、产品和电影呢?这一切都始于概念数据模型 (Conceptual Data Model)。你可以把它想象成数据库的“建筑蓝图”。在我们开始操作计算机之前,必须先规划好需要什么数据,以及这些数据如何整合在一起。
如果起初觉得这有点抽象也不用担心——读完这些笔记后,你将能够把任何现实生活中的场景转化为专业的数据库规划!
1. 基础积木:实体 (Entities) 与属性 (Attributes)
要建立数据模型,我们需要找出我们想要存储数据的“对象”,以及这些对象的“细节”。
什么是实体 (Entity)?
实体 (Entity) 是指机构感兴趣,且需要记录其数据的对象、人员、事件或事物的类别。
类比:如果你的数据库是一个文件柜,每个实体就是一个抽屉。
范例:在学校数据库中,实体可能包括学生 (Student)、教师 (Teacher) 和科目 (Subject)。
什么是属性 (Attribute)?
属性 (Attribute) 是关于实体的具体信息(特征)。
记忆小撇步:把实体想象成名词(事物本身),把属性想象成形容词(描述事物)。
范例:对于学生 (Student) 这个实体,属性可能包括姓名 (FirstName)、姓氏 (Surname) 和出生日期 (DateOfBirth)。
实体标识符 (Entity Identifier)
每个实体都需要一种方法来唯一识别每笔记录。这称为实体标识符 (Entity Identifier)(你之后会学到它就是“主键”Primary Key)。在笔记和考试中,你必须下划线标注标识符。
快速回顾:
• 实体:学生 (Student)
• 属性:学生编号 (StudentID), 名字 (FirstName), 姓氏 (Surname)
(注意 学生编号 是如何被下划线标注的,因为它对每个人来说都是独一无二的!)
重点总结
实体是我们关心的“大项目”,而属性则是描述它们的“小细节”。其中一个属性必须始终是唯一标识符。
2. 实体描述 (Entity Descriptions)
AQA 课程大纲要求你能够使用称为实体描述 (Entity Description) 的特定文字格式来写出你的数据模型。它看起来像这样:
\(EntityName(Identifier, Attribute2, Attribute3, ...)\)
范例:如果我们正在为汽车展厅设计数据库:
汽车 (Car)(车牌号码 (RegistrationNumber), 品牌 (Make), 型号 (Model), 颜色 (Colour), 价格 (Price))
常见错误:忘了为标识符加上下划线!如果你在考试中没有标注,可能会因此失分。
3. 实体关系 (ER) 模型
数据并不是孤立存在的;实体之间通常彼此相关。我们使用实体关系图 (Entity Relationship Diagrams, ERDs) 来直观地展示这些连接。
关系类型
两个实体之间主要有三种关联方式:
1. 一对一 (One-to-One, 1:1)
实体 A 的每个项目只连接到实体 B 的一个项目。
范例:一位丈夫 (Husband) 有一位妻子 (Wife);一位妻子有一位丈夫。(以传统数据库意义而言!)
2. 一对多 (One-to-Many, 1:M)
实体 A 的一个项目可以连接到实体 B 的多个项目,但实体 B 只能连接到 A 的一个项目。
范例:一位母亲 (Mother) 可以有多个孩子 (Children),但每个孩子只有一位亲生母亲。
小提示:这是数据库中最常见的关系!
3. 多对多 (Many-to-Many, M:M)
实体 A 的多个项目可以连接到实体 B 的多个项目。
范例:一位学生 (Student) 修读多个科目 (Subjects),而一个科目由多位学生修读。
绘制图表
在考试中,你用矩形表示实体,用连线表示它们之间的关系。
要显示关系中的“多”(Many) 一端,我们使用“乌鸦脚”(Crow's Foot,即三条分支的小线)。
• 没有分支的直线代表“一”。
• 以“乌鸦脚”结尾的线代表“多”。
重点总结
ER 图使用矩形表示实体,并使用特殊的线条结尾(如乌鸦脚)来展示两个项目之间如何连接。
4. 步骤教学:建立数据模型
当你在考试中遇到情境题时,请遵循以下步骤:
步骤 1:识别实体
找出文字中的主要“名词”(例如:顾客、订单、产品)。
步骤 2:确定关系
问问自己:“一位顾客可以有多个订单吗?”(可以)。“一个订单可以属于多位顾客吗?”(不可以)。这是一个一对多 (One-to-Many) 关系。
步骤 3:绘制 ERD
画出你的矩形,并用正确的线条连接它们。
步骤 4:撰写实体描述
列出每个实体的属性,并为标识符加上下划线。
你知道吗?
建立这些模型的过程称为概念建模 (Conceptual Modelling),因为它专注于数据的逻辑,而不是用于存储数据的实体软件或硬件。你可以将同一个概念模型实现为 SQL、电子表格,甚至是纸本档案系统!
5. 最后快速回顾
检查你的理解:
• 你能定义实体 (Entity) 和属性 (Attribute) 吗?
• 你记得在描述中为标识符加上下划线吗?
• 你能画出乌鸦脚 (Crow's Foot) 来表示“多”的关系吗?
请继续练习不同的场景,例如图书馆(书籍、会员、借阅记录)或医院(医生、病人、预约)。练习越多,就越容易看出其中的规律!