Th tc Searching_Sequence

Một phần của tài liệu Ràng buộc toàn vẹn đa phiên bản cơ sở dữ liệu thời gian và ứng dụng (Trang 26)

2.2 Tìm k im dãy tr ng thái yđ

2.2.1 Th tc Searching_Sequence

Th t c đ c xây d ng d a trên ph ng pháp vét c n, cho phép li t kê các dãy

tr ng thái đ y đ i (nh ng đ ng đi Hamilton có th t topo) trên m t đ th

chuy n tr ng thái T có n đ nh cho tr c. Kh i đ u nh ng dãy i ch có m t đ nh

duy nh tv0(là đ nh kh i đ u c aT), sau đó là các đ nh khác c aTl n l t đ c ghi

vào icho đ n khi ilà m t dãy tr ng thái đ y đ [5].

Procedure SEARCHING_SEQUENCE

(* Input: đ th chuy n tr ng tháiT, đ nh kh i đ uv0, đ nh k t thúcvn-1.

t1 t2 t3 t4

18

Output: T h p l , các dãy tr ng thái đ y đ i , ghi k t qu ra File hay thông báoT

không h p l .*) Dem : integer; begin Kh i t o i, ban đ u ch cóv0; whileđ nh cu ikc a i < > vn-1do begin Dem := 0; for each ido(* v i m i i *) begin (*xét các đ nh li n k c ak *) for j ke(k) do begin ifj ke(k) do Dem := Dem + 1; end; if (Dem = 1) then Thêm jvào cu i i; if (Dem > 1) then begin

T o (Dem–1) dãy m i và ch s cho m i dãy tăng 1;

(* 2, 3, 4,..*)

Chép các đ nh trong it i các dãy m i;

Thêm các jkhác nhau vào cu i m i ivà các dãy m i;

end; end;

end;

if Tìm đ c dãy tr ng thái đ y đ then

begin

Thông báo Th p l ;

Thông báo các dãy tr ng thái đ y đ i;

Ghi k t qu ra File;

end; else

Thông báo l i (Tkhông h p l );

end;

Hình 2.3 Th t c Searching_Sequence [5]

2.2.2 K t qu th c hi n th t c

19

Hình 2.4 M t ví d tìm ki m dãy tr ng thái đ y đ trên đ th chuy n tr ngthái

Ta có k t qu th c hi n th t c nh sau:

Th p l (Tlà đ th n a Hamilton).

Các dãy tr ng thái đ y đ trênTnh sau:

s0 → s1 → s2 → s3 → s4 → s5 s0 → s1 → s2 → s4 → s3 → s5 s0 → s1 → s3 → s2 → s4 → s5

2.2.3 Phân tích th t c:

Xét th t c SEARCHING_SEQUENCE, vì v0, vn-1đã bi t tr c, hay nói cách khác,

đã c đ nh đ nh đ u và đ nh cu i nên ch có m t cách đ ch n đ nh đ u và đ nh k t

thúc.

G i d là b c c c đ i c a T. Khi đó, các đ nh trung gian có t i đa d cách l a ch n

(hay d c nh đi ra). Do đó, có t i đa 1*d*...*d*1 = dn-2 dãy tr ng thái đ y đ trênT,

hay đ ph c t p c a thu t toán (th t c) làO(dn-2).

2.2.4 Nh n xét và đánh giá

Th t c SEARCHING_SEQUENCE s d ng vòng l p nên gi m đ c chi phí b nh và cũng d qu n lý h n so v i th t c đ c xây d ng b ng thu t toán đ quy.

Trong ng d ng th c t , th t c SEARCHING_SEQUENCE ch đ c th c hi n

m t l n (k t qu đ c l u ra file) nên chi phí c a th t c không nh h ng đ n chi

S

S S

S

20

phí ki m tra ràng bu c toàn v n c a bài toán ng d ng trong lu n văn. H n n a, d

