Nhp môn H qun tr c s d liu DB2
84
Hình 7.12 – Xut kt qu lý l$ch
/ nh#p mt lý lch ã c tùy ch-nh t* Tr giúp cu hình, kích vào trình n Configure,
sau ó ch&n Import Profile -> Customize, nh c mô t trong Hình 7.13
Hình 7.13
– Nh#p mt lý lch
Hình 7.14 mô t nhng trng cn c hoàn thành nh#p mt lý lch
Nhp môn H qun tr c s d liu DB2
85
Hình 7.14
–
Nhp lý l$ch c tùy ch,nh
Nhp môn H qun tr c s d liu DB2
86
Bài tp nhanh #4 – S" dng Tr giúp thit lp cu hình
Mc tiêu
Chng trình Tr giúp thit l#p cu hình có th c s dng cu hình các kt ni
c s d liu t* xa mt cách nhanh chóng và d0 dàng. Trong bài t#p nhanh này, bn s,
to ch- mc cho mt c s d liu nm trên mt máy ch DB2 xa (remote DB2 server
- c th hin bng máy trm ca ngi ng+i bên cnh bn, s dng c hai cách
Tìm
kim
và
Khám phá
). Mt khi c s d liu ó ã c lit kê, bn s, có th truy c#p c
s d liu này ging nh là nó ang ngay trên h thng máy ca mình. DB2 thc hin
tt c các quá trình giao tip mt cách thm lng.
Ghi chú
Bài t#p nhanh này gi nh rng bn ang làm vic trong 1 mng máy tính. Nu không
phi nh v#y, bn luôn có th s dng chính máy tính ca mình v*a làm máy ch v*a
làm máy khách và làm theo các ch- d%n cho công vic cu hình di ây kt ni n
chính h thng ca bn.
Th tc
1. H"i ngi bên cnh (hay ngi hng d%n bn) các thông tin sau ây :
Thông tin c s d liu t* xa:
(PR) Giao thc _TCPIP__
(IP) /a ch- IP hay tên máy ch _________
(PN) S cng ca th hin (instance) _________
(DB) Tên ca c s d liu _SAMPLE_
Các m7o :
- Trong môi trng Windows, ly tên ca máy ta gõ lnh hostname t* ca s
dòng lnh
- Trong môi trng Windows, ly a ch- IP ta gõ lnh ipconfig t* ca s
dòng lnh
2. M chng trình Tr giúp thit l#p cu hình (M7o: chng trình này có th truy
c#p thông qua lnh Start)
3. M bng ch&n Selected và ch&n mc Add Database Using Wizard
4. Trong trang Source ca trình tr giúp, ch&n mc Manually Configure a
Connection to a Database. Nhn nút Next di chuyn n trang tip theo ca
trình tr giúp.
5. Trong trang Protocol ca trình tr giúp, ch&n mc TCP/IP. Nhn nút Next di
chuyn n trang tip theo ca trình tr giúp.
6. Trong trang TCP/IP ca trình tr giúp, nh#p vào tên y ca máy ch hoc là
a ch- IP mà bn ã ghi li trong bc 1. Nh#p vào s cng bn ã ghi trong
bc 1. Nhn nút Next di chuyn n trang tip theo ca trình tr giúp.
Ghi chú: Tùy ch&n Service Name có th c s dng nu bn có mt mc
(entry) trong t#p tin Services ni b vi mt cng có s c nh ngh'a da trên
cng mà máy ch t* xa ang lng nghe. Khi bn s dng tùy ch&n này, DB2 s,
tìm kim trong t#p tin dch v trên máy ca bn ch không phi trên máy ch.
Bn cn phi thêm mt mc vào t#p tin này nu bn mun s dng tùy ch&n
trên.
Nhp môn H qun tr c s d liu DB2
87
7. Trong trang C s d liu ca trình tr giúp, nh#p vào tên ca c s d liu
c nh ngh'a trên máy ch t* xa mà bn ã ghi li trong bc 1 trng
Database Name. / ý vic trng Database Alias c in mt cách t ng
vi cùng giá tr ó nh th nào. Bí danh c s d liu (database alias) là mt cái
tên mà nhng ng dng ni b trên máy ca bn s, s dng kt ni n c
s d liu này. Bi vì bn ã có mt c s d liu trên máy ca mình c nh
ngh'a s)n vi tên là SAMPLE, DB2 s, không cho phép bn to tên mt c s d
liu khác có cùng tên. Vì th bn phi s dng mt tên bí danh khác. Trong ví d
này, hãy i bí danh c s d liu thành SAMPLE1. Bn có th nh#p vào mt li
chú thích tùy ý v c s d liu này nu bn mun. Nhn nút Next di chuyn
n trang tip theo ca trình tr giúp.
8. Trong trang Data source ca trình tr giúp, bn có th (không bt buc) ng ký
c s d liu (ngu+n d liu) mi này nh mt ngu+n d liu ODBC. Vic này
s, t ng ng ký c s d liu ó trong chng trình qun lý ODBC ca
Windows (Windows ODBC Manager) cho bn. Trong ví d này, b" du ánh
mc “Register this database for ODBC” ti vì bn s, không s dng ODBC. Nhn
nút Next di chuyn n trang tip theo ca trình tr giúp.
9. Trong trang Node Options ca trình tr giúp, xác nh h iu hành ca máy ch
ni mà c s d liu t* xa ang nm ti ó. Bi vì tt c các máy trm trong
phòng máy này u s dng Microsoft Windows, hãy m bo rng mc
Windows trong danh sách s xung c ch&n. Trng Instance name nên
c t là DB2. Nu trng này cha c t thì hãy t giá tr cho nó là
DB2. Nhn nút Next di chuyn n trang tip theo ca trình tr giúp.
10. Trang System Options ca trình tr giúp cho bn c hi m bo rng h
thng và tên máy ch ã c in chính xác và xác nh#n nhng cài t ca h
thng. Nhn nút Next di chuyn n trang tip theo ca trình tr giúp.
11. Trang Security Options ca trình tr giúp cho phép bn xác nh ni bn mun
vic xác thc ngi dùng xy ra và phng thc bn mun s dng. Ch&n mc
Use authentication value in server’s DBM Configuration. Cách làm này s, s
dng phng thc c xác l#p bi tham s AUTHENTICATION trong t#p tin
cu hình ca th hin (instance) xa. Nhn nút Finish to danh mc c s
d liu t* xa và óng trình tr giúp li. Mt hp thoi xác nh#n s, hin ra. Nhn
nút Test Connection m bo bn có th kt ni thành công n c s d
liu. Thêm vào ó, m bo tên ngi dùng và m#t kh u mà bn cung cp là
hp l trên máy ch xa (bi vì có th tham s AUTHENTICATION ca máy ch
c t giá tr là SERVER). Nu vic th kt ni thành công, bn ã to danh
mc c s d liu xa mt cách thành công. Nu vic kt ni không thành công,
bn hãy quay tr li trình tr giúp và m bo rng tt c các giá tr ã c xác
l#p úng (Nhn nút Change quay li nhng cài t trong trình tr giúp)
12. M trung tâm iu khin và th xem nhng bng khác nhau trong c s d liu
t* xa v*a mi c to danh mc
13. Quay tr li chng trình Tr giúp thit l#p cu hình và th to danh mc vi
mt c s d liu khác, ln này s dng tu ch&n Search the Network. Làm t*ng
bc trong trình tr giúp ging nh bn ã cu hình kt ni bng tay. Lu ý
rng, trên nhng mng ln, vic tìm kim có th s, tn thi gian tr v các kt
qu
Nhp môn H qun tr c s d liu DB2
88
8
Chng 8 - Làm vic vi các i tng d liu
Chng này tho lu#n các i tng d liu nh là dng s + (schemas), dng bng
(table), khung nhìn (view), ch- mc (indexes), chui (sequences)… Mt s các i tng
d liu cao cp nh là các b%y s kin (triggers), các hàm do ngi dùng nh ngh'a
(UDFs) và nhng th tc c lu tr s, c tho lu#n trong chng 14, SQL PL lu
tr các th tc, và chng 15, trong dòng SQL PL, UDFs, Triggers.
8.1 S
S + là không gian tên (name spaces) cho t#p hp các i tng d liu. Chc nng
chính ca chúng nh sau:
- Cung cp cho bn các ch- d%n ca quyn s hu các i tng hay các mi
quan h i vi mt ng dng.
- Gom nhóm các i tng có mi quan h vi nhau.
Tt c các i tng d liu trong DB2 có hai phn tên theo tiêu chu n; s + là na
phn u tiên ca tên:
<tên_s >.<tên_i tng>
Tên i tng theo quy chu n phi là duy nht. Khi bn kt ni c s d liu và to hay
tham chiu n mt i tng mà không nh rõ tên s +, DB2 s, ly mã tài khon mà
bn kt ni vi c s d liu làm tên s +. Ví d, nu bn kt ni d liu m%u vi tên
s dng là “arfchong”, và to mt bng bng cách s dng phát biu CREATE TABLE
CREATE TABLE artist …
Tên theo quy chu n y ca bng c to ra s, là arfchong.artists.
8.2 Bng
Mt bng là mt t#p hp các d liu có mi quan h vi nhau mt cách hp lý theo các
ct và hàng. Phát biu bên di cung cp cho bn ví d v vic làm cách nào to ra
mt bng bng cách s dng phát biu CREATE TABLE
CREATE TABLE artists
{
artno SMALLINT not null,
name VARCHAR (50) with default ‘abc’,
classification CHAR (1) not null,
bio CLOB (100K) logged,
picture BLOG (2M) not logged compact
}
Nhp môn H qun tr c s d liu DB2
89
In mytblsl
Trong các phn tip theo ây, chúng ta có th mô t các phn chính ca phát biu
CREATE TABLE này.
8.2.1 Kiu d liu
Hình 8.1 Danh sách các kiu d liu c h tr trong DB2
Hình 8.1 – Các kiu d liu ca DB2
Các kiu d liu i tng ln (LOB)
Các kiu d liu i tng ln c dùng lu tr các chui lý t ln, các chui nh
phân ln, hay các t#p tin c ch- ra trong hình 8.2
Nhp môn H qun tr c s d liu DB2
90
Hình 8.2 – Các kiu d liu LOB
Các i tng kiu nh phân ln này thng c vit tt cho d0 hiu: Mt i tng
nh phân ln phi là mt BLOB, mt i tng ký t ln là CLOB, và i tng ký t ln
2 byte c.ng c bit nh là DBCLOB.
Các kiu d liu c $nh ngh-a bi ngi dùng
DB2 cho phép bn có th t nh ngh'a kiu d liu ca chính mình, da trên kiu d
liu ca h thng. /iu này c xem nh là vic có b kiu d liu do ngi dùng t
nh ngh'a (UDTs). UDTs c dùng khi:
- Có nhu cu thit l#p ng cnh cho các giá tr
- Có nhu cu cn ép kiu d liu DB2.
Các phát biu theo sau âu mô t mt ví d v vic s dng UDTs nh th nào và khi
nào
CREATE DISTINCT TYPE POUND AS INTEGER WITH COMPARISIONS
CREATE DISTINCT TYPE KILOGRAM AS INTEGER WITH COMPARISIONS
CREATE TABLE person
{
F_name VARCHAR (30),
Weight_p POUND NOT NULL,
Weight_k KILOGRAM NOT NULL
}
Trong ví d này, có 2 UDTs c to ra là: POUND and KILOGRAM. C hai u c
xây ng da trên kiu d liu s)n có ca h thng INTEGER. Mnh WITH
COMPARISIONS c nh ngh'a nh là phn cú pháp ch- ra rng vic thay các hàm
vi cùng tên c.ng ging nh vic các kiu d liu s, c to ra.
Bng person dùng 2 UDTs mi trong ct weight_p và weight_k theo tun t. Nu
bây gi chúng ta a ra phát biu sau:
SELECT F_NAME FROM PERSON
WHERE weight_p > weight_k
Nhp môn H qun tr c s d liu DB2
91
Bn s, nh#n c mt thông báo li vì vic so sánh 2 ct vi kiu d liu khác nhau.
Th#m chí weight_p và weight_k dùng d liu là POUND và KILOGRAM, theo th t, c
hai trng này u c da trên kiu d liu là INTEGER. Tuy nhiên bng vic to
UDTs thì bn không th thc hin loi so sánh này. /ây chính là nhng gì bn mun,
bi vì trong cuc sng thc, làm th nào so sánh gia pound và kilogram? Nó s, vô
lý.
Trong ví d k tip, bn mun so sánh ct weight_p vi kiu d liu integer. Tuy nhiên
hai kiu d liu này khác nhau, vì th bn s, nh#n c thông báo li tr* khi bn s
dng mt hàm ã ép kiu.
Nh bn thy trong phát biu bên di, chúng tôi s, dùng hàm ép kiu POUND()
iu so sánh này có th thc hin c. Nh ã nêu trên hàm ép kiu POUND() c
to ra vi UTD khi triu g&i WITH COMPARISIONS ca phát biu CREATE DISTINCT
TYPE.
SELECT F_NAME FROM PERSON
WHERE weight_p > POUND (30)
Các giá tr$ NULL
Mt giá tr null i din cho mt rng thái không xác nh. Tuy nhiên, phát biu CREATE
TABLE có th nh ngh'a mt ct bng cách s dng mnh NOT NULL. /iu này
m bo rng ct này s, cha giá tr d liu c bit n. Bn c.ng có th ch- nh giá
tr mc nh cho ct nu NOT NULL c khai báo. Phát biu k tip cung cp ví d cho
iu này:
CREATE TABLE Staff
{
ID SMALLINT NOT NULL,
NAM E VARCHAR (9),
DEPT SMALLINT NOT NULL with default 10,
JOB CHAR (5),
YEARS SMALLINT,
SALARY DECIMAL (7, 2),
COMM DECIMAL (7, 2) with default 15
}
8.2.2 Ct khoá chính (Identity columns)
Ct khoá chính này là mt con s c to ra t ng, s này là duy nht cho mi dòng.
Ch- có mt ct khoá chính cho mt bng.
Có hai cách to ra giá tr cho ct khoá chính, iu này ph thuc vào vic nó c nh
ngh'a nh th nào:
- Luôn luôn c sinh ra: nhng giá tr luôn luôn c DB2 sinh ra. Các ng dng
thì không c phép cung cp nhng giá tr c th.
- Sinh ra mc nh: giá tr có th c cung cp c th bi mt ng dng hoc,
nu không có giá tr cho trc, thì DB2 s, sinh ra. DB2 không th m bo c
tính duy nht. Tùy ch&n này c d nh phc v cho vic truyn d liu, và
cho vic unload và reload ca mt bng.
Hãy xem qua ví d sau:
Nhp môn H qun tr c s d liu DB2
92
CREATE TABLE subscriber (subscriberID INTEGER GENERATED ALWAYS AS
IDENTITY (START WITH 100 INCREMENT BY 100),
firstname VARCHAR (50),
lastname VARCHAR (50))
Trong ví d này, ct subscriberID là mt INTEGER c nh ngh'a nh là mt ct khoá
chính thuc loi luôn luôn c sinh ra t ng. Giá tr c sinh ra s, bt u t* 100,
và nó s, c tng lên vi bc là 100.
8.2.3 Các tng tun t (Sequence object)
Các i tng tun t sinh ra mt con s duy nht da vào c s d liu. Không ging
nh các ct khóa chính, các i tng tun t này là nhng bng c l#p, xem ví d
minh h&a phát biu sau:
CREATE TABLE t1 (salary int)
CREATE SEQUENCE myseq
START WITH 10
INCREMENT BY 1
NO CYCLE
INSERT INTO t1 VALUES (nextval for myseq)
INSERT INTO t1 VALUES (nextval for myseq)
INSERT INTO t1 VALUES (nextval for myseq)
SELECT * FROM t1
SALARY
10
11
12
3 record(s) selected
SELECT prevval for myseq FROM sysibm.sysdummy1
1
12
1 record(s) selected
PREVVAL cung cp cho bn giá tr hin ti ca dãy tun t, trong khi NEXTVAL cung
cp giá tr k tip.
Ví d bên trên c.ng s dng SYSIBM.SYSDUMMY1. ây là mt bng danh mc h
thng mà nó ch- có mt ct và mt hàng. Nó có th c dùng trong tình hung nh mt
câu truy vn yêu cu tr v ch- mt giá tr. Các bng danh mc h thng c mô t
trong phn k tip.
8.2.4. Các bng danh sách h thng
Mi c s d liu có các bng danh sách h thng ca riêng nó. Các bng này lu tr
siêu d liu v các i tng c s d liu. Bn có th truy vn nhng bng này nh
bt k bng c s d liu bình thng khác.
Ba s + c s dng nh#n dng các bng danh sách h thng:
• SYSIBM: các bng c s, ti u hóa s dng DB2
• SYSCAT: khung nhìn (view) da trên bng SYSIBM, ti u s d0 s dng.
Nhp môn H qun tr c s d liu DB2
93
• SYSSTAT: các s liu thng kê c s d liu
Sau ây là mt vài ví d v các khung nhìn ca danh mc:
• SYSCAT.TABLES
• SYSCAT.INDEXES
• SYSCAT.COLUMNS
• SYSCAT.FUNCTIONS
• SYSCAT.PROCEDURES
8.2.5. Khai báo các bng tm thi
Khai báo bng tm thi là các bng c to ra trong b nh, c s dng bi mt
ng dng và c t ng xóa khi ng dng kt thúc. Nhng bng này ch- có th c
truy nh#p bi ng dng to ra chúng. Không có bn ghi nào c sinh trong bng danh
sách ca DB2. Truy nh#p nhng bng này có hiu qu rt cao bi vì không có s tranh
chp danh sách, các hàng không b khóa, không ghi nh#t ký (tùy ch&n), và không kim
tra quyn. C.ng có h tr ch- mc cho các bng tm thi này, ó là, bt c ch- mc
chu n nào c.ng có th c to trên mt bng tm thi. Bn c.ng có th chy lnh
RUNSTATS vi các bng này.
Khai báo các bng tm thi bên trong mt không gian s dng ca bng tm thi, ây
là cái phi c nh ngh'a trc khi to ra bt c bng tm thi nào. Các phát biu
di ây cung cp mt ví d làm th nào to ba khai báo bng tm thi:
CREATE USER TEMPORARY TABLESPACE apptemps
MANAGED BY SYSTEM USING ('apptemps');
DECLARE GLOBAL TEMPORARY TABLE temployees
LIKE employee NOT LOGGED;
DECLARE GLOBAL TEMPORARY TABLE tempdept
(deptid CHAR(6), deptname CHAR(20))
ON COMMIT DELETE ROWS NOT LOGGED;
DECLARE GLOBAL TEMPORARY TABLE tempprojects
AS (fullselect) DEFINITION ONLY
ON COMMIT PRESERVE ROWS NOT LOGGED
WITH REPLACE IN TABLESPACE apptemps;
Khi mt khai báo bng tm thi c to ra, s + ca nó là SESSION, và phi c
ch- tng minh. ID ngi dùng c s dng to mt bng tm thi s, có tt c
quyn trên bng. Mi ng dng to mt bng tm thi s, quyn c l#p ca riêng nó
c ch- ra trong Figure 8.5.
Nhp môn H qun tr c s d liu DB2
94
Figure 8.5 – Phm vi ca các bng tm thi toàn cc công khai
Bài tp nhanh #5 - Khi to mt bng mi
Mc tiêu
/n ây, bn có th s dng nhng bng có s)n trong c s d liu SAMPLE minh
h&a các khái nim. Cui cùng, bn s, cn to mt c s d liu g+m các bng ca riêng
mình. Trong phn bài t#p này, bn s, s dng to bng theo hng d%n t*ng bc
to hai bng mi trong c s d liu SAMPLE.
Th tc
1. M Create Table Wizard nh ã ch- ra trên trong phn gii thiu.
(Control Center -> All Databases -> SAMPLE -> (nhn phi chut) Tables object
-> Create …)
2. /nh ngh'a tên bng, nh ngh'a ct và các ràng buc. Bng s, c s dng lu
tr thông tin v cung cp vn phòng ph m, c s dng bi mt d án trong c s
d liu SAMPLE. Mi ln vn phòng ph m c mua, mt hàng s, c thêm vào
trong bng này. Bng s, có sáu ct:
• product_id: nh#n dng duy nht ca sn ph m ang c mua
• description: mô t v sn ph m
• quantity: s lng mua
• cost: giá ca sn ph m
• image: mt bc nh ca sn ph m (nu dùng c)
• project_num: Mã s ca d án mua sn ph m này
3. 4 trang u tiên ca hng d%n t*ng bc, i vi tên s +, gõ vàp ID bn s
dng ng nh#p, và s dng tên bng là SUPPLIES. Bn c.ng có th gõ vào mt
ghi chú tùy ý. Nhn vào nút Next tip tc ti trang sau ca hng d%n.
4. T* trang này, bn có th thêm các ct vào bng. Nhn nút ADD thêm các ct.
Nhp môn H qun tr c s d liu DB2
95
Gõ “product_id” vào Column name và ch&n kiu là INTEGER. B" du kim
Nullable, và nhn vào nút Apply nh ngh'a ct.
Lp li bc này cho nhng ct còn li ca bng s dng các tùy ch&n c ch-
trong bng trên. Khi tt c các ct ã c thêm vào, nhn nút OK và danh sách
các ct bn v*a to s, c tng kt. Nhm nút Next tip tc ti trang k tip
ca hng d%n.
Tên ct Thuc tính
product_id (completed) INTEGER, NOT NULL
description VARCHAR, length 40, NOT NULL
quantity INTEGER, NOT NULL
cost DECIMAL, Precision 7, Scale 2, NOT NULL
image BLOB, 1MB, NULLABLE, NOT LOGGED
project_num CHAR, length 6, NOT NULL
Chú ý: Tùy ch&n NOT LOGGED có th c ch- rõ khi khai báo các ct LOB. /iu
này là bt buc vi các ct có kích thc ln hn 1GB. Nó c.ng c khuyên dùng
cho các ct LOB ln hn 10MB bi vì s thay i các ct ln có th làm y tp này
rt nhanh. Ngay c nu NOT LOGGED c s dng, s thay i các tp LOB
trong quá trình giao dch xy ra, v%n có th quay lui v trang thái lúc u. C.ng chú ý
rng mt mình ct hình nh c nh ngh'a nh mt ct “NULLABLE”. Bn có ngh'
ti sao ct c nh ngh'a nh th?
5. 4 ây, tt c thông tin bt buc cho vic to bng u c cung cp. Bng cách
nhy sang các trang khác, bn coi nh ang ch&n các giá tr mc nh cho nhng tùy
ch&n ó. Bn có th thêm các khóa và ràng buc sau khi mt bng v*a c to.
Nhp môn H qun tr c s d liu DB2
96
6. Thêm mt ràng buc ti bng hn ch các giá tr trên ct quantity. Trên trang
Constraint ca ca s thao tác, nhn nút ADD. Trong trng Check Name, gõ vào:
valid_quantities. Trong trng Check Condition, gõ vào: quantity > 0.
Nhn nút OK. Bn nên nhìn mt tng kt ca ràng buc bn v*a thêm vào trong
trang Constraint ca ca s thao tác. Nhn nút Next tip tc ti trang tip theo
ca màn hình thao tác.
7. Bn có th tip tc hoàn thành thao tác, thay i các tham s khác ca bng. Hoc,
bn có th nhy n trang Summary, hay n gin là nhn vào nút Finish to
bng.
8. T* trung tâm iu khin, nhn vào th mc Tables di c s d liu SAMPLE
trong khung cây i tng. Bng bn v*a to bây gi s, xut hin trong danh sách.
Có th phi làm ti ca s trung tâm iu khin thy c s thay i này.
8.3 Các khung nhìn (Views)
Các khung nhìn là s trình bày hay hin th ca d liu trong bng. D liu ca các
khung nhìn không c cha riêng bit, nhng s, c t+n ti khi c g&i ti. Vi các
khung nhìn l+ng nhau, mt khung nhìn c to làm nn cho các khung nhìn khác. Các
thông tin v khung nhìn trong mc lc khung nhìn DB2: SYSCAT.VIEWS,
SYSCAT.VIEWDEP và SYSCAT.TABLES. Sau ây là cách to và s dng khung nhìn:
CONNECT TO MYDB1;
CREATE VIEW MYVIEW1 AS SELECT ARTNO, NAME, CLASSIFICATION
FROM ARTISTS;
SELECT * FROM MYVIEW1;
Kt qu u ra:
Artno Name Classification
10 HUMAN A
20 MY PLANT C
30 THE STORE E
8.4 Các ch, mc (Index)
Ch- mc là t#p các khóa c sp xp theo mc các dòng trong bng. Ch- mc cho
phép trùng, và nó c phép thay i. Mt s c im bn có th nh ngh'a ch- mc:
• Kiu ch- mc tng hoc gim.
• Khóa ca ch- mc có th là duy nht hoc không duy nht.
• Nhiu ct có th s dng làm ch- mc (c g&i là các ch- mc ghép).
• Nu ch- mc và các d liu v#t lý hp li ging nh các chui ch- mc, c g&i
là các bó ch- mc.
Ví d:
CREATE UNIQUE INDEX artno_ix ON artists (artno)
Nhp môn H qun tr c s d liu DB2
97
8.4.1 Tr giúp thit k (Design Advisor)
Tr giúp thit k là mt công c khá tt giúp bn ti u thit k c s d liu cho mt
công vic ã bit. Tr giúp thit k có th giúp bn bng cách thit k các ch- mc cho
bn, Materialized Query Tables (MQTs), Multi-demension clustering (MDC) và các tính
nng phân tán c s d liu. Tr giúp thit k c g&i t* Trung tâm iu khin, bm
chut phi trên c s d liu và ch&n “Design Advisor” nh hình 8.6:
Hình 8.6 – Thc hin tr giúp thit k t& Trung tâm iu khin
Hình 8.7 Cho thy tr giúp thit k. Theo sau là các bc hng d%n t c cách
thit k gi ý t* DB2.
Nhp môn H qun tr c s d liu DB2
98
Hình 8.7
– Tr giúp thit k
8.5 Tính toàn v.n tham chiu
Toàn v7n tham chiu cho phép c s d liu qun lý c các quan h gia các bng.
Bn có th thit l#p kiu cha-con (parent-child) ca các quan h gia các bng nh hình
8.8. Trong hình có hai bng DEPARTMENT và EMPLOYEE c liên kt bi mã s ca
phòng (department). Ct WORKDEPT trong bng EMPLOYEE ch- có th cha mã s
ca phòng ã t+n ti trong bng DEPARTMENT. /ó là lý do trong ví d này, bng
DEPARTMENT c g&i là bng cha, bng EMPLOYEE c g&i là bng con hoc
bng ph thuc. Hình sau trình bày cách dùng CREATE TABLE to bng
EMPLOYEE cn cho thit l#p các quan h.
DEPARTMENT table (Parent table)
DEPTNO
(Primary key)
Or unique constraint
DEPTNAME MGRNO
EMPLOYEE table (Dependent table)
create table employee (empno ………
primary key empno
foreign key workdept
reference department on delete no action)
in DMS01
Hình 8.8
- Ví d v toàn v.n tham chiu gia các bng.
Trong toàn v7n tham chiu, thng s dng các khái nim sau:
EMPNO
(Primary key)
FISTHNAME LASTNAME WORKDEPT
(Foreign key)
PHONENO
Nhp môn H qun tr c s d liu DB2
99
Khái nim Mô t
Bng cha (Parent table) Bng d liu iu khin cha khóa chính
Bng ph thuc
(Dependant table)
Bng d liu ph thuc vào bng cha. Cha khóa ngoi,
mi dòng t+n ti trong bng ph thuc phi phù hp vi các
dòng trong bng cha.
Khóa chính (Primary key) /nh ngh'a khóa chính ca bng cha, nó không c có giá
tr NULL và phi là duy nht. Khóa chính có th là mt hoc
nhiu ct trong bng.
Khóa ngoi (Foreign key) Tham chiu n khóa ngoi ca bng cha.
D liu trong mt bng có th liên kt vi d liu ca mt hoc nhiu bng thông qua
toàn v7n tham chiu. Các ràng buc có th c áp t d liu phù hp vi c tính
nào ó hoc các quy tc trong kinh doanh ca d liu. Ví d, nu mt ct ca bng là
gii tính, nó có th c ép cha mt trong hai giá tr là “M” cho nam và “F” cho n.
Nhp môn H qun tr c s d liu DB2
100
9
Chng 9 – Công c di chuyn d liu
Nhng công c hay câu lnh c mô t trong phn này c s dng di chuyn d
liu trong cùng mt c s d liu hay qua nhng c s d liu khác nhau nm trên
cùng mt nn (platform) hoc có th khác nn.
Hình 9.1 mô t tng quan v công c di chuyn d liu
Hình 9.1
- Công c di chuyn d liu
.
Trong hình 9.1 có 2 c s d liu: A và B. Bng cách s dng công c EXPORT, ta có
th kt xut d liu t* mt bng sang mt tp. Tp có th thuc các nh dng sau:
ASC = ASCII
DEL = Delimited ASCII – ASCII có nh gii hn.
WSF = Worksheet format – /nh dng kiu bng tính.
IXF = Integrated Exchange Format – /nh dng trao i thng nht.
Nhng tp dng ASC hoc DEL là nhng tp vn bn và có th m và xem li bng bt
k trình son tho vn bn nào. WSF là mt loi nh dng mà có th di chuyn d liu
sang bng tính ch!ng hn Excel hay là Lotus® 1-2-3. IXF là mt nh dng không ch-
bao g+m d liu mà còn là mt ngôn ng nh ngh'a d liu (Data Definition Language-
DDL). /iu này rt tin dng, vì khi mt bng cn c xây dng li, ta có th xây dng
mt cách trc tip t* tp có nh dng IXF, còn nhng tp nh dng khác thì ta không
th làm c vic này.
Khi d liu c kt xut sang dng tp, công c IMPORT có th c dùng chuyn
d liu t* dng tp sang dng bng. Bng phi t+n ti s)n di khuôn m%u ASC, DEL
và WSF, ngoi tr* nh dng IXF. Mt phng thc khác là công c LOAD dùng
chuyn np d liu vào trong bng. Công c LOAD thì nhanh hn vì nó i trc tip n
nhng trang c s d liu mà không cn tng tác n h thng DB2; tuy nhiên,
phng thc này không th to ra nhng kim tra ràng buc i vi d liu, và s,
Nhp môn H qun tr c s d liu DB2
101
không thc hin c các b%y s kin (nu có). / m bo mt cách kiên nh vic
np d liu dùng công c LOAD, lnh SET INTEGRITY thng c s sng theo sau.
Nhng phn tip theo sau ây s, mô t nhng công c EXPORT, IMPORT và LOAD
mt cách chi tit.
9.1 Công c EXPORT (xut)
Công c EXPORT c dùng trích d liu t* bng thành mt tp nh ã c#p
trc ây. Bên di ây, mt thao tác SQL SELECT c g&i thc thi. Ví d di ây
kt xut thành tp employee.ixf thuc nh dng IXF có 10 dòng t* bng employee.
EXPORT TO employee.ixf OF IXF
SELECT * FROM employee
FETCH FIRST 10 ROWS ONLY
Chúng tôi khuyn khích bn nên th chy ví d trên. Bng employee là mt b ph#n ca
c s d liu SAMPLE, vì th trc ht bn nên kt ni n c s d liu này, nó ã
c to ra trong chng trc.
Nu bn thích làm vic vi nhng công c có giao din + h&a (GUI), công c EXPORT
c.ng có th c thc hinn t* Trung tâm iu khin (Control Center) nh trong hình
9.2 bên di.
Hình 9.2
- Hin th$ hp thoi bng EXPORT
Nh ã thy trên hình, trc ht bn phi ch&n bng employee bng cách nhn vào nó
mt ln, và k ó thì nhn chut phi trên bng m mt bng ch&n con (popup menu)
t* ó bn có th ch&n Export. Sau khi ch&n mc này, ca s hng d%n t*ng bc s,
hin lên. Ch- cn n gin làm theo nhng bc cung cp s)n trong hng d%n này
hoàn thành quá trình thc hin.
Nhp môn H qun tr c s d liu DB2
102
9.2 Công c IMPORT (nhp)
Công c IMPORT c dùng np d liu t* mt tp sang mt bng nh ã nói trc
ây. /ng sau nó, mt thao tác SQL INSERT c thc thi thc s. Khi mt lnh
INSERT c thc thi, các b%y s kin s, c kích hot, tt c các ràng buc s, có
hiu lc ngay l#p tc, và vùng nh m ca c s d liu s, c s dng. Ví d sau
ây np tt c d liu t* mt tp employee.ixf có nh dng IXF vào trong bng
employee_copy. La ch&n REPLACE_CREATE là mt trong nhng la ch&n có s)n vi
công c IMPORT. La ch&n này s, thay th ni dung ca bng employee_copy nu nh
nó ã t+n ti trc khi công c IMPORT c thc thi, hoc là nó s, to mt bng và
np d liu nu bng cha t+n ti trc ó. Chúng tôi khuyn khích bn nên chy th ví
d di ây, nhng trc ht bn phi chy công c EXPORT trong phn trc.
IMPORT FROM employee.ixf OF IXF
REPLACE_CREATE
INTO employ_copy
Nu bn thích làm vic vi Trung tâm iu khin, bn có th thc hin công c IMPORT
bng cách ch&n bt k bng nào, nhn chut phi trên nó, và ch&n chc nng Import
nh hình 9.3
Hình 9.3 – Hp hi thoi thc hin công c IMPORT
9.3. LOAD (np)
Công c LOAD là mt cách np d liu t* tp sang bng nhanh hn. Nh ã tho lu#n
trc ây, công c LOAD không i qua h thng DB2, vì th các b%y s kin không
c kích hot, vùng m s, không c dùng và các ràng buc s, không có hiu lc.
Mt khác, mt thao tác LOAD s, nhanh hn IMPORT vì nó là mt công c np d liu
cp thp trc tip truy xut n trang d liu trên 'a. Nó làm vic theo 3 giai on:
LOAD, BUILD và DELETE.
Ví d sau ây np tt c các d liu t* tp employee.ixf có nh dng IXF vào trong
bng employee_copy. La ch&n REPLACE là mt trong nhng la ch&n có s)n trong
Nhp môn H qun tr c s d liu DB2
103
LOAD. Trong trng hp này, nó c s dng REPLACE tt c các d liu có
trong bng employe_copy.
LOAD FROM employee.ixf OF IXF
REPLACE INTO employ_copy
Sau khi thc thi câu lnh trên, không gian ca bng, ni mà bng ca bn trú ng, có
th c a n trng thái CHECK PENDING. /iu này có ngh'a là bn cn phi chy
câu lnh SET INTEGRITY kim tra tính chc chn d liu ca bn. Ví d sau ây s,
ch- cho bn làm th nào.
SET INTEGRITY FOR employee_copy
ALL IMMEDIATE UNCHECKED
Nu bn thích làm vic vi Trung tâm iu khin hn, bn có th thc hin công c
LOAD và SET INTEGRITY nh trong hình 9.4 và 9.5 tng ng.
Hình 9.4
- Thc hin công c LOAD
Nhp môn H qun tr c s d liu DB2
104
Hình 9.5
- Thc hin công c SET INTEGRITY
9.4 Công c db2move
Ti mt thi im, công c EXPORT, IMPORT, và LOAD ch- làm vic trên mt bng.
Mc dù bn có th vit mt kch bn phát sinh các lnh trên cho t*ng bng trong c
s d liu, nhng công c db2move s, giúp bn làm iu ó. Công c db2move ch- làm
vic vi tp IXF, và tên tp s, t ng c phát sinh bi db2move. Ví d bên di s,
biu di0n chy db2move vi export, import nh th nào s dng c s d liu
SAMPLE:
db2move sample export
db2move sample import
Trung tâm iu khin không có tùy ch&n cho db2move
.
9.5 Công c db2look
Trong khi các công c EXPORT, IMPORT, LOAD và db2move cho phép bn di chuyn
d liu t* mt bng này ti mt bng khác, trong cùng mt c s d liu hay qua vài c
s d liu, công c db2look có th c s dng rút trích các câu lnh DDL, các c
s d liu t'nh, các c tính không gian bng cho mt c s d liu, và lu tr chúng
trong mt tp kch bn mà có th sau này c chy trên mt h thng khác. Ví d, nu
bn mun sao chép mt c s d liu t* máy ch DB2 ang chy trên Linux sang mt
máy ch DB2 ang chy trên Windows; u tiên bn chy công c db2look trên máy
ch DB2 Linux ly c cu trúc ca c s d liu và lu cu trúc này trên mt tp
kch bn. Sau ó bn chép tp kch bn này sang máy ch DB Windows, và thc thi kch
bn ó bt u xây dng bn sao c s d liu. Ti ây, cu trúc ca c s d liu
ó ã c sao chép. Bc k tip, s, chy công c db2move vi tùy ch&n export trong
máy ch DB2 Linux, và sau ó chép tt c các tp c phát sinh sang máy ch DB2
Windows, sau ó thc thi db2move vi tùy ch&n là import hoc load. Hoàn thành bc
này, c s d liu ca bn s, c sao chép toàn b t* mt máy ch này sang mt
máy ch khác hot ng trên mt nn tng khác.