数据库分析和设计
表复制一遍参加查询。
– 视为单独的表,临时。
2019/9/19
36
Group by
• 进行分组集合运算
2019/9/19
37
Having, Where
• Where 决定哪些元组被选择参加运算,作 用于关系中的元组
• Having 决定哪些分组符合要求,作用于分 组
2019/9/19
38
• 排序
• Log
– 写入数据库文件前,先写日志。在日志中保留 恢复信息。
– 在数据库文件写成功后,在日志中标记。 – 检查日志。没有成功的写入应该尝试再写或者
放弃。
2019/9/19
48
日志格式
• 每条日志记录的内容
– 事务标识 – 操作类型(插入、删除或修改) – 操作对象(记录ID、Block NO.) – 更新前数据的旧值(对插入操作而言,此项为
• Where (Field1=‘张三’ and Field2=2) or Field1=‘李 四’
• 筛选条件
– Like – Between And – >,>=,<,<=,=
2019/9/19
31
Join, On
竖着连接表,按一定条件 • Table1 join Table2 on
Table1.Field1=Table2.Field1
From Table1 Where … Union Select Field1,… From Table2 Where
2019/9/19
34
部门
人员
季 度
销售收 入
销售1部 张三 1 300000
销售1部 张三 2 560012
销售1部 张三 3 62000
销售1部 张三 4 329910 0
销售2部 李四 2
2019/9/19
账号 名称 密码 学生 1a11 2b22 3c31
课程 名称 1 电商 2 信息 3…
9
Entity Relation
学生1
账号1 张三
2019/9/19
10
关系种类:
• 1:n • n:m
– 学生和课程
学号 课程 11 12 32
2019/9/19
学号 姓名 性别 1 张三 男 2 李四 女 3
2019/9/19
25
关系型数据库的数据操作
• DBMS完成。 • RDBMS支持查询语言SQL • SQL=Structured Query Language
– 是一个语言规范。DBMS一般支持该规范,并 有自己的扩展。
– 查询和操作:增删改查
2019/9/19
26
SQL的组成(分类)
DATABASE
• 记录没有顺序。
– 查询语言可以按字段排序。
• 删除记录
– 取决于DBMS
• 一般作标记,重用空间。 • 可以压缩表。但DBMS一般不自动进行。
• 增加记录
– 删除记录或最后
• 更新记录
– 定位到记录字段,覆盖。
2019/9/19
14
约束和触发器
• 字段
– 取值范围
• 某个记录必须符合某个范畴。 • 更复杂的约束需要触发器。
2019/9/19
51
数据库软件
• 这些软件都支持SQL,并扩展。
电子商数务据 系统软硬件环境
表 现 层
业
务
经 营
业 务
控 业制 务
支 持
控 制
层
用
户
控
制
数 据 层
商务系统B/S;C/S
邮箱
域名
分布式软件系统(B/S;C/S. P2P)
2019/9/19
数据
2
数据层
用户 使用
频
道
经营
数据发布程序 开发人员维护
数据库
内容输入界面 开发人员维护
价值实现层 业务经营层 逻辑控制层 数据资源层
2019/9/19
41
查询的图形化-QBE
2019/9/19
42
查询的图形化
2019/9/19
43
权限管理语言的图形化
2019/9/19
44
电子商务系统中对SQL的调用
• DBMS可以批处理SQL语句。 • 电子商务系统调用SQL
– 效率更高 – 安全,保持数据完整性。 – 支持事务。
2019/9/19
• 文件系统
– 没有封装;没有事务处理;没有故障恢复。
• 数据库
2019/9/19
7
DBMS的分类
• 网络型/层次型 • 关系型 • 扩展
– 面向对象 – 模糊数据 – 多媒体数据库 – 网络文件管理
2019/9/19
8
关系型数据库
• 数据存储在表中 学号 姓名 性别 1 张三 男 2 李四 女 3
3780
销售2部 王五 2 328999
销售2部 王五 3 221411 1
销售2部 王五 4 234999 9
销售1部 张三 1
2425
销售1部 张三 2
3566
销售1部 张三 3 134213
销售1部 张三 4
233
销售2部 王五 4
2342
交叉表查询
TRANSFORM Sum(销售收入) AS 销售收 入之总计
• 插入异常:
假设要开设一门新的课程,暂时还没有人选修。这样,由于还没 有“学号”关键字,课程名称和学分也无法记录入数据库。
• 删除异常:
假设一批学生撤销某些课程的选修,这些选修记录就应该从数据 库表中删除。但是,与此同时,课程名称和学分信息也被删除了。很 显然,这也会导致插入异常。
2019/9/19
SELECT 部门, 人员 FROM 销售 GROUP BY 部门, 人员 PIVOT 季度;
部门 销售1部 销售2部
人员 张三 李四
1 302425
2 563578
3780
3 196213
4 3299333
销售2部 王五
328999 2214111 2352341
2019/9/19
35
as
• 字段别名和表别名 • 表别名允许给表另起一个名字,相当于将
课程 名称 1 电商 2 信息 3…
11
关系型数据库的优点
• 记录等长
– 检索快。
• 例如:总记录个数。 • 某个字段值
2019/9/19
12
基本词汇
•表
– 字段 – 记录
• 字段 • 关键字段 • 记录 • 记录的字段值 • 关系
– 定义某个表中某字段的值取自另外一个表
2019/9/19
13
记录的增加删除更新
– Null的运算
2019/9/19
17
关系型数据库的范式
• 第一范式:
– 字段的原子性。要么视 为原子。要么应该再分。
– 否则不便查询。
字段1 字段2
字段3
字段4
字段3.1 字段3.2
2019/9/19
18
第二范式
• 非关键字段完全函数依赖于关键字段。
– 函数依赖
• y=f(x); 不能说y=f(x)附近。
– Desc – Asc
Order By
2019/9/19
39
In,Exists
SELECT FROM … WHERE S# IN ( SELECT S# FROM Student WHERE Course = ‘C1’ );
2019/9/19
40
In, Exists
SELECT SN FROM S WHERE EXISTS ( SELECT * FROM SC WHERE S.S#=SC.S# AND C#=‘C1’ );
Select …
2019/9/19
28
更新
• Update Table1
Set Field1=…, Field2=… Where …
2019/9/19
29
删除
• Delete Table1
Where…
2019/9/19
30
Select, Where
• 筛选记录
– Select Field1, Field4 from Table1
• Isolation
• 一个事务的执行不能被其他事务干扰。并发执行的各 个事务之间不能互相干扰。
• Durability
• 一个事务一旦提交,它对数据库中数据的改变就应该 是永久性的。
2019/9/19
47
故障恢复
• 出现异常。造成事务中断。比如断电。
– 此时数据可能不一致。 – 单独的数据库文件难于解决该问题。
数据库分析与设计
王有天 湖北经济学院
…… 4 3 2 1
市场
界面
业 务 流 程
业 务 流 程
业 务 流 程
业 务 流 程
现金流 物流 信息流
…
权限管理程序
用 用 用 用 用用 用 用 用 用 户 户 户 户 户户 户 户 户 户
用户管理程序 业务处理指令,往往体现为SQL的批处理。
数据处理指令:比如SQL。 数据库管理程序
空值) – 更新后数据的新值(对删除操作而言, 此项为
空值)
2019/9/19
49
故障恢复
• 系统重启时,
– 如果日志完整,向前继续执行事务 – 如果日志不完整,撤销该事务。
2019/9/19
50
数据库软件
• 一般是关系型的
– 文件型
• Access
– 没有日志。
– 服务
• Oracle • Ms Sql Server • MySQL