You are on page 1of 19

Đặt vấn đề

Khóa và một số tính chất


Các thuật toán tìm khóa của lược đồ quan hệ

Khóa và Thuật toán tìm khóa của lược đồ quan hệ

VŨ TIẾN DŨNG
Khoa Toán Cơ Tin học - Trường Đại học Khoa học Tự nhiên
e-mail: duzngvt@gmail.com

VŨ TIẾN DŨNG Khoa Toán Cơ Tin học - Trường Đại học Khoa học Tự nhiên e-mail:
Khóa và duzngvt@gmail.com
Thuật toán tìm khóa của lược đồ quan hệ
Đặt vấn đề
Khóa và một số tính chất
Các thuật toán tìm khóa của lược đồ quan hệ

Outline

1 Đặt vấn đề

2 Khóa và một số tính chất

3 Các thuật toán tìm khóa của lược đồ quan hệ

VŨ TIẾN DŨNG Khoa Toán Cơ Tin học - Trường Đại học Khoa học Tự nhiên e-mail:
Khóa và duzngvt@gmail.com
Thuật toán tìm khóa của lược đồ quan hệ
Đặt vấn đề
Khóa và một số tính chất
Các thuật toán tìm khóa của lược đồ quan hệ

Khoá và các thuật toán tìm khóa của lược đồ quan hệ

Kiến thức trang bị


Phụ thuộc hàm và quan hệ thỏa mãn phụ thuộc hàm
Lược đồ quan hệ ký hiệu là α = (U, F ) trong đó U là tập các thuộc
tính, F là một tập các phụ thuộc hàm
Thuật toán tìm bao đóng của một tập thuộc tính của lược đồ quan
hệ

VŨ TIẾN DŨNG Khoa Toán Cơ Tin học - Trường Đại học Khoa học Tự nhiên e-mail:
Khóa và duzngvt@gmail.com
Thuật toán tìm khóa của lược đồ quan hệ
Đặt vấn đề
Khóa và một số tính chất
Các thuật toán tìm khóa của lược đồ quan hệ

Khoá và các thuật toán tìm khóa của lược đồ quan hệ

Ví dụ
Cho cơ sở dữ liệu về các hãng cung ứng gồm lược đồ quan hệ
α = (U, F )
U={SH_HSX, Ten_hang, Dia_chi, Von_dieu_le,SH_MH,
Ten_MH,SL}
SH_HSX: Số hiệu hãng sản xuất
Ten_hang: Tên hãng sản xuất
Dia_chi: Địa chỉ hãng sản xuất
Von_dieu_le: Vốn điều lệ
SH_MH: Số hiệu mặt hàng
Ten_MH: Tên mặt hàng
SL: Số lượng hàng hóa được sản suất
Tập các phụ thuộc hàm F={SH_HSX → (Ten_hang, Dia_chi,
Von); SH_MH → Ten_MH; (SH_HSX, SH_MH) → SL; Dia_chi
→Von}

VŨ TIẾN DŨNG Khoa Toán Cơ Tin học - Trường Đại học Khoa học Tự nhiên e-mail:
Khóa và duzngvt@gmail.com
Thuật toán tìm khóa của lược đồ quan hệ
Đặt vấn đề
Khóa và một số tính chất
Các thuật toán tìm khóa của lược đồ quan hệ

Khoá và các thuật toán tìm khóa của lược đồ quan hệ

SH_SHX Ten_hang Dia_chi Von SH_MH Ten_MH SL


S1 H1 Hanoi 1000 MH1 Maytin 200
S1 H1 Hanoi 1000 MH2 Dienthoai 500
S2 H2 NamDinh 750 MH2 Dienthoai 400
S2 H2 NamDinh 750 MH3 Tivi 200
S3 H3 ThanhHoa 600 MH4 Tulanh 300

Bảng: Một thể hiện của lược đồ quan hệ

VŨ TIẾN DŨNG Khoa Toán Cơ Tin học - Trường Đại học Khoa học Tự nhiên e-mail:
Khóa và duzngvt@gmail.com
Thuật toán tìm khóa của lược đồ quan hệ
Đặt vấn đề
Khóa và một số tính chất
Các thuật toán tìm khóa của lược đồ quan hệ

