TU 2.4. CHUẨN HOÁ THỜI GIAN: UT

Một phần của tài liệu Cơ sở dữ liệu thời gian (Trang 70 - 79)

cho các CSDL thời gian. Do vậy các TFDs không chỉ nắm bắt đƣợc một kiểu ràng buộc nhất định trong CSDL thời gian, mà còn có thể đƣợc sử dụng để loại bỏ sự dƣ thừa dữ liệu và những dị thƣờng khác trong các quan hệ thời gian. Chúng ta sẽ bắt đầu bằng cách xem xét lại module thời gian (KHOA_HOC, ngay, ) đã nêu trong Ví dụ 1.

Ví dụ 4: Nhƣ đã thảo luận trong Phần mở đầu, lƣợc đồ module thời gian (KHOA_HOC, ngay) đã nêu trong Ví dụ 1 cần phải tách thành bốn lƣợc đồ module thời gian:

(CHUNGCHI, µBTopB); (PHANCONGGIANGDAY, tuan); (LUONGGIANGVIEN, thang); (LOPHOC, ngay).

Trong đó:

CHUNGCHI = {#KHOA_HOC, #CHUNG_CHI},

PHANCONGGIANGDAY= {#KHOA_HOC, GIANG_VIEN}, LUONGGIANGVIEN = {GIANG_VIEN, LUONG_GV}, LOPHOC={#KHOA_HOC, #SO_HOC_VIEN}.

Hàm cửa sổ thời gian  đã đƣợc cho trƣớc cũng sẽ đƣợc tách thành bốn hàm cửa sổ B1B, B2B, B3B và B4B đƣợc định nghĩa nhƣ sau:

B1B (ever) = {CS50, 3}

B2B (tuần từ 28/2/93)={CS50, Tam} B3B (3/93) = {Tam, 1k} B4B (3/3/93) = {CS50, 50}

B2B (tuần từ 7/3/93) ={CS50, Tam} B4B (8/3/93) = {CS50, 45}

B2B (tuần từ 4/4/93) ={CS50, Tam} B3B (4/93) = {Tam, 1.5k} B4B (5/4/93) = {CS50, 50}

B2B (tuần từ 2/10/93)={CS50, An} B3B (10/94) = {Tam, 1k} B4B (3/10/94) = {CS50, 50}

B4B (17/10/94)={CS50, 50}

Để có đƣợc những phép tách có ý nghĩa đối với các module thời gian, chúng ta cần định rõ bằng cách nào ta có thể kết nối các module thời gian đã đƣợc tách để khôi phục lại các module thời gian gốc. Để làm điều đó, chúng ta định nghĩa phép kết nối tự nhiên và các phép chiếu thời gian.

Định nghĩa: (Phép kết nối tự nhiên thời gian) [6]

Cho MB1B = (RB1B, µ, B1B) và MB2B = (RB2B, µ, B2B) là hai module thời gian theo cùng kiểu thời gian µ. Khi đó MB1BBTB MB2B, đƣợc gọi là „kết nối tự nhiên thời gian‟ (temporal natural join) của MB1B và MB2B, là module thời gian M = (RB1B  RB2B, µ, ) trong đó 

đƣợc định nghĩa nhƣ sau: Với mỗi i ≥ 1, (i) = B1B(i) BTB B2B (i), trong đó  là toán tử kết nối tự nhiên truyền thống.

Vì vậy kết nối tự nhiên thời gian của hai module thời gian là có đƣợc bởi thực hiện các phép kết nối tự nhiên của các dạng ảnh tƣơng ứng của chúng, cụ thể là kết nối tự nhiên của hai quan hệ không có yếu tố thời gian B1B(i) và B2B(i) với mỗi số nguyên dƣơng i. Phép chiếu thời gian của các module thời gian đƣợc định nghĩa tƣơng tự. Về cơ bản, phép chiếu của một module thời gian là một tập các phép chiếu dạng ảnh.

Định nghĩa: (Phép chiếu) [6]

Cho M = (R, µ, ) và RB1B  R. Khi đó T R1

 (M), đƣợc gọi là phép chiếu của M trên

RB1B, là module thời gian (RB1B, µ, B1B), trong đó B1B đƣợc định nghĩa nhƣ sau: Với mỗi

i ≥ 1, B1B(i) = R1(BiB) trong đó là toán tử chiếu truyền thống.

Chúng ta định nghĩa phép chiếu của một tập các TFDs tƣơng tự nhƣ định nghĩa chuẩn của phép chiếu một tập các phụ thuộc hàm.

Định nghĩa: Cho trƣớc một tập các TFDs F, phép chiếu của F trên trên một tập các thuộc tính Z, ký hiệu bởi BZB (F), là một tập các TFDs X →BυBY đƣợc suy dẫn logíc từ F sao cho XYZ. [6]

Chú ý rằng phép chiếu chỉ thực hiện với các thuộc tính, chứ không phải các kiểu thời gian cơ sở.

Nhƣ ta đã biết với F, BZB (F) cũng có thể là vô hạn. Tuy nhiên, vì ta biết cách tính bao đóng hữu hạn của các thuộc tính nhƣ thế nào, nên chúng ta có thể tìm ra một “phủ hữu hạn” (finite cover) của phép chiếu F trên Z nhƣ sau: Gọi

BZB (F) = { X →BυBAB1B,...,ABmB | XAB1B,...,ABm B Zvà (ABiB, υ)  XP

+

PBB với 1 ≤ im}

Rõ ràng là BZB (F) là một tập hữu hạn. Theo tính chất đầy đủ của Ba tiên đề suy

diễn hữu hạn và định nghĩa về FP

+

P ta có thể dễ dàng nhận thấy rằng BZB (F) là một phủ hữu hạn của BZB (F).

Mệnh đề 3:Điều sau đây là đúng[6]:

BZB (F) = {X →Bυ‟B AB1B,...,ABmB | XυBiB ABi B BZB (F) với 1 ≤ imυ‟ ≼BCB {υB1B..,υBmB}}

Trƣớc khi định nghĩa về phép tách không mất thông tin, ta phải xem xét ba toán tử phụ trên module thời gian nhƣ sau: Down, Up, ⋃BT

Định nghĩa: Cho M = (R, μ, ) và các kiểu thời gian υB1 và B υB2B cho Down (M, υB1B) và

Up(M, υB2B) tƣơng ứng là module thời gian của (R,υB1B,B1B) và (R,υB2B,B2B). Trong đó B1B, B2B đƣợc định nghĩa nhƣ sau: Với i ≥ 1, cho: o       ) ( 1 i   nếu υB1B(i) = ,

 nếu không có j nào sao cho υB1B(i) ⊆μ(j)

(j) với υB1B(i) ⊆μ(j) trong các trƣờng hợp khác

o B2B(i) = ⋃ (j)

j:μ(j) ⊆υB2B(i)

Chú ý rằng nếu không có j nào sao cho μ(j) ⊆υB2B(i) thì B2B(i) = . [6]

Bằng trực giác, hàm Down ánh xạ một module thời gian theo một kiểu thời gian μ

tới một module thời gian theo một kiểu mịn hơn sao cho: mỗi bộ là đúng (valid) tại thời khắc i có kiểu μ thì cũng đúng (valid) tại bất kỳ thời khắc j có kiểu υB1B thỏa mãn

υB1B(j) ⊆μ(i). Ví dụ: xét một module thời gian MB1B mà nó lƣu giữ chức danh trong khoa theo kiểu thời gian là nam_hoc. Khi đó Down(MB1B, ngay) chuyển đổi MB1B thành một module thời gian theo ngay với một hàm cửa sổ mà nó cho biết theo từng ngày chức danh của một thành viên trong khoa trong một năm học tƣơng ứng. Cũng tƣơng tự nhƣ vậy, hàm Up ánh xạ một module thời gian theo một kiểu  tới một module thời gian theo kiểu thời gian thô thơn (coarser) nghĩa là mỗi bộ là đúng tại thời khắc i thuộc  thì cũng đúng tại thời khắc j thuộc υB2B mà thỏa mãn μ(i) ⊆ʋB2B(j). Ví dụ. Xét một module thời gian MB2B mà nó lƣu giữ chức danh trong khoa theo kiểu thời gian là ngay. Khi đó Up(MB2B, nam_hoc) là một module thời gian mà nó đăng ký chức danh các thành viên trong khoa theo nam_hoc, với một hàm cửa sổ cho biết tất cả chức danh trong một năm học của các thành viên trong khoa trong suốt những ngày của năm học đó. Tuy nhiên, phải chú ý rằng định nghĩa về

Down và Up không đòi hỏi kiểu đối số là một kiểu tƣơng ứng mịn hơn và thô hơn

kiểu gốc. Hơn thế nữa các toán tử Up và Down có thể cho kết quả là một module mà thông tin của nó là không nhất thiết đƣợc suy ra bởi module đã đƣợc xem là đối số. Ví dụ: nếu một thành viên của khoa có một chức danh nào đó trong một ngày, thì ngƣời đó không nhất thiết phải có cùng chức danh đó trong toàn bộ các ngày khác của năm học. Trong trƣờng hợp này Down(Up(MB2B, nam_hoc), ngay) trong

một ngày cho trƣớc thì một thành viên có thể có nhiều chức danh. Thông thƣờng thì M không nhất thiết phải bằng với Up(Down(M, υ),) hoặc Down(Up(M, υ),).

Định nghĩa: Cho trƣớc các module MB1B,....,MBnB trên cùng lƣợc đồ quan hệ R và kiểu thời gian , hợp (union) của chúng là module M = (R, , ), trong đó , với mỗi thời khắc, đơn giản là hợp của các giá trị của hàm cửa sổ với cùng một thời khắc trong các module khác. Một cách hình thức: nếu MBjB = (R, , BjB) với 1 ≤ jn, khi đó

MB1B⋃BTB...⋃BTB MBnB = (R, , ) trong đó: với mỗi i ≥ 1, (i)B B= ⋃B1 j nB BjB(i).

Bây giờ ta sẽ giới thiệu khái niệm về phép tách (decomposition) một lƣợc đồ module thời gian. [6]

Định nghĩa: Phép tách một lƣợc đồ module thời gian (R, ) là tập của các lƣợc đồ module thời gian  = {(RB1B, B1B),...,( RBkB, BkB)} mà

(a) RBi B⊆ Rvới 1 ≤ ik.

(b)R = RB1B ⋃.... ⋃ RBkB

(c)với mỗi kiểu BiB không có thời khắc  nào chồng lặp trên thời khắc BiB, nghĩa là: với mọi lj thì (l) BiB(j) =  hoặc (l) ⊆BiB(j). [6]

Điều kiện (a) và (b) là giống với nhƣ các điều kiện trong định nghĩa truyền thống về phép tách. Điều kiện (c) phát biểu một tính chất đặc biệt của các kiểu thời gian. Với mỗi kiểu thời gian trong phép tách, mỗi thời khắc của nó mà có một giao (intersection) với một thời khắc của kiểu gốc phải bao gồm toàn bộ nó. Điều kiện này là do mục tiêu của phép tách nhằm tránh đƣợc sự dƣ thừa dữ liệu. Bất kỳ kiểu nào không thoả mãn điều kiện đó thì đều không hữu ích cho mục tiêu đặt ra. Nếu một thời khắc của kiểu gốc chứa hai hoặc nhiều hơn những thời khắc của một kiểu trong phép tách [vì thế trái với điều kiện (c)], một số giá trị thuộc tính sẽ trở thành bản sao cho cả hai thời khắc trong kiểu mới. Ví dụ: Xét lƣợc đồ (KHOA_HOC,

ngay). Một phép tách bao gồm một lƣợc đồ với kiểu “giờ” sẽ hiển nhiên làm tăng sự dƣ thừa trong module kết quả của phép tách. Có thể xem là tự nhiên nhằm đơn giản hoá định nghĩa trƣớc đó khi chỉ cho phép các kiểu trong phép tách mà chúng là thô hơn (coarser) kiểu gốc. Tuy nhiên, điều này cũng có những hạn chế. Trong phần tiếp theo ta sẽ xem xét định nghĩa về phép tách không mất thông tin và một ví dụ trong đó hai kiểu liên quan thực sự là mịn hơn kiểu gốc, nhƣng phép tách vẫn thoả mãn điều kiện (c).

Mặc dù trong phép tách truyền thống, các quan hệ đƣợc tách là đơn giản có đƣợc bởi phép chiếu từ kiểu gốc, trong trƣờng hợp của chúng ta các module đƣợc tách phải cùng có các giá trị theo một kiểu mới. Giữa hai toán tử mà ta có thể dùng đƣợc cho sự chuyển đổi kiểu, toán tử thích hợp nhất là Up vì theo điều kiện (c)

trong định nghĩa về phép tách, tất cả mọi giá trị có thể tìm đƣợc bằng cách sử dụng

Down trên các kiểu đó thì cũng có thể tìm đƣợc với toán tử Up. Do đó, nếu M là

một module gốc và (RBjB, µBjB) là một lƣợc đồ trong phép tách, module tách đƣợc MBjB đƣợc cho bởi Up(TRj(M), µBjB). Phép biến đổi này bao gồm thực hiện phép chiếu M trên RBjB và “nâng” module kết quả tới kiểu µBjB.

Bây giờ ta định nghĩa khái niệm chung về phép tách không mất thông tin của một lƣợc đồ module thời gian sử dụng ba toán tử bổ trợ Down, Up và ⋃BTB.

Định nghĩa:(Phép tách không mất thông tin) [6]

Cho (R, µ) là một lƣợc đồ module thời gian và một tập F các TFDs. Một phép tách  của (R, µ) đối với F đƣợc gọi là phép tách không mất thông tin nếu tồn tại những tập con B1B,....,Bm Bcủa  sao cho với mỗi module thời gian M trên (R, µ)

thoả mãn mọi TFDs thuộc F, ta có:

M = Join (B1B) ⋃BTB....⋃BT BJoin(Bm B) Trong đó : Join (BiB) = Down(Up( TRi 1  (M), µP i PB1B), µ)  BT ...B  BTB Down(Up( RTi k  (M), µP i PBkB), µ)

với mỗi BiB = {(RP i PB1B, µP i PB1B) ,...., (RP i PBkB, µP i PBkB)}.

Lý do để sử dụng các tập con của phép tách và phép hợp của của các kết nối (join) tƣơng ứng trong định nghĩa ở trên có thể đƣợc giải thích bởi một ví dụ đơn giản. Giả sử ta có một lƣợc đồ (R, ngay): ta có thể tách nó thành hai lƣợc đồ, trong kiểu thứ nhất µB1B ta chỉ xét những ngày từ Thứ 2 đến Thứ 6, và trong kiểu thứ hai µB2B ta xét các ngày Thứ 7 và Chủ nhật. Do đó µB1B và µB2B làm thành một phân hoạch của kiểu lƣợc đồ gốc (ngay). Rõ ràng các module của ta có thể đƣợc biểu diễn trong lƣợc đồ gốc hoặc trong hai lƣợc đồ mới mà không bị mất thông tin. Điều đó có đƣợc do định nghĩa trƣớc đó khi xét hai tập con B1B = {(R, µB1B)} và B2B = {(R, µB2B)}. Cho M = (R, ngay, ) là một module. Vì B1B chỉ bao gồm một tập con các thời khắc của ngay và lƣợc đồ quan hệ vẫn là R, phép biến đổi Down(Up(RT (M), µB1B),

ngay) tƣơng ứng với Join(B1B) cho một module MB1B = (R, ngay, B1B) trong đó B1B(i) = (i) với mỗi i tƣơng ứng là một ngày làm việc (từ Thứ 2 đến Thứ 6), ngƣợc lại nó sẽ là rỗng với các ngày khác. Một cách tƣơng tự, Join(B2B) cho một module MB2B = (R, ngay, B2B) trong đó B2B(i) = (i) với mỗi i tƣơng ứng là ngày Thứ 7 hoặc Chủ nhật, ngƣợc lại nó sẽ bằng rỗng với các ngày khác. Bởi vậy M = MB1 B⋃BTB M2 và phép tách không mất thông tin.

Xét trƣờng hợp khi m = 1 trong định nghĩa trên; nghĩa là chỉ duy nhất một điều kiện cho phép tách không mất thông tin là M = Join(). Toán tử Join bằng trực giác bao gồm một “kết nối – join” giữa các module đƣợc tách theo , tức là các module có đƣợc từ Up( RT

j

 (M), µBjB) trong đó (RBjB, µBjB) là lƣợc đồ tƣơng ứng trong . Tuy nhiên phép kết nối tự nhiên thời gian ( BT B) đòi hỏi các module phải có cùng chung kiểu và kết quả của phép kết nối phải là một module với kiểu là µ, bởi vì ta phải kiểm tra đẳng thức đối với module gốc. Điều đó thúc đẩy sự cần thiết chuyển đổi mỗi module về kiểu µ trƣớc khi thực hiện phép Join. Theo định nghĩa về phép tách, rõ ràng là toán tử Down là ứng cử viên tự nhiên cho mục đích này. Nhƣ đã giải thích trƣớc đó, sự hợp thành của các toán tử Down và Up có thể cho kết quả là các giá trị không có

mặt trong module gốc. Tuy nhiên, trong một phép tách không mất thông tin những giá trị đó phải đƣợc loại bỏ bởi phép kết nối tự nhiên thời gian.

UVí dụ 5:U Bây giờ ta sẽ xem xét bằng cách nào có thể khôi phục lại đƣợc module thời gian KHOA_HOC từ bốn module trong phép tách. Đó là trƣờng hợp khi ta không cần thiết quan tâm đến các phép hợp của những kết nối. Phép tách  bao gồm bốn lƣợc đồ tƣơng ứng với CHUNGCHI, LUONGGIANGVIEN, PHANCONGGIANGDAY, và LOPHOC, lần lƣợt với các kiểu µBTopB, thang, tuan, ngay. Bốn số hạng thuộc Join() là:

Down(UP(πP

T

PB#KHOA_HOC, #CHUNG_CHI B(KHOA_HOC)B, BµBTopB), ngay),

Down(UP(πP

T

PBGIANG_VIEN, LUONG_GV B(KHOA_HOC), thang), ngay),

Down(UP(πP

T

PB#KHOA_HOC, GIANG_VIEN B(KHOA_HOC), tuan), ngay) và

Down(UP(πP

T

PB#KHOA_HOC, #SO_HOC_VIEN B(KHOA_HOC), ngay), ngay)

Dễ dàng nhận thấy rằng đối số thứ nhất của toán tử Down trong mỗi số hạng theo

thứ tự bằng với các module CHUNGCHI, LUONGGIANGVIEN, PHANCONG _GIANGDAY, và LOPHOC. Hạng thức cuối chính xác là module LOPHOC, vì toán tử Down và Up không ảnh hƣởng gì trên KHOA_HOC theo ngay. Do đó ta thực hiện phép kết nối thời gian của Down(CHUNGCHI,ngay),

Down(LUONGGIANGVIEN, ngay), Down(PHANCONGGIANGDAY, ngay)

và LOP_HOC để khôi phục lại KHOA_HOC.

Phần tiếp theo sẽ giới thiệu một khái niệm tƣơng đƣơng về phép tách không mất thông tin. Giả sử  là một phép tách không mất thông tin của (R, ) và M=(R,

, ) là một module thời gian trên (R, ). Khi đó với mỗi thời khắc i của , quan hệ (i) luôn có thể đƣợc khôi phục lại từ các phép chiếu của M qua phép tách. Điều đó dẫn tới khái niệm về phép tách không mất thông tin từng thời khắc một. Để cho đơn giản, ta đƣa vào một ký hiệu MaxSub; ta sẽ sử dụng nó nhƣ là một hàm mà với mỗi thời khắc i của , và một tập  các lƣợc đồ, MaxSub( (i),) là tập con lớn nhất của sao cho với mỗi kiểu thời gian đƣợc kết hợp với những lƣợc đồ đó thì tồn tại một thời khắc phủ thời khắc i của . Nghĩa là:

MaxSub((i), ) = {(R, ) ∈ | (i)  (j) với một j nào đó}

Điều đó cho phép ta chỉ xem xét tới phần của phép tách góp phần vào việc khôi phục lại module gốc tại thời khắc i của .

Định nghĩa (Phép tách không mất thông tin từng thời khắc một). [6]

Cho  là một phép tách lƣợc đồ (R, ) và F là tập các TFDs. Phép tách  đƣợc gọi là một phép tách không mất thông tin từng thời khắc một của (R, ) đối với F nếu với mỗi thời khắc không rỗng k của thì điều sau đây là đúng:

Nếu MaxSub( (k), ) = {(RB1B, B1B),....,(RBmB, BmB)} và với mỗi 1  i m, (RBiB, BiB, BiB) = Down(UP(πP

T

PBRiB(M), Bi B,) và kBiB là một số nguyên mà  (k)  BiB(kBiB), khi đó (k) = B1B(kB1B) BTB ...  BTBBm B(kBmB).

Về trực quan định nghĩa trên chỉ ra rằng với mỗi thời khắc của  ta có thể khôi phục lại module gốc từ phép tách của nó.

Mệnh đề 4: Cho (R, ) là một lƣợc đồ module thời gian, F là tập các TFDs, và  là một phép tách của (R, ). Khi đó  là một phép tách không mất thông tin của (R, ) đối với F nếu và chỉ nếu nó là một phép tách không mất thông tin từng thời khắc một của (R, ) đối với F. [6]

Định lý tiếp theo sẽ đƣa ra một điều kiện đủ về phép tách không mất thông tin. Nói riêng, điều kiện này đảm bảo rằng phép tách trong Ví dụ 4 là không mất thông tin.

Định lý 4: Cho F là tập các TFDs. Phép tách (RB1B, ) và (RB2B, ) của (RB1B ⋃ RB2B, ) trong đó  ≼ , là không mất thông tin đối với F nếu với mọi iB1B, iB2B, (iB1B, iB2B) (j) với một j nào đó sẽ kéo theo RB1B⋂RB2B → RB2B là thuộc πB(i1, i2) B(F). [6]

2.5. DẠNG CHUẨN BOYCE-CODD CÓ YẾU TỐ THỜI GIAN.

Một phần của tài liệu Cơ sở dữ liệu thời gian (Trang 70 - 79)

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

(120 trang)