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

nhập môn hệ quản trị Cơ sở dữ liệu phần 5 potx

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 (945.28 KB, 21 trang )

Nhp môn H qun tr c s d liu DB2

84

Hình 7.12 – Xut kt qu lý l$ch

/ nh#p mt lý lch ã c tùy ch-nh t* Tr giúp cu 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 mt lý lch


Hình 7.14 mô t nhng trng cn c hoàn thành  nh#p mt lý lch






Nhp môn H qun tr c s d liu DB2

85


Hình 7.14

Nhp lý l$ch c tùy ch,nh

Nhp môn H qun tr c s d liu DB2

86
Bài tp nhanh #4 – S" dng Tr giúp thit lp cu hình

Mc tiêu
Chng trình Tr giúp thit l#p cu hình có th c s dng  cu hình các kt ni
c s d liu t* xa mt cách nhanh chóng và d0 dàng. Trong bài t#p nhanh này, bn s,
to ch- mc cho mt c s d liu nm trên mt máy ch DB2  xa (remote DB2 server
- c th hin bng máy trm ca ngi ng+i bên cnh bn, s dng c hai cách
Tìm
kim

Khám phá
). Mt khi c s d liu ó ã c lit kê, bn s, có th truy c#p c
s d liu này ging nh là nó ang  ngay trên h thng máy ca mình. DB2 thc hin
tt c các quá trình giao tip mt cách thm lng.


Ghi chú
Bài t#p nhanh này gi nh rng bn ang làm vic trong 1 mng máy tính. Nu không
phi nh v#y, bn luôn có th s dng chính máy tính ca 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 vic cu hình di ây  kt ni n
chính h thng ca bn.

Th tc
1. H"i ngi bên cnh (hay ngi hng d%n bn) các thông tin sau ây :
Thông tin c s d liu t* xa:
(PR) Giao thc _TCPIP__
(IP) /a ch- IP hay tên máy ch _________
(PN) S cng ca th hin (instance) _________
(DB) Tên ca c s d liu _SAMPLE_

Các m7o :
- Trong môi trng Windows,  ly tên ca máy ta gõ lnh hostname t* ca s
dòng lnh
- Trong môi trng Windows,  ly a ch- IP ta gõ lnh ipconfig t* ca s
dòng lnh

2. M chng trình Tr giúp thit l#p cu hình (M7o: chng trình này có th truy
c#p thông qua lnh Start)

3. M bng ch&n Selected và ch&n mc Add Database Using Wizard

4. Trong trang Source ca trình tr giúp, ch&n mc Manually Configure a
Connection to a Database. Nhn nút Next  di chuyn n trang tip theo ca
trình tr giúp.


5. Trong trang Protocol ca trình tr giúp, ch&n mc TCP/IP. Nhn nút Next  di
chuyn n trang tip theo ca trình tr giúp.

6. Trong trang TCP/IP ca trình tr giúp, nh#p vào tên y  ca máy ch hoc là
a ch- IP mà bn ã ghi li trong bc 1. Nh#p vào s cng bn ã ghi trong
bc 1. Nhn nút Next  di chuyn n trang tip theo ca trình tr giúp.

Ghi chú: Tùy ch&n Service Name có th c s dng nu bn có mt mc
(entry) trong t#p tin Services ni b vi mt cng có s c nh ngh'a da trên
cng mà máy ch t* xa ang lng nghe. Khi bn s dng tùy ch&n này, DB2 s,
tìm kim trong t#p tin dch v trên máy ca bn ch không phi trên máy ch.
Bn cn phi thêm mt mc vào t#p tin này nu bn mun s dng tùy ch&n
trên.
Nhp môn H qun tr c s d liu DB2

87

7. Trong trang C s d liu ca trình tr giúp, nh#p vào tên ca c s d liu
c nh ngh'a trên máy ch t* xa mà bn ã ghi li trong bc 1  trng
Database Name. / ý vic trng Database Alias c in mt cách t ng
vi cùng giá tr ó nh th nào. Bí danh c s d liu (database alias) là mt cái
tên mà nhng ng dng ni b trên máy ca bn s, s dng  kt ni n c
s d liu này. Bi vì bn ã có mt c s d liu trên máy ca mình c nh
ngh'a s)n vi tên là SAMPLE, DB2 s, không cho phép bn to tên mt c s d
liu khác có cùng tên. Vì th bn phi s dng mt tên bí danh khác. Trong ví d
này, hãy i bí danh c s d liu thành SAMPLE1. Bn có th nh#p vào mt li
chú thích tùy ý v c s d liu này nu bn mun. Nhn nút Next  di chuyn
n trang tip theo ca trình tr giúp.

