Một số bài toán

Một phần của tài liệu Phép chuyển dịch lược đồ quan hệ (Trang 38)

C á c l ớ p p và NP

Ký hiệu p là lớp các bài toán có thể giải bằng một thuật toán đơn định với thời gian đa thức, NP là lớp các bài toán có thể giải bằng một thuật toán không đơn định với thời gian đa thức. Bài toán mở hiện nay là p = NFÌ Bài toán T được gọi là

NP-khó (NPH) nếu T 6 p => P=NP. Bài toán T được gọi là NP-đầy đủ (NPC) nếu

TNP-khỏT e NP. Cho đến nay chưa tìm được thuật toán đơn định với thời gian đa thức cho bất kỳ bài toán NP-khó hoặc NP-đầy đủ nào. Hơn nữa, nếu có một thuật toán như vậy thì đó chính là một chứng minh cho đẳng thức P=NP.

Đ ị n h lý

[10,11,18, 20

Các bài toán sau đây thuộc lớp NP-đầy đủ:

PL Bài toán phỉ BCNF. Cho lược đồ quan hệ ứ =ỰJ,F). Có tồn tại hay không một họ lược đồ quan hệ không ở dạng chuẩn BCNF không mất thông tin và bảo tòan tập phụ thuộc hàm F?

P2. Bài toán thỏa BCNF. Cho lược đồ quan hệ a = (Ư,F) và một họ lược đồ quan hệ s không mất thông tin đối với a. Họ s có ở dạng BCNF hay không? P2 là bài toán NP-đầy đủ ngay cà trong trường hợp họ s đã ở dạng 3NF hoặc s là kết quả của thuật toán chuẩn hóa 3NF.

P3. Bài toán khóa bổ sung. Biết trước một số khóa {Kị,K2,...,Kp}, p > 0 của lược đồ quan hệ a = {U,F). Cho biết ũ còn khỏa nào nữa không?

P4. Bài toán liệt kê khóa. Liệt kê toàn bộ các khóa của lược đồ quan hệ a = ụj,F)?

P5. Bài toán khóa lực lượng m. Cho lược đồ quan hệ a - {U,F) và một sổ nguyên m > Ị. Cho biết trong a cỏ tồn tại một khóa với lực lượng nhỏ hơn m không?

Phép dịch chuyển lược đồ quan hệ 38

P6. Bài toán thuộc tinh khóa. Cho lược đồ quan hệ a = (Ư,F) và một thuộc tính A € u. Cho biết A có mặt trong một khóa nào không?

Các bài toán sau đây thuộc lớp NP-khó:

P7. Bài toán BCNF. Cho lược đồ quan hệ a = (U,F). Có thế chuẩn hóa a về dạng BCNF không mắt thông tin và bảo tòan tập phụ thuộc hàm F hay không? Các bài toán sau đày thuộc lớp P:

P8. Bài toán xấc định bao đóng của tập thuộc tinh. Cho lược đồ quan hệ a=(U,F) và tập con thuộc tính Xq ư. Tim bao đóng X* của tập thuộc tính X, X*={A e U\X-> A e F*} (0(|Ơ1.|F|))? trong đó ký hiệu |M| cho biết lực lượng của tập M.

P9. Bài toán xác mội khỏa của lược đồ quan h ệ. Cho lược đồ quan hệ

a = (Ư,F). Tim một khóa của a? (0(1 ơ|2 .|^1))-

PIO. Bài toàn xác khóa thứ hai của lược đồ quan hệ . Cho lược đồ quan hệ a=(U,F) và một khóa K của a. Tim thêm một khóa thứ hai (nếu cô) của a? (0(1 ơ]2 .\F])ị

P ỈL Bài toán thành viên. Cho lược đồ quan hệ a=(Ư,F) và một phụ thuộc hàm f\X —» Y. Hãy cho biết f e F*? (0(1 ơj .ị/7])).

C h ú ỷ

Bài toán P7 và bài toán p 1 là khác nhau bởi vì ta có thể tách một lược đồ quan hệ thành hai lược đồ con, trong đó có một lược đồ ở dạng BCNF.

Phép dịch chuyển lược đồ quan hệ 39

C h ư ơ n g 2 - P H É P DỊCH CHUYỂN LƯ Ợ C ĐỒ QUAN HỆ