là khá nh so v i n, đ c bi t khi n th t l n (b cd c aT không thay đ i khi s đ nh

c a đ th tăng cao).

2.3 Ki m tra ràng bu c toàn v n trên đ th chuy n tr ng thái

Trong m c này, lu n văn t p trung vào vi c ki m tra ràng bu c toàn v n trên m t đ th chuy n tr ng thái cho tr c, và gi s m i đ nh c a nó t ng đ ng v i m t (nhóm) đ i t ng trong c s d li u th i gian.

Vi c c p nh t m t đ nh cũng gi ng nh c p nh t m t b (hay m t s b ) c a b ng. Do đó đ đ n gi n, chúng ta g i nó là c p nh t t i m t đ nh. Vi c ki m tra ràng

bu c toàn v n liên quan đ n các thao tác chèn (insert), s a (update), xoá (delete) và

ch c ch n liên quan đ n m t đ nh nào đó. Vì v y c n xét c th ba tr ng h p c a thao tác c p nh t.

Khi m t đ th chuy n đ i tr ng thái s t o thành nhi u dãy tr ng thái khác nhau, lúc đó vi c ki m tra toàn v n trên các dãy tr ng thái đó cũng s khác nhau, ta g i đó là vi c ki m tra ràng bu c toàn v n trên nhi u phiên b n

2.3.1 Thao tác chèn

M t đ i t ng Ob có th đ c chèn vào m t đ nh su c a m t đ th chuy n tr ng

thái. Đi u đó có nghĩa, Ob di chuy n t i su. Tuỳ vào các dãy tr ng thái đ y đ c a

đ th , có th các tr ng h p ki m tra ràng bu c toàn v n t isus khác nhau.

21

Hình 2.5 Đ th chuy n tr ng thái có hai dãy tr ng thái đ y đ

Trong ví d trên (Hình 2.5), s d ng m t đ th chuy n tr ng thái đ n gi n đ minh ho cho vi c ki m tra các ràng bu c toàn v n tuỳ theo tr ng thái mà ng i dùng l a ch n. Trong ví d này, nó có hai dãy tr ng thái đ y đ làs0, s1, s2, s3, s4 và s0, s1, s3, s2, s4. Vi c di chuy n c aOb trong đ th này đ c t ch n m ttrong hai dãy tr ng

thái trên.

- N u Ob đ c chèn vào đ nh s0 và hi n t i Ob ch a t n t i b t kỳ đ nh nào, không c n ki m tra ràng bu c toàn v n.

- N uObđang đ nhs1 và có m t thao tác chèn,Obcó th l a ch ns2 ho cs3. - N uObđang đ nhs2 và có m t thao tác chèn,Obcó th l a ch ns3 ho cs4. - N uObđang đ nhs3 và có m t thao tác chèn,Obcó th l a ch ns2 ho cs4. 2.3.2 Thao tác s a

Thao tác này không ph i ki m tra ràng bu c toàn v n vì đ i t ng có d li u t i m t đ nh, có nghĩa nó đã di chuy n đ n đ nh đó. Vì v y, đ i t ng không vi ph m các dãy tr ng thái đ y đ trong đ th chuy n tr ng thái. Tuy nhiên, c n c n ki m tra d li u có tính th i gian (valid-time) cho phù h p nh đ nh nghĩa 4 ho c n u nh đ i t ng là m t nhóm các đ i t ng con (nhóm g m nhi u h c ph n) thì c n ki m tra h p l vi c thay đ i (thay th ) các đ i t ng con.

S0 S1

S3

22 2.3.3 Thao tác xoá

M t đ i t ng có th b xoá t i m t đ nh (m t b b xoá). Thao tác này ph i đ c ki m tra xem có tho mãn đ nh nghĩa 3 (ràng bu c toàn v n trên dãy chuy n tr ng

thái) trong m c 2.1 hay không. N u đ nh nghĩa 3 không đ c tho , thao tác xoá b t ch i.