8. Trong trang Data source ca trình tr giúp, bn có th (không bt buc) ng ký

c s d liu (ngu+n d liu) mi này nh mt ngu+n d liu ODBC. Vic này
s, t ng ng ký c s d liu ó trong chng trình qun lý ODBC ca
Windows (Windows ODBC Manager) cho bn. Trong ví d này, b" du ánh 
mc “Register this database for ODBC” ti vì bn s, không s dng ODBC. Nhn
nút Next  di chuyn n trang tip theo ca trình tr giúp.

9. Trong trang Node Options ca trình tr giúp, xác nh h iu hành ca máy ch
ni mà c s d liu t* xa ang nm ti ó. Bi vì tt c các máy trm trong
phòng máy này u s dng Microsoft Windows, hãy m bo rng mc
Windows trong danh sách s xung c ch&n. Trng Instance name nên
c t là DB2. Nu trng này cha c t thì hãy t giá tr cho nó là
DB2. Nhn nút Next  di chuyn n trang tip theo ca trình tr giúp.

10. Trang System Options ca trình tr giúp cho bn c hi  m bo rng h
thng và tên máy ch ã c in chính xác và xác nh#n nhng cài t ca h
thng. Nhn nút Next  di chuyn n trang tip theo ca trình tr giúp.

11. Trang Security Options ca trình tr giúp cho phép bn xác nh ni bn mun
vic xác thc ngi dùng xy ra và phng thc bn mun s dng. Ch&n mc
Use authentication value in server’s DBM Configuration. Cách làm này s, s
dng phng thc c xác l#p bi tham s AUTHENTICATION trong t#p tin
cu hình ca th hin (instance)  xa. Nhn nút Finish  to danh mc c s
d liu t* xa và óng trình tr giúp li. Mt hp thoi xác nh#n s, hin ra. Nhn
nút Test Connection  m bo bn có th kt ni thành công n c s d
liu. Thêm vào ó,  m bo tên ngi dùng và m#t kh u mà bn cung cp là
hp l trên máy ch  xa (bi vì có th tham s AUTHENTICATION ca máy ch
c t giá tr là SERVER). Nu vic th kt ni thành công, bn ã to danh
mc c s d liu  xa mt cách thành công. Nu vic kt ni không thành công,
bn hãy quay tr li trình tr giúp và m bo rng tt c các giá tr ã c xác
l#p úng (Nhn nút Change  quay li nhng cài t trong trình tr giúp)


12. M trung tâm iu khin và th xem nhng bng khác nhau trong c s d liu
t* xa v*a mi c to danh mc

13. Quay tr li chng trình Tr giúp thit l#p cu hình và th to danh mc vi
mt c s d liu khác, ln này s dng tu ch&n Search the Network. Làm t*ng
bc trong trình tr giúp ging nh bn ã cu hình kt ni bng tay. Lu ý
rng, trên nhng mng ln, vic tìm kim có th s, tn thi gian  tr v các kt
qu

Nhp môn H qun tr c s d liu DB2

88
8
Chng 8 - Làm vic vi các i tng d liu

Chng này tho lu#n các i tng d liu nh là dng s + (schemas), dng bng
(table), khung nhìn (view), ch- mc (indexes), chui (sequences)… Mt s các i tng
d liu cao cp nh là các b%y s kin (triggers), các hàm do ngi dùng nh ngh'a
(UDFs) và nhng th tc c lu tr s, c tho lu#n trong chng 14, SQL PL lu
tr các th tc, và chng 15, trong dòng SQL PL, UDFs, Triggers.
8.1 S 
S + là không gian tên (name spaces) cho t#p hp các i tng d liu. Chc nng
chính ca chúng nh sau:

- Cung cp cho bn các ch- d%n ca quyn s hu các i tng hay các mi
quan h i vi mt ng dng.
- Gom nhóm các i tng có mi quan h vi nhau.
Tt c các i tng d liu trong DB2 có hai phn tên theo tiêu chu n; s + là na
phn u tiên ca tên:


<tên_s >.<tên_i tng>

