欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    SQLServer数据库大作业1.doc

    • 资源ID:33471278       资源大小:170KB        全文页数:19页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    SQLServer数据库大作业1.doc

    如有侵权,请联系网站删除,仅供学习与交流SQLServer数据库大作业1【精品文档】第 19 页华东交通大学数据库认证课程大作业 Northwind数据库综合应用设计方案专业班级: 09软件工程(+电子商务)2班 学 院: 软件学院 学生姓名: 毕文超 学 号: 12 分 数: 学 期: 2011-2012(2) 任课教师: 刘常昱 Northwind数据库综合应用设计方案一、 Northwind数据库的分析1)对Northwind数据库的各对象(包括数据库表、存储过程、视图、触发器等)进行分析,描述各自的大致内容和实现的功能。表名:Categories(食品类别表)表结构:字段名称数据类型长度允许为空CategoryID(主键)int4否CategoryNamenvarchar15否Descriptionntext 是Pictureimage 是主键:CategoryID主键约束名称:PK_Categories关系说明:该表主要用来保存食品种类信息的数据。表名:CustomerCustomerDemo(消费者表)表结构:字段名称数据类型长度允许为空CustomerID(主键)nchar5否CustomerTypeID(主键)nchar10否组合主键:CustomerID、CustomerTypeID主键约束名称:PK_CustomerCustomerDemo外键:1.列 CustomerTypeID引用表CustomerDemographics(CustomerTypeID)2.列 CustomerID引用表Customers(CustomerID)外键约束名称:FK_CustomerCustomerDemo和FK_CustomerCustomerDemo_Customers关系说明:该表主要用来保存消费者ID和消费者类别ID信息的数据。  表名:CustomerDemographics(消费者类别说明表)表结构:字段名称数据类型长度允许为空CustomerTypeID(主键)nchar10否CustomerDescntext16是主键:CustomerTypeID主键约束名称:PK_CustomerDemographics关系说明:该表主要用来存储消费者类别说明信息。 表名:Customers(消费者信息表)表结构:字段名称数据类型长度允许为空CustomerID(主键)nchar5否CompanyNamenvarchar40否ContactNamenvarchar30是ContactTitlenvarchar30是Addressnvarchar60是Citynvarchar15是Regionnvarchar15是PostalCodenvarchar10是Countrynvarchar15是Phonenvarchar24是Faxnvarchar24是主键:CustomerID主键约束名称:PK_Customers关系说明:该表主要用来存储消费者详细信息的数据表。  表名:Employees(雇员信息表)表结构:字段名称数据类型长度允许为空EmployeeID(主键)int4否LastNamenvarchar20否FirstNamenvarchar10否Titlenvarchar30是TitleOfCourtesynvarchar25是BirthDatedatetime8是HireDatedatetime8是Addressnvarchar60是Citynvarchar15是Regionnvarchar15是PostalCodenvarchar10是Countrynvarchar15是HomePhonenvarchar24是Extensionnvarchar4是Photoimage16是Notesntext16是ReportsToint4是PhotoPathnvarchar255是主键:EmployeeID主键约束名称:PK_Employees外键:1.列 ReportsTo引用表Employees(EmployeeID)外键约束名称FK_Employees_Employees关系说明:该表主要用来存储雇员的详细信息数据表。  表名:EmployeeTerritories(雇员销售区域表)表结构:字段名称数据类型长度允许为空EmployeeID(主键)int4否TerritoryID(主键)nvarchar20否主键:EmployeeID、TerritoryID主键约束名称:PK_EmployeeTerritories外键:1.列 EmployeeID引用表Employees(EmployeeID)2.列 TerritoryID引用表Territories (TerritoryID)外键约束名称:FK_EmployeeTerritories_Employees和FK_EmployeeTerritories_Territories关系说明:该表主要用来存储雇员ID和其对应的销售区域ID。  表名:Order Details(订单价格表)表结构:字段名称数据类型长度允许为空OrderID(主键)int4否ProductID(主键)int4否UnitPricemoney8否Quantitysamllint2否Discountreal4否主键:OrderID、ProductID主键约束名称:PK_Order_Details外键:1.列 OrderID引用表Orders(OrderID)2.列 ProductID引用表Products(ProductID)外键约束名称:FK_Order_Details_Orders和FK_Order_Details_Products关系说明:该表主要用来存储订单价格信息的数据表1  组合、主键、聚集索引在 OrderID 和ProductID 上定义。2  在 OrderID 上也有两个非聚集索引。3  在 ProductID 上也有两个非聚集索引。4  UnitPrice 的 CHECK 约束被定义为 (UnitPrice >= 0)。5  Quantity 的 CHECK 约束被定义为 (Quantity > 0)。表级别的 CHECK 约束被定义为 (Discount >= 0 和 Discount < = 1)。 表名:Orders(订单表)表结构:字段名称数据类型长度允许为空OrderID(主键)int4否CustomerIDnchar5是EmployeeIDint4是OrderDatedatetime8是RequiredDatedatetime8是ShippedDatedatetime8是ShipViaint4是Freightmoney8是ShipNamenvarchar40是ShipAddressnvarchar60是ShipCitynvarchar15是ShipRegionnvarchar15是ShipPostalCodenvarchar10是ShipCountrynvarchar15是主键:OrderID主键约束名称:PK_Orders外键:1.列 CustomerID引用表Customers(CustomerID)2.列 EmployeeID引用表Employees(EmployeeID)3. .列 ShipVia引用表Shippers(ShipperID)外键约束名称FK_Orders_Customers,FK_Orders_Employees和FK_Orders_Shippers关系说明:该表主要用来存储订单详细信息的数据1  在 CustomerID 上有两个非聚集索引。2  在 EmployeeID 上有两个非聚集索引。3  在 ShipVia 上也有一个非聚集索引。  表名:Products(产品信息表)表结构:字段名称数据类型长度允许为空ProductID(主键)int4否ProductNamenvarchar40否SupplierIDint4是CategoryIDint4是QuantityPerUnitnvarchar20是UnitPricemoney8是UnitsInStocksamllint2是UnitsOnOrdersamllint2是ReorderLevelsamllint2是Discontinuedbit1否主键:ProductID主键约束名称:PK_Products外键:1.列 CategoryID引用表Categories(CategoryID)2.列 SupplierID引用表Suppliers(SupplierID)外键约束名称FK_Products_Categories和FK_Products_Suppliers关系说明:该表主要用来存储产品详细信息的数据表。1 在 SupplierID 上有两个非聚集索引。2 在 CategoryID 上有两个非聚集索引。3 UnitPrice 的 CHECK 约束被定义为 (UnitPrice >=)。4 UnitsInStock 的 CHECK 约束被定义为 (UnitsInStock >=)5 UnitsOnOrder 的 CHECK 约束被定义为 (UnitsOnOrder >=)。6 ReorderLevel 的 CHECK 约束被定义为 (ReorderLevel >=)。  表名:Region(区域表)表结构:字段名称数据类型长度允许为空RegionID(主键)int4否RegionDescriptionnchar50否主键:RegionID主键约束名称:PK_Region关系说明:该表主要用来存储区域信息数据。  表名:Shippers(托运信息表)表结构:字段名称数据类型长度允许为空ShipperID(主键)int4否CompanyNamenvarchar40否Phonenvarchar24是主键:ShipperID主键约束名称:PK_Shippers关系说明:该表主要用来存储托运公司的详细信息数据。  表名:Suppliers(供应商信息表)表结构:字段名称数据类型长度允许为空SupplierID(主键)int4否CompanyNamenvarchar40否ContactNamenvarchar30是ContactTitlenvarchar30是Addressnvarchar60是Citynvarchar15是Regionnvarchar15是PostalCodenvarchar10是Countrynvarchar15是Phonenvarchar24是Faxnvarchar24是HomePagentext16是主键:SupplierID主键约束名称:PK_Suppliers关系说明:该表主要用来存储供应商详细信息数据。  表名:Territories(销售区域信息表)表结构:字段名称数据类型长度允许为空TerritoryID(主键)nvarchar20否TerritoryDescriptionnchar50否RegionIDint4否主键:TerritoryID主键约束名称:PK_Territories外键:1.列 RegionID引用表Region(RegionID)外键约束名称FK_Territories_Region关系说明:该表用来存储销售区域详细说明信息的数据。 存储过程分析:1CustOrderHist参数:消费者编号作用:用来显示指定消费者购买各种商品的总数。2CustOrdersDetail参数:订单编号作用:用来显示指定订单编号的销售信息。3CustOrdersOrders参数:消费者编号作用:用来显示指定消费者所有订单销售期限情况。4Employee Sales by Country参数:起始时间、结束时间作用:用来显示在起始时间和结束时间之间的需要发货订单的负责人信息和订单的详细信息。5Sales by Year参数:起始时间、结束时间作用:用来查询在起始时间和结束时间之间发货的订单信息及所属年份(包括售价)。6.SalesByCategory   参数:食品类别、年份   返回值:返回指定食品名称、年份的销售食品名称和其售价。7Ten Most Expensive Products  作用:显示Products表中食品单价排在前10位的食品名称和食品单价。视图分析:1Alphabetical list of products未过期食品的详细信息及其所属的类别。2Category Sales for 1997显示种类食品在1997年的实际销售部。3Current Product List显示未过期食品的信息。4Customer and Suppliers by City所有消费者和供货商的信息。5Invoices 按照订单发货的详细信息。6Order Details Extended订单明细的详细信息。7Order Subtotals    每单的实际销售额8Orders Qry       有订单的客户的详细订单信息及客户信息9Product Sales for 1997 每种食品在1997实际销售额以及食品的详细信息10Products Above Average Price单位售价大于所有食品平均售价的食品清单。11Products by Category   未过期食品的存货情况(按照商品分类)12Quarterly Orders     1997年有订单的客户信息13Sales by Category     1997年订单食品的详细情况14Sales Totals by Amount  1997年每单销售额大于2500的订单的信息15Summary of Sales by Quarter1997年已发货订单的发货时间16Summary of Sales by Year   1997年已发货订单的发货时间2)给出Northwind库的整体ER关系图,给出Employees和Customers表的数据库字典。图一图二Employees:员工表相应字段:EmployeeID:员工代号;LastName + FirstName:员工姓名;Title:头衔;TitleOfCourtesy:尊称;BirthDate:出生日期;HireDate:雇用日期;Address:家庭地址;City:所在城市;Region:所在地区;PostalCode:邮编;Country:国家用;HomePhone:宅电;Extension:分机;Photo:手机;notes:照片;ReportsTo:上级;PhotoPath:照片Customers:客户表相应字段:CustomerID:客户ID;CompanyName:所在公司名称;ContactName:客户姓名;ContactTitle:客户头衔;Address:联系地址;City:所在城市;Region:所在地区;PostalCode:邮编;Country:国家Phone:电话;Fax:传真二、 Northwind库的综合应用注:对于一个数据库而言,不仅仅是提供一个数据的存储位置,更多的是能够提供对所存储数据的处理功能,满足业务需要。下面是一些在项目开发过程中经常使用的数据库设计功能点,请给出设计的思路及具体代码。1) 在应用程序中,对于数据库中提供的数据记录要进行显示,当记录比较多的时候,要进行分页显示。请设计一个存储过程,能够分页提供所需要的产品信息,存储过程名称为getProductbyPage,存储过程的参数为每页显示的数据及记录条数pagesize和要获取的是哪一个分页的数据库pageindex,存储过程能够得到所需要的该分页中的记录集合。 CREATE proce getProductbyPage(pagesize char(10)pageindex char(100) )assetnocountonbegindeclareindextabletable(idintidentity(1,1),nidint)-定义表变量declarePageLowerBoundint-定义此页的底码 declarePageUpperBoundint-定义此页的顶码 setPageLowerBound=(pageindex-1)*pagesize setPageUpperBound=PageLowerBound+pagesizesetrowcountPageUpperBoundinsertintoindextable(nid)selectgidfromTGongwenwherefariqi>dateadd(day,-365,getdate()orderbyfariqidescselectO.gid,O.mid,O.title,O.fadanwei,O.fariqifromTGongwenO,indextabletwhereO.gid=t.nidandt.id>PageLowerBoundandt.id<=PageUpperBoundorderbyt.idendsetnocountoff以上存储过程运用了SQLSERVER的最新技术表变量。应该说这个存储过程也是一个非常优秀的分页存储过程。当然,在这个过程中,您也可以把其中的 表变量写成临时表:CREATETABLE#Temp。但很明显,在SQLSERVER中,用临时表是没有用表变量快的。2)数据库的安全是非常重要的一个工作,如果要对Northwind库进行安全性的设计,请给出你的方案。(提示:报告对存储过程视图等对象的加密、登录用户账户的管理、数据库的用户操作日志的管理等多个方面进行分析,给出具体的方法)随着数据需求的不断增加不论以何种方式都不要忽略对你的数据库备份文件的保证在本地的 Server备份中,备份文件中的数据是以普通文本格式存储的,仅仅用文本编辑器就可以轻松阅读根据表中使用的数据类型,一些数据比另外的一些数据更容易查看。 试试这个你几乎从来没有进行过的试验。对Northwind数据库进行备份,或者任何其它小型数据库,然后用任意的文本编辑器打开备份文件。你将会看到数据自身有一点难以理解,但是只要你看到存储过程的注释,然后通读一下文件,你就会看到你的备份文件的真正价值所在。如果你采取行动,将用户ID和/或密码存储在你的存储过程中,首先这可不是一个好主意,这个数据现在就可以被任何能够接触到备份数据库的人所访问。如果你有其他藏有秘密信息的文本数据类型,你也会让这些数据非常有意义了。备份密码 Server中的一个选项就是创建用密码创建备份。这是你在创建备份的时候可以使用的另一个选择,但是在版管理器或者SQL Server管理套件中,并没有提供这个选项。这里是一个使用密码选项备份的例子:backup database northwind to disk=c:northwind.bak with mediapassword = Backup2006这个过程需要密码来重新存储文件,但是使用文本编辑器,这些数据仍然是可以访问的。还有,重新存储不能使用GUI来完成,所以它必须通过T-SQL重新存储命令和密码一起完成任务。加密存储过程一种防止你的存储过程被用于查看的方法就是在创建你的存储过程的时候使用“带加密”的选项。这样的话,备份文件中的数据也是经过加密的了。要使用加密来创建一个存储过程,如下所示: createproceduredbo.testEncryptionwithencryptionasselect*FROMproducts 加密数据另一个选择就是在你把数据存储到你的数据库表中的时候,对数据进行加密。在SQL Server 2000中没有本地的方法来完成,但是有很多工具你可以使用:针对SQL Server的NetLib Encryptionizer使用XP_CRYPT加密SQL ServerSQL Server 2005中存在本地加密功能。看看微软的文章<>如何:加密一列数据,那里解释了这个过程。在你加密了数据库中的数据之后,当你创建备份的时候,数据仍然是经过加密的。保证文件系统的安全保卫你的备份文件的安全的另一个方法就是在你的或者网络中使用安全目录。你可以限制访问这个目录的权限,这样就只有一小部分受限制的人能够访问你的备份文件。通过在安全目录上使用上述的技术,你就可以创建另一个级别的安全措施了。这仍然不会消除加密的需求,但是它提供了额外的安全措施。直接备份到磁带备份的另一个选择就是直接备份到磁带上,以便在你的网络中保证备份文件的安全。这种方法减少了对你的备份文件的不正当访问的问题。用这种方式有一个大问题:我写入的大部分关于备份的内容都是首先写入磁盘的,以便在必要的时候能够快速重新存储,然后再为了长期的存储而归档到磁带上。这种方式消除了你的备份落入坏人之手的机会,但是,不幸的是,它让其他的处理过程变得困难。加密备份如果你真的需要保证你的备份文件的安全,最好的方式就是在你创建备份文件的时候对其进行加密。不幸的是,SQL Server中没有工具可以让你完成这个任务,但是看看以下的产品,它们可以让你创建各种级别的密码和加密技术加密备份。Idera的 SQLsafeQuest的 SQL LiteSpeedRed-Gate的 SQL Backup3)数据库使用中的自定义提示非常重要,它可以更加直观的把一些操作不当的数据库行为提示给用户。利用 RAISEERROR语句完成如下的功能:首先自定义一个错误号为50512的用户自定义错误,错误的严重级别为10,错误的文本消息为Cant find the customer ID. ,另外消息中还要加上表名和输入的CustomerID, 并且当发生消息时将消息写入 Microsoft® Windows NT® 应用程序日志中。然后创建一个名为ExistCustomerID的存储过程,以用它来找出SQL SERVER中的northwind数据库的Customer表中,指定的CustomerID是否存在,如果存在返回0,如果不存在返回错误号50512,并将消息写入 Microsoft® Windows NT® 应用程序日志中。写出定义错误消息和创建存储过程的语句。定义自定义错误消息EXEC sp_addmessagemsgnum = 50512,severity = 10,msgtext = 'Cant find the customer ID:%s at table %s.', with_log ='true'创建存储过程的语句如下USE NorthWindGOCREATE PROC ExistCustomerIDCustomerID char (5)ASSELECT CustomerID From Customers WHERE CustomerID=CustomerID IF ROWCOUNT=0 BEGIN RAISEERROR(50512, 10, 1, CustomerID, DBNAME) RETURNEND RETURN 0总结及分析三、 Northwind库在设计过程中是否存在不足,从实际项目开发的需求中就行分析。注:从主外键的设计是否满足软件开发的需要、各数据库对象是否安全存储、是否存在必要的冗余等方面对Northwind进行分析。主键与外键在多表中的重复出现, 不属于数据冗余,这个概念必须清楚,事实上有许多人还不清楚。非键字段的重复出现, 才是数据冗余,但有时又有必要的冗余!高级冗余不是字段的重复出现,而是字段的派生出现。采用与表对象无关的字段作为主键,这样既可以符合实际软件开发中建模工具的特点,也能避免过多的使用联合主键,带来不必要的麻烦。Northwind库缺少必要的数据冗余,如Products表,在真实的电子商务web开发中商品的价格不可能只存放一个值,它需要存放一些特价或者短期的上调,在这一点上可以改进。必要冗余举例: Order Details中的“UnitPrice”字段,一对OrderID、 ProductID就能确定UnitPrice,但要知道UnitPrice随着时间有可能产生变化。

    注意事项

    本文(SQLServer数据库大作业1.doc)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开