Quản lý các cơ sở dữ liệu lớn và phức tạp đòi hỏi nhiều thuật toán hữu hiệu để tính toán các đối tượng như bao đóng, khóa, phủ... Một số thuật toán tổt theo nghĩa độ phức tạp tính toán giới hạn ờ các hàm tuyển tính hoặc đa thức theo chiều dài dữ liệu vào đã được công bố như thuật toán tính bao đóng của tập thuộc tính, thuật toán tìm một khóa, thuật toán xác định thành viên hay thuật toán xác định phụ thuộc hàm suy dẫn, thuật toán tìm giao các khóa, thuật toán xác định một lược đồ quan hệ có một khóa duy nhất... [10, 11, 12, 16,17,20]

Một nhận xét tự nhiên là nếu kích thước của lược đồ quan hệ càng nhỏ thì các thuật toán càng phát huy hiệu quả hơn. Một số hướng nghiên cứu tinh giản các lược đồ cơ sở dữ liệu được thực hiện thông qua các phép biến đổi tương đương, chẳng hạn đưa tập phụ thuộc hàm về dạng thu gọn hoặc thu gọn tự nhiên, dạng không dư, dạng tối ưu (chứa ít ký hiệu nhất)... đã được công bổ [10, 11, 1, 20,15]

Chương này trình bày một kỹ thuật thu gọn khác được gọi là phép dịch chuyển lược đò quan hệ [16, 17]. Bản chất của kỹ thuật này là loại bỏ khỏi lược đồ quan hệ ban đầu một số thuộc tính không quan trọng theo nghĩa chúng không làm ảnh hường đến kết quả tính toán các đối tượng đang quan tâm như bao đóng, khóa, phản khóa...Mặc dù lược đồ quan hệ thu được qua phép dịch chuyển không tương đương với lược đồ quan hệ ban đầu, nhưng ta có thể thu được các đổi tượng cần tìm bằng những phép toán đơn giản như loại bỏ hoặc thêm một số thuộc tính. Điều lý thú là sau khi loại bỏ một số thuộc tính thì một số phụ thuộc hàm sẽ được loại bỏ theo, vì chúng trở thành các phụ thuộc hàm tầm thường (có vế trái chứa về phải) hoặc mang thông tin tiền định (thí dụ, các phụ thuộc hàm dạng 0 -» X). Trước khi lý giải cơ sở lý thuyết và các kỹ thuật dịch chuyển các lược đồ quan hệ chúng ta xét một thí dụ minh họa.

Phép dịch chuyển lược áồ quan hệ_____40

T h í dụ

Cho lược đồ quan hệ a = (U,F) với tập thuộc tính u - ABCDEH và tập phụ thuộc hàm F = {AE —> D, BC -> E, E -> BC). Để tìm tập khóa Key(a) của lược đồ (adsbygoogle = window.adsbygoogle || []).push({});

a chúng ta xây dựng một lược đồ b bàng cách xỏa khỏi lược dồ a các thuộc tính A, DH. Ta thu được lược đồ b = (KG) trong đó v= IAADH = BCE, G = { E - > 0 , BCE, E -> 5C }. Tiếp đến ta loại phụ thuộc hàm tầm thường E -> 0 khỏi ơ. Ta thu được G = (5 C - > £ , £ - > ỔC}. Ta dễ dàng tìm được hai khóa của lược đồ ố,

Key(b) = {5C, £■}. Để thu được Ả^ẹy(ữ) ta chỉ việc thêm tập thuộc tính /í// (không thêm £>) vào mỗi khóa của lược đồ b. Vậy ẨTẹy(a) = {AHBC, AHE). Dù Fdâ là tập phụ thuộc hàm tối ưu [20, 15] nhưng G còn chứa ít ký hiệu hơn F.

2.1 Phép dịch chuyển lược đồ quan hệ Định n g h ĩ a

Cho hai lược đồ quan hệ a - (U,F), b - (KG) và tập thuộc tính M Ç2 Ư.

Ta nói lược đồ quan hệ b nhận được từ lược đồ quan hệ a qua phép dịch chuyển theo tập thuộc tính M, nếu sau khi loại bỏ mọi xuất hiện của các thuộc tính của M trong lược đồ a thì thu được lược đồ b.

Nếu sau khi thực hiện phép dịch chuyển theo M cho lược đồ quan hệ a ta thu được lược đồ quan hệ b thì ta viết

