A-level 计算机 2009/CIE/理论基础/数据库和数据建模
外观
- 数据存储在离散的文件中,存储在计算机上,并且可以被用户访问、更改或删除。
- 对文件组织/结构没有强制控制
- 数据在不同的文件中重复;手动更改每个文件
- 排序必须手动完成或必须编写程序
- 数据可能采用不同的格式;难以查找和使用
- 无法实现多用户;混乱
- 安全措施不完善;用户可以访问所有内容
- 数据库:非冗余的相互关联数据的集合
- DBMS:允许定义、构建和操作数据库的软件程序
- 数据管理:数据存储在关系数据库中 - 表存储在辅助存储器中
- 数据字典包含
- 数据库中所有文件的列表
- 每个文件中的记录数
- 每个字段的名称和类型
- 数据建模:分析数据库中使用的数据对象,识别它们之间的关系
- 逻辑模式:整个数据库的总体视图,包括:实体、属性和关系
- 数据完整性:更改时将整个块复制到用户的区域,完成后保存回数据库
- 数据安全:处理密码分配和验证,自动备份数据库,通过个人或用户组的访问权限控制特定用户的视图
- 以独占模式打开整个数据库 - 对多个用户来说不切实际
- 锁定正在修改的表中的所有记录 - 一个用户更改一个表,其他用户只能读取表
- 锁定当前正在编辑的记录 - 当某人更改某些内容时,其他人只能读取该记录
- 用户指定不锁定 - 软件会警告用户有同时更改,手动解决
- 死锁:2 个锁同时出现,DBMS 必须识别,1 个用户必须中止任务
- 开发者接口:允许在 SQL 中而不是以图形方式创建和操作数据库
- 查询处理器:处理高级查询。它解析、验证、优化并编译或解释查询,从而生成查询计划。
- 实体:可以明确识别的对象/事件
- 表:包含一组相关实体,以行和列的形式,称为实体集
- 元组:关系中的一行或一条记录
- 属性:关系中的一个字段或列
- 主键:属性或属性组合,用于唯一地定义关系中的每个元组
- 候选键:可以作为主键的属性
- 外键:属性或属性组合,用于关联 2 个不同的表
- 参照完整性:防止用户或应用程序输入不一致的数据
- 次要键:未选为主键的候选键
- 索引:在属性上创建次要键,以便在该属性上搜索时提供快速访问;当表数据更改时,必须更新索引数据
- 从同一表中消除重复的列。
- 为每组相关数据创建单独的表,并使用唯一的列或列集(主键)标识每一行
- 没有复合主键。这意味着主键不能细分为独立的逻辑实体。
- 当且仅当一行满足第一范式且每个非键属性完全依赖于键时,该行才处于第二范式。
- 2NF 通过将依赖于整个键的字段放到与依赖于部分键的字段不同的表中,来消除对部分键的功能依赖。
- 通过将它们放入单独的表中,消除了对非键字段的功能依赖。在此级别,所有非键字段都依赖于主键。
- 当且仅当一行满足第二范式,并且不有助于描述主键的属性被移到一个单独的表中时,该行才处于第三范式。例如,创建查找表。
使用这种语言创建/修改数据库结构 - 用 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)
使用此语言(以 SQL 编写)查询和维护数据
- 创建查询
SELECT <field-name> FROM <table-name> WHERE <search-condition>
= | 等于 |
> | 大于 |
< | 小于 |
>= | 大于或等于 |
<= | 小于或等于 |
<> | 不等于 |
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>