Thuật toán phân mảnhthành các BCNF, có bảo toàn phụ thuộc

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu các đặc tính của phân mảnh dọc trong cơ sở dữ liệu phân tán và ứng dụng (Trang 39 - 43)

Thuật toán 2.8 trên đây đã phân mảnh sơ đồ quan hệ thành các sơ đồ có dạng BCNF và nối không mất thông tin. Tuy nhiên thuật toán không đảm bảo phân mảnh có bảo toàn phụ thuộc. Tất nhiên với W bất kỳ chúng ta luôn có thể tìm được một phân mảnh thành các BCNF bảo toàn phụ thuộc.

Thuật toán 2.9 (Phân mảnh W thành các BCNF có bảo toàn phụ thuộc): Input: W =<R, F>

Output: Một phân mảnh thành BCNF bảo toàn phụ thuộc.

Quy trình:

Nếu có những thuộc tính của R không nằm trong một phụ thuộc nào của F thì mọi thuộc tính như thế đều có thể tạo ra một sơ đồ con BCNF với tập phụ thuộc rỗng. Nếu một trong những phụ thuộc trong F có chứa tất cả các thuộc tính của R thì kết quả có một mảnh chính là R. Còn lại, phân mảnh kết quả 

sẽ chứa các lược đồ XA cho mỗi phụ thuộc XA trong F. Ví dụ 2.9(Phân mảnh W thành các BCNF, bảo toàn phụ thuộc):

Xét lại sơ đồ quan hệ W = <R, F>; với R ={C, T, H, P, S, G} và các phụ thuộc của F: CT, CSG, HPC, HSP, HTP

Thuật toán 2.8sinh ra tập sơ đồ quan hệ : W1 = <CT, CT> W2 = <CHP, HPC> W3 = <THP, HTP> W4 = <CSG, CSG> W5 =<HPS, HSP> Định lý 2.3[8]:

Thuật toán 2.8tạo ra một phân mảnh bảo toàn phụ thuộc thành các dạng chuẩn BCNF

Kết luận:

Mọi sơ đồ quan hệ đều có thể phân mảnh thành các BCNF (và tất nhiên đạt 3NF) có bảo toàn phụ thuộc.

2.4.4. Thuật toán phân mảnh dọc thành các BCNF, có nối không mất thông tin và bảo toàn phụ thuộc

Sau đây chúng ta sẽ xét phân mảnh với 3 điều kiện; thành BCNF, bảo toàn phụ thuộc, có nối không mất thông tin.

Như đã phân tích và kết luận trước đây, chúng ta có thể phân mảnh R của sơ đồ quan hệ W =<R, F> bất kỳ thành =(R1, ... , Rk) sao cho  có nối không mất và mỗi <R1, F1> có dạng BCNF.

Chúng ta cũng có thể phân mảnh R thành  =(S1,...,Sm) sao cho  bảo toàn tập phụ thuộc F và mỗi <S1, F1> có dạng BCNF. Vấn đề bây giờ là liệu chúng ta có thể phân mảnh W thành các BCNF mà vẫn có cả hai đặc tính bảo toàn phụ thuộc và nối không mất thông tin? Chúng ta chỉ cần nối vào  một

lược đồ quan hệ k, với k là khóa của W =<R, F> như thuật toán sau:

Thuật toán 2.10 (Phân mảnh W thành các BCNF, bảo toàn phụ thuộc, nối không mất thông tin):

Input: W =<R, F>; k là khóa của W

Output: W1, W2,..., Ws BCNF, nối không mất thông tin, bảo toàn phụ thuộc.

Quy trình:

Nếu có các thuộc tính không thuộc tập F thì nhóm các thuộc tính thành một sơ đồ con với tập phụ thuộc rỗng

Wi = <XA, XA> với mọi phụ thuộc thứ i của F

Wk =<k, k(F)>, k là khóa của W, k(F) là chiếu của F lên k

Định lý 2.4[8]:

Thuật toán 2.10phân mảnh một sơ đồ quan hệ thành các BCNF bảo toàn phụ thuộc, nối không mất thông tin.

Ví dụ 2.10:

Phân mảnh W thành BCNF bảo toàn phụ thuộc, có nối không mất thông tin Xét lại sơ đồ quan hệ W =<R, F>; với R ={C, T, H, P, S, G} và các phụ thuộc của F = {CT, HPC , HTP, CSG, , HSF}

Khóa của F là K = {H, S} và chiếu của S lên K là rỗng và phân mảnh theo thuật toán 2.10 ta được:

W1 = <CT, CT> W2 = <HPC, HPC> W3 = <HPT, HTP> W4 = <CSG, CSG> W5 =<HSP, HSP> W6 =<HS, >= Wk

Hiển nhiên phép phân mảnh có bảo toàn phụ thuộc và thành các BCNF Kiểm tra lại tính nối không mất thông tin bằng thuật toán Chase:

Bảng khởi đầu: C G H P S T R1 a a R2 a a a R3 a a a R4 a a a R5 a a a R6 a a

Sau khi sửa cho bảng khởi đầu trên đây thỏa một số phụ thuộc trong F được một bảng chứa toàn a ở hàng thứ 6, hàng chứa các thuộc tính khóa. Bảng có hàng R6 = k = {H, S} toàn a. Vậy phân mảnh có nối không mất thông tin.

C G H P S T R1 a a R2 a a a a R3 a a a a R4 a a a a R5 a a a a a R6 a a a a a a Ví dụ 2.11:

Xét lại sơ đồ quan hệ W =<R, F>; với R ={A, B, C, D, E, G, H, I} và các phụ thuộc của F = {ABDC, DABG , EGH, HIE, IABD}

Ta thấy K = {A, H} là khóa của W và chiếu của tập F lên K là rỗng Bây giờ phân mảnh theo thuật toán trên

W1 = <ABCD, ABCD> W2 = <DABG, DABG> W3 = <EGH, EGH> W4 = <HIE, HIE> W5 =<IABD, IABD> W6 =<AH, = Wk

Ta dễ dàng thấy rằng các Wi là những sơ đồ quan hệ BCNF. Phép phân mảnh bảo toàn phụ thuộc.

Cần lưu ý rằng ở đây một số sơ đồ quan hệ có bên phải phụ thuộc hàm là hai thuộc tính. Mỗi sơ đồ như vậy có thể tách thành hai sơ đồ. Mặt khác, chúng ta dễ dàng kiểm tra có nối không mất thông tin [8].

Chương 3. ỨNG DỤNG THIẾT KẾ CSDLVỀ THÔNG TIN CÁC CUNG ĐƯỜNG BỘ TRÊN ĐỊA BÀN LẠNG SƠN

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu các đặc tính của phân mảnh dọc trong cơ sở dữ liệu phân tán và ứng dụng (Trang 39 - 43)