b = a\M

Thao tác loại bỏ M được thực hiện trên lược đồ a = {Ụ,F) để thu được lược đồ b = (V,G) như sau:

1. Tính V = Ư\M có độ phức tạp 0{n) với n là số lượng thuộc tính trong u.

2. Với mỗi phụ thuộc hàm X —> Y trong F ta tạo một phụ thuộc hàm

Ằ\MY\M cho G. Thù tục này được ký hiệu là G = A M Tính F\M đòi hòi độ phức tạp O(mn) với m là số lượng phụ thuộc hàm trong F.

Phép dịch chuyển lược dồ quan hệ 41

Như vậy b = a\M= (U\M,F\M) được thực hiện với độ phức tạp 0{mn), tức là tuyến tính theo chiều dài dữ liệu vào (lược đồ quan hệ a).

Sau khi thực hiện thủ tục G = F\M nếu

G chứa các phụ thuộc hàm tầm thường (dạng XY, X2 Y) thì ta loại các phụ thuộc hàm này khỏi G,

G chứa các phụ thuộc hàm trùng lặp thì ta lược bớt các phụ thuộc hàm này.

T h í du

Cho lược đồ quan hệ a = (Ư,F), u = ABCDEH, F = {AED, A -> DH, BC -> E, E -+ BC}. Với M = ADH, hãy xác định b = (V,G) = CÁM.

Ta có v= lẦADH = ABCDEH\ADH=BCE,

G = { £ -> 0 (loại), 0 -► 0 (loại), B C - * E , E ^ > BC} s {BCE, E -> BC}. Ta cũng dễ nhận thấy phép dịch chuyển thỏa tính hợp thành, cụ thể là nếu a là lược đồ quan hệ trên tập thuộc tính ưvầX, F là hai tập con của u thỏa Y ÇZ u\x thì

a\(XY) = (a\X)\Y

Trong trường hợp XY là hai tập con rời nhau của u ta có

a\XY= [a\X)\Y= (a\Y)\X

Thuật toán Translation dưới đây mô tả phép dịch chuyển một lược đồ quan hệ với độ phức tạp O(mn).

Algorithm T ra n sla tio n

F o rm a t: T r a n s la tio n( a , M) Input: - l ư ợ c d ồ q u a n h ê a = ( Ơ / F ) - T ậ p t h u ộ c t í n h M çz u O u t p u t : - l ư ợ c d ồ q u a n h ệ b = ( V , G ) = a \ M , V — ü \ M , G — F \ M . M e t h o d

Phép dịch chuyển lược đồ quan hệ 42 V : = U \ M ; G : = 0 ; f o r e a c h F D L - > R i n F d o G : = G u {L \ M - > R \ M } ; e n d f o r ; G : = N a t v L r a l _ R e d u c e d ( G ) ; r e t u r n (V,G) ; e n d T r a n s l a t i o n .

Thủ tục Natural_Reduced(G) đưa tập phụ thuộc hàm G về dạng thu gọn tự nhiên bàng cách loại khỏi G những phụ thuộc hàm tầm thường (có vế trái chứa vế phải), chuyển đổi mỗi phụ thuộc hàm về dạng phụ thuộc hàm có hai vế trái và phải rời nhau và gộp các phụ thuộc hàm có cùng vế trái.

Định lý sau đây thiết lập công thức biểu diễn bao đóng cùa tập thuộc tính theo phép dịch chuyển lược đồ quan hệ.

Đ ịnh lý (adsbygoogle = window.adsbygoogle || []).push({});

(Công thức biểu diễn bao đỏng theo phép dịch chuyển lược đồ quan hệ [16,17]) Cho lược đồ quan hệ a = (U,F) và hai tập con không giao nhau X và Y trong Ư. Khi đó

ụ cY Ỷ F = x fp x

Đặt V - Ư\XG = F\x và để ý rằng d o X n Y = 0Xkhông xuất hiện trong V và G nên theo định nghĩa bao đóng của tập thuộc tính ta có

rfG = 0.

Ta chứng minh bằng quy nạp theo số bước xây dựng các dãy (.XYfh)

}*h\ h = 0,1,... theo thuật toán tính bao đóng của các tập thuộc tính XYY

