1/225/20/20201概述1.1课题简介书店书目书种繁多,来源多样,购买者众多,图书信息、供应商信息、客户信息、销售信息庞大,不易管理。因此,很有必要创建一个小型书店管理系统,以便于书店对图书的管理。1.2设计目的应用对数据库系统原理的理论学习,通过上机实践的方式将理论知识与实践更好的结合起来,巩固所学知识。数据库应用课程实践:实践和巩固在课堂教学中学习有关知识,熟练掌握对于给定结构的数据库的创建、基本操作、程序系统的建立和调试以及系统评价。数据库原理软件设计实践:实践和巩固在课堂教学中学习的关于关系数据库原理的有关知识和数据库系统的建立方法,熟练掌握对于给定实际问题,为了建立一个关系数据库信息管理系统,必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、维护以及系统评价的一般过程,为毕业设计打下基础。1.3设计内容运用基于E-R模型的数据库设计方法和关系规范化理论做指导完成从系统的分析到设计直至系统的最终实现,开发小型书店管理系统,完成小型书店管理系统的全部功能。首先做好需求分析,并完成数据流图和数据字典。其次做概念分析,利用实体联系的方法将需求分析的用户需求抽象为信息结构,得到E-R图。然后就是逻辑结构设计,将E-R图转换为计算机系统所支持的逻辑模型2/225/20/20202需求分析2.1功能分析首先,建立一些基本表(尽可能满足3N),对大部分基本信息组合、存储;其次通过建立视图实现对冗余数据的有必要保留(查询并计算基本表属性得到新的作为视图属性)并实现对以下基本信息的显示。图书信息:图书名称、订购数量、订购时间、订购单价、金额、出版社名称、作者名称;供应商名称等;供应商信息:供应商名称、地址、电话,联系人;客户信息:客户编号、名称、年龄、性别、累计购书金额等;销售信息:时间、销售名称、数量、销售单价、客户编号、客户名称、金额等。在此基础上进行以下目标查询,由于有些查询常用且较复杂,为了简化其应用,所以将它们定义为存储过程。查询当月书店销售金额、营业金额;(存储过程)查询某种图书库存数量;(存储过程)查询当月销量最好的图书信息;(存储过程)按供应商名称查询订购信息;(普通查询)查询购买次数超过3次的客户信息。(普通查询)接着根据需要建立触发器、存储过程、索引,实现对数据库的优化。最后,进行过程功能的验证。允许具有权限者对数据库进行数据更新和查询等合法操作。数据流图用流程图来描述处理过程与数据的关系数据流图如下:用户供应商图书需求信息处理图书供应信息处理图书目录文件顾客购书档案文件出版社档案文件购买信息文件用户购买信息供应商供应信息购买供应汇总文件用户供应商图书需求信息处理图书供应信息处理图书目录文件顾客购书档案文件出版社档案文件购买信息文件用户购买信息供应商供应信息购买供应汇总文件图2,1数据流图3/225/20/2020数据字典用数据字典来描述数据数据字典如下:数据项:表2.1数据字典数据项名含义说明别名数据类型长度取值范围取值含义与其他数据项的逻辑关系图书编号唯一标识每本书char800000000~99999999根据入库时间先后编号有时与客户编号作为主码图书名称唯一标识每种书书名varchar30有时与供应商组成主码作者名称每种书的作者姓名char8出版社名称每种书的出版社名称char12供应商名称唯一标识供应商char12地址供应商的地址varchar50电话供应商的电话char70000000~9999999联系人通过联系人书店与供应商进行沟通char8订购时间每种书的订购时间datetime应与图书称与供应商名称作为的主码直接关联订购单价从供应商处进货每种书的每本价格int客户编号唯一标识客户char8000000000~99999999按购书先后编号有时与图书编号作为主码客户名称客户姓名char8性别客户性别char2女或男年龄客户年龄int每年都要增加一岁的销售时间每本书的销售时间datetime与图书编号和客户编号4/225/20/2020销售单价每本书的销售价格int作为的主码直接关联数据结构:数据结构名称含义说明组成每种书指具有相同书名的书的集合的基本信息图书名称、作者名称、出版社名称每本书指图书编号唯一标识的个体的归属图书编号、图书名称供应商供应商的基本信息供应商名称、地址、电话、联系人供应基表每种书在何处订购的具体情况图书名称、供应商名称、订购单价、订购时间客户客户的基本信息客户编号、客户名称、性别、年龄销售基表每本书被谁买的具体请况图书编号、客户编号、销售单价、销售时间概念结构设计概念结构设计的方法设计概念结构通常有四类方法:自顶向下,自底向上,逐渐扩张以及混合策略。本系统采用的是自底向上的方法。即首先定义全局的概念结构的框架,然后逐步细化。根据自顶向下地进行需求分析然后再自底向上地进行概念设计。概念结构设计的步骤第一步:抽象数据;第二步:设计局部E-R图;第三步:把各分E-R图综合成总体E-R图,消除各种冲突;第四步:对总体E-R图进行优化,消除冗余数据和冗余联系;抽象初步数据:(此处与优化后E-R图得出的实体联系属性很有可能不同)实体:图书、供应商、客户联系:图书订购关系、图书销售关系5/225/20/2020图书与供应商的关系是多对一的关系;图书与客户的关系是多对一的关系。属性:图书的属性:图书编号、图书名称、出版社名称、作者名称、供应商名称;主码为图书编号供应商的属性:供应商名称、供应商地址、电话、联系人;主码为供应商名称客户的属性:客户编号、姓名、性别、年龄;主码为客户编号图书订购关系属性:供应商名称、图书编号、订购时间、订购单价;主码为供应商名称和图书编号图书销售关系属性:客户编号、图书编号、销售时间、销售单价;主码为客户编号和图书编号分E-R图:图书E-R图:图书图书编号供应商名称作者名称出版社名称图书名称图书图书编号供应商名称作者名称出版社名称图书名称供应商E-R图:6/225/20/2020供应商供应商名称电话联系人供应商地址供应商供应商名称电话联系人供应商地址客户E-R图:客户客户编号年龄性别姓名客户客户编号年龄性别姓名7/225/20/2020初E-R图:图书客户供应商图书订购图书销售图书编号供应商名称作者名称出版社名称图书名称供应商名称联系人电话供应商地址客户编号姓名性别年龄N1N1供应商名称订购时间订购单价图书编号客户编号图书编号销售时间销售单价图书客户供应商图书订购图书销售图书编号供应商名称作者名称出版社名称图书名称供应商名称联系人电话供应商地址客户编号姓名性别年龄N1N1供应商名称订购时间订购单价图书编号客户编号图书编号销售时间销售单价8/225/20/2020优化后的总E-R图:供应商客户销售基表订购基表每本书每种书归属图书编号图书名称出版社名称作者名称图书名称客户名称年龄性别客户编号订购单价订购时间供应商名称图书名称客户编号图书编号销售单价销售时间供应商名称电话联系人地址1MNN1M订购数量供应商客户销售基表订购基表每本书每种书归属图书编号图书名称出版社名称作者名称图书名称客户名称年龄性别客户编号订购单价订购时间供应商名称图书名称客户编号图书编号销售单价销售时间供应商名称电话联系人地址1MNN1M订购数量逻辑设计阶段逻辑设计阶段:将系统E-R模型转换为关系模式,并对给出的关系模式进行关系规范化处理(尽量满足3NF),得到系统全部的关系模式,并标明主键、外键此部分一律采用英文命名。然后进行用户外模式的设计,针对中国用户,此处用中文命名。将E——R模式转换为以下关系模式:1)book(#bname,writer_name,press_name);主键:#bname2.)everybook(#bno,#bname);主键:#bno外键:#bname3)supplier(#supplier_name,address,telephone,contact);9/225/20/2020主键:#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_managementonprimary(name='book_shop_management',filename='d:\programfiles\microsoftsqlserver\mssql.1\mssql\data\book_shop_management.mdf',size=10mb,maxsize=unlimited,filegrowth=10%)10/225/20/2020logon(name='book_shop_management_log',filename='d:\programfiles\microsoftsqlserver\mssql.1\mssql\data\book_shop_management_log.ldf',size=1mb,maxsize=5mb,filegrowth=3%)go截图得:对各个基本表的建立(包括了各种完整性约束)建立表book--建立表bookcreatetablebook(#bnamevarchar(30)primarykey,writer_namechar(8),press_namechar(12))建立表everybook--建立表everybookcreatetableeverybook(#bnochar(8)primarykey,#bnamevarchar(30)notnullconstraintfk_everybook_bnameforeignkeyreferencesbook(#bname))11/225/20/2020建立表supplier--建立表suppliercreatetablesupplier(#supplier_namechar(12)primarykey,addressvarchar(50)notnull,telephonechar(7)notnull,contactchar(8)notnull)建立表customer--建立表customercreatetablecustomer(#cnochar(8)primarykey,cnamechar(8)notnull,sexchar(2),ageint,constraintck_customer_sexcheck(sexin('男','女')))建立表book_order--建立表book_ordercreatetablebook_order(#bnamevarchar(30),#supplier_namechar(12),#order_timedatetime,or