Tên i tng theo quy chu n phi là duy nht. Khi bn kt ni c s d liu và to hay
tham chiu n mt i tng mà không nh rõ tên s +, DB2 s, ly mã tài khon mà
bn kt ni vi c s d liu làm tên s +. Ví d, nu bn kt ni d liu m%u vi tên
s dng là “arfchong”, và to mt bng bng cách s dng phát biu CREATE TABLE

CREATE TABLE artist …

Tên theo quy chu n y  ca bng c to ra s, là arfchong.artists.
8.2 Bng
Mt bng là mt t#p hp các d liu có mi quan h vi nhau mt cách hp lý theo các
ct và hàng. Phát biu bên di cung cp cho bn ví d v vic làm cách nào  to ra
mt bng bng cách s dng phát biu 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
}
Nhp môn H qun tr c s d liu DB2

89
In mytblsl

Trong các phn tip theo ây, chúng ta có th mô t các phn chính ca phát biu

CREATE TABLE này.
8.2.1 Kiu d liu
Hình 8.1 Danh sách các kiu d liu c h tr trong DB2

Hình 8.1 – Các kiu d liu ca DB2


Các kiu d liu i tng ln (LOB)
Các kiu d liu i tng ln c dùng  lu tr các chui lý t ln, các chui nh
phân ln, hay các t#p tin c ch- ra trong hình 8.2
Nhp môn H qun tr c s d liu DB2

90

Hình 8.2 – Các kiu d liu LOB

Các i tng kiu nh phân ln này thng c vit tt  cho d0 hiu: Mt i tng
nh phân ln phi là mt BLOB, mt i tng ký t ln là CLOB, và i tng ký t ln
2 byte c.ng c bit nh là DBCLOB.

Các kiu d liu c $nh ngh-a bi ngi dùng
DB2 cho phép bn có th t nh ngh'a kiu d liu ca chính mình, da trên kiu d
liu ca h thng. /iu này c xem nh là vic có b kiu d liu do ngi dùng t
nh ngh'a (UDTs). UDTs c dùng khi:

- Có nhu cu thit l#p ng cnh cho các giá tr
- Có nhu cu cn ép kiu d liu DB2.
Các phát biu theo sau âu mô t mt ví d v vic s dng 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 to ra là: POUND and KILOGRAM. C hai u c
xây ng da trên kiu d liu s)n có ca h thng INTEGER. Mnh  WITH
COMPARISIONS c nh ngh'a nh là phn cú pháp ch- ra rng vic thay các hàm
vi cùng tên c.ng ging nh vic các kiu d liu s, c to ra.

Bng person dùng 2 UDTs mi trong ct weight_p và weight_k theo tun t. Nu
bây gi chúng ta a ra phát biu sau:

SELECT F_NAME FROM PERSON
WHERE weight_p > weight_k
Nhp môn H qun tr c s d liu DB2

91

Bn s, nh#n c mt thông báo li vì vic so sánh 2 ct vi kiu d liu khác nhau.
Th#m chí weight_p và weight_k dùng d liu là POUND và KILOGRAM, theo th t, c
hai trng này u c da trên kiu d liu là INTEGER. Tuy nhiên bng vic to
UDTs thì bn không th thc hin loi so sánh này. /ây chính là nhng gì bn mun,
bi vì trong cuc sng thc, làm th nào  so sánh gia pound và kilogram? Nó s, vô
lý.


Trong ví d k tip, bn mun so sánh ct weight_p vi kiu d liu integer. Tuy nhiên
hai kiu d liu này khác nhau, vì th bn s, nh#n c thông báo li tr* khi bn s
dng mt hàm ã ép kiu.

Nh bn thy trong phát biu bên di, chúng tôi s, dùng hàm ép kiu POUND() 
iu so sánh này có th thc hin c. Nh ã nêu  trên hàm ép kiu POUND() c
to ra vi UTD khi triu g&i WITH COMPARISIONS ca phát biu CREATE DISTINCT
TYPE.

SELECT F_NAME FROM PERSON
WHERE weight_p > POUND (30)

Các giá tr$ NULL
Mt giá tr null i din cho mt rng thái không xác nh. Tuy nhiên, phát biu CREATE
TABLE có th nh ngh'a mt ct bng cách s dng mnh  NOT NULL. /iu này
m bo rng ct này s, cha giá tr d liu c bit n. Bn c.ng có th ch- nh giá
tr mc nh cho ct nu NOT NULL c khai báo. Phát biu k tip cung cp ví d cho
iu 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 Ct khoá chính (Identity columns)

