PDF

Hướng dẫn SQL & XQuery cho IBM DB2, Phần phụ lục:
Phụ lục A
Tất cả các bảng trong cơ sở dữ liệu Aroma và các mối quan hệ giữa
chúng với nhau
Pat Moffatt ([email protected])
Giám đốc Chương trình quản lý thông tin, Sáng kiến học
đường
IBM
23 10 2009
Bruce Creighton ([email protected])
Chuyên viên lập kế hoạch các phần kỹ năng
IBM
Jessica Cao
Chuyên viên phát triển các công cụ đào tạo
IBM
Phụ lục A mô tả tất cả các bảng trong cơ sở dữ liệu Aroma, bao gồm hai lược đồ: một lược đồ
hình sao đơn giản cho các thông tin bán lẻ và một lược đồ nhiều hình sao (multistar) cho các
thông tin mua hàng. Phụ lục này nằm trong loạt bài hướng dẫn về SQL & XQuery cho IBM DB2..
Xem thêm bài trong loạt bài này
Về phụ lục này
Phụ lục A mô tả tất cả các bảng trong cơ sở dữ liệu Aroma, bao gồm hai lược đồ: một lược đồ hình
sao đơn giản cho các thông tin bán lẻ và một lược đồ nhiều hình sao (multistar) cho các thông tin
mua hàng.
Hầu hết các thí dụ trong bài viết này sử dụng các bảng trong lược đồ bán lẻ. Các bảng mua hàng
được sử dụng trong một vài ví dụ yêu cầu một lược đồ linh hoạt hơn để minh hoạ phù hợp.
Kết nối tới cơ sở dữ liệu
Bạn cần phải kết nối đến một cơ sở dữ liệu trước khi bạn có thể sử dụng câu lệnh SQL để truy vấn
hoặc thao tác với các dữ liệu. Câu lệnh CONNECT kết hợp một kết nối cơ sở dữ liệu với một tên
người sử dụng.
© Copyright IBM Corporation 2009
Hướng dẫn SQL & XQuery cho IBM DB2, Phần phụ lục: Phụ lục A
Nhẫn hiệu đăng ký
Trang 1 của 17
developerWorks®
ibm.com/developerWorks/vn/
Bạn hãy hỏi giảng viên hướng dẫn của bạn về tên cơ sở dữ liệu mà bạn cần phải kết nối tới. Đối với
loạt bài hướng dẫn này, tên cơ sở dữ liệu là aromadb.
Để kết nối vào cơ sở dữ liệu aromadb, hãy gõ nhập lệnh sau đây tại trình xử lý dòng lệnh DB2:
CONNECT TO aromadb USER userid USING password
Thay thế userid và password bằng mã nhận dạng ID người sử dụng và mật khẩu mà bạn nhận được
từ giảng viên hướng dẫn. Nếu không yêu cầu phải có ID người sử dụng và mật khẩu, thì bạn chỉ cần
sử dụng câu lệnh sau:
CONNECT TO aromadb
Thông điệp sau cho biết bạn đã thực hiện thành công kết nối:
Database Connection Information
Database server
= DB2/NT 9.0.0
SQL authorization ID = USERID
Local database alias = AROMADB
Một khi bạn đã được kết nối, bạn có thể bắt đầu sử dụng cơ sở dữ liệu.
Cơ sở dữ liệu Aroma: lược đồ bán lẻ
Hầu hết các ví dụ trong tài liệu hướng dẫn này được dựa trên dữ liệu của cơ sở dữ liệu Aroma cơ
bản, cơ sở dữ liệu này theo dõi việc bán lẻ hàng hàng ngày tại các cửa hàng của công ty Aroma
Coffee and Tea. Hình 1 minh hoạ lược đồ cơ bản này.
Hình 1. Lược đồ cơ bản
Các hình chân chim trong lược đồ này biểu thị mối quan hệ một - nhiều giữa hai bảng. Ví dụ, mỗi
giá trị phân biệt trong cột Perkey của bảng Period có thể chỉ xảy ra một lần trong bảng đó, nhưng
xảy ra nhiều lần trong bảng Sales.
Lược đồ Aroma cơ bản
Các bảng sau đây tạo thành cơ sở dữ liệu Aroma cơ bản:
Hướng dẫn SQL & XQuery cho IBM DB2, Phần phụ lục: Phụ lục A
Trang 2 của 17
ibm.com/developerWorks/vn/
developerWorks®
Period
Định nghĩa các khoảng thời gian như ngày, tháng, và năm.
Class
Định nghĩa lớp các sản phẩm bán tại cửa hàng bán lẻ.
Product
Định nghĩa các sản phẩm riêng biệt bán tại cửa hàng bán lẻ, bao gồm cà
phê và trà dạng đóng gói và dạng để rời, máy pha cà phê.
Market
Định nghĩa thị trường của doanh nghiệp theo vùng địa lý.
Store
Định nghĩa các cửa hàng bán lẻ riêng biệt thuộc sở hữu và vận hành bởi
công ty Aroma Coffee and Tea.
Promotion
Định nghĩa các loại hình, khoảng thời gian và trị giá của các chương
trình khuyến mãi trên các sản phẩm khác nhau.
Sales
Chứa số doanh thu bán hàng cho các sản phẩm của Aroma trong các
khoảng thời gian tại các cửa hàng khác nhau.
Gold
Chứa danh sách khách hàng đã mua các loại thẻ khuyến mãi.
Các bảng Period (thời kỳ), Class (lớp sản phẩm), Product (sản phẩm), Market (thị trường), Store
(cửa hàng bán lẻ), Promotion (khuyến mãi) và Gold (khách hàng vàng) là những ví dụ về những
bảng chiều (dimensions) của hoạt động kinh doanh tiêu biểu. Chúng nhỏ và chứa các dữ liệu mô tả
quen thuộc với người sử dụng
Bảng Sales là một ví dụ tốt về một bảng sự kiện. Nó chứa hàng ngàn hàng, và các thông tin bổ
xung thêm rộng rãi của nó được truy cập trong các truy vấn bằng các phép nối tới các bảng chiều
mà nó tham chiếu.
Dữ liệu mẫu của các bảng Class và Product
Truy vấn
SELECT * FROM aroma.class;
Kết quả
Classkey
Lớp sản phẩm
Mô tả lớp
1
Bulk_beans
Các sản phẩm cà phê rời
2
Bulk_tea
Các sản phẩm chè rời
3
Bulk_spice
Các gia vị rời
4
Pkg_coffee
Các sản phẩm cà phê đóng gói riêng
biệt
5
Pkg_tea
Các sản phẩm chè đóng gói riêng biệt
6
Pkg_spice
Các sản phẩm gia vị đóng gói riêng
biệt
7
Hardware
Chén cà phê, chén chè, lọ gia vị,
máy pha cà phê espresso
8
Gifts
Các mẫu thêu, hộp quà tặng, giỏ quà
12
Clothing
Áo T-shirts và mũ vải
Truy vấn
SELECT * FROM aroma.product;
Hướng dẫn SQL & XQuery cho IBM DB2, Phần phụ lục: Phụ lục A
Trang 3 của 17
developerWorks®
ibm.com/developerWorks/vn/
Kết quả
Classkey
Prodkey
Prod_Name
Pkg_Type
1
0
Veracruzano
No pkg
1
1
Xalapa Lapa
No pkg
1
10
Colombiano
No pkg
1
11
Expresso XO
No pkg
1
12
La Antigua
No pkg
1
20
Lotta Latte
No pkg
1
21
Cafe Au Lait
No pkg
1
22
NA Lite
No pkg
1
30
Aroma Roma
No pkg
1
31
Demitasse Ms
No pkg
2
0
Darjeeling Number 1
No pkg
2
1
Darjeeling Special
No pkg
2
10
Assam Grade A
No pkg
...
Bảng Class và Product
Bảng Product mô tả các sản phẩm được định nghĩa trong các cơ sở dữ liệu Aroma. Bảng Class mô
tả các lớp sản phẩm của các sản phẩm nói trên.
Mô tả Cột: Bảng Class
Tên cột
Nội dung
classkey
Kiểu số nguyên (integer), là mã định danh một hàng trong bảng Class.
Classkey là khóa chính.
class_type
Chuỗi ký tự là mã định danh một nhóm sản phẩm.
class_desc
Chuỗi ký tự mô tả một nhóm sản phẩm.
Mô tả cột: Bảng Product
Tên cột
Nội dung
classkey
Tham chiếu khóa ngoài tới bảng Class.
prodkey
Kiểu số nguyên (integer), kết hợp với một giá trị của Classkey làm mã
định danh một hàng trong bảng Product. Classkey/prodkey là khóa
chính gồm hai cột.
prod_name
Chuỗi ký tự là mã định danh một sản phẩm. Cơ sở dữ liệu chứa 59 sản
phẩm. Một cơ sở dữ liệu điền đầy đủ dữ liệu sẽ có nhiều sản phẩm hơn
nữa. Mặc dù một số sản phẩm của Aroma có cùng tên, chúng thuộc các
lớp khác nhau và có kiểu đóng gói khác nhau.
pkg_type
Chuỗi ký tự là mã định danh một kiểu đóng gói cho mỗi sản phẩm.
Dữ liệu mẫu của các bảng Store và Market
Hướng dẫn SQL & XQuery cho IBM DB2, Phần phụ lục: Phụ lục A
Trang 4 của 17
ibm.com/developerWorks/vn/
developerWorks®
Truy vấn
SELECT * FROM aroma.market;
Kết quả
Mktkey
HQ_City
HQ_State
District
Region
1
Atlanta
GA
Atlanta
South
2
Miami
FL
Atlanta
South
3
New Orleans
LA
New Orleans
South
4
Houston
TX
New Orleans
South
5
New York
NY
New York
North
...
Truy vấn
SELECT * FROM aroma.store;
Kết quả
Storekey
Mktkey
Store_Type
Store_Name
Street
City
State
Zip
1
14
Small
Roasters, Los
Gatos
1234 University
Ave
Los Gatos
CA
95032
2
14
Large
San Jose
Roasting
Company
5678 Bascom
Ave
San Jose
CA
95156
3
14
Medium
Cupertino
Coffee Supply
987 DeAnza
Blvd
Cupertino
CA
97865
4
3
Medium
Moulin Rouge
Roasting
898 Main Street
New Orleans
LA
70125
5
10
Small
Moon Pennies
98675
University Ave
Detroit
MI
48209
6
9
Small
The Coffee Club 9865 Lakeshore
Blvd
Chicago
IL
06060
...
Bảng Market và Store
Bảng Store định nghĩa các cửa hàng của công ty Aroma Coffee and Tea. Bảng Market mô tả các
thị trường tại Mỹ mà mỗi cửa hàng nằm trong thị trường đó. Mỗi thị trường được xác định bởi một
thành phố thủ phủ. Bảng Market là một bảng ngoài, giống như bảng Class.
Mô tả cột: Bảng Market
Tên cột
Nội dung
Mktkey
Kiểu số nguyên (integer), là mã định danh một hàng trong bảng Market.
Mktkey là khóa chính.
hq_city
Chuỗi ký tự là mã định danh một thành phố. Bảng Market định nghĩa 17
thành phố. Một cơ sở dữ liệu đầy đủ có thể có hàng ngàn thành phố.
Hướng dẫn SQL & XQuery cho IBM DB2, Phần phụ lục: Phụ lục A
Trang 5 của 17
developerWorks®
ibm.com/developerWorks/vn/
State
Chuỗi ký tự là mã định danh một bang.
District
Chuỗi ký tự là mã định danh một hạt được dựa trên thành phố thủ phủ.
Một cơ sở dữ liệu toàn cầu sẽ chứa tên các quốc gia hoặc đất nước hay
khu vực địa lý khác.
Region
Chuỗi ký tự là mã định danh một vùng. Bảng Market chỉ định nghĩa 4
vùng trên toàn lãnh thổ Mỹ. Một cơ sở dữ liệu toàn diện sẽ bao gồm
nhiều vùng và có thể nhiều hạt trong một vùng.
Mô tả Cột: Bảng Store
Tên cột
Nội dung
storekey
Kiểu số nguyên (integer), là mã định danh một hàng trong bảng Store.
Storekey là khóa chính.
Mktkey
Tham chiếu khóa ngoài tới bảng Market.
store_type
Chuỗi ký tự xác định một cửa hàng theo kích cỡ.
store_name
Chuỗi ký tự xác định một cửa hàng theo tên.
street, city, state, zip
Các cột xác định địa chỉ của mỗi cửa hàng.
Dữ liệu mẫu của bảng Period
Truy vấn
SELECT * FROM aroma.period;
Kết quả
Perkey
Date
Day
Week
Month
Qtr
Year
1
2004-01-01
TH
1
JAN
Q1_04
2004
2
2004-01-02
FR
1
JAN
Q1_04
2004
3
2004-01-03
SA
1
JAN
Q1_04
2004
4
2004-01-04
SU
2
JAN
Q1_04
2004
5
2004-01-05
MO
2
JAN
Q1_04
2004
6
2004-01-06
TU
2
JAN
Q1_04
2004
7
2004-01-07
WE
2
JAN
Q1_04
2004
8
2004-01-08
TH
2
JAN
Q1_04
2004
9
2004-01-09
FR
2
JAN
Q1_04
2004
10
2004-01-10
SA
2
JAN
Q1_04
2004
11
2004-01-11
SU
3
JAN
Q1_04
2004
12
2004-01-12
MO
3
JAN
Q1_04
2004
13
2004-01-13
TU
3
JAN
Q1_04
2004
14
2004-01-14
WE
3
JAN
Q1_04
2004
15
2004-01-15
TH
3
JAN
Q1_04
2004
16
2004-01-16
FR
3
JAN
Q1_04
2004
17
2004-01-17
SA
3
JAN
Q1_04
2004
Hướng dẫn SQL & XQuery cho IBM DB2, Phần phụ lục: Phụ lục A
Trang 6 của 17
ibm.com/developerWorks/vn/
developerWorks®
18
2004-01-18
SU
4
JAN
Q1_04
2004
19
2004-01-19
MO
4
JAN
Q1_04
2004
20
2004-01-20
TU
4
JAN
Q1_04
2004
...
Bảng Period
Bảng Period định nghĩa các khoảng thời gian là hàng ngày, hàng tuần, hàng tháng, hàng quý, hàng
năm cho các năm 2004, năm 2005, và quý I năm 2006.
Mô tả cột
Tên cột
Nội dung
Perkey
Kiểu số nguyên (integer), là mã định danh một hàng trong bảng Period.
Perkey là khóa chính.
Date
Giá trị ngày tháng, xác định một ngày kể từ ngày 1 tháng Một, 1998
đến ngày 31 tháng Ba, 2000.
Day
Chuỗi ký tự viết tắt của các ngày trong tuần.
Week
Kiểu số nguyên (integer), xác định mỗi tuần của năm theo số thứ tự
của tuần (Tuần số 1 đến tuần số 53, mỗi tuần mới bắt đầu vào ngày chủ
nhật).
Month
Chuỗi ký tự viết tắt tên của mỗi tháng.
Qtr
Chuỗi ký tự xác định duy nhất mỗi quý (ví dụ, Q1_98, Q3_99).
Year
Kiểu số nguyên (integer), xác định một năm.
Dữ liệu mẫu của bảng Promotion
Truy vấn
SELECT * FROM aroma.promotion;
Kết quả
Promokey
Promo_Type
Promo_Desc
Value
Start_Date
End_Date
0
1
No promotion
0.00
9999-01-01
9999-01-01
1
100
Aroma catalog
coupon
1.00
2004-01-01
2004-01-31
2
100
Aroma catalog
coupon
1.00
2004-02-01
2004-02-29
3
100
Aroma catalog
coupon
1.00
2004-03-01
2004-03-31
4
100
Aroma catalog
coupon
1.00
2004-04-01
2004-04-30
5
100
Aroma catalog
coupon
1.00
2004-05-01
2004-05-31
6
100
Aroma catalog
coupon
1.00
2004-06-01
2004-06-30
Hướng dẫn SQL & XQuery cho IBM DB2, Phần phụ lục: Phụ lục A
Trang 7 của 17
developerWorks®
ibm.com/developerWorks/vn/
7
100
Aroma catalog
coupon
1.00
2004-07-01
2004-07-31
8
100
Aroma catalog
coupon
1.00
2004-08-01
2004-08-31
9
100
Aroma catalog
coupon
1.00
2004-09-01
2004-09-30
10
100
Aroma catalog
coupon
1.00
2004-10-01
2004-10-31
11
100
Aroma catalog
coupon
1.00
2004-11-01
2004-11-30
12
100
Aroma catalog
coupon
1.00
2004-12-01
2004-12-31
13
100
Aroma catalog
coupon
1.00
2005-01-01
2005-01-31
14
100
Aroma catalog
coupon
1.00
2005-02-01
2005-02-28
15
100
Aroma catalog
coupon
1.00
2005-03-01
2005-03-31
16
100
Aroma catalog
coupon
1.00
2005-04-01
2005-04-30
17
100
Aroma catalog
coupon
1.00
2005-05-01
2005-05-31
18
100
Aroma catalog
coupon
1.00
2005-06-01
2005-06-30
19
100
Aroma catalog
coupon
1.00
2005-07-01
2005-07-31
20
100
Aroma catalog
coupon
1.00
2005-08-01
2005-08-31
...
Bảng Promotion
Bảng Promotion là một bảng chiều, nó mô tả chương trình khuyến mãi được áp dụng cho các sản
phẩm khác nhau trong các khoảng thời gian khác nhau. Các bảng Promotion đôi khi được gọi là
bảng điều kiện, vì chúng cho biết các điều kiện theo đó hàng hóa được bán.
Mô tả cột
Tên cột
Nội dung
promokey
Kiểu số nguyên (integer), là mã định danh một hàng trong bảng
Promotion. Promokey là khóa chính.
promo_type
Kiểu số nguyên (integer), là mã định danh chương trình khuyến mãi (mã
số khuyến mãi).
promo_desc
Chuỗi ký tự mô tả các loại hình khuyến mãi.
value
Số thập phân, biểu diễn giá trị tính bằng đô-la của chương trình khuyến
mãi, ví dụ như giảm giá hoặc giá trị của một phiếu giảm giá.
start_date, end_date
Giá trị ngày tháng, cho biết khi nào khuyến mại bắt đầu và kết thúc.
Hướng dẫn SQL & XQuery cho IBM DB2, Phần phụ lục: Phụ lục A
Trang 8 của 17
ibm.com/developerWorks/vn/
developerWorks®
Dữ liệu mẫu của bảng Sales
Truy vấn
SELECT * FROM aroma.sales;
Kết quả
Perkey
Classkey
Prodkey
Storekey
Promokey
Quantity
Dollars
2
2
0
1
116
8
34.00
2
4
12
1
116
9
60.75
2
1
11
1
116
40
270.00
2
2
30
1
116
16
36.00
2
5
22
1
116
11
30.25
2
1
30
1
116
30
187.50
2
1
10
1
116
25
143.75
2
4
10
2
0
12
87.00
2
4
11
2
0
14
115.50
2
2
22
2
0
18
58.50
2
4
0
2
0
17
136.00
2
5
0
2
0
13
74.75
2
4
30
2
0
14
101.50
2
2
10
2
0
18
63.00
2
1
22
3
0
11
99.00
2
6
46
3
0
6
36.00
2
5
12
3
0
10
40.00
2
1
11
3
0
36
279.00
2
5
1
3
0
11
132.00
2
5
10
3
0
12
48.00
...
Bảng Sales
Khoá chính gồm nhiều phần
Bảng Sales chứa một khoá chính gồm nhiều phần: Mỗi một cột trong năm cột của nó là tham chiếu
khóa ngoài tới một khóa chính của một bảng khác:
perkey, classkey, prodkey, storekey, promokey
Khóa chính này liên kết các dữ liệu của bảng Sales tới các bảng chiều Period, Product, Store và
Promotion.
Các phép nối tới bảng Sales được hiển thị trong các ví dụ trong suốt loạt bài hướng dẫn này.
Hướng dẫn SQL & XQuery cho IBM DB2, Phần phụ lục: Phụ lục A
Trang 9 của 17
developerWorks®
ibm.com/developerWorks/vn/
Mô tả cột
Tên cột
Nội dung
perkey
Tham chiếu khóa ngoài tới bảng Period.
classkey
Tham chiếu khóa ngoài tới bảng Class.
prodkey
Tham chiếu khóa ngoài tới bảng Product.
storekey
Tham chiếu khóa ngoài tới bảng Store.
promokey
Tham chiếu khóa ngoài tới bảng Promotion.
quantity
Kiểu số nguyên (integer), biểu diễn tổng số lượng bán ra (theo ngày).
dollars
Số thập phân, là số tiền bán hàng tính bằng đô la (theo ngày).
Dữ liệu mẫu của bảng Gold
Lưu ý: Các học viên sẽ không tìm thấy bảng này trong cơ sở dữ liệu Aroma sau khi khởi tạo. Nó
được dự tính là do học viên tạo ra tại phần 6 Ngôn ngữ định nghĩa và kiểm soát dữ liệu của loạt bài
hướng dẫn này (developerWorks, tháng Tám năm 2006).
Bảng kết quả dưới đây hiển thị bảng ta sẽ có sau mục "Câu lệnh INSERT" thuộc phần 6.
Truy vấn
SELECT * FROM aroma.gold;
Kết quả
Card_id
Storekey
Fname
Lname
Email
Status
1
1
Ada
Alexander
[email protected]
Active
2
1
Ben
Bowman
[email protected]
Active
3
1
Cynthia
Chen
[email protected]
Active
4
1
David
Doyle
[email protected]
Active
5
1
Emily
Enright
[email protected]
Active
6
1
Frank
Freeman
[email protected]
Active
Bảng Gold
Bảng Gold chứa các thông tin về khách hàng đã mua thẻ khuyến mãi.
Mô tả cột
Tên cột
Nội dung
card_id
Kiểu SMALLINT, xác định khách hàng bằng một số thẻ duy nhất.
storekey
Tham chiếu khóa ngoài tới bảng Store.
fname
Chuỗi ký tự chứa tên của khách hàng.
lname
Chuỗi ký tự chứa họ của khách hàng.
email
Chuỗi ký tự chứa địa chỉ email của khách hàng.
status
Chuỗi ký tự chứa các thông tin về tình trạng của khách hàng.
Hướng dẫn SQL & XQuery cho IBM DB2, Phần phụ lục: Phụ lục A
Trang 10 của 17
ibm.com/developerWorks/vn/
developerWorks®
Lược đồ mua hàng của cơ sở dữ liệu Aroma
Một số ví dụ trong loạt bài hướng dẫn này dựa trên các bảng được sử dụng để theo dõi các đơn
hàng mà công ty Aroma Coffee and Tea nhận được từ các nhà cung cấp. Lược đồ mua hàng
này cũng sử dụng chính các bảng chiều Product, Class, và Period như lược đồ bán lẻ, nhưng nó
có thêm hai bảng riêng của mình: Deal (các giao dịch) và Supplier (Nhà cung cấp). Cả hai bảng
Line_Items và Orders (Các đơn hàng) chứa các sự kiện, nhưng bảng Orders cũng có thể được truy
vấn như là một bảng chiều, tham chiếu bởi bảng Line_Items.
Hình 2 minh hoạ các bảng trong lược đồ mua hàng.
Hình 2. Các bảng trong lược đồ mua hàng
Lược đồ nhiều hình sao
Các khóa chính của bảng Line_Items và bảng Orders không khớp với bộ khóa ngoài của các bảng
chiều tương ứng. Bất cứ tổ hợp đã cho nào các khóa chính của bảng chiều đều có thể trỏ đến nhiều
hơn một hàng trong các bảng sự kiện này. Loại bảng này được biết đến như là bảng sự kiện nhiều
hình sao hoặc là danh sách các dữ liệu.
Ví dụ: Nhiều mã số đơn hàng trong bảng Order có thể tham chiếu đến cùng một bộ các đặc điểm
trong các bảng Supplier, Deal và Period:
Order_No
Perkey
Supkey
Dealkey
3699
817
1007
0
3700
817
1007
0
Các bảng mua hàng
Lược đồ mua hàng chứa cùng loại sự kiện giống như các sự kiện được lưu giữ trong các bảng Sales,
đó là các mục giá cả và số lượng. Mục giá cả là giá trị tính bằng đô la số tiền đã trả cho nhà cung
cấp đối với toàn bộ đơn hàng hoặc một sản phẩm cụ thể trong đơn hàng. Mục số lượng là số đơn vị
sản phẩm đã đặt hàng.
Hướng dẫn SQL & XQuery cho IBM DB2, Phần phụ lục: Phụ lục A
Trang 11 của 17
developerWorks®
ibm.com/developerWorks/vn/
Bạn có thể sử dụng lược đồ này để đặt các câu hỏi thú vị về lịch sử mua hàng của công ty Aroma
Coffee and Tea, ví dụ, nhà cung cấp nào cho giá tốt nhất và với sản phẩm nào, hoặc nhà cung cấp
nào đạt mức cao nhất khi kết toán các đơn đặt hàng.
Công ty Aroma Coffee and Tea bán cùng các sản phẩm tại các cửa hàng của mình mà nó đặt hàng
thông qua các nhà cung cấp. Vì thế, bạn có thể viết các truy vấn bắc qua cả hai lược đồ để so sánh
những cái đã được đặt mua với những cái đã được bán hoặc để tính toán các biên độ lợi nhuận đơn
giản.
Các bảng sau đây tạo nên lược mua hàng của cơ sở dữ liệu Aroma:
Period
Xác định các khoảng thời gian như ngày, tháng, năm.
Class
Xác định các lớp sản phẩm, được bán tại cửa hàng bán lẻ và được đặt
hàng từ các nhà cung cấp.
Product
Xác định sản phẩm riêng biệt, được bán tại cửa hàng bán lẻ và được đặt
hàng từ các nhà cung cấp.
Supplier
Xác định các nhà cung cấp các sản phẩm được công ty Aroma Coffee
and Tea đặt hàng.
Deal
Xác định giao dịch giảm giá áp dụng cho các đơn đặt hàng tại nhà cung
cấp.
Line_Items
Chứa các thông tin chi tiết trên một dòng mục hàng trong các đơn đặt
hàng, bao gồm cả giá cả và số lượng của mỗi mục hàng trên mỗi đơn đặt
hàng.
Orders
Chứa thông tin về các đơn hàng mua sản phẩm, chẳng hạn như tổng giá
của từng đơn hàng và các loại sản phẩm được đặt hàng.
Các bảng Supplier và Deal chỉ dành cho lược đồ mua hàng và được bảng Orders tham chiếu.
Lời nhắc: Lược đồ mua hàng chỉ chứa dữ
liệu cho quý đầu tiên của năm 2000 mà
thôi.
Dữ liệu mẫu của các bảng Supplier và Deal
Truy vấn
SELECT * FROM aroma.supplier;
Kết quả
Supkey
Type
Name
Street
City
State
1001
Coffee/tea
CB Imports
100 Church
Street
Mountain View CA
94001
1002
Tea
Tea Makers,
Inc.
1555 Hicks
Rd.
San Jose
95124
CA
Zip
...
Truy vấn
SELECT * FROM aroma.deal;
Hướng dẫn SQL & XQuery cho IBM DB2, Phần phụ lục: Phụ lục A
Trang 12 của 17
ibm.com/developerWorks/vn/
Kết quả
developerWorks®
Dealkey
Deal_Type
Deal_Desc
Discount
0
1000
No deal
0.00
1
100
Orders over $10,000
100.00
2
100
Orders over $20,000
500.00
3
100
Supplier catalog coupon
50.00
4
100
Supplier catalog coupon
100.00
37
200
Supplier coffee special
75.00
38
200
Supplier coffee special
50.00
39
200
Supplier tea special
40.00
40
200
Supplier tea special
20.00
Bảng Supplier và Deal
Mô tả cột: Bảng Supplier
Tên cột
Nội dung
supkey
Kiểu số nguyên (Integer), là mã định danh một hàng trong bảng
Supplier. Supkey là khóa chính.
type
Chuỗi ký tự cho biết kiểu sản phẩm được cung cấp.
name
Chuỗi ký tự xác định các nhà cung cấp theo tên.
street, city, state, zip
Các cột xác định địa chỉ của nhà cung cấp.
Mô tả cột: Bảng Deal
Tên cột
Nội dung
dealkey
Kiểu số nguyên (Integer), là mã định danh một hàng trong bảng Deal.
Dealkey là khóa chính.
deal_type
Kiểu số nguyên (Integer), là mã định danh loại hình giao dịch (mã số
giao dịch).
deal_desc
Chuỗi ký tự mô tả loại hình giao dịch.
discount
Giá trị dạng số thập phân, cho biết số tiền giảm giá tính bằng đô la áp
dụng cho một đơn đặt hàng.
Các bảng chiều được chia sẻ chung
Lược đồ mua hàng chia sẻ chung các bảng Period, Product và Class với lược đồ bán lẻ.
Cũng như khi bạn truy vấn lược đồ bán lẻ và lược đồ mua hàng một cách độc lập, bạn có thể đưa ra
một số câu hỏi thú vị liên quan các bảng từ cả hai lược đồ. Ví dụ, bạn có thể làm phép nối các bảng
Sales và Line_Items để so sánh số lượng của sản phẩm đã đặt mua với số lượng của sản phẩm đã
bán. Một truy vấn như vậy sử dụng các bảng chiều chung để ràng buộc các sản phẩm và các thời
kỳ.
Dữ liệu mẫu của các bảng Orders và Line_Items
Truy vấn
SELECT * FROM aroma.orders;
Hướng dẫn SQL & XQuery cho IBM DB2, Phần phụ lục: Phụ lục A
Trang 13 của 17
developerWorks®
ibm.com/developerWorks/vn/
Kết quả
Order_No
Perkey
Supkey
Dealkey
Order_Type
Order_Desc Close_Date
Price
3600
731
1001
37
Coffee
Whole
coffee b
2006-01-07
1200.46
3601
732
1001
37
Coffee
Whole
coffee b
2006-01-07
1535.94
3602
733
1001
0
Tea
Loose tea,
bul
2006-01-07
780.00
3603
740
1001
39
Tea
Loose tea,
bul
2006-01-21
956.45
3604
744
1005
0
Spice
Pre-packed
spi
2006-01-16
800.66
3605
768
1003
2
Coffee
Whole-bean
and
2006-02-12
25100.00
3606
775
1003
2
Coffee
Whole-bean
and
2006-02-19
25100.00
3607
782
1003
2
Coffee
Whole-bean
and
2006-02-25
25100.00
3608
789
1003
2
Coffee
Whole-bean
and
2006-03-03
30250.00
3609
796
1003
2
Coffee
Whole-bean
and
2006-03-15
25100.00
...
Truy vấn
SELECT * FROM aroma.line_items;
Kết quả
Order_No
Line_Item
Perkey
Classkey
Prodkey
Receive_Date
Qty
Price
3600
1
731
1
1
2006-01-07
40
180.46
3600
2
731
2
10
2006-01-07
50
300.00
3600
3
731
2
11
2006-01-07
80
240.00
3600
4
731
2
12
2006-01-07
150
240.00
3600
5
731
1
20
2006-01-07
60
240.00
3601
1
732
1
0
2006-01-07
60
240.00
3601
2
732
1
1
2006-01-07
60
240.00
3601
3
732
1
10
2006-01-07
60
240.00
3601
4
732
1
11
2006-01-07
60
240.00
3601
5
732
1
12
2006-01-07
60
240.00
3601
6
732
1
31
2006-01-07
70
335.94
3602
1
733
2
0
2006-01-08
70
130.00
3602
2
733
2
1
2006-01-08
70
130.00
...
Hướng dẫn SQL & XQuery cho IBM DB2, Phần phụ lục: Phụ lục A
Trang 14 của 17
ibm.com/developerWorks/vn/
developerWorks®
Các bảng Orders và Line_Items
Các bảng Orders và Line_Items chứa các sự kiện mua hàng.
Mô tả cột: Bảng Orders
Tên cột
Nội dung
order_no
Kiểu số nguyên (Integer) là mã định danh một hàng trong bảng Order.
Order_No là khóa chính.
perkey
Tham chiếu khóa ngoài tới bảng Period.
supkey
Tham chiếu khóa ngoài tới bảng Supplier.
dealkey
Tham chiếu khóa ngoài tới bảng Deal.
order_type
Chuỗi ký tự xác định loại sản phẩm theo đơn hàng.
order_desc
Chuỗi ký tự mô tả loại hình của đơn hàng.
close_date
Giá trị ngày tháng, xác định thời gian đơn hàng đã hoàn thành hoặc
chấm dứt.
price
Giá trị số thập phân, cho biết tổng giá của đơn hàng.
Mô tả cột: Bảng Line_Items
Tên cột
Nội dung
order_no
Kiểu số nguyên (Integer) là mã định danh một hàng trong bảng Orders.
Order_No là khóa chính.
line_item
Kiểu số nguyên (Integer) là mã số của mỗi mục được liệt kê trong đơn
hàng.
perkey
Tham chiếu khóa ngoài tới bảng Period.
classkey
Tham chiếu khóa ngoài tới bảng Class.
prodkey
Tham chiếu khóa ngoài tới bảng Products.
receive_date
Giá trị ngày tháng, xác định khi nào mục sản phẩm được tiếp nhận.
quantity
Kiểu số nguyên (Integer), cho biết số lượng của sản phẩm được đặt hàng
cho mỗi mục sản phẩm.
price
Giá trị số thập phân cho biết chi phí của một dòng mục hàng.
Hướng dẫn SQL & XQuery cho IBM DB2, Phần phụ lục: Phụ lục A
Trang 15 của 17
developerWorks®
ibm.com/developerWorks/vn/
Tài nguyên
Học tập
• "Tài liệu hướng dẫn đánh giá XML DB2" (developerWorks, tháng Sáu năm 2006): Hãy đọc
hướng dẫn từng bước về máy chủ dữ liệu DB2 Viper trên nền Windows, sử dụng khả năng lưu
trữ và tìm kiếm XML (SQL / XML, XQuery) sẵn có để hỗ trợ các ứng dụng thế hệ kế tiếp.
• "Hứng khởi bắt đầu nhanh với máy chủ DB2 Viper" (developerWorks, tháng Ba năm 2006):
Tìm hiểu cách để tạo ra các đối tượng của cơ sở dữ liệu để quản lý dữ liệu XML của bạn và
cách điền dữ liệu XML vào cơ sở dữ liệu của DB2 của bạn.
• "Truy vấn dữ liệu XML DB2 với XQuery" (developerWorks, tháng tư năm 2006): Tìm hiểu
cách truy vấn dữ liệu được lưu trữ trong các cột XML bằng cách sử dụng XQuery.
• "Truy vấn dữ liệu XML DB2 với SQL" (developerWorks, tháng ba năm 2006): Tìm hiểu cách
truy vấn dữ liệu được lưu trữ trong các cột XML bằng cách sử dụng SQL và SQL/XML.
• "Tạp chí Hệ thống IBM": Kỷ niệm 10 năm XML.
• "Tham khảo về SQL, tập 1": Tim các thông tin về các khái niệm cơ sở dữ liệu quan hệ, các yếu
tố ngôn ngữ, các hàm và về các hình thức truy vấn.
• "Tham khảo về SQL, tập 2": Tìm thông tin về cú pháp và ngữ nghĩa của các câu lệnh SQL để
có thêm thông tin.
• Tham khảo Trung tâm thông tin của cơ sở dữ liệu DB2 IBM cho Linux, UNIX, và Windows để
nhận được trợ giúp xử lý sự cố.
• Xem trang Không gian cung cấp hỗ trợ kỹ thuật về XML DB2 để tìm các đường liên kết tới
hơn 25 bài viết về các khả năng XML của DB2.
• Vùng Quản lý thông tin của developerWorks: Tìm hiểu thêm về DB2. Tìm tài liệu hướng dẫn kỹ
thuật, các bài viết “làm thế nào”, các chuyên mục đào tạo, tải về, thông tin sản phẩm và nhiều
hơn nữa.
• Theo dõi sát các sự kiện kỹ thuật và phát tin trên Web của developerWorks.
Lấy sản phẩm và công nghệ
• Tải về DB2 Express-C, máy chủ dữ liệu miễn phí để sử dụng trong việc phát triển và triển khai
các ứng dụng.
• Xây dựng dự án phát triển kế tiếp của bạn với IBM trial software, có sẵn để tải về trực tiếp từ
developerWorks.
Thảo luận
• Xem trang Diễn đàn Hỗ trợ trực tuyến về DB2 9.
• Tham gia vào developerWorks blogs và tham gia vào cộng đồng developerWorks.
Hướng dẫn SQL & XQuery cho IBM DB2, Phần phụ lục: Phụ lục A
Trang 16 của 17
ibm.com/developerWorks/vn/
developerWorks®
Đôi nét về các tác giả
Pat Moffatt
Pat Moffatt là giám đốc Chương trình quản lý thông tin thuộc Sáng kiến học đường
IBM. Thông qua chương trình sáng kiến học đường này, bà muốn làm ra sẵn những
nguồn tài nguyên thích hợp phục vụ giảng dạy về quản lý thông tin để giúp các giảng
viên đại học tích hợp chủ đề phần mềm quản lý thông tin vào trong chương trình đào
tạo của họ
Bruce Creighton
Bruce Creighton là chuyên viên lập kế hoạch các phần kỹ năng trong khoa Phát triển
và Lập kế hoạch đào tạo Quản lý thông tin. Với vai trò này, ông lập kế hoạch đầu tư về
nội dung đào tạo và cân bằng đầu tư giữa các lĩnh vực mà IBM có thu lợi nhuận với
các lĩnh vực mà tại đó yêu cầu về phát triển các kỹ năng là quan trọng, cần cung cấp
đào tạo miễn phí
Jessica Cao
Jessica Cao là một sinh viên ngành Nghệ thuật - Khoa học và ngành Khoa học máy
tính tại Trường đại học McMaster. Chị sẽ tốt nghiệp văn bằng kép hạng danh dự vào
tháng Tư 2009. Jessica đang làm việc trong chương trình hỗ trợ và lập kế hoạch kênh
kỹ năng quản lý thông tin DB2 của phòng thí nghiệm IBM Toronto, nhằm chuyên chú
sâu hơn vào lập trình, biên tập và kỹ năng viết
© Copyright IBM Corporation 2009
(www.ibm.com/legal/copytrade.shtml)
Nhẫn hiệu đăng ký
(www.ibm.com/developerworks/vn/ibm/trademarks/)
Hướng dẫn SQL & XQuery cho IBM DB2, Phần phụ lục: Phụ lục A
Trang 17 của 17