2.4 Các th t c ki m tra ràng bu c toàn v n.

Xét m t đ th chuy n tr ng tháiT có nđ nh, v is0là đ nh kh i đ u,sulà đ nh đ c c p nh t, ts, te là các giá tr th i gian h p l kh i đ u và k t thúc c a m t đ i t ng

Ob, TOblà m t b ng d li u (Data table), ghi l i các đ nh màObđã di chuy n qua. Gi s Th p l và ilà các dãy tr ng thái đ y đ trongT.

Quá trình th c hi n ràng bu c toàn v n và vi c ki m tra th c hi n ràng bu c toàn v n c a đ i t ng đ c mô t m t cách t ng quát nh Hình 2.6 bên d i.

23

Hình 2.6 Mô t t ng quát vi c ki m tra đ i t ng th c thi ràng bu c toàn v n

2.4.1 Ki m tra thao tác c p nh t

M i thao tác c p nh t Insert hay Delete c a m t Ob trên m t đ th chuy n tr ng

thái Tđ c g i là m t th c hi n ràng bu c toàn v n trênT.

Vi c ki m tra ràng bu c toàn v n v i các thao tác này đ c th c hi n b i các th t c INSERT_CHECK và DELETE_CHECK, đ c trình bày nh sau:

24 Procuedure INSERT_CHECK(us, ts, te, i) begin

if (su = s0 AND Obch a t n t i trongT ) then begin Chèn Ob vào su; Chèn su vào TOb ; end if (sulà đ nhObđã di chuy n đ n)then begin (* so sánh (ts, te) v i (t’s, t’e) – giá tr th i gian h p l c a Obđ c c p nh t t isutr c đó *)

if (ts ≥ t’s) then (* tho mãn đ nh nghĩa 4 *)

Chèn Ob vào su; else

Thông báo l i (Thao tác không h p l )

end;

if (su <> s0 AND Obch a di chuy n đ su) then begin T o m t danh sách r ngLtemp; MATCHING(Ltemp, i); if (su Ltemp) then begin Chèn Ob vào su; Chèn su vào TOb; end; else

Thông báo l i (Thao tác không h p l );

end; end;

Function MATCHING (Ltemp, i) t: integer;

begin t := 0;

for each ( i in T ) do

if (tph n t đ u tiên c a i = TOb ) then begin Chèn ph n t (t+1) c a i vào Ltemp ; Lo i b t ph n t trùng, ch gi l i nh ng ph n t phân bi t trong Ltemp ; end; (* return Ltemp *) end;

25 Procedure DELETE_CHECK (su)

Begin

If (Tho mãn đ nh nghĩa 3)then Xoá Obt i đ nhsu; End; Procedure CHECK (* global variables: T, Ob *) Begin Do case of Ob inserted : INSERT_CHECK (su, ts, te, i ) Ob deleted : DELETE_CHECK (su); End; End; Hình 2.7 Ki m tra thao tác c p nh t 2.4.2 Ki m tra th c hi n ràng bu c toàn v n

Vi c ki m tra th c hi n ràng bu c toàn v n chính là ki m tra đ i t ng th c thi các ràng bu c có th t trên nh ng dãy tr ng thái đ y đ iđ c tìm ra t đ th chuy n tr ng tháiT.

Th t c CHECKING

B t c lúc nào, ng i s d ng cũng có th ki m tra quá trình đã th c hi n các ràng bu c toàn v n c a m t đ i t ng. N u đ i t ng tho mãn đ y đ các ràng bu c toàn v n thì t t c các ph n t trong m t dãy tr ng thái đ y đ nào đó đ c đánh d u, nghĩa là đã đ c đ c li t kê đ y đ trongTOb(Xem th t c trong Hình 2.7).

Theo đó, th t c Checking ho c thông báo đ i t ng đã th c hi n xong các ràng bu c toàn v n ho c hi n th m t danh sách các ràng bu c toàn v n mà đ i t ng đã th c hi n. Th t c CHECKING đ c trình bày nh sau:

26 Procedure CHECKING

t: integer; begin

t ≔0;

for each (su in Tob) do t = t+1;

for each ( i in T) do

if (t = n) AND Tob = i) then

Thông báo (Obđã th c hi n xong các RBTV)

else Các RBTV đã th c hi n làTOb; Thông báo ng i s d ng có th l a ch n các ph n t (t+1) c a i; end; Hình 2.8 Ki m tra th c hi n ràng bu c toàn v n Tính đúng đ n c a th t c Checking

Th t c CHECKING luôn mang l i nh ng k t qu đúng.

Gi s chúng ta cókdãy tr ng tháiđ y đ (k> 0), m i dãy cón ph n t (n> 1) nh

sau:

1 = (s0, ..., sn-1) 2 = (s0, ..., sn-1) ...

k = (s0, ..., sn-1)

Các ph n t n m trong kho ng s0 đ n sn-1 là gi ng nhau, ch khác nhau v th t . M i l n th c hi n, th t c INSERT_CHECK ch ra m t đ nh su mà ng i s d ng l a ch n, có th đ c c p nh t hay không. N u su đ c c p nh t, nó s đ c ghi

vào TOb. Nh v y, sau m t th i gian th c thi ràng bu c toàn v n s có ít nh t m t dãy tr ng thái đ y đ imà các ph n t c a nó đ c đánh d u, nghĩa là đ c li t kê đ y đ trong TOb. Nói cách khác, đ i t ng đã th c hi n xong các ràng bu c toàn v n đ c gán cho nó. N u không, m t danh sách các ràng bu c toàn v n su mà đ i t ng đã th c hi n s đ c hi n th .

27

2.4.3 Ví d minh ho v vi c ki m tra th c hi n ràng bu c toàn v n

Xét đ th chuy n tr ng thái nh Hình 2.4, và gi s đây là mô hình đào t o cho sinh viên theo h c t i m t c s đào t o nào đó.

Theo đó, đ hoàn thành ch ng trình đào t o, m t sinh viên ph i h c đ các h c ph n t s0đ s5 (trong đó s0 là nhóm h c ph n c s ph i h c đ u tiên,s5 là nhóm

h c ph n đ t t nghi p) tho mãn các ràng bu c toàn v n đ c ch ra trong k t qu th c hi n th t c SEARCHING_SEQUENCE (đã trình bày trong m c 2.2.2 bên trên):

s0→ s1→ s2→ s3→ s4 → s5 (1) s0→ s1→ s2→ s4→ s3 → s5 (2) s0→ s1→ s3→ s2→ s4 → s5 (3)

D a trên các th t c đã đ c trình bày trong các m c 2.4.1 và 2.4.2, sinh viên này

có th đăng ký, tham gia vào các nhóm h c ph n sucũng nh theo dõi quá trình h c t p c a mình nh sau:

T i th i đi mt0:

T t c các sinh viên ph i hoàn t t nhóm h c ph n c s . Vì v ys0đ c chèn vào c s d li u th i gian, và đ c đánh d u:TOb = {s0}

T i th i đi mt1 ngay sau t0:

Khi đã k t thúc nhóm h c ph ns0.

Thông báo (h c ph n đã đ c th c hi n: s0. Sinh viên có th đăng ký h c ph n ti p

theo: s1).

Lúc này, n u nhà tr ng đã chu n b nhóm h c ph n s1, sinh viên này có th đăng ký đ theo h c s1. Vì v ys1 đ c chèn vào c s d li u th i gian, đ c đánh d u: TOb = {s0, s1}.

28

Khi đã k t thúc nhóm h c ph n s1, và gi s , lúc này nhà tr ng đã chu n b c 2 nhóm h c ph ns2 và s3, tuỳ theo l trình sinh viên đã ch n lúc đ u mà có thông báo t ng ng đ sinh viên có th ch ns2 hay s3. Vì v ys2ho cs3đ c chèn vào c s d li uth i gian, s2ho cs3đ c đánh d u:

TOb = {s0,s1, s2} (n u sinh viên đã ch n l trình (1) hay (2)) Ho cTOb = {s0,s1, s3} (n u sinh viên đã ch n l trình (3)).

T i th i đi mt3 sau t2:

Khi đã k t thúc nhóm h c ph ns2(ho cs3).

- Thông báo (h c ph n đã th c hi n: s0, s1, s2 – Sinh viên có th đăng ký h c: s3). Do tr c đó nhà tr ng đã có m s3 (cho l trình (3)) nên sinh viên có th đăng

ký s3. Do v ys3đ c chèn vào c s d li u th i gian và s3đ c đánh d u: TOb = {s0,s1, s2, s3} (n u sinh viên đã ch n l trình (1))

- T ng t : Thông báo (h c ph n đã th c hi n:s0, s1, s3– Sinh viên có th đăng ký h c:s2). S2đ c chèn vào c s d li u th i gian và đ c đánh d u:

TOb = {s0,s1, s3, s2} (n u sinh viên đã ch n l trình (3)). - Riêng v i sinh viên ch n l trình (2):

Thông báo (h c ph n đã th c hi n:s0, s1, s2–B n có th đăng ký h c: s4). N u lúc này nhà tr ng đã chu n b nhóm h c ph n s4 thì sinh viên có th đăng ký s4. Do

v y,s4đ c chèn vào c s d li u th i gian và đ c đánh d u: TOb = {s0,s1, s2, s4}

T i th i đi mt4 sau t3:

29

- Thông báo (h c ph n đã th c hi n:s0, s1, s2, s3– Sinh viên có th đăng ký h c: s4). Do tr c đó nhà tr ng đã có m s4 (cho l trình (2)) nên sinh viên có th đăng

ký s4. Do v ys4đ c chèn vào c s d li u th i gian và s3đ c đánh d u: TOb = {s0,s1, s2, s3, s4} (n u sinh viên đã ch n l trình (1))

- T ng t ta có thông báo t ng ng và chèn vào c s d li u cũng nh đánh d u các nhóm h c ph n nh sau: TOb = {s0,s1, s2, s4, s3} (n u sinh viên đã ch n l trình (2)) Ho c TOb = {s0,s1, s3, s2, s4} (n u sinh viên đã ch n l trình (3)) T i th i đi mt5 sau t4: Khi đã k t thúc nhóm h c ph ns2 (s3ho cs4). Vì đã đ n nhóm h c ph n cu i đ t t nghi p nên:

- V i sinh viên đăng ký theo l trình (1) thì:

Thông báo (h c ph n đã th c hi n:s0, s1, s2, s3, s4–B n có th đăng ký h c:s5). N u lúc này nhà tr ng đã có m s5thì sinh viên có th đăng ký s5. Do v ys5đ c chèn vào c s d li u th i gian vàs5đ c đánh d u:

TOb = {s0,s1, s2, s3, s4, s5} (n u sinh viên đã ch n l trình (1))

- T ng t cho sinh viên đăng ký theo l trình (2) hay (3) s có thông báo t ng ng và đ c đánh d u nh sau:

TOb = {s0,s1, s2, s4, s3, s5} (n u sinh viên đã ch n l trình (2)) Hay

TOb = {s0,s1, s3, s2, s4, s5} (n u sinh viên đã ch n l trình (3)) T i th i đi mt6 sau t5:

30

Khi đã k t thúc nhóm h c ph ns5.

- Thông báo (h c ph n đã th c hi n: s0, s1, s2, s3, s4, s5 – B n đã hoàn thành

Một phần của tài liệu Ràng buộc toàn vẹn đa phiên bản cơ sở dữ liệu thời gian và ứng dụng (Trang 26)

Tải bản đầy đủ (PDF)

(40 trang)