《SQLserver数据库》课程设计范例_第1页
《SQLserver数据库》课程设计范例_第2页
《SQLserver数据库》课程设计范例_第3页
《SQLserver数据库》课程设计范例_第4页
《SQLserver数据库》课程设计范例_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 概述1.1课题简介书店书目书种繁多,来源多样,购买者众多,图书信息、供应商信息、客户信息、销售 信息庞大, 不易管理。因此,很有必要创建一个小型书店管理系统,以便于书店对图书的管 理。1.2设计目的应用对数据库系统原理的理论学习, 通过上机实践的方式将理论知识与实践更好的结合 起来,巩固所学知识。数据库应用 课程实践:实践和巩固在课堂教学中学习有关知识,熟练掌握对于给定结 构的数据库的创建、基本操作、程序系统的建立和调试以及系统评价。数据库原理 软件设计实践:实践和巩固在课堂教学中学习的关于关系数据库原理的有 关知识和数据库系统的建立方法, 熟练掌握对于给定实际问题, 为了建立一个关系数据

2、库信 息管理系统, 必须得经过系统调研、 需求分析、 概念设计、 逻辑设计、 物理设计、 系统调试、 维护以及系统评价的一般过程,为毕业设计打下基础。1.3设计内容运用基于 E-R 模型的数据库设计方法和关系规范化理论做指导完成从系统的分析到设 计直至系统的最终实现,开发小型书店管理系统,完成小型书店管理系统的全部功能。首先做好需求分析,并完成数据流图和数据字典。其次做概念分析,利用实体联系的方法将需求分析的用户需求抽象为信息结构,得到 E-R 图。然后就是逻辑结构设计,将 E-R 图转换为计算机系统所支持的逻辑模型2 需求分析2.1功能分析首先,建立一些基本表(尽可能满足 3N ,对大部分基

3、本信息组合、存储;其次通过 建立视图实现对冗余数据的有必要保留 (查询并计算基本表属性得到新的作为视图属性 并 实现对以下基本信息的显示。图书信息:图书名称、订购数量、订购时间、订购单价、金额、出版社名称、作者名称; 供应商名称等;供应商信息:供应商名称、地址、电话,联系人;客户信息:客户编号、名称、年龄、性别、累计购书金额等;销售信息:时间、销售名称、数量、销售单价、客户编号、客户名称、金额等。在此基础上进行以下目标查询, 由于有些查询常用且较复杂, 为了简化其应用, 所以将 它们定义为存储过程。查询当月书店销售金额、营业金额; (存储过程查询某种图书库存数量; (存储过程查询当月销量最好的

4、图书信息; (存储过程按供应商名称查询订购信息; (普通查询查询购买次数超过 3次的客户信息。 (普通查询接着根据需要建立触发器、存储过程、索引,实现对数据库的优化。最后,进行过程 功能的验证。允许具有权限者对数据库进行数据更新和查询等合法操作。数据流图用流程图来描述处理过程与数据的关系数据流图如下: 图 2,1 数据流图数据字典用数据字典来描述数据 数据字典如下:数据项: 数据结构: 概念结构设计概念结构设计的方法设计概念结构通常有四类方法:自顶向下,自底向上,逐渐扩张以及混合策略。本系统 采用的是自底向上的方法。 即首先定义全局的概念结构的框架, 然后逐步细化。 根据自顶向 下地进行需求分

5、析然后再自底向上地进行概念设计。概念结构设计的步骤第一步:抽象数据;第二步:设计局部 E-R 图;第三步:把各分 E-R 图综合成总体 E-R 图,消除各种冲突;第四步:对总体 E-R 图进行优化,消除冗余数据和冗余联系;抽象初步数据:(此处与优化后 E-R 图得出的实体联系属性 很有可能不同实体:图书、供应商、客户联系 :图书订购关系、图书销售关系图书与供应商的关系是多对一的关系;图书与客户的关系是多对一的关系。属性 :图书的属性:图书编号、图书名称、出版社名称、作者名称、供应商名称; 主码为图书编号供应商的属性:供应商名称、供应商地址、电话、联系人;主码为供应商名称客户的属性:客户编号、姓

6、名、性别、年龄;主码为客户编号图书订购关系属性:供应商名称、图书编号、订购时间、订购单价; 主码为供应商名称和图书编号图书销售关系属性:客户编号、图书编号、销售时间、销售单价;主码为客户编号和图书编号分 E-R 图:图书 E-R 图: 供应商 E-R 图: 客户 E-R 图: 初 E-R 图: 优化后的总 E-R 图: 逻辑设计阶段逻辑设计阶段:将系统 E-R 模型转换为关系模式,并对给出的关系模式进行关系规范 化处理(尽量满足 3NF ,得到系统全部的关系模式,并标明主键、外键此部分一律采用英 文命名。然后进行用户外模式的设计,针对中国用户,此处用中文命名。将 E R 模式转换为以下关系模式

7、:1 book(#bname, writer_name, press_name;主键:#bname2. everybook (# bno, #bname ;主键:#bno外键:#bname3 supplier (#supplier_name, address, telephone, contact ;主键:#supplier_name4 customer (#cno, cname, sex, age;主键:#cno5 book_order(#bname, #supplier_name, #order_time, order_price, order_count;主键:#bname, #supp

8、lier_name, #order_time6 book_sell(#bno, #cno, sell_time, sell_price;主键:#bno发现这六个关系模式 3N 都满足。因为元组中都是不可分割的数据,且所有非主属性完 全依赖其主码,且它的任何一个非主属性都不传递于任何主关键字。用户外模式设计:基本信息视图的建立:1. 单本销售情况(图书编号,图书名称客户编号,客户名称,销售单价,销售时间 ;2. 同种销售情况(书名,销售数量,销售金额 ;3. 客户信息(客户编号,客户名称、性别,年龄,累计购书金额 ;4. 供应商信息(供应商名称,地址,电话,联系人 ;5. 图书订购信息(图书名称

9、,供应商名称,订购时间,订购数量,订购单价,订购金额, 出版社名称,作者名称 ;物理设计阶段物理设计阶段:为一个逻辑数据模型选取一个最适合应用环境的物理结构 (存储结构与存取 方法 ,数据库的物理设计通常分为两步:A 、确定数据库的物理结构; B 、对物理结构进行 时间和空间效率评价。建立小型书店管理系统创建数据库 book_shop_management-创建小型书店管理系统create database book_shop_managementon primary (name ='book_shop_management',filename ='d:program

10、filesmicrosoft sql servermssql.1mssqldata book_shop_management.mdf',size =10mb ,maxsize =unlimited ,filegrowth =10%log on (name ='book_shop_management_log',filename ='d:program filesmicrosoft sqlservermssql.1mssqldatabook_shop_management_log.ldf',size =1mb ,maxsize =5mb ,filegrow

11、th =3%go截图得: 对各个基本表的建立(包括了各种完整性约束建立表 book-建立表 bookcreate table book(#bname varchar (30 primary key ,writer_name char (8,press_name char (12建立表 everybook-建立表 everybookcreate table everybook(#bno char (8 primary key ,#bname varchar (30 not nullconstraint fk_everybook_bname foreign key references book(

12、#bname建立表 supplier-建立表 suppliercreate table supplier(#supplier_name char (12 primary key ,address varchar (50not null,telephone char (7not null,contact char (8 not null建立表 customer-建立表 customercreate table customer(#cno char (8 primary key ,cname char (8not null,sex char (2,age int ,constraint ck_cu

13、stomer_sex check (sex in(' 男 ' , ' 女 ' 建立表 book_order-建立表 book_ordercreate table book_order(#bname varchar (30,#supplier_name char (12,#order_time datetime ,order_count int not null,order_price int not null,constraint pk_book_order primary key(#bname, #supplier_name, #order_time建立表 b

14、ook_sell-建立表 book_sellcreate table book_sell(#bno char (8 primary key ,#cno char (8 not null,sell_time datetime ,sell_price int 建立视图建立基本信息视图:11/22 6/30/2016建立单本销售情况视图-建立单本销售情况视图create view view_单本销售情况asselect book_sell. #bno as 图书编号 , #bname as 图书名称 ,book_sell. #cno as 客户编号 , cname as 客户名称 ,sell_tim

15、e as 销售时间 , sell_price as 销售单价from book_sell, customer , everybookwhere everybook. #bno=book_sell. #bnoand customer. #cno=book_sell. #cno建立同种销售情况视图-建立同种销售情况视图create view view_同种销售情况asselect 图书名称 as 书名 ,count (图书编号 as 销售数量 ,sum (销售单价 as 销售金额from view_单本销售情况group by 图书名称建立客户信息视图-建立客户信息情况create view vi

16、ew_客户信息select customer. #cno as 客户编号 ,cname as 客户名称 ,sex as 性别 ,age as 年龄 ,(select sum (sell_price from book_sellgroup by #cno as 累计购书金额from book_sell, customerwhere book_sell. #cno=customer . #cno建立供应商视图-建立供应商视图create view view_供应商信息asselect #supplier_name as 供应商名称 ,address as 地址 ,telephone as 电话 ,

17、12/22 6/30/2016contact as 联系人from supplier建立订购信息视图-建立订购信息视图create view view_图书订购信息asselect book_order. #bname as 图书名称 ,#supplier_name as 供应商名称 ,#order_time as 订购时间 ,order_price as 订购单价 ,order_count as 订购数量 ,(order_price*order_count as 订购金额 ,press_name as 出版社名称 ,writer_name as 作者名称from book, book_ord

18、erwhere book. #bname=book_order. #bname建立存储过程某种图书库存查询存储过程create procedure sp_某种图书库存查询-p1为要查询的图书名称p1 varchar (30asbeginselect 订购数 -销售数量 as 库存from (select sum (order_count as 订购数 , #bname as 书名from book_ordergroup by #bname as x, view_同种销售情况where x. 书名 =p1 and view_同种销售情况 . 书名 =p1endgo某段时间内的销售业绩查询存储过程

19、-建立本月业绩查询存储过程-由于不知其它信息,此处将销售金额与营业金额等同-营业金额 =营业额 =成本 +利润create procedure sp_查询某段时间内的业绩-p1为起始时间 ,p2为结束时间p1 datetime , p2 datetime13/22 6/30/2016asbeginselect sum (销售单价 as 销售金额 from view_单本销售情况where 销售时间 >=p1 and 销售时间 <=p2endgo某段时间内的销售最好图书信息查询存储过程-建立某段时间内销售最好图书信息查询存储过程create procedure sp_查询某段时间内销

20、售最好的图书信息p1 datetime , p2 datetimeasbeginselect #bname as 图书名称 ,writer_name as 作者名称 ,press_name as 出版社名称from (select 图书名称 as 书名 ,count (图书编号 as 销售数量from view_单本销售情况where 销售时间 >=p1and 销售时间 <=p2group by 图书名称 as x, bookwhere #bname=书名and 销售数量 >=all(select count (图书编号 from view_单本销售情况where 销售时间

21、>=p1and 销售时间 <=p2group by 图书名称 endgo建立触发器(另外 5个表也建立相应曾删改触发器,不过此 处从略,详情见附件源代码建立一个 customer 的操作审核表,并建立相关触发器,当向 customer 中插入、更新或删除 记录时,生成一条操作记录插入到该操作审核表中,内容包括客户编号、客户名称、操作方 式(插入 /更新 /删除和操作时间-建一个操作审核表create table customer_operate(客户编号 char (8not null,客户名称 char (8not null,操作方式 char (4not null,14/22

22、6/30/2016操作时间 datetime not null-建立相关触发器create trigger trigger_customer_inserton customerfor insertasbegindeclare p1 char (8, p2 char (8set p1=(select #cno from insertedset p2=(select cname from insertedprint 'insert:'select *from insertedinsert into customer_operate values (p1, p2, ' 插入

23、' , getdate (endgocreate trigger trigger_customer_deleteon customerfor deleteasbegindeclare p1 char (8, p2 char (8set p1=(select #cno from deletedset p2=(select cname from deletedprint 'deleted:'select *from deletedinsert into customer_operate values (p1, p2, ' 删除 ' , getdate (en

24、dgocreate trigger trigger_customer_updateon customerfor updateasbegindeclare p1 char (8, p2 char (8set p1=(select #cno from deletedset p2=(select cname from deletedprint 'inserted:'select *from insertedprint 'deleted:'select *from deletedinsert into customer_operate values (p1, p2, &

25、#39; 修改 ' , getdate (end15/22 6/30/2016go建立索引(由于数据库比较小,没有必要建立索引实现数据库(有附件源代码和该数据库源文件过程功能验证向基本表插入适量如下数据并显示基本表信息everybook book book_sell customer 16/22 6/30/2016 注:此处插入数据应当 book 在 everybook 之前插入数据(外键截图得: 17/22 6/30/201618/22 6/30/2016视图显示基本信息-用显示视图基本信息select * from view_单本销售情况 select * from view_供应

26、商信息 select * from view_客户信息 select * from view_同种销售信息 select * from view_图书订购信息截图得:19/22 6/30/2016 执行存储过程完成目标查询某种图书库存查询exec sp_某种图书库存查询 ' 烈火如歌 '本月业绩查询exec sp_查询某段时间内的业绩 '2013-7-1' , '2013-7-31'本月销售最好图书信息查询exec sp_查询某段时间内销售最好的图书信息 '2013-7-1' , '2013-7-31'截图得: 用普通查询完成目标查询(两次查询同时显示订购超 3次客户信息查询-订购超次客户信息查询select *from view_客户信息where 客户编号 =any(select #cno from book_sellgroup by #cnohaving count (*>3按供应商名称查询订购信息-按供应商名称查询订购信息select *from view_图书订购信息o

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论