跳到正文

E-R图、键设计与规范化

頻出约 32 分钟5 个术语过去问 20 题

本单元目标

  • 能从E-R图中读出业务的实体、实体间的关联以及关联的多重度
  • 能从作用和取值限制两方面区分主键与外键
  • 能说明规范化如何拆分表,以及这样做的目的
术语总表(5 个)
术语一句话在设计中的作用
E-R図把实体以及实体之间的关联画成图根据业务分析的结果理清数据的结构
主キー能唯一识别表中某一行的列或列的组合锁定唯一的一行
外部キー引用其他表主键值的列或列的组合通过值把表与表联系起来
インデックス把列值与行的位置对应起来的查找目录加快检索
正規化为消除重复而把一张表拆成多张表的工作防止更新后数据前后不一致

术语

E-R図E-R图(实体-关联图)

在术语表中打开 E-R図

E-R图(E-R図)是把业务中要管理的实体(entity)以及实体之间的关联(relationship)画成图的表示方法。

多重度对应方式例子
一对一从哪一方看,对方都只有1条门店与店长(每家门店只有1名店长,每名店长只负责1家门店)
一对多一方的1条对应对方的多条,反过来只对应1条班级与学生(1个班有多名学生,每名学生只属于1个班)
多对多从哪一方看,对方都有多条学生与社团活动(可以同时参加多个社团,1个社团有多名学生)

实体是想作为数据记录下来的一类对象,关联表示实体之间的联系。关联上还要注明多重度(一对一、一对多、多对多等),表示一方的1条对应对方的几条。

类比就像电视剧的人物关系图。把每个角色画成一个框,再用线连出父子、同事等关系,谁和谁怎样相连一目了然。

记法E 取自 Entity(实体),R 取自 Relationship(关联)。名字本身就点出了图的两种组成部分。

考点

  • 常考E-R图(E-R図)用于在设计数据库(データベース)时理清业务管理对象之间的关系,在关系数据库中也用来表示表(テーブル)之间的联系。
  • 常考如果1个班有多名学生,而每名学生只属于1个班,那么班级与学生是一对多(1対多)的关联。多重度(多重度)要从两个方向分别数出条数来确定。
  • 常考E-R图根据业务分析的结果来画,表的设计则以这张E-R图为基础展开。

该术语的过去问 3 题 E-R図

主键(主キー)是为了唯一识别表中的一行(记录)而指定的列或列的组合。

演出编号座位号预订人
P01A1青木
P01A2青木
P02A1西村

在上表中,不论只看演出编号还是只看座位号,都有相同的值出现在多行里,但把两列组合起来就能确定一行。像这样组合使用时,整个组合被当作一个主键。

类比就像学生证上的学号。即使有同名的学生,只要知道学号就能确定是哪一个人。

记法英文是 primary key,primary 意为“首要的”,也就是区分表中各行的首要依据。

考点

  • 常考主键(主キー)的值每行都不同;由多列组合成的主键靠组合整体的值区分各行,所以组成组合的单个列的值可以重复。构成主键的每一列都不能取空值(NULL)。
  • 常考如果一个表靠单独一列无法确定行,也可以把两列以上合起来作为一个主键。
  • 常考设定主键的目的,是让人能唯一地分辨出表中的每一行。

该术语的过去问 3 题 主キー

外键(外部キー)是引用其他表主键值的列(或列的组合),通过值把表与表联系起来。

表列作用
班级表班级代码主键
学生表学号主键
学生表班级代码外键(引用班级表的班级代码)

外键列中不能填入被引用表里不存在的值,这条规则称为参照约束(参照完整性)。有了这条约束,以上表为例,就不会出现指向班级表中并不存在的班级的学生行,表与表之间的联系得以保持。

类比就像快递单上填写的收件人会员号。这个号码必须对应会员名册里真实存在的人。

记法“外”指的是指向本表之外。外键就是通往其他表的路标。

