《数据库系统原理课程设计.doc》由会员分享,可在线阅读,更多相关《数据库系统原理课程设计.doc(17页珍藏版)》请在三一办公上搜索。
1、精选优质文档-倾情为你奉上数据库原理及应用课程设计 小组名称: 324数据库设计组 数据库名称: 外卖订餐信息管理 参与人员姓名:xxx 学号 xxx完 成 时 间: 2018-6-23 指 导 老 师: xxx 专心-专注-专业数据库需求分析1.1背景 预计互联网餐饮外卖市场在未来三年内仍将维持增长的态势,但同比增速将有所下降。预计2019年中国互联网餐饮外卖市场交易规模将达到3378亿元人民币,外卖订单信息的管理系统使外卖平台更高效,更智能,为外卖的发展注入动力,所以发展外卖订单管理系统很有必要。功能要求实现日常外卖订餐信息存取,保证数据的正确性该外卖信息管理系统,实现简单的用户数据查询、
2、修改、增添数据记录等操作。(一) 学生查询 1、用户信息修改 修改选中当前学生的信息。 2、用户信息的添加 增加新学生的信息。 3、用户信息删除 删除选中当前学生信息。(二) 订单查询1、订单信息查询实现对课程名、学时、学分的修改。2、课程添加 对一门新开设的课程进行录入,并存入数据库。3、 课程删除对一门不在开设的课程进行删除,并从数据库中删除。(三) 商户查询1、 商户信息修改先选中要修改的商家信息,然后进行修改。2、 商家添加直接弹出添加对话框,然后进行添加。3、 商家信息删除先选中要删除的成绩信息,然后直接删除。数据流图商家信息存储商家信息管理提交店名 商家信息用户信息存储用户信息管理
3、提交用户ID用户信息管理员订单订单信息存储提交订单编号订单信息骑手信息存储送餐员提交姓名骑手信息数据字典数据字典商家数据项含义数据类型长度取值范围S_name商家名char20S_loc位置char40S_tel联系电话char20送餐员数据项含义数据类型长度取值范围P_name骑手姓名char20P_tel联系电话char20用户数据项含义数据类型长度取值范围U_name用户名char20UIDIDchar20U_tel联系电话char20U_loc地理位置char20订单数据项含义数据类型长度取值范围O_num订单号char20O_time下单时间char20UID用户IDchar20S_
4、name店名char20P_name骑手姓名char20Money金额char20数据字典数据项名:users 描述:包括用户的主要信息别名:无定义:UID+ U_tel + U_name+ U_loc数据量:1000000左右峰值:随时,平台推广期容易出现峰值其他说明:在系统功能扩充时可能增加定义项数据项名:shop 描述:包括商家的主要信息别名:无定义:Sname + S_tel + S_loc + 出生日期 + 入学年月数据量:10000左右峰值:随时, 其他说明:在系统功能扩充时可能增加定义项2.数据库概念结构设计3.1 E-R图首先分析学生成绩管理系统的用户要求,找出该系统应该包括的
5、实体。最终,确定系统的实体是用户、商家、订单和骑手。接着,我们分析这些实体之间的关联关系。从实际情况得知,一个用户可以对应多个订单,订单只能对应一个用户。一家店对应多个用户,一个用户对应多个商家。根据上述分析,我们得到如图所示的实体关系图。由需求分析的结果可知,本系统设计的实体包括:创建实体关系图* 实体:用户、商家、订单、骑手。* 实体属性定义:用户:ID、用户名、地址、联系电话订单:订单编号、用户ID、商家名、金额、骑手骑手:姓名、联系电话。 商家:商家名、地址、联系电话* 实体关系图: (1)学生基本信息:学号,姓名,性别,出生日期,地址,年龄,专业用户实体ID联系电话用户名地址(2)商
6、家基本信息:商家名、联系电话、地址商家基本信息实体地址电话店名 (3)订单基本信息:订单编号、用户ID、商家名、金额、骑手订单基本信息订单编号用户ID商家名金额骑手这些实体间的联系包括:每位学可以学习多门课程,每门课程可供多位学生学习3 数据库逻辑结构设计41将E-R图转换为关系模型 实体型转换为关系模式。实体的属性就是关系的属性,实体的码就是关系的码。对于实体间的联系则有以下不同的情况: 一个m:n联系转换为一个独立的关系模式。与该联系相联的个实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。 一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并
7、。如果转换为一个独立的关系模式,则与该联系相联的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。 一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。3个或3个以上实体间的一个多元联系可以转换为一个关系模式。与该多元联系相联的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合,具有相同的关系模式可合并。具体的基本ER图向关系模式的转化如下:(1)users(UID,U_name,U_loc,U_tel),其主关键字为UID;(2)shop(S_name,S_loc,S_tel),其中主关键字为课程号;(3)order
8、s(OID,UID,money , S_name , P_name)其中主关键字为OID。可以与学生关系模式合并为:学生(学号,姓名,性别,年龄,地址,系别,成绩,课程号)E-R图42 模型优化 关系模式学生,课程不存在非主属性对主属性的部分函数依赖,也不存在传递函数依赖,已经达到了3NF。4.逻辑结构设计将E-R图转换为关系模型 实体型转换为关系模式。实体的属性就是关系的属性,实体的码就是关系的码。对于实体间的联系则有以下不同的情况: 一个m:n联系转换为一个独立的关系模式。与该联系相联的个实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。 一个1:n联系可以转换为一
9、个独立的关系模式,也可以与n端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相联的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。 一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。3个或3个以上实体间的一个多元联系可以转换为一个关系模式。与该多元联系相联的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合,具有相同的关系模式可合并。具体的基本ER图向关系模式的转化如下:(1)用户(用户名,用户ID,电话,地址),其主关键字为用户ID;(2)商家(商家名,电话,地址),其中主关键字为商家名电话地址;(
10、3)订单(订单号,用户ID,金额,骑手,商家名)其中主关键字 为订单号(4)骑手(姓名,电话)模型优化 关系模式学生,课程不存在非主属性对主属性的部分函数依赖,也不存在传递函数依赖,已经达到了3NF。4 数据库物理结构设计1 建立数据表(1) users表的建立create table users(UID char(20) not null primary key,U_name char(20) not null,U_tel char(20) not null,U_loc char(20) default郑州);(2) shop表的建立 create table shop(S_name cha
11、r(20) not null primary key,S_loc char(20),S_tel char(20) not null);(3) oeders表的建立create table orders(OID char(20) not null primary key,UID char(20),S_name char(20),O_time char(20),Money char(20) check(Money0),P_name char(20)FOREIGN KEY (S_name) REFERENCES shop(S_name),FOREIGN KEY (UID) REFERENCES us
12、ers(UID);2 建立视图(1) 查询用户基本信息的视图定义如下:create view v1 asselect UID,U_name,U_tel,U_locfrom users;(2) 商户信息查询的视图定义如下:create view v2 asselect S_name,S_loc,S_telfrom shop(3) 成绩信息查询视图定义如下: CREATE VIEW Score_view(Course_no, Student_sno, Score float)ASSELECT *FROM Score3 建立索引(1)为配送员 p表的配送员姓名建立索引create unique cl
13、ustered index index1on P(P_name);GO5 数据库操作代码部分5.1 数据库创建代码create database 外卖订餐管理on(name=外卖订餐管理_data,filename=D:外卖订餐数据库.mdf,size=5mb,maxsize=100mb,filegrowth=5%)log on(name=外卖订餐管理_log,filename=D:外卖订餐管理_log.ldf,size=5mb,filegrowth=5%)GO5.2 创建表代码()create table users(UID char(20) not null primary key,U_n
14、ame char(20) not null,U_tel char(20) not null,U_loc char(20) default郑州)create table shop(S_name char(20) not null primary key,S_loc char(20),S_tel char(20) not null)create table orders(OID char(20) not null primary key,UID char(20),S_name char(20),O_time char(20),Money char(20) check(Money0),P_name
15、char(20)FOREIGN KEY (S_name) REFERENCES shop(S_name),FOREIGN KEY (UID) REFERENCES users(UID)create table P(P_name char(20) not null ,P_tel char(20) not null,)GO5.3 数据库的查询操作代码5.4视图创建代码create view v1 asselect UID,U_name,U_tel,U_locfrom users;GOcreate view v2 asselect S_name,S_loc,S_telfrom shopGOcreat
16、e view v3 asselect OID,UIDfrom ordersGOcreate view v4 asselect P_name,P_telfrom PGO6 系统规范化设计6.1 数据库表的规范化设计(你设计的表都满足第几范式)三范式无部分函数依赖和传递函数依赖6.2 数据库的完整性设计(你创建了哪些约束和触发器,要有触发器的代码)触发器保证订单表数据更新与用户表数据一致Create Trigger trusers on users for Update As if Update(UID) begin Update orders Set UID=i.UID -更新订单UID Fro
17、m orders od , Deleted d ,Inserted i -Deleted和Inserted临时表 Where od.UID=d.UID -限定更新行 end GO6.3 数据库的维护和安全性设计(你设置了哪些用户,他们的权限是怎样的)登陆账号ypf下用户y1 赋予users表alter select权限y2 赋予shop表select权限登陆账号mg用户 m1 赋予对orders表所有权限7 总结7.1 收获在设计过程中,对数据库在宏观层面的理解更进一步,也有了一定的设计数据库解决实际问题的能力,同时整体上对数据的存储读写有了更好的把握。也更加熟悉数据库基本语句的使用。7.2 不足和改进前期设计比较仓促,表设计不够合理,以至于后期需要改,困难且工作量较大。自己基本sql语句不够熟练,耗时很长。