Ct khoá chính này là mt con s c to ra t ng, s này là duy nht cho mi dòng.
Ch- có mt ct khoá chính cho mt bng.

Có hai cách to ra giá tr cho ct khoá chính, iu này ph thuc vào vic nó c nh
ngh'a nh th nào:

- Luôn luôn c sinh ra: nhng giá tr luôn luôn c DB2 sinh ra. Các ng dng
thì không c phép cung cp nhng giá tr c th.
- Sinh ra mc nh: giá tr có th c cung cp c th bi mt ng dng hoc,
nu không có giá tr cho trc, thì DB2 s, sinh ra. DB2 không th m bo c
tính duy nht. Tùy ch&n này c d nh phc v cho vic truyn d liu, và
cho vic unload và reload ca mt bng.
Hãy xem qua ví d sau:

Nhp môn H qun tr c s d liu 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, ct subscriberID là mt INTEGER c nh ngh'a nh là mt ct khoá
chính thuc loi luôn luôn c sinh ra t ng. Giá tr c sinh ra s, bt u t* 100,
và nó s, c tng lên vi bc là 100.
8.2.3 Các  tng tun t (Sequence object)
Các i tng tun t sinh ra mt con s duy nht da vào c s d liu. Không ging
nh các ct khóa chính, các i tng tun t này là nhng bng c l#p, xem ví d
minh h&a  phát biu 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 cp cho bn giá tr hin ti ca dãy tun t, trong khi NEXTVAL cung
cp giá tr k tip.

Ví d bên trên c.ng s dng SYSIBM.SYSDUMMY1. ây là mt bng danh mc h
thng mà nó ch- có mt ct và mt hàng. Nó có th c dùng trong tình hung nh mt
câu truy vn yêu cu tr v ch- mt giá tr. Các bng danh mc h thng c mô t

trong phn k tip.
8.2.4. Các bng danh sách h thng
Mi c s d liu có các bng danh sách h thng ca riêng nó. Các bng này lu tr
siêu d liu v các i tng c s d liu. Bn có th truy vn nhng bng này nh
bt k bng c s d liu bình thng khác.

Ba s + c s dng  nh#n dng các bng danh sách h thng:

• SYSIBM: các bng c s, ti u hóa s dng DB2
• SYSCAT: khung nhìn (view) da trên bng SYSIBM, ti u s d0 s dng.
Nhp môn H qun tr c s d liu DB2

93
• SYSSTAT: các s liu thng kê c s d liu

Sau ây là mt vài ví d v các khung nhìn ca danh mc:

• SYSCAT.TABLES
• SYSCAT.INDEXES
• SYSCAT.COLUMNS
• SYSCAT.FUNCTIONS
• SYSCAT.PROCEDURES
8.2.5. Khai báo các bng tm thi
Khai báo bng tm thi là các bng c to ra trong b nh, c s dng bi mt
ng dng và c t ng xóa khi ng dng kt thúc. Nhng bng này ch- có th c
truy nh#p bi ng dng to ra chúng. Không có bn ghi nào c sinh trong bng danh
sách ca DB2. Truy nh#p nhng bng này có hiu qu rt cao bi vì không có s tranh
chp 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 kim
tra quyn. C.ng có h tr ch- mc cho các bng tm thi này, ó là, bt c ch- mc
chu n nào c.ng có th c to trên mt bng tm thi. Bn c.ng có th chy lnh

RUNSTATS vi các bng này.

Khai báo các bng tm thi  bên trong mt không gian s dng ca bng tm thi, ây
là cái phi c nh ngh'a trc khi to ra bt c bng tm thi nào. Các phát biu
di ây cung cp mt ví d làm th nào  to ba khai báo bng tm thi:

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 mt khai báo bng tm thi c to ra, s + ca nó là SESSION, và phi c
ch- tng minh. ID ngi dùng c s dng  to mt bng tm thi s, có tt c
quyn trên bng. Mi ng dng to mt bng tm thi s, quyn c l#p ca riêng nó
c ch- ra trong Figure 8.5.

Nhp môn H qun tr c s d liu DB2

94


Figure 8.5 – Phm vi ca các bng tm thi toàn cc công khai
Bài tp nhanh #5 - Khi to mt bng mi