Một số vấn đề thường gặp


Thông tin dư thừa gây nên các dị thường khi thực hiện cập nhật dữ
liệu
Dị thường khi thêm
Dị thường khi xóa
Di thường sửa đổi
Tốn dung lưu bộ nhớ lưu trữ

Giải pháp
Để đánh giá một cơ sở dữ liệu là đáp ứng được yêu cầu thực tế
người ta dựa vào các chuẩn của chuẩn lược đồ.
Các chuẩn của lược đồ quan hệ dựa trên khóa của lược đồ quan hệ,
vì vậy thuật toán tìm khóa của lược đồ quan hệ đóng vai trò quan
trong trong quá trình thiết kế cơ sở dữ liệu.

VŨ TIẾN DŨNG Khoa Toán Cơ Tin học - Trường Đại học Khoa học Tự nhiên e-mail:
Khóa và duzngvt@gmail.com
Thuật toán tìm khóa của lược đồ quan hệ
Đặt vấn đề
Khóa và một số tính chất
Các thuật toán tìm khóa của lược đồ quan hệ

Khoá và các thuật toán tìm khóa của lược đồ

Định nghĩa siêu khóa


Cho lược đồ quan hệ α = (U, F ), X ⊂ U được gọi là siêu khóa của lược
đồ quan hệ α khi và chỉ khỉ X + = U

Định nghĩa khóa


Cho lược đồ quan hệ α = (U, F ), K ⊂ U được gọi là siêu khóa của lược
đồ quan hệ α khi và chỉ khỉ
K là một siêu khóa
∀X ⊂ K thì X không là một siêu khóa

VŨ TIẾN DŨNG Khoa Toán Cơ Tin học - Trường Đại học Khoa học Tự nhiên e-mail:
Khóa và duzngvt@gmail.com
Thuật toán tìm khóa của lược đồ quan hệ
Đặt vấn đề
Khóa và một số tính chất
Các thuật toán tìm khóa của lược đồ quan hệ

Khoá và các thuật toán tìm khóa của lược đồ quan hệ

Một số ký hiệu
Ký hiệu
Kα là tập tất cả các khóa của lược đồ α = (U, F ).
Iα là tập các thuộc tính tham gia vào tất cả các khóa của lược đồ.
Nα là tập các thuộc tính không tham gia vào khóa nào của lược đồ.

Tính chất 1
Cho X là một siêu khóa thì ∀Y ⊃ X cũng là một siêu khóa.
Cho X và Y là hai siêu khóa thì X ∪ Y cũng là một siêu khóa. Tuy
nhiên đối với phép toán giao thì tính chất này không đúng.
Cho X là khóa thì Y ⊃ X không là một khóa.

VŨ TIẾN DŨNG Khoa Toán Cơ Tin học - Trường Đại học Khoa học Tự nhiên e-mail:
Khóa và duzngvt@gmail.com
Thuật toán tìm khóa của lược đồ quan hệ
Đặt vấn đề
Khóa và một số tính chất
Các thuật toán tìm khóa của lược đồ quan hệ

Khoá và các thuật toán tìm khóa của lược đồ quan hệ

