简单数据库设计流程
- 格式:docx
- 大小:94.63 KB
- 文档页数:9
1、一个客户可以有多个订单
2、一个订单可以订多种产品
根据上述的约定,可以得到客户、订单、产品的局部E-R图。
(2)集合各局部E-R模型,形成全局E-R模型。
(三)
逻辑设计
1.初始关系模式设计。
客户和订单两关系模式合并
客户(客户号,客户名,客户地址)
订单(订单号,订购日期,订购数量,客户号)
5.通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能。
(五)数据库实施
创建数据库
Create database guanli;
创建表
根据数据字典创建表,create table name ……
简单
查询
选择:select * from table1 where 范围
插入:insert into table1(field1,field2) values(value1,value2)
创建存储函数的基本形式如下:
CREATE FUNCTION sp_name ([func_parameter[,...]]) RETURNS type [characteristic ...] routine_body
触发器
-- 触发器语句格式
create trigger tr_order -- 创建监听器,监听名
订单管理系统数据库项目设计
小组成员
学号
姓名
年 月
设计
目的
通过设计订单管理系统数据库项目,使学生熟悉数据库设计流程,完成简单的数据库使用。
设计
要求
1.严格按数据库设计进行;
2.按要求完成设计文档;
3.在window系统下使用MySQL完成;
4.考虑功能性需求、一致性需求、完整性需求、安全性需求。
设计内容
where age > ( select age
from person
where name = '张三');
数据
更新
更新数据,即对表中存在的数据进行修改。
SQL语句:
UPDATE 语句
基本语法:
UPDATE 表名
SET 字段名1=值1[,字段名2=值2,...]
[WHERE 条件表达式]
语法说明:
字段名1,字段名2,用于指定更新的字段名称
B:right (outer) join:
右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
C:full/cross (outer) join:
全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
嵌套
查询
简单子查询
select name,age
from person
5.可以在优化隐藏中,使用索引
6.使用查询处理器执行SQL语句,在一个表上,一次只能使用一个索引
二、索引的优点
1.创建唯一性索引,保证数据库表中每一行数据的唯一性
2.大大加快数据的检索速度,这也是创建索引的最主要的原因
3.加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
4.在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
其中客户号、订单号、产品号是数字型,客户名、产品名是字符
(3) 谁使用数据,如何使用?
客户购买商品时需要使用产品的数据
管理人员对订单信息进行查看、记录、保存
(4) 数据是否经常修改,如何修改和什么时候修改?
会
产品的增加减少,对各个产品的描述改变
客户下订单时,订单信息的生成
新客户被记录信息
(5) 某个数据是否依赖于另一个数据或被其他数据引用?
客户名、客户地址依赖于客户号
产品价格、产品日期、产品号
订购数量、订购日期、订单号
(6) 某个信息是否要唯一?
订单号、客户号、产品号、客户姓名等需要唯一
(7) 哪些数据是组织内部的和哪些是外部数据?
内部:客户号、客户名、客户地址
外部:订单号、产品号、产品名、产品价格价格
(8) 哪些业务活动与数据有关,数据如何支持业务活动?
客户:
F={客户号→客户名,客户号→客户地址}
该关系模式的码为客户号,不存在非主属性对码的部分函数依赖,因此该关系模式达到2NF。
订单:
F={(订单号,客户号)→订购数量,(订单号,客户号)→订购日期}
该关系模式的码为(订单号,客户号),不存在非主属性对码的部分函数依赖,因此该关系模式达到2NF。
产品:
总数:select count as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1
连接
查询
说明:使用外连接
A、left (outer) join:
左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
订单和产品两关系模式合并
订单(订单号,订购日期,订购数量,客户号)
产品(产品号,产品名,产品价格)
订购(订单号,产品号)
2.关系模式规范化。
第一步,判断关系模式是否符合1NF要求:分析每个关系模式的所有属性,都是小数据项,因此满足1NF的要求。
第二步,判断关系模式是否符合2NF要求:
关系模式函数依赖集:
1.备份:使用mysqldump命令进行备份
Mysqldump -u user -h host -ppassword daname>
2.还原:使用mysql命令进行还原
Mysql -u user -p dbname<
访问日志管理
(七)总结
优点
不足
完善的设想
订单(订单号,订购日期,订购数量,客户号)
产品(产品号,产品名,产品价格)
订购(订单号,产品号)
(四)
物理设计
关系存取方法的选择
选择索引存取方法:
一、索引的特点
1.索引可以加快数据库的检索速度
2.索引降低了数据库插入、修改、删除等维护任务的速度
3.索引创建在表上,不能创建在视图上
4.索引既可以直接创建,也可以间接创建
(一)需求分析
1.数据收集
(1) 有多少数据,数据的来源在哪里,是否有已存在的数据资源?
客户:客户号、客户名、客户地址
产品:产品号、产品价格、产品日期
订单:订单号、订购数量、订购日期
数据来源于各个方面形成的信息
(2) 必须保存哪些数据,数据是字符、数字或日期?
必须保存客户号、订单号、产品号、客户名、产品名
值1,值2,用于表示字段更新的新数据。
where条件表达式,可选参数,用于指定更新数据需要满足的条件。
视图
创建视图的语句
CREATE [OR REPLACE] [ALGORITHM={UNDEFIEND | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
before/after -- 什么时间进行监听,在发生什么行为之前或之后
insert/update/delete -- 对什么行为进行监听,如:添加、修改、删除行为
for each row -- 对每一行的行为都进行监听
begin
`sql语句操作命令`
end
游标及事务
(六)数据库管理
数据库的数据备份与还原
F={产品号→产品名,产品号→产品价格}
该关系模式的码为产品号,不存在非主属性对码的部分函数依赖,因此该关系模式达到2NF。
第三步,判断关系模式是否符合3NF要求:
经过查看第二步之后的所有表,每个表中的所有非主属性都只依赖于码,因此满足3NF
经过分析、设计、判断,得到最终关系模式如下:
客户(客户号,客户名,客户地址)
优惠活动(买送,折扣)
根据数据进行分析决定活动对象及其力度和方式
(9) 数据访问的频度和增长的幅度如何?
根据当天产品变化、及客户变化而定
(10) 谁可以访问数据,如何保护数据。
管理人员可以访问数据、服务人员也可以访问数据
有专门维护人员
(11)其他
无
2.数据流图
3数据字典
Kehu表的结构
字段名称
数据类型
AS SELECT_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
存储过程和函数
创建存储过程的基本形式如下:
CREATE PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic ...] routine_body
字段名称
数据类型
长度
小数位数
是否允许NULL值
说明
Cno
char
8
否
主码
Cdate
date
是
Cprice
char
4
是
(二)概念设计
1.设计方法:混合策略
2.步骤:
(1)进行数据抽象,设计局部E-R模型。
有如下实体:
客户:客户号、客户名、客户地址
产品:产品号、产品价格、产品日期