Mc tiêu
/n ây, bn có th s dng nhng bng có s)n trong c s d liu SAMPLE  minh
h&a các khái nim. Cui cùng, bn s, cn to mt c s d liu g+m các bng ca riêng
mình. Trong phn bài t#p này, bn s, s dng to bng theo hng d%n t*ng bc 
to hai bng mi trong c s d liu SAMPLE.

Th tc
1. M Create Table Wizard nh ã ch- ra  trên trong phn gii thiu.
(Control Center -> All Databases -> SAMPLE -> (nhn phi chut) Tables object
-> Create …)

2. /nh ngh'a tên bng, nh ngh'a ct và các ràng buc. Bng s, c s dng  lu
tr thông tin v cung cp vn phòng ph m, c s dng bi mt d án trong c s
d liu SAMPLE. Mi ln vn phòng ph m c mua, mt hàng s, c thêm vào
trong bng này. Bng s, có sáu ct:

• product_id: nh#n dng duy nht ca sn ph m ang c mua
• description: mô t v sn ph m
• quantity: s lng mua
• cost: giá ca sn ph m
• image: mt bc nh ca sn ph m (nu dùng c)
• project_num: Mã s ca d án mua sn ph m này

3. 4 trang u tiên ca hng d%n t*ng bc, i vi tên s +, gõ vàp ID bn s
dng  ng nh#p, và s dng tên bng là SUPPLIES. Bn c.ng có th gõ vào mt
ghi chú tùy ý. Nhn vào nút Next  tip tc ti trang sau ca hng d%n.


4. T* trang này, bn có th thêm các ct vào bng. Nhn nút ADD  thêm các ct.

Nhp môn H qun tr c s d liu DB2

95


Gõ “product_id” vào Column name và ch&n kiu là INTEGER. B" du kim 
Nullable, và nhn vào nút Apply  nh ngh'a ct.

Lp li bc này cho nhng ct còn li ca bng s dng các tùy ch&n c ch-
trong bng  trên. Khi tt c các ct ã c thêm vào, nhn nút OK và danh sách
các ct bn v*a to s, c tng kt. Nhm nút Next  tip tc ti trang k tip
ca hng d%n.

Tên ct Thuc 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 ct LOB. /iu
này là bt buc vi các ct có kích thc ln hn 1GB. Nó c.ng c khuyên dùng
cho các ct LOB ln hn 10MB bi vì s thay i các ct ln có th làm y tp này
rt nhanh. Ngay c nu NOT LOGGED c s dng, s thay i các tp LOB
trong quá trình giao dch xy ra, v%n có th quay lui v trang thái lúc u. C.ng chú ý
rng mt mình ct hình nh c nh ngh'a nh mt ct “NULLABLE”. Bn có ngh'
ti sao ct c nh ngh'a nh th?


5. 4 ây, tt c thông tin bt buc cho vic to bng u c cung cp. Bng cách
nhy sang các trang khác, bn coi nh ang ch&n các giá tr mc nh cho nhng tùy
ch&n ó. Bn có th thêm các khóa và ràng buc sau khi mt bng v*a c to.
Nhp môn H qun tr c s d liu DB2

96

6. Thêm mt ràng buc ti bng  hn ch các giá tr trên ct quantity. Trên trang
Constraint ca ca s thao tác, nhn nút ADD. Trong trng Check Name, gõ vào:
valid_quantities. Trong trng Check Condition, gõ vào: quantity > 0.

Nhn nút OK. Bn nên nhìn mt tng kt ca ràng buc bn v*a thêm vào trong
trang Constraint ca ca s thao tác. Nhn nút Next  tip tc ti trang tip theo
ca màn hình thao tác.

7. Bn có th tip tc hoàn thành thao tác, thay i các tham s khác ca bng. Hoc,
bn có th nhy n trang Summary, hay n gin là nhn vào nút Finish  to
bng.

8. T* trung tâm iu khin, nhn vào th mc Tables di c s d liu SAMPLE
trong khung cây i tng. Bng bn v*a to bây gi s, xut hin trong danh sách.
Có th phi làm ti ca s trung tâm iu khin  thy 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 hin th ca d liu trong bng. D liu ca các
khung nhìn không c cha riêng bit, nhng s, c t+n ti khi c g&i ti. Vi các
khung nhìn l+ng nhau, mt khung nhìn c to làm nn cho các khung nhìn khác. Các
thông tin v khung nhìn  trong mc lc khung nhìn DB2: SYSCAT.VIEWS,
SYSCAT.VIEWDEP và SYSCAT.TABLES. Sau ây là cách to và s dng khung nhìn:


CONNECT TO MYDB1;
CREATE VIEW MYVIEW1 AS SELECT ARTNO, NAME, CLASSIFICATION
FROM ARTISTS;

SELECT * FROM MYVIEW1;

Kt qu u ra:

Artno Name Classification

10 HUMAN A
20 MY PLANT C
30 THE STORE E
8.4 Các ch, mc (Index)
Ch- mc là t#p các khóa c sp xp theo mc  các dòng trong bng. Ch- mc cho
phép trùng, và nó c phép thay i. Mt s c im bn có th nh ngh'a ch- mc:

• Kiu ch- mc tng hoc gim.
• Khóa ca ch- mc có th là duy nht hoc không duy nht.
• Nhiu ct có th s dng làm ch- mc (c g&i là các ch- mc ghép).
• Nu ch- mc và các d liu v#t lý hp li ging nh các chui ch- mc, c g&i
là các bó ch- mc.

Ví d:

CREATE UNIQUE INDEX artno_ix ON artists (artno)
Nhp môn H qun tr c s d liu DB2

97
8.4.1 Tr giúp thit k (Design Advisor)

Tr giúp thit k là mt công c khá tt  giúp bn ti u thit k c s d liu cho mt
công vic ã bit. Tr giúp thit k có th giúp bn bng cách thit k các ch- mc cho
bn, Materialized Query Tables (MQTs), Multi-demension clustering (MDC) và các tính
nng phân tán c s d liu. Tr giúp thit k c g&i t* Trung tâm iu khin, bm
chut phi trên c s d liu và ch&n “Design Advisor” nh hình 8.6:


Hình 8.6 – Thc hin tr giúp thit k t& Trung tâm iu khin


Hình 8.7 Cho thy tr giúp thit k. Theo sau là các bc hng d%n t c cách
thit k gi ý t* DB2.
Nhp môn H qun tr c s d liu DB2

98

Hình 8.7

– Tr giúp thit k

8.5 Tính toàn v.n tham chiu
Toàn v7n tham chiu cho phép c s d liu qun lý c các quan h gia các bng.
Bn có th thit l#p kiu cha-con (parent-child) ca các quan h gia các bng nh hình
8.8. Trong hình có hai bng DEPARTMENT và EMPLOYEE c liên kt bi mã s ca
phòng (department). Ct WORKDEPT trong bng EMPLOYEE ch- có th cha mã s
ca phòng ã t+n ti trong bng DEPARTMENT. /ó là lý do trong ví d này, bng
DEPARTMENT c g&i là bng cha, bng EMPLOYEE c g&i là bng con hoc
bng ph thuc. Hình sau trình bày cách dùng CREATE TABLE  to bng
EMPLOYEE cn cho thit 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 chiu gia các bng.


Trong toàn v7n tham chiu, thng s dng các khái nim sau:
EMPNO
(Primary key)
FISTHNAME LASTNAME WORKDEPT
(Foreign key)
PHONENO
Nhp môn H qun tr c s d liu DB2

99

Khái nim Mô t

Bng cha (Parent table) Bng d liu iu khin cha khóa chính
Bng ph thuc
(Dependant table)
Bng d liu ph thuc vào bng cha. Cha khóa ngoi,
mi dòng t+n ti trong bng ph thuc phi phù hp vi các
dòng trong bng cha.
Khóa chính (Primary key) /nh ngh'a khóa chính ca bng cha, nó không c có giá
tr NULL và phi là duy nht. Khóa chính có th là mt hoc
nhiu ct trong bng.
Khóa ngoi (Foreign key) Tham chiu n khóa ngoi ca bng cha.

D liu trong mt bng có th liên kt vi d liu ca mt hoc nhiu bng thông qua
toàn v7n tham chiu. Các ràng buc có th c áp t  d liu phù hp vi c tính
nào ó hoc các quy tc trong kinh doanh ca d liu. Ví d, nu mt ct ca bng là
gii tính, nó có th c ép  cha mt trong hai giá tr là “M” cho nam và “F” cho n.

Nhp môn H qun tr c s d liu DB2

100
9
Chng 9 – Công c di chuyn d liu

Nhng công c hay câu lnh c mô t trong phn này c s dng  di chuyn d
liu trong cùng mt c s d liu hay qua nhng c s d liu khác nhau nm trên
cùng mt nn (platform) hoc có th khác nn.

