Transcript 設計資料倉儲範例
CHAP 5 設計資料倉儲綱要
利用SQL Server 2000 的
Northwind 資料庫
示範資料庫如何轉換到資料倉儲
產生星狀或雪花綱要
Reference
資料倉儲與Analysis Service
SQL Server 2000 OLAP 解決方
案(沈兆陽,文魁)
1
資料庫應用
匯入Northwind(北風資料庫)
2
在SQL Server 2005 匯入SQL Server 2000 的
Northwind(北風資料庫)
請執行程式:SQL2005_Insert_Northwind.sql
5_設計資料倉儲綱要
Northwind 資料庫簡介
Northwind ﹕
3
一個貿易公司營運所使用的資料庫
是一個OLTP的資料庫
以交易為處理單位
以正規化的方式來設計
擁有較多資料表,但每個資料表擁有的欄位數較少
這是OLTP資料庫的特性之ㄧ
安裝好SQL Server 2000後,此資料庫即存在
5_設計資料倉儲綱要
Northwind 綱要介紹
-含13個資料表(1)
1.
4
Categories:產品類型檔( 4
個欄位,共 8 筆記錄)
CategoryID:產品類型
的識別號碼主鍵
CategoryName:產品
類型的名稱
Description:產品類型
的描述
Picture:產品的圖片
2.
CustomerCustomerDemo:顧
客所屬類別檔(2個欄位,0筆記
錄)
CustomerID:顧客識別號碼
複合主鍵
CustomerTypeID:顧客類別
識別碼複合主鍵
5_設計資料倉儲綱要
Northwind 綱要介紹
-含13個資料表(2)
3.
CustomerDemographics:顧
客類別主檔( 2個欄位,0筆記
錄)
CustomerTypeID:顧客類
別識別碼主鍵
CustomerDesc:顧客類別
描述
4.
Customers:顧客檔( 11個欄
位,共91筆記錄)
5
CustomerID:顧客識別號碼主
鍵
CustomerName:顧客公司名稱
ContactName:聯絡人姓名
ContactTitle:聯絡人職稱
Address:顧客住址
City:城市名稱
Region:地區名稱
PostalCode:郵遞區號
Country:國家名稱
Phone:電話號碼
Fax:傳真號碼
5_設計資料倉儲綱要
Northwind 綱要介紹
-含13個資料表(3)
5.
6
Employees :員工檔( 18個欄位,共9筆記錄)
6.
EmployeeID:員工識別號碼(主鍵)
LastName:員工姓氏
FirstName:員工名字
Title:員工職稱
TitleOfCourtesy:員工的尊稱(例如:先
生、女士)
BirthDate:生日
HireDate:僱用日期
Address:住址
City:城市名稱
Region:地區名稱
PostalCode:郵遞區號
Country:國家名稱
HomePhone:住家電話
Extension:公司內分機號碼
Photo:照片
Notes:員工相關描述
ReportsTo:員工經理的員工號碼
PhotoPath:照片的路徑名稱
EmployeeTerritories :員工
所屬區域檔( 2個欄位,共49
筆記錄)
EmployeeID:員工識別號
碼複合主鍵
TerritoryID:員工負責區域
識別碼複合主鍵
P.S. 一個員工可以負責多個區域
5_設計資料倉儲綱要
Northwind 綱要介紹
-含13個資料表(4)
7.
Order Details:訂單詳細檔
( 5個欄位,共2155筆記錄)
OrderID:訂單號碼複
合主鍵
ProductID:產品識別碼
複合主鍵
UnitPrice:產品單價
Quantity:訂購數量
Discount:折扣
8.
Orders:訂單檔( 14個欄位,共
830筆記錄)
7
OrderID:訂單識別號碼複合主鍵
CustomerID:顧客識別碼複合主
鍵
EmplyoeeID:承辦員工的員工號碼
OrderDate:訂購日期
RequiredDate:訂單的需要日期
ShippedDate:送貨日期
ShipVia:負責貨運公司的識別碼
Freight:貨運的價格(運費)
ShipName:送貨姓名(接受者)
ShipAddress:送貨住址
ShipCity:送貨的城市名稱
ShipRegion:送貨的地區名稱
ShipPostalCode:送貨的郵遞區號
ShipCountry:送貨的國家名稱
5_設計資料倉儲綱要
Northwind 綱要介紹
-含13個資料表(5)
9.
8
Products:產品檔( 10個欄位,共 10.
77筆記錄)
ProductID:產品識別碼主鍵
ProductName:產品名稱
SupplierID:供應商識別碼
CategoryID:產品分類識別碼
QuantityPerUnit:每單位的尺寸、
大小、數量
UnitPrice:產品單價
UuitsInStock:庫存數量
UuitsOnOrder:一次訂貨數量
ReorderLevel:重新訂貨最低庫
存量
Discontinued:是否停售
Region :區域資料檔( 2個欄
位,共4筆記錄)
RegionID:區域的識別號
碼主鍵
RegionDescription:區域
的名稱
5_設計資料倉儲綱要
Northwind 綱要介紹
-含13個資料表(6)
11.
Shippers :貨運公司資料檔
( 3個欄位,共3筆記錄)
ShipperID:貨運公司的識
別號碼主鍵
CompanyName:貨運公
司的名稱
Phone:貨運公司的電話
號碼
12.
Suppliers:供應商資料檔( 12個
欄位,共29筆記錄)
9
SupplierID:供應商的識別號碼
主鍵
CompanyName:公司名稱
ContactName:聯絡人姓名
ContactTitle:聯絡人職稱
Address:住址
City:城市名稱
Region:地區名稱
PostalCode:郵遞區號
Country:國家名稱
Phone:電話號碼
Fax:傳真號碼
Homepage:公司網址
5_設計資料倉儲綱要
Northwind 綱要介紹
-含13個資料表(7)
13.
Territories :員工負責區域資料檔( 3個欄位,共53筆記錄)
TerritoryID:區域的識別號碼主鍵
TerritoryDescription:區域的描述
RegionID:所屬地區的識別碼
P.S. 一筆Region資料可以對應多筆Territory資料
10
5_設計資料倉儲綱要
Northwind–關聯圖
11
5_設計資料倉儲綱要
需求分析
需求彙總結果
1.
2.
3.
4.
5.
6.
7.
8.
9.
12
針對每一員工做銷售業績分析
針對每一產品做銷售業績分析
針對每一分類的產品做銷售分析
針對每一供應商做產品銷售分析
針對每一顧客做銷售分析
針對每一國家的顧客做銷售分析
針對每一地區的顧客做銷售分析
針對每一城市的顧客做銷售分析
針對年度、季、月做銷售分析
5_設計資料倉儲綱要
歸納需求分析
歸納出有五個索引基準點:
1.
2.
3.
4.
5.
13
顧客:
除了可做單一顧客分析外
可以國別、地區、城市來分析
具有階層的關係
員工:單一員工做分析
產品:
除了可做單一產品分析外
可以產品分類來分析
供應商:單一供應商
時間:為一年、月、日的階層關係
5_設計資料倉儲綱要
產生維度資料
事實上,維度就是一種索引方式,所以歸納出有五種
維度資料:
1.
2.
3.
4.
5.
14
顧客維度
員工維度
產品維度
供應商維度
時間維度
5_設計資料倉儲綱要
Northwind資料庫
-資料篩選 & 分析維度(1)
篩選原來的13個檔案及欄位後, 4. Customers:顧客檔( 6個
欄位,共91筆記錄)
留下需要的8個檔案,分別為:
1.
Categories:產品類型檔( 2
CustomerID:顧客識別號碼
個欄位,共 8 筆記錄)
主鍵
CustomerName:顧客公司
CategoryID:產品類型
名稱
的識別號碼主鍵
ContactName:聯絡人姓名
CategoryName:產品
City:城市名稱
類型的名稱
Region:地區名稱
屬於產品維度
Country:國家名稱
屬於顧客維度
其中Country、Region、City
具有階層式的關係
15
5_設計資料倉儲綱要
Northwind資料庫
-資料篩選 & 分析維度(2)
Employees :員工檔( 8個欄位, 7. Order Details:訂單詳細檔( 5個欄
共9筆記錄)
位,共2155筆記錄)
EmployeeID:員工識別號碼
OrderID:訂單號碼複合主鍵
主鍵
ProductID:產品識別碼複合
LastName:員工姓氏
主鍵
FirstName:員工名字
UnitPrice:產品單價
Title:員工職稱
Quantity:訂購數量
City:城市名稱
Discount:折扣
Region:地區名稱
其中OrderID、UnitPrice、
Country:國家名稱
Quantity、Discount不會隨時間
ReportsTo:員工經理的員工
而改變;且不會以訂單號碼、訂
號碼
購數量、折扣為基準來分析資料
屬於員工維度
,所以是事實資料
排除Country、Region、City具有階
其中ProductID屬於產品維度
層式的關係,因為不會對員工來自
5_設計資料倉儲綱要
何處感興趣
5.
16
Northwind資料庫
-資料篩選 & 分析維度(3)
8.
Orders:訂單檔( 5個欄位,
共830筆記錄)
17
9.
Products:產品檔( 6個欄位,共
77筆記錄)
OrderID:訂單識別號碼複
ProductID:產品識別碼主鍵
合主鍵
ProductName:產品名稱
CustomerID:顧客識別碼
SupplierID:供應商識別碼
複合主鍵
CategoryID:產品分類識別碼
EmplyoeeID:承辦員工的員
QuantityPerUnit:每單位數量
工號碼
UnitPrice:產品單價
OrderDate:訂購日期
ShipVia:負責貨運公司的識 其中UnitPrice、QuantityPerUnit
不會隨時間而改變,且不會以產品
別碼
單價、每單位數量為基準來分析資
其中OrderID不會隨時間而改變
料,所以是事實資料
,且不會以訂單號碼為基準來
分析資料,所以它是事實資料 其中ProductID、ProductName、
CategoryID屬於產品維度
其中CustomerID屬於顧客維度
其中EmployeeID屬於員工維度 其中SupplierID屬於供應商維度
其中Orderdate屬於時間維度
5_設計資料倉儲綱要
Northwind資料庫
-資料篩選 & 分析維度(4)
11.
Shippers :貨運公司資料 12. Suppliers:供應商資料檔
檔( 2個欄位,共3筆記錄)
( 4個欄位,共29筆記錄)
ShipperD:貨運公司的識
別號碼主鍵
CompanyName:貨運公
司的名稱
SupplierID:供應商的識別號
碼主鍵
CompanyName:公司名稱
City:城市名稱
Country:國家名稱
因為Orders資料表不分析
ShipVia欄位,所以排除整 排除City與Country,因為需求
個Shippers資料表
分析沒有要求供應商要以國別
及城市來分析資料
其中SupplierID、
CompanyName屬於供應商維
度
18
5_設計資料倉儲綱要
設計事實資料表-Salses
事實資料:
維度資料:
單價存在於 Product 資料表
總銷售金額必須透過現存的欄位計算而得,稱為衍生欄位
事實資料表尚需包含索引所使用的欄位
19
折扣:分析哪一折扣範圍的產品銷售狀況最佳
單價:分析哪一單價範圍的產品銷售狀況最佳
關心:一個產品在一個訂單中的總銷售金額及該產品的單價
OrderID 與 Quantity 是因公司銷售行為而產生出來的,所以一定
是事實資料
員工號碼、產品號碼、供應商號碼、顧客號碼、以及訂購日期
5_設計資料倉儲綱要
設計事實資料表-Salses -欄位
事實資料表:Sales
20
欄位:
EmployeeID:員工號碼主索引鍵欄位 來自Employees資料表
ProductID:產品號碼主索引鍵欄位
來自Products資料表
SupplierID:供應商號碼主索引鍵欄位來自Suppliers資料表
CustomerID:顧客號碼主索引鍵欄位 來自Customers資料表
OrderDate:訂購日期主索引鍵欄位 來自Orders資料表
UnitPrice:產品單價事實量值欄位
來自Order Details資料表
Total:單項總價Total=Quantity * UnitPrice *(1.0-Discount)
事實量值欄位
Quantity:訂購數量事實量值欄位
來自Order Details資料表
Discount:折扣
事實量值欄位 來自Order Details資料表
來源資料表:
Orders、Order Details、Employees、Products、Suppliers、
Customers
5_設計資料倉儲綱要
設計事實資料表-Salses - SQL敘述
21
SQL敘述:
select e.EmployeeID, p.ProductID, s.SupplierID,
c.CustomerID, o.OrderDate, od.UnitPrice,
od.Quantity * od.UnitPrice * (1.0- od.Discount) total,
od.Quantity, od.Discount
From Orders o, [Order Details] od, Employees e,
Products p, Suppliers s, Customers c
where o.orderID=od.OrderID
and o.EmployeeID=e.EmployeeID
and o.CustomerID=c.CustomerID
and od.ProductID=p.ProductID
and p.SupplierID=s.SupplierID
5_設計資料倉儲綱要
設計員工維度資料表-Employee
員工維度資料表:Employee
22
欄位:
EmployeeID:員工號碼主索引鍵欄位
Name:員工姓名 Name=FirstName + ’ ‘ +LastName
Title:員工職稱
ReportsTo:員工經理的員工號碼
來源資料表:
Employees
資料綱要:星狀綱要
SQL敘述:
select EmployeeID, FirstName+’ ‘+LastName Name, Title, ReportsTo
from Employees
5_設計資料倉儲綱要
設計產品維度資料表
產品維度資料表-Product
產品維度資料表: Product
23
欄位:
ProductID:產品號碼主索引鍵欄位
CategoryID:產品分類號碼
ProductName:產品名稱
QuantityPerUnit:每單位數量
來源資料表:
Products
資料綱要:雪花綱要
SQL敘述:
select ProductID, CategoryID, ProductName, QuantityPerUnit
from Products
5_設計資料倉儲綱要
設計產品維度資料表
產品分類維度資料表-Category
產品分類維度資料表: Category
24
欄位:
CategoryID:產品分類號碼主索引鍵欄位
CategoryName:產品分類名稱
來源資料表:
Categories
資料綱要:雪花綱要
SQL敘述:
select CategoryID, CategoryName
from Categories
5_設計資料倉儲綱要
設計供應商維度資料表-Supplier
供應商維度資料表: Supplier
欄位:
SupplierID:供應商號碼主索引鍵欄位
SupplierName:供應商名稱 SupplierName =
CompanyName
25
來源資料表:
Suppliers
資料綱要:星狀綱要
SQL敘述:
select SupplierID, CompanyName SupplierName
from Suppliers
5_設計資料倉儲綱要
設計顧客維度資料表-Customer
顧客維度資料表: Customer
26
欄位:
CustomerID:顧客號碼主索引鍵欄位
CustomerName:公司名稱 CustomerName = CompanyName
ContactName:聯絡人
City :城市名稱
Region:地區名稱
Country:國家名稱
來源資料表:
Customers
資料綱要:星狀綱要
SQL敘述:
select CustomerID, CompanyName CustomerName, ContactName, City,
Region, Country
from Customers
階層欄位:
Country
→ Region → City
5_設計資料倉儲綱要
設計時間維度資料表-Time
時間維度資料表: Time
27
欄位:
OrderDate:訂購日期主索引鍵欄位
來源資料表:
Orders
SQL敘述:
select DISTINCT OrderDate
from Orders
5_設計資料倉儲綱要
星狀雪花綱要
28
一個資料倉儲最適合的綱要類型:
將反正規化的星狀綱要與正規化的雪花式綱要合併一起使用,
而成為星狀雪花綱要
分析上述五個維度資料表
四個維度採星狀綱要:
Employee 員工維度資料表
Time 時間維度資料表
Supplier 供應商維度資料表
Customer 顧客維度資料表
產品維度採雪花式綱要,包含了兩個資料表
Product 與 category
5_設計資料倉儲綱要
Northwind_DW資料倉儲的資料表間關係
-主索引鍵及外部索引鍵 (外來鍵)對應關係 P 5-38
主索引鍵(主鍵)
29
外來鍵
資料表
欄位
資料表
欄位
Time
OrderDate
Sales
OrderDate
Customer
CustomerID
Sales
CustomerID
Employee
EmployeeID
Sales
EmployeeID
Supplier
SupplierID
Sales
SupplierID
Product
ProductID
Sales
ProductID
Category
CategoryID
Product
CategoryID
5_設計資料倉儲綱要
Northwind_DW資料倉儲-
事實資料表/維度資料表的關連性(關聯圖) P 5-37
事實資料表
同一個維度
雪花結構
30
5_設計資料倉儲綱要
多重維度綱要 - 常見的查詢
31
分析資料時不以單一維度為基準,而以多個維度為依據
例如:Northwind_DW資料倉儲,常見的查詢如下:
查詢SUPPLIER1供應商於1997年提供了多少金額的產品
查詢SUPPLIER1供應商於1997年提供了多少金額的
PRODUCT1產品
查詢EMPLOYEE1員工於1997年銷售了多少金額的
PRODUCT1產品
查詢EMPLOYEE1員工於1997年銷售了多少金額的
SUPPLIER1供應商的產品
查詢EMPLOYEE1員工於1997年銷售了多少金額的產品給
CUSTOMER1顧客
5_設計資料倉儲綱要
多重維度綱要 - CUBE
CUBE(多重維度綱要):
32
每個查詢都用到多重的維度,應將多個維度集合在一起成為
一個單位,且一併加以考量而成為一個CUBE(多重維度綱
要)
5_設計資料倉儲綱要