tương ứng với các tập phụ thuộc hàm F và G. Cụ thể là ta chứng minh bất biến

{XY)(h) = XÝh) =

Cơ sở: h = 0. Ta có cXY)(0) = XY^ = Y, do đó (.XY)(0) = XŸ0) = XY.

Phép dịch chuyển lược dồ quan hệ 43

Quy nạp: Giả sử với h > 0 ta có (XY)(h) = Xì*h\ Ta cần chứng minh

(XYfh^ ) = XY(M\

Ta sẽ chi ra ràng khi chuyển từ bước h sang bước h+\ hai tập (XYfh)\ầ XÝh)

sẽ được bổ sung thêm cùng một số thuộc tính. Trước hết để ý ràng do X r\ Y = 0 và

X không có mặt trong lược đồ quan h è b = a \ X = {V ,G ) nên với mọi h = 0,1,2,... ta luôn có X n Ÿ~h) = 0 . Ngoài ra, do dãy {XYfh) đơn điệu không giảm và

{XYf0) = XY2 X nên với mọi h = 0,1,2,... ta luôn có (XY){li)2 X. Từ các nhận xét này và từ giả thiết quy nạp {XY)(h) = XỶh) ta suy ra

V L c ơ : L c (XY)W = XŸh) yW và V Z ç ƠUT:Ze f h) = >x zÇXì*h) = (XY)(h)

Giả sử phụ thuộc hàm L - > R G F thỏa tính chất L ÇZ (XY)(h\ Khi đó L\x -> RSX 6 G và M ç f . Từ (AT)(/i) = ta suy ra Æ(A7)(/!) = RXÝ^ = (R\X) x t h).