Hình 9.1 mô t tng quan v công c di chuyn d liu

Hình 9.1


- Công c di chuyn d liu
.

Trong hình 9.1 có 2 c s d liu: A và B. Bng cách s dng công c EXPORT, ta có
th kt xut d liu t* mt bng sang mt tp. Tp có th thuc các nh dng sau:

ASC = ASCII
DEL = Delimited ASCII – ASCII có nh gii hn.
WSF = Worksheet format – /nh dng kiu bng tính.
IXF = Integrated Exchange Format – /nh dng trao i thng nht.

Nhng tp dng ASC hoc DEL là nhng tp vn bn và có th m và xem li bng bt
k trình son tho vn bn nào. WSF là mt loi nh dng mà có th di chuyn d liu
sang bng tính ch!ng hn Excel hay là Lotus® 1-2-3. IXF là mt nh dng không ch-
bao g+m d liu mà còn là mt ngôn ng nh ngh'a d liu (Data Definition Language-
DDL). /iu này rt tin dng, vì khi mt bng cn c xây dng li, ta có th xây dng
mt cách trc tip t* tp có nh dng IXF, còn nhng tp  nh dng khác thì ta không
th làm c vic này.

Khi d liu c kt xut sang dng tp, công c IMPORT có th c dùng  chuyn
d liu t* dng tp sang dng bng. Bng phi t+n ti s)n di khuôn m%u ASC, DEL
và WSF, ngoi tr* nh dng IXF. Mt phng thc khác là công c LOAD dùng 
chuyn np d liu vào trong bng. Công c LOAD thì nhanh hn vì nó i trc tip n
nhng trang c s d liu mà không cn tng tác n h thng DB2; tuy nhiên,
phng thc này không th to ra nhng kim tra ràng buc i vi d liu, và s,
Nhp môn H qun tr c s d liu DB2

101
không thc hin c các b%y s kin (nu có). / m bo mt cách kiên nh vic
np d liu dùng công c LOAD, lnh SET INTEGRITY thng c s sng theo sau.


Nhng phn tip theo sau ây s, mô t nhng công c EXPORT, IMPORT và LOAD
mt cách chi tit.
9.1 Công c EXPORT (xut)
Công c EXPORT c dùng  trích d liu t* bng thành mt tp nh ã  c#p
trc ây. Bên di ây, mt thao tác SQL SELECT c g&i thc thi. Ví d di ây
kt xut thành tp employee.ixf thuc nh dng IXF có 10 dòng t* bng employee.

EXPORT TO employee.ixf OF IXF
SELECT * FROM employee
FETCH FIRST 10 ROWS ONLY

Chúng tôi khuyn khích bn nên th chy ví d trên. Bng employee là mt b ph#n ca
c s d liu SAMPLE, vì th trc ht bn nên kt ni n c s d liu này, nó ã
c to ra trong chng trc.

Nu bn thích làm vic vi nhng công c có giao din + h&a (GUI), công c EXPORT
c.ng có th c thc hinn t* Trung tâm iu khin (Control Center) nh trong hình
9.2 bên di.


Hình 9.2

- Hin th$ hp thoi bng EXPORT


Nh ã thy trên hình, trc ht bn phi ch&n bng employee bng cách nhn vào nó
mt ln, và k ó thì nhn chut phi trên bng  m mt bng ch&n con (popup menu)
t* ó bn có th ch&n Export. Sau khi ch&n mc này, ca s hng d%n t*ng bc s,
hin lên. Ch- cn n gin làm theo nhng bc cung cp s)n trong hng d%n này 

hoàn thành quá trình thc hin.
Nhp môn H qun tr c s d liu DB2

102
9.2 Công c IMPORT (nhp)
Công c IMPORT c dùng  np d liu t* mt tp sang mt bng nh ã nói trc
ây. /ng sau nó, mt thao tác SQL INSERT c thc thi thc s. Khi mt lnh
INSERT c thc thi, các b%y s kin s, c kích hot, tt c các ràng buc s, có
hiu lc ngay l#p tc, và vùng nh m ca c s d liu s, c s dng. Ví d sau
ây np tt c d liu t* mt tp employee.ixf có nh dng IXF vào trong bng
employee_copy. La ch&n REPLACE_CREATE là mt trong nhng la ch&n có s)n vi
công c IMPORT. La ch&n này s, thay th ni dung ca bng employee_copy nu nh
nó ã t+n ti trc khi công c IMPORT c thc thi, hoc là nó s, to mt bng và
np d liu nu bng cha t+n ti trc ó. Chúng tôi khuyn khích bn nên chy th ví
d di ây, nhng trc ht bn phi chy công c EXPORT trong phn trc.

