Tải bản đầy đủ (.pdf) (34 trang)

Hướng dẫn SQL & XQuery cho IBM DB2, Phần phụ lục: Phụ lục A pptx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.08 MB, 34 trang )

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, Giám đốc Chương trình quản lý thông tin, Sáng kiến học đường, IBM
Bruce Creighton, 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
Tóm tắt: 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
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.
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:


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;

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
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 Orlea
ns 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

MktkeyStore_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ố.
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 kh
u
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
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
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
1.00
2005-05-
01
2005-05-
31
coupon
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.


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.


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

StorekeyFname

Lname Email Status

1 1 Ada Alexander



2 1 Ben Bowman Active

3 1 Cynthia

Chen Active

4 1 David Doyle Active

5 1 Emily Enright Active


6 1 Frank Freeman

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.



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.
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

×