资料库基础

基础

档案处理容易造成数据重复和不一致,数据库管理系统能集中管理和控制数据。关联数据库以数据表组织记录和栏,主关键码唯一识别记录,外键码联系不同数据表;规范化减少冗余,结构化查询语言的 SELECT 与 WHERE 负责选取和筛选记录。

适合:中六资讯及通讯科技 · 单元:资料库与多媒体 · 建议学习路径第 1/6 课

学完呢课,你会识:
  • 档案处理易造成数据冗余与不一致;数据库配合数据库管理系统集中管理、控制权限
  • 关联数据库以数据表组织数据:栏是属性,记录是一条完整资料
  • 主关键码唯一且不留空,识别每条记录;外键码联系数据表,受参照完整性约束
文体:科技知识说明文有声朗读

文体小知识:科技知识说明文——讲解数据库的结构、关联数据库的设计概念与基本查询方法,是选修单元「数据库」的入门知识。

资讯及通讯科技Information & Communication Technology

§课文原文 Passage

1处理大量数据时,许多机构早期以档案处理方式,把数据分门别类储存在不同档案,由各个程式自行读写。这种方式容易产生问题:同一份学生资料可能同时存于训导处和学务处的档案,资料重复之余,一旦其中一份更新而另一份漏改,便会出现不一致;程式与档案结构互相依赖,改动格式时牵一发而动全身。

2数据库的出现正是为了解决上述问题。数据库把机构的数据集中储存、统一管理,并由数据库管理系统负责处理新增、查询、修改和删除,同时控制存取权限,确保只有获授权的使用者才能读写相关数据。数据库管理员则负责设定权限、备份与日常维护,令数据安全而一致。

3最常用的关联数据库以数据表组织数据:每张数据表对应一类事物,纵行称为栏,横列称为记录。每张数据表应有主关键码,例如学生表的学生编号,确保每条记录都能被唯一识别;不同数据表之间则透过外键码联系,例如借阅记录表存有学生编号,指向学生表,形成表与表之间的关联。

4设计数据库时要避免数据冗余,即同一数据在多处重复储存。规范化就是把数据妥善分配到不同数据表的过程:每张表只描述一类事物,非关键资料只储存一次,需要时以键码联系查取。这样不但节省空间,更新时亦只需改动一处;配合参照完整性,更可防止记录指向不存在的数据。

5使用者透过数据库查询语言与数据库沟通,最常用的是结构化查询语言。以查询图书为例:先指明要选取哪些栏、来自哪张数据表,再以条件筛选,例如只要分类属于科学的图书。掌握这种「选取栏、指定表、按条件筛选」的基本概念,就能理解大至图书馆系统、小至手机通讯录的数据查询原理。

1重点摘要 Summary

档案处理容易造成数据重复和不一致,数据库管理系统能集中管理和控制数据。关联数据库以数据表组织记录和栏,主关键码唯一识别记录,外键码联系不同数据表;规范化减少冗余,结构化查询语言的 SELECT 与 WHERE 负责选取和筛选记录。

2生字卡 Vocabulary

d
database数据库

把机构数据集中储存、统一管理的电子化数据集合,部分教科书亦称作资料库。

d
database management system (DBMS)数据库管理系统

管理数据库的软件,负责新增、查询、修改、删除数据,并控制存取权限。

r
relational database关联数据库

以多张互相联系的数据表组织数据的数据库。

f
field栏

数据表中纵向的一栏,描述记录的某一属性,例如书名。

r
record记录

数据表中横向的一列,集合一条数据的各项栏值,例如一本书的完整资料。

p
primary key主关键码

唯一识别数据表中每条记录的栏,不得重复或留空,俗称主键。

f
foreign key外键码

数据表中指向另一张数据表主关键码的栏,用来建立表与表之间的联系,俗称外键。

d
data redundancy数据冗余

同一数据在档案或数据表中重复储存的现象(又称数据冗余度),容易造成不一致。

n
normalisation规范化

把数据妥善分配到各张数据表、减少冗余的设计过程,又称规格化。

S
Structured Query Language (SQL)结构化查询语言

与关联数据库沟通的标准语言,以 SELECT、FROM、WHERE 等叙述进行查询。