IMPORT FROM employee.ixf OF IXF
REPLACE_CREATE
INTO employ_copy

Nu bn thích làm vic vi Trung tâm iu khin, bn có th thc hin công c IMPORT
bng cách ch&n bt k bng nào, nhn chut phi trên nó, và ch&n chc nng Import
nh hình 9.3


Hình 9.3 – Hp hi thoi thc hin công c IMPORT
9.3. LOAD (np)
Công c LOAD là mt cách np d liu t* tp sang bng nhanh hn. Nh ã tho lu#n
trc ây, công c LOAD không i qua h thng DB2, vì th các b%y s kin không
c kích hot, vùng m s, không c dùng và các ràng buc s, không có hiu lc.

Mt khác, mt thao tác LOAD s, nhanh hn IMPORT vì nó là mt công c np d liu
cp thp trc tip truy xut n trang d liu trên 'a. Nó làm vic theo 3 giai on:
LOAD, BUILD và DELETE.

Ví d sau ây np tt c các d liu t* tp employee.ixf có nh dng IXF vào trong
bng employee_copy. La ch&n REPLACE là mt trong nhng la ch&n có s)n trong
Nhp môn H qun tr c s d liu DB2

103
LOAD. Trong trng hp này, nó c s dng  REPLACE tt c các d liu có
trong bng employe_copy.

LOAD FROM employee.ixf OF IXF
REPLACE INTO employ_copy

Sau khi thc thi câu lnh trên, không gian ca bng, ni mà bng ca bn trú ng, có
th c a n trng thái CHECK PENDING. /iu này có ngh'a là bn cn phi chy
câu lnh SET INTEGRITY  kim tra tính chc chn d liu ca bn. Ví d sau ây s,
ch- cho bn làm th nào.

SET INTEGRITY FOR employee_copy
ALL IMMEDIATE UNCHECKED

Nu bn thích làm vic vi Trung tâm iu khin hn, bn có th thc hin công c
LOAD và SET INTEGRITY nh trong hình 9.4 và 9.5 tng ng.


Hình 9.4

- Thc hin công c LOAD




Nhp môn H qun tr c s d liu DB2

104

Hình 9.5

- Thc hin công c SET INTEGRITY

9.4 Công c db2move
Ti mt thi im, công c EXPORT, IMPORT, và LOAD ch- làm vic trên mt bng.
Mc dù bn có th vit mt kch bn  phát sinh các lnh trên cho t*ng bng trong c
s d liu, nhng công c db2move s, giúp bn làm iu ó. Công c db2move ch- làm
vic vi tp IXF, và tên tp s, t ng c phát sinh bi db2move. Ví d bên di s,
biu di0n chy db2move vi export, import nh th nào  s dng c s d liu
SAMPLE:

db2move sample export
db2move sample import

Trung tâm iu khin 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 bn di chuyn
d liu t* mt bng này ti mt bng khác, trong cùng mt c s d liu hay qua vài c
s d liu, công c db2look có th c s dng  rút trích các câu lnh DDL, các c
s d liu t'nh, các c tính không gian bng cho mt c s d liu, và lu tr chúng
trong mt tp kch bn mà có th sau này c chy trên mt h thng khác. Ví d, nu

bn mun sao chép mt c s d liu t* máy ch DB2 ang chy trên Linux sang mt
máy ch DB2 ang chy trên Windows; u tiên bn chy công c db2look trên máy
ch DB2 Linux  ly c cu trúc ca c s d liu và lu cu trúc này trên mt tp
kch bn. Sau ó bn chép tp kch bn này sang máy ch DB Windows, và thc thi kch
bn ó  bt u xây dng bn sao c s d liu. Ti ây, cu trúc ca c s d liu
ó ã c sao chép. Bc k tip, s, chy công c db2move vi tùy ch&n export trong
máy ch DB2 Linux, và sau ó chép tt c các tp c phát sinh sang máy ch DB2
Windows, sau ó thc thi db2move vi tùy ch&n là import hoc load. Hoàn thành bc
này, c s d liu ca bn s, c sao chép toàn b t* mt máy ch này sang mt
máy ch khác hot ng trên mt nn tng khác.

×