Ngược lại, giả sử z —» /> e G v à Z ç y(/l) thì theo định nghĩa của phép dịch chuyển theo X, trong F tồn tại một phụ thuộc hàm LR để z = L\xp = ÆVAT. Khi đó ta có L ç AZ&KT** =(jnO(/,) và do đó /?(A7)W = = PJryW

Để ý ràng với mọi tập X, ta có X 0 và ^ n 0 = 0 . Từ nhận xét này ta suy ra hệ quả sau,

H ệ qủ a

(Công thức tính bao đóng cho một tập thuộc tính)

Cho lược đồ quan hệ a = (Ư,F) và tập X Ç ư. Khi đó X+F = X(0)+F\X.

T h i dụ

Cho lược đồ quan hệ a = (U,F),Ư = ABCDEH.F = {AE - * D ,B C ^ > E, E ^ BC}. Tính

1 .{AHEŸ và 2. E ' ?

Ta có, theo hệ quả về công thức tính bao đóng cho một tập thuộc tính Luận văn Thạc sỹ ngành Công nghệ thông tin - Phạm Thị Minh Châu

Phép d|ch chuyền lược đồ quan hệ_____44

1. (AHE)\- = AHE(0Ÿmhe

G = = { 0 -> A 5C -> 0 (ỉoại), 0 - > BC} = { 0 -> ỔCD}. Từ đây ta tính được ( 0 ) +G =£CD. Do đó (AHE)1 = AHEBCD = ơ. 2. r = £ ( 0 ) W , (adsbygoogle = window.adsbygoogle || []).push({});

G = M -> A BC -> 0 (loại), 0 - + BC} = {A -+D, 0 - + B C } .

Từ đây ta tính được ( 0 ) +G -BC. Do đó /T = EBC.

Cho lược đồ quan hệ a - (Ư,F), ta nhắc lại các ký hiệu sau

ƯQ là tập các thuộc tính không khóa, hay phi nguyên thủy, tức là thuộc tính không xuất hiện trong bất kỳ khóa nào của a,

UK là tập các thuộc tính khóa, hay nguyên thủy tức là thuộc tính có trong một khóa nào đó của a (hợp của các khóa),

• ƯỊ là tập các thuộc tính có trong mọi khóa, tức là giao của các khóa

của a.

Rõ ràng, ơ/ ÇZ ƯK.

Ta cũng đã biết phân hoạch u = U0Ufc

V K ç K e y ( a ) , V X ç Ua = ï K ç ƯKA ( K n X = ( K n ưo = 0 ) Ngoài ra,

v x , Y ç U : X n Y = 0 e > X \ Y = X

Để ý ràng nếu M là siêu khóa của lược đồ quan hệ a = (Ơ,F) thì V z ÇZ U0 ta có M Z cũng là siêu khóa của a. Nói cách khác từ một siêu khóa bất kỳ bỏ đi một số thuộc tính không khóa ta vẫn thu được siêu khóa.

BỔ đ ề

(Bổ đề về siêu khóa trong phcp địch chuyển lược đồ quan hệ )

Cho hai lược đồ quan hệ a = ụj,F), b = (V,G) v à X ç ư. Biết b = a\x. Khi đó

Phép dịch chuyển luợc dồ quan hệ_____45

(/) Nếu M là siêu khỏa của a thì M\X là siêu khóa của b.

(if) Nếu z là siêu khóa của b thì x z là siêu khỏa của a. Nói riêng, nếu X çz ư0 và z là siêu khỏa của b thì z là siêu khỏa của a.

C hứ n g minh

(i) Giả sử M là siêu khóa của a. Đặt p = MÀ', ta có X n p = 0 và M ç XP.

M là siêu khóa của a, vận dụng tính đồng biến của bao đóng và công thức biểu diễn bao đóng ta có, U = X V = M ' f ç (XPÿ F = XPy\x. Từ các đẳng thức XV = XP*p\x, X n v = 0 v à l n P pa = 0 ta suy ra P^Ị^X = V. Vậy p - AAATlà siêu khóa cùa b.

(ii) Đảo lại, giả sử z là siêu khóa của b = a\x. Khi đó z n X = 0 và z *G= V-

Đặt Mx z, ta có M* f = (XZ) V = X ? M = XZT(; = XV = u. Vậy x z là siêu khóa của a. Nếu X ÇZ U0 thì ta có thể loại bỏ khỏi x z bộ phận thuộc tính không khóa X để thu được z là siêu khóa của a .

Hệ qủ a

(Hệ quả về siêu khóa trong phép dịch chuyển lược đồ quan hệ )

Cho lược đồ quan hệ a = {Ư,F)tập thuộc tính Xçz ư. Khi đó nếu z là siêu khóa của lược đồ aXX+ thì x z là siêu khóa của lược đồ a.

C hứ n g minh

Đặt b = a \ x * . Theo bổ đề về siêu khóa trong phép dịch chuyển lược đồ quan hệ, nếu z là siêu khóa của b thì x^z là siêu khóa của a, ta có {X*Z)+ = Ư. Theo tính chất C5 của bao đóng của tập thuộc tính, (X'Z)* = {XZ)' = u. Từ đây suy ra x z là siêu khóa của a .

Chú ỷ

Đe ý rằng hệ quả trên không hoàn toàn tương tự như bổ đề về siêu khóa trong phép dịch chuyển lược đo quan hệ. Điểm khác nhau chính là lượng dịch chuyển trong bổ đề về siêu khóa là X, trong hộ quả này là bao đóng của vế trái cực tiểu (adsbygoogle = window.adsbygoogle || []).push({});

X ' - d X .

Phép dịch chuyển lược dồ quan hệ 46

B ổ đ ề

(Bổ đồ về khóa trong phép dịch chuyển lược đồ quan hệ )

Cho hai lược đồ quan hệ a - (U,F), b = (KG) và tập thuộc tính XÇ U0. Biết b = a\x. Khi đó Keyịà) = Keyịb)

C h ứ n g m in h

Giả sử KKeyịá). Khi đó nói riêng K là siêu khóa của a. Do K Ç2 ƯỊC, X ÇZ ư0, UK ưa = 0 nên theo bổ đề về siêu khóa trong phép dịch chuyển lược đồ quan hệ,

K = K\x là siêu khóa của b. Giả sử K chứa một siêu khóa M cùa b. Khi đó lại theo bổ đề về siêu khóa trong phép dịch chuyển lược đồ quan hệ ta có M là siêu khóa của

a. Do K là khóa của a, M là siêu khóa của a chứa trong K, nên theo tính chất tối thiểu của khóa ta phải có M - K. Vậy K là khóa của b.

Đảo lại, Nếu K là khóa của b thì £ n X - 0 và theo bổ đề về siêu khóa trong phép dịch chuyển lược đồ quan hệ ta có K là siêu khóa của a. Gỉa sử K chứa một

Một phần của tài liệu Phép chuyển dịch lược đồ quan hệ (Trang 38)