🗄️ 第五章 引入数据库-数据库的结构与表的设计
📄 一句话概括

实体是系统里需要保存的「对象」(名词),属性是对象的特征——实体将来变表,属性变列。从需求里挑名词、给名词列特征,就是数据建模的第一步。

📝 本节和前面几节的关系

5-4 攒下了需求清单,本节开始翻译:清单里的名词多半是实体,名词的特征是属性。5-6 再看实体和实体怎么挂钩——这张网画完就是 5-7 的 E-R 图。

一、两个词的定义

概念 是什么 将来变成
实体(Entity) 要保存的一类对象:学生、书、订单 一张表
属性(Attribute) 实体的特征:姓名、书名、金额 表里的一列

判断实体的小窍门:它有自己的「身份」,需要单独记住它。学生是实体(要记住每人);「三年级」通常不是(只是学生的一个属性值)——除非系统还要管年级本身的信息。

二、从需求到实体的翻译

需求句:「学生选课,每门课有学分,考试有成绩。」

需求里的词 判定
学生 实体 ✅
课程 实体 ✅
学分 属性(课程的特征)
成绩 危险!——它既不是学生的特征也不是课程的特征,而是「选了这门课」这件事的特征 → 关系属性(5-6 揭晓)

三、找主键:给实体发身份证

每个实体要选一个能唯一认出每一条的属性当主键(4-12 的正主出场):

没有天然编号?造一个自增 id(4-11 的用武之地)。

四、动手 Demo:给书评网站挑实体

从 5-4 的需求清单挑名词:用户(注册、昵称)、书(书名、ISBN)、书评(正文、评分、时间)。 注意「书评」也是实体——它不是书的属性,是用户对书做的事,要单独保存。三个实体、将来三张表(5-16 起验证)。

五、30 秒实验

拿手机通讯录练手:实体是「联系人」,属性有哪些?哪些属性有可能重复、不能当主键?(姓名、生日都可能重——所以通讯录给每人一个记录号。)

六、常见误区

自测三问 1. 实体和属性将来分别变成什么?(表/列) 2. 判定实体的窍门?(有身份、需要单独记住的对象) 3. 成绩挂在学生还是课程上?(都不是——挂在「选课」这个关系上)

相关笔记