Tính chất 2
\ [
Iα = K =U− (Ri − Li )
K ∈Kα Li →Ri ∈F

Tính chất 3
[
N := ( Ri − L i ) ⊆ N α
Li →Ri ∈F ;Li ⊆Iα

Tính chất 4

N ⊆ (NIα )+ − Iα ⊆ Nα

VŨ TIẾN DŨNG Khoa Toán Cơ Tin học - Trường Đại học Khoa học Tự nhiên e-mail:
Khóa và duzngvt@gmail.com
Thuật toán tìm khóa của lược đồ quan hệ
Đặt vấn đề
Khóa và một số tính chất
Các thuật toán tìm khóa của lược đồ quan hệ

Khoá và các thuật toán tìm khóa của lược đồ quan hệ

Bài toán
Input: Cho lược đồ quan hệ α = (U, F )
Output: Tìm một khóa của lược đồ quan hệ α = (U, F )

Thuật toán
Bước 1: K := U = {A1 , A2 , ..., An }; i = 1;
Bước 2: Nếu (K − Ai )+ = U thì K = K − Ai ; i=i+1;
Nếu i > n thì xuống Bước 3, ngược lại thì tiếp tục Bước 2.
Bước 3: Hiển thị K là khóa cần tìm

VŨ TIẾN DŨNG Khoa Toán Cơ Tin học - Trường Đại học Khoa học Tự nhiên e-mail:
Khóa và duzngvt@gmail.com
Thuật toán tìm khóa của lược đồ quan hệ
Đặt vấn đề
Khóa và một số tính chất
Các thuật toán tìm khóa của lược đồ quan hệ

Các thuật toán tìm khóa của lược đồ quan hệ

Ví dụ
Cho lược đồ quan hệ α = (U, F ), U = ABCDEFG

F = {B → A, D → C , D → BE , DF → G }

Tìm một khóa của lược đồ quan hệ.

VŨ TIẾN DŨNG Khoa Toán Cơ Tin học - Trường Đại học Khoa học Tự nhiên e-mail:
Khóa và duzngvt@gmail.com
Thuật toán tìm khóa của lược đồ quan hệ
Đặt vấn đề
Khóa và một số tính chất
Các thuật toán tìm khóa của lược đồ quan hệ

Các thuật toán tìm khóa của lược đồ quan hệ

Bước 1: K = ABCDEFG
Bước 2:
Lặp 1:(BCDEFG )+ = BCDEFGA = U → K = BCDEFG
Lặp 2:(CDEFG )+ = CDEFGBA = U → K = CDEFG
Lặp 3:(DEFG )+ = DEFGCBA = U → K = DEFG
Lặp 4:(EFG )+ = EFG
Lặp 5:(DFG )+ = DFGCBEA = U → K = DFG
Lặp 6:(DG )+ = DGCBEA
Lặp 7:(DF )+ = DFCBEAG → K = DF
Khóa K = DF

VŨ TIẾN DŨNG Khoa Toán Cơ Tin học - Trường Đại học Khoa học Tự nhiên e-mail:
Khóa và duzngvt@gmail.com
Thuật toán tìm khóa của lược đồ quan hệ
Đặt vấn đề
Khóa và một số tính chất
Các thuật toán tìm khóa của lược đồ quan hệ

Các thuật toán tìm khóa của lược đồ quan hệ

Nhận xét
Với K ∈ Kα , T := U − Iα − N ta luôn có:

Iα ⊆ K ⊆ (Iα ∪ T ).

Bước 1: K = ADF
Bước 2:
Lặp 1: (DF )+ = U → K = DF
Lặp 2: (F )+ = F → K = DF
Lăp 3: (D )+ = ABCE → K = DF
Khóa K = DF .

VŨ TIẾN DŨNG Khoa Toán Cơ Tin học - Trường Đại học Khoa học Tự nhiên e-mail:
Khóa và duzngvt@gmail.com
Thuật toán tìm khóa của lược đồ quan hệ
Đặt vấn đề
Khóa và một số tính chất
Các thuật toán tìm khóa của lược đồ quan hệ

Khóa và thuật toán tìm khóa

Bài toán
Input: Cho lược đồ quan hệ α = (U, F )
Output: Tìm các khóa của lược đồ quan hệ α = (U, F )

Thuật toán
Bước 1: Xây dựng 2n tập con của U = {A1 , . . . , An };
S={}
Bước 2: Với mỗi tập con X ⊆ U. Nếu X + = U thì S = S ∪ X
Bước 3: ∀X , Y ∈ S, nếu X ⊂ Y thì S = S − Y .
Bước 4: S là tập các khóa của lược đồ quan hệ α = (U, F )

VŨ TIẾN DŨNG Khoa Toán Cơ Tin học - Trường Đại học Khoa học Tự nhiên e-mail:
Khóa và duzngvt@gmail.com
Thuật toán tìm khóa của lược đồ quan hệ
Đặt vấn đề
Khóa và một số tính chất
Các thuật toán tìm khóa của lược đồ quan hệ

Khóa và thuật toán tìm khóa

Ví dụ
Cho lược đồ quan hệ α = (U, F ); U = ABCDEF

F = {AE → C , CF → A, BD → F , AF → E }.

Tìm các khóa của lược đồ quan hệ

VŨ TIẾN DŨNG Khoa Toán Cơ Tin học - Trường Đại học Khoa học Tự nhiên e-mail:
Khóa và duzngvt@gmail.com
Thuật toán tìm khóa của lược đồ quan hệ
Đặt vấn đề
Khóa và một số tính chất
Các thuật toán tìm khóa của lược đồ quan hệ

Khóa và thuật toán tìm khóa

Tập các siêu khóa của lược đồ

S ={ABD, BCD, ABCD, ABDE , BCDE , ABCDE , ABDF , BCDF ,


ABCDF , ABDEF , BCDEF , ABCDEF }

Đồ thị

Hình: Đồ thị mối quan hệ giữa các siêu khóa

VŨ TIẾN DŨNG Khoa Toán Cơ Tin học - Trường Đại học Khoa học Tự nhiên e-mail:
Khóa và duzngvt@gmail.com
Thuật toán tìm khóa của lược đồ quan hệ
Đặt vấn đề
Khóa và một số tính chất
Các thuật toán tìm khóa của lược đồ quan hệ

Khóa và thuật toán tìm khóa

Thuật toán
K =U− (Ri − Li )
T S
Bước 1: Tìm Iα =
K ∈Kα L i → Ri ∈ F
Bước 2: Tính (Iα )+ .
Nếu (Iα )+ = U thì kết luận lược đồ có duy nhất khóa và chuyển về
bước 5. Ngược lại thì kết luận lược đồ có nhiều hơn một khóa và
chuyển về bước 3
Bước 3: Tìm tập các thuộc tính không tham gia khóa
(Ri − Li )
S
Tìm N :=
Li →Ri ∈F ;Li ⊆Iα
Lặp lại quá trình tính N := (NIα )+ − Iα tới N cực đại thì chuyển
sang bước 4
Bước 4: Tìm tập các thuộc tính có thể tham gia khóa
B = U − Iα − N
Bước 5: Kết hợp Iα với các phần tử trong B để thu được khóa cần
tìm.
VŨ TIẾN DŨNG Khoa Toán Cơ Tin học - Trường Đại học Khoa học Tự nhiên e-mail:
Khóa và duzngvt@gmail.com
Thuật toán tìm khóa của lược đồ quan hệ
Đặt vấn đề
Khóa và một số tính chất
Các thuật toán tìm khóa của lược đồ quan hệ

Khóa và thuật toán tìm khóa

Tìm tập giao các khóa


\ [
Iα = K =U− (Ri − Li ) = BD
K ∈Kα L i → Ri ∈ F

Tính (BD )+ = BDF nên lược đồ có nhiều hơn 1 khóa


Tìm tập các thuộc tính không tham gia khóa
[
N := ( Ri − L i ) = F
Li →Ri ∈F ;Li ⊆Iα

Tập các thuộc tính có thể tham gia khóa

B = U − Iα − N = ACE

Kết hợp Iα với các phần tử trong B và kiểm tra điều kiện khóa ta
thu được 2 khóa là ABD, BCD

VŨ TIẾN DŨNG Khoa Toán Cơ Tin học - Trường Đại học Khoa học Tự nhiên e-mail:
Khóa và duzngvt@gmail.com
Thuật toán tìm khóa của lược đồ quan hệ
Đặt vấn đề
Khóa và một số tính chất
Các thuật toán tìm khóa của lược đồ quan hệ

Khóa và thuật toán tìm khóa

Kết luận
Khóa và các tính chất của khóa
Thuật toán tìm khóa của lược đồ quan hệ

VŨ TIẾN DŨNG Khoa Toán Cơ Tin học - Trường Đại học Khoa học Tự nhiên e-mail:
Khóa và duzngvt@gmail.com
Thuật toán tìm khóa của lược đồ quan hệ

You might also like