资料库基础
基础档案处理容易造成数据重复和不一致,数据库管理系统能集中管理和控制数据。关联数据库以数据表组织记录和栏,主关键码唯一识别记录,外键码联系不同数据表;规范化减少冗余,结构化查询语言的 SELECT 与 WHERE 负责选取和筛选记录。
- 档案处理易造成数据冗余与不一致;数据库配合数据库管理系统集中管理、控制权限
- 关联数据库以数据表组织数据:栏是属性,记录是一条完整资料
- 主关键码唯一且不留空,识别每条记录;外键码联系数据表,受参照完整性约束
文体小知识:科技知识说明文——讲解数据库的结构、关联数据库的设计概念与基本查询方法,是选修单元「数据库」的入门知识。
§课文原文 Passage
1处理大量数据时,许多机构早期以档案处理方式,把数据分门别类储存在不同档案,由各个程式自行读写。这种方式容易产生问题:同一份学生资料可能同时存于训导处和学务处的档案,资料重复之余,一旦其中一份更新而另一份漏改,便会出现不一致;程式与档案结构互相依赖,改动格式时牵一发而动全身。
2数据库的出现正是为了解决上述问题。数据库把机构的数据集中储存、统一管理,并由数据库管理系统负责处理新增、查询、修改和删除,同时控制存取权限,确保只有获授权的使用者才能读写相关数据。数据库管理员则负责设定权限、备份与日常维护,令数据安全而一致。
3最常用的关联数据库以数据表组织数据:每张数据表对应一类事物,纵行称为栏,横列称为记录。每张数据表应有主关键码,例如学生表的学生编号,确保每条记录都能被唯一识别;不同数据表之间则透过外键码联系,例如借阅记录表存有学生编号,指向学生表,形成表与表之间的关联。
4设计数据库时要避免数据冗余,即同一数据在多处重复储存。规范化就是把数据妥善分配到不同数据表的过程:每张表只描述一类事物,非关键资料只储存一次,需要时以键码联系查取。这样不但节省空间,更新时亦只需改动一处;配合参照完整性,更可防止记录指向不存在的数据。
5使用者透过数据库查询语言与数据库沟通,最常用的是结构化查询语言。以查询图书为例:先指明要选取哪些栏、来自哪张数据表,再以条件筛选,例如只要分类属于科学的图书。掌握这种「选取栏、指定表、按条件筛选」的基本概念,就能理解大至图书馆系统、小至手机通讯录的数据查询原理。
1重点摘要 Summary
档案处理容易造成数据重复和不一致,数据库管理系统能集中管理和控制数据。关联数据库以数据表组织记录和栏,主关键码唯一识别记录,外键码联系不同数据表;规范化减少冗余,结构化查询语言的 SELECT 与 WHERE 负责选取和筛选记录。
2生字卡 Vocabulary
把机构数据集中储存、统一管理的电子化数据集合,部分教科书亦称作资料库。
管理数据库的软件,负责新增、查询、修改、删除数据,并控制存取权限。
以多张互相联系的数据表组织数据的数据库。
数据表中纵向的一栏,描述记录的某一属性,例如书名。
数据表中横向的一列,集合一条数据的各项栏值,例如一本书的完整资料。
唯一识别数据表中每条记录的栏,不得重复或留空,俗称主键。
数据表中指向另一张数据表主关键码的栏,用来建立表与表之间的联系,俗称外键。
同一数据在档案或数据表中重复储存的现象(又称数据冗余度),容易造成不一致。
把数据妥善分配到各张数据表、减少冗余的设计过程,又称规格化。
与关联数据库沟通的标准语言,以 SELECT、FROM、WHERE 等叙述进行查询。
3逐步讲解 Steps
- 第一步:档案处理的局限早期机构以档案处理方式管理数据,各部门自建档案、各自的程式自行读写。举个例子:同一批学生资料,训导处与学务处各存一份,学生转校时只更新其中一份,两边资料便不一致;这种数据冗余不但浪费储存空间,更会损害数据的可靠性。此外,程式与档案结构互相依赖,加一个栏位便要改动所有相关程式,维护成本高昂,这些局限最终促成数据库的出现。
- 第二步:数据库与数据库管理系统数据库把整个机构的数据集中储存,由数据库管理系统统一管理,程式透过它存取数据,毋须理会底层档案格式。举个例子:学校资料库同时支援点名系统和图书馆系统,两个系统读取同一份学生资料,资料只需维护一份。数据库管理系统还负责控制存取权限,例如教师可查成绩但不可读薪酬表,并提供备份与还原功能,保障数据安全与一致。
- 第三步:数据表、记录与栏关联数据库以数据表为基本单位,每张数据表描述一类事物。以图书表为例:纵向的栏描述属性,如图书编号、书名、分类;横向的记录代表一本书的完整资料。设计时应为每个栏选定合适的数据类型,例如编号用文字、借出日期用日期。表、记录、栏三个层次,是理解数据库结构的基础,也是设计与查询时最常用的术语,答题必须运用准确。
- 第四步:主关键码与实体完整性每张数据表必须有主关键码,用来唯一识别每条记录。举个例子:两名学生可以同名同姓,但学生编号不会重复,因此学生编号适合作主关键码,姓名则不可。主关键码的值不得重复,亦不得留空,这项要求称为实体完整性。有时一张表可有多个合适的候选键码,设计时从中选定一个作主关键码,其余成为备用键码;答题时写出选定的主关键码并说明唯一与不留空两项要求即可。
- 第五步:外键码与表间关联关联数据库的「关联」二字,正是指数据表之间透过外键码联系。以图书馆为例:借阅记录表储存学生编号,指向学生表的主关键码,便知道谁人借了书;同时储存图书编号指向图书表,便知道借了哪本书。外键码的值必须对应主表中真实存在的记录,这项约束称为参照完整性;若企图记录一个不存在的学生编号,数据库管理系统应拒绝写入,从而保障数据正确。
- 第六步:数据冗余与规范化设计数据库的核心目标之一,是把数据冗余减至最低。举个例子:若把书名、作者连同每次借阅都写进借阅记录,同一本书的资料便重复几十次,修改书名时容易漏改。规范化把数据分配到不同数据表:书的资料放图书表,人的资料放学生表,借阅行为放借阅记录表,各表以键码联系。这样每项数据只储存一次,更新一处即可,数据一致性自然提高,储存空间亦更节省。
- 第七步:用 SELECT 与 WHERE 查询结构化查询语言是与关联数据库沟通的标准语言,DSE 只要求掌握基本概念。查询的骨架是:SELECT 指明选取哪些栏,FROM 指明数据表,WHERE 按条件筛选记录。举个例子:SELECT 书名 FROM 图书 WHERE 分类 = '科学',意思是从图书表中选出分类为科学的书名;若省去 WHERE,便会列出全部记录。理解「选栏、定表、筛选」三个动作,足以读懂简单查询并应付展示式题目。
5例题示范 Example
设计题:学校图书馆现以试算表记录借书情况,经常出现重复和错漏。馆长决定改用关联数据库,设计三张数据表:图书、学生、借阅记录。请指出每张表的主关键码,说明表与表之间如何联系,并以展示式概念写出「列出所有逾期未还图书编号」的查询。
- 先分清三类事物:图书、学生、借阅行为各是一类,各自成为一张数据表,避免把所有资料塞进同一张表造成冗余
- 为每张表定主关键码:图书表用图书编号,学生表用学生编号,借阅记录表可用借阅编号,或以图书编号加借出日期组合识别
- 用外键码联系:借阅记录表存图书编号与学生编号,分别指向图书表与学生表的主关键码,形成一对多关联
- 查询概念:从借阅记录表选取图书编号,条件是归还日期一栏为空,即 SELECT BookID FROM Loan WHERE ReturnDate IS NULL 的展示式理解
- 答案:三张数据表分别为图书表(主关键码:图书编号)、学生表(主关键码:学生编号)与借阅记录表(主关键码:借阅编号)。借阅记录表内设图书编号和学生编号两个外键码,分别指向图书表和学生表,记录「谁人借了哪本书」。借阅资料独立成表后,书名和姓名只储存一次,数据冗余大减。要列出逾期未还的图书,概念上是从借阅记录表中选取图书编号,并以 WHERE 筛选尚未归还(归还日期为空)的记录,展示式写法为 SELECT BookID FROM Loan WHERE ReturnDate IS NULL。评分位在于:三张表分工清晰、主关键码正确、外键码指向正确、查询三要素齐备。
6常见错误 Mistakes
75 题快测 Quick check
Q1相比档案处理,数据库最主要解决什么问题?
Q2主关键码须符合哪两项要求?
Q3外键码的作用是什么?
Q4SELECT、FROM、WHERE 各负责什么?
Q5为什么要把借阅记录独立成表?
8重点回顾 Recap
- 档案处理易造成数据冗余与不一致;数据库配合数据库管理系统集中管理、控制权限
- 关联数据库以数据表组织数据:栏是属性,记录是一条完整资料
- 主关键码唯一且不留空,识别每条记录;外键码联系数据表,受参照完整性约束
- 规范化按事物分表、数据只存一次,是减少冗余的设计方法
- SQL 查询三要素:SELECT 选栏、FROM 定表、WHERE 筛选记录