考点

  • 常考一对多(1対多)的关联,是在“多”一方的表中放入“一”一方表的主键(主キー)作为外键(外部キー)来表示的。
  • 常考外键不能填入被引用表中不存在的值,所以添加数据时要先登记被引用一方的表。
  • 常考一个表引用多个表时,要为每个被引用的表各设一个外键,因此一个表中可以有多个外键。

该术语的过去问 3 题 外部キー

「主键」与「外键」的区别

比较点主键外键
关键作用唯一识别本表中的行引用其他表的主键,把表联系起来
相同的值主键的值(组合主键则是组合整体的值)不能与其他行重复可以出现在任意多行中
一个表中的数量1个可按引用对象设多个

索引(インデックス)是把表中列的值与行的位置对应起来的查找目录,用来加快检索。

没有索引有索引
查找符合条件的行逐行查看所有行通过索引直接找到行的位置
添加、更新、删除行只改写表改写表的同时也要改写索引
存储空间只占表本身的空间再加上索引占用的空间

没有索引时,要找出符合条件的行,只能从头到尾逐行查看。有了索引,检索会变快,但每次改写行时都要同时修改索引,写入的工作量随之增加,而且保存索引本身也要多占存储空间。

类比就像厚书末尾的索引。可以按词语迅速查到页码,但每次修订正文时,索引也得跟着改。

记法英文 index 还有“食指”的意思。可以记成:用手指指出目标行在哪里。

考点

  • 常考索引(インデックス)的作用是加快检索,在哪一列上建立则根据检索的使用方式来决定。
  • 常考索引可以为每个用于检索的列分别建立,所以一个表中可以有多个索引。

该术语的过去问 3 题 インデックス

「主键」与「索引」的区别

比较点主键索引
关键目的锁定唯一的一行加快检索
设定方式每个表只设定一个根据检索的使用方式,在需要的列上建立

规范化(正規化)是为了消除数据的重复、防止更新时出现矛盾,而把一张表拆分成多张表的设计工作。

  1. 预约表里混有会员和课程的信息
  2. 拆出会员表(由会员编号决定的项目)
  3. 拆出课程表(由课程代码决定的项目)
  4. 预约表通过会员编号和课程代码引用

预约表中保留会员编号和课程代码作为外键,与拆出的表相连。

4 / 4

同一事实记录在好几个地方时,修改时可能只改了其中一部分,导致数值前后不一致。规范化以“每个项目由哪个项目决定”为线索来拆分表,拆开的表之间再用共同的列(主键和外键)联系起来。规范化推进得越深入,表就分得越细。

类比好比把过去在各种单据上反复填写的往来单位地址,单独整理成一本往来单位名册,单据上只写名册里的编号。地址变了,只要改名册里的一处就行。

记法“规范”就是整理成规定的形式。记住这个反直觉的点:越整理,表反而越多。

考点

  • 常考规范化(正規化)的目的,是让同一事实只记录在一处,更新时数值不会前后不一致,从而便于维护。
  • 常考值只由另一列(例如会员编号)决定的项目,要移到以该列为主键(主キー)的表中,原表则保留这一列来建立联系。
  • 常考能由其他项目计算得出的项目属于冗余项目(冗長)。例如有了单价和数量,就能算出金额。

该术语的过去问 3 题 正規化

要点

  • E-R图用实体和关联表示业务的数据结构,关联上要标注一对一、一对多等多重度。
  • 主键是唯一识别行的列或列的组合,其值不能与其他行重复,构成它的列也不能填空值。
  • 外键是引用其他表主键的列(或列的组合),不能填入被引用表中不存在的值。
  • 索引用来加快检索,代价是写入的工作量和存储空间都会增加。
  • 规范化按每个项目由什么决定来拆分表,消除重复和更新时的不一致。

确认题

从本单元的过去问中选 5 题

开始做确认题

查看这个领域的全部过去问