跳转到内容

A-level 计算机/CIE/理论基础/数据库和数据建模

来自 Wikibooks,开放世界中的开放书籍

文件系统

[编辑 | 编辑源代码]
  • 数据存储在离散的文件中,存储在计算机上,并且用户可以访问、更改或删除这些文件。

文件系统的缺点

[编辑 | 编辑源代码]
  • 无法对文件的组织/结构进行强制控制
  • 数据在不同的文件中重复;必须手动更改每个文件
  • 必须手动排序或必须编写程序才能排序
  • 数据可能采用不同的格式;难以查找和使用
  • 无法实现多用户;混乱
  • 安全性不完善;用户可以访问所有内容

数据库管理系统 (DBMS)

[编辑 | 编辑源代码]
  • 数据库:非冗余的相互关联数据的集合
  • DBMS:允许定义、构建和操作数据库的软件程序

DBMS 的特征

[编辑 | 编辑源代码]
  • 数据管理:数据存储在关系数据库中 - 表存储在辅助存储器中
  • 数据字典包含
    • 数据库中所有文件的列表
    • 每个文件中的记录数
    • 每个字段的名称和类型
  • 数据建模:分析数据库中使用的数据对象,识别它们之间的关系
  • 逻辑模式:整个数据库的总体视图,包括:实体、属性和关系
  • 数据完整性:在更改时将整个块复制到用户的区域,完成后保存回
  • 数据安全:处理密码分配和验证,自动备份数据库,通过个人或用户组的访问权限控制某些用户可以查看的内容

数据更改冲突解决方案

[编辑 | 编辑源代码]
  • 以独占模式打开整个数据库 - 在多个用户的情况下不切实际
  • 锁定正在修改的表中的所有记录 - 一个用户更改表,其他用户只能读取表
  • 锁定当前正在编辑的记录 - 当某人更改某些内容时,其他人只能读取记录
  • 用户指定不锁定 - 软件会警告用户同时更改,手动解决
  • 死锁:同时进行 2 次锁定,DBMS 必须识别,1 个用户必须中止任务

DBMS 中的工具

[编辑 | 编辑源代码]
  • 开发人员接口:允许以 SQL 而不是图形方式创建和操作数据库
  • 查询处理器:处理高级查询。它解析、验证、优化和编译或解释查询,从而产生查询计划。它允许用户输入搜索条件,并返回/查找与搜索条件匹配的数据。

关系数据库建模

[编辑 | 编辑源代码]
  • 实体:可以明确识别的对象/事件
  • 表:包含一组相关的实体,以行和列的形式表示,称为实体集
  • 元组:关系中的一行或一条记录
  • 属性:关系中的一个字段或列
  • 主键:唯一定义关系中每个元组的属性或属性组合
  • 候选键:可能成为主键的属性
  • 外键:关联两个不同表的属性或属性组合
  • 参照完整性:防止用户或应用程序输入不一致的数据
  • 次要键:未选为主键的候选键
  • 索引:在属性上创建次要键,以便在搜索该属性时提供快速访问;当表数据更改时,必须更新索引数据。

系统的关系设计

[编辑 | 编辑源代码]

规范化

[编辑 | 编辑源代码]

第一范式 (1NF)

[编辑 | 编辑源代码]
  • 消除同一表中的重复列。
  • 为每一组相关数据创建单独的表,并使用唯一的列或列集(主键)标识每一行

第二范式 (2NF)

[编辑 | 编辑源代码]
  • 没有复合主键。这意味着主键不能细分为单独的逻辑实体。
  • 当且仅当某一行处于第一范式并且每个非键属性完全依赖于键时,该行才处于第二范式。
  • 2NF 通过将字段放在与依赖于整个键的字段不同的表中来消除对部分键的功能依赖性。

第三范式 (3NF)

[编辑 | 编辑源代码]
  • 通过将非键字段上的函数依赖项放入单独的表中来消除它们。在此级别,所有非键字段都依赖于主键。
  • 当且仅当一行处于第二范式并且不有助于描述主键的属性被移动到单独的表中时,该行才处于第三范式。例如,创建查找表。

数据定义语言 (DDL)

[编辑 | 编辑源代码]

使用此语言创建/修改数据库结构 - 用 SQL 编写

  • 创建数据库
CREATE DATBASE <database-name>
  • 创建表
CREATE TABLE <table-name> (…)
  • 更改表
ALTER TABLE <table-name>
ADD <field-name><data-type>
  • 添加主键
PRIMARY KEY (field)
  • 添加外键
FOREIGN KEY (field) REFERENCES <table>(field)

数据操纵语言 (DML)

[编辑 | 编辑源代码]

使用此语言查询和维护数据 – 用 SQL 编写

  • 创建查询
SELECT <field-name> 
FROM <table-name> 
WHERE <search-condition>

SQL 运算符

[编辑 | 编辑源代码]
= 等于
> 大于
< 小于
>= 大于或等于
<= 小于或等于
<> 不等于
IS NULL 检查空值
  • 按升序排序
 ORDER BY <field-name> 
  • 将相同的数据整理成组
 GROUP BY <field-name> 
  • 将不同表的字段连接在一起
 INNER JOIN
  • 向表中添加数据
INSERT INTO <table-name>(field1, field2, field3) 
VALUES (value1, value2, value3)
  • 删除记录
DELETE FROM <table-name> 
WHERE <condition>
  • 更新表中的字段
UPDATE <table-name> 
SET <field-name> = <value> 
WHERE <condition>
华夏公益教科书