云南大学数据库期末大作业-数据库设计说明书_第1页
云南大学数据库期末大作业-数据库设计说明书_第2页
云南大学数据库期末大作业-数据库设计说明书_第3页
云南大学数据库期末大作业-数据库设计说明书_第4页
云南大学数据库期末大作业-数据库设计说明书_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

/XX大学软件学院实验报告课程:数据库原理与实用技术实验学期:任课教师:专业:学号:姓名:成绩:期末大作业:ElectronicVentor数据库设计一、实验目的〔1掌握数据库设计的基本方法〔2掌握各种数据库对象的设计方法〔3熟练掌握DBA必须具备的技能二、实验内容根据项目的应用和项目的需求说明文档,进行详细的需求分析,给出需求分析的结果。客户可以在网站上注册,注册的客户要提供客户的姓名、电话、地址,以方便售后和联系,姓名即作为用户名,和密码一起用于注册和登录,客户编号可唯一识别用户,卡号可网上支付。其中地址、电话以方便联系和寄货;网站管理员可以登记各种商品,供客户查询,订购。登记商品时要提供商品的名称、价格,商店中现有商品量,商品编号可唯一识别商品;类别表示商品所属类别,类别编号可唯一识别类别,其中包含了,商品类别名称和制造厂商,可以对商品进行分类售卖;客户可以在网上下订单,也可以到实体店购物,其在订单上所选择的支付方式不同〔信用卡、借记卡、现金,现金代表实体店购物,网站管理员可以查看订单,并及时将订单的处理情况更新〔比如货物已寄出的信息,订单状态:0:未处理,1:已处理,2:已发货;订单编号可唯一识别订单,订单中包含订单产生时间,订单状态,支付方式和支付总额;实体商店有自己的店名,卖多种商品,每个商店都有固定的地址,顾客可以到店中买商品,〔注:在实体店中购买商品的顾客一律将顾客名默认为佚名,当商店中的库存量小于10时会有提醒到仓库中拿货;配送单中包含查询号可唯一识别配送单,配送人,联系方式;仓库中仓库编号可唯一识别仓库,其中每个仓库都有区号,代表其地址。各实体间关系一个客户可以购买多种商品,一种商品可以被多个客户购买;一个商品属于且仅属于一种类别,一种类别的商品可以包含多个商品或没有;一种商品放在多个商店中销售,一个商店至少销售一种或销售多种商品;一个订单对应一个客户,一个客户对应多个订单;一个订单对应至少有一件商品或多件,一个商品对应多个订单;一个订单可以有一个商品配送单一个仓库可以存放多种商品,一种商品可以存放在一个仓库;数据库逻辑设计:用文字简要描述实体之间的联系,画出E-R图〔标出各联系中实体的基数。客户-商品:n-n;商品-类别:n-1;商品-商店:n-n;客户-订单:1-n;订单-商品:1-n;订单-配送当:1-1;仓库-商品:1-n3、数据库物理设计:将E-R图转换为数据表。需要给出详细的转换规则,对应生成的表,属性〔主属性、描述性属性,多值属性,符合属性等,主键,外键,约束〔取值是否NULL等,索引〔三种类型的索引至少每种出现一次等。在客户,配送单,类别中建立索引,语句在4题中如3中,有2个n-n关系,分生成订购表和销售表4、SQL中创建语句的使用:根据第二步中的结果,将相应的表,属性,主键,外键,约束等使用标准的SQLCREATE语句实现。〔要求给出创建的标准语句,以及创建之后在SQL数据库中的脚本和截图。createtable客户<客户编号char<5>notnullunique,姓名varchar<10>,密码varchar<15>,电话numeric<11>,地址varchar<20>,卡号char<19>,constraintPK_客户primarykey<客户编号>>;createtable类别<类别编号char<5>notnullunique,类别名称varchar<10>,制造商varchar<10>,constraintPK_类别primarykey<类别编号>>;createuniqueindex类别_PKon类别<类别编号ASC>;createtable仓库<仓库编号char<5>notnullunique,仓库区号varchar<5>,constraintPK_仓库primarykey<仓库编号>>;createtable商品<商品编号char<5>notnullunique,仓库编号char<5>notnull,类别编号char<5>notnull,商品名称varchar<50>,价格float,constraintPK_商品primarykey<商品编号>,constraintfk_仓库编号foreignkey<仓库编号>references仓库,constraintfk_类别编号foreignkey<类别编号>references类别>;createuniqueclusteredindex客户_PKon客户<客户编号ASC>;createtable订单<订单编号char<5>notnull,客户编号char<5>,订购时间varchar<10>,支付方式varchar<10>,订单状态numeric,总额float,constraintPK_订单primarykey<订单编号>,constraintfk_客户编号foreignkey<客户编号>references客户>;createtable配送单<查询号char<10>notnullunique,订单编号char<5>notnull,配送人varchar<10>,numeric<11>,constraintPK_配送单primarykey<查询号>,constraintfk_订单编号foreignkey<订单编号>references订单>;createclusteredindex配送_FKon配送单<订单编号ASC>;createuniqueindex配送单_PKon配送单<查询号ASC>;createtable商店<商店号char<5>notnullunique,商店名char<10>,地址varchar<20>,constraintPK_商店primarykey<商店号>>;createtable销售<商店号char<5>notnull,商品编号char<5>notnull,库存量int,constraintPK_销售primarykey<商店号,商品编号>>;createtable订购<订单编号char<5>notnull,商品编号char<5>notnull,数量int,金额float,constraintPK_订购primarykey<订单编号,商品编号>>;5、存储过程、触发器和视图:根据需要给数据库添加至少六个实用的存储过程、触发器和视图,并说明它们各自的功能。〔需要给出语句执行的结果示意图<1>创建视图,查找商品名为'苹果'的商品createviewfind_goodsasselect商品编号,商品名称,价格from商品where商品名称like'苹果%'〔2创建视图,查找价格在3000-6000的商品createviewpriceasselect商品编号,商品名称from商品where价格>3000and价格<6000<3>创建触发器,提醒店铺中库存量小于10的商品createtriggertrigger_alarmon销售afterupdateasif<select库存量from销售where库存量<10><10print'triggerout:'select商品编号,库存量from销售where库存量<10return创建触发器,当删除配送单中的数据时显示出所删信息createtriggertrigger_delon配送单afterdeleteasprint'delete'<5>创建存储过程,根据商品编号,查询该商品的订购量createprocsp_find_quantity@商品编号char<5>,@sumqintoutputasselect商品编号,sum<数量>from订购groupby商品编号having商品编号=@商品编号declare@sumqintexecsp_find_quantity@商品编号='s0001',@sumq=@sumqoutputprint'thesumquantityis:'+convert<varchar<5>,@sumq〔6创建存储过程,通过商品名称寻找商品信息createprocsp_find_price@namechar<10>asselect*from商品where商品名称like@name+'%'execsp_find_price@name='戴尔6、分析常见的业务流程,列举出至少五种SQLSELECT语句。实现的语句要满足如下要求:在五种语句中的查询能反映正常的业务需求;分析中至少要分别出现一次ORDERBY、GROUPBY…HAVING子句;分析中至少使用一次聚集函数;分析中至少使用一次嵌套查询;分析中至少使用一次UNION或INTERSECT运算;给出每一种语句执行的结果。<1>计算并查找订购单中相同订单订购超过5000的总额select订单编号,sum<金额>as总额from订购groupby订单编号havingsum<金额>>5000查找即购买了商品编号为s0001又买了s0002的客户select姓名from客户b,订单o,订购swheres.商品编号='s0001'andb.客户编号=o.客户编号ando.订单编号=s.订单编号intersectselect姓名from客户b,订单o,订购swheres.商品编号='s0002'andb.客户编号=o.客户编号ando.订单编号=s.订单编号<3>按照顾客c0002消费的总额大小顺序排订单编号select订单编号,总额from订单where客户编号='c0001'orderby总额desc<4>查询订单编号为00003的配送信息selecto.订单编号,配送人,from订单o,配送单swhereo.订单编号=s.订单编号ands.订单编号='00003'<5>查找同样买了商品编号为s0002的客户信息select客户编号,姓名,电话from客户where客户编号in<select客户编号from订单,订购where订单.订单编号=订购.订单编号and订购.商品编号='s0002'><6>查询当日销售总额select订购时间,sum<总额>as营业额from订单groupby订购时间〔选做完成数据库的设计之后,根据自己所熟悉的编程语言〔C、C++、JAVA,实现一个简单的程序,能够在程序中组装SELECT语句,链接创建的数据库,进行查询,并显示查询结果。若完成,请提供详细的代码清单〔代码作为附件,附在本报告的最后。用JSP页面编写实现如下:8、实验小结。在本次实验中一共建立了9个表,完成了6条Select语句,6条关于视图、触发器和存储过程,在语句实现过程中,因为涉及内容比较广,差不多把数据库语句全部复习了一遍才开始做,所花的时间较长,但也收益颇丰,对数据库的设计和实现也有了总体了解。最后在做选做时,选择了通过网页的方式实现,因为在做专业实训时也用了JavaEE这项技术,所以实现起来颇为得心应手。附件packagecom.ynu.myBusiness.db;importjava.sql.Connection;importjava.sql.SQLException;importjava.sql.ResultSet;importjava.sql.Statement;importcom.devdaily.opensource.database.DDConnectionBroker;publicclassConnectionBrokerimplementsBuildConnection{ privateStringdriver=null; privateStringurl=null; privateStringusername=null; privateStringpassword=null; privateintminConnections=0; privateintmaxConnections=0; privatelongtimeout=0; privatelongleaseTime=0; privateStringlogFile=null; privateDDConnectionBrokerbroker=null; voidsetUp<>{//驱动包driver="com.microsoft.sqlserver.jdbc.SQLServerDriver";//连接到数据库businessurl="jdbc:sqlserver://:1433;DatabaseName=business"; username="sa"; password="yym"; minConnections=3; maxConnections=6; timeout=100; leaseTime=60000;//日志文件存储位置 logFile="C:/D/DDConnectionBroker.log"; broker=null; } publicConnectiongetConnection<>throwsSQLException{ try{ //construct〔建立thebroker〔中间人 broker=newDDConnectionBroker<driver,url,username,password, minConnections,maxConnections,timeout,leaseTime,logFile>; } catch<SQLExceptionse>{ //couldnotgetabroker;notmuchreasontogoon System.out.println<se.getMessage<>>; System.out.println<"Couldnotconstructabroker,quitting.">; } //建立broker成功 returnbroker.getConnection<>; } publicvoidfreeConnection<Connectionconn>throwsSQLException{ try{ broker.freeConnection<conn>; } catch<Exceptione>{ System.out.println<"ThrewanexceptiontryingtofreemyConnection:"+e.getMessage<>>; } } publicintgetNumberConnections<>throwsSQLException{ if<broker!=null> returnbroker.getNumberConnections<>; else return-1; } publicConnectionBroker<>{ super<>; setUp<>; }}<%@pagelanguage="java"contentType="text/html;charset=GB2312"pageEncoding="GB2312"%>atement,java.sql.ResultSet,java.sql.Statement"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""/TR/html4/loose.dtd"><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>Inserttitlehere</title></head><body><p>数据库实验大作业</p><p>搜索配送单中的数据</p><%//从工厂中得到连接 ConnectionFactoryfa

温馨提示

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

评论

0/150

提交评论