简单数据库设计流程

  • 格式: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模型。
有如下实体:
客户:客户号、客户名、客户地址
产品:产品号、产品价格、产品日期