Northwind数据库综合应用设计方案文档格式.docx
《Northwind数据库综合应用设计方案文档格式.docx》由会员分享,可在线阅读,更多相关《Northwind数据库综合应用设计方案文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
![Northwind数据库综合应用设计方案文档格式.docx](https://file1.bdocx.com/fileroot1/2022-12/12/d86295fb-bf21-4cee-afdf-3f211c043d41/d86295fb-bf21-4cee-afdf-3f211c043d411.gif)
关系说明:
该表主要用来保存食品种类信息的数据。
CustomerCustomerDemo(消费者表)
CustomerID(主键)
nchar
5
CustomerTypeID(主键)
10
组合主键:
CustomerID、CustomerTypeID
PK_CustomerCustomerDemo
外键:
1.列CustomerTypeID引用表CustomerDemographics(CustomerTypeID)
2.列CustomerID引用表Customers(CustomerID)
外键约束名称:
FK_CustomerCustomerDemo和FK_CustomerCustomerDemo_Customers
该表主要用来保存消费者ID和消费者类别ID信息的数据。
CustomerDemographics(消费者类别说明表)
CustomerDesc
16
CustomerTypeID
PK_CustomerDemographics
该表主要用来存储消费者类别说明信息。
Customers(消费者信息表)
CompanyName
40
ContactName
30
ContactTitle
Address
60
City
Region
PostalCode
Country
Phone
24
Fax
CustomerID
PK_Customers
该表主要用来存储消费者详细信息的数据表。
Employees(雇员信息表)
EmployeeID(主键)
LastName
20
FirstName
Title
TitleOfCourtesy
25
BirthDate
datetime
8
HireDate
HomePhone
Extension
Photo
Notes
ReportsTo
PhotoPath
255
EmployeeID
PK_Employees
1.列ReportsTo引用表Employees(EmployeeID)
外键约束名称
FK_Employees_Employees
该表主要用来存储雇员的详细信息数据表。
EmployeeTerritories(雇员销售区域表)
TerritoryID(主键)
EmployeeID、TerritoryID
PK_EmployeeTerritories
1.列EmployeeID引用表Employees(EmployeeID)
2.列TerritoryID引用表Territories(TerritoryID)
FK_EmployeeTerritories_Employees和FK_EmployeeTerritories_Territories
该表主要用来存储雇员ID和其对应的销售区域ID。
OrderDetails(订单价格表)
OrderID(主键)
ProductID(主键)
UnitPrice
money
Quantity
samllint
2
Discount
real
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(订单表)
OrderDate
RequiredDate
ShippedDate
ShipVia
Freight
ShipName
ShipAddress
ShipCity
ShipRegion
ShipPostalCode
ShipCountry
OrderID
PK_Orders
1.列CustomerID引用表Customers(CustomerID)
2.列EmployeeID引用表Employees(EmployeeID)
3..列ShipVia引用表Shippers(ShipperID)
FK_Orders_Customers,FK_Orders_Employees和FK_Orders_Shippers
该表主要用来存储订单详细信息的数据
在CustomerID上有两个非聚集索引。
在EmployeeID上有两个非聚集索引。
在ShipVia上也有一个非聚集索引。
Products(产品信息表)
ProductName
SupplierID
QuantityPerUnit
UnitsInStock
UnitsOnOrder
ReorderLevel
Discontinued
bit
1
ProductID
PK_Products
1.列CategoryID引用表Categories(CategoryID)
2.列SupplierID引用表Suppliers(SupplierID)
FK_Products_Categories和FK_Products_Suppliers
该表主要用来存储产品详细信息的数据表。
在SupplierID上有两个非聚集索引。
在CategoryID上有两个非聚集索引。
UnitPrice的CHECK约束被定义为(UnitPrice>
=)。
UnitsInStock的CHECK约束被定义为(UnitsInStock>
=)
UnitsOnOrder的CHECK约束被定义为(UnitsOnOrder>
6
ReorderLevel的CHECK约束被定义为(ReorderLevel>
Region(区域表)
RegionID(主键)
RegionDescription
50
RegionID
PK_Region
该表主要用来存储区域信息数据。
Shippers(托运信息表)
ShipperID(主键)
ShipperID
PK_Shippers
该表主要用来存储托运公司的详细信息数据。
Suppliers(供应商信息表)
SupplierID(主键)
HomePage
PK_Suppliers
该表主要用来存储供应商详细信息数据。
Territories(销售区域信息表)
TerritoryDescription
TerritoryID
PK_Territories
1.列RegionID引用表Region(RegionID)
FK_Territories_Region
该表用来存储销售区域详细说明信息的数据。
存储过程分析:
1.CustOrderHist
参数:
消费者编号
作用:
用来显示指定消费者购买各种商品的总数。
2.CustOrdersDetail
订单编号
用来显示指定订单编号的销售信息。
3.CustOrdersOrders
用来显示指定消费者所有订单销售期限情况。
4.EmployeeSalesbyCountry
起始时间、结束时间
用来显示在起始时间和结束时间之间的需要发货订单的负责人信息和订单的详细信息。
5.SalesbyYear
用来查询在起始时间和结束时间之间发货的订单信息及所属年份(包括售价)。
6.SalesByCategory
参数:
食品类别、年份
返回值:
返回指定食品名称、年份的销售食品名称和其售价。
7.TenMostExpensiveProducts
显示Products表中食品单价排在前10位的食品名称和食品单价。
视图分析:
1.Alphabeticallistofproducts未过期食品的详细信息及其所属的类别。
2.CategorySalesfor1997显示种类食品在1997年的实际销售部。
3.CurrentProductList显示未过期食品的信息。
4.CustomerandSuppliersbyCity所有消费者和供货商的信息。
5.Invoices按照订单发货的详细信息。
6.OrderDetailsExtended订单明细的详细信息。
7.OrderSubtotals
每单的实际销售额
8.OrdersQry
有订单的客户的详细订单信息及客户信息
9.ProductSalesfor1997每种食品在1997实际销售额以及食品的详细信息
10.ProductsAboveAveragePrice单位售价大于所有食品平均售价的食品清单。
11.ProductsbyCategory
未过期食品的存货情况(按照商品分类)
12.QuarterlyOrders
1997年有订单的客户信息
13.SalesbyCategory
1997年订单食品的详细情况
14.SalesTotalsbyAmount
1997年每单销售额大于2500的订单的信息
15.SummaryofSalesbyQuarter1997年已发货订单的发货时间
16.SummaryofSalesbyYear
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:
客户头衔;
联系地址;
City:
国家
Phone:
电话;
Fax:
传真
数据库字典:
Employees
序号
列名
小数位
标识
主键
允许空
默认值
字段说明
EmployeeID-
√
雇工
LastName
-姓
3
FirstName-CustomerI
名
Title-
标题
TitleOfCourtesy-
礼貌标题
6
BirthDate-
生日宴会
7
HireDate-
da
etime
雇员
Address-
120
地址
9
City-
城市
Region-
区域
11
PostalCode-
邮政编码
12
Country-
13
HomePhone-
48
住宅电话
14
Extension-
n
archar
范围
Photo-
17
ReportsTo-
报告给
18
PhotoPath-
510
Customers
CustomerID-
消费帐户
CompanyName
80
公司名称
ContactName-
联系姓名
ContactTitle-
联系名称
Phone-
电话
Fax-
二、Northwind库的综合应用
注:
对于一个数据库而言,不仅仅是提供一个数据的存储位置,更多的是能够提供对所存储数据的处理功能,满足业务需要。
下面是一些在项目开发过程中经常使用的数据库设计功能点,请给出设计的思路及具体代码。
1)在应用程序中,对于数据库中提供的数据记录要进行显示,当记录比较多的时候,要进行分页显示。
请设计一个存储过程,能够分页提供所需要的产品信息,存储过程名称为getProductbyPage,存储过程的参数为每页显示的数据及记录条数pagesize和要获取的是哪一个分页的数据库pageindex,存储过程能够得到所需要的该分页中的记录集合。
CREATEprocegetProductbyPage
(@pagesizechar(10)
@pageindexchar(100)
)
as
setnocounton
begin
declare@indextabletable(idintidentity(1,1),nidint)--定义表变量
declare@PageLowerBoundint--定义此页的底码
declare@PageUpperBoundint--定义此页的顶码
set@PageLowerBound=(@pageindex-1)*@pagesize
set@PageUpperBound=@PageLowerBound+@pagesize
setrowcount@PageUpperBound
insertinto@indextable(nid)selectgidfromTGongwen
wherefariqi>
dateadd(day,-365,getdate())orderbyfariqidesc
selectO.gid,O.mid,O.title,O.fadanwei,O.fariqifromTGongwenO,@indextablet
whereO.gid=t.nidandt.id>
@PageLowerBound
andt.id<
=@PageUpperBoundorderb