《SQLserver数据库应用技术》期末课程设计 .docx
精品名师归纳总结作者有话要说:假如看了这份文档觉得有帮忙的亲,记得帮俺关注一下这个网址www qdmm com MMWeb 2886821 aspx,没事的时候点点就行的,更闲的时候留下些什么我更会感谢不尽的,就当作小小回报俺一下啦话说俺也是做了很久的,很累人的。感谢谢假如看了文档有帮忙却不帮俺的 话,就别怪俺在你背后画圈圈哦!SQL Sserver数据库技术期末课程设计报告设计题目:小型书店治理系统专业班级:运算机科学与技术学号: 2021070193姓名: 陈 丽可编辑资料 - - - 欢迎下载精品名师归纳总结目录概述 3课题简介 3设计目的 3设计内容 3需求分析 4功能分析 4数据流图 4数据字典 5概念结构设计6概念结构设计的方法6概念结构设计的步骤6抽象初步数据:(此处与优化后E-R 图得出的实体联系属性很有可能不同)7规律设计阶段 10将 E R 模式转换为以下关系模式: 10用户外模式设计: 11物理设计阶段 11建立小型书店治理系统 11对各个基本表的建立(包括了各种完整性约束)12建立视图 13建立储备过程 15建立触发器(另外5 个表也建立相应曾删改触发器,不过此处从略,详情见附件源代码) 16建立索引(由于数据库比较小,没有必要建立索引)18实现数据库(有附件源代码和该数据库源文件)18向基本表插入适量如下数据并显示基本表信息18视图显示基本信息20执行储备过程完成目标查询21用一般查询完成目标查询(两次查询同时显示)22总结 24可编辑资料 - - - 欢迎下载精品名师归纳总结概述课题简介书店书目书种繁多,来源多样,购买者众多,图书信息、供应商信息、客户信息、销售信息巨大,不易治理。因此,很有必要创建一个小型书店治理系统,以便于书店对图书的治理。经过三个多月的的学习,我们对运算机方面的学问有了很大的提升,本着理论联系实际的宗旨,通过李老师供应的这次软件技术实践的机会,在指导老师的帮忙下,历经二周时间,同学自行设计一个小型书店治理系统治理系统,在下面的文章中,我将以这个小型书店治理系统系统为例,谈谈其开发过程和所涉及到的问题。设计目的应用对数据库系统原理的理论学习,通过上机实践的方式将理论学问与实践更好的结合起来,巩固所学学问。数据库应用课程实践:实践和巩固在课堂教案中学习有关学问,娴熟把握对于给定结构的数据库的创建、基本操作、程序系统的建立和调试以及系统评判。数据库原理软件设计实践:实践和巩固在课堂教案中学习的关于关系数据库原理的有关学问和数据库系统的建立方法,娴熟把握对于给定实际问题,为了建立一个关系数据库信息治理系统,必需得经过系统调研、需求分析、概念设计、规律设计、物理设计、系统调 试、保护以及系统评判的一般过程,为毕业设计打下基础。设计内容运用基于 E-R 模型的数据库设计方法和关系规范化理论做指导完成从系统的分析到设计直至系统的最终实现,开发小型书店治理系统,完成小型书店治理系统的全部功能。第一做好需求分析,并完成数据流图和数据字典。其次做概念分析,利用实体联系的方法将需求分析的用户需求抽象为信息结构,得到E-R 图。然后就是规律结构设计,将E-R 图转换为运算机系统所支持的规律模型可编辑资料 - - - 欢迎下载精品名师归纳总结需求分析功能分析第一,建立一些基本表(尽可能满意3N ),对大部分基本信息组合、储备。其次通过建立视图实现对冗余数据的有必要保留(查询并运算基本表属性得到新的作为视图属性)并实现对以下基本信息的显示。图书信息:图书名称、订购数量、订购时间、订购单价、金额、出版社名称、作者名称。 供应商名称等。供应商信息:供应商名称、的址、电话,联系人。客户信息:客户编号、名称、年龄、性别、累计购书金额等。销售信息:时间、销售名称、数量、销售单价、客户编号、客户名称、金额等。在此基础上进行以下目标查询,由于有些查询常用且较复杂,为了简化其应用,所以将它们定义为储备过程。查询当月书店销售金额、营业金额。(储备过程)查询某种图书库存数量。(储备过程)查询当月销量最好的图书信息。(储备过程) 按供应商名称查询订购信息。(一般查询)查询购买次数超过3 次的客户信息。(一般查询)接着依据需要建立触发器、储备过程、索引,实现对数据库的优化。最终,进行过程功能的验证。答应具有权限者对数据库进行数据更新和查询等合法操作。数据流图用流程图来描述处理过程与数据的关系数据流图如下:图书目录文件购买信息文件出版社档案文件用户购买信息用户图书需求信息处理图书供应信息处理供应商供应信息供应商顾客购书档案文件购买供应汇总文件可编辑资料 - - - 欢迎下载精品名师归纳总结销售时间每本书的销售时间每本书的销售价格datetime销售单价int与图书编号和客户编号作为的主码直接关联数据字典用数据字典来描述数据数据字典如下:数据项:数据项名含义说明别名数据类型长度取值范畴取值含义与其他数据项 的规律关系图书编号唯独标识每本书char80000000099999999依据入库时间先后编号有时与客户编号作为主码图书名称唯独标识每种书书名varchar30有时与供应商组成主码作者名称每种书的作者姓名char8出版社名称每种书的出版社名称char12供应商名称唯独标识供应商char12的址供应商的的址varchar50电话供应商的电话char700000009999999通过联系人联系人书店与供应char8商进行沟通订购时间每种书的datetime应与图书称订购时间与供应商从供应商处名称订购单价进货每种书int作为的主码的每本价格直接关联客户编号唯独标识客户char800000000099999999按购书先后编号有时与图书编号作为主码客户名称客户姓名char8性别客户性别char2女或男年龄客户年龄int每年都要增加一岁的可编辑资料 - - - 欢迎下载精品名师归纳总结数据结构:数据结构名称每种书含义说明指具有相同书名的书的集合的基本信息指图书编号唯独标识的个体的归属供应商的基本信息组成图书名称、作者名称、出版社名称每本书供应商供应基表每种书在何处订购的详细情形客户客户的基本信息销售基表每本书被谁买的详细请况图书编号、图书名称供应商名称、的址、电话、联系人图书名称、供应商名称、订购单价、订购时间客户编号、客户名称、性别、年龄图书编号、客户编号、销售单价、销售时间数据流:此处从略 数据储备:此处从略数据处理:此处从略概念结构设计概念结构设计的方法设计概念结构通常有四类方法:自顶向下,自底向上,逐步扩张以及混合策略。本系统采纳的是自底向上的方法。即第一定义全局的概念结构的框架,然后逐步细化。依据自顶向下的进行需求分析然后再自底向上的进行概念设计。概念结构设计的步骤第一步:抽象数据。其次步:设计局部E-R 图。第三步:把各分 E-R 图综合成总体 E-R 图,排除各种冲突。 第四步:对总体 E-R 图进行优化,排除冗余数据和冗余联系。可编辑资料 - - - 欢迎下载精品名师归纳总结抽象初步数据:(此处与优化后E-R图得出的实体联系属性很有可能不同)实体: 图书、供应商、客户联系 :图书订购关系、图书销售关系图书与供应商的关系是多对一的关系。 图书与客户的关系是多对一的关系。 属性 :图书的属性:图书编号、图书名称、出版社名称、作者名称、供应商名称。 主码为图书编号供应商的属性:供应商名称、供应商的址、电话、联系人。 主码为供应商名称客户的属性:客户编号、姓名、性别、年龄。 主码为客户编号图书订购关系属性:供应商名称、图书编号、订购时间、订购单价。 主码为供应商名称和图书编号图书销售关系属性:客户编号、图书编号、销售时间、销售单价。 主码为客户编号和图书编号分 E-R图:图书 E-R图:图书编号图书名称出版社名称图书作者名称供应商名称供应商 E-R图:可编辑资料 - - - 欢迎下载精品名师归纳总结供应商名称供应商的址供应商电话联系人客户 E-R图:客户编号姓名性别客户年龄可编辑资料 - - - 欢迎下载精品名师归纳总结初 E-R图:图书编号图书名称 出版社名称作者名称供应商名称供应商名称图书编号图书客户编号 图书编号订购时间NN销售时间订购单价图书订购图书销售销售单价11供应商名称 供应商客户客户编号供应商的址 电话联系人年龄性别姓名可编辑资料 - - - 欢迎下载精品名师归纳总结优化后的总 E-R图:图书编号图书名称图书名称作者名称出版社名称每本书1归属M每种书1N图书编号销售时间图书名称订购时间销售基表订购基表客户编号销售单价供应商名称订购单价NM订购数量客户编号年龄供应商名称联系人客户供应商客户名称性别的址电话规律设计阶段规律设计阶段:将系统E-R 模型转换为关系模式,并对给出的关系模式进行关系规范化处理(尽量满意3NF),得到系统全部的关系模式,并标明主键、外键此部分一律采纳英文命名。然后进行用户外模式的设计,针对中国用户,此处用中文命名。将 E R 模式转换为以下关系模式:1book#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, #supplier_name, #order_time6) book_sell#bno, #cno, sell_time, sell_price 。主键: #bno发觉这六个关系模式3N 都满意。由于元组中都是不行分割的数据,且全部非主属性完全依靠其主码,且它的任何一个非主属性都不传递于任何主关键字。用户外模式设计:基本信息视图的建立:1. 单本销售情形(图书编号,图书名称客户编号,客户名称,销售单价,销售时间)。2. 同种销售情形(书名,销售数量,销售金额)。3. 客户信息(客户编号,客户名称、性别,年龄,累计购书金额)。4. 供应商信息(供应商名称,的址,电话,联系人)。5. 图书订购信息(图书名称,供应商名称,订购时间,订购数量,订购单价,订购金额,出版社名称,作者名称)。物理设计阶段物理设计阶段:为一个规律数据模型选取一个最适合应用环境的物理结构(储备结构与存取方法),数据库的物理设计通常分为两步:A 、确定数据库的物理结构。B 、对物理结构进行时间和空间效率评判。建立小型书店治理系统创建数据库 book_shop_management-创建小型书店治理系统createdatabasebook_shop_management onprimaryname = 'book_shop_management',filename='d:program filesmicrosoft sql servermssql.1mssqldata book_shop_management.mdf',size= 10mb ,maxsize= unlimited, filegrowth= 10 %可编辑资料 - - - 欢迎下载精品名师归纳总结logon name = 'book_shop_management_log', filename='d:program filesmicrosoft sqlservermssql.1mssqldatabook_shop_management_log.ldf',size= 1mb , maxsize= 5mb , filegrowth= 3% go截图得:对各个基本表的建立(包括了各种完整性约束)建立表 book-建立表 book createtablebook#bnamevarchar 30 primarykey, writer_namechar 8 ,press_namechar 12 建立表 everybook-建立表 everybookcreatetableeverybook #bnochar 8 primarykey, #bnamevarchar 30 notnullconstraintfk_everybook_bnameforeignkeyreferencesbook #bname 可编辑资料 - - - 欢迎下载精品名师归纳总结建立表 supplier-建立表 suppliercreatetablesupplier#supplier_namechar 12 primarykey, addressvarchar 50 notnull,telephonechar 7 notnull, contactchar 8 notnull建立表 customer-建立表 customer createtablecustomer#cnochar 8 primarykey, cnamechar 8notnull,sexchar 2 ,ageint,constraintck_customer_sexcheck sexin' 男' , ' 女' 建立表 book_order-建立表 book_ordercreatetablebook_order #bnamevarchar 30 , #supplier_namechar 12 , #order_timedatetime, order_countintnotnull, order_priceintnotnull, constraintpk_book_orderprimarykey #bname , #supplier_name, #order_time建立表 book_sell-建立表 book_sellcreatetablebook_sell#bnochar#cnochar 8 primarykey 8 notnull,sell_timedatetime,sell_price int建立视图建立基本信息视图:可编辑资料 - - - 欢迎下载精品名师归纳总结建立单本销售情形视图-建立单本销售情形视图 createviewview_单本销售情形asselectbook_sell. #bnoas图书编号 , #bnameas图书名称 , book_sell. #cnoas客户编号 , cnameas客户名称 ,sell_timeas销售时间 , sell_priceas销售单价frombook_sell, customer, everybook whereeverybook. #bno = book_sell. #bno and customer. #cno = book_sell. #cno建立同种销售情形视图-建立同种销售情形视图 createviewview_同种销售情形asselect图书名称 as书名 , count 图书编号 as销售数量 , sum 销售单价 as销售金额 fromview_单本销售情形groupby图书名称建立客户信息视图-建立客户信息情形createviewview_客户信息selectcustomer. #cnoas客户编号 , cnameas客户名称 ,sexas性别,ageas年龄, selectsum sell_price frombook_sell groupby#cno as累计购书金额frombook_sell, customerwherebook_sell. #cno = customer. #cno建立供应商视图-建立供应商视图createviewview_供应商信息asselect#supplier_nameas供应商名称 , addressas的址,telephoneas电话,可编辑资料 - - - 欢迎下载精品名师归纳总结contactas联系人fromsupplier建立订购信息视图-建立订购信息视图createviewview_图书订购信息asselectbook_order. #bnameas图书名称 , #supplier_nameas供应商名称 ,#order_timeas订购时间 ,order_priceas订购单价 , order_countas订购数量 , order_price* order_count as订购金额 , press_nameas出版社名称 ,writer_nameas作者名称frombook, book_orderwherebook. #bname = book_order. #bname建立储备过程某种图书库存查询储备过程createproceduresp_某种图书库存查询-p1 为要查询的图书名称p1 varchar 30 asbeginselect订购数 - 销售数量 as库存from selectsum order_count as订购数 , #bnameas书名frombook_ordergroupby#bname as x , view_同种销售情形wherex . 书名=p1 and view_同种销售情形 . 书名 = p1 endgo某段时间内的销售业绩查询储备过程-建立本月业绩查询储备过程-由于不知其它信息,此处将销售金额与营业金额等同-营业金额 = 营业额 = 成本 +利润createproceduresp_查询某段时间内的业绩-p1 为起始时间 ,p2 为终止时间p1 datetime, p2 datetime可编辑资料 - - - 欢迎下载精品名师归纳总结as beginselectsum 销售单价 as销售金额 fromview_单本销售情形where销售时间 >= p1and销售时间 <= p2 endgo某段时间内的销售最好图书信息查询储备过程-建立某段时间内销售最好图书信息查询储备过程createproceduresp_查询某段时间内销售最好的图书信息p1 datetime, p2 datetimeas beginselect#bnameas图书名称 , writer_nameas作者名称 , press_nameas出版社名称 from select图书名称 as书名 , count 图书编号 as销售数量 fromview_单本销售情形where销售时间 >= p1 and销售时间 <= p2groupby图书名称 as x , book where#bname= 书名and销售数量 >=allselectcount 图书编号 fromview_单本销售情形where销售时间 >= p1 and销售时间 <= p2 groupby图书名称 endgo建立触发器(另外5 个表也建立相应曾删改触发器,不过此处从略,详情见附件源代码)建立一个 customer 的操作审核表,并建立相关触发器,当向customer 中插入、更新或删除记录时,生成一条操作记录插入到该操作审核表中,内容包括客户编号、客户名称、操作方式(插入 /更新 /删除)和操作时间-建一个操作审核表createtablecustomer_operate 客户编号 char 8notnull, 客户名称 char 8 notnull, 操作方式 char 4 notnull,可编辑资料 - - - 欢迎下载精品名师归纳总结操作时间 datetimenotnull-建立相关触发器createtriggertrigger_customer_insert on customerforinsertas begindeclarep1char 8 ,p2 char 8 setp1 = select#cnofrominserted setp2 = selectcnamefrominserted print'insert:'select* frominsertedinsertintocustomer_operatevalues p1, p2, ' 插入' , getdate endgocreatetriggertrigger_customer_delete on customerfordelete asbegindeclarep1char 8 ,p2 char 8 setp1 = select#cnofromdeleted setp2 = selectcnamefromdeleted print'deleted:'select* fromdeletedinsertintocustomer_operatevalues p1, p2, ' 删除' , getdate endgocreatetriggertrigger_customer_update on customerforupdate asbegindeclarep1char 8 ,p2 char 8 setp1 = select#cnofromdeleted setp2 = selectcnamefromdeleted print'inserted:'select* frominserted print'deleted:'select* fromdeletedinsertintocustomer_operatevalues p1, p2, ' 修改' , getdate end可编辑资料 - - - 欢迎下载精品名师归纳总结go建立索引(由于数据库比较小,没有必要建立索引) 实现数据库(有附件源代码和该数据库源文件)过程功能验证向基本表插入适量如下数据并显示基本表信息#bno00000001#bname何以笙箫默#bnameWriter_namePress_namebook_sellcustomereverybookbook0000000200000003何以笙箫默原先你仍在这里00000004烈火如歌00000005烈火如歌00000006烈火如歌00000007微微一笑很倾城何以笙箫默顾漫晋江出版社原先你仍在这里辛夷坞起点出版社烈火如歌明晓溪晋江出版社微微一笑很倾城顾漫阅读出版社#bno#cnoSell_timeSell_price00000001000000012021-6-162100000003000000022021-6-251900000007000000022021-7-92000000004000000032021-7-92300000005000000042021-7-1918#cnocnamesexAge00000001吕鹏女1800000002孙鲁鲁女1800000003王肖雨女1900000004邵丽君女19Book_order#bname#supplier_nameOrder_timeOrder_countOrder_price何以笙箫默大旗2021-6-10212原先你仍在这里大旗2021-6-20110烈火如歌红方2021-7-2110烈火如歌长城2021-7-329微微一笑很倾城高原2021-7-3111Suppilier#suppileraddresstelephonecontact大旗上海1573234王平红方上海1734272李景长城江苏1564323张艳丽可编辑资料 - - - 欢迎下载精品名师归纳总结高原郑州1242356殷风注:此处插入数据应当book在 everybook之前插入数据(外键)截图得:可编辑资料 - - - 欢迎下载精品名师归纳总结视图显示基本信息-用显示视图基本信息select* fromview_单本销售情形select* fromview_供应商信息select* fromview_客户信息select* fromview_同种销售信息select* fromview_图书订购信息截图得:可编辑资料 - - - 欢迎下载精品名师归纳总结执行储备过程完成目标查询某种图书库存查询execsp_某种图书库存查询 ' 烈火如歌 '本月业绩查询execsp_查询某段时间内的业绩'2021-7-1', '2021-7-31'本月销售最好图书信息查询execsp_查询某段时间内销售最好的图书信息'2021-7-1', '2021-7-31'可编辑资料 - - - 欢迎下载精品名师归纳总结截图得:用一般查询完成目标查询(两次查询同时显示)订购超 3 次客户信息查询-订购超次客户信息查询select* fromview_客户信息where客户编号 =anyselect#cnofrombook_sell groupby#cnohavingcount*>3 按供应商名称查询订购信息-按供应商名称查询订购信息select* fromview_图书订购信息orderby供应商名称截图得:可编辑资料 - - - 欢迎下载精品名师归纳总结注:数据检查得,的确没有订购超3 次的客户。验证触发器-验证触发器insertintocustomervalues '00000005', ' 陈利' , ' 女' , '21' goupdatecustomer setcname= ' 陈丽'wherecname=' 陈利'godeletefromcustomer wherecname=' 陈丽'select* fromcustomer_operatego截图得:可编辑资料 - - - 欢迎下载精品名师归纳总结总结经过将近两个星期的努力,最终设计出了一个基本符合设计要求的数据库系统。本系统功能强大,用户界面良好,然而,同学才能有限,该系统中仍存在某些小小的缺陷。同学经过一段时间的努力,“功夫不负有心人 ”如期完成了设计任务,虽然不是很完善,但是, “麻雀虽小,五脏俱全 ”,在这个课程设计的练习中,同学学到了许多的东西。其中最重要的是,在这次练习中,同学明白了数据库设计的一般过程。在接受一个工程的时候,第一是进行系统分析,即分析使用的情形以及技术的可行性,有些东西是不行行的,在设计的时候就要绕过去。整体的框架要依据要求反复斟酌,切不行轻易做出决 定,不然的话,一旦出错,再改数据库那就很麻烦了。再有就是在创建数据库的过程中要留意的一些小细节了,比如说有一下几点:(1) 对表建立时,应防止本答应插入重复记录(部分重复)却由于约束不当而无法正常插入。不要想当然的名一样就约束也一样。(2)每次对前文修改后都必需储存一次,同时对所有文件都进行修改,以保持数据与结构的一样性。(3 )建好基本表之后插入数据适量, 以验证功能。建数据库边验证边修改。(4 )对于有不确定因素的应当建立储备过程进行查询。等等。总体来说,通过这次的练习,同学的技术才能都有了一个技术层面上的提高了。可编辑资料 - - - 欢迎下载精品名师归纳总结可编辑资料 - - - 欢迎下载