3逐步讲解 Steps

  1. 第一步:档案处理的局限早期机构以档案处理方式管理数据,各部门自建档案、各自的程式自行读写。举个例子:同一批学生资料,训导处与学务处各存一份,学生转校时只更新其中一份,两边资料便不一致;这种数据冗余不但浪费储存空间,更会损害数据的可靠性。此外,程式与档案结构互相依赖,加一个栏位便要改动所有相关程式,维护成本高昂,这些局限最终促成数据库的出现。
  2. 第二步:数据库与数据库管理系统数据库把整个机构的数据集中储存,由数据库管理系统统一管理,程式透过它存取数据,毋须理会底层档案格式。举个例子:学校资料库同时支援点名系统和图书馆系统,两个系统读取同一份学生资料,资料只需维护一份。数据库管理系统还负责控制存取权限,例如教师可查成绩但不可读薪酬表,并提供备份与还原功能,保障数据安全与一致。
  3. 第三步:数据表、记录与栏关联数据库以数据表为基本单位,每张数据表描述一类事物。以图书表为例:纵向的栏描述属性,如图书编号、书名、分类;横向的记录代表一本书的完整资料。设计时应为每个栏选定合适的数据类型,例如编号用文字、借出日期用日期。表、记录、栏三个层次,是理解数据库结构的基础,也是设计与查询时最常用的术语,答题必须运用准确。
  4. 第四步:主关键码与实体完整性每张数据表必须有主关键码,用来唯一识别每条记录。举个例子:两名学生可以同名同姓,但学生编号不会重复,因此学生编号适合作主关键码,姓名则不可。主关键码的值不得重复,亦不得留空,这项要求称为实体完整性。有时一张表可有多个合适的候选键码,设计时从中选定一个作主关键码,其余成为备用键码;答题时写出选定的主关键码并说明唯一与不留空两项要求即可。
  5. 第五步:外键码与表间关联关联数据库的「关联」二字,正是指数据表之间透过外键码联系。以图书馆为例:借阅记录表储存学生编号,指向学生表的主关键码,便知道谁人借了书;同时储存图书编号指向图书表,便知道借了哪本书。外键码的值必须对应主表中真实存在的记录,这项约束称为参照完整性;若企图记录一个不存在的学生编号,数据库管理系统应拒绝写入,从而保障数据正确。
  6. 第六步:数据冗余与规范化设计数据库的核心目标之一,是把数据冗余减至最低。举个例子:若把书名、作者连同每次借阅都写进借阅记录,同一本书的资料便重复几十次,修改书名时容易漏改。规范化把数据分配到不同数据表:书的资料放图书表,人的资料放学生表,借阅行为放借阅记录表,各表以键码联系。这样每项数据只储存一次,更新一处即可,数据一致性自然提高,储存空间亦更节省。
  7. 第七步:用 SELECT 与 WHERE 查询结构化查询语言是与关联数据库沟通的标准语言,DSE 只要求掌握基本概念。查询的骨架是:SELECT 指明选取哪些栏,FROM 指明数据表,WHERE 按条件筛选记录。举个例子:SELECT 书名 FROM 图书 WHERE 分类 = '科学',意思是从图书表中选出分类为科学的书名;若省去 WHERE,便会列出全部记录。理解「选栏、定表、筛选」三个动作,足以读懂简单查询并应付展示式题目。

5例题示范 Example

设计题:学校图书馆现以试算表记录借书情况,经常出现重复和错漏。馆长决定改用关联数据库,设计三张数据表:图书、学生、借阅记录。请指出每张表的主关键码,说明表与表之间如何联系,并以展示式概念写出「列出所有逾期未还图书编号」的查询。

  1. 先分清三类事物:图书、学生、借阅行为各是一类,各自成为一张数据表,避免把所有资料塞进同一张表造成冗余
  2. 为每张表定主关键码:图书表用图书编号,学生表用学生编号,借阅记录表可用借阅编号,或以图书编号加借出日期组合识别
  3. 用外键码联系:借阅记录表存图书编号与学生编号,分别指向图书表与学生表的主关键码,形成一对多关联
  4. 查询概念:从借阅记录表选取图书编号,条件是归还日期一栏为空,即 SELECT BookID FROM Loan WHERE ReturnDate IS NULL 的展示式理解
  5. 答案:三张数据表分别为图书表(主关键码:图书编号)、学生表(主关键码:学生编号)与借阅记录表(主关键码:借阅编号)。借阅记录表内设图书编号和学生编号两个外键码,分别指向图书表和学生表,记录「谁人借了哪本书」。借阅资料独立成表后,书名和姓名只储存一次,数据冗余大减。要列出逾期未还的图书,概念上是从借阅记录表中选取图书编号,并以 WHERE 筛选尚未归还(归还日期为空)的记录,展示式写法为 SELECT BookID FROM Loan WHERE ReturnDate IS NULL。评分位在于:三张表分工清晰、主关键码正确、外键码指向正确、查询三要素齐备。

6常见错误 Mistakes

✗ 把「数据库」与「数据库管理系统」混为一谈。
✓ 数据库是集中储存的数据本身;数据库管理系统是管理它的软件——两者是「内容」与「工具」的关系。
✗ 用姓名或班别做主关键码。
✓ 姓名可能重复、班别多人共用,两者都不唯一;应用学生编号等不重复、不留空的栏做主关键码。
✗ 认为所有数据放进一张大数据表最方便。
✓ 单表设计造成大量数据冗余,更新时容易不一致;应按事物分表、以外键码联系,即规范化的做法。
✗ 以为 WHERE 是用来选取栏位的。
✓ SELECT 负责选栏,WHERE 负责按条件筛选记录,两者分工不同,切勿混淆。
✗ 觉得数据冗余只是浪费空间,无伤大雅。
✓ 冗余最大的害处是不一致:同一数据多处存放,更新时漏改一处,查出的结果便可能出错。

75 题快测 Quick check

Q1相比档案处理,数据库最主要解决什么问题?

Q2主关键码须符合哪两项要求?

Q3外键码的作用是什么?

Q4SELECT、FROM、WHERE 各负责什么?

Q5为什么要把借阅记录独立成表?

8重点回顾 Recap

  • 档案处理易造成数据冗余与不一致;数据库配合数据库管理系统集中管理、控制权限
  • 关联数据库以数据表组织数据:栏是属性,记录是一条完整资料
  • 主关键码唯一且不留空,识别每条记录;外键码联系数据表,受参照完整性约束
  • 规范化按事物分表、数据只存一次,是减少冗余的设计方法
  • SQL 查询三要素:SELECT 选栏、FROM 定表、WHERE 筛选记录

同级其他科

同一科其他级别