CAIE AS and A Level CS revision - Unit 8 (2nd)
如遇到公式加载异常,请刷新页面!
Unit 8 Databases 数据库
8.1 Database Concepts 数据库概念
- 大纲要求
8.1.1 Show understanding of the limitations of using a file-based approach for the storage and retrieval of data 了解使用基于文件的方法来存储和检索数据的局限性
- File-based approach:基于文件的方法来存储数据。常见的问题包括:
- Data integrity problem:数据完整性问题。由于文件输入缺乏in-built control内置控制,所以在输入时可能出现重复、不符合格式、缺省、前后数据不一致等问题,从而影响后续使用。
- Data privacy issue:数据隐私问题。由于难以控制访问文件的用户权限,所以可能出现越权访问数据的情况,带来数据隐私和泄露的问题。
- Data redundancy and possible inconsistency:数据冗余与不一致问题。为解决上述的用户权限问题,可以采用多文件分发的方式,但这会使得存储的数据存在大量重复内容,浪费存储空间。同时,如果后续要修改其中的内容,必须在所有文档中同时修改,如果无法做到,则会出现数据不一致的问题。
- Data dependency:数据依赖问题。设计程序时需要明确需要的数据的组织方式,以便在程序中正确读取。如果数据文件发生变化,则可能需要重新设计程序。2
8.1.2 Describe the features of a relational database that address the limitations of a file-based approach 描述解决基于文件的方法的局限性的关系数据库的特性
- relational database:关系数据库,指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解。
8.1.3 Show understanding of and use the terminology associated with a relational database model 理解并使用与关系数据库模型相关的术语
Including: entity, table, record, field, tuple, attribute, primary key, candidate key, secondary key, foreign key, relationship (one-to-many, one-to-one, many-to-many), referential integrity, indexing 包括:实体、表、记录、字段、元组、属性、主键、候选键、辅助键、外键、关系(一对多、一对一、多对多)、参照完整性, 索引
- Entity:实体,指数据库中记录的个体。如每一个职工。
- Table:表,指根据行和列来记录的数据集合。
- Record:记录,指表中的行数据。每一行是一条记录。
- Field:字段,指表中的列数据。每一列是一个字段。
- Tuple:元组,指表中的行数据。(通常不用该说法)
- Attribute:属性,指个体的各类特征,如姓名、年龄、电话等。以列标题的形式呈现。
- Primary key:主键,指表内每个记录中值唯一、不重复的属性。每个表有且仅有一个主键。
- Candidate key:候选键,指表内所有可能作为主键的属性。候选键可能有多个,在其中指定一个成为主键。
- Secondary key:辅助键,指候选键中没有成为主键的属性。
- Foreign key:外键,指本表内在另一个表中成为主键的属性。
- Relationship (one-to-many, one-to-one, many-to-many) :关系(一对多、一对一、多对多)
- one-to-many:一对多,一个实体对应多个实体。
- one-to-one:一对一,一个实体对应一个实体。
- many-to-one:多对一,多个实体对应一个实体。
- many-to-many:多对多,多个实体对应多个实体。
- Referential integrity:引用完整性,指通过外键的运用,使得输入的数据一定是引用表中已经存在的数据。
- Indexing:索引,指用于快速搜索的辅助表,其中包含着一个用于搜索的属性和指向具体记录的指针。
8.1.4 Use an entity-relationship (E-R) diagram to document a database design 使用实体关系(E-R)图来记录数据库设计
- 实体使用长方形表示。
- 一对一的表示:
- 多对一(一对多)的表示:
- 简单表示:多方采用“爪子”型。
- 添加细节表示:双竖线代表一对多时的一,双“爪子”代表一对多时的一到多,“圈+爪子”代表零到多。
- 多对多的表示:“单竖线+爪子”代表多对多时的一到多。多对多因难以使用外键,所以有时候会写成一对多的形式。
8.1.5 Show understanding of the normalisation process 展示对标准化过程的理解
First Normal Form(1NF), Second Normal Form (2NF) and Third Normal Form (3NF) 第一范式(1NF)、第二范式(2NF)和第三范式(3NF)
- 标准化:为数据进行表设计,使表减少数据冗余,提高效率。
- First Normal Form(1NF):第一范式,强调的是列的原子性,字段都是单一属性,即列不能够再分成其他几列。
- Repeating group:当其他列的数据保持一致时,如果本列的数据可以有多个数值,则本列被称为repeating group,需要和non-repeating group分离成两个表,以满足1NF。
- Second Normal Form (2NF):第二范式。不存在部分依赖。每个表必须有且仅有一个数据元素为主键,其他数据元素与主键一一对应。
- Third Normal Form (3NF):第三范式。不存在传递依赖。表中的所有数据元素不但要能唯一地为主键所标识,而且它们之间还必须相互独立,不存在其他的函数关系。
- First Normal Form(1NF):第一范式,强调的是列的原子性,字段都是单一属性,即列不能够再分成其他几列。
8.1.6 Explain why a given set of database tables are, or are not, in 3NF 解释为什么一组给定的数据库表在或不在 3NF 中
- 属于3NF的前提为:所有非键属性必须依赖于主键,且相互之间没有关联性。
8.1.7 Produce a normalised database design for a description of a database, a given set of data, or a given set of tables 为数据库、给定数据集或给定表集的描述生成规范化数据库设计
- 【参考8.1.5】。
8.2 Database Management System (DBMS) 数据库管理系统(DBMS)
- 大纲要求
8.2.1 Show understanding of the features provided by a Database Management System (DBMS) that address the issues of a file based approach 了解数据库管理系统 (DBMS) 提供的解决基于文件的方法问题的功能
Including: 包括:
· data management, including maintaining a data dictionary 数据管理,包括维护数据字典
· data modelling 数据建模
· logical schema 逻辑模式
· data integrity 数据完整性
· data security, including backup procedures and the use of access rights to individuals / groups of users 数据安全,包括备份程序和对个人/用户组的访问权限的使用
- Database Management System (DBMS):数据库管理系统,是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库。其对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。DBMS的常见功能如下:
- data management:数据管理,对数据库中储存的数据进行整理,采用query查询等方式方便人们查找和提取相关数据。
- data dictionary:数据字典,是描述数据的信息集合。其对数据的数据项、数据结构、数据流、数据存储、处理逻辑等进行定义和描述,仅能由database administer(DBA)数据管理员查看。
- data management:数据管理,对数据库中储存的数据进行整理,采用query查询等方式方便人们查找和提取相关数据。
- data modelling 数据建模。由ANSI美国国家标准协会提出了三级模型:external level外部层次、conceptual level概念层次、internal level内部层次。如下图所示:
- Physical storage:物理存储,指存储在硬盘上的数据。
- internal level:内部层次。数据存储的具体细节(即internal schema内模式)存储在内部层次中,比如存储路径、存储方式、索引方式等,由DBMS控制。
- conceptual level:概念层次。由DBA数据管理员控制。DBMS全局管理数据及数据之间的约束,包括数据本身、数据之间的关系等,因此其模式被称为conceptual schema概念模式或logical schema逻辑模式。
- external level:外部层次。包含所有用户都能看到的数据。其模式称为external schema外模式,包含了每个用户在其权限内能看到的view视图。
- data integrity:数据完整性。DBMS应该有防止数据库因为系统故障导致出现未定义错误的内置功能,避免数据库崩溃或损坏。
- data security:数据安全。数据库应定期进行备份。此外,数据库应能够对不同用户进行不同权限的设定,比如能进行哪些操作、能使用哪些表等。该功能可通过external level中的不同view视图实现。
8.2.2 Show understanding of how software tools found within a DBMS are used in practice 了解如何在实践中使用 DBMS 中的软件工具
Including: the use and purpose of: 包括:用途和目的:
· developer interface 开发者界面
· query processor 查询处理器
- developer interface:开发者界面。DBMS通过开发人员界面提供软件工具,可以用来创建表并定义属性及其数据类型。
- query processor:查询处理器。查询是从数据库中提取和操作数据的机制,DBMS允许创建和处理查询。
- report:报告。DBMS允许创建报告以规范格式化输出。
- index:DBMS通过创建索引来加快搜索速度。【参考8.1.3】
8.3 Data Definition Language (DDL) and Data Manipulation Language (DML) 数据定义语言(DDL)和数据操作语言(DML)
- 大纲要求
8.3.1 Show understanding that DBMS carries out all creation / modification of the database structure using its Data Definition Language (DDL) 表明理解 DBMS 使用其数据定义语言 (DDL) 执行数据库结构的所有创建/修改
- Data Definition Language (DDL):数据定义语言,用于创建或修改表,定义数据库内数据的结构,但不会放入任何数据。
8.3.2 Show understanding that the DBMS carries out all queries and maintenance of data using its DML 表明 DBMS 使用其 DML 执行所有查询和数据维护
- Data Manipulation Language(DML):数据操纵语言,用于对数据库进行查询与更新。常见操作包括:插入数据、修改或删除数据、读取数据等。
8.3.3 Show understanding that the industry standard for both DDL and DML is Structured Query Language (SQL) 了解 DDL 和 DML 的行业标准是结构化查询语言 (SQL)
Understand a given SQL script 理解给定的 SQL 脚本
- Structured Query Language(SQL):结构化查询语言,用于创建和编辑数据库。下面的DDL和DML都是其中的一部分。
8.3.4 Understand given SQL (DDL) commands and be able to write simple SQL (DDL) commands using a sub-set of commands 理解给定的 SQL (DDL) 命令并能够使用命令子集编写简单的 SQL (DDL) 命令
Create a database (CREATE DATABASE) 创建数据库(CREATE DATABASE)
Create a table definition (CREATE TABLE), including the creation of attributes with appropriate data types: 创建表定义(CREATE TABLE),包括创建具有适当数据类型的属性:
· CHARACTER 性格
· VARCHAR(n) VARCHAR(n)
· BOOLEAN 布尔值
· INTEGER 整数
· REAL 真实
· DATE 日期
· TIME 时间
change a table definition (ALTER TABLE) 更改表定义(ALTER TABLE)
add a primary key to a table (PRIMARY KEY (field)) 给表添加主键(PRIMARY KEY(field))
add a foreign key to a table (FOREIGN KEY (field) REFERENCES Table (Field)) 给表添加外键(FOREIGN KEY(field) REFERENCES Table(Field))
- Data Definition Language (DDL) 的例子如下:
CREATE DATABASE 数据库名; //创建数据库
CREATE TABLE 表名 ( //创建表,后面跟上属性和数据类型
字段名 数据类型,
字段名 数据类型,…);
ALTER TABLE 表名 ADD PRIMARY KEY (字段名); //添加主键
ALTER TABLE 表名 ADD FOREIGN KEY (字段名) REFERENCES 表名(字段名); //添加外键,并与另外的表内主键连接
- 注意:命令语句以“;”结尾,可以跨行,不区分大小写(为阅读方便,关键字采用全大写)。命令中间以”,”分隔。
- 注意:定义属性时,必须同时指定数据类型。
- 常见的数据类型:
- CHARACTER:字符型。
- VARCHAR(n):字符串型,可容纳n个字符。
- BOOLEAN:布尔型,TRUE或FALSE。
- INTEGER:整型,整数。
- REAL:实数型。
- DATE:日期型。
- TIME:时间型。
8.3.5 Write an SQL script to query or modify data (DML) which are stored in (at most two) database tables 编写 SQL 脚本来查询或修改存储在(最多两个)数据库表中的数据(DML)
Queries including SELECT... FROM, WHERE, ORDER BY, GROUP BY, INNER JOIN, SUM, COUNT, AVG 查询包括SELECT... FROM, WHERE, ORDER BY, GROUP BY, INNER JOIN, SUM, COUNT, AVG
Data maintenance including. INSERT INTO, DELETE FROM, UPDATE 数据维护包括。插入、删除、更新
- Insertion of data:插入数据。常见的插入方式包括以下两种:
- 已知属性顺序和数据类型时:直接按照属性和数据类型,输入相应的值。
INSERT INTO 表名 (值, 值,…);
- 不确定属性顺序或寻求稳妥时:先列出要添加的属性,然后赋值。
INSERT INTO 表名 (字段名, 字段名,…)
VALUES (值, 值,…); //值和上面的字段顺序保持一致
- Query:查询。常见的执行方式包括以下几种:
- 最简单的字段查询:直接点明需要的字段名,从表中提取。字段名之间用“,”隔开。
SELECT 字段名, 字段名…
FROM 表名;
- 全部字段查询:使用“*”表示全部字段,从表中提取。
SELECT * FROM 表名;
- 带排序命令的字段查询:在上述简单查询语句的基础上增加“ORDER BY+字段名”的命令,按照指出的字段名对数据进行排序。
SELECT 字段名, 字段名…
FROM 表名
ORDER BY 字段名; //按照该字段名进行排序
- 排除重复数据显示命令的查询:在上述简单查询语句的基础上增加“GROUP BY+字段名”的命令,按照字段值不重复的原则显示数据。
SELECT 字段名…
FROM 表名
GROUP BY 字段名; //按照该字段进行分组输出,该字段数值不会重复
- 带筛选命令的字段查询:在上述简单查询语句的基础上增加“WHERE+筛选条件”的命令,按照筛选条件显示数据。
SELECT 字段名…
FROM 表名
WHERE 筛选条件; //只显示满足筛选条件的数据
- 带函数运算的字段查询:对要查询的字段中的值进行函数运算,并显示结果。
SELECT Count(*)
FROM Band; //计算记录条数,“*”表示连空行也计入
SELECT AVG(字段名)
FROM Band; //计算指定字段的值的平均数
SELECT SUM(字段名)
FROM Band; //计算指定字段的值的总和
- 带Join condition联合条件筛选命令的字段查询:在筛选命令中使用来自不同表的字段中的值,并按照筛选条件显示数据。
SELECT 字段名, 字段名…
FROM 表名
WHERE 表1.字段名 = 表2.字段名; //表名和字段名之间用“.”连接
【部分数据库要求使用以下代码:】
SELECT 字段名, 字段名…
FROM 表1名
INNER JOIN 表2名 //使用INNER JOIN命令引入表2
ON 表1.字段名 = 表2.字段名;
- Modify the data:修改数据。常见的执行方式如下:
UPDATE 表名
SET 要修改的字段名 = 新值
WHERE 筛选条件; //如果要全部修改,则无需筛选条件
- Delete the data:删除数据。常见的执行方式如下:
DELETE FROM 表名
WHERE 要删除的字段名 = 值; //删除顺序应由小范围表到大范围表,如果外键提前删除则会报错