Bài tập cơ sở dữ liệu
Mục lục
Chương 1 MÔ HÌNH THỰC THỂ - LIÊN HỆ
A. TÓM TẮT LÝ THUYẾT .................................................................................. 6
1.1. Các khái niệm và kiến thức cơ bản.............................................................. 6
1.1.1. Khái niệm cơ sở dữ liệu......................................................................... 6
1.1.2. Hệ cơ sở dữ liệu ..................................................................................... 6
1.1.3. Các mức trừu tƣợng trong cơ sở dữ liệu ............................................... 6
1.1.4. Lƣợc đồ (Scheme) và Thể hiện (Instance) ............................................ 6
1.2. Mô hình thực thể liên hệ (Entity- Relationship model)............................... 7
1.2.1 Thực thể .................................................................................................. 7
1.2.2. Tập thực thể ........................................................................................... 7
1.2.3. Thuộc tính và khoá ................................................................................ 7
1.2.4. Phân cấp ISA (là một) ........................................................................... 7
1.2.5. Mối liên hệ ............................................................................................. 7
1.2.6. Thuộc tính khoá vay mƣợn .................................................................... 8
1.2.7. Sơ đồ thực thể liên hệ ............................................................................ 8
1.2.8. Tính chất hàm của mối liên hệ .............................................................. 8
1.2.9. Biểu diễn tính chất hàm trong các sơ đồ thực thể - liên hệ ................... 9
B. BÀI TẬP .......................................................................................................... 12
Chương 2 MÔ HÌNH CƠ SỞ DỮ LIỆU QUAN HỆ
A. TÓM TẮT LÝ THUYẾT ................................................................................ 21
2.1. Các khái niệm cơ bản ................................................................................ 21
2.1.1. Mô hình cơ sở dữ liệu (Relation model) ............................................. 21
2.1.2. Các khái niệm quan hệ ....................................................................... 21
2.2. Biến đổi sơ đồ thực thể - liên hệ sang mô hình quan hệ ........................... 21
2.2.1. Biến đổi các tập thực thể ..................................................................... 22
2.2.2. Biến đổi mối liên hệ ............................................................................ 22
2.3. Khoá của các quan hệ ................................................................................ 22
2.4. Quan hệ có khoá chung ............................................................................. 23
2.5. Một số phép toán đại số quan hệ ............................................................... 24
Phạm Hùng Phú 3
Bài tập cơ sở dữ liệu 2.5.1. Phép hợp .............................................................................................. 24
2.5.2. Phép giao .............................................................................................. 24
2.5.3. Phép trừ ................................................................................................ 24
2.5.4. Phép tích Đề - Các ............................................................................... 24
2.5.5. Phép chiếu (Projection ) ....................................................................... 25
2.5.6. Phép chọn (Selection ) ......................................................................... 25
2.5.7. Phép kết nối (Join) ............................................................................... 25
2.6. Đại số quan hệ - một ngôn ngữ vấn tin. ..................................................... 25
2.7. Tối ƣu hoá các biểu thức đại số quan hệ .................................................... 27
2.7.1. Các chiến lƣợc tối ƣu tổng quát ........................................................... 27
2.7.2. Biểu thức tƣơng đƣơng ........................................................................ 27
2.7.3. Các phép biến đổi tƣơng đƣơng của đại số quan hệ ............................ 28
B. BÀI TẬP .......................................................................................................... 37
Chương 3 NGÔN NGỮ CƠ SỞ DỮ LIỆU SQL
A. TÓM TẮT LÝ THUYẾT ................................................................................. 57
3.1. Tạo bảng..................................................................................................... 57
3.1.1. Mệnh đề tạo cấu trúc của bảng có dạng tổng quát nhƣ sau: ................ 57
3.1.2. Vào dữ liệu cho bảng ........................................................................... 57
3.2 Khối SELECT ............................................................................................. 58
3.2.1. Tìm kiếm theo câu hỏi đơn giản (tìm kiếm trên một bảng) ................. 59
3.2.2. Tìm kiếm với câu hỏi phức tạp ............................................................ 65
3.3. Các mệnh đề cập nhật dữ liệu .................................................................... 70
3.3.1. Thêm bản ghi vào cuối bảng ................................................................ 70
3.3.2. Xóa bảng .............................................................................................. 70
3.4. Tạo view của ngƣời sử dụng ...................................................................... 72
3.5. Các mệnh đề về an toàn dữ liệu ................................................................. 72
3.5.1. Trao quyền truy nhập ........................................................................... 72
3.5.2. Huỷ bỏ quyền truy nhập ...................................................................... 72
B. BÀI TẬP .......................................................................................................... 73
4 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Chương 4 THIẾT KẾ CƠ SỞ DỮ LIỆU
A. TÓM TẮT LÝ THUYẾT ................................................................................ 99
4.1. Phụ thuộc hàm ........................................................................................... 99
4.1.1. Khái niệm phụ thuộc hàm ................................................................... 99
4.1.2. Hệ tiên đề cho phụ thuộc hàm ........................................................... 100
4.1.3. Bao đóng của tập thuộc tính .............................................................. 100
4.1.4. Khóa của lƣợc đồ quan hệ ................................................................. 102
4.1.5. Phủ của tập các phụ thuộc hàm ......................................................... 104
4.2. Phép tách các lƣợc đồ quan hệ ................................................................ 106
4.2.1. Khái niệm phép tách một lƣợc đồ quan hệ ....................................... 106
4.2.2. Phép tách kết nối không mất thông tin .............................................. 106
4.2.3. Phép tách bảo toàn phụ thuộc hàm .................................................... 109
4.3. Chuẩn hoá lƣợc đồ quan hệ ..................................................................... 110
4.3.1. Khái niệm lƣợc đồ đƣợc chuẩn hoá và chuẩn hoá lƣợc đồ quan hệ .. 110
4.3.2. Dạng chuẩn thứ nhất (First Normal Form, viết tắt là 1NF) .............. 110
4.3.3. Dạng chuẩn thứ hai (Second Normal Form, viết tắt là 2NF) ........... 111
4.3.4. Dạng chuẩn thứ ba (Third Normal Form, viết tắt là 3NF) ............... 111
4.3.2. Dạng chuẩn Boye-Codd (BCNF) .................................................... 114
B. BÀI TẬP ........................................................................................................ 117
4.1. Bài tập về phụ thuộc hàm ........................................................................ 117
4.2. Bài tập về phép tách lƣợc đồ quan hệ ...................................................... 194
4.3. Bài tập về chuẩn hóa sơ đồ quan hệ ........................................................ 203
4.4. Bài tập tổng hợp ...................................................................................... 213
Phạm Hùng Phú 5
Bài tập cơ sở dữ liệu
Chương 1
MÔ HÌNH THỰC THỂ - LIÊN HỆ
A. TÓM TẮT LÝ THUYẾT
1.1. Các khái niệm và kiến thức cơ bản
1.1.1. Khái niệm cơ sở dữ liệu
Cơ sở dữ liệu là tập hợp các thông tin có quan hệ với nhau đƣợc lƣu trữ trong
máy tính theo một quy định nhất định nhằm phục vụ cho một mục đích nào đó.
Hệ cơ sở dữ liệu là một hệ thống gồm bốn thành phần:
1.1.2. Hệ cơ sở dữ liệu
- Cơ sở dữ liệu hợp nhất;
- Những ngƣời sử dụng;
- Hệ quản trị cơ sở dữ liệu;
- Các thiết bị nhớ ngoài đƣợc sử dụng để lƣu trữ cơ sở dữ liệu.
1.1.3. Các mức trừu tượng trong cơ sở dữ liệu
1) Mức cơ sở dữ liệu vật lý
Là tập hợp các tệp dữ liệu, các chỉ mục hoặc những cấu trúc lƣu trữ khác nhƣ
heap, bảng băm (hash table), … dùng để truy xuất dữ liệu; nó mô tả dữ liệu đƣợc
lƣu trữ một cách thực sự nhƣ thế nào trên các thiết bị nhớ ngoài.
2) Mức cơ sở dữ liệu khái niệm
Là các mô tả những dữ liệu nào đƣợc lƣu trữ trong cơ sở dữ liệu và các mối
quan hệ nào tồn tại giữa các dữ liệu này.
3) Mức cơ sở dữ liệu khung nhìn
Là cách nhìn của ngƣời sử dụng đối với cơ sở dữ liệu, là một đối tƣợng
tƣởng tƣợng đƣợc xây dựng từ cơ sở dữ liệu khái niệm nhƣng thực sự không tồn tại
trong cơ sở dữ liệu đó.
1.1.4. Lược đồ (Scheme) và Thể hiện (Instance)
1) Lược đồ (Schem ) là bộ khung hay cấu trúc của cơ sở dữ liệu
2) Thể hiện (Instance) là dữ liệu hiện có trong cơ sở dữ liệu.
6 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
1.2. Mô hình thực thể liên hệ (Entity- Relationship model)
Là mô hình cho phép sử dụng các tên để mô tả dữ liệu - các tập thực thể thông
qua các thuộc tính và mối liên hệ giữa các tập thực thể. Nó đƣợc dùng làm công cụ
thiết kế lƣợc đồ cơ sở dữ liệu khái niệm.
1.2.1 Thực thể
Thực thể là một sự vật tồn tại và phân biệt đƣợc, nghĩa là có thể phân biệt
đƣợc thực thể này với thực thể khác.
1.2.2. Tập thực thể
Một nhóm bao gồm các thực thể “tƣơng tự” tạo ra một tập thực thể. Mỗi tập
thực thể đƣợc đặt bởi một tên.
1.2.3. Thuộc tính và khoá
1) Thuộc tính
Các đặc tính của tập thực thể gọi là các thuộc tính. Mỗi thuộc tính của tập thực
thể đƣợc đặt bởi một tên và lấy giá trị trên một miền dành cho thuộc tính đó.
2) Khóa
Một hoặc một tập các thuộc tính dùng để xác định một cách duy nhất mỗi
thực thể trong một tập thực thể gọi là khóa đối với tập thực thể đó.
1.2.4. Phân cấp ISA (là một)
A ISA B (A là một B) nếu tập thực thể A là một loại B đặc biệt hoặc tƣơng
đƣơng tập thực thể B là sự tổng quát hóa của tập thực thể A. Mục đích chính của
việc khai báo mối liên hệ ISA giữa các tập thực thể A và B là A có thể kế thừa các
thuộc tính của B, nhƣng A có thể có thêm những thuộc tính khác mà B không có.
1.2.5. Mối liên hệ
Mối liên hệ (Relationship) R giữa các tập thực thể E1, E2, E3, ..., EK là một
danh sách có thứ tự R(E1, E2, E3, ..., EK) của các tập thực thể đó. Nó là tập hợp các
bộ thực thể (e1, e2, e3, ..., ek) với ei Ei và e1, e2, e3, ..., ek có quan hệ R với nhau
(Một tập thực thể đặc biệt có thể xuất hiện nhiều lần trong danh sách).
Phạm Hùng Phú 7
Bài tập cơ sở dữ liệu
1.2.6. Thuộc tính khoá vay mượn
Là khoá của tập thực thể A đƣợc sử dụng làm các thuộc tính của tập thực thể
B; nhờ đó mà với mỗi thực thể a trong A ta xác định đƣợc các thực thể b trong B có
quan hệ với a .
1.2.7. Sơ đồ thực thể liên hệ
Quy ước:
1) Các hình chữ nhật biểu diễn các tập thực thể, bên trong ghi tên tập thực thể.
2) Các hình dạng tròn biểu diễn các thuộc tính, bên trong ghi tên thuộc tính.
Chúng đƣợc nối với các tập thực thể bằng các cạnh (vô hƣớng). Các thuộc tính là
các thành phần của một khóa cho một tập thực thể đƣợc gạch dƣới. Trƣờng hợp đặc
biệt nếu một tập thực thể chỉ có một thuộc tính thì có thể gọi tập thực thể đó bằng
tên thuộc tính của nó. Khi đó tập thực thể sẽ đƣợc biểu diễn là một hình dạng tròn
chứ không phải là hình chữ nhật và nó đƣợc nối với các mối liên hệ mà tập đó hàm
chứa.
3) Các hình thoi biểu diễn các mối liên hệ, bên trong ghi tên mối liên hệ.
Chúng đƣợc nối với các các tập thành viên tham gia vào mối liên hệ đó bởi các cạnh
vô hƣớng hoặc có hƣớng (các cung).
1.2.8. Tính chất hàm của mối liên hệ
1) Mối liên hệ một – một
Một mối liên hệ R giữa các tập thực thể E1 và E2 đƣợc gọi là mối liên hệ một -
một (one to one ralationship) nếu trong mối liên hệ đó mỗi thực thể của tập thực thể
E1 chỉ tƣơng ứng với nhiều nhất với một thực thể của tập thực thể E2 và mỗi thực thể
của tập thực thể E2 chỉ tƣơng ứng nhiều nhất với một thực thể của tập thực thể E1.
2) Mối liên hệ nhiều – một
Một mối liên hệ R giữa các tập thực thể E1 và E2 đƣợc gọi là mối liên hệ
nhiều – một (many - one relationship) nếu trong mối liên hệ đó mỗi thực thể của tập
thực thể E1 có thể tƣơng ứng với nhiều nhất một thực thể trong tập thực thể E2 và
mỗi thực thể trong tập thực thể E2 có thể tƣơng ứng với không hoặc một hoặc nhiều
thực thể trong tập thực thể E1.
8 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Khái niệm mối liên hệ nhiều – một tổng quát hóa trong trƣờng hợp mối liên
hệ giữa ba tập thực thể trở lên nhƣ sau:
Mối liên hệ R giữa các tập thực thể E1, E2, ..., Ek, Ek+1 (k > 1) đƣợc gọi là mối
liên hệ nhiều – một giữa các tập thực thể E1, E2, ..., Ek và tập thực thể Ek+1; nếu
trong mối liên hệ đó, mỗi bộ các thực thể (e1, e2, ..., ek) với ei Ei và i = 1,..., k của
các tập thực thể E1, E2, ..., Ek có thể tƣơng ứng với nhiều nhất một thực thể của tập
thực thể Ek+1 và mỗi thực thể của tập thực thể Ek+1 có thể tƣơng ứng với không hoặc
một hoặc nhiều các bộ thực thể (e1, e2, ..., ek) với ei Ei và i = 1,..., k của các tập
thực thể E1, E2, ..., Ek.
3) Mối liên hệ nhiều – nhiều
Mối liên hệ R giữa các tập thực thể E1 và E2 đƣợc gọi là mối liên hệ
nhiều – nhiều (many - many ralationship) nếu trong mối liên hệ đó mỗi thực thể
trong tập thực thể E1 có thể tƣơng ứng với không hoặc một hoặc nhiều thực thể
trong tập thực thể E2 và mỗi thực thể trong tập thực thể E2 có thể tƣơng ứng với
không hoặc một hoặc nhiều thực thể trong tập thực thể E1.
Khái niệm mối liên hệ nhiều – nhiều tổng quát hóa trong trƣờng hợp mối
liên hệ giữa ba tập thực thể trở lên nhƣ sau:
Mối liên hệ R giữa các tập thực thể E1, E2, ..., Ek, Ek+1 (k > 1) đƣợc gọi là mối
liên hệ nhiều – nhiều giữa các tập thực thể E1, E2, ..., Ek và tập thực thể Ek+1; nếu
trong mối liên hệ đó, mỗi bộ các thực thể (e1, e2, ..., ek) với eiEi và i = 1,..., k của
các tập thực thể E1, E2, ..., Ek có thể tƣơng ứng với không hoặc một hoặc nhiều thực
thể của tập thực thể Ek+1 và mỗi thực thể của tập thực thể Ek+1 có thể tƣơng ứng với
không hoặc một hoặc nhiều các bộ thực thể (e1, e2, ..., ek) với ei Ei và i = 1,..., k
của các tập thực thể E1, E2, ..., Ek.
1.2.9. Biểu diễn tính chất hàm trong các sơ đồ thực thể - liên hệ
- Nếu mối liên hệ R giữa các tập thực thể A và B là nhiều – một thì đặt một
cung vô hƣớng từ mối liên hệ R đến tập thực thể A (bên nhiều) và một cung có
hƣớng từ mối liên hệ R đến tập thực thể B (bên một).
Trong trƣờng hợp tổng quát có một mối liên hệ R giữa nhiều hơn một tập
thực thể và thuộc loại nhiều - một vào một tập thực thể A nào đó thì vẽ một cung có
Phạm Hùng Phú 9
Bài tập cơ sở dữ liệu hƣớng từ mối liên hệ R đến tập thực thể A và các cung vô hƣớng từ mối liên hệ R
đến các tập thực thể khác.
- Nếu R là mối liên hệ một – một giữa các tập thực thể A và B thì vẽ một
cung có hƣớng từ mối liên hệ R đến tập thực thể A và một cung có hƣớng khác từ
mối liên hệ R đến tập thực thể B. Ngoại lệ, nếu A ISA B thì chỉ vẽ một cung có
hƣớng từ mối liên hệ ISA đến tập thực thể B còn từ mối liên hệ ISA đến tập thực thể
A là một cung vô hƣớng.
- Nếu mối liên hệ R là nhiều - nhiều giữa các tập thực thể thì ta vẽ các cung
vô hƣớng từ mối liên hệ R tất cả các tập thực thể tham gia vào mối liên hệ.
Ví dụ:
Một cửa hàng mua bán vật tƣ xây dựng muốn quản lý công việc kinh doanh
của mình bằng máy tính và có ý định thiết kế một hệ thống cơ sở dữ liệu lƣu trữ các
thông tin cần thiết cho hoạt động kinh doanh. Nhân viên quản trị cơ sở dữ liệu hệ
thống là SVA - một sinh viên khoa CNTT trƣờng ĐHSPKT Nam Định và làm việc
cho cửa hàng đã phân tích và triển khai một sơ đồ thực thể – liên hệ nhƣ sau:
Cơ sở dữ liệu nhằm phục vụ cho việc quản lý nhập hàng từ các nhà cung cấp
và bán hàng cho khách hàng.
Để quản lý đƣợc việc nhập hàng từ các nhà cung cấp thì cơ sở dữ liệu nhằm
phục vụ cho việc trả lời các câu hỏi chính:
- “Cửa hàng nhập các mặt hàng nào của các nhà cung cấp hàng nào, theo các
lần cung cấp nào, vào ngày nào, với số lƣợng và đơn giá là bao nhiêu ?”.
Vì vậy, SVA quyết định trong cơ sở dữ liệu có một tập thực thể NCC (các
nhà cung cấp) gồm các thuộc tính Mancc (Mã - số hiệu nhà cung cấp - khoá),
tenNcc (họ tên nhà cung cấp), DCNCC (địa chỉ nhà cung cấp).
Một vấn đề quan trọng liên quan đến các nhà cung cấp là các mặt hàng họ
cung cấp, do đó SVA đã đƣa ra một tập thực thể MATH (các mặt hàng) gồm các
thuộc tính MaMh (Mã - số hiệu mặt hàng - khoá), TenMh (tên mặt hàng), DVT
(đơn vị tính).
Cửa hàng nhập các mặt hàng thông qua các hoá đơn nhập hàng từ các nhà
cung cấp. Mỗi hoá đơn nhập hàng (HDNH) gồm: số hiệu hoá đơn nhập hàng
(ShHDN), ngày nhập hàng (NgayN), thông tin về nhà cung cấp hàng và một danh
10 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
sách các mặt hàng, số lƣợng, đơn giá của từng mặt hàng mà cửa hàng yêu cầu,
thành tiền, tổng số tiền. Thành tiền, tổng số tiền là các thuộc tính tính toán nên ta có
thể bỏ đi. Các thuộc tính của tập thực thể HDNH là ShHDN, NgayN. Vì các nhà
cung cấp khác nhau vẫn có thể có cách ghi ShHDN giống nhau nên tập thực thể
HDNH phải vay mƣợn thuộc tính Mancc để kết hợp với ShHDN làm khóa. Nội
dung thực sự của HDNH đƣợc biểu diễn qua mối liên hệ nhiều - một CTHDNH
(chi tiết hoá đơn nhập hàng) giữa các tập thực thể: HDNH, MATH ( các mặt hàng),
SLN (số lƣợng nhập) chỉ có một thuộc tính SLN – khoá, DGN (đơn giá nhập) chỉ có
một thuộc tính DGN – khoá đến NCC (các nhà cung cấp hàng).
Để quản lý đƣợc việc bán hàng cho các khách hàng thì cơ sở dữ liệu nhằm
phục vụ cho việc trả lời các câu hỏi chính:
- “Cửa hàng bán các mặt hàng nào cho các khách hàng nào, vào các lần bán
hàng nào, vào ngày nào với số lƣợng và đơn giá là bao nhiêu ?”.
Nhƣ vậy, ta thấy ngay một tập thực thể quan trọng khác là KHH (các khách
hàng) với các thuộc tính MaKh (mã - số hiệu khách hàng - khóa), TenKh (tên khách
hàng), DcKh (địa chỉ khách hàng), GT (giới tính).
Các khách mua hàng thông qua các hoá đơn bán hàng của cửa hàng cho các
khách hàng. Mỗi hoá đơn bán hàng (HDBH) gồm: số hiệu hoá đơn bán hàng
(ShHDB), ngày bán hàng (NgayB), thông tin về các khách hàng và một danh sách
các mặt hàng, số lƣợng, đơn giá của từng mặt hàng mà khách hàng yêu cầu, thành
tiền, tổng số tiền. Thành tiền, tổng số tiền là các thuộc tính tính toán nên ta có thể
bỏ đi. Các thuộc tính của tập HDBH là ShHDB - khoá, NgayB (vì trong một cửa
hàng thì chỉ quy định một cách ghi ShHDB. Nội dung thực sự của HDBH đƣợc biểu
diễn qua mối liên hệ nhiều - một CTHDBH (chi tiết hoá đơn bán hàng) giữa các tập
thực thể: HDBH, MATH ( các mặt hàng), SLB (số lƣợng bán) chỉ có một thuộc tính
SLB – khoá, DGB (đơn giá bán) chỉ có một thuộc tính DGB – khoá đến KhHang
(các khách hàng).
Phạm Hùng Phú 11
TenKH
MaKH
TenNCC
MaNCC
GT
DCKH
KHHANG
DGN
NCC
DCNCC
CTHDNH
CTHDBH
SLB
SLN
DGB
MaNCC
HDBH
HDNH
MATH
MaMH
NGAYB
NGAYN
SHHDB
SHHDN
DVT
TenMH
Bài tập cơ sở dữ liệu Từ đó, ta có sơ đồ thực thể liên hệ nhƣ hình vẽ sau:
Hình 1.1. Sơ đồ thực thể - liên hệ của CSDL mua bán vật tư
B. BÀI TẬP
1.1. Hãy sử dụng mô hình thực thể - liên hệ để mô tả dữ liệu cho hệ thống quản lý
điểm của một lớp, sau đó vẽ sơ đồ thực thể - liên hệ cho cơ sở dữ liệu đó.
Giải tóm tắt:
Cơ sở dữ liệu nhằm phục vụ cho việc trả lời câu hỏi chính “sinh viên nào học
môn học nào và điểm của họ ra sao , môn học đó học ở kỳ nào?”. Nên trong cơ sở
dữ liệu có các tập thực thể:
- SVgồm các thuộc tính: Masv (khóa), Hoten, Ns, Gt, Qq
- Monhoc gồm các thuộc tính: Mamh (khóa), tenmon, Sht
- Hocky chỉ có một thuộc tính: Hocky (khóa)
- Diem chỉ có một thuộc tính: Diem (khóa)
và các mối liên hê:
- Sv_Mh_Diem(SV, Monhoc, Diem) với ý nghĩa “sinh viên nào học môn học
nào và điểm của họ ở môn học đó ra sao” . Đây là mối liên hệ nhiều - một, từ SV,
Monhoc đến Diem.
12 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
- Mh_Ky(Monhoc, hocky) với ý nghĩa “môn hoc nào đƣợc bố trí học ở học
kỳ nào”. Đây là mối liên hệ nhiều - một từ Monhoc đến Hocky.
Từ đó ta có sơ đồ thực thể liên hệ:
SHT
Mh_Ky
Hocky Gt Ns
Masv SV
Monhoc
Diem m
Sv_Mh_Diem Qq Hoten tenmon Mamh
Hình 1.2. Sơ đồ thực thể liên hệ của CSDL quản lý điểm
1.2. Hãy sử dụng mô hình thực thể - liên hệ để mô tả dữ liệu cho hệ thống quản lý
tiền quỹ của một lớp, sau đó vẽ sơ đồ thực thể - liên hệ cho cơ sở dữ liệu đó.
Giải tóm tắt:
Cơ sở dữ liệu nhằm phục vụ cho việc trả lời câu hỏi chính “ sinh viên nào
Chi hay đóng khoản tiền gì vào ngày nào với số tiền là bao nhiêu?”. Nên trong cơ
sở dữ liệu có các tập thực thể:
- SVgồm các thuộc tính: Masv (khóa), Hoten
- KhoanTC - khoản thu chi chỉ có một thuộc tính: KhoanTc (khóa)
- ThuChi - thu hay chi chỉ có một thuộc tính: Thuchi (khóa)
- Ngay - ngày thu hay chi chỉ có một thuộc tính: ngay (khóa)
- Sotien - số tiền thu hay chi chỉ có một thuộc tính: Sotien (khóa).
Ở đây, Ta có thể chỉ ra mối liên hệ tổng quát Soquy(SV, KhoanTC, ThuChi,
Ngay, Sotien ) với ý nghĩa “sinh viên nào Chi hay đóng khoản tiền gì, vào
ngày nào với số tiền là bao nhiêu”. Ta có sơ đồ thực thể liên hệ:
Phạm Hùng Phú 13
Bài tập cơ sở dữ liệu
Masv Thuchi KhoanTc
SV
Soquy
ngay Hoten Sotien
Hình 1.3 Sơ đồ thực thể liên hệ của CSDL quản lý quỹ
1.3. Hãy sử dụng mô hình thực thể - liên hệ để mô tả dữ liệu cho hệ thống quản lý
vi phạm luật giao thông của một tỉnh, sau đó vẽ sơ đồ thực thể - liên hệ cho cơ
sở dữ liệu.
Giải tóm tắt:
Cơ sở dữ liệu nhằm phục vụ cho việc trả lời câu hỏi chính “ai điều khiển
phƣơng tiện gì, phƣơng tiện đó của ai, vi phạm lỗi gì, ở đâu, vào thời gian nào, bị
phạt bao nhiêu tiền, ai là ngƣời xử phạt ?”. Nên trong cơ sở dữ liệu có các tập thực
thể:
- Nvp - ngƣời vi phạm gồm các thuộc tính: ScmtVP(khóa), HotenVP, GtVP,
tuoiVP, DiachiVP.
- ChuPT – chủ phƣơng tiện gồm các thuộc tính: Scmt (khóa), Hoten, Gt,
tuoi, Diachi.
- PT – phƣơng tiện gồm các thuộc tính: Sbdk – số biển đăng ký (khóa), Loai
– loại phƣơng tiện, Mac – mác của phƣơng tiện, nuoc – nƣớc sản xuất.
- LoiVp – lỗi vi phạm chỉ có một thuộc tính: LoiVp(khóa).
- Diadiem – Địa điểm vi phạm chỉ có một thuộc tính: Diadiem(khóa).
- ThoiGian – ngày, giờ vi phạm chỉ có một thuộc tính: Thoigian(khóa).
- Sotien - số tiền bị phạt chỉ có một thuộc tính: Sotien(khóa).
+ NgXL – ngƣời xử lý gồm các thuộc tính: MaNXL – số hiệu ngƣời xử lý
(khóa), hoten, Capbac – cấp bậc, Chucvu – Chức vụ.
Ở đây, Ta có thể chỉ ra một mối liên hệ Vipham(Nvp, PT, LoiVP, Thoigian,
Diadiem, Sotien, NgXL) với ý nghĩa “ngƣời nào sử dụng phƣơng tiện nào, vi phạm
lỗi gì; ở đâu, vào thời gian nào, bị phạt bao nhiêu tiền và ai là ngƣời xử phạt”. Mối
liên hệ này thuộc loại nhiều – nhiều giữa các tập thực thể. Một mối liên hệ khác là
14 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
SoHuu(ChuPT, PT) với ý nghĩa “ai là chủ phƣơng tiện vi phạm”. Đây cũng là mối
liên hệ nhiều nhiều giữa ChuPt và PT.
Ta có sơ đồ thực thể liên hệ
Sbdk Scmtvp Hotenvp LoiVp Loai Sotien Mac Gtvp PT NVP
nuoc tuoivp SoHuu ViPham Scmt Diachivp
Capbac ChuPT Hoten NgXL Diadiem hoten Diachi ThoiGian Gt tuoi Chucvu MaNXL
Hình 1.4. Sơ đồ thực thể liên hệ của CSDL quản lý vi phạm luật giao thông
1.4. Hãy sử dụng mô hình thực thể - liên hệ để mô tả dữ liệu cho hệ thống quản lý
điện của một tổ kinh doanh điện trong một năm, sau đó vẽ sơ đồ thực thể - liên
hệ cho cơ sở dữ liệu đó.
Giải tóm tắt:
Mô hình thực thể liên hệ mô tả dữ liệu của hệ thống quản lý điện của một tổ kinh doanh diện trong một năm
Cơ sở dữ liệu nhằm phục vụ cho việc trả lời câu hỏi chính “Chủ hộ nào có
hợp đồng thuê điện nào và hàng tháng có lƣợng điện tiêu thụ là bao nhiêu và phải
trả là bao nhiêu tiền mỗi tháng ?”. Nên trong cơ sở dữ liệu có các tập thực thể:
- Chuho – Chủ hộ gồm các thuộc tính: MaCh (khóa), Hoten, Gt, Diachi
- Congto – công tơ gồm các thuộc tính: ShCT (khóa), nuocSX, Vitri ( nơi
treo công tơ, chisodau (chỉ số công tơ ban đầu).
- Hopdong - hợp đồng gồm các thuộc tính: Shd (số hợp đồng - khoá),
Ngayhd (ngày hợp đồng), ngkyhd (ngƣời ký hợp đồng).
- Thangsd – tháng sử dụng điện chỉ có một thuộc tính: Thang (khóa)
Phạm Hùng Phú 15
Bài tập cơ sở dữ liệu - Ngayghi - ngày ghi số chỉ có một thuộc tính: ngayghi (khóa)
- ChisoCT – chỉ số công tơ chỉ có một thuộc tính: ChisoCT (khóa)
Ở đây, Ta có thể chỉ ra các mối liên hệ :
- CH_HD(Chuho, hopdong) là mối liên hệ một - một giữa hai thực thể
Chuho, hopdong với ý nghĩa “chủ hộ nào có hợp đồng mua điện nào”.
- HD_CT(hopdong, congto) là mối liên hệ một - một giữa hai thực thể
hopdong và cong to với ý nghĩa “hợp đồng mua điện nào đƣợc cấp công tơ nào”.
- Sudungdien(Congto, Thangsd, ChisoCT) là mối liên hệ nhiều - một từ
congto, thangsd đến ChisoCT với ý nghĩa “công tơ nào, trong tháng nào có chỉ số
công tơ trong tháng là bao nhiêu ”.
- GhiCT(Congto, Thangsd, Ngayghi) là mối liên hệ nhiều - một từ congto,
thangsd đến Ngayghi với ý nghĩa “công tơ nào, trong tháng nào có ngày ghi chỉ số
công tơ là ngày nào”.
Và ta có sơ đồ thực thể liên hệ:
Chisodau NgayHd Vitri NgkyHd
Hopdong SHD Congto HD_CT nuocSX
CH_HD hoten ShCT Thangsd
Chuho Sudungd ien MaCh GhiCT
Diachi Gt
Hình 1.5. Sơ đồ thực thể liên hệ của CSDL quản lý điện
ChisoCT Ngayghi
1.5. Hãy sử dụng mô hình thực thể - liên hệ để mô tả dữ liệu cho hệ thống quản lý
nƣớc của một công ty nƣớc trong một năm, sau đó vẽ sơ đồ thực thể - liên hệ
cho cơ sở dữ liệu đó.
16 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Hƣớng dẫn:
Hoàn toàn tƣơng tự nhƣ bài 1.4
1.6. Hãy sử dụng mô hình thực thể - liên hệ để mô tả dữ liệu cho hệ thống quản lý
việc cho thuê truyện của một cửa hiệu cho thuê truyện, sau đó vẽ sơ đồ thực thể
- liên hệ cho cơ sở dữ liệu đó.
Giải tóm tắt:
Cơ sở dữ liệu nhằm phục vụ cho việc trả lời câu hỏi chính “ngƣời nào mƣợn
quyển truyện nào, trong thời gian nào và phải trả số tiền là bao nhiêu?”. Nên trong
cơ sở dữ liệu có các tập thực thể:
+ Docgia – đọc giả gồm các thuộc tính: Madg (khóa), Hoten, Gt, Diachi, sdt
- số điện thoại
+ Truyen – gồm các thuộc tính: MaTr (khóa), TenTr – tên truyện, TacGia –
tên tác giả, NXB –nhà xuất bản, Vitri – nơi để truyện
+ Thoigian - gồm các thuộc tính: NgayM – ngày mƣợn, NgayHT – ngày hẹn
trả, NgayTr – ngày trả. Cả ba thuộc tính này mới làm thành khóa của thực thể thời
gian.
DonGia – Giá tiền thuê mỗi cuốn truyện, một ngày chỉ có một thuộc tính
DonGia(khóa).
Ở đây, Ta có thể chỉ ra mối liên hệ Thuetruyen(Docgia, Truyen, Thoigian)
với ý nghĩa “ngƣời nào thuê cuốn truyện nào, vào thời gian nào” và một mối liên
hệ khác GiaThue(Truyen, DonGia) với ý nghĩa “cuốn truyện này có đơn giá thuê là
bao nhiêu”. Trong trƣờng hợp này, cùng một cuốn truyện giá thuê các lần khác nhau
phải là giống nhau.Mối liên hệ này thuộc loại nhiều – một từ Truyen đến Dongia.
Ta có sơ đồ thực thể liên hệ
Phạm Hùng Phú 17
NgayM Bài tập cơ sở dữ liệu NgayHT
Gt Hoten NgayTr Thuetruyen Thoigian
Vitri Madg Docgia
TenTr Truyen GiaThue
Diachi sdt TacGia DonGia NXB MaTr
Hình 1.6. Sơ đồ thực thể liên hệ của CSDL quản lý thuê truyện
1.7. Hãy sử dụng mô hình thực thể - liên hệ để mô tả dữ liệu cho hệ thống quản lý
tín dụng của một quỹ tín dụng, sau đó vẽ sơ đồ thực thể - liên hệ cho cơ sở dữ
liệu.
Hƣớng dẫn
Cơ sở dữ liệu nhằm phục vụ cho việc trả lời câu hỏi chính “Khách hàng nào có
khế ƣớc vay nào”.
1.8. Hãy sử dụng mô hình thực thể - liên hệ để mô tả dữ liệu cho hệ thống quản lý
lƣơng của phòng tài vụ của một trƣờng đại học, sau đó vẽ sơ đồ thực thể - liên
hệ cho cơ sở dữ liệu.
Giải tóm tắt:
Cơ sở dữ liệu nhằm phục vụ cho việc trả lời câu hỏi chính “ngƣời nào ở đơn
vị nào, hàng tháng đƣợc lĩnh tiền lƣơng là bao nhiêu”. Nên trong cơ sở dữ liệu có
các tập thực thể:
+ Nhanvien – nhân viên gồm các thuộc tính: MaNv (khóa), Hoten, Gt,
Diachi
+ Donvi – đơn vị công tác gồm các thuộc tính: Madv (khóa), TenDv, Vitri
+ Chucvu – chức vụ gồm các thuộc tính: MaCv (khóa), Chvu, HsPc – hệ số
phụ cấp chức vụ
+ HsL – hệ số lƣơng chỉ gồm có một thuộc tính Hsl (khóa)
18 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
+ NgayLL – ngày, tháng, năm lên lƣơng hoặc vƣợt khung lần cuối chỉ gồm
có một thuộc tính NgayLL (khóa)
+ XLthidua – xếp loại thi đua chỉ gồm có một thuộc tính XLthidua (khóa)
+ Tháng chỉ có một thuộc tính: thang(khóa)
Ta có thể chỉ ra các mối liên hệ
+ Lamviec(Nhanvien, Donvi) với ý nghĩa “ngƣời nào làm việc ở đơn vị nào”
là một mối liên hệ nhiều - một từ Nhanvien đến Donvi.
+ Quanly(Nhanvien, Chucvu) với ý nghĩa “nhân viên nào giữ chức vụ quản
lý cao nhất là gì” là một mối liên hệ nhiều - một từ Nhanvien đến Chucvu.
+ Luong(Nhanvien, HsL, NgayLL) với ý nghĩa “ngƣời nào hiện có hệ số
lƣơng bằng bao nhiêu và ngày lên lƣơng lần cuối là ngày nào” là một mối liên hệ
nhiều - một từ cặp HsL, Nhanvien đến NgayLL.
+ Thidua(Nhanvien, thang, XLthidua) với ý nghĩa “ngƣời nào trong tháng
nào đƣợc xếp loại thi đua nào” là một mối liên hệ nhiều - một từ cặp Nhanvien,
thang đến XLthidua.
Ta có sơ đồ thực thể liên hệ
HsL NgayLL
TenDv Madv
Luong Gt
Vitri Donvi Lamviec Hoten
Nhanvien Quanly MaNv
Chvu Thidua Chucvu Diachi
HsPc XLthidua MaCv thang
Hình 1.7 Sơ đồ thực thể liên hệ của CSDL quản lý lương
Phạm Hùng Phú 19
Bài tập cơ sở dữ liệu 1.9. Hãy sử dụng mô hình thực thể - liên hệ để mô tả dữ liệu cho hệ thống quản lý
mua bán xe máy của một cửa hàng kinh doanh xe máy, sau đó vẽ sơ đồ thực thể -
liên hệ cho cơ sở dữ liệu.
Hƣớng dẫn:
Tƣơng tự nhƣ ví dụ quản lý kinh doanh vật tƣ xây dựng của một cửa hàng.
1.10. Hãy sử dụng mô hình thực thể - liên hệ để mô tả dữ liệu cho hệ thống quản lý
ký túc xá của một trƣờng đại học, sau đó vẽ sơ đồ thực thể - liên hệ cho cơ sở dữ
liệu.
Hƣớng dẫn:
Cơ sở dữ liệu nhằm phục vụ cho việc trả lời câu hỏi chính “ sinh viên nào ở
phòng nào, phòng có bao nhiêu chỗ ở, hiện tại đã sử dụng bao nhiêu chỗ, ai là
trƣởng phòng, lƣợng điện, nƣớc tiêu thụ hàng tháng là bao nhiêu, số tiền phải trả
hàng tháng của mỗi phòng?”.
20 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Chương 2
MÔ HÌNH CƠ SỞ DỮ LIỆU QUAN HỆ
A. TÓM TẮT LÝ THUYẾT
2.1. Các khái niệm cơ bản
2.1.1. Mô hình cơ sở dữ liệu ( Relation model)
Là mô hình cho phép sử dụng các tên để mô tả dữ liệu - các bảng dữ liệu và
tập các phép toán của tập hợp và ánh xạ để thao tác với dữ liệu.
2.1.2. Các khái niệm quan hệ
- Quan hệ (Relation) là một tập con của tích Đề - Các của một hoặc nhiều miền.
- Quan hệ là tập các ánh xạ từ tên các thuộc tính đến các giá trị trong miền
của thuộc tính.
Nhƣ vậy, có thể hình dung quan hệ là một bảng dữ liệu nó bao gồm các dòng
và các cột. Trong đó: mỗi bảng, mỗi cột đƣợc đặt bởi một tên; mỗi cột lấy giá trị
trên một miền; mỗi dòng là một bộ các giá trị và mỗi giá trị thuộc về một cột.
Nhƣng quan hệ khác với bảng dữ liệu thông thƣờng là trong quan hệ không cho
phép hai dòng trùng nhau.
2.2. Biến đổi sơ đồ thực thể - liên hệ sang mô hình quan hệ
- Tập các lƣợc đồ quan hệ dùng để biểu diễn thông tin gọi là lƣợc đồ cơ sở dữ
liệu quan hệ (Relational Database sheme) và cùng với những giá trị hiện hành của
các quan hệ tƣơng ứng tạo ra cơ sở dữ liệu quan hệ.
- Khi thiết kế có thể tự do tạo ra các quan hệ với tập thuộc tính nào đó nhƣ một
lƣợc đồ quan hệ. Tuy nhiên có một khuôn mẫu điển hình bằng cách chuyển đổi các
sơ đồ thực thể - liên hệ sang các lƣợc đồ cơ sở dữ liệu quan hệ. Dữ liệu của sơ đồ
thực thể - liên hệ đƣợc biểu diễn bởi hai loại quan hệ: quan hệ biểu diễn cho tập
thực thể và quan hệ biểu diễn cho mối liên hệ.
Phạm Hùng Phú 21
Bài tập cơ sở dữ liệu
2.2.1. Biến đổi các tập thực thể
Một tập thực thể E có thể đƣợc biểu diễn bởi một quan hệ có cùng tên là E
mà lƣợc đồ quan hệ của nó chứa tất cả các thuộc tính của tập thực thể đó. Mỗi bộ
của quan hệ biểu diễn một thực thể trong thể hiện hiện hành của E.
2.2.2. Biến đổi mối liên hệ
- Mối liên hệ R giữa các tập thực thể E1, E2,..., Ek đƣợc biểu diễn bởi một quan
hệ có tên là R và có lƣợc đồ quan hệ chứa các thuộc tính trong các khoá của mỗi tập
E1, E2,..., Ek. Có thể đặt lại tên cho các thuộc tính (nếu cần) để tránh trùng tên ngay
cả khi hai thực thể này chỉ là một. Một bộ t trong quan hệ này biểu diễn cho một
danh sách các thực thể e1, e2, ..., ek trong đó ei là một thực thể của tập thực thể Ei.
Nghĩa là ei là một thực thể duy nhất của tập thực thể Ei mà giá trị của thuộc tính
khoá của Ei có trong thành phần của bộ t ở những thuộc tính này. Sự có mặt của bộ t
trong quan hệ chỉ ra rằng danh sách các thực thể (e1, e2, ..., ek) là phần tử hiện hành
của mối liên hệ R.
2.3. Khoá của các quan hệ
- Cho quan hệ R(A1, A2,...,An); K { A1, A2, ..., An }. K là khoá của R
khi và chỉ khi K thoả mãn các tính chất sau đây:
1) Với bất kỳ 2 bộ t1, t2 R đều tồn tại một thuộc tính AK sao cho
t1[A] t2[A].
t1[K] t2[K].
2) Không có tập con thực sự nào của K có tính chất 1.
Do vậy mỗi giá trị của khoá K là duy nhất.
- Nếu K chỉ có tính chất 1 Thì K đƣợc gọi là khoá bao hàm – siêu khoá (Super key).
- Khoá phụ thuộc vào lƣợc đồ quan hệ; không phụ thuộc vào thể hiện của
quan hệ.
- Một quan hệ có thể có nhiều khoá.
- Khoá đƣợc thực hiện bởi ngƣời thiết kế cơ sở dữ liệu sau khi đã xem xét và
cân nhắc kỹ lƣỡng các dữ liệu và những ràng buộc mà dữ liệu phải tuân theo.
22 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
- Khi một quan hệ có nhiều khoá, ta nên chọn một khoá xem nhƣ là một khoá
duy nhất, khoá đó gọi là khoá chính (Primary key). Tập các khoá có trong quan hệ
gọi là các khoá dự kiến (dự tuyển - Candidate key).
- Nếu các khoá đƣợc chọn cho các tập thực thể là khoá nhỏ nhất (nghĩa là
không có tập con nào của nó có thể làm khoá) thì ta có thể xác định khoá của quan
hệ theo các quy tắc sau:
+ Nếu một quan hệ xuất phát từ một tập thực thể thì khoá của tập thực thể sẽ
là khoá của quan hệ.
+ Nếu một quan hệ xuất phát từ một mối liên hệ nhiều – nhiều thì khoá của
quan hệ thƣờng là tập tất cả các thuộc tính của quan hệ.
+ Nếu một quan hệ xuất phát từ mối liên hệ một - một giữa các tập thực thể
E và F thì cả khoá của E và khoá của F đều là khoá của quan hệ.
+ Nếu một quan hệ xuất phát từ mối liên hệ loại nhiều - một giữa E1, E2, ...,
Ek-1 đến Ek thì hợp các khoá của E1, E2, . .., Ek-1 sẽ là khoá của quan hệ.
2.4. Quan hệ có khoá chung
Khi hai quan hệ có chung một khoá dự tuyển (dự kiến) ta có thể gộp hai lƣợc
đồ quan hệ này thành một lƣợc đồ quan hệ có các thuộc tính là khóa chung của hai
lƣợc đồ quan hệ và các thuộc tính còn lại là các thuộc tính khác khóa chung ở cả hai
lƣợc đồ.
Ví dụ:
Chuyển sơ đồ thực thể liên hệ của cơ sở dữ liệu mua bán vật tƣ (hình 1.1) sang
lƣợc đồ cơ sở dữ liệu quan hệ.
- Các lƣợc đồ quan hệ biểu diễn cho các tập thực thể:
+ KHHANG(MaKH, TenKH, GT, DCKH)
+ MATH(MaMH, TenMH, DVT)
+ NCC(MaNCC, TenNCC, DCNCC)
+ HDNH(SHDHN, MaNCC, NGYN)
+ HDBH(SHDHB, NGYB)
- Các lƣợc đồ quan hệ biểu diễn cho các mối liên hệ:
+ CTHDNH(SHHDN, MaNCC, MaMH, SLN, DGN, MaNCC)
Phạm Hùng Phú 23
Bài tập cơ sở dữ liệu + CTHDNH(SHHDB, MaMH, SLB, DGB, MaKH)
Chuyến sơ đồ thực thể liên hệ của cơ sở dữ liệu mua bán vật tƣ (hình 1b) sang
lƣợc đồ cơ sở dữ liệu quan hệ hoàn toàn tƣơng tự.
2.5. Một số phép toán đại số quan hệ
Hai quan hệ R và S gọi là khả hợp nếu chúng cùng ngôi và sau khi biến đổi
(bằng cách đặt lại tên các thuộc tính; đặt một thứ tự cố định cho các thuộc tính trƣớc
khi thực hiện các phép toán) thì chúng có cùng lƣợc đồ.
2.5.1. Phép hợp
Hợp của hai quan hệ R và S khả hợp là một quan hệ, ký hiệu là RS bao
gồm tất cả các bộ t sao cho t thuộc R hoặc t thuộc S.
Biểu diễn hình thức:
R S = { t / t R hoặc t S }.
2.5.2. Phép giao
Giao của hai quan hệ R và S khả hợp là một quan hệ, ký hiệu là R S bao
gồm tất cả các bộ t sao cho t thuộc R và t thuộc S.
Biểu diễn hình thức:
R S = t / tR và t S.
2.5.3. Phép trừ
Hiệu của hai quan hệ R và S khả hợp là một quan hệ ký hiệu là R- S bao gồm
tất cả các bộ t sao cho t thuộc R nhƣng t không thuộc S.
Biểu diễn hình thức:
R - S = t / tR và t S.
2.5.4. Phép tích Đề - Các
R là quan hệ n ngôi và S là quan hệ m ngôi. Tích Đề - Các của hai quan hệ R
và S ký hiệu là RS là một quan hệ (n+m) ngôi gồm tất cả các bộ của R ghép với
các bộ của S.
Biểu diễn hình thức có dạng
24 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
RS = {t / t có dạng ( a1, a2,..., an, b1, b2,..., bm ), trong đó ( a1, ..., an) R và
(b1, ..., bm ) S}.
2.5.5. Phép chiếu ( Projection )
Cho quan hệ R(A1, A2, ..., An), X { A1, A2, ..., An }. Phép chiếu quan hệ R
trên tập thuộc tính X là một quan hệ trên tập thuộc tính X, ký hiệu là
X (R) gồm các bộ t của R chỉ giữ lại các thành phần thuộc X.
Biểu diễn hình thức là:
X (R) = t[X] t R.
2.5.6. Phép chọn ( Selection )
Cho quan hệ R(A1, A2, ..., An), F(t) là giá trị của biểu thức logic F đối với bộ
t. Phép chọn quan hệ R với đối với điều kiện F là một quan hệ ký hiệu là F(R) bao
gồm tất cả các bộ của R thoả mãn điều kiện F.
Biểu diễn hình thức là:
F(R) = t R F (t) = đúng .
2.5.7. Phép kết nối (Join)
Gọi là một trong các phép so sánh { =, >, >=, <, <=, <>}.
Phép kết nối của quan hệ R đối với thuộc tính A và quan hệ S đối với thuộc
tính B là một quan hệ đƣợc ký hiệu là R S gồm những bộ t của tích Đề - các A B R S sao cho t[A] t[B] .
Biểu diễn hình thức là:
A B
R S = { t t R S và t[A] t[B] } = A B (RS)
Trƣờng hợp đặc biệt:
- Nếu là phép toán = thì ta có phép kết nối bằng;
- Nếu phép kết nối bằng trên hai thuộc tính cùng tên và kết quả kết nối ta bỏ
đi một thuộc tính cùng tên đó thì ta có phép kết nối tự nhiên và ký hiệu là * .
2.6. Đại số quan hệ - một ngôn ngữ vấn tin.
Các phép toán đại số quan hệ có thể dùng để tìm kiếm thông tin trên các quan
hệ.
Phạm Hùng Phú 25
Bài tập cơ sở dữ liệu Ví dụ:
Cho ba quan hệ:
S (SNO, SNAME, SEX, STATUS, CITY ): Các nhà cung cấp;
P ( PNO, PNAME, COLOR, WEIGHT) : Các mặt hàng;
SP ( SNO, PNO, QTY, SDATE , PRICE ): Các mặt hàng đã cung cấp.
Trong đó: SNO - Số hiệu nhà cung cấp; SNAME -Tên nhà cung cấp; SEX - Giới
tính; STATUS - Tình trạng; CITY- Địa chỉ nhà cung cấp; PNO - Số hiệu mặt
hàng; PNAME - Tên mặt hàng; COLOR- Màu sắc; WEIGHT - Trọng lƣợng;
PRICE -Đơn giá mặt hàng; QTY- Số lƣợng; SDATE - Ngày nhập hàng.
1- Tìm số hiệu của những nhà cung cấp đã cung cấp mặt hàng có số hiệu mặt
hàng là P2.
SNO(PNO=‟P2(SP))
2 - Tìm số hiệu của những nhà cung cấp đã cung cấp mặt hàng có số hiệu
mặt hàng là P1 hoặc P2.
SNO((PNO=‟P1) ( PNO=‟P2)(SP))
Hoặc SNO(PNO=‟P1(SP)) SNO(PNO=‟P2(SP))
3 - Tìm số hiệu của những nhà cung cấp đã cung cấp hai mặt hàng có số hiệu
mặt hàng là P1 và P2.
SNO(PNO=‟P1(SP)) SNO(PNO=‟P2(SP))
4 - Tìm số hiệu các nhà cung cấp không cung ứng mặt hàng nào.
SNO(S)) - SNO(SP)
5 - Tìm số hiệu các nhà cung cấp không cung cấp mặt hàng có số hiệu là P1.
SNO(S)) - SNO(PNO=‟P1(SP))
6 - Tìm số hiệu của những nhà cung cấp đã cung cấp ít nhất là một mặt hàng
màu đỏ.
SNO( COLOR= RED(P*SP))
7 - Tìm số hiệu của những nhà cung cấp đã cung cấp mặt hàng màu đỏ,
nhƣng không cung cấp mặt hàng màu xanh.
SNO( COLOR= RED(P*SP)) - SNO( COLOR= BLUE(P*SP))
8 - Cho biết tên các nhà cung cấp đã cung cấp mặt hàng có số hiệu mặt hàng
là P1 nhƣng họ không có địa chỉ ở NAM DINH.
26 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
SNANE( PNO= P1 (S* SP)) - SNANE ( ADD= NAM DINH PNO= P1 (S* SP).
9 - Tìm số hiệu, tên của những nhà cung cấp đã cung cấp các mặt hàng màu đỏ.
SNO, SNAME( COLOR= RED(P*SP*S))
10 - Tìm số hiệu, tên của những nhà cung cấp đã cung cấp các mặt hàng màu
đỏ và màu xanh.
SNO, SNAME( COLOR= RED(P*SP*S)) SNO, SNAME( COLOR= Blue(P*SP*S))
11 - Đƣa ra số hiệu nhà cung cấp, tên nhà cung cấp, số hiệu mặt hàng, tên
mặt hàng, màu mặt hàng, số lƣợng, đơn giá mà các nhà cung cấp đã cung cấp một
mặt hàng trong mỗi lần có màu đỏ hoặc xanh.
SNO, SNAME, PNO, PNAME, COLOR, QTY, PRICE( (COLOR= RED) (COLOR= Blue)(P*SP*S))
2.7. Tối ưu hoá các biểu thức đại số quan hệ
2.7.1. Các chiến lược tối ưu tổng quát
1) Thực hiện phép chọn và phép chiếu sớm như có thể
2) Tổ hợp những phép chọn xác định với phép tích Đề - Các thành phép
3) Tổ hợp dãy các phép toán một ngôi (phép chọn và phép chiếu)
Một dãy các phép toán một ngôi (phép chọn hoặc phép chiếu) mà kết quả của
chúng chỉ phụ thuộc vào các bộ của một quan hệ độc lập thì có thể nhóm các phép
toán đó lại.
4) Tìm các biểu thức con chung trong một biểu thức
Biểu thức con chung là biểu thức xuất hiện nhiều hơn một lần trong một
biểu thức đại số quan hệ.
5) Xử lý các tệp trước khi thực hiện các phép toán
6) Ước lượng chi phí và lựa chọn thứ tự thực hiện các phép toán
2.7.2. Biểu thức tương đương
Hai biểu thức đại số quan hệ E1 và E2 đƣợc gọi là tƣơng đƣơng (equivalent),
viết tắt là E1 E2 nếu thay thế cùng một quan hệ cho tên các lƣợc đồ tƣơng ứng ở
hai biểu thức cho ra cùng một kết quả.
Phạm Hùng Phú 27
Bài tập cơ sở dữ liệu
2.7.3. Các phép biến đổi tương đương của đại số quan hệ
1) Các phép biến đổi tương đương
1- Hai phép chọn kề nhau
-
-
2 - Hai phép chiếu kề nhau
(R) với X1 X2
3 - Phép chiếu kề với phép chọn
; nếu Attr(F) X -
-
4 - Phép hợp kề với phép chọn
5 - Phép kết nối kề với phép chọn
- ; nếu Attr(F) Attr(R)
- ;
nếu Attr(F1) Attr(R) và Attr(F2) Attr(S))
- ; nếu F = F1 F2 và
Attr(F1) Attr(R) và Attr(F2) Attr(R) Attr(S))
6 - Phép tích Đề- Các kề với phép chọn
; nếu Attr(F) Attr(R) -
; -
nếu Attr(F1) Attr(R) và Attr(F2) Attr(S)
) ; nếu F = F1 F2 và -
Attr(F1) Attr(R) và Attr(F2) Attr(R) Attr(S)
7 - Phép giao kề với phép chọn
-
; -
nếu Attr(F1) Attr(R) và Attr(F2) Attr(S)
28 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
8 - Phép trừ kề với phép chọn
9 - Phép trừ kề với phép chiếu
10 - Phép hợp kề với phép chiếu
11 - Phép kết nối kề với phép chiếu
- ; nếu Attr(FR) X (Attr(FR) là các
thuộc tính trong R của phép kết nối và X Attr(R)
- ;
nếu Attr(F) X1 X2 và X1 Attr(R) và X2 Attr(S) (Attr(F) là các
thuộc tính trong R và S của phép kết nối).
12 - Phép tích Đề- Các kề với phép chiếu
;
nếu X1 Attr(R) và X2 Attr(S)
13 - Các phép hợp, giao, tích Đề- Các và kết nối
- (R S) T (R T) S
- (R S) T (R T) S
- (R S) T (R T) S
- ;
nếu Attr(F2) Attr(R) Attr(T) và Attr(F1) Attr(R) Attr(S)
14 - Phép kết nối đi sau phép hợp
15 - Phép giao đi sau phép hợp
16 - Phép hiệu đi sau phép hợp
17 - Phép hiệu đi trƣớc phép hợp
Phạm Hùng Phú 29
Bài tập cơ sở dữ liệu 2) Cây toán tử của biểu thức đại số quan hệ
Cây toán tử (operator tree) là dạng biểu diễn trực quan cho các biểu thức đại
số quan hệ; giúp dễ dàng theo dõi các phép biến đổi trên các biểu thức đó.
Trong cây toán tử:
- Các nút lá biểu diễn cho các quan hệ;
- Mỗi nút trung gian (nút trong) biểu diễn cho một phép toán (một ngôi
hoặc hai ngôi);
- Nút gốc biểu diễn cho phép toán phải thực hiện cuối cùng.
Một cây đi từ ngọn đến gốc xác định thứ tự bộ phận mà trong đó các phép toán
phải đƣợc thực hiện để cho ra kết quả truy vấn.
PNAME
CITY=„Nam Định‟ QTY >25
*
P *
SP S Ví dụ: Cây toán tử biểu diễn cho truy vấn có biểu thức đại số quan hệ tƣơng ứng là PNAME(CITY=„Nam Định‟ QTY >25 (S*SP*P)).
Hình 2.1. Cây toán tử biểu diễn biểu thức đái số quan hệ
3) Phương pháp tối ưu hóa các biểu thức đại số quan hệ
Để tối ƣu hóa các biểu thức đại số quan hệ bằng cách áp dụng các phép biến
đổi tƣơng đƣơng; ta có các chiến thuật tối ƣu hóa sau:
1- Sử dụng tính lũy đẳng của phép chọn và phép chiếu để tạo ra các phép
chọn và phép chiếu tƣơng đƣơng đối với mỗi quan hệ toán hạng.
2- Sử dụng các phép biến đổi tƣơng đƣơng và đẩy các phép chọn và phép
chiếu xuống phía dƣới cây nếu có thể đƣợc.
30 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Các chiến thuật trên đƣợc xuất phát từ việc khảo sát các phép toán hai ngôi và
đặc biệt là các phép kết nối và phép tích Đề- Các là các phép toán tốn kém thời gian
nhất trong các hệ cơ sở dữ liệu; do đó cần phải giảm kích thƣớc của các toán hạng
(ở đây là các quan hệ) của các phép toán hai ngôi trƣớc khi thực hiện chúng.
Cần chú ý khi một phép chiếu di chuyển xuống dƣới qua một phép kết nối thì
các thuộc tính trong điều kiện kết nối phải có trong các thuộc tính chiếu của phép
chiếu này.
Ví dụ:
Áp dụng các chiến thuật tối ƣu hoá cho biểu thức đại số quan hệ trên
PNAME
CITY=„Nam Định‟ QTY >25
*
P *
S SP
PNAME
*
CITY=„Nam Định‟ QTY >25 P
*
S SP
Phạm Hùng Phú 31
Bài tập cơ sở dữ liệu
PNAME
PNAME, PNO, SNO *
* P
CITY=„Nam Định‟ QTY >25
SP S
PNAME
*
PNO, SNO PNAME, PNO
P *
CITY=„Nam Định‟ QTY >25
SP S
PNAME
*
* PNAME, PNO
SNO PNO, SNO P
CITY=„Nam Định‟ QTY >25
SP S Hình 2.2. Quá trình biến đổi cây toán tử để tối ưu hóa biểu thức đại số quan hệ
32 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
4) Cây toán tử và xác định biểu thức con chung
Một vấn đề quan trọng trong việc áp dụng các phép biến đổi tƣơng đƣơng
cho một biểu thức đại số quan hệ là tìm ra các biểu thức con chung của nó, nghĩa là
các biểu thức xuất hiện nhiều lần trong các truy vấn. Rõ ràng là sẽ tiết kiệm thời
gian thực hiện của truy vấn nếu các biểu thức con chung chỉ đƣợc thực hiện một lần.
Một phƣơng pháp để nhận biết ra chúng là việc biến đổi cây toán tử bằng cách:
trƣớc tiên gộp các nút lá giống nhau của cây (nghĩa là các quan hệ toán hạng giống
nhau); sau đó gộp các nút nhánh khác của cây tƣơng ứng với cùng các phép toán và
có cùng các toán hạng.
Ví dụ:
Với biểu thức đại số quan hệ
SNAME( PRICE > 10 QTY > 25(S*SP) - SNAME( PRICE <10 QTY > 25(S*SP).
Áp dụng các phép biến đổi tƣơng đƣơng và tìm biểu thức con chung
_
SNAME SNAME
PRICE > 10 QTY > 25 PRICE < 10 QTY > 25
* *
S S SP SP
Phạm Hùng Phú 33
_
Bài tập cơ sở dữ liệu
SNAME SNAME
PRICE < 10 PRICE > 10
QTY > 25 QTY > 25
* *
S S SP SP
_
SNAME SNAME
PRICE > 10 PRICE < 10
QTY > 25
*
S SP
_
SNAME SNAME
PRICE > 10 PRICE< 10
*
QTY > 25 S
SP
34 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
_
SNAME SNAME
SNO, SNAME, PRICE SNO, SNAME, PRICE
PRICE > 10 PRICE < 10
*
QTY > 25 S
SP
_
SNAME SNAME
PRICE > 10 PRICE < 10
SNO, SNAME, PRICE SNO, SNAME, PRICE
*
QTY > 25 S
SP
Phạm Hùng Phú 35
_ Bài tập cơ sở dữ liệu
SNAME SNAME
PRICE > 10 PRICE < 10
SNO, SNAME, PRICE
*
QTY > 25 S
SP
_
SNAME SNAME
PRICE > 10 PRICE < 10
*
SNO, SNAME SNO, PRICE
QTY > 25 S
SP
Hình 2.3. Quá trình biến đổi cây toán tử để tối ưu hóa
biểu thức đại số quan hệvà tìm biểu thức con chung
36 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
B. BÀI TẬP
2.1. Chuyển các sơ đồ thực thể - liên hệ ở các bài tập 1.1 đến 1.10 sang lƣợc đồ cơ sở dữ liệu quan hệ
1) Từ sơ đồ hình 1.1, ta có lƣợc đồ cơ sở dữ liệu quan hệ:
- SV(Masv, Hoten, Ns, Gt, Qq) (1)
- Monhoc(MaMh, tenmon , SHT) (2)
- Sv_Mh_Diem(MaSV, MaMh, Diem) (3)
- Mh_Ky(MaMh, hocky) (4)
Gộp (2) và (4) vì có chung khoá MaMh ta có lƣợc đồ quan hệ (2a):
- Monhoc(MaMh, tenmon , SHT, Hocky) (2a)
2) Từ sơ đồ hình1.2, ta có lƣợc đồ cơ sở dữ liệu quan hệ:
- SV(Masv, Hoten)
- Soquy(Masv, KhoanTC, ThuChi, Ngay, Sotien )
3) Từ sơ đồ hình 1.3, ta có lƣợc đồ cơ sở dữ liệu quan hệ:
- Nvp(Scmtvp, Hotenvp, Gt vp, tuoivp, Diachivp)
- ChuPT(Scmt, Hoten, Gt, tuoi, Diachi)
- PT (Sbdk, Loai, Mac, nuoc)
- NgXL(MaNXL, hoten, Capbac, Chucvu)
- SoHuu(Scmtvp, Scmt)
- ViPham(Scmt, Sbdk, LoiVp, Diadiem, ThoiGian, Sotien, MaNXL)
4) Từ sơ đồ hình 1.4, ta có lƣợc đồ cơ sở dữ liệu quan hệ:
- Chuho(MaCh, Hoten, Gt, Diachi) (1)
- Congto(ShCT, nuocSX, Vitri, Chisodau) (2)
- Hopdong(SHD, NgKyHD, NgayHd) (3)
- CH_HD(MaCH, SHD) có hai khoá MaCh và SHD (4)
- HD_CT(SHD, ShCT) có hai khoá SHD và ShCT (5)
- Sudungdien(ShCT, ThangSd, ChisoCT) (6)
- GhiCT(ShCT, ThangSd, NgayGhi) (7)
Gộp (1), (4), (3), (5) và (2) vì có chung khoá; ta có lƣợc đồ quan hệ (4a):
Phạm Hùng Phú 37
Bài tập cơ sở dữ liệu Hopdong(SHD, NgKyHD, NgayHd, MaCh, Hoten, Gt, Diachi, ShCT,
nuocSX, Vitri, Chisodau) – có 3 khoá. Ta có thể chọn SHD là khoá chính.
Gộp (6) và (7) ta có lƣợc đồ quan hệ (6a):
Sudungdien(ShCT, ThangSd, ChisoCT, Ngayghi)
5) Hoàn toàn tƣơng tự nhƣ 4)
6) Từ sơ đồ hình 1.6, ta có lƣợc đồ cơ sở dữ liệu quan hệ:
- Docgia(Madg, Hoten, Gt, Diachi, sdt) (1)
- Truyen(MaTr, TenTr, TacGia, NXB, Vitri ) (2)
- Thoigian(NgayM, NgayHT, NgayTr) (3)
- Thuetruyen(Madg, MaTr, NgayM, NgayHT, NgayTr) (4)
- GiaThue(MaTr, DonGia) (5)
Gộp (2) và (5) ; ta có Lƣợc đồ quan hệ (2a) :
Truyen(MaTr, TenTr, TacGia, NXB, Vitri, DonGia) (2)
7) Tƣơng tự nhƣ ví dụ trong phần tóm tắt lý thuyết
8) Từ sơ đồ hình 1.8, ta có lƣợc đồ cơ sở dữ liệu quan hệ:
- Nhanvien(MaNv, Hoten, Gt, Diachi) (1)
- Donvi(Madv, TenDv, Vitri) (2)
- Chucvu(MaCv, Chvu, HsPc ) (3)
- Lamviec(MaNv, Madv) (4)
- Quanly(MaNv, MaCv) (5)
- Luong(MaNv, HsL, NgayLL) (6)
- Thidua(MaNv, Thang, XLthidua) (7)
Gộp (1), (4) và (5); ta có lƣợc đồ quan hệ (1a):
Nhanvien(MaNv, Hoten, Gt, Diachi, Madv, MaCv) (1a).
9) Tự giải
10) Tự giải
38 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
2.2. Thực hiện các phép toán và các biểu thức đại số quan hệ
1) Cho hai quan hệ R và S:
R A B C D S A E F G
0 0 0 1 1 1 1 1
1 0 0 1 2 2 1 1
1 1 0 1 1 1 1 0
1 1 1 1
a) Tính: ; ; ; .
Giải:
A B C D A B C D
0 0 0 1 1 1 1 0
1 0 0 1 1 1 1 1
1 1 0 1
1 1 1 1
2 1 1 2
A B C D A B C D
2 1 1 2 1 0 0 0
1 0 0 1
b)Giả sử X ={A, B};Y={A, C, D}.Tính: , , , .
A B A C D
1 0 0 1 0
1 1 0 1 1
1 1 1
A B A C D
1 0 0 1 1
1 1 1 1 1
2 2
Phạm Hùng Phú 39
Bài tập cơ sở dữ liệu
c) Tính: ;
A B C D A B C D
1 0 0 0 1 0 0 0
1 0 0 1 1 1 0 0
1 0 1 1 1 1 1 0
1 1 1 1
d) Tính:
-
Ta có
R*S A B C D E F G ABD(R*S) A B D
0 0 1 1 1 1 0 1 0 0
0 0 0 1 1 1 0 1 1 0
0 0 1 1 1 1 1 1 1 1
0 0 0 1 1 1 1
0 1 1 1 1 1 1
0 1 0 1 1 1 1
1 1 1 1 1 1 1
1 1 0 1 1 1 1
A B D
0 1 0
0 1 1
1 1 1
40 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
-
+ R*S đã tính ở trên
A B D + (A=1)(D=0)(R*S) A B C D E F G
1 0 0 0 1 1 1 1 0 0
1 0 0 0 1 1 0 1 1 0
1 1 0 0 1 1 1 1 1 1
1 1 0 0 1 1 0
1 1 1 0 1 1 1
1 1 1 0 1 1 0
1 1 1 1 1 1 1
1 1 1 1 1 1 0
Theo kết quả trên ta có:
=
2) Cho 3 quan hệ
R A B C D S A B C D U A E F G
a1 b1 c1 d1 a1 b1 c3 d1 a1 e2 f1 g1
a2 b1 c1 d1 a2 b1 c1 d1 a2 e1 f1 g1
a2 b2 c2 d2 a1 b1 c1 d1 a1 e2 f2 g2
a2 b2 c3 d2 a4 e2 f2 g2
a) Tìm: ; ; .
A B C D
A B C D c1 d1 a1 b1 a1 b1 c1 d1 A B C D c2 d2 a2 b2
a2 b1 c1 d1 a2 b1 c1 d1 a2 b2 c3 d2
a2 b2 c2 d2
a2 b2 c3 d2
a1 b1 c3 d1
Phạm Hùng Phú 41
Bài tập cơ sở dữ liệu b) Tìm: R U; R * U; ; ; .
R U A B C D UA E F G R * U A B C D E F G f1 g1 f1 g1 a1 b1 c1 d1 e2 a1 b1 c1 d1 e2 a1
a1 b1 c1 d1 a2 e1 f1 g1 a1 b1 c1 d1 e2 f2 g2
a1 b1 c1 d1 a1 e2 f2 g2 a2 b1 c1 d1 e1 f1 g1
a1 b1 c1 d1 a4 e2 f2 g2 a2 b2 c2 d2 e1 f1 g1
a2 b1 c1 d1 a1 e2 f1 g1 a2 b2 c3 d2 e1 f1 g1
a2 b1 c1 d1 a2 e1 f1 g1
A B a2 b1 c1 d1 e2 f2 g2 a1
a2 b1 c1 d1 a4 e2 f2 g2 a1 b1
a2 b2 c2 d2 a1 e2 f1 g1 a2 b1
a2 b2 c2 d2 a2 e1 f1 g1 a2 b2
a2 b2 c2 d2 a1 e2 f2 g2
a2 b2 c2 d2 a4 e2 f2 g2
A E F G a1 a2 b2 c3 d2 e2 f1 g1
a2 b2 c3 d2 a2 e1 f1 g1 a1 e2 f1 g1
a2 b2 c3 d2 a1 e2 f2 g2 a1 e2 f2 g2
a2 b2 c3 d2 a4 e2 f2 g2 a4 e2 f2 g2
c)
- R*U( đã tính ở trên)
A B - - (A=a1)(E=e2)(R*U) A B C D E F G
a1 b1 c1 d1 e2 f1 g1 a1 b1
a1 b1 c1 d1 e2 f2 g2
42 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
d)
Sai, không tính đƣợc( vì phép chiếu làm mất thông tin của phép chọn).
Nhƣ vậy, chỉ đƣợc đẩy phép chiếu lên thực hiện trƣớc phép chọn nếu tập thuộc tính
trong điều kiện của phép chọn là tập con của tập thuộc tính của phép chiếu.
Tức là XF(R) = FX(R) nếu attr(F) X
3) Cho 2 quan hệ R và S:
S D E F 1 1 0 1 0 1
R A B C D E 0 0 0 0 1 0 0 1 1 0 1 1 1 1 1 0 0 0 1 1
Tính: R S; R * S.
Giải:
R S A B C D E SD SE F
0 0 0 0 1 1 1 0
0 0 0 0 1 1 0 1 R * S A B C D E F 0 0 1 1 0 1 1 1 1 1 1 0 0 0 0 1 1 0
0 0 1 1 0 1 1 0
0 0 1 1 0 1 0 1
1 1 1 1 1 1 1 0
1 1 1 1 1 1 0 1
0 0 0 1 1 1 1 0
0 0 0 1 1 1 0 1
Trong phép kết nối tự nhiên ở trên, có tập hai thuộc tính {D, E} cùng tên,
nên phép kết nối này đƣợc thực hiện
bằng việc:
- Tính R S;
- Chọn ra các bộ t sao cho chúng bằng nhau trên tập {D, E}, tức là t[R.D] =
t[S.D] và t[R.E] = t[S.E]
- Bỏ đi các cột D, E trong S
Phạm Hùng Phú 43
Bài tập cơ sở dữ liệu
4) Cho 2 quan hệ R, S và X = {A, B}.
R A B C D S A E
1 0 0 0 1 1
1 0 1 1 1 0
1 1 1 1
0 0 0 1
; Tính: a)
; b)
c) Hãy dùng các phép toán đại số quan hệ trả lời các câu hỏi sau:
+ Cho biết các thông tin A, B, E có A = 1 và E = 0;
+ Cho biết các thông tin A, B, C có A= 1 hoặc E = 0.
d) Tính lại kết quả của các biểu thức ở câu c.
Giải
- Kết quả:
A B A B
1 0 1 0
1 1
- Cho biết các thông tin A, B, E có A = 1 và E = 0.
- Cho biết các thông tin A, B, C có A= 1 hoặc E = 0.
- Tính lại kết quả của các biểu thức trên.
A B C A B E
1 0 0 1 0 0
1 0 1 1 1 0
1 1 1
44 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
2.3. Sử dụng các phép toán đại số quan hệ để tìm kiếm thông tin
1) Cho hai quan hệ
R A B C D S A E F G
a1 b1 c1 d1 a1 e2 f1 g1
a2 b1 c1 d1 a2 e1 f1 g1
a2 b2 c2 d2 a1 e2 f2 g2
a2 b2 c3 d2 a4 e2 f2 g2
a) Viết biểu thức đại số quan hệ đƣa ra các thông tin A, B sao cho A = a1 hoặc
E = e2; rồi tính kết quả biểu thức vừa tìm đƣợc.
b) Viết biểu thức đại số quan hệ đƣa ra các thông tin A, B, E sao cho A = a1 và
E = e2; rồi tính kết quả biểu thức vừa tìm đƣợc.
Giải:
a) A B
a1 b1
b) A B E
a1 b1 e2
2) Cho 3 quan hệ
DS(SBD, HOTEN, NGAYSINH, GIOITINH, QUEQUAN);
SBD_PH(SBD, SOPHACH);
DTM(SOPHACH, DIEM);
Hãy dùng các phép toán của đại số quan hệ trả lời các câu hỏi sau:
a) Cho biết họ và tên, ngày sinh, giới tính, quê quán, điểm thi của mỗi sinh viên.
b) Cho biết họ và tên, ngày sinh, giới tính, điểm thi của những sinh viên có điểm thi > 5
Phạm Hùng Phú 45
Bài tập cơ sở dữ liệu c) Cho biết họ và tên, ngày sinh, điểm thi của những sinh viên có giới tính là nữ và
quê ở “Thai Binh”
d) Cho biết họ và tên, ngày sinh, điểm thi của những sinh viên có quê ở “Nam
Dinh” hoặc “Thai Binh” và có điểm thi < 3 hoặc điểm thi >8.
Giải:
a)
b)
c)
d)
3) Cho 3 quan hệ
MATHANG(Mamh, Tenmh, Mau, DVT);
KHHANG(Makh, Tenkh, Diachi, DT, Gioitinh);
MUABAN(Mamh, Makh, Muaban, NgayMB, Soluong, Dongia);
(Muaban có giá trị là .F. nếu khách hàng mua; là .T. nếu khách hàng bán).
Hãy dùng các phép toán đại số quan hệ để trả lời các câu hỏi sau:
1) Cho biết makh, tenkh, tenmh của những khách hàng đã bán mặt hàng có
mamh = „MH001‟ hoặc mamh=‟MH002‟.
2) Cho biết makh của những khách hàng đã bán mặt hàng màu đỏ với số
lƣợng >100 trong quí I năm 2003.
3) Cho biết tenkh, diachi, DT của những khách hàng đã bán mặt hàng màu
„Vang‟ hoặc „Xanh‟ với số lƣợng >100.
4) Cho biết makh, tenkh của những khách hàng có giới tính là „Nam‟ đã bán
mặt hàng màu „Đen‟ và mua mặt hàng màu „Xanh‟ với 200>soluong>100.
5) Cho biết makh chƣa tham gia mua bán lần nào.
6) Cho biết makh chƣa tham gia bán lần nào.
7) Cho biết makh, tenkh chƣa tham gia mua bán lần nào.
8) Cho biết makh đã mua mặt hàng màu xanh nhƣng không bán mặt hàng
màu đỏ.
46 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
9) Cho biết makh đã mua mặt hàng màu xanh và bán mặt hàng màu đỏ.
10) Cho biết makh đã mua mặt hàng màu xanh hoặc bán mặt hàng màu đỏ.
Giải:
1)
2)
3)
4)
5)
6)
7)
Hoặc
8)
9)
10)
Phạm Hùng Phú 47
Bài tập cơ sở dữ liệu
2.11. Cho hai quan hệ sau:
Ds MaSV Hoten Ns Gt Qq
001 Nguyễn Vân Anh 20/05/1984 Nữ Nam Định
002 Bùi Thu Huệ 12/04/1987 Nữ Thái Bình
003 Nguyễn Hải Hà 12/10/1984 Nam Hà Nam
004 Vũ Nhƣ Quỳnh 14/08/1985 Nữ Nam Định
005 Trần Hải Lý 23/08/1987 Nam Thanh Hoá
Diem MaSV Diem Mon
001 Toán 8
001 Lý 7
003 Toán 9
004 Toán 7
003 Hoá 5
001 Hoá 6
003 Lý 9
004 Lý 4
004 Hoá 10
Hãy viết biểu thức quan hệ thực hiện các công việc sau và tính các kết quả
của các biểu thức đó:
1) Cho xem MaSV, Hoten, Ns, Gt, Mon, Diem mỗi môn thi của từng sinh viên.
2) Cho xem MaSV, Hoten, Ns, Gt, Mon, Diem môn lý của các học sinh nữ.
3) Cho xem danh sách sinh viên không dự thi tất cả các môn.
4) Cho xem danh sách sinh viên không dự thi tất cả các môn gồm các thông tin
MaSV, Hoten, Ns.
Giải:
1)
MaSV Hoten Ns Gt Mon Diem
001 Nguyễn Vân Anh 20/05/1984 Nữ Toán 8
001 Nguyễn Vân Anh 20/05/1984 Nữ Lý 7
48 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
001 Nguyễn Vân Anh 20/05/1984 Nữ Hoá 6
003 Nguyễn Hải Hà 12/10/1984 Nam Toán 9
003 Nguyễn Hải Hà 12/10/1984 Nam Hoá 5
003 Nguyễn Hải Hà 12/10/1984 Nam Lý 9
004 Vũ Nhƣ Quỳnh 14/08/1985 Nữ Toán 7
004 Vũ Nhƣ Quỳnh 14/08/1985 Nữ Lý 4
004 Vũ Nhƣ Quỳnh 14/08/1985 Nữ Hoá 10
2)
MaSV Hoten Ns Gt Mon Diem
001 Nguyễn Vân Anh 20/05/1984 Nữ Lý 7
004 Vũ Nhƣ Quỳnh 14/08/1985 Nữ Lý 4
3) (MaSV(DS) - MaSV(DIEM)) * DS
- Tính MaSV(DS)
- Tính MaSV(DIEM)
- Tính MaSV(DS) - MaSV(DIEM)
- Tính (MaSV(DS) - MaSV(DIEM)) * DS cho kết quả
MaSV Hoten Ns Gt Qq
002 Bùi Thu Huệ 12/04/1987 Nữ Thái Bình
005 Trần Hải Lý 23/08/1987 Nam Thanh Hoá
4)
- Tính MaSV(DS)
- Tính MaSV(DIEM)
- Tính MaSV(DS) - MaSV(DIEM)
- Tính (MaSV(DS) - MaSV(DIEM)) * DS
- Tính cho kết quả
Phạm Hùng Phú 49
Bài tập cơ sở dữ liệu
MaSV Hoten Ns
002 Bùi Thu Huệ 12/04/1987
005 Trần Hải Lý 23/08/1987
2.4. Cho ba quan hệ
S(SNO, SNAME, SEX, STATUS, CITY)
P(PNO, PNAME, COLOR, WEIGHT)
SP(SNO, PNO, QTY, SDATE, PRICE)
Hãy tối ƣu hóa các biểu thức đại số quan hệ sau:
1)
2)
3)
5)
6) SNAME( STATUS = 13 PRICE < 20 (S*SP))
7)
8) PNAME(STATUS < 15 QTY >25 (S*SP*P)) PNAME(STATUS > 25 (S*SP*P))
9)
10)
Giải:
Có thể sử dụng các phép biến đổi tƣơng đƣơng hoặc cây toán tử để tối ƣu hóa,
tƣơng tự các bài tập ví dụ cho các câu tƣơng ứng.
1)
2)
50 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
3)
5)
6) SNAME( STATUS = 13 PRICE < 20 (S*SP))
Phạm Hùng Phú 51
Bài tập cơ sở dữ liệu
7)
8) PNAME(STATUS < 15 QTY >25 (S*SP*P)) PNAME(STATUS > 25 (S*SP*P))
Hƣớng dẫn;
Có thể sử dụng cây toán tử để tìm biểu thức con chung và tối ƣu hóa nhƣ trong
ví dụ trong mục cây toán tử và biểu thức con chung
9)
52 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
10)
2.13. Cho ba quan hệ
E(ENO, ENAME, SEX, BDATE, SDATE, ESDATE, ADD);
D(DNO, DNAME, LOC, MAGER)
ED(ENO, DNO, SCO, SAD)
Hãy tối ƣu hoá các biểu thức đại số sau:
1)
2)
3)
4)
Phạm Hùng Phú 53
Bài tập cơ sở dữ liệu
5)
6)
7)
8)
9)
10)
Giải:
Sử dụng các phép biến đổi tƣơng đƣơng để tối ƣu hóa, tƣơng tự các bài tập ví dụ
tự vẽ cây toán tử cho các câu tƣơng ứng.
1)
2)
3)
4)
54 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
5)
6)
7)
8)
9)
Phạm Hùng Phú 55
Bài tập cơ sở dữ liệu
10)
56 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Chương 3
NGÔN NGỮ CƠ SỞ DỮ LIỆU SQL
A. TÓM TẮT LÝ THUYẾT
3.1. Tạo bảng
3.1.1. Mệnh đề tạo cấu trúc của bảng có dạng tổng quát như sau:
CREATE TABLE
Trong đó:
Tên_bảng, Tên_cột: Là xâu ký tự bất kỳ bắt đầu bằng một chữ cái sau đó là
chữ cái hoặc chữ số, không trùng với từ khoá. Trong một bảng tên cột là duy nhất.
Thứ tự của cột trong bảng là không quan trọng.
Kiểu_dữ_liệu: thường là một trong số các kiểu dữ liệu như sau:
Integer: Số nguyên từ -214 483 648 đến 214 48 647.
Smallinteger: Số nguyên từ -32768 đến 32767.
Number (n, p): Số thập phân với độ dài tối đa là n trong đó có p chữ số phần
thập phân.
Float: Số thực dấu phẩy động
Char(n): Xâu ký tự có độ dài cố định là n, n 255
Varchar(n): Xâu ký tự có độ dài thay đổi tối đa là n, n 255.
Date: Dữ liệu dạng ngày, tháng, năm.
Logical: Dữ liệu kiểu logic nhiều khi dùng từ khoá là Log.
3.1.2. Vào dữ liệu cho bảng
- Nhập dữ liệu trực tiếp:
INSERT INTO
VALUES ( )
- Nhập dữ liệu từ bảng khác:
INSERT INTO
Phạm Hùng Phú 57
Bài tập cơ sở dữ liệu
3.2 Khối SELECT
Dạng tổng quát của câu lệnh SELECT đƣợc biểu diễn nhƣ sau:
SELECT distinct [
FROM
WHERE
GROUPE BY
HAVING
ORDER BY < tên_cột số_thứ_tự_cột biểu_thức>, [ASC/ DESC ]
Trong đó:
SELECT: Xác định nội dung của các cột cần đưa ra kết quả.
FROM: Xác định các bảng cần lấy thông tin ra.
WHERE: Xác định các bản ghi thoả điều kiện chọn lọc để đưa ra kết quả.
GROUPE BY: Xác định nhóm các bản ghi và gộp mỗi nhóm thành một bản
ghi.
HAVING: Xác định các bản ghi gộp của mỗi nhóm thoả điều kiện chọn lọc để
đưa ra kết quả.
ORDER BY: Xác định cách sắp xếp kết quả.
Mệnh đề where đƣợc biểu diễn dạng:
WHERE [NOT]
WHERE [NOT]
WHERE [NOT]
WHERE [NOT]
WHERE [NOT] EXISTS (
WHERE [NOT]
WHERE [NOT]
WHERE [NOT]
WHERE [NOT]
58 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
3.2.1. Tìm kiếm theo câu hỏi đơn giản (tìm kiếm trên một bảng)
1) Tìm kiếm không điều kiện
Trƣớc hết làm quen với các câu hỏi chỉ liên quan tới một bảng. Trong mệnh đề
SELECT có danh sách chiếu. Danh sách này xác định tên các cột cần có trong bảng
kết quả. Nếu xuất hiện giá trị „*‟ có nghĩa là chọn toàn bộ các cột của bảng.
Ví dụ:
- Cho biết tất cả các thông tin về các nhà cung cấp
SELECT *
FROM S
Sau khi thực hiện một lệnh của SQL, để bảng kết quả đúng là một quan hệ
(có nghĩa là không có các bộ trùng nhau). Trong mệnh đề SELECT cần thêm từ
khoá DISTINCT.
- Cho biết số hiệu những mặt hàng đã đƣợc cung cấp.
SELECT DISTINCT PNO
FROM SP
- Cho biết số hiệu khách hàng, số hiệu mặt hàng mà mỗi nhà cung cấp đã
cung cấp.
SELECT DISTINCT SNO, PNO
FROM SP
- Cho biết số hiệu khách hàng, số hiệu mặt hàng, số lƣợng, ngày cung cấp, giá,
thành tiền mà các nhà cung cấp đã cung cấp một mặt hàng trong mỗi lần.
SELECT SNO, PNO, QTY, SDATE , PRICE , QTY * PRICE
FROM SP
2) Tìm kiếm với điều kiện đơn giản
Ví dụ: Tìm số hiệu những nhà cung cấp đã cung cấp mặt hàng có số hiệu là P2.
SELECT DISTINCT SNO
FROM SP
WHERE PNO = „P2‟
Trong SQL các phép sánh đƣợc sử dụng bao gồm >, <, >=, <=, = và <>. Các phép
tính trên dùng cho mọi kiểu dữ liệu.
Phạm Hùng Phú 59
Bài tập cơ sở dữ liệu 3) Tìm kiếm với điều kiện phức tạp
Ví dụ: Tìm số hiệu nhà cung cấp, số hiệu mặt hàng, ngày cung cấp, số lƣợng, đơn
giá, thành tiền mà mỗi lần các nhà cung cấp đã cung cấp mặt hàng có số hiệu là P1
hoặc P2 và có số lƣợng > 20.
SELECT SNO, PNO, SDATE, QTY, PRICE, QTY*PRICE
FROM SP
WHERE (PNO = „P1‟ or PNO = „P2‟) and QTY > 20
4) Tìm kiếm có xử lý xâu ký tự
Xử lý xâu ký tự gần đúng còn gọi là phép tính “thông minh”. Trong trƣờng
hợp ngƣời sử dụng không nhớ rõ tên ngƣời hoặc địa danh, ...
Ví dụ:
- Cho biết tất cả các thông tin về các nhà cung cấp có họ là „Phạm‟. Khi đó
có thể viết:
SELECT *
FROM S
WHERE SNAME LIKE „Phạm %‟
- Cho biết tất cả các thông tin về các nhà cung cấp có tên là „Hƣơng‟. Khi đó
có thể viết:
SELECT *
FROM S
WHERE SNAME LIKE „% Hƣơng‟
- Tìm số hiệu những nhà cung cấp đã cung cấp các mặt hàng có số hiệu gồm
2 ký tự và bắt đầu bằng P.
SELECT DISTINCT SNO
FROM SP
WHERE PNO LIKE „P_‟
Trong SQL sử dụng ký hiệu „%‟ là thay thế cho một xâu con, dấu gạch
dƣới „ _‟ để thay thế cho một ký tự.
A%B: Xâu ký tự bất kỳ bắt đầu bằng chữ A và kết thúc bằng chữ B.
%A: Xâu ký tự bất kỳ có ký tự kết thúc bằng là A.
A_B: Xâu gồm 3 ký tự có ký tự thứ 2 là bất kỳ
60 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
A_: Xâu gồm 2 ký tự có ký tự đầu là A.
5) Tìm kiếm có xử lý ngày tháng
Ngoài các phép tính thông thƣờng SQL còn có thể xử lý dữ liệu dạng ngày
tháng năm.
Ví dụ: Tìm số hiệu mặt hàng, số lƣợng của những mặt hàng bán trƣớc ngày 24 tháng
4 năm 1994 là 10 ngày.
SELECT PNO, QTY
FROM SP
WHERE {24/04/94} - SDATE = 10
6) Tìm kiếm nhờ sử dụng IN và BETWEEN
Ví dụ:
- Tìm số hiệu những mặt hàng đã cung cấp có giá từ 1000 đến 2000.
SELECT PNO
FROM SP
WHERE PRICE BETWEEN 1000 AND 2000
- Tìm số hiệu những nhà cung cấp đã cung cấp một trong các mặt hàng có số
hiệu là P1, P2, P3.
SELECT DISTINCT SNO
FROM SP
WHERE PNO IN ( „P1‟, „P2‟, „P3‟ )
7) Các hàm thư viện (toán tử gộp)
Trong SQL có các hàm mẫu gộp nhóm thƣờng dùng gồm:
COUNT (
đếm những hàng có giá trị NULL trong cột chỉ định). Đặc biệt count(*): Đếm số
hàng thoả yêu cầu tìm kiếm mà không cần quan tâm tới bất kỳ một cột nào.
MAX(
MIN(
SUM(
thức kiểu số.
Phạm Hùng Phú 61
Bài tập cơ sở dữ liệu
AVG(
số hoặc biểu thức kiểu số.
Một câu lệnh SELECT – FROM – WHERE có thể đƣa ra kết quả khi áp
dụng các hàm gộp này bằng cách đặt các hàm gộp vào mệnh đề SELECT; đặt tên
bảng vào mệnh đề FROM. Nếu có mệnh đề WHERE <đk> thì chỉ những bản ghi
thỏa mãn điều kiện mới đƣợc bao gồm vào để tính phép gộp.
Ví dụ:
- Tìm hiệu số số lƣợng mặt hàng có số hiệu mặt hàng là P1 cung cấp một lần
nhiều nhất và một lần ít nhất của nhà cung cấp có số hiệu là S1.
SELECT MAX (QTY) – MIN (QTY)
FROM SP
WHERE SNO = „S1‟ AND PNO = „P1‟
- Tìm tổng số tiền, giá trung bình mỗi lần cung cấp của tất cả các mặt hàng
đã đƣợc cung cấp bởi nhà cung cấp có số hiệu là S1.
SELECT SUM(QTY*PRICE), AVG(FRICE)
FROM SP
WHERE SNO = „S1‟
- Cho biết số lƣợt các mặt hàng khác nhau đã đƣợc cung cấp.
SELECT COUNT (DISTINCT PNO )
FROM SP
Chú ý:
biểu thức này tác động lên từng bản ghi của bảng chỉ ra trong mệnh đề FROM và
chỉ những bản ghi thỏa mãn biểu thức điều kiện mới đƣợc đƣa ra kết quả.
8) Tìm kiếm nhờ mệnh đề GROUP BY
Ta có thể phân chia các bản ghi của một bảng thành các nhóm và áp dụng các
toán tử gộp cho mỗi nhóm riêng rẽ, tức là chỉ các bản ghi trong cùng một nhóm (có
cùng giá trị của biểu thức nhóm) mới đƣợc gộp.
Muốn vậy ta sử dụng câu lệnh SELECT – FROM – WHERE với mệnh đề
GROUP BY (nhóm lại bởi).
Ví dụ 1: Tìm số hiệu mặt hàng, số lần cung cấp, giá lớn nhất, tổng số tiền của mỗi
mặt hàng đã đƣợc cung cấp.
62 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
SELECT PNO, COUNT(PNO), MAX(PRICE), SUM(QTY*PRICE)
FROM SP
GROUP BY PNO
Trong mệnh đề trên trƣớc hết các bản ghi của bảng SP đƣợc lấy ra; sau đó,
chúng đƣợc phân thành các nhóm theo số hiệu mặt hàng (PNO), mỗi nhóm gồm các
bản ghi có cùng giá trị PNO; rồi các bản ghi của mỗi nhóm đƣợc gộp lại thành một
bản ghi theo toán tử gộp để đƣa ra kết quả. Mỗi bản ghi kết quả gồm: giá trị của mỗi
nhóm (PNO), số lƣợng bản ghi, giá lớn nhất và tổng số tiền của mỗi nhóm.
Ví dụ 2: Tìm số hiệu nhà cung cấp, số hiệu mặt hàng, số lần cung cấp, giá lớn nhất
mà mỗi nhà cung cấp đã cung cấp mỗi mặt hàng trong một lần có số lƣợng >3.
SELECT SNO, PNO, COUNT(*), MAX(PRICE)
FROM SP
WHERE QTY >3
GROUP BY SNO, PNO
Chú ý:
- Nếu GROUP BY theo nhiều cột thì giữa các cột phân cách nhau bởi dấu phảy.
- Tên các cột có mặt trong mệnh đề GROUP BY phải có mặt trong mệnh đề
SELECT.
- Khi sử dụng mệnh đề GROUP BY mà có mệnh đề WHERE <đk> thì chỉ có
các bản ghi thỏa điều kiện mới tham gia tạo nhóm.
- Khi sử dụng các toán tử trong mệnh đề SELECT mà không có mệnh đề
GROUP BY thì toàn bộ các bản ghi trong bảng đƣợc coi là một nhóm (gộp toàn bảng).
9) Tìm kiếm có sử dụng mệnh đề HAVING
Mệnh đề HAVING chỉ đƣợc sử dụng khi có mệnh đề GROUP BY. Sau
HAVING là biểu thức điều kiện; biểu thức điều kiện này không tác động vào từng
bản ghi của bảng đƣợc chỉ ra trong mệnh đề FROM mà chỉ tác động vào từng nhóm
và chỉ các nhóm thỏa mãn điều kiện này mới đƣợc đƣa ra kết quả.
Ví dụ: Tìm số hiệu những nhà cung cấp đã cung cấp ít nhất hai mặt hàng.
SELECT SNO
FROM SP
Phạm Hùng Phú 63
Bài tập cơ sở dữ liệu GROUPE BY SNO
HAVING COUNT (DISTINCT PNO) >2
10) Tìm kiếm có sắp xếp
Để sắp xếp kết quả tìm kiếm đƣợc theo một tiêu chuẩn nào đó ta sử dụng
mệnh đề ORDER BY.
Ví dụ 1: Tìm tên, số hiệu các mặt hàng màu đỏ hoặc xanh; kết quả đƣa ra sắp xếp
theo thứ tự tăng dần của số hiệu mặt hàng.
SELECT PNAME, PNO
FROM P
WHERE COLOR IN („Đỏ‟, „Xanh‟)
ORDER BY PNO ASC
Chú ý:
- ORDER BY dùng để sắp xếp dữ liệu kết quả tìm kiếm đƣợc.
- Sau mệnh đề ORDER BY là tên cột hoặc biểu thức dùng để sắp xếp, rồi
đến chiều sắp xếp tăng hoặc giảm (ASC – ngầm định hoặc DESC ). Nếu sắp xếp
theo nhiều cột, hoặc biểu thức thì giữa chúng phải phân cách bởi dấu phảy và thứ tự
sắp xếp ƣu tiên từ trái qua phải, nếu không chỉ ra chiều sắp xếp thì hệ thống ngầm
định là ASC.
- Tên cột hoặc biểu thức sắp xếp sau mệnh đề ORDER BY nếu có mặt trong
mệnh đề SELECT thì có thể dùng thứ tự xuất hiện của nó trong mệnh đề trên thay
cho cột hoặc biểu thức sắp xếp.
Ví dụ 2: Đƣa ra tên, số hiệu mặt hàng có màu đỏ hoặc xanh. Danh sách đƣa ra sắp
xếp theo chiều tăng dần của số hiệu mặt hàng.
SELECT PNAME, PNO
FROM P
WHERE COLOR = „Đỏ‟ OR COLOR = „Xanh‟
ORDER BY 2
64 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
3.2.2. Tìm kiếm với câu hỏi phức tạp
Trong phần này trình bày việc tìm kiếm có sử dụng ánh xạ lồng, tìm kiếm
với nhiều bảng qua việc sử dụng ánh xạ lồng nhau hoặc qua phép kết nối, tìm kiếm
có sử dụng các phép toán tập hợp…
1) Tìm kiếm bằng kết nối
Trong phép kết nối, các cột tham gia kết nối phải có kiểu dữ liệu sánh đƣợc
với nhau. Tên cột của các bảng khác nhau có thể viết tƣờng minh qua tên bảng
(Tên_bảng.Tên_cột).
Ví dụ:
- Với mỗi mặt hàng đã đƣợc cung cấp, cho biết số hiệu mặt hàng, số hiệu, tên và
địa chỉ của nhà cung cấp đã cung cấp mặt hàng đó.
SELECT DISTINCT PNO, SNO, SNAME, CITY
FROM SP, S
WHERE SP.SNO = S. SNO
- Đƣa ra số hiệu, tên, địa chỉ nhà cung cấp, số hiệu, tên, màu các mặt hàng, số
lƣợng, đơn giá, thành tiền mà các nhà cung cấp đã cung cấp một mặt hàng trong
mỗi lần.
SELECT SNO, SNAME, CITY, PNO, PNAME, COLOR, QTY, PRICE, QTY* PRICE
FROM S, P, SP
WHERE (S. SNO = SP.SNO) AND (P. PNO = SP.PNO)
- Đƣa ra số hiệu, tên, địa chỉ nhà cung cấp, số hiệu, tên, màu các mặt hàng, số
lƣợng, đơn giá, thành tiền mà các nhà cung cấp đã cung cấp một mặt hàng trong
mỗi lần có màu đỏ hoặc xanh.
SELECT SNO, SNAME, CITY, PNO, PNAME, COLOR, QTY, PRICE, QTY* PRICE
FROM S, P, SP
WHERE (S.SNO = SP.SNO) AND (P.PNO = SP.PNO) AND (COLOR IN („đỏ‟,‟XANH‟))
Chú ý:
- Trong các phép tìm kiếm trên nhiều bảng, nếu tên các cột là không duy nhất
thì bắt buộc phải viết tên cột dạng tƣờng minh (Tên_bảng.Tên_cột).
- Điều kiện kết nối dữ liệu giữa các bảng phải đặt trong mệnh đề WHERE.
Phạm Hùng Phú 65
Bài tập cơ sở dữ liệu Trƣờng hợp không có mệnh đề WHERE khi đó phép tích Đề - Các sẽ đƣợc
thực hiện.
2) Tìm kiếm bằng ánh xạ lồng
Ví dụ 1:
- Tìm số hiệu, tên những nhà cung cấp đã cung cấp mặt hàng có số hiệu P2.
SELECT SNO, SNAME
FROM S
WHERE SNO IN (SELECT DISTINCT SNO
FROM SP
WHERE PNO = „P2‟)
- Tìm số hiệu, tên các nhà cung cấp không cung ứng mặt hàng có số hiệu là P1.
SELECT SNO, SNAME
FROM S
WHERE SNO NOT IN
(SELECT DISTINCT SNO
FROM SP
WHERE PNO = ‟P1‟)
Chú ý:
- Phép lồng nhau có thể đƣợc lồng nhiều mức
- Câu hỏi con phải đặt trong hai dấu ngoặc đơn trong mệnh đề WHERE hoặc
HAVING và đi sau toán tử so sánh dữ liệu.
- Nội dung chỉ định trong mệnh đề SELECT của câu hỏi con chỉ là một tên
(một cột hoặc một biểu thức)
- Kết quả của câu hỏi con phải có kiểu tƣơng thích với query mẹ. Trong Query
con không đƣợc sử dụng các phép toán so sánh Like, Between. Kết quả chọn lọc dữ
liệu trong Query con chỉ dùng cho việc so sánh của Query mẹ mà không đƣợc đƣa ra
bảng kết quả vì vậy trong Query con không đƣợc sử dụng mệnh đề ORDER BY.
- Ngƣời ta thƣờng dùng Query con khi giá trị để so sánh cho việc tìm kiếm
trong Query mẹ là chƣa tƣờng minh.
66 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Ví dụ 2:
- Cho biết số hiệu nhà cung cấp, số hiệu mặt hàng của các mặt hàng đã đƣợc
cung cấp với số lƣợng lớn nhất.
SELECT DISTINCT SNO, PNO
FROM SP
WHERE QTY = (SELECT MAX(QTY ) FROM SP)
- Cho biết số hiệu nhà cung cấp, tên nhà cung cấp chƣa cung cấp mặt hàng nào.
SELECT SNO, SNAME
FROM S
WHERE SNO NOT IN
(SELECT DISTINCT SNO
FROM SP )
3) Tìm kiếm với từ khoá [NOT] EXISTS
Ví dụ:
- Đƣa ra tất cả các thông tin về các nhà cung cấp đã cung cấp ít nhất một mặt hàng.
SELECT *
FROM S
WHERE EXISTS
( SELECT SNO
FROM SP, S
WHERE SP.SNO = S. SNO )
- Đƣa ra tất cả các thông tin về các nhà cung cấp chƣa cung cấp bất cứ một
mặt hàng nào.
SELECT *
FROM S
WHERE NOT EXISTS
( SELECT SNO
FROM SP, S
WHERE SP.SNO = S. SNO )
4) Tìm kiếm có sử dụng lượng từ ANY và ALL.
Phạm Hùng Phú 67
Bài tập cơ sở dữ liệu Ví dụ 1:
- Đƣa ra số hiệu, tên, màu của những mặt hàng đã đƣợc cung cấp bởi nhà
cung cấp có số hiệu S1.
SELECT PNO, PNAME, COLOR
FROM P
WHERE PNO = ANY( SELECT DISTINCT PNO
FROM SP
WHERE SNO = „S1‟)
- Tìm số hiệu nhà cung cấp đã cung cấp một mặt hàng nào đó với số lƣợng
lớn hơn hoặc bằng số lƣợng mỗi lần cung cấp một mặt hàng của các nhà cung cấp.
SELECT DISTINCT SNO
FROM SP
WHERE QTY >= ALL (SELECT DISTINCT QTY
FROM SP)
Mệnh đề trên hoàn toàn tƣơng đƣơng với
SELECT DISTINCT SNO
FROM SP
WHERE QTY = (SELECT MAX (QTY)
FROM SP )
Chú ý: Trong nhiều trƣờng hợp có thể thay thế giữa các mệnh đề EXITS với IN
hoặc NOT IN, EQUAL ANY tƣơng đƣơng với NOT EQUAL ALL. v.v...
Ví dụ 2:
Ví dụ trên tƣơng đƣơng với :
SELECT *
FROM S
WHERE SNO NOT IN
(SELECT DISTINCT SNO
FROM SP)
Hoặc
68 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
SELECT *
FROM S
WHERE SNO <> ALL
(SELECT DISTINCT SNO
FROM SP)
5) Tìm kiếm có chứa phép tính tập hợp
Ví dụ:
- Tìm số hiệu những nhà cung cấp hiện thời chƣa cung cấp một mặt hàng nào cả.
SELECT SNO
FROM S
MINUS
SELECT DISTINCT SNO
FROM SP
- Tìm số hiệu các mặt hàng đã đƣợc cung cấp bởi các nhà cung cấp có số hiệu là
S1 hoặc S2.
SELECT DISTINCT PNO
FROM SP
WHERE SNO=‟S1‟
UNION
SELECT DISTINCT PNO
FROM SP
WHERE SNO=‟S2‟
- Tìm số hiệu các mặt hàng đã đƣợc cung cấp bởi các nhà cung cấp có số hiệu
là S1 và S2.
SELECT DISTINCT PNO
FROM SP
WHERE SNO =‟S1‟
INTERSECT
SELECT DISTINCT PNO
FROM SP
WHERE SNO = „S2‟
Phạm Hùng Phú 69
Bài tập cơ sở dữ liệu 3.3. Các mệnh đề cập nhật dữ liệu
3.3.1. Thêm bản ghi vào cuối bảng
1) Mệnh đề thêm trực tiếp một bản ghi vào cuối
INSERT INTO
VALUES ( )
2) Bổ sung một tập các bản ghi từ bảng khác vào cuối bảng
INSERT INTO
SELECT * | [(
FROM
WHERE <điều kiện>
3.3.2. Xóa bảng
1) Xoá bảng
Mệnh đề xoá bảng có dạng tổng quát nhƣ sau:
DROP TABLE
Bảng có tên đƣợc chỉ ra trong mệnh đề đƣợc xoá khỏi cơ sở dữ liệu (xóa cả
lƣợc đồ và thể hiện).
2) Xoá bản ghi
Mệnh đề xoá bản ghi có thể đƣợc thực hiện cho một hoặc nhiều bản
ghi thoả một điều kiện nào đó. Dạng tổng quát là:
DELETE
FROM
[WHERE
3) Sửa đổi dữ liệu
- Sửa đổi các giá trị của các bản ghi trong bảng của cơ sở dữ liệu theo một
điều kiện nào đó:
UPDATE
SET {
[WHERE
- Sửa dữ liệu của bảng lấy dữ liệu từ bảng khác
UPDATE
70 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
SET {
[WHERE
4) Tạo tệp chỉ số
Tệp chỉ số có thể đƣợc hiểu là một bảng chỉ dẫn về sắp xếp. Bảng này gồm
hai cột ; Cột thứ nhất chứa giá trị của biểu thức dùng làm khoá sắp xếp; cột thứ 2
chứa địa chỉ của bản ghi tƣơng ứng trong bảng dữ liệu. Khi sử dụng bảng dữ liệu
kết hợp với bảng chỉ dẫn về sắp xếp; ta sẽ có kết quả sắp xếp. Tệp chỉ số rất hữu
ích, nó giúp cho việc tìm kiếm thông tin đƣợc tiến hành nhanh chóng.
Trong SQL không có cơ chế tự động tạo tệp chỉ số (sắp xếp logic) cho các
cột của bảng. Việc tạo chỉ số là do ngƣời sử dụng tự chọn. Mệnh đề tổng quát có
dạng:
CREATE [UNIQUE] INDEX
Chú ý: - Ngầm định của hệ thống là ASC (tăng).
- Nếu có UNIQUE thì chỉ có các giá trị khác nhau của cột (hoặc biểu
thức) mới tham gia vào tệp chỉ số.
Ví dụ: Tạo tệp chỉ số CS3 theo cột City của bảng S theo chiều tăng.
CREATE INDEX CS3 ON S(CITY)
5) Xoá tệp chỉ số
Khi các tệp chỉ số không còn cần thiết nữa; ta có thể xoá chúng. Để xoá tệp
chỉ số, ta sử dụng lệnh
DROP INDEX
Ví dụ: Xoá tệp chỉ số CS3
DROP INDEX CS3
6) Thêm cột mới
ALTER TABLE
Ví dụ: Thêm cột TOTAL (thành tiền) cho bảng SP với kiểu dữ liệu dạng số thập
phân; sau đó điền giá trị cho nó.
- Thêm cột TOTAL
ALTER TABLE SP ADD TOTAL NUMBER (18,2)
- Điền giá trị cho cột TOTAL
Phạm Hùng Phú 71
Bài tập cơ sở dữ liệu UPDATE SP
SET TOTAL = QTY * PRICE
7) Xoá cột
ALTER TABLE
Ví dụ: Xoá cột DONGIA (đơn giá) của bảng SP
ALTER TABLE SP DELETE DONGIA
3.4. Tạo view của người sử dụng
Dạng tổng quát:
CREATE VIEW
AS
3.5. Các mệnh đề về an toàn dữ liệu
3.5.1. Trao quyền truy nhập
GRANT
TO
Các quyền truy nhập trong SQL bao gồm: READ (đọc), SELECT (chọn),
WRITE (ghi), INSERT (bổ sung), UPDATE (sửa đổi), DELETE (xoá), INDEX (tạo
chỉ mục), ALTER (sửa cấu trúc), COPY (sao chép) và RUN (thực hiện). ALL ( gồm
tất cả các quyền trên)
- Đối_tƣợng: là tên bảng, tên view hoặc tên chƣơng trình nào đó.
- Tên_ngƣời_sử_dụng: tên một ngƣời, một nhóm hoặc một danh sách hoặc sử
dụng từ khoá PUBLIC, WORLD cho mọi ngƣời sử dụng.
- Từ khoá with GRANT OPTION đảm bảo để ngƣời sử dụng có thể tiếp tục trao
quyền sử dụng cho ngƣời khác nữa.
Ví dụ: Trao quyền đọc, ghi bảng S cho cô Hồng.
GRANT READ, WRITE ON S TO Hong WITH GRANT OPTION
Trong mệnh đề này cô Hồng có thể trao quyền đọc bảng S cho ngƣời khác.
3.5.2. Huỷ bỏ quyền truy nhập
REVOKE
72 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
B. BÀI TẬP
3.4. Cho cơ sở dữ liệu có 3 bảng
DS(Sbd, Hoten, Ngaysinh, Gioitinh, Quequan);
SBD_PH(Sbd,Sophach);
DTM(Sophach, Diem)
1) Nêu các câu lệnh tạo 3 bảng trên và chọn kiểu dữ liệu thích hợp cho các cột.
2) Sử dụng câu lệnh vào dữ liệu, nhập vào 3 bảng trên một số bản ghi.
3) Sử dụng câu lệnh vào dữ liệu, nhập vào 3 bảng trên một số bản ghi.
4) Cho biết họ và tên, ngày sinh, giới tính, quê quán, điểm thi của mỗi sinh viên.
5) Cho biết họ và tên, ngày sinh, giới tính, quê quán của các sinh viên có họ Trần.
6) Cho biết họ và tên, ngày sinh, giới tính, quê quán của các sinh viên có tên là Hƣơng.
7) Cho biết họ và tên, ngày sinh, giới tính, điểm thi của những sinh viên có điểm thi 5.
8) Cho biết họ và tên, ngày sinh, điểm thi của những sinh viên có giới tính là “Nu”
và quê ở “Thai Binh”. Danh sách đƣa ra sắp xếp theo chiều giảm dần của điểm.
9) Cho biết họ và tên, ngày sinh, điểm thi của những sinh viên có quê ở “Nam
Dinh” hoặc “Thai Binh” và có điểm thi < 3 hoặc điểm thi >8. Danh sách đƣa ra sắp
xếp theo chiều giảm dần của điểm.
10) Cho biết số báo danh, họ và tên, ngày sinh, giới tính, quê quán của các sinh viên
không đi thi.
11) Đƣa ra số lƣợng sinh viên, điểm trung bình của các sinh viên mỗi tỉnh.
12) Đƣa ra tổng số sinh viên nữ, điểm trung bình của các sinh viên nữ mỗi tỉnh.
Danh sách đƣa ra sắp xếp theo giảm dần của điểm trung bình.
13) Đƣa ra tổng số sinh viên, điểm trung bình của các sinh viên nữ mỗi tỉnh có
điểm trung bình >7. Danh sách đƣa ra sắp xếp theo giảm dần của số lƣợng sinh
viên, nếu số lƣợng bằng nhau thì sắp xếp theo chiều tăng dần của điểm trung bình.
14) Tăng điểm thi thêm 2 điểm cho các sinh viên quê ở Sơn La.
Giải:
1) Các câu lệnh tạo 3 bảng dữ liệu
- CREATE TABLE DS
( SBD CHAR(10) NOT NULL,
HOTEN CHAR(30) NOT NULL,
Phạm Hùng Phú 73
Bài tập cơ sở dữ liệu NGAYSINH DATE NOT NULL,
GIOITINH LOG NOT NULL,
QUEQUAN CHAR(20) )
- CREATE TABLE SBD_PH
( SBD CHAR(10) NOT NULL,
SOPHACH CHAR(10) NOT NULL)
- CREATE TABLE DTM
( SOPHACH CHAR(10) NOT NULL,
DIEM NUMBER(5,2))
2) Các câu lệnh nhập dữ liệu vào 3 bảng.
– INSERT INTO DS
VALUES (“CSDL01”, “Nguyễn Hải Đăng”, {10/24/87}, .T. , “Nam Định”)
– INSERT INTO SBD_PH
VALUES (“CSDL01”, “C7”)
– INSERT INTO DTM
VALUES (“C7”, 9.5)
Các bộ khác nhập tƣơng tự
3)Xoá sinh viên có có số báo danh 123.
- DELETE
FROM DTM
WHERE SOPHACH IN ( SELECT SOPHACH
FROM SBD_PH
WHERE SBD = „123‟)
- DELETE
FROM DS
WHERE SBD = „123‟
- DELETE
FROM SBD_PH
WHERE SBD = „123‟
4) Cho biết họ và tên, ngày sinh, giới tính, quê quán, điểm thi của mỗi sinh viên.
SELECT HOTEN, NGAYSINH, GIOITINH, QUEQUAN, DIEM
74 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
FROM DS, SBD_PH, DTM
WHERE DS.SBD=SBD_PH.SBD AND SBD_PH.SOPHACH=DTM. SOPHACH
5) Cho biết họ và tên, ngày sinh, giới tính, quê quán của các sinh viên có họ Trần.
SELECT HOTEN, NGAYSINH, GIOITINH, QUEQUAN
FROM DS
WHERE HOTEN LIKE „Trần %‟
6) Cho biết họ và tên, ngày sinh, giới tính, quê quán của các sinh viên có tên là Hƣơng.
SELECT HOTEN, NGAYSINH, GIOITINH, QUEQUAN
FROM DS
WHERE HOTEN LIKE „% Hƣơng‟
7) Cho biết họ và tên, ngày sinh, giới tính, điểm thi của những sinh viên có điểm
thi 5.
SEECT HOTEN, NGAYSINH, GIOITINH, DIEM
FROM DS, SBD_PH, DTM
WHERE DS.SBD=SBD_PH.SBD AND SBD_PH.SOPHACH=DTM. SOPHACH
AND DIEM >= 5
8) Cho biết họ và tên, ngày sinh, điểm thi của những sinh viên có giới tính là “Nu”
và quê ở “Thai Binh”. Danh sách đƣa ra sắp xếp theo chiều giảm dần của điểm.
SELECT HOTEN, NGAYSINH, DIEM
FROM DS, SBD_PH, DTM
WHERE DS.SBD=SBD_PH.SBD AND SBD_PH.SOPHACH=DTM. SOPHACH
AND NOT GIOITINH AND QUEQUAN = „Thái Bình‟
ORDER BY DIEM DESC
Hoặc
SELECT HOTEN, NGAYSINH, DIEM
FROM DS, SBD_PH, DTM
WHERE DS.SBD=SBD_PH.SBD AND SBD_PH.SOPHACH=DTM. SOPHACH
AND GIOITINH = .F. AND QUEQUAN = „Thái Bình‟
ORDER BY DIEM DESC
Phạm Hùng Phú 75
Bài tập cơ sở dữ liệu 9) Cho biết họ và tên, ngày sinh, điểm thi của những sinh viên có quê ở “Nam
Dinh” hoặc “Thai Binh” và có điểm thi < 3 hoặc điểm thi >8. Danh sách đƣa ra sắp
xếp theo chiều giảm dần của điểm.
SELECT HOTEN, NGAYSINH, DIEM
FROM DS, SBD_PH, DTM
WHERE DS.SBD=SBD_PH.SBD AND SBD_PH.SOPHACH=DTM. SOPHACH
AND QUEQUAN IN („Nam Định‟, „Thái Bình‟) AND (DIEM<3 OR DIEM>8)
ORDER BY DIEM DESC
10) Cho biết số báo danh, họ và tên, ngày sinh, giới tính, quê quán của các sinh viên
không đi thi.
Trong câu hỏi trên lời giải còn tùy thuộc vào cách xử lý thí sinh không đi thi trong cơ sở
dữ liệu ; thông thƣờng có một trong các cách xử lý sau:
- Không đánh phách các học sinh không đi thi, khi đó lời giải là
SELECT *
FROM DS
WHERE SBD NOT IN ( SELECT SBD
FROM SBD_PH)
- Vẫn đánh phách cho học sinh không đi thi nhƣng không cho điểm thi thí sinh đó, khi đó
lời giải là
SELECT *
FROM DS
WHERE SBD IN ( SELECT SBD
FROM SBD_PH
WHERE SOPHACH NOT IN (SELECT SOPHACH
FROM DTM ))
Hoặc
SELECT SBD, HOTEN, NGAYSINH, GIOITINH, QUEQUAN
FROM DS, SBD_PH
WHERE DS.SBD =SBD_PH.SBD AND SOPHACH NOT IN (SELECT SOPHACH
FROM DTM )
76 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
- Vẫn đánh phách và cho điểm cho học sinh không đi thi nhƣng điểm thi thí sinh đó
không nằm trong thang điểm, chẳng hạn là -1, khi đó lời giải là
SELECT SBD,HOTEN, NGAYSINH, GIOITINH, QUEQUAN
FROM DS, SBD_PH, DTM
WHERE DS.SBD=SBD_PH.SBD AND SBD_PH.SOPHACH=DTM. SOPHACH
AND DIEM = -1
11) Đƣa ra số lƣợng sinh viên, điểm trung bình của các sinh viên mỗi tỉnh.
SELECT QUEQUAN, COUNT(SBD), AVG(DIEM)
FROM DS, SBD_PH, DTM
WHERE DS.SBD=SBD_PH.SBD AND SBD_PH.SOPHACH=DTM. SOPHACH
GROUP BY QUEQUAN
12) Đƣa ra tổng số sinh viên nữ, điểm trung bình của các sinh viên nữ mỗi tỉnh.
Danh sách đƣa ra sắp xếp theo giảm dần của điểm trung bình.
SELECT QUEQUAN, COUNT(SBD), AVG(DIEM)
FROM DS, SBD_PH, DTM
WHERE DS.SBD=SBD_PH.SBD AND SBD_PH.SOPHACH=DTM. SOPHACH
AND NOT GIOITINH
GROUP BY QUEQUAN
ORDER BY 3 DESC
Ở đây, hàm AVG(DIEM) phải tính hai lần.
13) Đƣa ra tổng số sinh viên, điểm trung bình của các sinh viên nữ mỗi tỉnh có
điểm trung bình >7. Danh sách đƣa ra sắp xếp theo giảm dần của số lƣợng sinh
viên, nếu số lƣợng bằng nhau thì sắp xếp theo chiều tăng dần của điểm trung bình.
SELECT QUEQUAN, COUNT(SBD), AVG(DIEM)
FROM DS, SBD_PH, DTM
WHERE DS.SBD=SBD_PH.SBD AND SBD_PH.SOPHACH=DTM. SOPHACH
AND NOT GIOITINH
GROUP BY QUEQUAN
HAVING AVG(DIEM) >7
ORDER BY COUNT(SBD) DESC, AVG(DIEM)
Phạm Hùng Phú 77
Bài tập cơ sở dữ liệu Ở đây, hàm AVG(DIEM) phải tính ba lần, hàm COUNT(SBD) phải tính hai
lần. Để tránh việc phải lặp lại cùng một công việc, ta có thể tạo ra VIEW trung gian
nhƣ sau:
CREATE VIEW TAM(TINH, SOLUONG, DIEMTB)
AS
SELECT QUEQUAN, COUNT(SBD), AVG(DIEM)
FROM DS, SBD_PH, DTM
WHERE DS.SBD=SBD_PH.SBD AND SBD_PH.SOPHACH=DTM. SOPHACH
AND NOT GIOITINH
GROUP BY QUEQUAN
Sau đó sử dụng câu lệnh
SELECT *
FROM TAM
WHERE DIEMTB>7
ORDER BY SOLUONG DESC, DIEM
14) Tăng điểm thi thêm 2 điểm cho các sinh viên quê ở Sơn La.
UPDATE DTM
SET DIEM=DIEM+2
WHERE SOPHACH IN (SELECT SOPHACH
FROM SBD_PH
WHERE SBD IN ( SELECT SBD
FROM DS
WHERE QUEQUAN=“Sơn La” ))
Hoặc
- CREATE VIEW TAM
AS
SELECT SOPHACH
FROM SBD_PH
WHERE SBD IN ( SELECT SBD
FROM DS
78 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
WHERE QUEQUAN=“Sơn La” )
- UPDATE DTM
SET DIEM=DIEM+2
WHERE SOPHACH = TAM. SOPHACH
3.5. Cho cơ sở dữ liệu có 3 bảng MatHang(Mamh, Tenmh, Mau, DVT);
KhHang(Makh, Tenkh, Diachi, DT, Gioitinh);
MuaBan(SoHD, Makh, Mamh, Muaban, NgayMB, Soluong, Dongia).
1) Nêu các câu lệnh tạo 3 bảng trên và chọn kiểu dữ liệu thích hợp cho các cột.
2) Sử dụng câu lệnh vào dữ liệu, nhập vào 3 bảng trên mỗi bảng một số bản ghi.
3) Cho biết makh của các khách hàng đã bán hàng.
4) Cho biết makh, tenkh, tenmh của những khách hàng đã bán mặt hàng có
mamh = “MH001” hoặc mamh = “MH002”.
5) Cho biết thông tin của các mặt hàng mà khách hàng đã mua có đơn giá nhỏ
hơn đơn giá trung bình mỗi lần mua một mặt hàng.
6) Cho biết makh của những khách hàng đã bán mặt hàng màu đỏ với số
lƣợng >100 trong quý I năm 2003.
7) Cho biết tenkh, diachi, DT của những khách hàng đã bán mặt hàng màu
“vàng” hoặc “xanh” với số lƣợng >100.
8) Cho biết makh, tenkh của những khách hàng có giới tính là “nam” đã bán mặt
hàng màu “Den” và mua mặt hàng màu “Xanh” với 200> soluong>100.
9) Cho biết các thông tin của các khách hàng chƣa tham gia mua bán lần nào.
10) Cho biết các thông tin của các khách hàng chƣa mua hàng lần nào.
11) Cho biết các thông tin của các mặt hàng chƣa đƣợc mua bán lần nào.
12) Cho biết các thông tin gồm MaMH, TenMH, số lần mua và số tiền mua mà
cửa hàng đã mua mặt hàng đó.
13) Cho biết các thông tin của các khách hàng, số lần mua và số tiền đã mua
hàng có số lần mua lớn nhất trong tháng 1 năm 1999.
14) Cho biết các thông tin của các khách hàng đã mua hàng có số lần mua lớn
hơn 3. Danh sách đƣa ra sắp xếp theo chiều giảm dần của số lần mua.
15) Cho biết mamh, tenmh, số lƣợng tồn kho của mỗi mặt hàng.
Phạm Hùng Phú 79
Bài tập cơ sở dữ liệu 16) Xoá đi mặt hàng có mamh là MH001.
17) Thêm cột thanhtien và tính số tiền mỗi lần mua bán một mặt hàng.
18) Cho biết thông tin của những khách hàng đã bán mặt hàng màu xanh nhƣng
không mua mặt hàng màu đỏ.
19) Cho biết thông tin của những khách hàng đã bán các mặt hàng ít nhất 3 lần
và mua các mặt hàng nhiều nhất 7 lần.
20) Cho biết thông tin của những khách hàng đã bán các mặt hàng ít nhất 3 lần
hoặc mua các mặt hàng nhiều nhất 7 lần.
Giải:
1) Các câu lệnh tạo 3 bảng.
- CREATE TABLE MATHANG
( MAMH CHAR(10) NOT NULL,
TENMH CHAR(30) NOT NULL,
MAU CHAR(10),
DVT CHAR(20) NOT NULL )
- CREATE TABLE KHHANG
( MAKH CHAR(10) NOT NULL,
TENKH CHAR(30) NOT NULL,
DIACHI CHAR(40) NOT NULL,
DT CHAR(10),
GIOITINH LOG NOT NULL )
- CREATE TABLE MUABAN
(SOHD CHAR(10) NOT NULL,
MAKH CHAR(10) NOT NULL,
MAMH CHAR(10) NOT NULL,
MUABAN LOG NOT NULL,
NGAYMB DATE NOT NULL,
SOLUONG NUMBER(15,2) NOT NULL,
DONGIA NUMBER(15,2) NOT NULL)
2) Sử dụng câu lệnh vào dữ liệu, nhập vào 3 bảng trên mỗi bảng một số bản ghi.
Sử dụng câu lệnh
80 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
INSERT INTO
VALUES ()
3) Cho biết makh của các khách hàng đã bán hàng.
SELECT MAKH
FROM MUABAN
WHERE MUABAN
(hoặc where muaban =.T.)
4) Cho biết makh, tenkh, tenmh của những khách hàng đã bán mặt hàng có mamh =
“MH001” hoặc mamh = “MH002”.
SELECT MAKH, TENKH, TENMH
FROM KHHANG, MATHANG, MUABAN
WHERE KHHANG.MAKH = MUABAN.MAKH AND MUABAN.MAMH =
MATHANG.MAMH AND MUABAN AND MAMH IN (“MH001”, “MH002”)
5) Cho biết thông tin của các mặt hàng mà khách hàng đã mua có đơn giá nhỏ hơn
đơn giá trung bình mỗi lần mua một mặt hàng.
SELECT *
FROM MATHANG
WHERE MAMH IN (SELECT DISTINCT MAMH
FROM MUABAN
WHERE NOT MUABAN AND DONGIA < (SELECT AVG(DONGIA)
FROM MUABAN
WHERE NOT MUABAN))
Hoặc
SELECT MAMH, TENMH, MAU, DVT
FROM MATHANG, MUABAN
WHERE MATHANG.MAMH= MUABAN.MAMH AND NOT MUABAN AND
DONGIA < (SELECT AVG(DONGIA)
FROM MUABAN
WHERE NOT MUABAN)
Hoặc
- CREATE VIEW MUA
Phạm Hùng Phú 81
Bài tập cơ sở dữ liệu AS
SELECT MAKH, DONGIA
FROM MUABAN
WHERE NOT MUABAN
- CREATE VIEW DGTB
AS
SELECT DISTINCT MAMH
FROM MUA
WHERE DONGIA< ( SELECT AVG(DONGIA)
FROM MUA)
- SELECT MAMH, TENMH, MAU, DVT
FROM MATHANG, DGTB
WHERE MATHANG.MAMH = DGTB.MAMH
6) Cho biết makh của những khách hàng đã bán mặt hàng màu đỏ với số
lƣợng >100 trong quý I năm 2003.
SELECT DISTINCT MAKH
FROM MUABAN
WHERE MUABAN AND SOLUONG >100 AND NGAYMB BETWEEN
{01/01/2003} AND {31/03/2003} AND MAMH IN (SELECT MAMH
FROM MATHANG
WHERE MAU = „đỏ‟)
Hoặc
SELECT DISTINCT MAKH
FROM MUABAN, MATHANG
WHERE MUABAN AND SOLUONG >100 AND NGAYMB BETWEEN
{01/01/2003} AND {31/03/2003} AND MUABAN.MAMH=MATHANG. MAMH
AND MAU = „đỏ‟
Hoặc
- CREATE VIEW V1
AS
82 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
SELECT DISTINCT MAKH, MAMH
FROM MUABAN
WHERE MUABAN AND SOLUONG >100 AND NGAYMB BETWEEN
{01/01/2003} AND {31/03/2003}
- CREATE VIEW V2
AS
SELECT MAMH
FROM MATHANG
WHERE MAU = „đỏ‟
- SELECT MAMH
FROM V1, V2
WHERE V1.MAMH = V2.MAMH
7) Cho biết tenkh, diachi, DT của những khách hàng đã bán mặt hàng màu “vàng”
hoặc “xanh” với số lƣợng >100.
- CREATE VIEW V3
AS
SELECT DISTINCT MAKH
FROM MUABAN, MATHANG
WHERE MUABAN.MAMH=MATHANG. MAMH AND MAU IN („vàng‟,
„xanh‟) AND SOLUONG >100 AND MUABAN
- SELECT TENKH, DIACHI, DT
FROM KHHANG, V3
WHERE KHHANG.MAKH = V3.MAKH
Hoặc
SELECT TENKH, DIACHI, DT
FROM KHHANG, MUABAN, MATHANG
WHERE KHHANG.MAKH= MUABAN.MAKH AND MUABAN.MAMH=
MATHANG.MAMH AND MAU IN („vàng‟, „xanh‟) AND SOLUONG>100
AND MUABAN
8) Cho biết makh, tenkh của những khách hàng có giới tính là “nam” đã bán mặt
hàng màu “Den” và mua mặt hàng màu “Xanh” với 200> soluong>100.
Phạm Hùng Phú 83
Bài tập cơ sở dữ liệu - CREATE VIEW KH
AS
SELECT MAKH, TENKH
FROM KHHANG
WHERE GIOITINH
- CREATE VIEW SOLUMB
AS
SELECT DISTINCT MAKH, MAMH, MUABAN, MAU
FROM MUABAN, MATHANG
WHERE MUABAN.MAMH=MATHANG.MAMH AND SOLUONG>100 AND
SOLUONG < 200
- CREATE VIEW MB
AS
SELECT DISTINCT MAKH
FROM SOLUMB
WHERE MUABAN AND MAU= „Den‟
UNION
SELECT DISTINCT MAKH
FROM SOLUMB
WHERE NOT MUABAN AND MAU= „Xanh‟
- SELECT MAKH, TENKH
FROM KH, MB
WHERE KH.MAKH=MB.MAKH
9) Cho biết các thông tin của các khách hàng chƣa tham gia mua bán lần nào.
SELECT *
FROM KHHANG
WHERE MAKH NOT IN (SELECT MAKH
FROM MUABAN )
10) Cho biết các thông tin của các khách hàng chƣa mua hàng lần nào.
SELECT *
FROM KHHANG
84 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
WHERE MAKH NOT IN (SELECT MAKH
FROM MUABAN
WHERE NOT MUABAN )
11) Cho biết các thông tin của các mặt hàng chƣa đƣợc mua bán lần nào.
SELECT *
FROM MATHANG
WHERE MAMH NOT IN (SELECT MAMH
FROM MUABAN )
12) Cho biết các thông tin gồm MaMH, TenMH, số lần mua và số tiền mua mà cửa
hàng đã mua mặt hàng đó.
- CREATE VIEW V (MAMH, SOLM, SOTM)
AS
SELECT MAMH, COUNT(MAMH), SUM(SOLUONG*DONGIA) FROM MUABAN
WHERE MUABAN
GROUP BY MAMH
- SELECT MAKH, TENKH, DIACHI, GIOITINH, DT, SOLM, SOTM
FROM MATHANG, V
WHERE MATHANG.MAMH=V.MAMH
13) Cho biết các thông tin của các khách hàng, số lần mua và số tiền đã mua hàng
có số lần mua lớn nhất trong tháng 1 năm 1999.
- Số tiền mua hàng của mỗi khách hàng trong mỗi hóa đơn.
CREATE VIEW V13 (MAKH, SOHD, SOTM)
AS
SELECT MAKH, SOHD, SUM(SOLUONG*DONGIA)
FROM MUABAN
WHERE NGAYMB BETWEEN{01/01/99}AND {31/01/99} AND NOT MUABAN
GROUP BY MAKH, SOHD
- Số lần mua, số tiền mua hàng của mỗi khách hàng trong mỗi hóa đơn.
CREATE VIEW V4 (MAKH, SOLM, SOTM)
AS
SELECT MAKH, COUNT(MAKH), SUM(SOTM)
Phạm Hùng Phú 85
Bài tập cơ sở dữ liệu FROM V13
GROUP BY MAKH
- Thông tin về mỗi khách hàng mua có số lần mua lớn nhất.
SELECT MAKH, TENKH, DIACHI, GIOITINH, DT, SOLM, SOTM
FROM KHHANG, V4
WHERE KHHANG.MAKH=V4.MAKH AND SOLM=(SELECT MAX(SOLM)
FROM V4)
14) Cho biết các thông tin của các khách hàng đã mua hàng có số lần mua lớn
hơn 3. Danh sách đƣa ra sắp xếp theo chiều giảm dần của số lần mua.
- Số lần mua hàng của mỗi khách hàng.
CREATE VIEW V14 (MAKH, SOLM)
AS
SELECT MAKH, COUNT(MAKH)
FROM MUABAN
WHERE NGAYMB NOT MUABAN
GROUP BY MAKH, SOHD
- SELECT MAKH, TENKH, DIACHI, GIOITINH, DT
FROM KHHANG, V14
WHERE KHHANG..MAKH=V4.MAKH AND SOLM > 3
ORDER BY SOLM DESC
15) Cho biết mamh, tenmh, số lƣợng tồn kho của mỗi mặt hàng.
- CREATE VIEW CHMUA(MAMH, SOLUONG)
AS
SELECT MAMH, SUM(SOLUONG)
FROM MUABAN
WHERE MUABAN
GROUP BY MAMH
ORDER BY MAMH
- CREATE VIEW CHBAN(MAMH, SOLUONG)
AS
SELECT MAMH, SUM(SOLUONG)
86 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
FROM MUABAN
WHERE NOT MUABAN
GROUP BY MAMH
ORDER BY MAMH
- CREATE TABLE TONKHO
( MAMHT CHAR(10),
SOLUONGT NUMBER(19,2))
- UPDATE TONKHO
SELECT MAMH, SOLUONG
SET MAMHT= MAMH, SOLUONGT= SOLUONG
FROM CHMUA
Hoặc INSERT INTO TONKHO
SELECT *
FROM CHMUA
- UPDATE TONKHO
SET SOLUONGT = SOLUONGT- (SELECT SOLUONG FROM CHBAN
WHERE MAMH = TONKHO.MAMHT)
16) Xoá đi mặt hàng có mamh là MH001.
- DELETE
FROM MUABAN
WHERE MAMH= „MH001‟
- DELETE
FROM MATHANG
WHERE MAMH= „MH001‟
17) Thêm cột thanhtien và tính số tiền mỗi lần mua bán một mặt hàng.
- ALTER TABLE MUABAN ADD THANHTIEN NUMBER(19,2)
- UPDATE MUABAN
SET THANHTIEN=SOLUONG*DONGIA
18) Cho biết thông tin của những khách hàng đã bán mặt hàng màu xanh nhƣng
không mua mặt hàng màu đỏ.
- CREATE VIEW TH
Phạm Hùng Phú 87
Bài tập cơ sở dữ liệu AS
SELECT MAKH, TENKH, DIACHI, DT, GIOITINH, MUABAN, MAU
FROM KHHANG, MUABAN, MATHANG
WHERE KHHANG.MAKH = MUABAN.MAKH AND
MUABAN.MAMH= MATHANG.MAMH
- SELECT MAKH, TENKH, DIACHI, DT, GIOITINH
FROM TH
WHERE MUABAN AND MAU= „xanh‟
MINUS
SELECT MAKH, TENKH, DIACHI, DT, GIOITINH
FROM TH
WHERE NOT MUABAN AND MAU= „đỏ‟
19) Cho biết thông tin của những khách hàng đã bán các mặt hàng ít nhất 3 lần và
mua các mặt hàng nhiều nhất 7 lần.
- Số lần mua hàng của mỗi khách hàng.
CREATE VIEW V14M (MAKH, SOLM)
AS
SELECT MAKH, COUNT(MAKH)
FROM MUABAN
WHERE NOT MUABAN
GROUP BY MAKH, SOHD
- Mã khách hàng của các khách hàng có số lần mua nhiều nhất là 7.
CREATE VIEW VM (MAKH)
AS
SELECT MAKH
FROM V14M
WHERE SOLM <= 7
- Số lần bán hàng cho cửa hàng của mỗi khách hàng.
CREATE VIEW V14B (MAKH, SOLB)
AS
SELECT MAKH, COUNT(MAKH)
88 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
FROM MUABAN
WHERE MUABAN
GROUP BY MAKH, SOHD
- Mã khách hàng của các khách hàng có số lần bán ít nhất là 3.
CREATE VIEW VB (MAKH)
AS
SELECT MAKH
FROM V14B
WHERE SOLB >= 3
- Mã khách hàng của các khách hàng có số lần bán ít nhất là 3 và có số lần mua
nhiều nhất là 7.
CREAT VIEW TG
AS
SELECT *
FROM VB
INTERSECT
SELECT *
FROM VM
- Thông tin của những khách hàng đã bán các mặt hàng ít nhất 3 lần và mua các mặt
hàng nhiều nhất 7 lần.
SELECT MAKH, TENKH, DIACHI, DT, GIOITINH
FROM KHHANG, TG
WHERE KHHANG.MAKH = TG.MAKH
20) Cho biết thông tin của những khách hàng đã bán các mặt hàng ít nhất 3 lần hoặc
mua các mặt hàng nhiều nhất 7 lần.
Hƣớng dẫn: Làm hoàn toàn tƣơng tự nhƣ câu 19, chỉ khác ở chỗ trong câu lệnh tạo view TG
thay từ khóa INTERSECT bằng từ khóa UNION
3.6. Trong cơ sở dữ liệu QUANLYCANBO của một cơ quan có 3 bảng nhƣ sau: HOSO
Phạm Hùng Phú 89
Bài tập cơ sở dữ liệu
NAME TYPE Giải thích
Manv Char(10) Mã nhân viên
Hoten Char(30) Họ và tên nhân viên
Gioitinh Giới tính Log
Ngaysinh Ngày sinh Date
Diachi Char(30) Địa chỉ
Ngaylluong Date Ngày lên lƣơng lần cuối
NgayVN Date Ngày vào ngành
PHONGBAN
NAME TYPE Giải thích
Maphong Char(10) Mã phòng
Tenphong Char(30) Tên phòng
Vitri Char(30) Vị trí phòng
LUONG
NAME TYPE Giải thích
Manv Char(10) Mã nhân viên
Maphong Char(10) Mã phòng
Hesoluong Number(5,2) Hệ số lƣơng
Hesophucap Number(5,2) Hệ số phụ cấp
Dùng các câu lệnh SQL làm các công việc sau:
1) Tạo 3 bảng trên.
2) Đƣa ra các thông tin về lƣơng của các nhân viên trong cơ quan gồm: MaNV,
Hoten, Ngaysinh, TenPhong, Hesoluong, Hesophucap, Sotien.
Biết Sotien = (Hesoluong + Hesophucap)* 540
3) Đƣa ra các thông tin về lƣơng của các nhân viên trong cơ quan gồm: MaNV,
Hoten, Ngaysinh, TenPhong, Hesoluong, Hesophucap, Sotien. Danh sách đƣa ra sắp
xếp theo chiều giảm dần của hesoluong.
4) Đƣa ra các thông tin về lƣơng của các nhân viên trong cơ quan gồm: MaNV,
Hoten, Ngaysinh, TenPhong, Hesoluong, Hesophucap, Sotien. Danh sách đƣa ra sắp
90 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
xếp theo chiều tăng dần của tenphong, trong cùng phòng thì sắp xếp theo chiều
giảm dần của hesoluong.
5) Đƣa ra các thông tin về lƣơng của các nhân viên trong phòng có maphong =
„CNTT‟ gồm: MaNV, Hoten, Ngaysinh, Hesoluong, Hesophucap, Sotien. Danh
sách đƣa ra sắp xếp theo chiều tăng dần của sotien, nếu sotien trùng nhau thì sắp
xếp theo chiều giảm dần của ngaysinh.
6) Đƣa ra các thông tin về lƣơng của các nhân viên trong cơ quan có sotien >
5000 gồm: MaNV, Hoten, Ngaysinh, TenPhong, Hesoluong, Hesophucap, Sotien,
tienthue . Danh sách đƣa ra sắp xếp theo chiều tăng dần của tenphong, trong cùng
phòng thì sắp xếp theo chiều giảm dần của hesoluong.
Tienthue = 5%Sotien.
7) Đƣa ra danh sách những ngƣời đƣợc tăng lƣơng trong năm nay gồm các
thông tin: manv, hoten, ngaysinh, hesoluong, ngaylluong (cứ 3 năm tăng lƣơng 1
lần tính từ ngày tăng lƣơng cuối cùng).
8) Cho xem các thông tin gồm manv, hoten, tenphong, hesoluong,
hesophucap, sotien của những ngƣời có sotien <500 hoặc sotien> 6000. Danh sách
đƣa ra sắp xếp theo chiều tăng dần của phòng, trong một phòng sắp xếp theo chiều
giảm dần của số tiền.
9) Cho xem manv, hoten, tenphong, hesoluong, hesophucap, sotien, tienthue
của những ngƣời đƣợc lĩnh nhiều tiền nhất trong cơ quan.
10) 1- Đƣa ra maphong, tenphong, songuoi, tổng số tiền phải trả lƣơng cho
các nhân viên mỗi phòng. Danh sách đƣa ra sắp xếp theo chiều giảm dần của tổng
số tiền.
2- Đƣa ra maphong, tenphong, số nhân viên nữ, tổng số tiền phải trả
lƣơng cho các nhân viên nữ mỗi phòng có số nhân viên nữ > 2. Danh sách đƣa ra
sắp xếp theo chiều giảm dần của tổng số tiền, nếu tổng số tiền trùng nhau thì sắp
xếp theo chiều giảm dần của số nhân viên nữ.
11) Đƣa ra danh những ngƣời đƣợc xét nghỉ hƣu trong năm nay gồm các
thông tin: manv, hoten, tenphong, hesoluong, phucap, sotien, số tiền đƣợc hƣởng
hàng tháng. Danh sách đƣa ra sắp xếp theo chiều giảm dần của tuổi.
Số tiền đƣợc hƣởng hàng tháng = 85% Sotien.
Phạm Hùng Phú 91
Bài tập cơ sở dữ liệu Tiêu chuẩn xét nghỉ hƣu: nam có tuổi trên 60 và số năm công tác trên 30; nữ
có tuổi trên 55 và số năm công tác trên 25.
12) Đƣa ra bảng thống kê gồm các thông tin: Tên phòng, số ngƣời, số ngƣời
đƣợc xét tăng lƣơng, số ngƣời đƣợc xét nghỉ hƣu, tổng số tiền, số tiền cao nhất, số
tiền thấp nhất của mỗi phòng. Danh sách đƣa ra sắp xếp theo chiều giảm dần của số
ngƣời.
13) Đƣa ra bảng thống kê gồm các thông tin: Tên phòng, số ngƣời, số nữ, số
ngƣời đƣợc xét tăng lƣơng, số ngƣời đƣợc xét nghỉ hƣu, tổng số tiền, số tiền cao
nhất, số tiền thấp nhất của mỗi phòng có số ngƣời > 3. Danh sách đƣa ra sắp xếp
theo chiều giảm dần của số ngƣời.
Giải:
1) Tạo 3 bảng.
- CREATE TABLE HOSO
( MANV CHAR(10) NOT NULL,
HOTEN CHAR(30) NOT NULL,
GIOITINH LOG NOT NULL,
NGAYSINH DATE NOT NULL,
DIACHI CHAR(30) NOT NULL,
NGAYLLUONG DATE,
NGAYVN DATE)
- CREATE TABLE PHONGBAN
( MAPHONG CHAR(10) NOT NULL,
TENPHONG CHAR(30) NOT NULL,
VITRI CHAR(30))
- CREATE TABLE LUONG
( MANV CHAR(10) NOT NULL,
MAPHONG CHAR(10) NOT NULL,
HESOLUONG NUMBER(5,2),
HESOPHUCAP NUMBER(5,2))
2) Đƣa ra các thông tin về lƣơng của các nhân viên trong cơ quan gồm: MaNV,
Hoten, Ngaysinh, TenPhong, Hesoluong, Hesophucap, Sotien.
92 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
SELECT MANV, HOTEN, NGAYSINH, TENPHONG, HESOLUONG,
HESOPHUCAP, (HESOLUONG + HESOPHUCAP)*730
FROM HOSO, LUONG, PHONGBAN
WHERE HOSO.MANV= LUONG.MANV AND LUONG.MAPHONG =
PHONGBAN.MAPHONG
3) Đƣa ra các thông tin về lƣơng của các nhân viên trong cơ quan gồm: MaNV,
Hoten, Ngaysinh, TenPhong, Hesoluong, Hesophucap, Sotien. Danh sách đƣa ra sắp
xếp theo chiều giảm dần của hesoluong.
SELECT MANV, HOTEN, NGAYSINH, TENPHONG, HESOLUONG,
HESOPHUCAP, (HESOLUONG + HESOPHUCAP)*540
FROM HOSO, LUONG, PHONGBAN
WHERE HOSO.MANV= LUONG.MANV AND LUONG.MAPHONG =
PHONGBAN.MAPHONG
ORDER BY HESOLUONG DESC
4) Đƣa ra các thông tin về lƣơng của các nhân viên trong cơ quan gồm: MaNV,
Hoten, Ngaysinh, TenPhong, Hesoluong, Hesophucap, Sotien. Danh sách đƣa ra sắp
xếp theo chiều tăng dần của tenphong, trong cùng phòng thì sắp xếp theo chiều
giảm dần của hesoluong.
SELECT MANV, HOTEN, NGAYSINH, TENPHONG, HESOLUONG,
HESOPHUCAP, (HESOLUONG + HESOPHUCAP)*540
FROM HOSO, LUONG, PHONGBAN
WHERE HOSO.MANV= LUONG.MANV AND LUONG.MAPHONG =
PHONGBAN.MAPHONG
ORDER BY TENPHONG ASC, HESOLUONG DESC
5) Đƣa ra các thông tin về lƣơng của các nhân viên trong phòng có maphong =
„CNTT‟ gồm: MaNV, Hoten, Ngaysinh, Hesoluong, Hesophucap, Sotien. Danh
sách đƣa ra sắp xếp theo chiều tăng dần của sotien, nếu sotien trùng nhau thì sắp
xếp theo chiều giảm dần của ngaysinh.
SELECT MANV, HOTEN, NGAYSINH, HESOLUONG, HESOPHUCAP,
(HESOLUONG + HESOPHUCAP)*540
FROM HOSO, LUONG, PHONGBAN
Phạm Hùng Phú 93
Bài tập cơ sở dữ liệu WHERE HOSO.MANV= LUONG.MANV AND LUONG.MAPHONG =
PHONGBAN.MAPHONG AND MAPHONG= „CNTT‟
ORDER BY 6, NGAYSINH DESC
6) Đƣa ra các thông tin về lƣơng của các nhân viên trong cơ quan có sotien >
5000 gồm: MaNV, Hoten, Ngaysinh, TenPhong, Hesoluong, Hesophucap, Sotien,
tienthue . Danh sách đƣa ra sắp xếp theo chiều tăng dần của tenphong, trong cùng
phòng thì sắp xếp theo chiều giảm dần của hesoluong.
SELECT MANV, HOTEN, NGAYSINH, TENPHONG, HESOLUONG,
HESOPHUCAP, (HESOLUONG + HESOPHUCAP)*540,
(HESOLUONG + HESOPHUCAP)*540* 0.05
FROM HOSO, LUONG, PHONGBAN
WHERE HOSO.MANV= LUONG.MANV AND LUONG.MAPHONG =
PHONGBAN.MAPHONG AND (HESOLUONG + HESOPHUCAP)*540>5000
ORDER BY TENPHONG, HESOLUONG DESC
7) Đƣa ra danh sách những ngƣời đƣợc tăng lƣơng trong năm nay gồm các
thông tin: manv, hoten, ngaysinh, hesoluong, ngaylluong (cứ 3 năm tăng lƣơng 1
lần tính từ ngày tăng lƣơng cuối cùng).
SELECT MANV, HOTEN, NGAYSINH, HESOLUONG, HESOPHUCAP,
NGAYLLUONG
FROM HOSO, LUONG
WHERE HOSO.MANV=LUONG.MANV AND YEAR(DATE()) –
YEAR(NGAYLLUONG) >=3
8) Cho xem các thông tin gồm manv, hoten, tenphong, hesoluong,
hesophucap, sotien của những ngƣời có sotien <500 hoặc sotien> 6000. Danh sách
đƣa ra sắp xếp theo chiều tăng dần của phòng, trong một phòng sắp xếp theo chiều
giảm dần của số tiền.
SELECT MANV, HOTEN, TENPHONG, HESOLUONG, HESOPHUCAP,
(HESOLUONG + HESOPHUCAP)*540,
FROM HOSO, LUONG, PHONGBAN
WHERE HOSO.MANV= LUONG.MANV AND LUONG.MAPHONG =
PHONGBAN.MAPHONG AND ((HESOLUONG + HESOPHUCAP)*540<500
OR (HESOLUONG + HESOPHUCAP)*540>6000)
94 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
ORDER BY MAPHONG, (HESOLUONG + HESOPHUCAP)*540 DESC
9) Cho xem manv, hoten, tenphong, hesoluong, hesophucap, sotien, tienthue
của những ngƣời đƣợc lĩnh nhiều tiền nhất trong cơ quan.
SELECT MANV, HOTEN, TENPHONG, HESOLUONG, HESOPHUCAP,
(HESOLUONG + HESOPHUCAP)*540,
(HESOLUONG + HESOPHUCAP)*540* 0.05
FROM HOSO, LUONG, PHONGBAN
WHERE HOSO.MANV = LUONG.MANV AND LUONG.MAPHONG =
PHONGBAN.MAPHONG AND (HESOLUONG + HESOPHUCAP)*540*0.95 =
(SELECT MAX((HESOLUONG + HESOPHUCAP)*540*0.95)
FROM LUONG)
Chú ý: số tiền đƣợc lĩnh = sotien- tienthue; do đó 0.95 =1- 0.05
Hoặc
- CREATE VIEW V1(MANV, MAPHONG, SOTIEN)
AS
SELECT MANV, MAPHONG, (HESOLUONG + HESOPHUCAP)*540
FROM LUONG
- CREATE VIEW V2(MANV, MAPHONG, SOTIEN, TIENTHUE)
AS
SELECT MANV, MAPHONG, SOTIEN, SOTIEN*0.05
FROM V1
WHERE SOTIEN = (SELECT MAX(SOTIEN)
FROM V1)
- SELECT MANV, HOTEN, TENPHONG, HESOLUONG, HESOPHUCAP,
SOTIEN, TIENTHUE
FROM HOSO, V2, PHONGBAN
WHERE HOSO.MANV= V2.MANV AND V2.MAPHONG =
PHONGBAN.MAPHONG
10) 1- Đƣa ra maphong, tenphong, songuoi, tổng số tiền phải trả lƣơng cho
các nhân viên mỗi phòng. Danh sách đƣa ra sắp xếp theo chiều giảm dần của tổng
số tiền.
Phạm Hùng Phú 95
Bài tập cơ sở dữ liệu SELECT MAPHONG, TENPHONG, COUNT(MAPHONG),
SUM((HESOLUONG + HESOPHUCAP)*540*0.95)
FROM PHONGBAN, LUONG
WHERE PHONGBAN.MAPHONG = LUONG.MAPHONG
GROUP BY MAPHONG
ORDER BY 4 DESC
2- Đƣa ra maphong, tenphong, số nhân viên nữ, tổng số tiền phải trả lƣơng
cho các nhân viên nữ mỗi phòng có số nhân viên nữ > 2. Danh sách đƣa ra sắp xếp
theo chiều giảm dần của tổng số tiền, nếu tổng số tiền trùng nhau thì sắp xếp theo
chiều giảm dần của số nhân viên nữ.
SELECT MAPHONG, TENPHONG, COUNT(MAPHONG),
SUM((HESOLUONG + HESOPHUCAP)*540*0.95)
FROM PHONGBAN, LUONG
WHERE NOT GIOITINH AND PHONGBAN.MAPHONG=LUONG.MAPHONG
GROUP BY MAPHONG
HAVING COUNT(MAPHONG) >2
ORDER BY 4 DESC, 3 DESC
11) Đƣa ra danh những ngƣời đƣợc xét nghỉ hƣu trong năm nay gồm các
thông tin: manv, hoten, tenphong, hesoluong, phucap, sotien, số tiền đƣợc hƣởng
hàng tháng. Danh sách đƣa ra sắp xếp theo chiều giảm dần của tuổi.
Số tiền đƣợc hƣởng hàng tháng = 85% Sotien.
Tiêu chuẩn xét nghỉ hƣu: nam có tuổi trên 60 và số năm công tác trên 30; nữ
có tuổi trên 55 và số năm công tác trên 25.
SELECT MANV, HOTEN, TENPHONG, HESOLUONG, HESOPHUCAP,
(HESOLUONG + HESOPHUCAP)*540,
(HESOLUONG + HESOPHUCAP)*540* 0.85
FROM HOSO, LUONG, PHONGBAN
WHERE HOSO.MANV = LUONG.MANV AND LUONG.MAPHONG =
PHONGBAN.MAPHONG AND ((GIOITINH AND YEAR(DATE())-
YEAR(NGAYSINH)>59 AND YEAR(DATE()) - YEAR(NGAYVN)>29 ) OR
(NOT GIOITINH AND YEAR(DATE())-YEAR(NGAYSINH)>54 AND
YEAR(DATE()) - YEAR(NGAYVN)>24 ))
96 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
12) Đƣa ra bảng thống kê gồm các thông tin: Tên phòng, số ngƣời, số ngƣời
đƣợc xét tăng lƣơng, số ngƣời đƣợc xét nghỉ hƣu, tổng số tiền, số tiền cao nhất, số
tiền thấp nhất của mỗi phòng. Danh sách đƣa ra sắp xếp theo chiều giảm dần của số
ngƣời.
- CREATE VIEW TH1 (MAPHONG, SONGUOI, TSOTIEN, MAXST, MINST)
AS
SELECT MAPHONG, COUNT(MAPHONG),
SUM((HESOLUONG + HESOPHUCAP)*540),
MAX((HESOLUONG + HESOPHUCAP)*540),
MIN((HESOLUONG + HESOPHUCAP)*540)
FROM LUONG
GROUP BY MAPHONG
- CREATE VIEW DSTL (MAPHONG, SNXTL)
AS
SELECT MAPHONG, COUNT(MAPHONG),
FROM PHONGBAN, LUONG
WHERE PHONGBAN.MAPHONG=LUONG.MAPHONG AND
YEAR(DATE()) – YEAR(NGAYLLUONG) > 3
GROUP BY MAPHONG
- CREATE VIEW DSNHUU (MAPHONG, SNXNH)
AS
SELECT MAPHONG, COUNT(MAPHONG)
FROM HOSO, LUONG
WHERE HOSO.MANV = LUONG.MANV AND ((GIOITINH AND
YEAR(DATE())-YEAR(NGAYSINH)>59 AND YEAR(DATE()) -
YEAR(NGAYVN)>29 ) OR
(NOT GIOITINH AND YEAR(DATE())-YEAR(NGAYSINH)>54 AND
YEAR(DATE()) - YEAR(NGAYVN)>24 ))
GROUP BY MAPHONG
- SELECT MAPHONG, TENPHONG, SONGUOI, SNXTL, SNXNH, TSOTIEN,
MAXST, MINST
FROM TH1, DSTL, DSNHUU, PHONGBAN
Phạm Hùng Phú 97
Bài tập cơ sở dữ liệu WHERE TH1.MAPHONG= DSTL.MAPHONG AND DSTL.MAPHONG =
DSNHUU.MAPHONG AND DSNHUU.MAPHONG = PHONGBAN.MAPHONG
13) Đƣa ra bảng thống kê gồm các thông tin: Tên phòng, số ngƣời, số nữ, số
ngƣời đƣợc xét tăng lƣơng, số ngƣời đƣợc xét nghỉ hƣu, tổng số tiền, số tiền cao
nhất, số tiền thấp nhất của mỗi phòng có số ngƣời > 3. Danh sách đƣa ra sắp xếp
theo chiều giảm dần của số ngƣời.
- Tạo hai view DSTL, DSNHUU nhƣ câu trên
- Tạo view TH2
- CREATE VIEW TH2 (MAPHONG, SONGUOI, TSOTIEN, MAXST, MINST)
AS
SELECT MAPHONG, COUNT(MAPHONG),
SUM((HESOLUONG + HESOPHUCAP)*540),
MAX((HESOLUONG + HESOPHUCAP)*540),
MIN((HESOLUONG + HESOPHUCAP)*540)
FROM LUONG
GROUP BY MAPHONG
HAVING COUNT(MAPHONG)>3
- Tạo view sonu
CREATE VIEW SONU (MAPHONG, SONU)
AS
SELECT MAPHONG, COUNT(MAPHONG)
FROM HOSO, LUONG
WHERE HOSO.MANV = LUONG.MANV AND NOT GIOITINH
GROUP BY MAPHONG
- SELECT MAPHONG, TENPHONG, SONGUOI, SONU, SNXTL, SNXNH,
TSOTIEN, MAXST, MINST
FROM TH1, DSTL, DSNHUU, PHONGBAN, SONU
WHERE TH1.MAPHONG= DSTL.MAPHONG AND DSTL.MAPHONG =
DSNHUU.MAPHONG AND DSNHUU.MAPHONG = PHONGBAN.MAPHONG
AND PHONGBAN.MAPHONG= SONU.MAPHONG
ORDER BY SONGUOI DESC
98 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Chương 4
THIẾT KẾ CƠ SỞ DỮ LIỆU
A. TÓM TẮT LÝ THUYẾT
4.1. Phụ thuộc hàm
4.1.1. Khái niệm phụ thuộc hàm
Cho R(U) là một lƣợc đồ quan hệ với U = {A1, A2, ... , An} là tập thuộc tính;
X, Y U. X Y (đọc là X xác định hàm Y hoặc Y phụ thuộc hàm vào X)
nếu với bất kỳ quan hệ r nào đó là giá trị hiện hành của R và t1, t2 r mà
t1[X] = t2[X] thì t1 [Y] = t2[Y].
t1 [Y] t2[Y] t1[X] t2[X]
Ví dụ: Cho một lƣợc đồ quan hệ biểu diễn cho một hóa đơn bán hàng của một của
hàng.
HDBH(SHHD, NgayghiHD, MaKH, TenKH, GT, DC, MaMH, TenMH, DVT,
SLB, DG, ThTien)
Trong đó:
SHHD – Số hiệu hóa đơn;
NgayghiHD – ngày ghi hóa đơn;
MaKH – Mã khách hàng;
TenKH – Tên khách hàng;
GT – Giới tính;
DC – Địa chỉ;
MaMH – Mã mặt hàng;
TenMH – Tên mặt hàng;
DVT – Đơn vị tính;
SLB – Số lượng bán;
DGB – Đơn giá bán;
ThTien – Thành tiền.
Tập phụ thuộc hàm là F={SHHDNgayghiHD, MaKH; MaKHTenKH, GT, DC;
MaMH TenMH, DVT; SHHD, MaMH SLB, DGB; SLB, DGB ThTien}
Phạm Hùng Phú 99
Bài tập cơ sở dữ liệu
4.1.2. Hệ tiên đề cho phụ thuộc hàm
R(U) - lƣợc đồ quan hệ và X, Y, Z U.
1) Hệ tiên đề Armstrong
- Luật phản xạ: Nếu Y X thì X Y.
- Luật tăng trƣởng: Nếu X Y thì XZ YZ.
- Luật bắc cầu: Nếu X Y và Y Z thì X Z.
2) Các quy tắc suy diễn bổ sung
- Luật hợp: Nếu XY và XZ thì XYZ
- Luật tựa bắc cầu: Nếu XY và WYZ thì XWZ
- Luật tách: Nếu XY và Z Y thì XZ
Ví dụ: Cho lƣợc đồ quan hệ R có tập phụ thuộc hàm
F = {AB E, AG I, BE I, E G, GI H}.
Chứng minh rằng: AB GHI.
Ta có AB E; E G AB G (luật bắc cầu)
AB G AB AG (luật tăng trƣởng); mà AG I
AB I (luật bắc cầu) AB GI (luật hợp);
Mặt khác GI H AB H (luật bắc cầu) AB GHI (luật hợp)
4.1.3. Bao đóng của tập thuộc tính
R(U) - lƣợc đồ quan hệ.
F - tập các phụ thuộc hàm trên U. F+- tập tất cả các phụ thuộc hàm đƣợc suy diễn ra từ F.
1) Khái niệm bao đóng của tập thuộc tính
X+ = {A U XAF+}
2) Định lý
XY F+ X+ Y.
3) Giải thuật kiểm tra X Y có thuộc F+ hay không
Vào: Tập U hữu hạn các thuộc tính; X, Y U;
F - Tập các phụ thuộc hàm trên U; .
Ra: X Y F+ hay không
100 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Phƣơng pháp: B1: Tính X+ ứng với F ;
B2: Kiểm tra - Nếu X+ Y thì kết luận X Y F+ hay ngắn gọn X Y ;
- Nếu X+ không chứa Y thì kết luận X Y F+ hay X không xác định
hàm Y.
4) Giải thuật tìm bao đóng của tập thuộc tính
Vào: Tập U hữu hạn các thuộc tính;
Tập các phụ thuộc hàm F trên U; X U. Ra: X+ (bao đóng của X đối với F).
Phƣơng pháp:
B1: Cho X0 := X; i:= 0;
dựa vào Xi bằng cách:
B2: Tính Xi+1
- Tìm tất cả các phụ thuộc hàm Y Z F sao cho Y Xi; Nếu không tìm
- Xi+1:= Xi Z;
thấy thì Z := ;
- Nếu Xi +1 Xi thì i:= i +1 và quay lại bƣớc 2
B3: kết luận X+ = Xi .
Cho lƣợc đồ quan hệ R có tập các phụ thuộc hàm
F = {AB E, AG I, BE I, E G, GI H}.
Chứng minh rằng: AB GHI.
-Tính (AB)+
XO = AB
X1 = ABE (vì AB E)
X2 = ABEIG (vì AB E, BE I, E G)
X3 = ABEIGH (vì AB E; AG I; BE I; E G; GI H)
X4 = ABEIGH (vì AB E; AG I; BE I; E G; GI H)
Vì X3 = X4 nên X + = (AB)+ = ABEIGH - Ta có (AB)+ = ABEIGH GHI nên AB GHI.
Phạm Hùng Phú 101
Bài tập cơ sở dữ liệu
4.1.4. Khóa của lược đồ quan hệ
1) Khái niệm khoá của lược đồ quan hệ
Cho lƣợc đồ quan hệ R(U) với U = { A1, ..., An } có tập các phụ thuộc hàm F và
K U. K là một khoá của R nếu:
- K U F+; - Không có X K mà X U F+.
Điều này tƣơng đƣơng với
- K+ = U; - X K thì X+ U.
Hay - K+ = U; và - A K thì (K- A)+ U.
Nếu K chỉ thoả mãn điều kiện thứ nhất K+ = U thì K đƣợc gọi là khoá bao hàm.
2) Các giải thuật tìm khoá của lược đồ quan hệ
Vào: Lƣợc đồ quan hệ R với tập thuộc tính U có tập phụ thuộc hàm F.
Ra: Tập K là khoá của R.
Phƣơng pháp:
a) Phƣơng pháp chung
B1: K: = U; B2: Lặp lại quá trình loại khỏi K thuộc tính A mà (K-A)+ = U bằng cách:
Với mỗi A K thực hiện - Tính (K-A)+ ; - Nếu (K-A)+ = U thì K: = K – A
B3: K - một khoá của R
b) Phƣơng pháp cải tiến:
B1: Tìm K là tập tất cả các thuộc tính không nằm trong bất cứ một phụ thuộc hàm
nào và các thuộc tính chỉ nằm ở vế trái của các phụ thuộc hàm trong F.
B2: Tính K+
- Nếu K+ = U thì kết luận K là khóa duy nhất của R và kết thúc;
- Nếu K+ U thì
+ Kết luận R có thể có nhiều khóa;
102 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
+ Tìm G là tập các thuộc tính đơn nằm ở cả hai vế trong các phụ thuộc
hàm của F;
+ K: = KG;
+ Với mỗi A G thực hiện (loại bỏ các thuộc tính thừa trong G) * Tính (K - A)+ ; * Nếu (K - A)+ = U thì K := K – A;
B3: K là khóa của R
Chú ý: Trong cả hai giải thuật trên, để tìm các khoá khác ta phải thay đổi thứ tự
loại bỏ các thuộc tính thừa trong khoá bao hàm.
VÝ dô:
a) Cho lƣợc đồ quan hệ R = (A B C D E F G) có tập phụ thuộc hàm
F = {AB C, D E; E F}. Hãy tìm khóa của R.
Áp dụng giải thuật tìm khóa, ta có:
B1: K = ABDG (A, B, D chỉ nằm ở vế trái; G không nằm trong phụ thuộc hàm
nào của F); B2: K+ = ABDGCEF = U;
Vậy K = ABDG là khóa duy nhất của R.
b) Cho lƣợc đồ quan hệ R = (A B C D E F G) có tập phụ thuộc hàm
F = {AB C, C B; C E; E G}.
Áp dụng giải thuật tìm khóa, ta có:
B1: K = ADF (A chỉ nằm ở vế trái; D, F không nằm trong phụ thuộc hàm nào của F); B2: - K+ = (ADF)+ = ADF U nên R có thể có nhiều khóa;
- G = BCE (các thuộc tính nằm ở cả 2 vế của các phụ thuộc hàm trong F);
- K = ABCDEF;
- Loại bỏ các thuộc tính thừa trong G
+ Với E G, (K - E)+ = (ABCDF)+ = ABCDFEG = U
nên K = ABCDF;
+ Với C G, (K - C)+ = (ABDF)+ = ABDFCEG = U
nên K = ABDF;
+ Với B G, (K - B)+ = (ADF)+ = ADF U
Phạm Hùng Phú 103
Bài tập cơ sở dữ liệu nên không thực hiện gì cả (tức là K = ABDF);
Vậy K = ABDF là một khóa của R.
Thay đổi thứ tự loại bỏ các thuộc tính thừa trong G, ta tìm đƣợc K = ACDF là
một khóa khác của R.
Nhƣ vậy, R có hai khóa là K = ABDF và K = ACDF.
4.1.5. Phủ của tập các phụ thuộc hàm
1) Khái niệm phủ của tập các phụ thuộc hàm
Cho F và G là hai tập các phụ thuộc hàm. F và G đƣợc gọi là tƣơng đƣơng
(ký hiệu là F G) nếu F+ = G+.
G Y
Nếu F và G là tƣơng đƣơng thì đôi khi còn nói F phủ G hay G phủ F. F G F+ = G+ F G+ và G F+
F Y
X Y F X+ và X Y G X+
2) Khái niệm tập phụ thuộc hàm tối thiểu và phủ tối thiểu
a) Khái niệm tập phụ thuộc hàm tối thiểu
Tập các phụ thuộc hàm F đƣợc gọi là tối thiểu nếu:
- Tất cả các vế phải của các phụ thuộc hàm thuộc F chỉ có một thuộc tính;
- Không tồn tại một phụ thuộc hàm XA thuộc F mà vế trái X chứa thuộc tính
thừa;
- F không chứa phụ thuộc hàm nào thừa.
b) Khái niệm phủ tối thiểu
Nếu G là một tập phụ thuộc hàm tối thiểu và G tƣơng đƣơng với F thì ta nói
rằng G là phủ tối thiểu của F.
3) Giải thuật tìm phủ tối thiểu
Vào: F là tập các phụ thuộc hàm của LĐQH R
Ra: Phủ tối thiểu của F
Phƣơng pháp:
B1: Với mỗi X Y F mà Y = B1…Bm và m >1 thì tách nó thành tập các phụ
thuộc hàm X B1, … , X Bm ;
104 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
B2: Với mỗi phụ thuộc hàm X A F mà X = B1…Bm và m >1 thực hiện
Với mỗi Bi X thực hiện - Tính (X - Bi )+ ; - Nếu A (X - Bi )+ thì X: = X - Bi ;
B3: Với mỗi phụ thuộc hàm X A F thực hiện
G ; - Nếu A X+
G thì F: = G;
- Tính G = F – {XA}; - Tính X+
B4: Kết luận F – phủ tối thiểu.
Ví dụ: Cho lƣợc đồ quan hệ R có tập phụ thuộc hàm:
F = {A BD; AB C; C D}.
B1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có
một thuộc tính.
F = {A B; A D; AB C ; C D}
B2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
Trong các phụ thuộc hàm trong F chỉ có phụ thuộc hàm AB C có vế trái có
nhiều hơn một thuộc tính nên:
- Với A AB; (B) + = B không chứa C nên A không là thộc tính thừa.
- Với B AB; (A) + = ABCD chứa C nên B là thộc tính thừa. Vì vậy AB C
đƣợc thay bằng A C.
Do đó F = {A B; A D; A C ; C D}
B3: Loại các phụ thuộc hàm thừa trong F
- Xét A B
G = ACD;
+ G = {A D; A C ; C D} + A+
G nên A B không thừa (vẫn giữ nguyên F)
+ B A+
- Xét A D
G = ABCD;
+ G = {A B; A C ; C D} + A+
Phạm Hùng Phú 105
Bài tập cơ sở dữ liệu
G nên A D thừa
+ D A+
F = {A B; A C ; C D};
- Xét A C
G = AB;
+ G = {A B; C D} + A+
G nên A C không thừa
+ C A+
F ={A B; A C ; C D};
Tƣơng tự C D không thừa.
Vậy phủ tối thiểu là F = {A B; A C ; C D}.
4.2. Phép tách các lược đồ quan hệ
4.2.1. Khái niệm phép tách một lược đồ quan hệ
Việc thay thế lƣợc đồ quan hệ R = {A1, A2,..., An} bằng một tập lƣợc đồ
= {R1, ..., Rk} sao cho Ri R với i = 1, ..., k và R = R1 R2 ... Rk đƣợc gọi
là một phép tách của R.
4.2.2. Phép tách kết nối không mất thông tin
1) Khái niệm phép tách kết nối không mất thông tin
Cho = {R1, ..., Rk} là một phép tách của R; đƣợc gọi là phép tách có kết nối
không mất thông tin nếu với mỗi quan hệ r của R thì r = Ri(r).
2) Giải thuật kiểm tra phép tách kết nối không mất thông tin
Vào: Lƣợc đồ quan hệ R(U) với U = {A1, ..., An}, tập các phụ thuộc hàm F
và phép tách = {R1, ..., Rk} của R.
Ra: Kết luận phép tách có kết nối mất thông tin hay không?.
Phƣơng pháp :
B1: Lập một bảng gồm k hàng và n cột; hàng thứ i ứng với lƣợc đồ con Ri với
i = 1, ..., k; cột thứ j ứng với thuộc tính Aj với j = 1, ..., n.
B2: Tại mỗi ô (i, j) điền ký hiệu aj nếu Aj Ri và điền ký hiệu bij nếu Aj Ri.
B3: - Với mỗi phụ thuộc hàm (X Y) F thực hiện
106 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Nếu có các hàng có giá trị bằng trên X thì làm bằng các hàng đó
trên Y ( ƣu tiên làm bằng a).
- Quay lại B3 cho tới khi gặp một lƣợt không biến đổi đƣợc nữa. B4: Kiểm tra bảng kết quả - Nếu xuất hiện một hàng hàng chứa toàn a (a1, a2,. .., an ) thì phép tách có kết nối không mất thông tin
- Nếu không có hàng nào toàn a thì phép tách có kết nối mất thông tin.
3) Định lý
Cho lƣợc đồ quan hệ R có tập phụ thuộc hàm là F và = {R1, R2} là một phép
tách của R. Phép tách đƣợc gọi là phép tách có kết nối không mất thông tin đối
với F khi và chỉ khi R1 R2 R1 - R2 hoặc R1 R2 R2 - R1. Nhƣ vậy, để kiểm tra phép tách một lƣợc đồ quan hệ thành hai lƣợc đồ con có
kết nối mất thông tin không; ngoài cách áp dụng giải thuật, ta có thể áp dụng định lý
bằng cách:
B1: Tính
R1 R2; R1 - R2 ; R2 – R1 ; (R1 R2)+
B2: Kiểm tra và kết luận - Nếu (R1 R2)+ R1 - R2 hoặc (R1 R2)+ R2 – R1 thì phép tách có kết nối không mất thông tin; - Nếu (R1 R2)+ không chứa R1 - R2 và (R1 R2)+ R2 – R1 thì phép tách có kết nối mất thông tin.
Ví dụ:
a) Cho lƣợc đồ quan hệ R = A B C D E và = {R1, R2, R3, R4, R5};
Trong đó: R1= AD; R2 = AB; R3 = BE; R4 = CDE; R5 = AE. Với tập phụ thuộc hàm:
F = {A C; B C; C D; DE C; CE A}.
Kiểm tra xem có là một phép tách của R, có kết nối không mất thông tin
hay không ?.
- Trƣớc hết, ta có R1, R2, R3, R4, R5 R và R1 R2 R3 R4 R5 = R nên
là một phép tách của R.
Phạm Hùng Phú 107
Bài tập cơ sở dữ liệu - Kiểm tra xem có kết nối không mất thông tin hay không ?.
Bảng ban đầu đƣợc thiết lập nhƣ sau.
A B C D E
R1 a1 b12 b13 a4 b15
R2 a1 a2 b23 b24 b25
R3 b31 a2 b33 b34 a5
R4 b41 b42 a3 a4 a5
R5 a1 b52 b53 b54 a5
Đầu tiên ta áp dụng A C và cho các ký hiệu b13, b23 , b53 và bằng b13. Sau
đó áp dụng B C và cho b33= b13 ; kết quả ta thu đƣợc bảng
A B C D E
R1 a1 b12 b13 a4 b15
R2 a1 a2 b13 b24 b25
R3 b31 a2 b13 b34 a5
R4 b41 b42 a3 a4 a5
R5 a1 b52 b13 b54 a5
Bây giờ ta dùng C D để cho các ký hiệu a4, b24, b34 , b54 bằng nhau và
bằng a4. Thế rồi DE C cho phép làm bằng b13 và a3 và CE A cho b31, b41 bằng
với a1 và ta có bảng kết quả
A B C D E
R1 a1 b12 a3 a4 b15
R2 a1 a2 a3 a4 b25
R3 a1 a2 a3 a4 a5
R4 a1 b42 a3 a4 a5
R5 a1 b52 a3 a4 a5
Bởi vì, hàng 3 toàn a nên phép tách trên có nối không mất thông tin.
b) R = A B C D;
F = {AB C; D B; C ABD };
= {ABC, BCD}- phép tách của R.
Ta có R1 R2 = BC;
108 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
R1 - R2 = A;
R2 – R1 = D;
(R1 R2)+ = (BC)+ = ABCD A R1 R2 R1 - R2
Vậy phép tách trên có kết nối không mất thông tin.
4.2.3. Phép tách bảo toàn phụ thuộc hàm
1) Khái niệm phép tách bảo toàn phụ thuộc hàm
Cho lƣợc đồ quan hệ R có F là tập các phụ thuộc hàm và = {R1, R2, ..., Rk}
là một phép tách của R.
- Hình chiếu của tập phụ thuộc hàm F trên một mảnh Ri ký hiệu là Ri(F) gồm những phụ thuộc hàm XY của F+ mà X, Y nằm trọn trong Ri , tức là
(XY Ri ).
Ri(F) ={X YF+ XY Ri}
2) Giải thuật kiểm tra phép tách bảo toàn phụ thuộc hàm
Vào: W =
= {R1, R2, ..., Rk} - phép tách của R.
Ra: Khẳng định phép tách có bảo toàn phụ thuộc không?
Phƣơng pháp:
B1: Tính G
+ Fi = Ri (F) với i = 1, ..., k;
+ Fi
G ;
B2: Kiểm tra
G không chứa Y thì kết luận: là phép tách không bảo toàn phụ
Với mỗi X Y F thực hiện - Tính X+ - Nếu X+
thuộc hàm và kết thúc;
B3: Kết luận là phép tách bảo toàn phụ thuộc hàm.
Ví dụ: Cho sơ đồ quan hệ W =
a) R = {A, B, C, D, E};
F ={AB C; C B; B D; D E};
= {R1, R2};
Phạm Hùng Phú 109
Bài tập cơ sở dữ liệu R1 = {A, B, C, D}; R3 ={C, E};
= {R1, R2} là một phép tách của R vì R1, R2 R và R1 R2 = R
- Tính G
F1 = R1(F) = { AB C; C B; B D};
F2 = R2(F) = { C E}.
(Chú ý ta bỏ qua các phụ thuộc hàm tầm thƣờng)
G Y);
G = {AB C; C B; B D; C E};
G = D không chứa E
- Hiển nhiên AB C; C B; B D F ta có AB C; CB; B D G (thỏa mãn X + - Với D E F ta có D +
Vậy phép tách trên không bảo toàn phụ thuộc hàm.
4.3. Chuẩn hoá lược đồ quan hệ
4.3.1. Khái niệm lược đồ được chuẩn hoá và chuẩn hoá lược đồ quan hệ
Một lƣợc đồ quan hệ đƣợc gọi là ở dạng chuẩn nếu miền của mỗi thuộc tính
của nó chỉ chứa những giá trị nguyên tố (atomic). Cụ thể mỗi miền của nó không
lấy giá trị kiểu nhƣ bản ghi hay đa trị; Ngƣợc lại gọi là lƣợc đồ quan hệ không ở
dạng chuẩn.
Chuẩn hoá một lƣợc đồ quan hệ là quá trình biến đổi lƣợc đồ đó thành một
hoặc nhiều lƣợc đồ quan hệ khác ở dạng chuẩn.
4.3.2. Dạng chuẩn thứ nhất (First Normal Form, viết tắt là 1NF)
Một lƣợc đồ quan hệ R(U) đƣợc gọi là ở dạng chuẩn một (1NF) nếu miền
của mỗi thuộc tính trong U chỉ chứa những giá trị nguyên tố (atomic).
Quy ƣớc: Một lƣợc đồ quan hệ R nếu không nêu rõ nó không là 1NF thì coi nhƣ
nó đã ở dạng 1NF.
Có một cách biến đổi một lƣợc đồ quan hệ không ở dạng chuẩn về lƣợc đồ
quan hệ ở dạng chuẩn; đó là :
- Với mỗi thuộc tính có kiểu bản ghi, ta thay thuộc tính đó bằng các trƣờng
của nó.
- Với mỗi thuộc tính có kiểu đa trị, ta tách mỗi bộ của quan hệ có một tập giá
trị tại thuộc tính đó thành các bộ bằng cách kết hợp mỗi giá trị của tập giá trị đó với
110 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
các giá trị của các thuộc tính còn lại của bộ đó để tạo thành một bộ mới của quan
hệ.
4.3.3. Dạng chuẩn thứ hai (Second Normal Form, viết tắt là 2NF)
- Cho lƣợc đồ quan hệ R(U); X, Y U. Y đƣợc gọi là phụ thuộc hàm
đầy đủ (fully functional dependence) vào X nếu Y phụ thuộc hàm vào X nhƣng
không phụ thuộc hàm vào bất kỳ một tập hợp con thực sự nào của X.
- Một lƣợc đồ quan hệ R(U) đƣợc gọi là ở dạng chuẩn thứ hai nếu nó ở dạng
chuẩn thứ nhất và mỗi thuộc tính không khoá của R đều phụ thuộc hàm đầy đủ vào
khoá.
4.3.4. Dạng chuẩn thứ ba (Third Normal Form, viết tắt là 3NF)
1) Khái niệm
Một lƣợc đồ quan hệ R(U) có tập phụ thuộc hàm F đƣợc gọi là ở dạng chuẩn
thứ 3 (3NF) X A F và A X X+ = U hoặc A là thuộc tính khoá.
Hay nói một cách khác:
Không tồn tại một phụ thuộc hàm dạng X A F+ với A X và A không là
thuộc tính khoá mà X+ U.
Nhƣ vậy, muốn kiểm tra một sơ đồ quan hệ W=
3NF không?. Ta thực hiện
- Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có một
thuộc tính;
- Kiểm ta xem các phụ thuộc hàm trong F có vi phạm 3NF không?
+ Nếu có một phụ thuộc hàm X A F vi phạm 3NF thì R không ở dạng
chuẩn 3NF;
+ Ngƣợc lại R là ở dạng chuẩn 3NF.
Hơn nữa, nếu R không chứa thuộc tính không khoá thì R ở dạng chuẩn 3NF.
vì R không tồn tại một phụ thuộc hàm dạng X A F+ với A X và A không là
thuộc tính khoá mà X+ U.
Từ đó, ta có giải thuật sau:
2) Giải thuật kiểm tra một lược đồ quan hệ có ở dạng chuẩn 3NF?
Phạm Hùng Phú 111
Bài tập cơ sở dữ liệu Vào: W =
Ra: R – 3NF?
Phƣơng pháp:
B1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có
một thuộc tính;
B2 : Tìm tất cả các khóa của R (áp dụng giải thuật tìm khóa);
B3 : Tìm các thuộc tính không khóa của R
Nếu R không có thuộc tính không khoá thì R ở dạng chuẩn 3NF và kết thúc;
B4 : Kiểm ta các phụ thuộc hàm trong F có vi phạm 3NF không?
Với mỗi X A F và A X thực hiện + Tính X+;
+ Nếu X+ U và A là thuộc tính không khóa (vi phạm 3NF) thì R không
không ở dạng 3NF và kết thúc;
B5 : R là ở dạng 3NF.
3) Giải thuật tách lược đồ quan hệ thành 3NF bảo toàn phụ thuộc hàm
Vào: Lƣợc đồ quan hệ R có tập các phụ thuộc hàm F (không làm mất tính
tổng quát, giả sử rằng nó là tối thiểu).
Ra: Phép tách của R bảo toàn các phụ thuộc hàm sao cho mỗi lƣợc đồ con
đều ở dạng 3NF ứng với hình chiếu của F trên lƣợc đồ đó.
Phƣơng pháp:
B1: Nếu có các thuộc tính của R không liên quan đến một phụ thuộc hàm nào
trong F (hoặc vế trái, hoặc vế phải) thì tách chúng thành một lƣợc đồ.
B2: Với mỗi phụ thuộc hàm X A F mà lại có các phụ thuộc hàm dạng A B F và B X thì tách thành lƣợc đồ XA ứng với các phụ thuộc hàm đó và
loại các phụ thuộc hàm này khỏi F. B3: Nếu có các phụ thuộc hàm X A1; X A2 ;... ; X An thuộc F thì tách chúng thành lƣợc đồ XA1A2...An ứng với tất cả các phụ thuộc hàm đó và loại các phụ thuộc hàm này khỏi F.
B4: Với mỗi phụ thuộc hàm X A F còn lại tách thành một lƣợc đồ XA ứng với X A.
4) Giải thuật tách lược đồ quan hệ thành 3NF bảo toàn phụ thuộc hàm và có
kết nối không mất thông tin
112 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Vào: Lƣợc đồ quan hệ R và tập phụ thuộc hàm F
Ra: Phép tách của R bảo toàn các phụ thuộc hàm và có kết nối không mất
thông tin sao cho mỗi lƣợc đồ con đều ở 3NF ứng với hình chiếu của F
trên lƣợc đồ đó.
Phƣơng pháp:
B1: Tìm phủ tối thiểu thiểu của F;
B2: Tìm khoá K của R;
B3: Tách R thành 3NF bảo toàn phụ thuộc hàm; ta đƣợc phép tách
= {R1, R2, ..., Rm}.
B4: Lấy = {K}.
Chú ý: Nếu Ri K thì = {K}) – { Ri }
Và Nếu Ri K thì =
Ví dụ: Cho R = A B C DE G H có
F = {AB C; C A; C D; D E; D G }- tối thiểu.
- Ta có F – tối thiểu.
- Dễ dàng tìm đƣợc Khóa của R là K = ABH và K = CBH
- Tách R về dạng chuẩn 3NF và phép tách bảo toàn phụ thuộc hàm:
+ Với thuộc tính H không liên quan đến bất cứ phụ thuộc hàm nào trong F
nên ta tách thành R1(H).
+ Với các phụ thuộc hàm AB C và C A ta có lƣợc đồ tƣơng ứng
R2(ABC).
+ Với phụ thuộc hàm D E và D G ta có R3(DEG).
+ Với phụ thuộc hàm C D còn lại ta có R4(CD).
Kết quả cho ta các lƣợc đồ dạng chuẩn 3NF và phép tách bảo toàn phụ thuộc
hàm:
= {R1(H); R2(ABC); R3(DEG); R4(CD) }.
Ta có thể trình bày phép tách bằng sơ đồ tƣơng ứng:
Phạm Hùng Phú 113
R(ABCDEGH)
Bài tập cơ sở dữ liệu
R3(DEG)
AB C; C A; C D; D E; D G
R1(H) R2(ABC)
R4(CD) C D
D E; D G
AB C: C A - Tách R về dạng chuẩn 3NF và phép tách bảo toàn phụ thuộc hàm và có kết
nối không mất thông tin:
= {K} = {K(ABH); R2(ABC); R3(DEG); R4(CD)} hoặc
= {K(CBH); R2(ABC); R3(DEG); R4(CD)}.
4.3.2. Dạng chuẩn Boye-Codd (BCNF)
1) Khái niệm
Một lƣợc đồ quan hệ R(U) có tập phụ thuộc hàm F đƣợc gọi là ở dạng chuẩn
Boye - codd (BCNF) X A F và A X X+ = U.
2) Giải thuật kiểm tra một lược đồ quan hệ có ở dạng chuẩn BCNF?
Vào: W =
Ra: R – 3NF?
Phƣơng pháp:
- Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có một
thuộc tính;
- Kiểm tra xem các phụ thuộc hàm trong F có vi phạm BCNF không?
+ Nếu có một phụ thuộc hàm X A F vi phạm BCNF thì R không ở dạng
chuẩn BCNF;
+ Ngƣợc lại R ở dạng chuẩn BCNF
Hơn nữa, mọi lƣợc đồ có hai thuộc tính hoặc tập phụ thuộc hàm F = đều có
dạng BCNF.
Từ đó, ta có giải thuật sau:
B1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có
một thuộc tính;
B2 : Kiểm ta các phụ thuộc hàm trong F có vi phạm BCNF không?
114 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
- Nếu R chỉ có hai thuộc tính hoặc tập phụ thuộc hàm F = thì R ở dạng
chuẩn BCNF và kết thúc;
- Với mỗi X A F và A X thực hiện + Tính X+; + Nếu X+ U (vi phạm BCNF) thì R không không ở dạng chuẩn BCNF
và kết thúc;
B3 : R là ở dạng chuẩn BCNF. 3) Giải thuật tách lược đồ quan hệ thành BCNF có kết nối không mất thông
tin
Vào: Lƣợc đồ quan hệ R có tập phụ thuộc hàm F.
Ra: Phép tách của R có kết nối không mất thông tin sao cho mỗi lƣợc đồ
quan hệ trong phép tách đều ở BCNF đối với phép chiếu của F trên lƣợc
đồ đó.
Phƣơng pháp: Sử dụng thủ tục đệ quy
BEGIN
PROCEDURE BCNF(R, F)
- Tìm một phụ thuộc hàm trong F vi phạm BCNF (X Y F mà X+ U);
- Nếu không có thì dừng;
- Nếu có X Y F vi phạm BCNF thì
+ Tách R thành R1 = XY và R2 = R –Y;
+ Tính F1 = R1(F);
+ Tính F2 = R2(F);
+ BCNF(R1, F1);
+ BCNF(R2, F2)
END;
Ví dụ: Cho sơ đồ quan hệ W = < R, F>
Trong đó: R = ( A B C D E );
F = {AB C; C D; D E }
Áp dụng giải thuật trên cho
- C D vi phạm BCNF vì C + = CDE U.
- Tách R thành R1(CD) và R2(ABCE).
Phạm Hùng Phú 115
Bài tập cơ sở dữ liệu - Ta có F1= {C D}; F2 = {AB C; C E }
- Áp dụng giải thuật trên cho
phạm BCNF nên dừng tách R1.
- Áp dụng giải thuật trên cho
- Tách R1 thành R21(CE) và R22(ABC).
- Ta có F21= {C E}; F22 = {AB C}
- Áp dụng giải thuật trên cho
phạm BCNF nên dừng tách R21.
- Áp dụng giải thuật trên cho
phạm BCNF nên dừng tách R22.
R(ABCDE) Khóa = AB
Có thể biểu diễn quá trình tách trên qua sơ đồ sau:
AB C; C D; D E
C D AB C; C E R1(CD) Khóa = C R2(ABCE) Khóa = AB
C E R21(CE) Khóa = C R22(ABC) Khóa = AB AB C;
Kết quả thu đƣợc = {R1, R21,, R22}. Vì R1, R21 có chung khoá là C, nên có thể
gộp lại thành R20(CDE). Kết quả = { R20,, R22}.
Ta cũng có thể xét D E vi phạm BCNF vì D + = DE U. Do vậy, ta tách R
thành R1(DE) và R2(ABCD) và tính đƣợc F1={D E}; F2={AB C; C D} và
nhận thấy R1 đã ở dạng BCNF; Chỉ có R2 chƣa ở dạng BCNF. Ta tiếp tục tách R2
và có thể biểu diễn quá trình tách qua sơ đồ:
116 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
R(ABCDE) Khóa = AB
AB C; C D; D E
R1(DE) Khóa = D R2(ABCD) Khóa = AB AB C; C D
D E
R21(CD) Khóa = C
C D R22(ABC) Khóa = AB AB C
Kết quả = ( R1, R21,, R22).
B. BÀI TẬP
4.1. Bài tập về phụ thuộc hàm
4.1.1. Cho cơ sở dữ liệu quản lý tuyển sinh của một trƣờng. Hãy tìm các phụ thuộc hàm trong mỗi quan hệ sau:
1) DS (SBD, Hoten, Ns, Gt, Qq)
2) Phach(SBD, Mon, SP)
3) DiemThi(Mon, SP, Diem)
Lời giải
1) Trong LĐQH DS(SBD, Hoten, Ns, Gt, Qq) có tập phụ thuộc hàm sau:
{SBD Hoten, Ns, Gt, Qq}
2) Trong LĐQH Phach(SBD, Mon, SP) có tập phụ thuộc hàm sau:
{Mon, SBD SP} 3) Trong LĐQH DiemThi(Mon, SP, Diem) có tập phụ thuộc hàm sau:
{Mon, SP Diem}
4.1.2. Trong cơ sở dữ liệu quản lý lƣơng của một cơ quan có quan hệ
Luong(MaNV, Hoten, NS, GT, DC, NgayVN, NgayTL, HSL, HSPC, SoTien)
Hãy tìm các phụ thuộc hàm trong quan hệ trên.
Trong LĐQH
Phạm Hùng Phú 117
Bài tập cơ sở dữ liệu Luong(MaNV, Hoten, NS, GT, DC, NgayVN, NgayTL, HSL, HSPC, SoTien)
có tập các phụ thuộc hàm sau:
{Ma NV Hoten, NS, GT, DC, NgayVN, NgayTL, HSL, HSPC, SoTien;
HSL, HSPC SoTien}
4.1.3. Hãy tìm tập phụ thuộc hàm của lƣợc đồ quan hệ biểu diễn cho tập hóa đơn
mua hàng của một của hàng.
HDMH(SHHD, NgayHD, MaNCC, TenNCC, GT, DC, MaMH, TenMH, DVT,
SLM, DGM, ThTien)
Trong đó:
SHHD – Số hiệu hóa đơn;
NgayHD – ngày ghi hóa đơn;
MaNCC – Mã nhà cung cấp;
TenNCC – Tên nhà cung cấp;
GT – Giới tính;
DC – Địa chỉ;
MaMH – Mã mặt hàng;
TenMH – Tên mặt hàng;
DVT – Đơn vị tính;
SLM – Số lượng mua;
DGM – Đơn giá mua;
ThTien – Thành tiền.
Giải:
Tập phụ thuộc hàm là
F = {SHHD NgayghiHD, MaNCC; MaNCCTenNCC, GT,DC;
MaMH TenMH, DVT; SHHD, MaMH SLM, DGM; SLM, DGM ThTien}
4.1.4. Cho lƣợc đồ quan hệ R có tập các phụ thuộc hàm
F = {ABC DF; AC D; AB E; D E; DE F; BF G; CE H}
Chứng minh:
1) BD FG.
2) ABC GH
118 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
3) AC DEFH
4) CD EFH
Giải:
1) BD FG. - Cách 1
D E D DE (tăng trƣởng D) mà DE F D F (luật bắc cầu)
BD BF (tăng trƣởng B) BD F (luật tách)
mặt khác BF G BD G (luật bắc cầu)
BD FG (luật hợp)
- Cách 2 Tính (BD)+ X0 = BD
X1 = BDE (vì D E) X2 = BDEF (vì D E; DE F) X3 = BDEFG (vì D E; DE F; BF G) X4 = BDEFG (vì D E; DE F; BF G)
Vì X3 = X4 nên (BD)+ = BDEFG Ta có: (BD)+ = BDEFG FG nên BD FG
2) ABC GH - Cách 1
Ta có ABC DF ABC F (luật tách) và ABC B (luật phản xạ) nên ABC
BF (luật hợp) mà BF G ABC G (luật bắc cầu)
ABC AB; ABC C (luật phản xạ)
Mà AB E ABC E (luật bắc cầu) ABC CE (luật hợp); mặt khác CE
H nên
ABC H (luật bắc cầu)
vậy ABC GH (luật hợp) - Cách 2 Tính (ABC)+ X0 = ABC
X1 = ABCDEF (vì ABC DF; AC D; AB E) X2 = ABCDEFGH
(vì ABC DF; AC D; AB E; D E; DE F; BF G; CE H)
X3 = ABCDEFGH
Phạm Hùng Phú 119
Bài tập cơ sở dữ liệu
(vì ABC DF; AC D; AB E; D E; DE F; BF G; CE H)
Vì X2 = X3 nên (ABC)+ = ABCDEFGH Ta có: (ABC)+ = ABCDEFGH GH nên ABC GH
3) AC DEFH
Cách 1
AC D; D E AC E (luật bắc cầu) và AC DE (luật hợp) mà DE F
AC F (luật bắc cầu)
AC E AC CE (luật tăng trƣởng) mà CE H AC H (luật bắc cầu)
Vậy AC DEFH (luật hợp)
- Cách 2 Tính (AC)+
X0 = AC X1 = ACD (vì AC D) X2 = ACDE (vì AC D; D E) X3 = ACDEFH (vì AC D; D E; DE F; CE H) X4 = ACDEFH (vì AC D; D E; DE F; CE H)
Vì X3 = X4 nên (AC)+ = ACDEFH Ta có: (AC)+ = ACDEFH DEFH nên AC DEFH (đpcm)
4) CD EFH
- Cách 1
D E CD CE (luật tăng trƣởng) mà CE H CD H (luật bắc cầu) ;
CD CE CD E (luật tách) ; CD D (luật phản xạ) CD DE (luật hợp) mà
DE F nên CD F (luật bắc cầu)
vậy CD EFH (luật hợp) - Cách 2 Tính (CD)+
X0 = CD X1 = CDE (vì D E) X2 = CDEFH (vì D E; DE F;CE H) X3 = CDEFH (vì D E; DE F;CE H)
Vì X2 = X3 nên (CD)+ = CDEFH Ta có: (CD)+ = CDEFH EFH nên CD EFH
120 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
4.1.5. Cho lƣợc đồ quan hệ R có tập các phụ thuộc hàm
1) F = {AB E; AG I; BE I; E G; GI H}
Chứng minh AB GHI.
2) F = {AB C; B D; CD E; CE GH; G A}
Chứng minh AB E và AB G.
Giải:
1) AB GHI.
- AB E; E G AB G (luật bắc cầu)
- AB E AB BE (luật tăng trƣởng); mà BE I AB I (luật bắc cầu)
AB GI (luật hợp); mà GI H nên AB H (luật bắc cầu)
vậy AB GHI (luật hợp)
2) AB E và AB G.
- Ta có AB C; AB B (luật phản xạ) mà B D AB D (luật bắc cầu)
AB CD (luật hợp); mà CD E nên AB E (luật bắc cầu)
- Ta có AB C; AB E AB CE (luật hợp); mà CE GH nên AB GH
(luật bắc cầu) AB G (luật tách)
4.1.5. Cho lƣợc đồ quan hệ R có tập các phụ thuộc hàm:
F = {AB D; BC EF; CD E; CE GH};
Tìm các bao đóng của tập các thuộc tính: (AB)+, (CD)+, (BC)+, (CE)+.
Giải: 1) (AB)+
X0 = AB X1 = ABD (vì AB D) X2 = ABD (vì AB D) Vì X1 = X2 nên (AB)+ = ABD
2) (CD)+
X0 = CD X1 = CDE (vì CD E) X2 = CDEGH (vì CD E; CE GH) X3 = CDEGH (vì CD E; CE GH)
Phạm Hùng Phú 121
Bài tập cơ sở dữ liệu Vì X2 = X3 nên (CD)+ = CDEGH
3) (BC)+
X0 = BC X1 = BCEF (vì BC EF) X2 = BCEFGH (vì BC EF; CE GH) X3 = BCEFGH (vì BC EF; CE GH) Vì X2 = X3 nên (BC)+ = BCEFGH
4) (CE)+
X0 = CE X1 = CEGH (vì CE GH) X2 = CEGH (vì CE GH) Vì X1 = X2 nên (CE)+ = CEGH
4.1.6. Cho lƣợc đồ quan hệ R có tập các phụ thuộc hàm :
F = {AB C; B D; CD E; CE GH; G A}
Tính các bao đóng của tập các thuộc tính: (AB)+, (CD)+, (GA)+, (CE)+.
1) (AB)+ :
X0 = AB X1 = ABCD (vì AB C; B D) X2 = ABCDE (vì AB C; B D; CD E) X3 = ABCDEGH (vì AB C; B D; CD E; CE GH) X4 = ABCDEGH (vì AB C; B D; CD E; CE GH; G A) Vì X3 = X4 nên (AB)+ = ABCDEGH
2) (CD)+ :
X0 = CD X1 = CDE (vì CD E) X2 = CDEGH (vì CD E; CE GH) X3 = ACDEGH (vì CD E; CE GH; G A) X4 = ACDEGH (vì CD E; CE GH; G A) Vì X3 = X4 nên (CD)+ = ACDEGH
3) (GA)+ :
X0 = GA X1 = GA (vì G A)
122 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Vì X0 = X1 nên (GA)+ = GA
4) (CE)+:
X0 = CE X1 = CEGH (vì CE GH) X2 = CEGH (vì CE GH) Vì X1 = X2 nên (CE)+ = CEGH
4.1.7. Cho sơ đồ quan hệ W =
R = {A, B, C, D} có tập phụ thuộc hàm:
1) F = {A B; A C};
Phụ thuộc hàm nào trong dãy sau đƣợc suy dẫn từ F:
- A D;
- C D;
- BC A;
- A BC
2) F = {A B; BC D};
Phụ thuộc hàm nào trong dãy sau đƣợc suy dẫn từ F:
- C D;
- A D;
- AD C;
- BC A;
- B CD.
Chú ý: Để kiểm tra X Y có đƣợc suy dẫn từ tập phụ thuộc hàm F không?; ta chỉ
F;
việc; - Tính X+
F Y thì X Y đƣợc suy dẫn ra từ F
- Nếu X+
ngƣợc lại X Y không đƣợc suy dẫn ra từ F hay X Y F+
Giải:
1) F = {A B, A C}
- A D;
Tính A+
Phạm Hùng Phú 123
Bài tập cơ sở dữ liệu
X0 = A; X1 = ABC (vì A B, A C) X2 = ABC (vì A B, A C) Vì X1 = X2 nên A+ = ABC Ta có ABC = A+ không chứa D nên A D không đƣợc suy dẫn ra từ F.
- C D;
Tính C+ X0 = C X1 = C (vì không tìm thấy phụ thuộc hàm do C xác định) Vì X0 = X1 nên C+ = C Ta có: C+ = C không chứa D nên C D không đƣợc suy diễn ra từ F.
- BC A;
Tính (BC)+ X0 = BC X1 = BC(do không tìm thấy phụ thuộc hàm do B,C xác định) Vì X0 = X1 nên (BC)+ = BC Ta có: (BC)+ = BC không chứa A nên BC A không đƣợc suy diễn từ F.
- A BC;
Ta có A+ = ABC (chứng minh trên) BC nên A BC đƣợc suy dẫn từ F.
2) F = {A B; BC D}
- C D;
Tính C+. X0 = C X1 = C(vì không tìm thấy phụ thuộc hàm do C xác định) Vì X0 = X1 nên C+ = C Ta có: C+ = C không chứa D nên C D không đƣợc suy diễn từ F.
- A D;
Tính A+
X0 = A X1 = AB (vì A B) X2 = AB (vì A B)
Vì X1 = X2 nên A+ = AB Ta có: A+ = AB không chứa D nên A D không đƣợc suy diễn từ F.
- AD C; Tính (AD)+
124 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
X0 = AD X1 = ABD (vì A B) X2 = ABD (vì A B) Vì X1 = X2 nên (AD)+ = ABD Ta có: (AD)+ = ABD không chứa C nên AD C không đƣợc suy diễn từ F.
- BC A;
Tính (BC)+
X0 = BC X1 = BCD (vì BC D) X2 = BCD (vì BC D) Vì X1 = X2 nên (BC)+ = BCD Ta có: (BC)+ = BCD không chứa A nên BC A không đƣợc suy diễn từ F.
- B CD; Tính B+
X0 = B X1 = B (vì không tìm thấy phụ thuộc hàm do B xác định)
Vì X0 = X1 nên B+ = B Ta có: B+ = B không chứa CD nên B CD không đƣợc suy diễn từ F.
4.1.8. Cho LĐQH R có tập các phụ thuộc hàm:
F = {AB E; AG I; BE I; E G; GI H}
Sử dụng giải thuật tìm X+, chứng minh:
1) AB GHI;
2) BE GHI.
Giải:
1) AB GHI;
Tính (AB)+
X0 = AB X1 = ABE (vì AB E) X2 = ABEGI (vì AB E; BE I; E G) X3 = ABEGHI (vì AB E; AG I; BE I; E G; GI H) X4 = ABEGHI (vì AB E; AG I; BE I; E G; GI H)
Vì X3 = X4 nên (AB)+ = ABEGHI Ta có: (AB)+ = ABEGHI GHI nên AB GHI
Phạm Hùng Phú 125
Bài tập cơ sở dữ liệu 2) BE GHI;
Tính (BE)+
X0 = BE X1 = BEGI (vì BE I; E G) X2 = BEGHI (vì BE I; E G; GI H) X3 = BEGHI (vì BE I; E G; GI H)
Vì X2 = X3 nên (BE)+ = BEGHI Ta có: (BE)+ = BEGHI GHI nên BE GHI
4.1.9. Cho lƣợc đồ quan hệ R có tập các phụ thuộc hàm
F = {AB C; B D; CD E; CE GH; G A} Sử dụng giải thuật tìm X+, chứng minh:
1) AB E và AB G;
2) CB ADEGH.
Giải:
1) AB E và AB G; Tính (AB)+
X0 = AB X1 = ABCD (vì AB C; B D) X2 = ABCDE (vì AB C; B D; CD E) X3 = ABCDEGH (vì AB C; B D; CD E; CE GH) X4 = ABCDEGH (vì AB C; B D; CD E; CE GH; G A)
Vì X3 = X4 nên (AB)+ = ABCDEGH Ta có (AB)+ = ABCDEGH chứa E và G nên AB E và AB G
2) CB ADEGH Tính (CB)+
X0 = CB X1 = CBD (vì B D) X2 = BCDE (vì B D; CD E) X3 = BCDEGH (vì B D; CD E; CE GH) X4 = ABCDEGH (vì B D; CD E; CE GH; G A) X5 = ABCDEGH (vì AB C; B D; CD E; CE GH; G A)
Vì X4 = X5 nên (CB)+= ABCDEGH Ta có: (CB)+= ABCDEGH ADEGH nên CB ADEGH
126 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
4.1.10. Cho lƣợc đồ quan hệ R có tập các phụ thuộc hàm
F = {ABC DF; AC D; AB E; D E; DE F; BF G; CE H} Sử dụng giải thuật tìm X+, chứng minh:
1) BD FG;
2) ABC GH;
3) AC DEFH;
4) CD EFH.
Giải:
1) BD FG;
Tính (BD)+
X0 = BD X1 = BDE (vì D E) X2 = BDEF (vì D E; DE F) X3 = BDEFG (vì D E; DE F; BF G) X4 = BDEFG (vì D E; DE F; BF G)
Vì X3 = X4 nên (BD)+= BDEFG Ta có: (BD)+= BDEFG FG nên BD FG
2) ABC GH;
Tính (ABC)+
X0 = ABC X1 = ABCDEF (vì ABC DF; AC D; AB E) X2 = ABCDEFGH
(vì ABC DF; AC D; AB E; D E; DE F; BF G;
CE H) X3 = ABCDEFGH
(vì ABC DF; AC D; AB E; D E; DE F; BF G;
CE H)
Vì X2 = X3 nên (ABC)+ = ABCDEFGH Ta có: (ABC)+ = ABCDEFGH GH nên ABC GH
3) AC DEFH; Tính (AC)+
X0 = AC X1 = ACD (vì AC D) X2 = ACDE (vì AC D; D E)
Phạm Hùng Phú 127
Bài tập cơ sở dữ liệu
X3 = ACDEFH (vì AC D; D E; DE F; CE H) X4 = ACDEFH (vì AC D; D E; DE F; CE H)
Vì X3 = X4 nên (AC)+ = ACDEFH Ta có: (AC)+ = ACDEFH DEFH nên AC DEFH
4) CD EFH;
Tính (CD)+
X0 = CD X1 = CDE (vì D E) X2 = CDEFH (vì D E; DE F; CE H) X3 = CDEFH (vì D E; DE F; CE H)
Vì X2 = X3 nên (CD)+ = CDEFH Ta có: (CD)+ = CDEFH EFH nên CD EFH.
4.1.11. Hãy tìm khoá của sơ đồ quan hệ sau:
W= < R, F>
Trong đó:
R = ( ABCDEF);
F= {AB C; C D; D E; DE F}.
Giải
Sử dụng giải thuật tìm khóa cải tiến
Bƣớc 1: K = AB (A, B chỉ nằm ở vế trái) Bƣớc 2: - Tính K+ = (AB)+ theo giải thuật tìm bao đóng của tập thuộc tính ta có:
X0 = AB X1 = ABC (vì AB C) X2 = ABCD (vì AB C; C D) X3 = ABCDE (vì AB C; C D; D E) X4 = ABCDEF (vì AB C; C D; D E; DE F) X5 = ABCDEF (vì AB C; C D; D E; DE F)
Vì X4 = X5 nên K+ = (AB)+ = ABCDEF
- Ta có K+ = (AB)+ = ABCDEF = U nên K = AB là khóa duy nhất của R.
4.1.12. Hãy tìm các khoá của mỗi sơ đồ quan hệ sau:
1) W= < R, F>; trong đó: R = ( ABCD);
F = {AB C; D B; A B; C ABD}.
128 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
2) W =
F={AB C; C A; BC D; ACD B; D EG; BE C; CG BD;
E G}. Giải:
1) Sử dụng giải thuật tìm khóa cải tiến
B1: K = B2: - K+= U (= ABCD) nên R có thể có nhiều khóa - G = ABCD
- K = ABCD - Lần lƣợt loại bỏ các thuộc tính thừa trong G
+ Với D G ta tính (K-A)+= (ABC)+ theo giải thuật tìm bao đóng của tập
thuộc tính có:
X0 = ABC X1 = ABCD (vì AB C; A B; C ABD) X2 = ABCD (vì AB C; D B; A B; C ABD) Vì X1 = X2 nên ta có (ABC)+ = ABCD = U nên K = ABC
+ Với C G ta tính (K-C)+= (AB)+ theo giải thuật tìm bao đóng của tập thuộc
tính có:
X0 = AB X1 = ABC (vì AB C; A B) X2 = ABCD (vì AB C; A B; C ABD) X3 = ABCD (vì AB C; D B; A B; C ABD) Vì X1 = X2 nên ta có (AB)+ = ABCD = U nên K = AB
+ Với B G ta tính (K-B)+= A+ theo giải thuật tìm bao đóng của tập thuộc
tính có:
X0 = A X1 = AB (vì A B) X2 = ABC (vì AB C; A B) X3 = ABCD (vì AB C; A B; C ABD) X4 = ABCD (vì AB C; D B; A B; C ABD)
Vì X3 = X4 nên ta có A+ = ABCD = U nên K = A
+ Với A G ta tính (K-A)+= + =
B3: K = A là khóa của R Thay đổi thứ tự loại bỏ các thuộc tính thừa trong G, ta tìm đƣợc một khóa khác của R là K = C.
Phạm Hùng Phú 129
Bài tập cơ sở dữ liệu 2) Sử dụng giải thuật tìm khóa cải tiến
B1: K = B2: - K+= U (= ABCDEG) nên R có thể có nhiều khóa - G = ABCDEG
- K = ABCDEG - Lần lƣợt loại bỏ các thuộc tính thừa trong G
+ Với G ta tính (ABCDE)+ theo giải thuật tìm bao đóng của tập thuộc tính
có:
X0 = ABCDE X1 = ABCDEG
(vì AB C; C A; BC D; ACD B; D EG; BE C; E G)
(vì AB C; C A; BC D; ACD B; D EG; X2 = ABCDEG
BE C; CG BD; E G) Vì X1 = X2 nên ta có (ABCDE)+ = ABCDEG = U nên K = ABCDE + Với E G ta tính (ABCD)+ theo giải thuật tìm bao đóng của tập thuộc tính có:
X0 = ABCD X1 = ABCDEG (vì AB C; C A; BC D; ACD B; D EG)
(vì AB C; C A; BC D; ACD B; D EG; X2 = ABCDEG
BE C; CG BD; E G) Vì X1 = X2 nên ta có (ABCD)+ = ABCDEG = U nên K = ABCD
+ Với D G ta tính (ABC)+ theo giải thuật tìm bao đóng của tập thuộc tính có:
X0 = ABC X1 = ABCD (vì AB C; C A; BC D)
(vì AB C; C A; BC D; ACD B; D EG; X2 = ABCDEG (vì AB C; C A; BC D; ACD B; D EG) X3 = ABCDEG
BE C; CG BD; E G)
Vì X2 = X3 nên ta có (ABC)+ = ABCDEG = U nên K = ABC + Với C G ta tính (AB)+ theo giải thuật tìm bao đóng của tập thuộc tính có:
X0 = AB X1 = ABC (vì AB C) X2 = ABCD (vì AB C; C A; BC D)
(vì AB C; C A; BC D; ACD B; D EG; X3 = ABCDEG (vì AB C; C A; BC D; ACD B; D EG) X4 = ABCDEG
BE C; CG BD; E G)
Vì X3 = X4 nên ta có (AB)+ = ABCDEG = U nên K = AB
130 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
+ Với B K ta tính A+ theo giải thuật tìm bao đóng của tập thuộc tính có:
X0 = A X1 = A (vì không tìm thấy phụ thuộc hàm do A xác định) Vì X0 = X1 nên ta có A+ = A U nên K = AB
+ Với A K ta tính B+ theo giải thuật tìm bao đóng của tập thuộc tính có:
X0 = B X1 = B (vì không tìm thấy phụ thuộc hàm do B xác định) Vì X0 = X1 nên ta có B+ = B U nên K = AB
Vậy K = AB là khóa của quan hệ R.
Để tìm các khóa khác, ta thay đổi thứ tự loại bỏ các thuộc tính thừa trong G.
4.1.13. Cho sơ đồ quan hệ W,= < R, F> ; trong đó R = (ABCDEF) và
1) F = {AB C; B D; D E}.
2) F = {AB C; CA; D E}.
3) F = {AB C; CB ; B D; D E}.
4) F = {AB C; CB ; B D; B E}.
5) F = {AB C; A D; A E, EF }.
a) Hãy tìm khóa của mỗi sơ đồ quan hệ trên bằng định nghĩa khóa;
b) Hãy tìm tất cả các khóa của mỗi sơ đồ quan hệ trên bằng giải thuật tìm khóa.
Giải
1) F = {AB C; B D; D E} a) Tìm khóa của SĐQH bằng định nghĩa
Bƣớc 1: Khóa của R là K = ABF Bƣớc 2: Chứng minh K là khóa bao hàm. Ta tính K+ X0 = ABF X1 = ABCDF (vì AB C; B D) X2 = ABCDEF (vì AB C; B D; D E) X3 = ABCDEF (vì AB C; B D; D E) Vì X2 = X3 nên K+ = (AB)+ = ABCDEF =U. Vậy K là khóa bao hàm. Bƣớc 3: Chứng minh K cực tiểu + Với A K ta tính (BF)+ theo giải thuật tìm bao đóng của tập thuộc tính có:
X0 = BF X1 = BDF (vì B D) X2 = BDEF (vì B D; D E)
Phạm Hùng Phú 131
Bài tập cơ sở dữ liệu
X3 = BDEF (vì B D; D E) Vì X2 = X3 nên ta có B+ = BDEF U
+ Với B K ta tính (AF)+ theo giải thuật tìm bao đóng của tập thuộc tính có:
X0 = AF X1 = AF (vì không tìm thấy phụ thuộc hàm do A xác định) Vì X0 = X1 nên ta có A+ = AF U
+ Với F K ta có (AB)+ = ABCDE U Vậy K cực tiểu
b) Tìm tất cả các khóa của R bằng giải thuật tìm khóa
Sử dụng giải thuật tìm khóa cải tiến
Bƣớc 1: K = ABF (A, B chỉ nằm ở vế trái, F không nằm trong bất cứ phụ
thuộc hàm nào)
Bƣớc 2: Tính K+ = (ABF)+ = ABCDEF = U (tính ở phần a) nên K = ABF là
khóa duy nhất của R
2) F = {AB C; C A; D E}
a) Tìm khóa của R bằng định nghĩa
Bƣớc 1: Khóa của R là K = ABDF Bƣớc 2: Chứng minh K là khóa bao hàm. Ta tính K+ X0 = ABDF
X1 = ABCDEF (vì AB C; D E) X2 = ABCDEF (vì AB C; C A; D E) Vì X1 = X2 nên K+ = (ABDF)+ = U. Vậy K là khóa bao hàm
Bƣớc 3: Chứng minh K cực tiểu +Với D K ta tính (ABF)+ theo giải thuật tìm bao đóng của tập thuộc tính có:
X0 = ABF X1 = ABCF (vì AB C; C A) X2 = ABCF (vì AB C; C A) Vì X1 = X2 nên (AB)+ = ABCF U
+Với B K ta tính (ADF)+ theo giải thuật tìm bao đóng của tập thuộc tính có:
X0 = ADF X1 = ADEF (vì D E) X2 = ADEF (vì D E) Vì X1 = X2 nên (AD)+ = ADEF U
+Với A K ta tính (BDF)+ theo giải thuật tìm bao đóng của tập thuộc tính có:
X0 = BDF
132 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
X1 = BDEF (vì D E) X2 = BDEF (vì D E) Vì X1 = X2 nên (BDF)+ = BDEF U Vậy K cực tiểu
b) Tìm tất cả các khóa của R bằng giải thuật tìm khóa
Sử dụng giải thuật tìm khóa cải tiến
Bƣớc 1: K = BDF (B, D chỉ nằm ở vế trái; F không nằm trong bất cứ phụ
thuộc hàm nào)
Bƣớc 2: -Tính K+ = (BDF)+ = BDEF (tính ở phần a) U. Vậy R có thể có
nhiều khóa.
- G = AC (các thuộc tính nằm ở cả hai vế trong tập phụ thuộc hàm F)
- K = ABCDF
- Loại bỏ các thuộc tính thừa trong G + Với A G ta có (K-A)+ = (BCDF)+.
X0 = BCDF X1 = ABCDEF (vì C A; D E) X2 = ABCDEF (vì AB C; C A; D E) Vì X1 = X2 nên (K-A)+ = (BCD)+ = ABCDEF = U. Do đó K = BCDF
+ Với C G ta có (K-C)+ = (BDF)+ = BDEF U Bƣớc 3: Vậy K = BCD là khóa của R
Nếu loại bỏ các thuộc tính thừa trong G theo thứ tự loại C trƣớc, A sau ta thu đƣợc
K = ABDF là một khóa khác của R
Vậy R có tất cả 2 khóa là : BCDF và ABDF.
3) F = {AB C; C B; B D; D E} a) Tìm khóa của R bằng định nghĩa Bƣớc 1: Khóa của R là K = ABF Bƣớc 2: Chứng minh K là khóa bao hàm. Ta tính K+ X0 = ABF X1 = ABCDF (vì AB C; B D) X2 = ABCDEF (vì AB C; C B; B D; D E)
X3 = ABCDEF (vì AB C; C B; B D; D E)
Vì X2 = X3 nên K+ = (ABF)+ = ABCDEF = U. Vậy K là khóa bao hàm
Bƣớc 3: Chứng minh K cực tiểu +Với B K ta tính (AF)+ = AF U +Với A K ta tính (BF)+ = BDEF U
Phạm Hùng Phú 133
Bài tập cơ sở dữ liệu
+ Với F K ta tính (AB)+ = ABCDEF U Vậy K cực tiểu
b) Tìm tất cả các khóa của R bằng giải thuật tìm khóa
Sử dụng giải thuật tìm khóa cải tiến
Bƣớc 1: K = AF (A chỉ nằm ở vế trái, F không nằm trong bất cứ phụ thuộc
hàm nào)
Bƣớc 2: Tính K+ = (AF)+ = AF U. Vậy R có thể có nhiều khóa + G = BCD (các thuộc tính nằm ở cả hai vế trong tập phụ thuộc hàm F)
+ K = ABCDF
+ Loại bỏ các thuộc tính thừa trong G
- Với D G ta có (K-D)+ = (ABCF)+ = ABCDEF = U. Vậy K = ABCF - Với C G ta có (K-C)+ = (ABF)+ = ABCDEF = U. Vậy K = ABF - Với B G ta có (K-B)+ = (AF)+ = AF U.
Bƣớc 3: Vậy K = ABF là khóa của R
Nếu thay đổi thứ tự loại bỏ các thuộc tính trong G ta tìm đƣợc khóa là:ACF
Vậy R có tất cả 2 khóa là ABF và ACF
4) F = {AB C; C B; B D; B E} a) Tìm khóa của R bằng định nghĩa
Bƣớc 1: Khóa của R là K = ABF
Bƣớc 2: Chứng minh K là khóa bao hàm. Tính K+: X0 = ABF
X1 = ABCDEF (vì AB C; B D; B E) X2 = ABCDEF (vì AB C; C B; B D; B E) Vì X1 = X2 nênK+ = (ABF)+ = ABCDEF = U.
Vậy K là khóa bao hàm
Bƣớc 3: Chứng minh K cực tiểu
+Với B K ta tính (AF)+ = AF U +Với A K ta tính (BF)+ = BDEF U + Với F K ta tính (AB)+ = ABCDE U Vậy K cực tiểu
b) Tìm tất cả các khóa của R bằng giải thuật tìm khóa
Bƣớc 1: K = AF (A chỉ nằm ở vế trái; F không nằm trong bất cứ phụ thuộc
hàm nào)
Bƣớc 2: K+ = (AF)+ = AF U. Vậy R có thể có nhiều khóa
134 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
+ G = BC (các thuộc tính nằm ở cả hai vế trong tập phụ thuộc hàm F)
+ K = ABCF
+ Loại bỏ các thuộc tính thừa trong G
- Với C G ta có (K-C)+ = (ABF)+ = ABCDEF = U. Vậy K = ABF - Với B G ta có (K-B)+ = (AF)+ = AF U.
Bƣớc 3: Vậy K = ABF là khóa của R
Nếu thay đổi thứ tự loại bỏ các thuộc tính trong G ta tìm đƣợc khóa khác là:ACF Vậy R có tất cả 2 khóa là ABF và ACF
5) F = {AB C; A D; A E; E F}
a) Tìm khóa của R bằng định nghĩa
Bƣớc 1: Khóa của R là K = AB
Bƣớc 2: Chứng minh K là khóa bao hàm. Tính K+: X0 = AB X1 = ABCDE (vì AB C; A D; A E) X2 = ABCDEF (vì AB C; A D; A E; E F) X3 = ABCDEF (vì AB C; A D; A E; E F)
Vì X2 = X3 nên K+ = (AB)+ = ABCDEF = U. Vậy K là khóa bao hàm
Bƣớc 3: Chứng minh K cực tiểu
+Với B K ta tính A+ = ADEF U +Với A K ta tính B+ = B U Vậy K cực tiểu
b) Tìm tất cả các khóa của R bằng giải thuật tìm khóa
Bƣớc 1: K = AB (A, B chỉ nằm ở vế trái) Bƣớc 2: K+ = (AB)+ = ABCDEF (tính ở phần a) = U. Vậy K = AB là khóa
duy nhất của R.
4.1.14. Cho các sơ đồ quan hệ W= < R, F> với R = (ABCDEFG) và
1) F = {ABC DE; B C; D E; DE F}
2) F = {ABC EF; AB CD; D E; E F}
3) F = {ABC DEF; AB C; D EF}
4) F = {AB CDE; AC D; D E; E F}
5) F = {A BCD; BD C; D E; D F}
Phạm Hùng Phú 135
Bài tập cơ sở dữ liệu
6) F = {AB CD; D E; CDE F}
7) F = {A BCD; BC DE; DE F}
8) F = {ABC D; A C; D E; DE F}
9) F = {C A; C D; ACD BE};
10) F = {AB C; AD DEF; D E; E G}
11) F = {AB C; C B; D E; E G}
Hãy tìm tất cả các khóa của mỗi sơ đồ quan hệ trên bằng giải thuật tìm khóa.
Giải:
1) F = {ABC DE; B C; D E; DE F} Bƣớc 1: K = ABG (A, B chỉ nằm ở vế trái; G không nằm trong bất cứ phụ thuộc hàm nào) Bƣớc 2: K+ = (ABG)+; Áp dụng giải thuật tìm bao đóng của tập thuộc tính. Ta có:
X0 = ABG X1 = ABCG (vì B C) X2 = ABCDEG (vì ABC DE; B C) X3 = ABCDEFG (vì ABC DE; B C; D E; DE F) X4 = ABCDEFG (vì ABC DE; B C; D E; DE F) Vì X3 = X4 nên K+ = (ABG)+ = ABCDEFG = U.
Vậy K = ABG là khóa duy nhất của R.
2) F = {ABC EF; AB CD; D E; E F}
Bƣớc 1: K = ABG (A, B chỉ nằm ở vế trái; G không nằm trong bất cứ phụ thuộc
hàm nào) Bƣớc 2: K+ = (ABG)+; Áp dụng giải thuật tìm bao đóng của tập thuộc tính. Ta có:
X0 = ABG X1 = ABCDG (vì AB CD) X2 = ABCDEFG (vì ABC EF; AB CD; D E) X3 = ABCDEFG (vì ABC EF; AB CD; D E; E F) Vì X2 = X3 nên ta có K+ = (ABG)+ = ABCDEFG = U Vậy K = ABG là khóa duy nhất của R.
3) F = {ABC DEF; AB C; D EF}
136 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Bƣớc 1: K = ABG (A, B chỉ nằm ở vế trái; G không nằm trong bất cứ phụ thuộc
hàm nào) Bƣớc 2: K+ = (ABG)+; Áp dụng giải thuật tìm bao đóng của tập thuộc tính. Ta có:
X0 = ABG X1 = ABCG(vì AB C) X2 = ABCDEFG (vì ABC DEF; AB C) X3 = ABCDEFG (vì ABC DEF; AB C; D EF) Vì X2 = X3 nên ta có K+ = (ABG)+ = ABCDEFG = U. Vậy K = ABG là khóa duy nhất của R.
4) F = {AB CDE; AC D; D E; E F} Bƣớc 1: K = ABG (A, B chỉ nằm ở vế trái; G không nằm trong bất cứ phụ thuộc
hàm nào) Bƣớc 2: K+ = (ABG)+; Áp dụng giải thuật tìm bao đóng của tập thuộc tính. Ta có:
X0 = ABG X1 = ABCDEG (vì AB CDE) X2 = ABCDEFG (vì AB CDE; AC D; D E; E F) X3 = ABCDEFG (vì AB CDE; AC D; D E; E F) Vì X2 = X3 nên ta có K+ = (ABG)+ = ABCDEFG = U. Vậy K = ABG là khóa duy nhất của R.
5) F = {A BCD; BD C; D E; D F} Bƣớc 1: K = AG (A chỉ nằm ở vế trái; G không nằm trong bất cứ phụ thuộc hàm
nào) Bƣớc 2: K+ = (AG)+ Áp dụng giải thuật tìm bao đóng của tập thuộc tính; Ta có:
X0 = AG X1 = ABCDG (vì A BCD) X2 = ABCDEFG (vì A BCD; BD C; D E; D F) X3 = ABCDEFG (vì A BCD; BD C; D E; D F) Vì X2 = X3 nên ta có K+ = (AG)+ = ABCDEFG = U. Vậy K = AG là khóa duy nhất của R.
6) F = {AB CD; D E; CDE F}
Phạm Hùng Phú 137
Bài tập cơ sở dữ liệu Bƣớc 1: K = ABG (A, B chỉ nằm ở vế trái; G không nằm trong bất cứ phụ thuộc
hàm nào) Bƣớc 2: K+ = (ABG)+; Áp dụng giải thuật tìm bao đóng của tập thuộc tính.
Ta có:
X0 = ABG X1 = ABCDG (vì AB CD) X2 = ABCDEG (vì AB CD; D E) X3 = ABCDEFG (vì AB CD; D E; CDE F) X4 = ABCDEFG (vì AB CD; D E; CDE F) Vì X3 = X4 nên ta có K+ = (ABG)+ = ABCDEFG = U. Vậy K = ABG là khóa duy nhất của R.
7) F = {A BCD; BC DE; DE F}
Bƣớc 1: K = AG (A chỉ nằm ở vế trái; G không nằm trong bất cứ phụ thuộc hàm
nào) Bƣớc 2: Tính K+ = (AG)+ ; Áp dụng giải thuật tìm bao đóng của tập thuộc tính. Ta có:
X0 = AG X1 = ABCDG (vì A BCD) X2 = ABCDEG (vì A BCD; BC DE) X3 = ABCDEFG (vì A BCD; BC DE; DE F) X4 = ABCDEFG (vì A BCD; BC DE; DE F) Vì X3 = X4 nên ta có K+ = (AG)+ = ABCDEFG = U. Vậy K = AG là khóa duy nhất của R.
8) F = {ABC D; A C; D E; DE F}
Bƣớc 1: K = ABG (A, B chỉ nằm ở vế trái; G không nằm trong bất cứ phụ thuộc hàm nào) Bƣớc 2: Tính K+ = (ABG)+ ; Áp dụng giải thuật tìm bao đóng của tập thuộc tính. Ta có:
X0 = ABG X1 = ABCG (vì A C) X2 = ABCDG (vì ABC D; A C) X3 = ABCDEG (vì ABC D; A C; D E) X4 = ABCDEFG (vì ABC D; A C; D E; DE F)
138 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Vì X3 = X4 nên ta có K+ = (ABG)+ = ABCDEFG = U. Vậy K = ABG là khóa duy nhất của R.
9) F = {C A; C D; ACD BE} Bƣớc 1: K = CFG (C chỉ nằm ở vế trái; F, G không nằm trong bất cứ phụ thuộc hàm
nào) Bƣớc 2: Tính K+ = (CFG)+ ; Áp dụng giải thuật tìm bao đóng của tập thuộc tính. Ta có:
X0 = CFG X1 = ACDFG (vì C A; C D) X2 = ABCDEFG (vì C A; C D; ACD BE) X3 = ABCDEFG (vì C A; C D; ACD BE) Vì X2 = X3 nên ta có K+ = (CFG)+ = ABCDEFG = U.
Vậy K = CFG là khóa duy nhất của R.
10) F = {AB C; A EF; D E; E G}
Bƣớc 1: K = ABD (A, B, D chỉ nằm ở vế trái) Bƣớc 2: Tính K+ = (ABD)+; Áp dụng giải thuật tìm bao đóng của tập thuộc tính. Ta có:
K+ = (ABD)+= ABCDEFG = U. Vậy R có khoá duy nhất là K = ABD.
11) F = {AB C; C B; D E; E G}
Bƣớc 1: K = ADF (A, D chỉ nằm ở vế trái; F không nằm trong bất cứ phụ
thuộc hàm nào)
Bƣớc 2: -Tính K+ = (ADF)+ = ADEFG U. Vậy R có thể có nhiều khóa. - G = BCE (các thuộc tính nằm ở cả hai vế trong tập phụ thuộc hàm F)
- K = ADFBCE - Loại bỏ các thuộc tính thừa trong G + Với B G; ta có (K-B)+ = ABCDEFG nên K = ADFCE + Với C G ta có (K-C)+ = (ADFCE)+ U + Với E G ta có (K-E)+ = (ADFC)+ = U nên K = ADFC Bƣớc 3: Vậy K = ADFC là một khóa của R
Nếu thay đổi thứ tự loại bỏ các thuộc tính thừa trong G ta đƣợc K = ABDF là một
khóa khác của R.
Vậy R có tất cả 2 khóa là : ACDF và ABDF.
Phạm Hùng Phú 139
Bài tập cơ sở dữ liệu 4.1.15. Cho sơ đồ quan hệ W= < R, F>; chứng minh F – tối thiểu với:
1) F = {AB C; B D; D E}
2) F = {AB C; C A; D E}
3) F = {AB C; C B; B D; D E}
4) F = {AB C; C B; B D; B E}
5) F = {AB C; A D; A E; E F}
Giải:
1) F = {AB C; B D; D E}
Bƣớc 1: Các phụ thuộc hàm trong F đều có vế phải chỉ có một thuộc tính (thỏa mãn
điều kiện thứ nhất)
Bƣớc 2: Ta kiểm tra xem có phụ thuộc hàm nào trong F có vế trái chứa thuộc tính
thừa không?
- Xét AB C
+(AB - A)+ = B+ = BDE
C BDE nên A không dƣ thừa.
+ (AB - B)+ =A+ = A
C A nên B không dƣ thừa.
- Xét B D; D E
Vế trái của nó chỉ có một thuộc tính nên không chứa thuộc tính thừa.
Bƣớc 3: Ta kiểm tra xem F có chứa phụ thuộc hàm nào thừa không?
- Xét AB C
Ta có G = {B D; D E}
= ABDE
C ABDE nên AB C không là phụ thuộc hàm thừa.
- Xét B D
Ta có G = {AB C; D E}
= B
D B nên B D không là phụ thuộc hàm thừa.
- Xét D E
Ta có G = {AB C; B D}
140 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
= D
E D nên D E không là phụ thuộc hàm thừa.
Vậy F tối thiểu (đpcm)
2) F = {AB C; C A; D E}
Bƣớc 1: Các phụ thuộc hàm trong F đều có vế phải chỉ có một thuộc tính (thỏa mãn
điều kiện thứ nhất)
Bƣớc 2: Ta kiểm tra xem có phụ thuộc hàm nào trong F có vế trái chứa thuộc tính
thừa không?
- Xét AB C
+ (AB - A)+ = B+ = B
C B nên A không dƣ thừa.
+ (AB - B)+ =A+ = A
C A nên B không dƣ thừa.
- Xét C A; D E
Vế trái của nó chỉ có một thuộc tính nên không chứa thuộc tính thừa.
Bƣớc 3: Ta kiểm tra xem F có chứa phụ thuộc hàm nào thừa không?
- Xét AB C
Ta có G = {C A; D E}
= AB
C AB nên AB C không là phụ thuộc hàm thừa.
- Xét C A
Ta có G = {AB C; D E}
= C
A C nên C A không là phụ thuộc hàm thừa.
- Xét D E
Ta có G = {AB C; C A}
= D
E D nên D E không là phụ thuộc hàm thừa.
Vậy F tối thiểu
Phạm Hùng Phú 141
Bài tập cơ sở dữ liệu 3) F = {AB C; C B; B D; D E}
Bƣớc 1: Các phụ thuộc hàm trong F đều có vế phải chỉ có một thuộc tính (thỏa mãn
điều kiện thứ nhất)
Bƣớc 2: Ta kiểm tra xem có phụ thuộc hàm nào trong F có vế trái chứa thuộc tính
thừa không?
- Xét AB C
+ (AB - A)+ = B+ = BDE
C BDE nên A không dƣ thừa.
+ (AB - B)+ =A+ = A
C A nên B không dƣ thừa.
- Xét C B; B D; D E
Vế trái của nó chỉ có một thuộc tính nên không chứa thuộc tính thừa.
Bƣớc 3: Ta kiểm tra xem F có chứa phụ thuộc hàm nào thừa không?
- Xét AB C
Ta có G = {C B; B D; D E}
= ABDE
C ABDE nên AB C không là phụ thuộc hàm thừa.
- Xét C B
Ta có G = {AB C; B D; D E}
= C
B C nên C B không là phụ thuộc hàm thừa.
- Xét B D
Ta có G = {AB C; C B; D E}
= B
D B nên B D không là phụ thuộc hàm thừa.
- Xét D E
Ta có G = {AB C; C B; B D}
= D
E D nên D E không là phụ thuộc hàm thừa.
Vậy F tối thiểu (đpcm)
142 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
4) F = {AB C; C B; B D; B E}
Bƣớc 1: Các phụ thuộc hàm trong F đều có vế phải chỉ có một thuộc tính (thỏa mãn
điều kiện thứ nhất)
Bƣớc 2: Ta kiểm tra xem có phụ thuộc hàm nào trong F có vế trái chứa thuộc tính
thừa không?
- Xét AB C
+(AB - A)+ = B+ = BDE
C BDE nên A không dƣ thừa.
+(AB - B)+ =A+ = A
C A nên B không dƣ thừa.
- Xét C B; B D; B E
Vế trái của nó chỉ có một thuộc tính nên không chứa thuộc tính thừa.
Bƣớc 3: Ta kiểm tra xem F có chứa phụ thuộc hàm nào thừa không?
- Xét AB C
Ta có G = {C B; B D; B E}
= BDE
C BDE nên AB C không là phụ thuộc hàm thừa.
- Xét C B
Ta có G = {AB C; B D; B E}
= C
B C nên C B không là phụ thuộc hàm thừa.
- Xét B D
Ta có G = {AB C; C B; B E}
= BE
D BE nên B D không là phụ thuộc hàm thừa.
- Xét B E
Ta có G = {AB C; C B; B D}
= BD
E BD nên B E không là phụ thuộc hàm thừa.
Vậy F tối thiểu (đpcm)
Phạm Hùng Phú 143
Bài tập cơ sở dữ liệu 5) F = {AB C; A D; A E; E F}
Bƣớc 1: Các phụ thuộc hàm trong F đều có vế phải chỉ có một thuộc tính (thỏa mãn
điều kiện thứ nhất)
Bƣớc 2: Ta kiểm tra xem có phụ thuộc hàm nào trong F có vế trái chứa thuộc tính
thừa không?
- Xét AB C
+(AB - A)+ = B+ = B
C B nên A không dƣ thừa.
+(AB - B)+ =A+ = ADEF
C ADEF nên B không dƣ thừa.
- Xét A D; A E; E F
Vế trái của nó chỉ có một thuộc tính nên không chứa thuộc tính thừa.
Bƣớc 3: Ta kiểm tra xem F có chứa phụ thuộc hàm nào thừa không?
- Xét AB C
Ta có G = {A D; A E; E F}
= ABDEF
C ABDEF nên AB C không là phụ thuộc hàm thừa.
- Xét A D
Ta có G = {AB C; A E; E F}
= AEF
D AEF nên A D không là phụ thuộc hàm thừa.
- Xét A E
Ta có G = {AB C; A D; E F}
= AD
E AD nên A E không là phụ thuộc hàm thừa.
- Xét E F
Ta có G = {AB C; A D; A E}
= E
F E nên E F không là phụ thuộc hàm thừa.
Vậy F tối thiểu
144 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
4.1.16. Cho SĐQH W =
1) F = {ABC DE; B C; D E; DE F}
2) F = {ABC EF; AB CD; D E; E F}
3) F = {ABC DEF; AB C; D EF}
4) F = {AB CDE; AC D; D E; E F}
5) F = {A BCD; BD C; D E; D F}
6) F = {AB CD; D E; CDE F}
7) F = {A BCD; BC DE; DE F}
8) F = {ABC D; A C; D E; DE F}
9) F = {C A; C D; ACD BE}
10) F = {AB C; AD DEF; D E; E G}
11) F = {AB C; A B; AD DEF; E F}
12) F = {ABC DF; AC D; D E; DE F}
13) F = {AB C; A DE; D E; DE F}
14) F = {ABD CE; AB D; D E; DE F}
15) F = {AB C; C DEF; D EF; DE F}
16) F = {AB C; C A; A DE; D E; DE F}
17) F = {AB C; B DE; D E; DE F}
18) F = {ABC DE; AB D; D A; A BC}
Giải:
1) F = {ABC DE; B C; D E; DE F}
Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có một thuộc tính.
F = {ABC D; ABC E; B C; D E; DE F}
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
+ Xét ABC D Với A VT = ABC:
- Tính (VT - A)+ = (BC)+ = BC - D (VT - A)+ nên A không thừa.
Với B VT = ABC: - Tính (VT - B)+ = (AC)+ = AC
Phạm Hùng Phú 145
- D (VT - B)+ nên B không thừa.
Bài tập cơ sở dữ liệu Với C VT = ABC:
thay thế VT = AB
- Tính (VT - C)+ = (AB)+ = ABCDEF - D (VT - C)+ nên C thừa F = {AB D; ABC E; B C; D E; DE F}
+ Xét ABC E
Với A VT = ABC:
- Tính (VT - A)+ = (BC)+ = BC - E (VT - A)+ nên A không thừa.
Với B VT = ABC:
- Tính (VT - B)+ = (AC)+ = AC - E (VT - B)+ nên B không thừa.
Với C VT = ABC:
thay thế VT = AB
- Tính (VT - C)+ = (AB)+ = ABCDEF - C (VT - C)+ nên C thừa F = {AB D; AB E; B C; D E; DE F}
+ Xét DE F
Với D VT = DE:
- Tính (VT - D)+ = E+ = E - F (VT - D)+ nên D không thừa.
Với E VT = DE:
thay thế VT = D
- Tính (VT - E)+ = D+ = DEF - F (VT - E)+ nên E thừa F = {AB D; AB E; B C; D E; D F}
+ Xét B C; D E
Các phụ thuộc hàm này có vế trái chỉ có một thuộc tính nên các vế trái
của chúng không chứa các thuộc tính thừa. Sau khi loại bỏ các thuộc tính thừa ở vế trái ta thu đƣợc
F = {AB D; AB E; D F; B C; D E}
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Với AB D F ta có:
Tính G = {AB E; D F; B C; D E}
Tính = ABCE
Vì D ABCE nên AB D F không thừa.
+ Với AB E F ta có:
146 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Tính G = {AB D; D F; B C; D E}
Tính = ABCDEF
Vì E ABCDEF nên AB E F thừa.
F = {AB D; B C; D E; D F}
+ Với D F F ta có:
Tính G = {AB D; B C; D E}
Tính = DE
Vì F DE nên D F F không thừa.
+ Với B C F ta có:
Tính G = {AB D; D F; D E}
Tính = B
Vì C B nên B C F không thừa.
+ Với D E F ta có:
Tính G = {AB D; D F; B C}
Tính = DF
Vì E DF nên D E F không thừa.
Bƣớc 4: Vậy phủ tối thiểu là F = {AB D; D F; B C; D E}
2) F = {ABC EF; AB CD; D E; E F}
Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có
một thuộc tính.
F = {ABC E; ABC F; AB C; AB D; D E; E F} Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
+ Xét ABC E
Với A VT = ABC:
- Tính (VT - A)+ = (BC)+ = BC - E (VT - A)+ nên A không thừa.
Với B VT = ABC:
- Tính (VT - B)+ = (AC)+ = AC - E (VT - B)+ nên B không thừa.
Với C VT = ABC:
- Tính (VT - C)+ = (AB)+ = ABCDEF - E (VT - C)+ nên C thừa thay thế VT = AB
F = {AB E; ABC F; AB C; AB D; D E; E F}
+ Xét ABC F
Phạm Hùng Phú 147
Bài tập cơ sở dữ liệu Với A VT = ABC:
- Tính (VT - A)+ = (BC)+ = BC - F (VT - A)+ nên A không thừa.
Với B VT = ABC:
- Tính (VT - B)+ = (AC)+ = AC - F (VT - B)+ nên B không thừa.
Với C VT = ABC:
- Tính (VT - C)+ = (AB)+ = ABCDEF - F (VT - C)+ nên C thừa thay thế VT = AB
F = {AB E; AB F; AB C; AB D; D E; E F}
+ Xét AB C Với A VT = AB:
- Tính (VT - A)+ = B+ = B - C (VT - A)+ nên A không thừa.
Với B VT = AB:
- Tính (VT - B)+ = A+ = A - C (VT - B)+ nên B không thừa.
+ Xét AB D Với A VT = AB:
- Tính (VT - A)+ = B+ = B - D (VT - A)+ nên A không thừa.
Với B VT = AB:
- Tính (VT - B)+ = A+ = A - D (VT - B)+ nên B không thừa.
+ Xét D E; E F
Các phụ thuộc hàm này có vế trái chỉ có một thuộc tính nên vế trái của
chúng không chứa các thuộc tính thừa. Sau khi loại bỏ các thuộc tính thừa ở vế trái ta thu đƣợc
F = {AB E; AB F; AB C; AB D; D E; E F}
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Với AB E F ta có:
Tính G = {AB F; AB C; AB D; D E; E F}
Tính = ABCDEF
Vì E ABCDEF nên AB E F thừa.
F = {AB F; AB C; AB D; D E; E F}
148 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
+ Với AB F F ta có:
Tính G = {AB C; AB D; D E; E F}
Tính = ABCDEF
Vì F ABCDEF nên AB F F thừa.
F = {AB C; AB D; D E; E F}
+ Với AB C F ta có:
Tính G = {AB D; D E; E F}
Tính = ABDEF
Vì C ABDEF nên AB C F không thừa.
+ Với AB D F ta có:
Tính G = {AB C; D E; E F}
Tính = ABC
Vì D ABC nên AB D F không thừa.
+ Với D E F ta có:
Tính G = {AB C; AB D; E F}
Tính = D
Vì E D nên D E F không thừa.
+ Với E F F ta có:
Tính G = {AB C; AB D; D E}
Tính = E
Vì F E nên E F F không thừa.
Bƣớc 4: Vậy phủ tối thiểu là F = {AB C; AB D; D E; E F}
3) F = {ABC DEF; AB C; D EF} Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có
một thuộc tính.
F = {ABC D; ABC E; ABC F; AB C; D E; D F} Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
+ Xét ABC D Với A VT = ABC:
- Tính (VT - A)+ = (BC)+ = BC - D (VT - A)+ nên A không thừa.
Với B VT = ABC:
- Tính (VT - B)+ = (AC)+ = AC - D (VT - B)+ nên B không thừa.
Phạm Hùng Phú 149
Bài tập cơ sở dữ liệu Với C VT = ABC:
- Tính (VT - C)+ = (AB)+ = ABCDEF - D (VT - C)+ nên C thừa VT = AB F = {AB D; ABC E; ABC F; AB C; D E; D F}
+ Xét ABC E Với A VT = ABC:
- Tính (VT - A)+ = (BC)+ = BC - E (VT - A)+ nên A không thừa.
Với B VT = ABC:
- Tính (VT - B)+ = (AC)+ = AC - E (VT - B)+ nên B không thừa.
Với C VT = ABC:
- Tính (VT - C)+ = (AB)+ = ABCDEF - E (VT - C)+ nên C thừa VT = AB F = {AB D; AB E; ABC F; AB C; D E; D F}
+ Xét ABC F Với A VT = ABC:
- Tính (VT - A)+ = (BC)+ = BC - F (VT - A)+ nên A không thừa.
Với B VT = ABC:
- Tính (VT - B)+ = (AC)+ = AC - F (VT - B)+ nên B không thừa.
Với C VT = ABC:
- Tính (VT - C)+ = (AB)+ = ABCDEF - F (VT - C)+ nên C thừa VT = AB F = {AB D; AB E; AB F; AB C; D E; D F}
+ Xét AB C Với A VT = AB:
- Tính (VT - A)+ = B+ = B - C (VT - A)+ nên A không thừa.
Với B VT = AB:
- Tính (VT - B)+ = A+ = A - C (VT - B)+ nên B không thừa.
+ Xét D E; D F Các phụ thuộc hàm này có vế trái chỉ có một thuộc tính nên vế trái của
chúng không chứa các thuộc tính thừa.
150 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Sau khi loại bỏ các thuộc tính thừa ở vế trái ta thu đƣợc
F = {AB D; AB E; AB F; AB C; D E; D F}
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Với AB D F ta có:
Tính G = {AB E; AB F; AB C; D E; D F}
Tính = ABCEF
Vì D ABCEF nên AB D F không thừa.
+ Với AB E F ta có:
Tính G = {AB D; AB F; AB C; D E; D F}
Tính = ABCDEF
Vì E ABCDEF nên AB E F thừa.
F ={AB D; AB F; AB C; D E; D F}
+ Với AB F F ta có:
Tính G = {AB D; AB C; D E; D F}
Tính = ABCDEF
Vì F ABCDEF nên AB F F thừa.
F ={AB D; AB C; D E; D F}
+ Với AB C F ta có:
Tính G = {AB D; D E; D F}
Tính = ABDEF
Vì C ABDEF nên AB C F không thừa.
+ Với D E F ta có:
Tính G = {AB D; AB C; D F}
Tính = DF
Vì E DF nên D E F không thừa.
+ Với D F F ta có:
Tính G = {AB D; AB C; D E}
Tính = DE
Vì F DE nên D F F không thừa.
Bƣớc 4: Vậy phủ tối thiểu là F = {AB D; AB C; D E; D F}
4) F = {AB CDE; AC D; D E; E F}
Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có một thuộc tính.
Phạm Hùng Phú 151
F = {AB C; AB D; AB E; AC D; D E; E F}
Bài tập cơ sở dữ liệu Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
+ Xét AB C Với A VT = AB:
- Tính (VT - A)+ = B+ = B - C (VT - A)+ nên A không thừa.
Với B VT = AB:
- Tính (VT - B)+ = A+ = A - C (VT - B)+ nên B không thừa.
+ Xét AB D
Với A VT = AB:
- Tính (VT - A)+ = B+ = B - D (VT - A)+ nên A không thừa.
Với B VT = AB:
- Tính (VT - B)+ = A+ = A - D (VT - B)+ nên B không thừa.
+ Xét AB E Với A VT = AB:
- Tính (VT - A)+ = B+ = B - E (VT - A)+ nên A không thừa.
Với B VT = AB:
- Tính (VT - B)+ = A+ = A - E (VT - B)+ nên B không thừa.
+ Xét AC D
Với A VT = AC:
- Tính (VT - A)+ = C+ = C - D (VT - A)+ nên A không thừa.
Với C VT = AC:
- Tính (VT - C)+ = A+ = A - D (VT - C)+ nên C không thừa.
+ Xét D E; E F Các phụ thuộc hàm này có vế trái chỉ có một thuộc tính nên vế trái của
chúng không chứa các thuộc tính thừa.
Sau khi loại bỏ các thuộc tính thừa ở vế trái ta thu đƣợc
F = {AB C; AB D; AB E; AC D; D E; E F}
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
152 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
+ Với AB C F ta có:
Tính G = {AB D; AB E; AC D; D E; E F}
Tính = ABDEF
Vì C ABDEF nên AB C F không thừa.
+ Với AB D F ta có:
Tính G = {AB C; AB E; AC D; D E; E F}
Tính = ABCDEF
Vì D ABCDEF nên AB D F thừa.
F ={AB C; AB E; AC D; D E; E F}
+ Với AB E F ta có:
Tính G = {AB C; AC D; D E; E F}
Tính = ABCDEF
Vì E ABCDEF nên AB E F thừa.
F ={AB C; AC D; D E; E F}
+ Với AC D F ta có:
Tính G = {AB C; D E; E F}
Tính = AC
Vì D AC nên AC D F không thừa.
+ Với D E F ta có:
Tính G = {AB C; AC D; E F}
Tính = D
Vì E D nên D E F không thừa.
+ Với E F F ta có:
Tính G = {AB C; AC D; D E}
Tính = E
Vì F E nên E F F không thừa.
Bƣớc 4: Vậy phủ tối thiểu là F = {AB C; AC D; D E; E F}
5) F = {A BCD; BD C; D E; D F} Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có một thuộc tính.
F = {A B; A C; A D; BD C; D E; D F}
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
+ Xét BD C
Phạm Hùng Phú 153
Bài tập cơ sở dữ liệu Với B VT = BD:
- Tính (VT - B)+ = D+ = DEF - C (VT - B)+ nên B không thừa.
Với D VT = BD:
- Tính (VT - D)+ = B+ = B - C (VT - D)+ nên D không thừa.
+ Xét A B; A C; A D; D E; D F Các phụ thuộc hàm này có vế trái chỉ có một thuộc tính nên vế trái của
chúng không chứa các thuộc tính thừa. Sau khi loại bỏ các thuộc tính thừa ở vế trái ta thu đƣợc
F = {A B; A C; A D; BD C; D E; D F}
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Với A B F ta có:
Tính G = {A C; A D; BD C; D E; D F}
Tính = ACDEF
Vì B ACDEF nên A B F không thừa.
+ Với A C F ta có:
Tính G = {A B; A D; BD C; D E; D F}
Tính = ABCDEF
Vì C ABCDEF nên A C F thừa.
F = {A B; A D; BD C; D E; D F}
+ Với A D F ta có:
Tính G = {A B; BD C; D E; D F}
Tính = AB
Vì D AB nên A D F không thừa.
+ Với BD C F ta có:
Tính G = {A B; D E; D F}
Tính = BDEF
Vì C BDEF nên BD C F không thừa.
+ Với D E F ta có:
Tính G = {A B; A D; BD C; D F}
Tính = DF
Vì E DF nên D E F không thừa.
+ Với D F F ta có:
154 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Tính G = {A B; A D; BD C; D E}
Tính = DE
Vì F DE nên D F F không thừa.
Bƣớc 4: Vậy phủ tối thiểu là F = {A B; A D; BD C; D E; D F}
6) F = {AB CD; D E; CDE F}
Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có
một thuộc tính.
F = {AB C; AB D; D E; CDE F}
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
+ Xét AB C Với B VT = AB:
- Tính (VT - B)+ = A+ = A - C (VT - B)+ nên B không thừa.
Với A VT = AB:
- Tính (VT - A)+ = B+ = B - C (VT - A)+ nên A không thừa.
+ Xét AB D
Với B VT = AB:
- Tính (VT - B)+ = A+ = A - D (VT - B)+ nên B không thừa.
Với A VT = AB:
- Tính (VT - A)+ = B+ = B - D (VT - A)+ nên A không thừa.
+ Xét CDE F Với E VT = CDE:
- Tính (VT - E)+ = (CD)+ = CDEF - F (VT - E)+ nên E thừa => VT = CD
Với D VT = CD
- Tính (VT - D)+ = C+ = C - F (VT - D)+ nên D không thừa.
Với C VT = CD
- Tính (VT - C)+ = D+ = DE - F (VT - C)+ nên C không thừa. F = {AB C; AB D; D E; CD F}
+ Xét D E
Phạm Hùng Phú 155
Phụ thuộc hàm này có vế trái chỉ có một thuộc tính nên vế trái của nó Bài tập cơ sở dữ liệu
không chứa các thuộc tính thừa.
Sau khi loại bỏ các thuộc tính thừa ở vế trái ta thu đƣợc
F = {AB C; AB D; D E; CD F}
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Với AB C F ta có:
Tính G = {AB D; D E; CD F}
Tính = ABDE
Vì C ABDE nên AB C F không thừa.
+ Với AB D F ta có:
Tính G = {AB C; D E; CD F}
Tính = ABC
Vì D ABC nên AB D F không thừa.
+ Với D E F ta có:
Tính G = {AB C; AB D; CD F}
Tính = D
Vì E D nên D E F không thừa.
+ Với CD F F ta có:
Tính G = {AB C; AB D; D E}
Tính = CDE
Vì F CDE nên CD F F không thừa.
Bƣớc 4: Vậy phủ tối thiểu là F = {AB C; AB D; D E; CD F}
7) F = {A BCD; BC DE; DE F} Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có
một thuộc tính.
F = {A B; A C; A D; BC D; BC E; DE F}
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
+ Xét BC D Với B VT = BC:
- Tính (VT - B)+ = C+ = C - D (VT - B)+ nên B không thừa.
Với C VT = BC:
- Tính (VT - C)+ = B+ = B - D (VT - C)+ nên C không thừa.
156 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
+ Xét BC E Với B VT = BC:
- Tính (VT - B)+ = C+ = C - E (VT - B)+ nên B không thừa.
Với C VT = BC:
- Tính (VT - C)+ = B+ = B - E (VT - C)+ nên C không thừa.
+ Xét DE F
Với D VT = DE:
- Tính (VT - D)+ = E+ = E - F (VT - D)+ nên D không thừa.
Với E VT = DE:
- Tính (VT - E)+ = D+ = D - F (VT - E)+ nên E không thừa.
+ Xét A B; A C; A D
Các phụ thuộc hàm này có vế trái chỉ có một thuộc tính nên vế trái của
chúng không chứa các thuộc tính thừa.
Sau khi loại bỏ các thuộc tính thừa ở vế trái ta thu đƣợc
F = {A B; A C; A D; BC D; BC E; DE F}
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Với A B F ta có:
Tính G = {A C; A D; BC D; BC E; DE F}
Tính = ACD
Vì B ACD nên A B F không thừa.
+ Với A C F ta có:
Tính G = {A B; A D; BC D; BC E; DE F}
Tính = ABD
Vì C ABD nên A C F không thừa.
+ Với A D F ta có:
Tính G = {A B; A C; BC D; BC E; DE F}
Tính = ABCDEF
Vì D ABCDEF nên A D F thừa.
F = {A B; A C; BC D; BC E; DE F}
+ Với BC D F ta có:
Tính G = {A B; A C; BC E; DE F}
Phạm Hùng Phú 157
Bài tập cơ sở dữ liệu Tính = BCE
Vì D BCE nên BC D F không thừa.
+ Với BC E F ta có:
Tính G = {A B; A C; BC D; DE F}
Tính = BCD
Vì E BCD nên BC E F không thừa.
+ Với DE F F ta có:
Tính G = {A B; A C; BC D; BC E}
Tính = DE
Vì F DE nên DE F F không thừa.
Bƣớc 4: Vậy phủ tối thiểu là F = {A B; A C; BC D; BC E; DE F}
8) F = {ABC D; A C; D E; DE F} Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có
một thuộc tính.
F = {ABC D; A C; D E; DE F}
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
+ Xét ABC D Với A VT = ABC:
- Tính (VT - A)+ = (BC)+ = BC - D (VT - A)+ nên A không thừa.
Với B VT = AC:
- Tính (VT - B)+ = (AC)+ = AC - D (VT - B)+ nên B không thừa.
Với C VT = AB:
- Tính (VT - C)+ = (AB)+ = ABCDEF - D (VT - C)+ nên C thừa VT = AB
F = {AB D; A C; D E; DE F}
+ Xét DE F Với D VT = DE:
- Tính (VT - D)+ = E+ = E - F (VT - D)+ nên D không thừa.
Với E VT = DE:
- Tính (VT - E)+ = D+ = DEF - F (VT - E)+ nên E thừa VT = D
158 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
F = {AB D; A C; D E; D F}
+ Xét A C; D E
Các phụ thuộc hàm này có vế trái chỉ có một thuộc tính nên vế trái của
chúng không chứa các thuộc tính thừa.
Sau khi loại bỏ các thuộc tính thừa ở vế trái ta thu đƣợc
F = {AB D; A C; D E; D F}
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Với AB D F ta có:
Tính G = {A C; D E; D F}
Tính = ABC
Vì D ABC nên AB D F không thừa.
+ Với A C F ta có:
Tính G = {AB D; D E; D F}
Tính = A
Vì C A nên A C F không thừa.
+ Với D E F ta có:
Tính G = {AB D; A C; D F}
Tính = DF
Vì E DF nên D E F không thừa.
+ Với D F F ta có:
Tính G = {AB D; A C; D E}
Tính = DE
Vì F DE nên D F F không thừa.
Bƣớc 4: Vậy phủ tối thiểu là F = {AB D; A C; D E; D F}
9) F = {C A; C D; ACD BE} Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có
một thuộc tính.
F = {C A; C D; ACD B; ACD E}
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
+ Xét ACD B Với A VT = ACD:
VT = CD
- Tính (VT - A)+ = (CD)+ = ABCDE - B (VT - A)+ nên A thừa Với C VT = CD:
Phạm Hùng Phú 159
Bài tập cơ sở dữ liệu
- Tính (VT - C)+ = D+ = D - B (VT - C)+ nên C không thừa
Với D VT = CD:
- Tính (VT - D)+ = C+ = ABCDE - B (VT - D)+ nên D thừa VT = C
F = {C A; C D; C B; ACD E}
+ Xét ACD E
Với A VT = ACD:
VT = CD
Với C VT = CD:
- Tính (VT - A)+ = (CD)+ = ABCDE - E (VT - A)+ nên A thừa - Tính (VT - C)+ = D+ = D - E (VT - C)+ nên C không thừa
Với D VT = CD:
VT = C
- Tính (VT - D)+ = C+ = ABCDE - E (VT - D)+ nên D thừa F = {C A; C D; C B; C E}
+ Xét C A; C D
Các phụ thuộc hàm này có vế trái chỉ có một thuộc tính nên chúng
không chứa các thuộc tính thừa.
Sau khi loại bỏ các thuộc tính thừa ở vế trái ta thu đƣợc
F = {C A; C D; C B; C E}
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Với C A F ta có:
Tính G = {C D; C B; C E}
Tính = BCDE
Vì A BCDE nên C A F không thừa.
+ Với C D F ta có:
Tính G = {C A; C B; C E}
Tính = ABCE
Vì D ABCE nên C D F không thừa.
+ Với C B F ta có:
Tính G = {C A; C D; C E}
Tính = ACDE
Vì B ACDE nên C B F không thừa.
160 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
+ Với C E F ta có:
Tính G = {C A; C D; C B}
Tính = ABCD
Vì E ABCD nên C E F không thừa.
Bƣớc 4: Vậy phủ tối thiểu là F = {C A; C D; C B; C E}
10) F = {AB C; AD DEF; D E; E G} Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có
một thuộc tính.
F = {AB C; AD D; AD E; AD F; D E; E G}
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
+ Xét AB C Với A VT = AB:
- Tính (VT - A)+ = B+ = B - C (VT - A)+ nên A không thừa
Với B VT = AB:
- Tính (VT - B)+ = A+ = A - C (VT - B)+ nên B không thừa
+ Xét AD D Với A VT = AD:
- Tính (VT - A)+ = D+ = DEG - D (VT - A)+ nên A thừa VT = D
F = {AB C; D D; AD E; AD F; D E; E G}
+ Xét AD E
Với A VT = AD:
- Tính (VT - A)+ = D+ = DEG - E (VT - A)+ nên A không thừa
Với D VT = AD:
- Tính (VT - D)+ = A+ = A - E (VT - D)+ nên D không thừa
+ Xét AD F Với A VT = AD:
- Tính (VT - A)+ = D+ = DEG - F (VT - A)+ nên A không thừa
Với D VT = AD:
- Tính (VT - D)+ = A+ = A
Phạm Hùng Phú 161
Bài tập cơ sở dữ liệu - F (VT - D)+ nên D không thừa
+ Xét D E; E G
Các phụ thuộc hàm này có vế trái chỉ có một thuộc tính nên chúng
không chứa các thuộc tính thừa.
Sau khi loại bỏ các thuộc tính thừa ở vế trái ta thu đƣợc
F = {AB C; D D; AD E; AD F; D E; E G}
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Với AB C F ta có:
Tính G = {D D; AD E; AD F; D E; E G}
Tính = AB
Vì C AB nên AB C F không thừa.
+ Với D D F ta có:
Tính G = {AB C; AD E; AD F; D E; E G}
Tính = DEG
Vì D DEG nên D D F thừa.
F = {AB C; AD E; AD F; D E; E G}
+ Với AD E F ta có:
Tính G = {AB C; AD F; D E; E G}
Tính = ADEFG
Vì E ADEFG nên AD E F thừa.
F ={AB C; AD F; D E; E G}
+ Với AD F F ta có:
Tính G = {AB C; D E; E G}
Tính = ADEG
Vì F ADEG nên AD F F không thừa.
+ Với D E F ta có:
Tính G = {AB C; AD F; E G}
Tính = D
Vì E D nên D E F không thừa.
G= E
+ Với E G F ta có:
Tính G ={AB C; AD F; D E} Tính E+ Vì G E nên E G F không thừa.
Bƣớc 4: Vậy phủ tối thiểu là F = {AB C; AD F; D E; E G}
162 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
11) F = {AB C; A B; AD DEF; E F} Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có
một thuộc tính.
F = {AB C; A B; AD D; AD E; AD F; E F}
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
+ Xét AB C Với A VT = AB:
- Tính (VT - A)+ = B+ = B - C (VT - A)+ nên A không thừa
Với B VT = AB:
- Tính (VT - B)+ = A+ = ABC - C (VT - B)+ nên B thừa VT = A
F = {A C; A B; AD D; AD E; AD F; E F}
+ Xét AD D
Với A VT = AD:
- Tính (VT - A)+ = D+ = D - D (VT - A)+ nên A thừa VT = D
F = {A C; A B; D D; AD E; AD F; E F}
+ Xét AD E Với A VT = AD:
- Tính (VT - A)+ = D+ = D - E (VT - A)+ nên A không thừa
Với D VT = AD:
- Tính (VT - D)+ = A+ = ABC - E (VT - D)+ nên D không thừa
+ Xét AD F Với A VT = AD:
- Tính (VT - A)+ = D+ = D - F (VT - A)+ nên A không thừa
Với D VT = AD:
- Tính (VT - D)+ = A+ = ABC - F (VT - D)+ nên D không thừa
+ Xét A B; E F Các phụ thuộc hàm này có vế trái chỉ có một thuộc tính nên chúng
không chứa các thuộc tính thừa. Sau khi loại bỏ các thuộc tính thừa ở vế trái ta thu đƣợc
Phạm Hùng Phú 163
F = {A C; A B; D D; AD E; AD F; E F}
Bài tập cơ sở dữ liệu Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Với A C F ta có:
Tính G = {A B; D D; AD E; AD F; E F}
Tính = AB
Vì C AB nên A C F không thừa.
+ Với A B F ta có:
Tính G = {A C; D D; AD E; AD F; E F}
Tính = AC
Vì B AC nên A B F không thừa.
+ Với D D F ta có:
Tính G = {A C; A B; AD E; AD F; E F}
Tính = D
Vì D D nên D D F thừa.
F = {A C; A B; AD E; AD F; E F}
+ Với AD E F ta có:
Tính G = {A C; A B; AD F; E F}
Tính =ABCDF
Vì E ABCDF nên AD E F không thừa.
+ Với AD F F ta có:
Tính G = {A C; A B; AD E; E F}
Tính = ABCDEF
Vì F ABCDEF nên AD F F thừa.
F = {A C; A B; AD E; E F}
+ Với E F F ta có:
Tính G = {A C; A B; AD E}
Tính = E
Vì F E nên E F F không thừa.
Bƣớc 4: Vậy phủ tối thiểu là F = {A C; A B; AD E; E F}
12) F = {ABC DF; AC D; D E; DE F} Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có
một thuộc tính.
F = {ABC D; ABC F; AC D; D E; DE F}
164 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
+ Xét ABC D Với A VT = ABC:
- Tính (VT - A)+ = (BC)+ = BC - D (VT - A)+ nên A không thừa
Với B VT = ABC:
VT = AC
Với C VT = AC:
- Tính (VT - B)+ = (AC)+ = ACDEF - D (VT - B)+ nên B thừa - Tính (VT - C)+ = A+ = A - D (VT - C)+ nên C không thừa F ={AC D; ABC F; D E; DE F}
+ Xét ABC F Với A VT = ABC:
- Tính (VT - A)+ = (BC)+ = BC - F (VT - A)+ nên A không thừa
Với B VT = ABC:
VT = AC
Với C VT = AC:
- Tính (VT - B)+ = (AC)+ = ACDEF - F (VT - B)+ nên B thừa - Tính (VT - C)+ = A+ = A - F (VT - C)+ nên C không thừa F ={AC D; AC F; D E; DE F}
+ Xét DE F
Với D VT = DE:
- Tính (VT - D)+ = E+ = E - F (VT - D)+ nên D không thừa
Với E VT = DE:
- Tính (VT - E)+ = D+ = DEF - F (VT - E)+ nên E thừa VT = D
F ={AC D; AC F; D E; D F}
+ Xét D E Phụ thuộc hàm này có vế trái chỉ có một thuộc tính nên vế trái của nó
không chứa các thuộc tính thừa. Sau khi loại bỏ các thuộc tính thừa ở vế trái ta thu đƣợc
F = {AC D; AC F; D E; D F}
Phạm Hùng Phú 165
Bài tập cơ sở dữ liệu Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Với AC D F ta có:
Tính G = {AC F; D E; D F}
Tính = ACF
Vì D ACF nên AC D F không thừa.
+ Với AC F F ta có:
Tính G = {AC D; D E; D F}
Tính = ACDEF
Vì F ACDEF nên AC F F thừa.
F = {AC D; D E; D F}
+ Với D E F ta có:
Tính G = {AC D; D F}
Tính = DF
Vì E DF nên D E F không thừa.
+ Với D F F ta có:
Tính G = {AC D; D E}
Tính = DE
Vì F DE nên D F F không thừa.
Bƣớc 4: Vậy phủ tối thiểu là F = {AC D; D E; D F}
13) F = {AB C; A DE; D E; DE F} Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có
một thuộc tính.
F = {AB C; A D; A E; D E; DE F}
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
+ Xét AB C Với A VT = AB:
- Tính (VT - A)+ = B+ = B - C (VT - A)+ nên A không thừa
Với B VT = AB:
- Tính (VT - B)+ = A+ = ADEF - C (VT - B)+ nên B không thừa
+ Xét DE F Với D VT = DE: - Tính (VT - D)+ = E+ = E
166 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
- F (VT - D)+ nên D không thừa
Với E VT = DE:
- Tính (VT - E)+ = D+ = DEF - F (VT - E)+ nên E thừa VT = D
F = {AB C; A D; A E; D E; D F}
+ Xét A D; A E; D E
Các phụ thuộc hàm này có vế trái chỉ có một thuộc tính nên vế trái của
chúng không chứa các thuộc tính thừa.
Sau khi loại bỏ các thuộc tính thừa ở vế trái ta thu đƣợc
F = {AB C; A D; A E; D E; D F}
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Với AB C F ta có:
Tính G = {A D; A E; D E; D F}
Tính = ABDEF
Vì C ABDEF nên AB C F không thừa.
+ Với A D F ta có:
Tính G = {AB C; A E; D E; D F}
Tính = AE
Vì D AE nên A D F không thừa.
+ Với A E F ta có:
Tính G = {AB C; A D; D E; D F}
Tính = ADEF
Vì E ADEF nên A E F thừa.
F = {AB C; A D; D E; D F}
+ Với D E F ta có:
Tính G = {AB C; A D; D F}
Tính = DF
Vì E DF nên D E F không thừa.
+ Với D F F ta có:
Tính G = {AB C; A D; D E}
Tính = DE
Vì F DE nên D F F không thừa.
Bƣớc 4: Vậy phủ tối thiểu là F = {AB C; A D; D E; D F}
14) F = {ABD CE; AB D; D E; DE F}
Phạm Hùng Phú 167
Bài tập cơ sở dữ liệu Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có
một thuộc tính.
F = {ABD C; ABD E; AB D; D E; DE F}
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
+ Xét ABD C
Với A VT = ABD:
- Tính (VT - A)+ = (BD)+ = BDEF - C (VT - A)+ nên A không thừa
Với B VT = ABD:
- Tính (VT - B)+ = (AD)+ = ADEF - C (VT - B)+ nên B không thừa
Với D VT = ABD:
- Tính (VT - D)+ = (AB)+ = ABCDEF - C (VT - D)+ nên D thừa VT = AB
F = {AB C; ABD E; AB D; D E; DE F}
+ Xét ABD E
Với A VT = ABD:
VT = BD
Với B VT = BD:
- Tính (VT - A)+ = (BD)+ = BDEF - E (VT - A)+ nên A thừa - Tính (VT - B)+ = D+ = DEF - E (VT - B)+ nên thừa VT = D
F = {AB C; D E; AB D; DE F}
+ Xét AB D
Với A VT = AB:
- Tính (VT - A)+ = B+ = B - D (VT - A)+ nên A không thừa.
Với B VT = AB:
- Tính (VT - B)+ = A+ = A - D (VT - B)+ nên B không thừa
+ Xét DE F Với D VT = DE:
- Tính (VT - D)+ = E+ = E - F (VT - D)+ nên D không thừa.
Với E VT = DE: - Tính (VT - E)+ = D+ = DEF
168 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
- F (VT - E)+ nên E thừa VT = D
F = {AB C; D E; AB D; D F}
Sau khi loại bỏ các thuộc tính thừa ở vế trái ta thu đƣợc
F = {AB C; D E; AB D; D F}
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Với AB C F ta có:
Tính G = {D E; AB D; D F}
Tính = ABDEF
Vì C ABDEF nên AB C F không thừa.
+ Với D E F ta có:
Tính G = {AB C; AB D; D F}
Tính = DF
Vì E DF nên D E F không thừa.
+ Với AB D F ta có:
Tính G = {AB C; D E; D F}
Tính = ABC
Vì D ABC nên AB D F không thừa.
+ Với D F F ta có:
Tính G = {AB C; D E; AB D}
Tính = DE
Vì F DE nên D F F không thừa.
Bƣớc 4: Vậy phủ tối thiểu là F = {AB C; D E; AB D; D F}
15) F = {AB C; C DEF; D EF; DE F} Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có
một thuộc tính.
F = {AB C; C D; C E; C F; D E; D F; DE F} Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
+ Xét AB C Với A VT = AB:
- Tính (VT - A)+ = B+ = B - C (VT - A)+ nên A không thừa
Với B VT = AB:
- Tính (VT - B)+ = A+ = A - C (VT - B)+ nên B không thừa
Phạm Hùng Phú 169
Bài tập cơ sở dữ liệu + Xét DE F Với D VT = DE:
- Tính (VT - D)+ = E+ = E - F (VT - D)+ nên D không thừa
Với E VT = DE:
- Tính (VT - E)+ = D+ = DEF - F (VT - E)+ nên E thừa VT = D
F = {AB C; C D; C E; C F; D E; D F}
+ Xét C D; C E; C F; D E Các phụ thuộc hàm này có vế trái chỉ có một thuộc tính nên vế trái của
chúng không chứa các thuộc tính thừa. Sau khi loại bỏ các thuộc tính thừa ở vế trái ta thu đƣợc
F = {AB C; C D; C E; C F; D E; D F}
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Với AB C F ta có:
Tính G = {C D; C E; C F; D E; D F}
Tính = AB
Vì C AB nên AB C F không thừa.
+ Với C D F ta có:
Tính G = {AB C; C E; C F; D E; D F}
Tính = CEF
Vì D CEF nên C D F không thừa.
+ Với C E F ta có:
Tính G = {AB C; C D; C F; D E; D F}
Tính = CDEF
Vì E CDEF nên C E F thừa
F = {AB C; C D; C F; D E; D F}
+ Với C F F ta có:
Tính G = {AB C; C D; D E; D F}
Tính = CDEF
Vì F CDEF nên C F F thừa
F = {AB C; C D; D E; D F}
+ Với D E F ta có:
Tính G = {AB C; C D; D F}
170 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Tính = DF
Vì E DF nên D E F không thừa
+ Với D F F ta có:
Tính G = {AB C; C D; D E}
Tính = DE
Vì F DE nên D F F không thừa
Bƣớc 4: Vậy phủ tối thiểu là F = {AB C; C D; D E; D F}
16) F = {AB C; C A; A DE; D E; DE F} Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có
một thuộc tính.
F = {AB C; C A; A D; A E; D E; DE F}
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
+ Xét AB C
Với A VT = AB:
- Tính (VT - A)+ = B+ = B - C (VT - A)+ nên A không thừa
Với B VT = AB:
- Tính (VT - B)+ = A+ = ADEF - C (VT - B)+ nên B không thừa
+ Xét DE F Với D VT = DE:
- Tính (VT - D)+ = E+ = E - F (VT - D)+ nên D không thừa
Với E VT = DE:
- Tính (VT - E)+ = D+ = DEF - F (VT - E)+ nên E thừa VT = D
F = {AB C; C A; A D; A E; D E; D F}
+ Xét C A; A D; A E; D E
Các phụ thuộc hàm này có vế trái chỉ có một thuộc tính nên vế trái của
chúng không chứa các thuộc tính thừa. Sau khi loại bỏ các thuộc tính thừa ở vế trái ta thu đƣợc
F = {AB C; C A; A D; A E; D E; D F}
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Với AB C F ta có:
Phạm Hùng Phú 171
Bài tập cơ sở dữ liệu Tính G = {C A; A D; A E; D E; D F}
Tính = ABDEF
Vì C ABDEF nên AB C F không thừa.
+ Với C A F ta có:
Tính G = {AB C; A D; A E; D E; D F}
Tính = C
Vì A C nên C A F không thừa
+ Với A D F ta có:
Tính G = {AB C; C A; A E; D E; D F}
Tính = AE
Vì D AE nên A D F không thừa
+ Với A E F ta có:
Tính G = {AB C; C A; A D; D E; D F}
Tính = ADEF
Vì E ADEF nên A E F thừa
F = {AB C; C A; A D; D E; D F}
+ Với D E F ta có:
Tính G = {AB C; C A; A D; D F}
Tính = DF
Vì E DF nên D E F không thừa
+ Với D F F ta có:
Tính G = {AB C; C A; A D; D E}
Tính = DE
Vì F DE nên D F F không thừa
Bƣớc 4: Vậy phủ tối thiểu là F = F = {AB C; C A; A D; D E; D F}
17) F = {AB C; B DE; D E; DE F} Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có
một thuộc tính.
F = {AB C; B D; B E; D E; DE F}
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
+ Xét AB C Với A VT = AB: - Tính (VT - A)+ = B+ = BDEF
172 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
- C (VT - A)+ nên A không thừa
Với B VT = AB:
- Tính (VT - B)+ = A+ = A - C (VT - B)+ nên B không thừa
+ Xét DE F Với D VT = DE:
- Tính (VT - D)+ = E+ = E - F (VT - D)+ nên D không thừa
Với E VT = DE:
- Tính (VT - E)+ = D+ = DEF - F (VT - E)+ nên E thừa VT = D
F = {AB C; B D; B E; D E; D F}
+ Xét B D; B E; D E Các phụ thuộc hàm này có vế trái chỉ có một thuộc tính nên vế trái của
chúng không chứa các thuộc tính thừa.
Sau khi loại bỏ các thuộc tính thừa ở vế trái ta thu đƣợc
F = {AB C; B D; B E; D E; D F}
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Với AB C F ta có:
Tính G = {B D; B E; D E; D F}
Tính = ABDEF
Vì C ABDEF nên AB C F không thừa.
+ Với B D F ta có:
Tính G = {AB C; B E; D E; D F}
Tính = BE
Vì D BE nên B D F không thừa.
+ Với B E F ta có:
Tính G = {AB C; B D; D E; D F}
Tính = BDEF
Vì E BDEF nên B E F thừa.
F = {AB C; B D; D E; D F}
+ Với D E F ta có:
Tính G = {AB C; B D; D F}
Tính = DF
Vì E DF nên D E F không thừa.
Phạm Hùng Phú 173
Bài tập cơ sở dữ liệu + Với D F F ta có:
Tính G = {AB C; B D; D E}
Tính = DE
Vì F DE nên D F F không thừa
Bƣớc 4: Vậy phủ tối thiểu là F = {AB C; B D; D E; D F}
18) F = {ABC DE; AB D; D A; A BC} Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có
một thuộc tính.
F = {ABC D; ABC E; AB D; D A; A B; A C } Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
+ Xét ABC D Với A VT = ABC:
- Tính (VT - A)+ = (BC)+ = BC - D (VT - A)+ nên A không thừa.
Với B VT = ABC:
VT = AC
- Tính (VT - B)+ = (AC)+ = ABCDE - D (VT - B)+ nên B thừa Với C VT = AC:
- Tính (VT - C)+ = A+ = ABCDE - D (VT - C)+ nên C thừa VT = A
F = {A D; ABC E; AB D; D A; A B; A C}
+ Xét ABC E Với A VT = ABC:
- Tính (VT - A)+ = (BC)+ = BC - E (VT - A)+ nên A không thừa.
Với B VT = ABC:
VT = AC
- Tính (VT - B)+ = (AC)+ = ABCDE - E (VT - B)+ nên B thừa
Với C VT = AC:
- Tính (VT - C)+ = A+ = ABCDE - E (VT - C)+ nên C thừa VT = A
F = {A D; A E; AB D; D A; A B; A C}
+ Xét AB D Với A VT = AB: - Tính (VT - A)+ = B+ = B
174 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
- D (VT - A)+ nên A không thừa.
Với B VT = AB:
- Tính (VT - B)+ = A+ = ABCDE - D (VT - B)+ nên B thừa VT = A
F = {A D; A E; D A; A B; A C}
+ Xét D A; A B; A C
Các phụ thuộc hàm này có vế trái chỉ có một thuộc tính nên vế trái của
chúng không chứa các thuộc tính thừa.
Sau khi loại bỏ các thuộc tính thừa ở vế trái ta thu đƣợc
F = {A D; A E; D A; A B; A C}
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Với A D F ta có:
Tính G = {A E; D A; A B; A C}
Tính = ABCE
Vì D ABCE nên A D F không thừa.
+ Với A E F ta có:
Tính G = {A D; D A; A B; A C}
Tính = ABCD
Vì E ABCD nên A E F không thừa.
+ Với D A F ta có:
Tính G = {A D; A E; A B; A C}
Tính = D
Vì A D nên D A F không thừa.
+ Với A B F ta có:
Tính G = {A D; A E; D A; A C}
Tính = ACDE
Vì B ACDE nên A B F không thừa.
+ Với A C F ta có:
Tính G = F = {A D; A E; D A; A B}
Tính = ABDE
Vì C ABDE nên A C F không thừa.
Bƣớc 4: Vậy phủ tối thiểu là F = {A D; A E; D A; A B; A C}
Phạm Hùng Phú 175
Bài tập cơ sở dữ liệu
4.1.17. Cho SĐQH W =
Nếu chƣa, hãy tìm phủ tối thiểu của nó.
1) F = {AB C; BC D; D E; DE F}
2) F = {AB C; A D; A E; D E; DE F}
3) F = {ABC DE; AB C; D E; DE F}
4) F = {AB CDE; C DEF; AB F}
5) F = {AB C; C DEF; D E; AB F}
6) F = {AB C; AB D; AB E; AB F; D E; E F}
7) F = {AB C; AB D; AB E; D E; DE F}
Giải:
1) F = {AB C; BC D; D E; DE F}
Bƣớc 1:Ta có các vế phải của các phụ thuộc hàm trong F chỉ có một thuộc tính
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
+ Xét AB C Với A VT = AB:
- Tính (VT - A)+ = B+ = B - C (VT - A)+ nên A không thừa.
Với B VT = AB:
- Tính (VT - B)+ = A+ = A - C (VT - B)+ nên B không thừa.
+ Xét BC D Với B VT = BC:
- Tính (VT - B)+ = C+ = C - D (VT - B)+ nên B không thừa.
Với C VT = BC:
- Tính (VT - C)+ = B+ = B - D (VT - C)+ nên C không thừa.
+ Xét DE F Với D VT = DE:
- Tính (VT - D)+ = E+ = E - F (VT - D)+ nên D không thừa.
Với E VT = DE: - Tính (VT - E)+ = D+ = DEF
176 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
- F (VT - E)+ nên E thừa VT = D
F = {AB C; BC D; D E; D F}
+ Xét D E Phụ thuộc hàm này có vế trái chỉ có một thuộc tính nên vế trái của nó
không chứa các thuộc tính thừa. Sau khi loại bỏ các thuộc tính thừa ở vế trái ta thu đƣợc
F = {AB C; BC D; D E; D F}
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Với AB C F ta có:
Tính G = {BC D; D E; D F}
Tính = AB
Vì C AB nên AB C F không thừa.
+ Với BC D F ta có:
Tính G = {AB C; D E; D F}
Tính = BC
Vì D BC nên BC D F không thừa.
+ Với D E F ta có:
Tính G = {AB C; BC D; D F}
Tính = DF
Vì E DF nên D E F không thừa.
+ Với D F F ta có:
Tính G = {AB C; BC D; D E}
Tính = DE
Vì F DE nên D F F không thừa.
Bƣớc 4: Vậy F chƣa tối thiểu vì DE F chứa thuộc tính thừa E ở vế trái và phủ tối thiểu của nó là
F = {AB C; BC D; D E; D F}
2) F = {AB C; A D; A E; D E; DE F} Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có một thuộc tính.
Ta có: F = {AB C; A D; A E; D E; DE F}
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
+ Xét AB C Với A VT = AB:
Phạm Hùng Phú 177
Bài tập cơ sở dữ liệu
- Tính (VT - A)+ = B+ = B - C (VT - A)+ nên A không thừa.
Với B VT = AB:
- Tính (VT - B)+ = A+ = ADEF - C (VT - B)+ nên B không thừa.
+ Xét A D; A E; D E; DE F Các phụ thuộc hàm này có vế trái chỉ có một thuộc tính nên vế trái của
chúng không chứa các thuộc tính thừa.
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Với AB C F ta có:
Tính G = {A D; A E; D E; DE F}
Tính = ABDEF
Vì C ABDEF nên AB C F không thừa.
+ Với A D F ta có:
Tính G = {AB C; A E; D E; DE F}
Tính = AE
Vì D AE nên A D F không thừa.
+ Với A E F ta có:
Tính G = {AB C; A D; D E; DE F}
Tính = ADEF
Vì E ADEF nên A E F thừa.
F = {AB C; A D; D E; DE F}
+ Với D E F ta có:
Tính G = {AB C; A D; DE F}
Tính = D
Vì E D nên D E F không thừa.
+ Với DE F F ta có:
Tính G = {AB C; A D; D E}
Tính = DE
Vì F DE nên D F F không thừa.
Bƣớc 4: Vậy F chƣa tối thiểu vì F chứa phụ thuộc hàm thừa A E và phủ tối thiểu của nó là
F = {AB C; A D; D E; DE F}
3) F = {ABC DE; AB C; D E; DE F}
178 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Ta thấy ngay vế phải của ABC DE có nhiều hơn một thuộc tính nên F chƣa tối thiểu.
Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có một thuộc tính.
F = {ABC D; ABC E; AB C; D E; DE F}
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
+ Xét ABC D Với A VT = ABC:
- Tính (VT - A)+ = (BC)+ = BC - D (VT - A)+ nên A không thừa.
Với B VT = ABC:
- Tính (VT - B)+ = (AC)+ = AC - D (VT - B)+ nên B không thừa.
Với C VT = ABC:
- Tính (VT - C)+ = (AB)+ = ABCDEF - D (VT - C)+ nên C thừa VT = AB
F = {AB D; ABC E; AB C; D E; DE F}
+ Xét ABC E Với A VT = ABC:
- Tính (VT - A)+ = (BC)+ = BC - E (VT - A)+ nên A không thừa.
Với B VT = ABC:
- Tính (VT - B)+ = (AC)+ = AC - E (VT - B)+ nên B không thừa.
Với C VT = ABC:
VT = AB
- Tính (VT - C)+ = (AB)+ = ABCDEF - E (VT - C)+ nên C thừa F = {AB D; AB E; AB C; D E; DE F}
+ Xét AB C Với A VT = AB:
- Tính (VT - A)+ = B+ = B - C (VT - A)+ nên A không thừa.
Với B VT = AB:
- Tính (VT - B)+ = A+ = A - C (VT - B)+ nên B không thừa.
+ Xét DE F
Phạm Hùng Phú 179
Bài tập cơ sở dữ liệu Với D VT = DE:
- Tính (VT - D)+ = E+ = E - F (VT - D)+ nên D không thừa.
Với E VT = DE:
VT = D
- Tính (VT - E)+ = D+ = DEF - F (VT - E)+ nên E thừa F = {AB D; AB E; AB C; D E; D F}
+ Xét D E
Phụ thuộc hàm này có vế trái chỉ có một thuộc tính nên vế trái của nó
không chứa các thuộc tính thừa.
Sau khi loại bỏ các thuộc tính thừa ở vế trái ta thu đƣợc
F = {AB D; AB E; AB C; D E; D F}
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Với AB D F ta có:
Tính G = {AB E; AB C; D E; D F}
Tính = ABCE
Vì D ABCE nên AB D F không thừa.
+ Với AB E F ta có:
Tính G = {AB D; AB C; D E; D F}
Tính = ABCDEF
Vì E ABCDEF nên AB E F thừa.
F = {AB D; AB C; D E; D F}
+ Với D E F ta có:
Tính G = {AB D; AB C; D F}
Tính = DF
Vì E DF nên D E F không thừa.
+ Với D F F ta có:
Tính G = {AB D; AB C; D E}
Tính = DE
Vì F DE nên D F F không thừa.
Bƣớc 4: Vậy F chƣa tối thiểu và phủ tối thiểu của nó là
F = {AB D; AB C; D E; D F}
4) F = {AB CDE; C DEF; AB F}
180 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có
một thuộc tính.
F = {AB C; AB D; AB E; C D; C E; C F; AB F}
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
+ Xét AB C
Với A VT = AB:
- Tính (VT - A)+ = B+ = B - C (VT - A)+ nên A không thừa.
Với B VT = AB:
- Tính (VT - B)+ = A+ = A - C (VT - B)+ nên B không thừa.
+ Xét AB D
Với A VT = AB:
- Tính (VT - A)+ = B+ = B - D (VT - A)+ nên A không thừa.
Với B VT = AB:
- Tính (VT - B)+ = A+ = A - D (VT - B)+ nên B không thừa.
+ Xét AB E Với A VT = AB:
- Tính (VT - A)+ = B+ = B - E (VT - A)+ nên A không thừa.
Với B VT = AB:
- Tính (VT - B)+ = A+ = A - E (VT - B)+ nên B không thừa.
+ Xét AB F
Với A VT = AB:
- Tính (VT - A)+ = B+ = B - F (VT - A)+ nên A không thừa.
Với B VT = AB:
- Tính (VT - B)+ = A+ = A - F (VT - B)+ nên B không thừa.
+ Xét C D; C E; C F
Các phụ thuộc hàm này có vế trái chỉ có một thuộc tính nên vế trái của
chúng không chứa các thuộc tính thừa.
Sau khi loại bỏ các thuộc tính thừa ở vế trái ta thu đƣợc
Phạm Hùng Phú 181
F = {AB C; AB D; AB E; C D; C E; C F; AB F}
Bài tập cơ sở dữ liệu Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Với AB C F ta có:
Tính G = {AB D; AB E; C D; C E; C F; AB F}
Tính = ABDEF
Vì C ABDEF nên AB C F không thừa.
+ Với AB D F ta có:
Tính G = {AB C; AB E; C D; C E; C F; AB F}
Tính = ABCDEF
Vì D ABCDEF nên AB D F thừa.
F = {AB C; AB E; C D; C E; C F; AB F}
+ Với AB E F ta có:
Tính G = {AB C; C D; C E; C F; AB F}
Tính = ABCDEF
Vì E ABCDEF nên AB E F thừa.
F = {AB C; C D; C E; C F; AB F}
+ Với AB F F ta có:
Tính G = {AB C; C D; C E; C F}
Tính = ABCDEF
Vì F ABCDEF nên AB F F thừa.
F = {AB C; C D; C E; C F}
+ Với C D F ta có:
Tính G = {AB C; C E; C F}
Tính = CEF
Vì D CEF nên C D F không thừa.
+ Với C E F ta có:
Tính G = {AB C; C D; C F}
Tính = CDF
Vì E CDF nên C E F không thừa.
+ Với C F F ta có:
Tính G = {AB C; C D; C E}
Tính = CDE
Vì F CDE nên C F F không thừa.
182 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Bƣớc 4: Vậy F chƣa tối thiểu vì nó chứa phụ thuộc hàm thừa AB D và phủ tối thiểu của nó là
F = {AB C; C D; C E; C F}
5) F = {AB C; C DEF; D E; AB F}
Ta có ngay C DEF có vế phải chứa nhiều hơn một thuộc tính nên F chƣa tối thiểu.
Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có
một thuộc tính.
F = {AB C; C D; C E; C F; D E; AB F}
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
+ Xét AB C
Với A VT = AB:
- Tính (VT - A)+ = B+ = B - C (VT - A)+ nên A không thừa.
Với B VT = AB:
- Tính (VT - B)+ = A+ = A - C (VT - B)+ nên B không thừa.
+ Xét AB F
Với A VT = AB:
- Tính (VT - A)+ = B+ = B - F (VT - A)+ nên A không thừa.
Với B VT = AB:
- Tính (VT - B)+ = A+ = A - F (VT - B)+ nên B không thừa.
+ Xét C D; C E; C F; D E Các phụ thuộc hàm này có vế trái chỉ có một thuộc tính nên vế trái của
chúng không chứa các thuộc tính thừa. Sau khi loại bỏ các thuộc tính thừa ở vế trái ta thu đƣợc
F = {AB C; C D; C E; C F; D E; AB F}
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Với AB C F ta có:
Tính G = {C D; C E; C F; D E; AB F}
Tính = ABF
Vì C ABF nên AB C F không thừa.
+ Với AB F F ta có:
Tính G = {AB C; C D; C E; C F; D E}
Phạm Hùng Phú 183
Bài tập cơ sở dữ liệu Tính = ABCDEF
Vì F ABCDEF nên AB F F thừa.
F = {AB C; C D; C E; C F; D E}
+ Với C D F ta có:
Tính G = {AB C; C E; C F; D E}
Tính = CEF
Vì D CEF nên C D F không thừa.
+ Với C E F ta có:
Tính G = {AB C; C D; C F; D E}
Tính = CDEF
Vì E CDEF nên C E F thừa
F = {AB C; C D; C F; D E}
+ Với C F F ta có:
Tính G = {AB C; C D; D E}
Tính = CDE
Vì F CDE nên C F F không thừa.
Bƣớc 4: Vậy F chƣa tối thiểu và phủ tối thiểu của nó là
F = {AB C; C D; C F; D E}
6) F = {AB C; AB D; AB E; AB F; D E; E F}
Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có
một thuộc tính.
F = {AB C; AB D; AB E; AB F; D E; E F}
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
+ Xét AB C
Với A VT = AB:
- Tính (VT - A)+ = B+ = B - C (VT - A)+ nên A không thừa.
Với B VT = AB:
- Tính (VT - B)+ = A+ = A - C (VT - B)+ nên B không thừa.
+ Xét AB D Với A VT = AB:
- Tính (VT - A)+ = B+ = B - D (VT - A)+ nên A không thừa.
184 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Với B VT = AB:
- Tính (VT - B)+ = A+ = A - D (VT - B)+ nên B không thừa.
+ Xét AB E
Với A VT = AB:
- Tính (VT - A)+ = B+ = B - E (VT - A)+ nên A không thừa.
Với B VT = AB:
- Tính (VT - B)+ = A+ = A - E (VT - B)+ nên B không thừa.
Với A VT = AB: + Xét AB F
- Tính (VT - A)+ = B+ = B - F (VT - A)+ nên A không thừa.
Với B VT = AB:
- Tính (VT - B)+ = A+ = A - F (VT - B)+ nên B không thừa.
+ Xét D E; E F Các phụ thuộc hàm này có vế trái chỉ có một thuộc tính nên vế trái của
chúng không chứa các thuộc tính thừa.
Sau khi loại bỏ các thuộc tính thừa ở vế trái ta thu đƣợc
F = {AB C; AB D; AB E; AB F; D E; E F}
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Với AB C F ta có:
Tính G = {AB D; AB E; AB F; D E; E F}
Tính = ABDEF
Vì C ABDEF nên AB C F không thừa.
+ Với AB D F ta có:
Tính G = {AB C; AB E; AB F; D E; E F}
Tính = ABCEF
Vì D ABCEF nên AB D F không thừa.
+ Với AB E F ta có:
Tính G = {AB C; AB D; AB F; D E; E F}
Tính = ABCDEF
Vì E ABCDEF nên AB E F thừa.
Phạm Hùng Phú 185
Bài tập cơ sở dữ liệu F = {AB C; AB D; AB F; D E; E F}
+ Với AB F F ta có:
Tính G = {AB C; AB D; D E; E F}
Tính = ABCDEF
Vì F ABCDEF nên AB F F thừa.
F = {AB C; AB D; D E; E F}
+ Với D E F ta có:
Tính G = {AB C; AB D; E F}
Tính = D
Vì E D nên D E F không thừa.
+ Với E F F ta có:
Tính G = {AB C; AB D; D E}
Tính = E
Vì F E nên E F F không thừa.
Bƣớc 4: Vậy F chƣa tối thiểu vì nó chứa phụ thuộc hàm thừa AB E và phủ tối
thiểu của nó là
F = {AB C; AB D; D E; E F}
7) F = {AB C; AB D; AB E; D E; DE F}
Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có
một thuộc tính.
F = {AB C; AB D; AB E; D E; DE F}
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
+ Xét AB C
Với A VT = AB:
- Tính (VT - A)+ = B+ = B - C (VT - A)+ nên A không thừa.
Với B VT = AB:
- Tính (VT - B)+ = A+ = A - C (VT - B)+ nên B không thừa.
+ Xét AB D Với A VT = AB:
- Tính (VT - A)+ = B+ = B - D (VT - A)+ nên A không thừa.
Với B VT = AB:
186 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
- Tính (VT - B)+ = A+ = A - D (VT - B)+ nên B không thừa.
+ Xét AB E Với A VT = AB:
- Tính (VT - A)+ = B+ = B - E (VT - A)+ nên A không thừa.
Với B VT = AB:
- Tính (VT - B)+ = A+ = A - E (VT - B)+ nên B không thừa.
+ Xét DE F
Với D VT = DE:
- Tính (VT - D)+ = E+ = E - F (VT - D)+ nên D không thừa.
Với E VT = DE:
VT = D
- Tính (VT - E)+ = D+ = DEF - F (VT - E)+ nên E thừa F = {AB C; AB D; AB E; D E; D F}
+ Xét D E
Phụ thuộc hàm này có vế trái chỉ có một thuộc tính nên vế trái của nó không
chứa các thuộc tính thừa.
Sau khi loại bỏ các thuộc tính thừa ở vế trái ta thu đƣợc
F = {AB C; AB D; AB E; D E; D F}
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Với AB C F ta có:
Tính G = {AB D; AB E; D E; D F}
Tính = ABDEF
Vì C ABDEF nên AB C F không thừa.
+ Với AB D F ta có:
Tính G = {AB C; AB E; D E; D F}
Tính = ABCE
Vì D ABCE nên AB D F không thừa.
+ Với AB E F ta có:
Tính G = {AB C; AB D; D E; D F}
Tính = ABCDEF
Vì E ABCDEF nên AB E F thừa.
Phạm Hùng Phú 187
Bài tập cơ sở dữ liệu F = {AB C; AB D; D E; D F}
+ Với D E F ta có:
Tính G = {AB C; AB D; D F}
Tính = DF
Vì E DF nên D E F không thừa.
+ Với D F F ta có:
Tính G = {AB C; AB D; D E}
Tính = DE
Vì F DE nên D F F không thừa.
Bƣớc 4: Vậy F chƣa tối thiểu vì nó có DE F chứa thuộc tính thừa E ở vế trái và
phủ tối thiểu của nó là
F = {AB C; AB D; D E; D F}
4.1.18. Cho LĐQH R với tập các phụ thuộc hàm F. Hãy tìm phủ tối thiểu của mỗi tập phụ thuộc hàm sau:
1) F = {AB C; C D; D E}
2) F = {AB C; D B; A B; C ABD}
3) F = {AB E; AG I; BE I; E G; GI H}
4) F = {AB C; B D; CD E; CE GH; G A}
Giải:
1) F = {AB C; C D; D E}
Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có
một thuộc tính.
F = {AB C; C D; D E}
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
+ Xét AB C Với A VT = AB:
- Tính (VT - A)+ = B+ = B - C (VT - A)+ nên A không thừa.
Với B VT = AB:
- Tính (VT - B)+ = A+ = A - C (VT - B)+ nên B không thừa.
+ Xét C D; D E
188 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Các phụ thuộc hàm này có vế trái chỉ có một thuộc tính nên vế trái của
chúng không chứa các thuộc tính thừa.
Sau khi loại bỏ các thuộc tính thừa ở vế trái ta thu đƣợc
F = {AB C; C D; D E}
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Với AB C F ta có:
Tính G = {C D; D E}
Tính = AB
Vì C AB nên AB C F không thừa.
+ Với C D F ta có:
Tính G = {AB C; D E}
Tính = C
Vì D C nên C D F không thừa.
+ Với D E F ta có:
Tính G = {AB C; C D}
Tính = D
Vì E D nên D E F không thừa.
Bƣớc 4: Vậy phủ tối thiểu F = {AB C; C D; D E}
2) F = {AB C; D B; A B; C ABD}
Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có
một thuộc tính.
F = {AB C; D B; A B; C A; C B; C D}
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
+ Xét AB C
Với A VT = AB:
- Tính (VT - A)+ = B+ = B - C (VT - A)+ nên A không thừa.
Với B VT = AB:
VT = A
- Tính (VT - B)+ = A+ = ABCD - C (VT - B)+ nên B thừa F = {A C; D B; A B; C A; C B; C D}
+ Xét D B; A B; C A; C B; C D Các phụ thuộc hàm này có vế trái chỉ có một thuộc tính nên vế trái của
chúng không chứa các thuộc tính thừa.
Phạm Hùng Phú 189
Bài tập cơ sở dữ liệu Sau khi loại bỏ các thuộc tính thừa ở vế trái ta thu đƣợc
F = {A C; D B; A B; C A; C B; C D}
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Với A C F ta có:
Tính G = {D B; A B; C A; C B; C D}
Tính = AB
Vì C AB nên A C F không thừa.
+ Với D B F ta có:
Tính G = {A C; A B; C A; C B; C D}
Tính = D
Vì B D nên D B F không thừa.
+ Với A B F ta có:
Tính G = {A C; D B; C A; C B; C D}
Tính = ABCD
Vì B ABCD nên A B F thừa.
F = {A C; D B; C A; C B; C D}
+ Với C A F ta có:
Tính G = {A C; D B; C B; C D}
Tính = BCD
Vì A BCD nên C A F không thừa.
+ Với C B F ta có:
Tính G = {A C; D B; C A; C D}
Tính = ABCD
Vì B ABCD nên C B F thừa.
F = {A C; D B; C A; C D}
+ Với C D F ta có:
Tính G = {A C; D B; C A}
Tính = AC
Vì D AC nên C D F không thừa.
Bƣớc 4: Vậy phủ tối thiểu F = {A C; D B; C A; C D}
3) F = {AB E; AG I; BE I; E G; GI H}
Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có một thuộc tính.
190 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
F = {AB E; AG I; BE I; E G; GI H}
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
+ Xét AB E Với A VT = AB:
- Tính (VT - A)+ = B+ = B - E (VT - A)+ nên A không thừa.
Với B VT = AB:
- Tính (VT - B)+ = A+ = A - E (VT - B)+ nên B không thừa.
+ Xét AG I
Với A VT = AG:
- Tính (VT - A)+ = G+ = G - I (VT - A)+ nên A không thừa.
Với G VT = AG:
- Tính (VT - G)+ = A+ = A - I (VT - G)+ nên G không thừa.
Với B VT = BE: + Xét BE I
- Tính (VT - B)+ = E+ = EG - I (VT - B)+ nên B không thừa.
Với E VT = BE:
- Tính (VT - E)+ = B+ = B - I (VT - E)+ nên E không thừa.
+ Xét GI H
Với G VT = GI:
- Tính (VT - G)+ = I+ = I - H (VT - G)+ nên G không thừa.
Với I VT = GI:
- Tính (VT - I)+ = G+ = G - H (VT - I)+ nên I không thừa.
+ Xét E G Phụ thuộc hàm này có vế trái chỉ có một thuộc tính nên vế trái của nó
không chứa các thuộc tính thừa.
Sau khi loại bỏ các thuộc tính thừa ở vế trái ta thu đƣợc
F = {AB E; AG I; BE I; E G; GI H}
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
Phạm Hùng Phú 191
Bài tập cơ sở dữ liệu + Với AB E F ta có:
Tính G = {AG I; BE I; E G; GI H}
Tính = AB
Vì E AB nên AB E F không thừa.
+ Với AG I F ta có:
Tính G = {AB E; BE I; E G; GI H}
Tính = AG
Vì I AG nên AG I F không thừa.
+ Với BE I F ta có:
Tính G = {AB E; AG I; E G; GI H}
Tính = BEG
Vì I BEG nên BE I F không thừa.
+ Với E G F ta có:
Tính G = {AB E; AG I; BE I; GI H}
Tính = E
Vì G E nên E G F không thừa.
+ Với GI H F ta có:
Tính G = {AB E; AG I; BE I; E G}
Tính = GI
Vì H GI nên GI H F không thừa.
Bƣớc 4: Vậy phủ tối thiểu F = {AB E; AG I; BE I; E G; GI H}
4) F = {AB C; B D; CD E; CE GH; G A}
Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có một thuộc tính.
F = {AB C; B D; CD E; CE G; CE H; G A} Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
+ Xét AB C Với A VT = AB:
- Tính (VT - A)+ = B+ = BD - C (VT - A)+ nên A không thừa.
Với B VT = AB:
- Tính (VT - B)+ = A+ = A - E (VT - B)+ nên B không thừa.
192 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
+ Xét CD E Với C VT = CD:
- Tính (VT - C)+ = D+ = D - E (VT - C)+ nên C không thừa.
Với D VT = CD:
- Tính (VT - D)+ = C+ = C - E (VT - C)+ nên C không thừa.
+ Xét CE G
Với C VT = CE:
- Tính (VT - C)+ = E+ = E - G (VT - C)+ nên C không thừa.
Với E VT = CE:
- Tính (VT - E)+ = C+ = C - G (VT - C)+ nên C không thừa.
+ Xét CE H
Với C VT = CE:
- Tính (VT - C)+ = E+ = E - H (VT - C)+ nên C không thừa.
Với E VT = CE:
- Tính (VT - E)+ = C+ = C - H (VT - C)+ nên C không thừa.
+ Xét B D; G A
Các phụ thuộc hàm này có vế trái chỉ có một thuộc tính nên vế trái của
chúng không chứa các thuộc tính thừa.
Sau khi loại bỏ các thuộc tính thừa ở vế trái ta thu đƣợc
F = {AB C; B D; CD E; CE G; CE H; G A}
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Với AB C F ta có:
Tính G = {B D; CD E; CE G; CE H; G A}
Tính = ABD
Vì C ABD nên AB C F không thừa.
+ Với B D F ta có:
Tính G = {AB C; CD E; CE G; CE H; G A}
Phạm Hùng Phú 193
Bài tập cơ sở dữ liệu Tính = B
Vì D B nên B D F không thừa.
+ Với CD E F ta có:
Tính G = {AB C; B D; CE G; CE H; G A}
Tính = CD
Vì E CD nên CD E F không thừa.
+ Với CE G F ta có:
Tính G = {AB C; B D; CD E; CE H; G A}
Tính = CEH
Vì G CEH nên CE G F không thừa.
+ Với CE H F ta có:
Tính G = {AB C; B D; CD E; CE G; G A}
Tính = ACEG
Vì H ACEG nên CE H F không thừa.
+ Với G A F ta có:
Tính G = {AB C; B D; CD E; CE G; CE H}
Tính = G
Vì A G nên G A F không thừa.
Bƣớc 4: Vậy phủ tối thiểu F = {AB C; B D; CD E; CE G; CE H; G A}
4.2. Bài tập về phép tách lược đồ quan hệ
4.2.1. Cho các sơ đồ quan hệ W =
1) R = {A, B, C} và
F = {A B}
= (R1, R2);
R1= {A, B};
R2= {A, C}.
2) R = {A, B, C}và
F = {A B; A C }
= (R1, R2);
R1= {A, B}; R2 = {A, C}.
194 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
a) trong mỗi sơ đồ quan hệ trên có phải là phép tách của R không? tại sao?;
b) Nếu là phép tách của R, bằng định lý và bằng giải thuật, hãy kiểm tra xem
mỗi tách trên có kết nối mất thông tin không ?.
Giải:
1) R = {A, B, C} và F = {A B}; = (R1, R2); R1 = {A, B}; R2 = {A, C} a) là phép tách của R (theo định nghĩa) vì:
R1, R2 R và R = R1 R2
b) Kiểm tra phép tách trên có kết nối mất thông tin hay không?
- Bằng định lý: Bước 1: Tính
nên phép tách trên có kết nối không mất thông tin.
R1 R2 = A R1 – R2 = B R2 – R1 = C (R1 R2)+ = A+ = AB
R1 – R2
Bước 2: Kiểm tra và kết luận: Vì (R1 R2)+ - Bằng giải thuật:
Bước 1,2: Lập bảng:
A B C R1 a1 a2 b13 R2 a1 b22 a13
Bước 3: Biến đổi bảng: Áp dụng phụ thuộc hàm A B làm bằng b22 bằng a2 ta thu đƣợc bảng:
A B C R1 a1 a2 b13 R2 a1 a2 a13
Vì hàng 2 toàn a nên phép tách trên có kết nối không mất thông tin.
2) R = {A, B, C} và F = {A B; A C}; = (R1, R2); R1 = {A, B}; R2 = {A, C} a) là phép tách của R (theo định nghĩa) vì:
R1, R2 R và R = R1 R2
b) Kiểm tra xem mỗi phép tách trên có kết nối mất thông tin hay không? - Bằng định lý:
Phạm Hùng Phú 195
Bài tập cơ sở dữ liệu Bước 1: Tính
nên phép tách trên có kết nối không mất thông tin.
R1 R2 = A R1 – R2 = B R2 – R1 = C (R1 R2)+ = A+ = ABC
R1 – R2
Bước 2: Kiểm tra và kết luận: Vì (R1 R2)+ - Bằng giải thuật:
Bước 1,2: Lập bảng:
A B C R1 a1 a2 b13 R2 a1 b22 a13
Bước 3: Biến đổi bảng: Áp dụng phụ thuộc hàm A B làm bằng b22 bằng a2 ta thu đƣợc bảng:
A B C R1 a1 a2 b13 R2 a1 a2 a13
Vì hàng 2 toàn a nên phép tách trên có kết nối không mất thông tin.
4.2.2. Cho sơ đồ quan hệ W =
1) R = {A, B, C, D, E, H, I, K, L}.;
F = {AB D; DE H; IK L; LB C};
= (R1, R2, R3);
R1 = {A, B, C}; R2 = {C, D, E, H}; R3 = {E, H, I, K, L}.
2) R = { A, B, C, D, E, F};
F= {AB C; C D; D E ; DE F };
= (R1, R2, R3, R4);
R1= {A, B, C}; R2= {C, D}; R3 = {D, E}; R4 = {D, E, F}.
3) R = {A, B, C, D, E} ;
F = {C A; C D; ACD BE};
= (R1, R2);
196 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
R1 = ABC;
R2 = CDE.
a) trong mỗi sơ đồ quan hệ trên có phải là phép tách của R không? tại
sao?;
b) Nếu là phép tách của R, hãy kiểm tra xem mỗi tách trên có kết nối
mất thông tin không ?.
Giải:
1) R = {A, B ,C ,D , E, H, I, K, L}
F = {AB D; DE H; IK L; LB C}
= (R1, R2, R3)
R1 = {A, B, C}; R2 = {C, D, E, H}; R3 = {E, H, I, K, L}
a) là phép tách của R (theo định nghĩa) vì:
R1, R2, R3 R và R = R1 R2 R3
b) Kiểm tra xem phép tách trên có kết nối mất thông tin không?
Bƣớc 1,2: Lập bảng:
A B C D E H I K L
R1 a1 a2 a3 b14 b15 b16 b17 b18 b19
R2 b21 b22 a3 a4 a5 a6 b27 b28 b29
R3 b31 b32 b33 b34 a5 a6 a7 a8 a9
Bƣớc 3: Biến đổi bảng:
Áp dụng phụ thuộc hàm AB D; DE H; IK L; LB C ta vẫn thu đƣợc bảng
nhƣ trên. Vậy phép tách trên là phép tách có kết nối mất thông tin.
2) R = {A, B, C, D, E, F}
F = {AB C; C D; D E; DE F}
= (R1, R2, R3, R4)
R1 = {A, B, C}; R2 = {C, D}; R3 = {D, E}; R4 = {D, E, F}
a) là phép tách của R (theo định nghĩa) vì:
R1, R2, R3, R4 R và R = R1 R2 R3 R4
b) Kiểm tra xem phép tách trên có kết nối mất thông tin không?
Bƣớc 1,2: Lập bảng:
Phạm Hùng Phú 197
Bài tập cơ sở dữ liệu A B C D E F
R1 a1 a2 a3 b14 b15 b16
R2 b21 b22 a3 a4 b25 b26
R3 b31 b32 b33 a4 a5 b36
R4 b41 b42 b43 a4 a5 a6
Bƣớc 3: Biến đổi bảng
Áp dụng phụ thuộc hàm C D làm bằng b14 bằng a4 ta có bảng sau:
A B C D E F
R1 a1 a2 a3 a4 b15 b16
R2 b21 b22 a3 a4 b25 b26
R3 b31 b32 b33 a4 a5 b36
R4 b41 b42 b43 a4 a5 a6
Áp dụng phụ thuộc hàm D E làm bằng b15, b25 bằng a5 ta đƣợc bảng sau:
A B C D E F
R1 a1 a2 a3 a4 a5 b16
R2 b21 b22 a3 a4 a5 b26
R3 b31 b32 b33 a4 a5 b36
R4 b41 b42 b43 a4 a5 a6
Áp dụng phụ thuộc hàm DE F làm bằng b16, b26, b36 bằng a6 ta có bảng sau:
A B C D E F
R1 a1 a2 a3 a4 a5 a6
R2 b21 b22 a3 a4 a5 a6
R3 b31 b32 b33 a4 a5 a6
R4 b41 b42 b43 a4 a5 a6
Ta có hàng một chứa toàn a. Vậy phép tách trên là phép tách có kết nối
không mất thông tin.
198 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
3) R = {A, B, C, D, E}
F = {C A; C D; ACD BE}
= (R1, R2); R1 = ABC; R2 = CDE
a) là phép tách của R (theo định nghĩa) vì:
R1, R2 R và R = R1 R2
b) Kiểm tra xem phép tách trên có kết nối mất thông tin không?
Bƣớc 1: Tính
R1 R2 = C
R1 – R2 = AB
R2 – R1 = DE (R1 R2)+ = C+ = ABCDE
nên phép tách trên có kết nối không mất thông tin.
Bƣớc 2: Kiểm tra và kết luận:
Vì (R1 R2)+ R1 – R2
4.2.3. Cho sơ đồ quan hệ W= < R, F>;
Trong đó:
R = ( A B C D);
F = {AB C; D B; C ABD }
và = (ABC, BCD) - phép tách của R;
Hãy kiểm tra xem phép tách trên có kết nối mất thông tin không?.
Giải:
Bƣớc 1: Tính
R1 R2 = BC
R1 – R2 = A
R2 – R1 = D (R1 R2)+ = (BC)+ = ABCD
nên phép tách trên có kết nối không mất thông tin.
Bƣớc 2: Kiểm tra và kết luận:
Vì (R1 R2)+ R1 – R2
4.2.4. Cho sơ đồ quan hệ W = < R, F>;
Trong đó:
Phạm Hùng Phú 199
Bài tập cơ sở dữ liệu R = ( A B C D E G);
F= {AB C; C A; BC D; ACD B; D EG; BE C;
CG BD; E G }
và = (ABC, BCD, DEG) - phép tách của R;
Hãy kiểm tra xem phép tách trên có kết nối mất thông tin không?.
Giải:
Bƣớc 1,2: Lập bảng:
A B C D E G
R1 a1 a2 a3 b14 b15 b16
R2 b21 a2 a3 a4 b25 b26
R3 b31 b32 b33 a4 a5 a6
Bƣớc 3: Biến đổi bảng:
Áp dụng phụ thuộc hàm C A làm bằng b21 bằng a1 ta đƣợc bảng:
A B C D E G
R1 a1 a2 a3 b14 b15 b16
R2 a1 a2 a3 a4 b25 b26
R3 b31 b32 b33 a4 a5 a6
Áp dụng phụ thuộc hàm BC D làm bằng b14 bằng a4 ta đƣợc bảng:
A B C D E G
R1 a1 a2 a3 a4 b15 b16
R2 a1 a2 a3 a4 b25 b26
R3 b31 b32 b33 a4 a5 a6
Áp dụng phụ thuộc hàm D EG làm bằng b15, b25 bằng a5 và b16, a26 bằng a6 ta
đƣợc bảng:
A B C D E G
R1 a1 a2 a3 a4 a5 a6
R2 a1 a2 a3 a4 a5 a6
R3 b31 b32 b33 a4 a5 a6
200 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Ta thấy hàng 2 chứa toàn a. Vậy phép tách trên là có kết nối không mất thông tin.
4.2.5. Cho sơ đồ quan hệ W= < R, F>;
Trong đó:
R = ( A B C D);
F = {AB C; D B; C ABD }
và = (ABC, BCD) - phép tách của R;
Hãy kiểm tra xem phép tách trên có bảo toàn phụ thuộc hàm không?.
Giải:
Bƣớc 1: Tính G
F1 = ∏ABC(F) = { AB C; C AB}
F2 = ∏BCD(F) = { D B; C BD}
(Chú ý ta bỏ qua các phụ thuộc hàm tầm thƣờng)
G = { AB C; C AB; D B; C BD} Bƣớc 2: (Kiểm tra xem X Y F thì X Y G+ không?)
Hiển nhiên AB C; D B F thì cũng thuộc G+
Xét C ABD F:
Ta có: = ABCD ABD nên C ABD G+
Bƣớc 3: là phép tách bảo toàn phụ thuộc hàm.
4.2.6. Cho sơ đồ quan hệ W= < R, F>;
Trong đó:
R = ( A B C D E G);
F= {AB C; C A; BC D; ACD B; D EG; BE C;
CG BD; E G }
và = (ABC, BCD, DEG) - phép tách của R;
Hãy kiểm tra xem phép tách trên có bảo toàn phụ thuộc hàm không?.
Giải:
Bƣớc 1: Tính G
F1 = ∏ABC(F) = { AB C; C A}
Phạm Hùng Phú 201
Bài tập cơ sở dữ liệu F2 = ∏BCD(F) = { BC D;CD B; BD C}
F3 = ∏DEG(F) = { D EG; E G}
(Chú ý ta bỏ qua các phụ thuộc hàm tầm thƣờng)
G = { AB C; C A ; BC D;CD B; BD C; D EG; E G}
Bƣớc 2: (Kiểm tra xem X Y F thì X Y G+ không?)
Xét BE C F:
= BEG không chứa C.
Vậy phép tách trên không bảo toàn phụ thuộc hàm.
4.2.7. Cho sơ đồ quan hệ W= < R, F>;
Trong đó:
R = ( A B C D E G H);
F= {AB C; C A; C D; D E; D EG }
và = (ABC, ABD, CDE, DGH) - phép tách của R;
Hãy kiểm tra xem phép tách trên có bảo toàn phụ thuộc hàm không?.
Giải:
Bƣớc 1: Tính G
F1 = ∏ABC(F) = { AB C; C A}
F2 = ∏ABD(F) = {AB D}
F3 = ∏CDE(F) = { C D; D E }
F4 = ∏DGH(F) = {D G}
(Chú ý ta bỏ qua các phụ thuộc hàm tầm thƣờng)
G = {AB C; C A ; AB D; C D; D E; D G}
Bƣớc 2: (Kiểm tra xem X Y F thì X Y G+ không?)
Dễ thấy G~F. Vậy phép tách trên là bảo toàn phụ thuộc hàm.
4.2.8. Cho sơ đồ quan hệ W =
Trong đó:
R = (masv, mamon, diem, hoten, ngaysinh, gioitinh, diachi, quequan);
F = {masv, mamon diem; masv hoten, ngaysinh, gioitinh, diachi,
quequan};
202 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
R1 = {masv, mamon, diem};
R2 = {masv, hoten, ngaysinh, gioitinh, diachi, quequan};
= (R1, R2) – phép tách của R;
Phép tách trên có kết nối mất thông tin không?, có bảo toàn phụ thuộc hàm
không?.
Giải:
1) Kiểm tra xem phép tách trên có kết nối mất thông tin hay không?
Bƣớc 1: Tính
R1 R2 = {masv}
R1 – R2 = {mamon, diem}
R2 – R1 = {hoten, ngaysinh, gioitinh, diachi, quequan} (R1 R2)+ = (masv)+ = {hoten, ngaysinh, gioitinh, diachi,
nên phép tách trên có kết nối không mất thông tin.
quequan}
Bƣớc 2: Kiểm tra và kết luận: Vì (R1 R2)+ R2 – R1
2) Kiểm tra xem phép tách trên có bảo toàn phụ thuộc hàm không?
Bƣớc 1: Tính G
diem} F1 = ∏R1(F) = {masv, mamon
hoten, ngaysinh, gioitinh, diachi, quequan} F2 = ∏R2(F) = {masv
(Chú ý ta bỏ qua các phụ thuộc hàm tầm thƣờng)
G = {masv, mamon hoten, ngaysinh, gioitinh, diachi, quequan}
diem; masv Bƣớc 2: (Kiểm tra xem X Y F thì X Y G+ không?)
Dễ thấy G ~ F. Vậy phép tách trên là bảo toàn phụ thuộc hàm.
4.3. Bài tập về chuẩn hóa sơ đồ quan hệ
4.3.1. Hãy tách SĐQH W =
R = (A B C D E F G)
F = {AB C; C D; D E}
Giải:
Phạm Hùng Phú 203
Bài tập cơ sở dữ liệu Áp dụng giải thuật tách LĐQH dạng chuẩn BCNF có kết nối không mất thông tin
cho
- Trong F có D E vi phạm điều kiện BCNF vì D+ = DE U (= ABCDEFG) nên
tách R thành
R1(DE) ứng với F1= {D E} (ở dạng BCNF)
và R2(ABCDFG) ứng với F2= { AB C; C D } - Trong F2 có C D vi phạm điều kiện BCNF vì C+ = CD U (= ABCDFG) nên tách R2 thành
R21(CD) ứng với F21= {C D} (ở dạng BCNF)
và R22(ABCFG) ứng với F22= { AB C} - Trong F22 có AB C vi phạm điều kiện BCNF vì (AB)+ = ABC U(= ABCFG) nên tách R22 thành
R221(ABC) ứng với F221= {AB C} (ở dạng BCNF)
và R222(ABFG) ứng với F222= (ở dạng BCNF)
- Kết quả thu đƣợc = {R1(DE), R21(CD), R221(ABC), R222(ABFG)}.
R = (A B C D E F G) F = {AB C; C D; D E}
R2(ABCDFG) F2 = {AB C; C D}
R1(DE) F1 = {D E}
R21(CD) F21 = {C D}
R22(ABCFG) F22 = {AB C}
R221(ABC) F221 = { AB C}
R222(ABFG) F222 = Ø
Ta cũng có thể trình bày lời giải bằng cách sử dụng sơ đồ
Cách khác nếu trong F chỉ ra AB C vi phạm BCNF vì (AB)+= ABCDE U
(= ABCDEFG) nên tách R thành
204 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
R1(ABC) ứng với F1= {AB C} (ở dạng BCNF)
và R2(ABDEFG) ứng với F2= { AB D; D E } - Trong F2 có AB D vi phạm điều kiện BCNF vì (AB)+ = ABDE U (= ABDEFG) nên tách R2 thành
R21(ABD) ứng với F21= {AB D} (ở dạng BCNF)
và R22(ABEFG) ứng với F22= { AB E} - Trong F22 có AB E vi phạm điều kiện BCNF vì (AB)+ = ABE U(= ABEFG) nên tách R22 thành
R221(ABE) ứng với F221= {AB E} (ở dạng BCNF)
và R222(ABFG) ứng với F222= (ở dạng BCNF)
- Kết quả thu đƣợc = { R1(ABC), R21(ABD), R221(ABE), R222(ABFG)}.
Nhƣng R1(ABC), R21(ABD), R221(ABE) có chung khóa AB nên có thể gộp lại thành
R10(ABCDE) ứng với tập phụ thuộc hàm F10 = {AB C; AB D ; AB E } và khi
đó = { R1(ABCDE), R222(ABFG)}.
4.2.2. Cho SĐQH W =
R = (A B C D E F G)
F = {AB C; C A; C B; C D; C E; AB F}
Hãy tách R thành dạng chuẩn BCNF có kết nối không mất thông tin.
Giải:
Áp dụng giải thuật tách LĐQH dạng chuẩn BCNF có kết nối không mất thông
tin cho
R1(ABC) và R2(ABDEFG).
- Ta có: F1 = {AB C; C A; C B}, F2 = {AB D; AB E; AB F}
- Tiếp tục áp dụng giải thuật cho
phạm BCNF nên dừng tách F1.
- Áp dụng giải thuật cho
+ AB D vi phạm điều kiện BCNF vì (AB)+ = ABDEF U (=ABDEFG);
tách R2 thành R21(ABD) và R22(ABEFG)
+ Ta có F21 = {AB D} và F22 = {AB E; AB F}
Phạm Hùng Phú 205
Bài tập cơ sở dữ liệu
+ Áp dụng giải thuật cho
vi phạm BCNF nên dừng tách F21.
+ Áp dụng giải thuật cho
AB E vi phạm điều kiện BCNF vì (AB)+ = ABEF U (=ABEFG).
Tách R22 thành R221(ABE) và R222(ABFG)
Ta có F221 = {AB E} và F222 = {AB F}
Áp dụng giải thuật cho
F221 vi phạm BCNF nên dừng tách F221.
Tƣơng tự áp dụng giải thuật cho
R2221(ABF) và R2222(ABG)với F2221 = {AB F} và F2222 = Ø đều đã ở
dạng chuẩn BCNF nên dừng giải thuật
- Kết quả thu đƣợc = {R1, R21, R221, R2221, R2222}. Vì R21, R221 và R2221 có chung
khóa là AB nên có thể gộp thành R20(ABCDEF) với
F20 = { AB C; C A; C B; AB D; AB E; AB F}
- Phép tách cuối cùng đƣợc = { R20, R2222}
4.3.3. Hãy tách SĐQH W =
1) R = (A B C D E F G)
F = {AB C; B D; D E; E F}
2) R = (A B C D E)
F = {AB C; D B; A B; C A; C B; C D}
Giải:
1) R = (A B C D E F G)
F = {AB C; B D; D E; E F}
Cách 1:
- Trong F có E F vi phạm BCNF vì E+= EF U nên R đƣợc tách thành
R1(EF) ứng với F1={ E F } (ở dạng BCNF) và
R2(ABCDEG) ứng với F2={ AB C; B D; D E}
- Trong F2 có D E vi phạm BCNF vì D+= DE U(=ABCDEG) nên R2 đƣợc tách
thành
206 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
R21(DE) ứng với F21={ D E } (ở dạng BCNF) và
R22(ABCDG) ứng với F22 ={ AB C; B D}
- Trong F22 có B D vi phạm BCNF vì B+=BD U(=ABCDG) nên R22 đƣợc tách
thành
R221(BD) ứng với F221={ B D} (ở dạng BCNF) và
R222(ABCG) ứng với F222 ={ AB C}
- Trong F222 có AB C vi phạm BCNF vì (AB)+=ABC U(=ABCG) nên R222 đƣợc
tách thành
R2221(ABC) ứng với F2221={ AB C} (ở dạng BCNF) và
R2222(ABG) ứng với F2222 =
Vậy = {R1(EF), R21(DE), R221(BD), R2221(ABC), R2222(ABG)}
Cách 2: Trong F chỉ ra AB C vi phạm BCNF vì (AB)+= ABCDEF U (= ABCDEFG) nên
tách R thành
R1(ABC) ứng với F1= {AB C} (ở dạng BCNF)
và R2(ABDEFG) ứng với F2= {B D; D E ; E F } - Trong F2 có B D vi phạm điều kiện BCNF vì B+ = BDEF U (= ABDEFG) nên
tách R2 thành
R21(BD) ứng với F21= {B D} (ở dạng BCNF)
và R22(ABEFG) ứng với F22 = { B E; E F} Trong F22 có B E vi phạm điều kiện BCNF vì B+ = BEF U(= ABEFG) nên tách
R22 thành
R221(BE) ứng với F221= {B E} (ở dạng BCNF)
và R222(ABFG) ứng với F222= {B F} Trong F222 có B F vi phạm điều kiện BCNF vì B+ = BF U(= ABFG) nên tách
R222 thành
R2221(BF) ứng với F2221= {B F} (ở dạng BCNF)
và R2222(ABG) ứng với F2222= (ở dạng BCNF)
- Kết quả thu đƣợc = { R1(ABC), R21(BD), R221(BE), R2221(BF), R2222(ABG)}.
Nhƣng R21(BD), R221(BE) , R2221(BF)có chung khóa B nên có thể gộp lại thành
Phạm Hùng Phú 207
Bài tập cơ sở dữ liệu R20(BDEF) ứng với tập phụ thuộc hàm F10 = {B D; B E ; B F} và khi đó
= { R1(ABC), R20(BDEF), R2222(ABG)}.
2) R = (A B C D E)
F = {AB C; D B; A B; C A; C B; C D}
R = (A B C D E) F = {AB C; D B; A B; C A; C B; C D}
R2(ABDE) F2 = {D B; A B; AB D}
R1(ABC) F1={AB C; A B; C A; C B}
R21(BD) F21 = {D B}
R22(ADE) F21 = {A D}
R221(AD) F221 = {A D}
R222(AE) R222(AE) F222 = Ø F222 = Ø
Ta trình bày giải thuật áp dụng cho câu này bằng sơ đồ
Kết quả thu đƣợc = { R1(ABC), R21(BD), R221(AD), R222(AE)}.
Nhƣng R1 (ABC) và R221(AD) có chung khóa A nên ta gộp lại thành R10(ABCD) ứng
với F10 = { AB C; A B; C A; C B; A D;}.
Kết quả cuối cùng = { R10(ABCD), R21(BD), R222(AE)}.
Hoặc có thể sử dụng cách sau:
Ta có F = {AB C; D B; A B; C A; C B; C D }
- Trong F có C D vi phạm BCNF (C+= ABCD U(=ABCDGH)) nên tách R
thành R1(CD) có F1={ C D } (đã ở dạng BCNF) và
R2(ABCGH) có F2 ={AB C; A B; C A; C B}
- Trong F2 có C B vi phạm BCNF (C+= ABC U(=ABCGH)) nên tách R2 thành
R21(CB) có F21 = { C B } (đã ở dạng BCNF) và
R22(ACGH) có F22 ={ A C; C A }
- Trong F22 có C A vi phạm BCNF (C+= AC U(=ACGH)) nên tách R22 thành
R221(CA) có F221={ A C ;C A} (đã ở dạng BCNF) và
208 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
R222(CGH) có F222 = (đã ở dạng BCNF)
- Vì R1, R21, R221có chung khóa là C nên có thể gộp thành R10(ABCD) với F10
= {A C; C A; C B; C D}.
- Kết quả cuối cùng đƣợc = { R10(ABCD) , R222(CGH)
4.3.4. Cho SĐQH W =
R = (A B C D E F G);
F = {AB C; E F; F G}.
Hãy tách LĐQH R thành các LĐQH dạng chuẩn BCNF có kết nối không mất thông
tin.
F; F G}
R = (A B C D E F G) F = {AB C; E
F}
R1(FG) F1 = {F G}
R2(ABCDEF) F2 = {AB C; E
F}
R21(EF) F21 = {E
R22(ABCDE) F22 = {AB C}
R221(ABC) F221 = {AB C}
R222(ABDE) F222 = Ø
Giải:
Kết quả thu đƣợc = { R1(FG), R21(EF), R221(ABC), R222(ABDE)}.
4.3.5. Cho SĐQH W =
R = (A B C D E F G);
F = {AB C; C A; C B; C D}.
Hãy tách LĐQH R thành các LĐQH dạng chuẩn BCNF có kết nối không mất thông
tin.
Phạm Hùng Phú 209
R = (A B C D E F G) F = {AB C; C A; C B; C D}
R2(ABDEFG) F2 = {AB D}
R1(ABC) F1 = {AB C; C A; C B}
R21(ABD) F21 = {AB D}
R22(ABEFG) F22 = Ø
Bài tập cơ sở dữ liệu Giải:
- Kết quả thu đƣợc = {R1, R21, R22}. Vì R1, R21 có chung khóa là AB nên có thể
gộp thành R20(ABCD) với F20 = {AB C; C A; C B; AB D}
- Phép tách cuối cùng đƣợc = {R20(ABCD), R22(ABEFG)}
4.3.6. Hãy tách SĐQH W =
1) R = (A B C D E F G)
F = {AB C; D E; AB G; D F}
2) R = (A B C D G H)
F = {AB C; D C; A B; C ABD}
Giải:
1) R = (A B C D E F G)
R = (A B C D E F G) F = {AB C; D E; AB G; D F}
R2(ABCDEG) F2 = { AB C; D E; AB G}
F = {AB C; D E; AB G; D F}
R21(DE) F21 = {D E}
R22(ABCDG) F22 ={AB C; AB G}
R221(ABC) F221 = {AB C}
R222(ABDG) F222 = {AB G}
R2221(ABG) F2221 = {AB G}
R2222(ABD) F2222 = Ø
R1(DF) F1 = {D F}
210 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
- Kết quả thu đƣợc = {R1(DF), R21(DE), R221(ABC), R2221(ABG), R2222(ABD)}. Vì
R1, R21 có chung khóa là D nên có thể gộp thành R10(DEF) với F10 = {D E;
D F}. Vì R221 và R2221 có chung khóa là AD nên có thể gộp thành R20(ABCG) với
F20 = {AB C; AB G}
- Phép tách cuối cùng đƣợc = { R10(DEF), R20(ABCG), R2222(ABD)}
2) R = (A B C D G H)
F = {AB C; D C; A B; C ABD}
F = {AB C; D C; A B; C A; C B; C D }
- Trong F có C D vi phạm BCNF (C+= ABCD U(=ABCDGH)) nên tách R
thành R1(CD) có F1= { C D, D C } (đã ở dạng BCNF) và
R2(ABCGH) có F2 = {AB C; A B; C A; C B}
- Trong F2 có C B vi phạm BCNF (C+= ABC U(=ABCGH)) nên tách R2 thành
R21(CB) có F21 = { C B } (đã ở dạng BCNF) và
R22(ACGH) có F22 ={ A C; C A }
- Trong F22 có C A vi phạm BCNF (C+= AC U(=ACGH)) nên tách R22 thành
R221(CA) có F221={ A C ;C A} (đã ở dạng BCNF) và
R222(CGH) có F222 = (đã ở dạng BCNF)
- Vì R1, R21, R221có chung khóa là C nên có thể gộp thành R10(ABCD) với
F10 = {A C; C A; C B; C D, D C .
- Kết quả cuối cùng đƣợc = { R10(ABCD) , R222(CGH)
4.3.7. Hãy tách SĐQH W =
R = (ABCDEFG);
F = {AB C; C D; D E} – tối thiểu
Giải:
Áp dụng giải thuật tách LĐQH thành 3NF bảo toàn phụ thuộc hàm ta có:
Bƣớc 1: Xét các thuộc tính F, G không liên quan đến bất cứ phụ thuộc hàm nào
trong F nên ta tách nó thành R1(FG).
Phạm Hùng Phú 211
Bài tập cơ sở dữ liệu Bƣớc 4: Với mỗi phụ thuộc hàm trong F tách thành một lƣợc đồ tƣơng ứng cho ta
các lƣợc đồ dạng chuẩn 3NF là
R2(ABC) ứng với AB C
R3(CD) ứng với C D
R4(DE) ứng với D E
Kết quả đƣợc = { R1(FG), R2(ABC), R3(CD), R4(DE)}
4.3.8. Cho SĐQH W =
R = (A B C D E F G)
F = {AB C; C A; C B; C D; C E; AB F} – tối thiểu.
Hãy tách R thành các LĐQH dạng chuẩn 3NF bảo toàn phụ thuộc hàm và có kết hối
không mất thông tin.
Giải:
Áp dụng giải thuật tách LĐQH thành 3NF bảo toàn phụ thuộc hàm ta có:
Bƣớc 1: Xét thuộc tính G không liên quan đến bất cứ phụ thuộc hàm nào trong F
nên ta tách nó thành R1(G).
Bƣớc 2: Ứng với các phụ thuộc hàm AB C; C A; C B, ta có R2(ABC).
Bƣớc 3: Ứng với các phụ thuộc hàm C D; C E, ta có R3(CDE).
Bƣớc 4: Với phụ thuộc hàm AB F trong F tách thành một lƣợc đồ tƣơng ứng cho
ta lƣợc đồ dạng chuẩn 3NF là R4(ABF).
Kết quả = {R1(G); R2(ABC); R3(CDE); R4(ABF)}
4.3.9. Cho SĐQH W =
R = (A B C D E F G)
F = {AB C; C A; C B; C D; C E; D F; D G} – tối thiểu.
Hãy tách R thành các LĐQH dạng chuẩn 3NF bảo toàn phụ thuộc hàm.
Giải:
Áp dụng giải thuật tách LĐQH thành 3NF bảo toàn phụ thuộc hàm ta có:
Bƣớc 2: Ứng với các phụ thuộc hàm AB C; C A; C B, ta có R1(ABC).
Bƣớc 3: - Ứng với các phụ thuộc hàm C D; C E, ta có R2(CDE).
- Ứng với các phụ thuộc hàm D F; D G, ta có R3(DFG).
Kết quả = { R1(ABC); R2(CDE); R3(DFG)}
212 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
4.4. Bài tập tổng hợp
4.4.1. Cho SĐQH W =
R = (A B C D E F G)
F = {AB C; C A; C B; C D; C E; AB F} – tối thiểu.
Hãy tách R thành các LĐQH dạng chuẩn 3NF bảo toàn phụ thuộc hàm và có kết nối
không mất thông tin.
Giải:
- Tìm khóa của R
+ K = G;
+ K+ = G+ = G ≠ R R có thể có nhiều khóa
+ G = ABC K = GABC
Với A G
(K - A)+ = (GBC)+= R K = GBC
Với B G
(K - B)+ = (GC)+= R K = GC
Với C G (K - C)+ = (G)+ = G ≠ R
K = GC – một khóa của R.
Thay đổi thứ tự loại bỏ các thuộc tunhs thừa trong G, ta có K = GAB – một
khóa khác của R.
- Tách R về 3NF bảo toàn phụ thuộc hàm:
Áp dụng giải thuật tách LĐQH thành 3NF bảo toàn phụ thuộc hàm ta có:
Bƣớc 1: Xét thuộc tính G không liên quan đến bất cứ phụ thuộc hàm nào trong F
nên ta tách nó thành R1(G).
Bƣớc 2: Ứng với các phụ thuộc hàm AB C; C A; C B, ta có R2(ABC).
Bƣớc 3: Ứng với các phụ thuộc hàm C D; C E, ta có R3(CDE).
Bƣớc 4: Với phụ thuộc hàm AB F trong F tách thành một lƣợc đồ tƣơng ứng cho
ta lƣợc đồ dạng chuẩn 3NF là R4(ABF).
Kết quả = {R1(G); R2(ABC); R3(CDE); R4(ABF)}
- Tách R về 3NF bảo toàn phụ thuộc hàm và có kết nối không mất thông tin:
Phạm Hùng Phú 213
Bài tập cơ sở dữ liệu = {K} = {K; R2(ABC); R3(CDE); R4(ABF)}
= {K(GC); R2(ABC); R3(CDE); R4(ABF)}
hoặc = {K(GAB); R2(ABC); R3(CDE); R4(ABF)}
4.4.2. Cho SĐQH W =
R = (A B C D E F G)
F = {AB C; C A; C B; C D; C E; D F; D G} – tối thiểu.
Hãy tách R thành các LĐQH dạng chuẩn 3NF bảo toàn phụ thuộc hàm và có kết nối
không mất thông tin.
Giải:
- Tìm khóa của R
+ K = ;
+ K+ = ≠ R R có thể có nhiều khóa
+ G = ABCD K = ABCD
Với A G
(K - A)+ = (BCD)+ = R K = BCD
Với B G
(K - B)+ = (CD)+ = R K = CD
Với C G (K - C)+ = (D)+ = DFG ≠ R
Với D G
(K - D)+ = (C)+ = R K = C
K = GC – một khóa của R.
Thay đổi thứ tự loại bỏ các thuộc tunhs thừa trong G, ta có K = AB – một
khóa khác của R.
- Tách R về 3NF bảo toàn phụ thuộc hàm:
Áp dụng giải thuật tách LĐQH thành 3NF bảo toàn phụ thuộc hàm ta có:
Bƣớc 2: Ứng với các phụ thuộc hàm AB C; C A; C B, ta có R1(ABC).
Bƣớc 3: - Ứng với các phụ thuộc hàm C D; C E, ta có R2(CDE).
- Ứng với các phụ thuộc hàm D F; D G, ta có R3(DFG).
214 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Kết quả = { R1(ABC); R2(CDE); R3(DFG)}
- Tách R về 3NF bảo toàn phụ thuộc hàm và có kết nối không mất thông tin:
= {K} = {R1(ABC); R2(CDE); R3(DFG)}
4.4.3. Hãy tách SĐQH W =
1) R = (ABCDEFG)
F = {AB C; B D; D E; E F}
2) R = (ABCDEF)
F = {AB C; D B; A B; C ABD}
Giải:
1) R = (ABCDEFG)
F = {AB C; B D; D E; E F}
* Xét tập phụ thuộc hàm F, ta có
- Tất cả các phụ thuộc hàm trong F đều có vế phải chỉ có một thuộc tính.
- + Các phụ thuộc hàm B D; D E; E F đều có vế trái chỉ có một thuộc tính
nên vế trái của chúng không chứa thuộc tính thừa.
+ Xét AB C
Với A AB, ta có C (AB-A)+ =B+= BDEF.
Với B AB, ta có C (AB-B)+ =A+= A nên AB không chứa thuộc tính thừa
- + Xét AB C F
G = ABDEF
G = { B D; D E; E F } (AB)+
G nên AB C không thừa
C AB)+
+ Tƣơng tự, ta có B D; D E; E F không thừa
Vậy theo định nghĩa F là tối thiểu
* Áp dụng giải thuật tách LĐQH thành 3NF bảo toàn phụ thuộc hàm ta có:
Bƣớc 1: Xét thuộc tính G không liên quan đến bất cứ phụ thuộc hàm nào trong F
nên ta tách nó thành R1(G).
Bƣớc 4: Với mỗi phụ thuộc hàm trong F tách thành một lƣợc đồ tƣơng ứng cho ta
các lƣợc đồ dạng chuẩn 3NF là R2(ABC), R3(BD), R4(DE), R5(EF).
Phạm Hùng Phú 215
Bài tập cơ sở dữ liệu Kết quả = {R1(G); R2(ABC); R3(BD); R4(DE); R5(EF)}
Với F1 = Ø; F2 = {AB C}; F3 = {B D}; F4 = {D E}; F5 = {E F}
2) R = (ABCDEF)
F = {AB C; D B; A B; C ABD}
* Ta có F chƣa tối thiểu vì vế phải của C ABD chứa nhiều hơn một thuộc tính.
Trƣớc hết ta tìm phủ tối thiểu của F:
Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có
một thuộc tính.
F = {AB C; D B; A B; C A; C B; C D}
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
D B; A B; C A; C B; C D có vế trái chỉ chứa 1 thuộc tính nên
các vế trái của chúng không chứa thuộc tính thừa. Ta chỉ còn phải xét
AB C
Với A VT = AB: + (VT - A)+ = B+ = B + C (VT - A)+ nên A không thừa.
Với B VT = AB:
+ (VT - B)+ = A+ = ABCD + C (VT - B)+ nên B thừa VT = A
Sau khi loại bỏ các thuộc tính thừa ta có:
F = {A C; D B; A B; C A; C B; C D}
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Với A C F ta có:
Tính G = {D B; A B; C A; C B; C D}
Tính = AB
Vì C AB nên A C F không thừa.
+ Với D B F ta có:
Tính G = {A C; A B; C A; C B; C D}
Tính = D
Vì B D nên D B F không thừa.
216 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
+ Với A B F ta có:
Tính G = {A C; D B; C A; C B; C D}
Tính = ABCD
Vì B ABCD nên A B F thừa.
F = {A C; D B; C A; C B; C D}
+ Với C A F, ta có:
Tính G = {A C; D B; C B; C D}
Tính = BCD
Vì A BCD nên C A F không thừa.
+ Với C B F ta có:
Tính G = {A C; D B; C A; C D}
Tính = ABCD
Vì B ABCD nên C B F thừa.
F = {A C; D B; C A; C D}
+ Với C D F ta có:
Tính G = {A C; D B; C A}
Tính = AC
Vì D AC nên C D F không thừa.
Vậy phủ tối thiểu F = {A C; D B; C A; C D}
* Với F tối thiểu. Áp dụng giải thuật tách LĐQH thành 3NF bảo toàn phụ thuộc
hàm ta có:
- Vì E, F không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có
R1(EF).
- Ứng với các phụ thuộc hàm A C; C A ta có R2(AC).
- Ứng với các phụ thuộc hàm còn lại ta có R3(BD) và R4(CD).
- Kết quả ta đƣợc phép tách = {R1(EF), R2(AC), R3(BD), R4(CD)}
với F1 = Ø; F2 = {A C; C A}; F3 = {D B}; F4 = {C D}
4.4.4. Cho SĐQH W =
R = (ABCDEFG)
F = {AB C; C B; C D; D E}.
Phạm Hùng Phú 217
Bài tập cơ sở dữ liệu Hãy tách LĐQH R thành các LĐQH dạng chuẩn 3NF có kết nối không mất thông
tin và bảo toàn phụ thuộc hàm.
Bƣớc 1: Tìm phủ tối thiểu của F.
- Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có 1
thuộc tính.
F = {AB C; C B; C D; D E}
- Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F
+ C B; C D; D E có vế trái chỉ chứa 1 thuộc tính nên các vế trái
của chúng không chứa thuộc tính thừa. Ta chỉ còn phải xét AB C
+ Với A VT = AB:
(VT - A)+ = B+ = B C (VT - A)+ nên A không thừa.
+ Với B VT = AB:
(VT - B)+ = A+ = A C (VT - B)+ nên B không thừa.
Sau khi loại bỏ các thuộc tính thừa ta có F = {AB C; C B; C D; D E}
- Loại các phụ thuộc hàm thừa trong F.
+ Với AB C F ta có:
G = {C B; C D; D E}
= AB
C AB nên AB C F không thừa.
+ Với C B F ta có:
G = {AB C; C D; D E}
= CDE
B CDE nên C B F không thừa.
+ Với C D F ta có:
G = {AB C; C B; D E}
= BC
D BC nên C D F không thừa.
+ Với D E F ta có:
218 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
G = {AB C; C B; C D}
= D
E D nên D E F không thừa
Vậy F = {AB C; C B; C D; D E} - tối thiểu.
Bƣớc 2: Tìm khóa K của R.
- K = AFG (A chỉ nằm ở vế trái; F, G không nằm trong phụ thuộc hàm nào của F) - Tính K+
+ K+ = (AFG)+ = AFG U
Vậy R có thể có nhiều khóa
G = BCD
K = ABCDFG
Loại bỏ các thuộc tính thừa trong G
Với B G, ta có (K - B)+ = (ACDFG)+ = ABCDEFG =
U nên K = ACDFG
Với C G ta có (K - C)+ = (ADFG)+ = ADEFG U nên
K = ACDFG
Với D G ta có (K - D)+ = (ACFG)+ = ABCDEFG = U
nên K = ACFG
- K = ACFG là một khóa của R
Bƣớc 3: Tách R thành 3NF bảo toàn phụ thuộc hàm.
- Vì F, G không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có
R1(FG).
- Ứng với các phụ thuộc hàm AB C; C B ta có R2(ABC).
- Ứng với các phụ thuộc hàm còn lại ta có R3(CD) và R4(DE).
- Kết quả ta đƣợc phép tách = {R1(FG), R2(ABC), R3(CD), R4(DE)}
Bƣớc 4: Lấy = {K} = {R1(FG), R2(ABC), R3(CD), R4(DE)} {K(ACFG)}
Ta có R1(FG) K(ACFG) nên kết quả phép tách R về 3NF bảo toàn phụ
thuộc hàm và có kết nối không mất thông tin là:
= {K(ACFG), R2(ABC), R3(CD), R4(DE)}
Phạm Hùng Phú 219
Bài tập cơ sở dữ liệu
4.4.5. Cho SĐQH W =
R = (ABCDEFG)
F = {AB C; C A; C B; C D; C E; AB F}.
Hãy tách LĐQH R thành các LĐQH dạng chuẩn 3NF có kết nối không mất thông
tin và bảo toàn phụ thuộc hàm.
Giải:
Bƣớc 1: Tìm phủ tối thiểu của F.
- Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có 1 thuộc
tính.
F = {AB C; C A; C B; C D; C E; AB F}
- Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F
+ C A; C B; C D; C E có vế trái chỉ chứa 1 thuộc tính nên các vế trái
của chúng không chứa thuộc tính thừa. Ta chỉ còn phải xét AB C và AB F
+ Xét AB C.
Với A VT = AB:
(VT - A)+ = B+ = B
C (VT - A)+ nên A không thừa.
Với B VT = AB:
(VT - B)+ = A+ = A
C (VT - B)+ nên B không thừa.
+ Xét AB F.
Với A VT = AB:
(VT - A)+ = B+ = B
F (VT - A)+ nên A không thừa.
Với B VT = AB:
(VT - B)+ = A+ = A
F (VT - B)+ nên B không thừa.
Sau khi loại bỏ các thuộc tính thừa ta có:
F = {AB C; C A; C B; C D; C E; AB F}
- Loại các phụ thuộc hàm thừa trong F.
220 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
+ Với AB C F ta có:
G = {C A; C B; C D; C E; AB F}
= ABF
C ABF nên AB C F không thừa.
+ Với C A F ta có:
G = {AB C; C B; C D; C E; AB F}
= BCDE
A BCDE nên C A F không thừa.
+ Với C B F ta có:
G = {AB C; C A; C D; C E; AB F}
= ACDE
B ACDE nên C B F không thừa.
+ Với C D F ta có:
G = {AB C; C A; C B; C E; AB F}
= ABCEF
D ABCEF nên C D F không thừa.
+ Với C E F ta có:
G = {AB C; C A; C B; C D; AB F}
= ABCDF
E ABCDF nên C E F không thừa.
+ Với AB F F ta có:
G = {C A; C B; C D; C E; AB C}
= ABCDE
C ABCDE nên AB F F không thừa.
Vậy F = {AB C; C A; C B; C D; C E; AB F} - tối thiểu.
Bƣớc 2: Tìm khóa K của R.
- K = G (G không nằm trong bất cứ phụ thuộc hàm nào của F) - Tính K+.
K+ = G+ = G U nên R có thể có nhiều khóa
G = ABC
Phạm Hùng Phú 221
Bài tập cơ sở dữ liệu K = ABCG
Loại bỏ các thuộc tính thừa trong G
Với A G, ta có (K - A)+ = (BCG)+ = ABCDEFG = U nên K = BCG
Với B G, ta có (K - B)+ = (CG)+ = ABCDEFG = U nên K = CG
- K = CG là một khóa của R
Bƣớc 3: Tách R thành 3NF bảo toàn phụ thuộc hàm.
- Vì G không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có R1(G).
- Ứng với các phụ thuộc hàm AB C; C A; C B ta có R2(ABC).
- Ứng với các phụ thuộc hàm C D; C E ta có R3(CDE)
- Ứng với các phụ thuộc hàm còn lại ta có R4(ABF).
- Kết quả ta đƣợc phép tách = {R1(G), R2(ABC), R3(CDE), R4(ABF)}
Bƣớc 4: Lấy = {K} = {R1(G), R2(ABC), R3(CDE), R4(ABF)}{K(CG)}
Ta có R1(G) K(CG) nên kết quả phép tách R về 3NF bảo toàn phụ thuộc
hàm và có kết nối không mất thông tin là:
= {K(CG), R2(ABC), R3(CDE), R4(ABF)}.
4.4.6. Hãy tách SĐQH W =
không mất thông tin và bảo toàn phụ thuộc hàm. Trong đó:
1) R = (ABCDEFG)
F = {AB C; C A; AD E; E B; E F}
2) R = (ABCDEFG)
F = {AB C; D B; A B; C ABD}
Giải:
1) R = (ABCDEFG)
F = {AB C; C A; AD E; E B; E F}.
Bƣớc 1: Tìm phủ tối thiểu của F.
- Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có 1
thuộc tính.
F = {AB C; C A; AD E; E B; E F}
- Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F
222 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
+ C A; E B; E F có vế trái chỉ chứa 1 thuộc tính nên các vế trái của
chúng không chứa thuộc tính thừa. Ta chỉ còn phải xét AB C và AD E.
+ Xét AB C
Với A VT = AB:
(VT - A)+ = B+ = B
C (VT - A)+ nên A không thừa.
Với B VT = AB:
(VT - B)+ = A+ = A
C (VT - B)+ nên B không thừa.
+ Xét AD E
Với A VT = AD:
(VT - A)+ = D+ = D
E (VT - A)+ nên A không thừa.
Với D VT = AD:
(VT - D)+ = A+ = A
E (VT - D)+ nên D không thừa.
+ Sau khi loại bỏ các thuộc tính thừa ta có:
+ F = {AB C; C A; AD E; E B; E F}
- Loại các phụ thuộc hàm thừa trong F.
+ Với AB C F ta có:
G = {C A; AD E; E B; E F}
= AB
C AB nên AB C F không thừa.
Với C A F ta có:
G = {AB C; AD E; E B; E F}
= C
A C nên C A F không thừa.
Với AD E F ta có:
G = {AB C; C A; E B; E F}
= AD
Phạm Hùng Phú 223
Bài tập cơ sở dữ liệu E AD nên AD E F không thừa.
+ Tƣơng tự E B; E F không thừa
Vậy F = {AB C; C A; AD E; E B; E F} – tối thiểu
Bƣớc 2: Tìm khóa K của R.
- K = DG (D chỉ có ở vế trái; G không có trong bất cứ phụ thuộc hàm nào của F) - Tính K+:
K+ = (DG)+ = DG U nên R có thể có nhiều khóa
G = ABCE
K = ABCDEG
Loại bỏ các thuộc tính thừa trong G
Với A G, ta có (K - A)+ = (BCDEG)+ = ABCDEFG = U nên
K = BCDEG
Với B G, ta có (K - B)+ = (CDEG)+ = ABCDEFG = U nên
K = CDEG
Với C G, ta có (K - C)+ = (DEG)+ = BDEFG U nên K = CDEG
Với E G, ta có (K - C)+ = (CDG)+ = ABCDEFG = U nên K = CDG
- K = CDG là một khóa của R
Bƣớc 3: Tách R thành 3NF bảo toàn phụ thuộc hàm.
- Vì G không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có R1(G).
- Ứng với các phụ thuộc hàm AB C; C A ta có R2(ABC).
- Ứng với các phụ thuộc hàm còn lại ta có R3(ADE), R4(BE), R5(EF)
- Kết quả ta đƣợc phép tách = {R1(G), R2(ABC), R3(ADE), R4(BE), R5(EF)}
Bƣớc 4:
Lấy = {K} = {R1(G), R2(ABC), R3(ADE), R4(BE), R5(EF)}{K(CDG)}
Ta có R1(G) K(CDG) nên kết quả phép tách R về 3NF bảo toàn phụ thuộc
hàm và có kết nối không mất thông tin là:
= {K(CDG), R2(ABC), R3(ADE), R4(BE), R5(EF)}
2) R = (ABCDEFG)
F = {AB C; D B; A B; C ABD}
Bƣớc 1: Tìm phủ tối thiểu của F (xem phần 2 bài 4.37) ta có
224 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
F = {A C; D B; C A; C D} – phủ tối thiểu
Bƣớc 2: Tìm khóa K của R.
- K = EFG (E, F, G không nằm trong bất cứ phụ thuộc hàm nào của F)
- Tính K+ = (EFG)+ = EFG U nên R có thể có nhiều khóa
+ G = ACD
+ K = ACDEFG
+ Loại bỏ các thuộc tính thừa trong G
Với A G, ta có (K - A)+ = (CDEFG)+ = ABCDEFG = U nên K =
CDEFG
Với C G, ta có (K - C)+ = (DEFG)+ = BDEFG U nên K = CDEFG Với D G, ta có (K - D)+ = (CEFG)+ = ABCDEFG = U nên K = CEFG
- K = CEFG là một khóa của R
Bƣớc 3: Tách R thành 3NF bảo toàn phụ thuộc hàm.
- Vì E, F, G không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có
R1(EFG).
- Ứng với các phụ thuộc hàm C A; C D ta có R2(ACD).
- Ứng với các phụ thuộc hàm còn lại ta có R3(AC), R4(BD).
- Kết quả ta đƣợc phép tách = {R1(EFG), R2(ACD), R3(AC), R4(BD)}
Bƣớc 4: Lấy = {K(CEFG)} {K} = {R1(EFG), R2(ACD), R3(AC), R4(BD)}
Ta có R1(EFG) K(CEFG) nên kết quả phép tách R về 3NF bảo toàn phụ thuộc
hàm và có kết nối không mất thông tin là:
= {R1(CEFG), R2(ACD), R3(AC), R4(BD)}
4.4.7. Hãy tách SĐQH W =
R = (ABCDEFGH);
F = {AB C; AC D; C A; D C; D E; D F; F H}
thành các SĐQH dạng chuẩn 3NF bảo toàn phụ thuộc hàm và có kết nối không mất
thông tin.
Giải:
Bƣớc 1: Tìm phủ tối thiểu của F.
Phạm Hùng Phú 225
Bài tập cơ sở dữ liệu - Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có 1
thuộc tính.
F = {AB C; AC D; C A; D C; D E; D F; F H}
- Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
+ C A; D C; D E; D F; F H có vế trái chỉ chứa 1 thuộc tính nên
các vế trái của chúng không chứa thuộc tính thừa. Ta chỉ còn phải xét
AB C và AC D.
+ Xét AB C
Với A VT = AB:
(VT - A)+ = B+ = B
C (VT - A)+ nên A không thừa.
Với B VT = AB:
(VT - B)+ = A+ = A
C (VT - B)+ nên B không thừa.
+ Xét AC D
Với A VT = AC:
(VT - A)+ = C+ = ACDEFH
D (VT - A)+ nên A thừa VT = C
F = {AB C; C D; C A; D C; D E; D F; F H}
- Loại các phụ thuộc hàm thừa trong F.
+ Với AB C F ta có:
G = {C D; C A; D C; D E; D F; F H}
= AB
C AB nên AB C F không thừa.
+ Với C D F ta có:
G = {AB C; C A; D C; D E; D F; F H}
= AC
D AC nên C D F không thừa.
+ Với C A F ta có:
G = {AB C; C D; D C; D E; D F; F H}
226 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
= CDEFH
A CDEFH nên C A F không thừa.
+ Với D C F ta có:
G = {AB C; C D; C A; D E; D F; F H}
= DEFH
C DEFH nên D C F không thừa.
+ Với D E F ta có:
G = {AB C; C D; C A; D C; D F; F H}
= ACDFH
E ACDFH nên D E F không thừa.
+ Tƣơng tự ta có D F; F H không thừa
Vậy F = {AB C; C D; C A; D C; D E; D F; F H} là phủ tối thiểu
Bƣớc 2: Tìm khóa K của R.
- K = BG (B chỉ có ở vế trái; G không nằm trong bất cứ phụ thuộc hàm nào
của F)
- Tính K+ = (BG)+ = BG U nên R có thể có nhiều khóa
+ G = ACDF
+ K = ABCDFG
+ Loại bỏ các thuộc tính thừa trong G
Với A G, ta có (K - A)+ = (BCDFG)+ = ABCDEFHG = U nên K =
BCDFG
Với C G, ta có (K - C)+ = (BDFG)+ = ABCDEFHG = U nên K = BDFG
Với D G, ta có (K - D)+ = (BFG)+ = BFHG U nên K = BDFG
Với F G, ta có (K - F)+ = (BDG)+ = ABCDEFHG = U nên K = BDG
- K = BDG là một khóa của R
Bƣớc 3: Tách R thành 3NF bảo toàn phụ thuộc hàm.
- Vì G không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có R1(G).
- Ứng với các phụ thuộc hàm AB C; C A ta có R2(ABC).
- Ứng với các phụ thuộc hàm D C; D E; D F ta có R3(CDEF).
- Ứng với các phụ thuộc hàm còn lại ta có R4(CD), R5(FH).
Phạm Hùng Phú 227
Bài tập cơ sở dữ liệu
- Kết quả ta đƣợc phép tách = {R1(G), R2(ABC), R3(CDEF), R4(CD), R5(FH)}
Bƣớc 4:
{K(BDG)} Lấy = {K} = {R1(G), R2(ABC), R3(CDEF), R4(CD), R5(FH)}
Ta có R1(G) K(BDG) nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm và
có kết nối không mất thông tin là:
= {K(BDG), R2(ABC), R3(CDEF), R4(CD), R5(FH)}
4.4.8. Cho SĐQH W =
R = (ABCDE);
F = {AB C; C D; D E}.
Hãy tách R thành các SĐQH dạng chuẩn 3NF:
- Bảo toàn phụ thuộc hàm.
- Bảo toàn phụ thuộc hàm và có kết nối không mất thông tin.
Giải:
- Tách R về dạng 3NF bảo toàn phụ thuộc hàm.
+ Dễ dàng kiểm tra đƣợc F - tối thiểu
+ Áp dụng giải thuật tách R về 3NF bảo toàn phụ thuộc hàm ta có:
Với mỗi phụ thuộc hàm ta tách thành một lƣợc đồ tƣơng ứng
R1(ABC); R2(CD); R3(DE)
Kết quả thu đƣợc phép tách về 3NF, bảo toàn phụ thuộc hàm :
= { R1(ABC); R2(CD); R3(DE)}
- Tách R về dạng 3NF bảo toàn phụ thuộc hàm và có kết nối không mất thông tin.
+ Tìm khóa K của R.
K = AB (A, B chỉ có ở vế trái) Tính K+ = (AB)+ = ABCDE = U
Vậy K = AB là khóa duy nhất của R.
{K(AB)} + = {K} = {R1(ABC); R2(CD); R3(DE)}
Ta có K(AB) R1(ABC) nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm
và có kết nối không mất thông tin là:
= {R1(ABC); R2(CD); R3(DE)}
228 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
4.4.9. Cho SĐQH W =
R = (ABCDEFGH);
F = {AB C; B D; C B; DE FG}.
Hãy tách R thành các SĐQH dạng chuẩn 3NF:
1) Bảo toàn phụ thuộc hàm;
2) Bảo toàn phụ thuộc hàm và có kết nối không mất thông tin.
Giải:
1) Tách R thành các SĐQH dạng chuẩn 3NF bảo toàn phụ thuộc hàm
- Tìm phủ tối thiểu của F:
Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có
một thuộc tính.
F = {AB C; B D; C B; DE F; DE G}
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
+ B D; C B có vế trái chỉ chứa 1 thuộc tính nên các vế trái của chúng
không chứa thuộc tính thừa. Ta chỉ còn phải xét AB C và DE F; DE G.
+ Xét AB C
Với A VT = AB:
(VT - A)+ = B+ = BD
C (VT - A)+ nên A không thừa.
Với B VT = AB:
(VT - B)+ = A+ = A
C (VT - B)+ nên B không thừa.
+ Xét DE F
Với D VT = DE:
(VT - D)+ = E+ = E
F (VT - D)+ nên D không thừa.
Với E VT = DE:
(VT - E)+ = D+ = D
F (VT - E)+ nên E không thừa.
+ Xét DE G
Phạm Hùng Phú 229
Bài tập cơ sở dữ liệu Với D VT = DE:
(VT - D)+ = E+ = E
G (VT - D)+ nên D không thừa.
Với E VT = DE:
(VT - E)+ = D+ = D
G (VT - E)+ nên G không thừa.
F = {AB C; B D; C B; DE F; DE G}
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F
+ Với AB C F ta có:
G = {B D; C B; DE F; DE G}
= ABD
C ABD nên AB C F không thừa.
+ Tƣơng tự ta có B D; C B; DE F; DE G không thừa.
Bƣớc 4: Vậy phủ tối thiểu F = {AB C; B D; C B; DE F; DE G}
- Tách R thành 3NF bảo toàn phụ thuộc hàm
+ Vì H không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có R1(H)
+ Ứng với các phụ thuộc hàm AB C; C B ta có R2(ABC)
+ Ứng với các phụ thuộc hàm DE F; DE G ta có R3(DEFG)
+ Ứng với phụ thuộc hàm còn lại ta có R4(BD)
+ Kết quả thu đƣợc phép tách R thành 3NF bảo toàn phụ thuộc hàm là:
= {R1(H); R2(ABC); R3(DEFG); R4(BD)}
2) Tách R thành 3NF bảo toàn phụ thuộc hàm và có kết nối không mất thông tin
- Tìm khóa K của R
+ K = AEH (A, E chỉ có ở vế trái; H không nằm trong bất cứ thuộc tính nào của F) + Tính K+ = (AEH)+ = AEH U nên R có thể có nhiều khóa
G = BCD
K = ABCDEH
Với B G ta có (K - B)+ = (ACDEH)+ = ABCDEFGH = U nên B
Loại bỏ các thuộc tính thừa trong G.
thừa, K = ACDEH.
230 Phạm Hùng Phú
Với C G ta có (K - C)+ = (ADEH)+ = ADEFGH U nên C không
Bài tập cơ sở dữ liệu
Với D G ta có (K - D)+ = (ACEH)+ = ABCDEFGH = U nên D thừa,
thừa, K = ACDEH.
Vậy K = ACEH là một khóa của R.
K = ACEH.
{K(ACEH)} - = {K} = {R1(H); R2(ABC); R3(DEFG); R4(BD)}
K(ACEH) nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm Ta có R1(H)
và có kết nối không mất thông tin là:
= { K(ACEH); R2(ABC); R3(DEFG); R4(BD)}
4.4.10. Cho LĐQH:
QLCH = (Makh, Tenkh, Diachi, Gioitinh, Dienthoai, Mamh, Tenmh, mau, Dvtinh,
Soluong, Dongia, MuaBan, NgayMB)
Quy ƣớc: mỗi khách hàng chỉ dùng một số điện thoại để liên lạc với cửa hàng
1) Tìm tập phụ thuộc hàm của LĐQH.
2) Tìm khóa của LĐQH
3) LĐQH QLCH có ở dạng chuẩn 3NF, BCNF không? Tại sao?
4) Tách QLCH thành các LĐQH dạng chuẩn BCNF có kết nối không mất
thông tin.
5) Tách QLCH thành các LĐQH dạng chuẩn 3NF bảo toàn phụ thuộc hàm
6) Tách QLCH thành các LĐQH dạng chuẩn 3NF có kết nối không mất thông
tin và bảo toàn phụ thuộc hàm.
Giải:
1) Tìm tập phụ thuộc hàm của LĐQH.
F = {Makh Tenkh, Diachi, Gioitinh, Dienthoai; Mamh Tenmh, mau, Dvtinh}
(chú ý: Ta bỏ qua các phụ thuộc hàm tầm thƣờng)
2) Tìm khóa của LĐQH
K = {Makh, Mamh, muaBan, NgayMB, Soluong, Dongia} (Makh, Mamh chỉ
có ở vế trái và Soluong, Dongia, MuaBan, NgayMB không liên quan đến bất cứ phụ
thuộc hàm nào trong F)
Phạm Hùng Phú 231
Bài tập cơ sở dữ liệu K+ = (Makh, Tenkh, Diachi, Gioitinh, Dienthoai, Mamh, Tenmh, mau,
Dvtinh, Soluong, Dongia, MuaBan, NgayMB) = U
nên K = {Makh, Mamh, muaBan, NgayMB, Soluong, Dongia} là khóa duy nhất
của quan hệ QLCH.
3) LĐQH QLCH có ở dạng chuẩn 3NF, BCNF không? Tại sao?
F = {Makh Tenkh, Diachi, Gioitinh, Dienthoai; Mamh Tenmh, mau, Dvtinh}
= {Makh Tenkh; Makh Diachi; Makh Gioitinh; Makh Dienthoai;
Mamh Tenmh; Mamh mau; Mamh Dvtinh }
- LĐQH QLCH không ở dạng chuẩn 3NF vì có phụ thuộc hàm Mamh Tenmh,
3NF vi phạm 3NF do Tenmh chỉ nằm ở vế phải nên nó là thuộc tính không khóa;
Tenmh {Makh} và {Makh}+ ={Makh, Tenkh, Diachi, Gioitinh, Dienthoai} U.
- LĐQH QLCH không ở dạng chuẩn BCNF vì có phụ thuộc hàm Mamh Tenmh
vi phạm BCNF do Tenmh {Makh} và {Makh}+ ={Makh, Tenkh, Diachi, Gioitinh,
Dienthoai} U.
4) Tách QLCH thành các LĐQH dạng chuẩn BCNF có kết nối không mất thông tin.
- Trong F có Makh Tenkh vi phạm BCNF nên tách QLCH thành
R1(Makh,Tenkh) với F1 = { Makh Tenkh} (Đã ở dạng chuẩn BCNF) và
R2(Makh, Diachi, Gioitinh, Dienthoai, Mamh, Tenmh, mau, Dvtinh, Soluong,
Dongia, MuaBan, NgayMB) với
F2 ={Makh Diachi; Makh Gioitinh; Makh Dienthoai; Mamh Tenmh;
Mamh mau; Mamh Dvtinh }
- Trong F2 có Makh Diachi vi phạm BCNF nên tách R2 thành
Diachi} (Đã ở dạng chuẩn BCNF) và R21(Makh, Diachi) với F1 = { Makh
R22(Makh, Gioitinh, Dienthoai, Mamh, Tenmh, mau, Dvtinh, Soluong, Dongia,
MuaBan, NgayMB) với
F22 ={Makh Gioitinh; Makh Dienthoai; Mamh Tenmh; Mamh mau;
Mamh Dvtinh }
- Trong F22 có Makh Gioitinh vi phạm BCNF nên tách R22 thành
Gioitinh } (Đã ở dạng chuẩn BCNF) và R221(Makh, Gioitinh) với F221 = { Makh
232 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
R222(Makh, Dienthoai, Mamh, Tenmh, mau, Dvtinh, Soluong, Dongia, MuaBan,
NgayMB) với
F222 = { Makh Dienthoai; Mamh Tenmh; Mamh mau; Mamh Dvtinh }
- Trong F222 có Makh Dienthoai vi phạm BCNF nên tách R222 thành
Dienthoai } (Đã ở dạng chuẩn R2221(Makh, Dienthoai) với F2221 = { Makh
BCNF) và
R2222(Makh, Mamh, Tenmh, mau, Dvtinh, Soluong, Dongia, MuaBan, NgayMB)
với F2222 = { Mamh Tenmh; Mamh mau; Mamh Dvtinh }
- Trong F2222 có Mamh Tenmh vi phạm BCNF nên tách R2222 thành
R22221(Mamh, Tenmh) với F2221 = { Mamh Tenmh} (Đã ở dạng chuẩn BCNF) và
R22222(Makh, Mamh, mau, Dvtinh, Soluong, Dongia, MuaBan, NgayMB) với
F22222 = { Mamh mau; Mamh Dvtinh }
- Trong F22222 có Mamh mau vi phạm BCNF nên tách R22222 thành
mau } (Đã ở dạng chuẩn BCNF) và R22221(Mamh, mau) với F22221 = { Mamh
R222222(Makh, Mamh, Dvtinh, Soluong, Dongia, MuaBan, NgayMB) với
F222222 = { Mamh Dvtinh }
- Trong F222222 có Mamh Dvtinh vi phạm BCNF nên tách R222222 thành
Dvtinh} (Đã ở dạng chuẩn BCNF) R2222221(Mamh, Dvtinh) với F222221 = {Mamh
và R2222222(Makh, Mamh, Soluong, Dongia, MuaBan, NgayMB) với
F22222 = (Đã ở dạng chuẩn BCNF)
- Các lƣợc đồ quan hệ R1(Makh,Tenkh), R21(Makh, Diachi), R221(Makh, Gioitinh),
R2221(Makh, Dienthoai) có chung khóa Makh nên gộp lại thành
Khhang(Makh,Tenkh, Diachi, Gioitinh, Dienthoai) ứng với tập phụ thuộc hàm
F1 = {Makh Tenkh; Makh Diachi; Makh Gioitinh; Makh Dienthoai}
- Các lƣợc đồ quan hệ R22221(Mamh, Tenmh), R22221(Mamh, mau), R2222221(Mamh,
Dvtinh) có chung khóa Mamh nên gộp lại thành
Mathang(Mamh, Tenmh, mau, Dvtinh) ứng với tập phụ thuộc hàm
Tenmh, mau, Dvtinh} F2 = {Mamh
- Đặt lại tên cho R2222222(Makh, Mamh, Soluong, Dongia, MuaBan, NgayMB) là
MuaBan(Makh, Mamh, Soluong, Dongia, MuaBan, NgayMB)
- Phép tách cuối cùng đƣợc:
Phạm Hùng Phú 233
Bài tập cơ sở dữ liệu
= {Khhang, Mathang, MuaBan}
5) Tách QLCH thành các LĐQH dạng chuẩn 3NF bảo toàn phụ thuộc hàm
- Tìm phủ tối thiểu của F.
Áp dụng giải thuật tìm phủ tối thiểu ta có:
F = {Makh Tenkh, Makh Diachi, Makh Gioitinh, Makh Dienthoai;
Mamh Tenmh, Mamh mau, Mamh Dvtinh} là phủ tối thiểu
- Tách QLCH thành các LĐQH dạng chuẩn 3NF bảo toàn phụ thuộc hàm
+ Ứng với các thuộc tính không liên quan đến bất cứ phụ thuộc hàm nào trong F
ta tách ra thành một lƣợc đồ MuaBan(MuaBan, NgayMB, Soluong, Dongia)
+ Ứng với các phụ thuộc hàm Makh Tenkh; Makh Diachi; Makh
Gioitinh; Makh Dienthoai ta tách thành KHhang(Makh, Tenkh, Diachi,
Gioitinh, Dienthoai) và với các phụ thuộc hàm Mamh Tenmh, Mamh mau,
Mamh Dvtinh ta tách thành Mathang(Makh, Tenmh, mau, Dvtinh).
Kết quả thu đƣợc = {KHhang, Mathang, MuaBan}
6) Tách QLCH thành các LĐQH dạng chuẩn 3NF có kết nối không mất thông tin và
bảo toàn phụ thuộc hàm.
= {K} và chú ý rằng MuaBan K nên kết quả phép tách R về 3NF bảo
toàn phụ thuộc hàm và có kết nối không mất thông tin là: = {K, R2, R3}
Đặt lại tên cho K là MuaBan, ta có Kết quả thu đƣợc
= {KHhang, Mathang, MuaBan}
4.4.11. Cho LĐQH:
QLDiem = (MaSV, TenSV, Diachi, Gioitinh, Lop, MaMon, TenMon, SoHT,
DiemKT1, DiemKT2, Diemthi).
1) Tìm tập phụ thuộc hàm của LĐQH
2) Tìm khóa của LĐQH
3) LĐQH QLĐiem có ở dạng chuẩn 3NF, BCNF không? Tại sao?
4) Tách QLĐiem thành các LĐQH dạng chuẩn BCNF có kết nối không mất
thông tin.
5) Tách QLĐiem thành các LĐQH dạng chuẩn 3NF bảo toàn phụ thuộc hàm.
234 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
6) Tách QLĐiem thành các LĐQH dạng chuẩn 3NF có kết nối không mất
thông tin và bảo toàn phụ thuộc hàm.
Giải:
1) Tìm tập phụ thuộc hàm của LĐQH
F = {MaSV TenSV, Diachi, Gioitinh, Lop; MaMon TenMon, SoHT;
MaSV, MaMon DiemKT1, DiemKT2, Diemthi }
2) Tìm khóa của LĐQH
- Áp dụng giải thuật tìm khoá cải tiến ta tìm đƣợc khoá K = {MaSV, MaMon}.
3) LĐQH QLĐiem Chƣa ở dạng chuẩn 3NF, BCNF
- F = { MaSV TenSV, Diachi, Gioitinh, Lop; MaMon TenMon, SoHT;
MaSV, MaMon DiemKT1, DiemKT2, Diemthi}
= {MaSV TenSV; MaSV Diachi; MaSV Gioitinh; MaSV Lop;
MaMon TenMon; MaMon SoHT; MaSV, MaMon DiemKT1; MaSV,
MaMon DiemKT2; MaSV, MaMon Diemthi }
- MaSV TenSV vi phạm 3NF vì TenSV là thuộc tính không khóa (TenSV chỉ nằm ở vế phải); TenSV {MaSV} và {MaSV}+= {MaSV, TenSV, Diachi,
Gioitinh, Lop} U. - MaSV TenSV vi phạm BCNF vì TenSV {MaSV} và {MaSV}+= {MaSV,
TenSV, Diachi, Gioitinh, Lop} U.
4) Tách QLĐiem thành các LĐQH dạng chuẩn BCNF có kết nối không mất thông
tin.
- Trong F có MaSV TenSV vi phạm BCNF nên tách R thành R1(MaSV, TenSV)
với F1 = {MaSV TenSV} (đã ở dạng chuẩn BCNF) và
R2(MaSV, Diachi, Gioitinh, Lop, MaMon, TenMon, SoHT, DiemKT1, DiemKT2,
Diemthi) với F2 = {MaSV Diachi; MaSV Gioitinh; MaSV Lop; MaMon
TenMon; MaMon SoHT; MaSV, MaMon DiemKT1; MaSV, MaMon
DiemKT2; MaSV, MaMon Diemthi }
- Trong F2 có MaSV Diachi vi phạm BCNF nên tách R2 thành R21(MaSV,
Diachi) với F21 = {MaSV Diachi } (đã ở dạng chuẩn BCNF) và
Phạm Hùng Phú 235
Bài tập cơ sở dữ liệu R22(MaSV, Gioitinh, Lop, MaMon, TenMon, SoHT, DiemKT1, DiemKT2,
TenMon, Diemthi) với F22 = {MaSV Gioitinh, MaSV Lop; MaMon
MaMon SoHT; MaSV, MaMon DiemKT1, MaSV, MaMon DiemKT2,
MaSV, MaMon Diemthi }
- Trong F22 có MaSV Gioitinh vi phạm BCNF nên tách R22 thành R221(MaSV,
Gioitinh) với F221 = {MaSV Gioitinh } (đã ở dạng chuẩn BCNF) và
R222(MaSV, Lop, MaMon, TenMon, SoHT, DiemKT1, DiemKT2, Diemthi) với
TenMon; MaMon SoHT; MaSV, MaMon F222 = {MaSV Lop; MaMon
DiemKT1; MaSV, MaMon DiemKT2; MaSV, MaMon Diemthi}
Cứ tiếp tục nhƣ thế ta đƣợc các lƣợc đồ quan hệ:
- R2221(MaSV, Lop) ứng với {MaSV Lop} (ở dạng BCNF)
TenMon} (ở dạng BCNF) - R22221(MaMon, TenMon) ứng với { MaMon
Soht} (ở dạng BCNF) - R222221(MaMon, Soht) ứng với { MaMon
DiemKT1} (ở - R2222221(MaSV, MaMon, DiemKT1) ứng với { MaSV, MaMon
dạng BCNF)
DiemKT2} (ở - R22222221(MaSV, MaMon, DiemKT2) ứng với { MaSV, MaMon
dạng BCNF)
DiemThi} (ở - R22222222(MaSV, MaMon, DiemThi) ứng với { MaSV, MaMon
dạng BCNF)
- Các lƣợc đồ R1(MaSV, TenSV), R21(MaSV, Diachi), R221(MaSV, Gioitinh),
R2221(MaSV, Lop) có chung khóa MaSV nên gộp lại thành
SV(MaSV, TenSV, Diachi, Gioitinh, Lop)
- Các lƣợc đồ R22221(MaMon, TenMon), R222221(MaMon, Soht) có chung khóa
MaMon nên gộp lại thành MonHoc(MaMon, TenMon, Soht)
- Các lƣợc đồ R2222221(MaSV, MaMon, DiemKT1), R22222221(MaSV, MaMon,
DiemKT2), R22222222(MaSV, MaMon, DiemThi) có chung khóa MaSV, MaMon
nên gộp lại thành Diem(MaMon, TenMon, DiemKT1, DiemKT2, DiemThi)
Cuối cùng ta thu đƣợc phép tách = {SV, Monhoc, Diem}
5) Tách QLĐiem thành các LĐQH dạng chuẩn 3NF bảo toàn phụ thuộc hàm.
- Áp dụng giải thuật tìm phủ tối thiểu, ta có
236 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
F = {MaSV TenSV, MaSV Diachi, MaSV Gioitinh, MaSV Lop;
MaMon TenMon, MaMon SoHT; MaSV, MaMon DiemKT1, MaSV,
MaMon DiemKT2, MaSV, MaMon Diemthi} – tối thiểu.
- Áp dụng giải thuật tách lƣợc đồ quan hệ về 3NF bảo toàn phụ thuộc hàm ta đƣợc
tập các lƣợc đồ quan hệ:
+ SV(MaSV, TenSV, Diachi, Gioitinh, Lop) ứng với tập phụ thuộc hàm
F1= {MaSV TenSV; MaSV Diachi; MaSV Gioitinh; MaSV Lop}
+ MonHoc(MaMon, TenMon, Soht) ứng với tập phụ thuộc hàm
TenMon; MaMon SoHT } F2 = { MaMon
+ Diem(MaMon, TenMon, DiemKT1, DiemKT2, DiemThi) ứng với tập phụ thuộc
DiemKT1; MaSV, MaMon DiemKT2; MaSV, hàm F3 = { MaSV, MaMon
MaMon Diemthi}.
6) Tách QLĐiem thành các LĐQH dạng chuẩn 3NF có kết nối không mất thông tin
và bảo toàn phụ thuộc hàm.
= {K} và chú ý là K Diem nên kết quả phép tách R về 3NF bảo toàn phụ
thuộc hàm và có kết nối không mất thông tin là
= {SV, Monhoc, Diem} trong đó: SV(MaSV, TenSV, Diachi, Gioitinh, Lop),
Monhoc(MaMon, TenMon, SoHT)
và Diem(MaSV, MaMon, DiemKT1, DiemKT2, Diemthi) có MaSV, Mamon là
khóa
4.4.12. Cho SĐQH W =
R = (A B C D E F);
F = {AB C , B D; D E} – tối thiểu.
1) Tìm khóa của R.
2) R đã ở dạng chuẩn 3NF chƣa? Tại sao? Nếu chƣa hãy tách R về dạng 3NF
có kết nối không mất thông tin và bảo toàn phụ thuộc hàm.
3) R đã ở dạng chuẩn BCNF chƣa? Tại sao? Nếu chƣa hãy tách R về dạng
BCNF có kết nối không mất thông tin.
Giải:
Phạm Hùng Phú 237
Bài tập cơ sở dữ liệu 1) Tìm khóa của R.
- K = ABF (A, B chỉ có ở vế trái; F không nằm trong bất cứ phụ thuộc hàm
nào của F)
- Tính K+ = (ABF)+ = ABCDEF = U
- Vậy K = ABF là khóa duy nhất của R
2) - Kiểm tra xem R đã ở 3NF chƣa?
+ E - thuộc tính không khóa vì E chỉ nằm ở vế phải của các phụ thuộc hàm trong F
+ E {D}
+ D+= DE U
Do đó D E vi phạm 3NF nên R chƣa ở dạng chuẩn 3NF
- Tách R về dạng 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc hàm.
Bƣớc 1: Ta có F = {AB C, B D; D E} – tối thiểu
Bƣớc 2: Ta có khoá của R là K= {ABF}
(Theo phần 1 ta có K = ABF là khoá duy nhất của R)
Bƣớc 3: Tách R về dạng 3NF bảo toàn phụ thuộc hàm
Áp dụng giải thuật tách LĐQH về dạng 3NF bảo toàn phụ thuộc hàm, ta có
+ Vì F không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có R1(F)
+ Ứng với các phụ thuộc hàm còn lại ta tách thành:
R2(ABC) ứng với AB C;
R3(BD) ứng với B D;
R4(DE) ứng với B D.
+ Kết quả thu đƣợc = { R1(F), R2(ABC); R3(BD); R4(DE)}
{K(ABF)} Bƣớc 4: Lấy = {K} = { R1(F), R2(ABC); R3(BD); R4(DE)}
K(ABF) nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm và Ta có R1(F)
có kết nối không mất thông tin là:
= { K(ABF), R2(ABC); R3(BD); R4(DE)}
3) - Kiểm tra xem R đã ở dạng chuẩn BCNF chƣa?
Ta có
+ AB C F và C {AB} + (AB)+ = ABCDE U nên AB C vi phạm BCNF
238 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Vì thế R không ở dạng chuẩn BCNF.
R(ABCDEF) F = {AB C, B D; D E}
R2(ABDEF)
R1(ABC) F1 = {AB C}
F2 = { B D; D E }
R21(BD) F21 = {B D}
R22(ABEF) F22 = {B E}
R222(ABF) F221 = Ø
R221(BE) F221 = {B E}
- Tách R về dạng BCNF có kết nối không mất thông tin:
- Kết quả thu đƣợc = {R1, R21, R221, R222}. Vì R21, R221 có chung khóa là B nên
có thể gộp thành R20(BDE) với F20 = {B D; B E}.
- Phép tách cuối cùng đƣợc = {R1, R20, R222}
Cách khác:
- Trong F có phụ thuộc hàm D E vi phạm BCNF (E {D}; D+= DE U) nên tách
R thành R1(DE) ứng với F1 = {D E} (đã ở dạng BCNF) và
R2(ABCDF) ứng với F2 = {AB C, B D}. - Trong F2 có phụ thuộc hàm B D vi phạm BCNF (D {B}; B+= BD U
(=ABCDF)) nên tách R2 thành R21(BD) ứng với F21 = {B D} (đã ở dạng BCNF)
và R22(ABCF) ứng với F22 = {AB C}. - Trong F22 có phụ thuộc hàm AB C vi phạm BCNF (C {AB}; (AB)+= ABC U
(=ABCF)) nên tách R22 thành R221(ABC) ứng với F221={AB C} (đã ở dạng
BCNF) và R222(ABF) ứng với F22 = (đã ở dạng BCNF)
Ta có kết quả = { R1(DE), R21(BD), R221(ABC) , R222(ABF)}
Phạm Hùng Phú 239
Bài tập cơ sở dữ liệu
4.4.13. Cho SĐQH W=
R = (ABCDEF);
F = {AB C; C A; D E} – tối thiểu.
1) Tìm khóa của R.
2) R đã ở dạng chuẩn 3NF chƣa? Tại sao? Nếu chƣa hãy tách R về dạng 3NF
có kết nối không mất thông tin và bảo toàn phụ thuộc hàm.
3) R đã ở dạng chuẩn BCNF chƣa? Tại sao? Nếu chƣa hãy tách R về dạng
BCNF có kết nối không mất thông tin.
Giải:
1) Tìm khóa của R
- K = BDF (B, D chỉ có ở vế trái; F không nằm trong bất cứ phụ thuộc hàm nào
- K+ = (BDF)+ = BDEF U nên R có thể có nhiều khóa
+ G = AC + K = ABCDF + Loại bỏ các thuộc tính thừa trong G.
của F)
Với A G ta có (K - A)+ = (BCDF)+ = ABCDEF = U nên A thừa, K = BCDF.
Với C G ta có (K - C)+ = (BDF)+ = BDEF U nên C không thừa.
Vậy K = BCDF là một khóa của R.
Nếu thay đổi thứ tự loại bỏ các thuộc tính trong G ta còn tìm đƣợc khoá ABDF.
Vậy R có 2 khoá là BCDF và ABDF.
2) - R chƣa ở dạng chuẩn 3NF vì:
Xét D E F có E – thuộc tính không khóa (do nó chỉ nằm ở vế phải của các
phụ thuộc hàm trong F); E {D} và D+= DE U nên D E vi phạm 3NF.
- Tách R về dạng 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc hàm.
Bƣớc 1: Ta có F = {AB C; C A; D E} – tối thiểu
Bƣớc 2: Tìm khoá K của R.
(Theo phần 1) R có tất cả 2 khoá là BCDF và ABDF.
Bƣớc 3: Tách R thành 3NF bảo toàn phụ thuộc hàm.
240 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
- Vì F không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có R1(F).
- Ứng với phụ thuộc hàm AB C; C A ta có R2(ABC)
- Ứng với phụ thuộc hàm còn lại ta có R3(DE)
- Kết quả thu đƣợc = { R1(F), R2(ABC); R3(DE)}
{K(BCDF)} Bƣớc 4: Lấy = {K} = { R1(F), R2(ABC); R3(DE)}
K nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm và có kết Ta có R1(F)
nối không mất thông tin là:
= { K, R2(ABC); R3(DE)}
Tức là = { K(BCDF), R2(ABC); R3(DE)}
Hoặc = { K(ABDF), R2(ABC); R3(DE)}
3) - R chƣa ở dạng chuẩn BCNF vì theo trên R chƣa ở dạng chuẩn 3NF
R(ABCDEF) F = {AB C, C A; D E}
R1(DE) F1 = {D E}
R2(ABCDF) F2 = {AB C; C A}
R21(CA) F21 = {C A}
R22(BCDF) F22 = Ø
- Tách R về dạng BCNF có kết nối không mất thông tin:
- Kết quả thu đƣợc = {R1(DE), R21(CA), R22(BCDF)}
4.4.14. Cho SĐQH W =
R = (ABCDEF);
F = {AB C; C B; B D; D E} – tối thiểu.
1) Tìm khóa của R
2) R đã ở dạng chuẩn 3NF chƣa? Tại sao? Nếu chƣa hãy tách R về dạng 3NF
có kết nối không mất thông tin và bảo toàn phụ thuộc hàm
3) R đã ở dạng chuẩn BCNF chƣa? Tại sao? Nếu chƣa hãy tách R về dạng
BCNF có kết nối không mất thông tin.
Phạm Hùng Phú 241
Bài tập cơ sở dữ liệu Giải:
1) Tìm khóa của R
- K+ = (AF)+ = AF U nên R có thể có nhiều khóa
+ G = BCD + K = ABCDF + Loại bỏ các thuộc tính thừa trong G.
Với B G, ta có (K - B)+ = (ACDF)+ = ABCDEF = U nên B thừa,
- K = AF (A chỉ có ở vế trái; F không nằm trong bất cứ phụ thuộc hàm nào của F)
Với C G ta có (K - C)+ = (ADF)+ = ADEF U nên C không thừa,
K = ACDF.
Với D G ta có (K - D)+ = (ACF)+ = ABCDEF = U nên D thừa, K = ACF.
K = ACDF.
Vậy K = ACF là một khóa của R.
Thay đổi thứ tự loại bỏ các thuộc tính thừa trong G ta tìm đƣợc khoá khác của
R là ABF. Vậy R có tất cả 2 khoá là ACF và ABF.
2) - R Chƣa ở dạng chuẩn 3NF vì
Xét D E F có E – thuộc tính không khóa (R có tất cả 2 khoá là ACF và ABF);
E {D} và D+= DE U nên D E vi phạm 3NF.
- Tách R về dạng 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc hàm.
Theo đề bài F đã tối thiểu và F = {AB C; C B; B D; D E}
+ Vì F không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có R1(F).
+ Ứng với phụ thuộc hàm AB C; C B, ta có R2(ABC)
+ Ứng với phụ thuộc hàm B D, ta có R3(BD)
+ Ứng với phụ thuộc hàm D E, ta có R4(DE)
+ Kết quả thu đƣợc = { R1(F), R2(ABC); R3(BD), R4(DE)}
{K} - = {K} = { R1(F), R2(ABC); R3(BD), R4(DE)}
K nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm và có kết Ta có R1(F)
nối không mất thông tin là:
242 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
= { K(ACF), R2(ABC); R3(BD), R4(DE)}
Hoặc = { K(ABF), R2(ABC); R3(BD), R4(DE)}
3) - R chƣa ở dạng chuẩn BCNF vì theo trên R chƣa ở dạng chuẩn 3NF
R(ABCDEF) F = {AB C; C B; B D; D E}
R1(DE) F1 = {D E}
R2(ABCDF) F2 = {AB C; C B; B D}
R22(ABCF) F22 = {AB C; C B}
R21(BD) F21 = {B D}
R221(CB) F221 = {C B}
R222(ACF) F221 = Ø
- Tách R về dạng BCNF có kết nối không mất thông tin:
- Kết quả thu đƣợc = {R1(DE), R21(BD), R221(CB), R222(ACF)}.
4.4.15. Cho SĐQH W =
R = (ABCDEF);
F = {AB C; C B; C D; C E} – tối thiểu.
1) Tìm khóa của R
2) R đã ở dạng chuẩn 3NF chƣa? Tại sao? Nếu chƣa hãy tách R về dạng 3NF
có kết nối không mất thông tin và bảo toàn phụ thuộc hàm.
3) R đã ở dạng chuẩn BCNF chƣa? Tại sao? Nếu chƣa hãy tách R về dạng
BCNF có kết nối không mất thông tin.
Giải:
1) Tìm khóa của R
+ G = BC
- K = AF (A chỉ có ở vế trái; F không nằm trong bất cứ phụ thuộc hàm nào của F) - K+ = (AF)+ = AF U nên R có thể có nhiều khóa
Phạm Hùng Phú 243
+ K = ABCF + Loại bỏ các thuộc tính thừa trong G.
Với B G ta có (K - B)+ = (ACF)+ = ABCDEF = U nên B thừa, K = ACF. Với C G ta có (K - C)+ = (AF)+ = AF U nên C không thừa, K = ACF.
Bài tập cơ sở dữ liệu
Vậy K = ACF là một khóa của R.
Nếu thay đổi thứ tự loại bỏ các thuộc tính thùa trong G ta còn tìm đƣợc khoá
khác của R là K = ABF.
Vậy R có 2 khoá là ACF và ABF.
2) - R Chƣa ở dạng chuẩn 3NF vì
Xét C E F có E – thuộc tính không khóa (R có tất cả 2 khoá là ACF và ABF); E {C} và C+ = BCDE U nên C E vi phạm 3NF.
- Tách R về dạng 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc hàm.
+ Theo đề bài, F đã tối thiểu F = {AB C; C B; C D; C E}.
+ Vì F không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có R1(F). + Ứng với phụ thuộc hàm AB C; C B ta có R2(ABC).
+ Ứng với phụ thuộc hàm C D; C E ta có R3(CDE).
Kết quả thu đƣợc = { R1(F), R2(ABC); R3(CDE)}
{K(ACF)} - = {K} = { R1(F), R2(ABC); R3(CDE)}
K nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm và có kết
Ta có R1(F) nối không mất thông tin là:
= { K, R2(ABC); R3(CDE)}.
Cụ thể: = { K(ACF), R2(ABC); R3(CDE)};
= { K(ABF), R2(ABC); R3(CDE)}
244 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
3) - R chƣa ở dạng chuẩn BCNF vì theo trên R chƣa ở dạng chuẩn 3NF
R(ABCDEF) F = {AB C; C B; C D; C E}
R1(CE) F1 = {C E}
R2(ABCDF) F2 = { AB C; C B; C D}
R21(CD) F21 = {C D}
R22 (ABCF) F22 = {AB C; C B}
R221 (CB) F221 = {C B}
R222 (ACF) F222 = Ø
- Tách R về dạng BCNF có kết nối không mất thông tin:
Kết quả thu đƣợc = {R1(CE), R21(CD), R221(CB), R222(ACF)}. Vì R21, R21, R221
có chung khóa là C nên có thể gộp thành R20(CBDE) với F20 = { C B; C D;
C E}.
Phép tách cuối cùng đƣợc = { R20(BCDE), R222(ACF)}
4.4.16. Cho SĐQH W =
R = (ABCDEF);
F = {AB C; C B; B D; B E} – tối thiểu.
1) Tìm khóa của R.
2) R đã ở dạng chuẩn 3NF chƣa? Tại sao? Nếu chƣa hãy tách R về dạng 3NF
có kết nối không mất thông tin và bảo toàn phụ thuộc hàm.
3) R đã ở dạng chuẩn BCNF chƣa? Tại sao? Nếu chƣa hãy tách R về dạng
BCNF có kết nối không mất thông tin.
Giải:
1) Tìm khóa của R
- K = AF (A chỉ có ở vế trái; F không nằm trong bất cứ phụ thuộc hàm nào của F) - Tính K+ = (AF)+ = AF U nên R có thể có nhiều khóa
Phạm Hùng Phú 245
+ G = BC; + K = ABCF; + Loại bỏ các thuộc tính thừa trong G:
Với B G ta có (K - B)+ = (ACF)+ = ABCDEF = U nên B thừa, K = ACF. Với C G ta có (K - C)+ = (AF)+ = AF U nên C không thừa, K = ACF.
Bài tập cơ sở dữ liệu
Vậy K = ACF là một khóa của R.
Nếu thay đổi thứ tự loại bỏ các thuộc tính thừa trong G ta còn tìm đƣợc một
khoá khác là K = ABF.
Vậy R có tất cả 2 khoá là ACF và ABF.
2) - R Chƣa ở dạng chuẩn 3NF vì
Xét B E F có E – thuộc tính không khóa (R có tất cả 2 khoá là ACF và ABF);
E {B} và B+= BDE U nên B E vi phạm 3NF.
- Tách R về dạng 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc hàm.
Bƣớc 1: Tìm phủ tối thiểu của F.
Theo đề bài, F đã tối thiểu F = {AB C; C B; B D; B E}
Bƣớc 2: Tìm khoá K của R.
Theo phần 1, R có tất cả 2 khoá là K = ACF và K = ABF.
Bƣớc 3: Tách R thành 3NF bảo toàn phụ thuộc hàm.
+ Vì F không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có R1(F).
+ Ứng với phụ thuộc hàm AB C; C B ta có R2(ABC)
+ Ứng với phụ thuộc hàm B D; B E ta có R3(BDE)
+ Kết quả thu đƣợc = { R1(F), R2(ABC); R3(BDE)}
{K} Bƣớc 4: Lấy = {K} = { R1(F), R2(ABC); R3(BDE)}
K nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm và có kết Ta có R1(F)
nối không mất thông tin là:
= { K(ACF), R2(ABC); R3(BDE)} hoặc = { K(ABF), R2(ABC); R3(BDE)}
246 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
3) - R chƣa ở dạng chuẩn BCNF vì theo trên R chƣa ở dạng chuẩn 3NF
R(ABCDEF) F = {AB C; C B; B D; B E}
R1(BE) F1 = { B E }
R2(ABCDF) F2={AB C; C B; B D}
R21(BD) F21 = {B D}
R22(ABCF) F22 = {AB C; C B}
R222(ACF) F222 = Ø
R221(CB) F221= {C B}
- Tách R về dạng BCNF có kết nối không mất thông tin:
Kết quả thu đƣợc = {R1, R21, R221, R222}. Vì R1, R21 có chung khóa là B nên
có thể gộp thành R10(BDE) với F10 = {B D; B E}.
Phép tách cuối cùng đƣợc = {R10(BDE), R221(CB), R222(ACF)}
4.4.17. Cho SĐQH W =
R = (ABCDEF);
F = {AB C; C A; B D; A E}.
1) Chứng minh F – tối thiểu
2) Tìm các khóa của R
3) R đã ở dạng chuẩn 3NF chƣa? Tại sao? Nếu chƣa hãy tách R về dạng 3NF
có kết nối không mất thông tin và bảo toàn phụ thuộc hàm
4) R đã ở dạng chuẩn BCNF chƣa? Tại sao? Nếu chƣa hãy tách R về dạng
chuẩn BCNF có kết nối không mất thông tin.
Giải:
1) Chứng minh F – tối thiểu
Bƣớc 1: Các phụ thuộc hàm trong F đều có vế phải chỉ chứa 1 thuộc tính.
Phạm Hùng Phú 247
Bài tập cơ sở dữ liệu F = {AB C; C A; B D; A E}
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
Vì C A; B D; A E có vế trái chỉ chứa 1 thuộc tính nên vế trái của chúng
không chứa các thuộc tính thừa.
+ Xét AB C
- Với A VT = AB ta có:
(VT - A)+ = B+ = BD
C BD nên A không thừa.
- Với B VT = AB ta có:
(VT - B)+ = A+ = AE
C AE nên B không thừa.
Các phụ thuộc hàm trong F không chứa các thuộc tính thừa ở vế trái
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Xét AB C
G = {C A; B D; A E}
= ABDE
C nên AB C không thừa.
+ Xét C A
G = {AB C; B D; A E}
= C
A nên C A không thừa.
+ Xét B D
G = {AB C; C A; A E}
= B
D nên B D không thừa.
+ Xét A E
G = {AB C; C A; B D}
= A
E nên A E không thừa.
248 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
F không chứa các các phụ thuộc hàm thừa.
Vậy F = {AB C; C A; B D; A E} - tối thiểu.
2) Tìm các khóa của R
+ G = AC + K = ABCF + Loại bỏ các thuộc tính thừa trong G.
Với A G ta có (K - A)+ = (BCF)+ = ABCDEF = U nên A thừa, K = BCF. Với C G ta có (K - C)+ = (BF)+ = BF U nên C không thừa, K = BCF.
- K = BF (B chỉ có ở vế trái; F không nằm trong bất cứ phụ thuộc hàm nào của F) - Tính K+ = (BF)+ = BF U nên R có thể có nhiều khóa
Vậy K = BCF là một khóa của R.
Thay đổi thứ tự loại bỏ các thuộc tính trong G ta còn tìm đƣợc khoá khác là
ABF.
Vậy R có tất cả 2 khoá là BCF và ABF.
3) - R Chƣa ở dạng chuẩn 3NF vì
Xét B D F có D – thuộc tính không khóa (R có tất cả 2 khoá là K = BCF và
K = ABF); D{B} và B+= BD U nên B D vi phạm 3NF.
- Tách R về dạng 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc
hàm.
Bƣớc 1: Tìm phủ tối thiểu của F.
Ta có F đã tối thiểu F = {AB C; C A; B D; A E}
Bƣớc 2: Tìm khoá K của R.
Theo phần 1, R có tất cả 2 khoá là BCF và ABF.
Bƣớc 3: Tách R thành 3NF bảo toàn phụ thuộc hàm.
+Vì F không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có R1(F).
+ Ứng với phụ thuộc hàm AB C; C A ta có R2(ABC)
+ Ứng với phụ thuộc hàm còn lại ta có R3(BD), R4(AE)
+ Kết quả thu đƣợc = { R1(F), R2(ABC); R3(BD), R4(AE)}
{K(BCF)} Bƣớc 4: Lấy = {K} = { R1(F), R2(ABC); R3(BD), R4(AE)}
Phạm Hùng Phú 249
K nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm và có kết Bài tập cơ sở dữ liệu Ta có R1(F)
nối không mất thông tin là:
= { K, R2(ABC); R3(BD), R4(AE)}
4) - R chƣa ở dạng chuẩn BCNF vì theo trên R chƣa ở dạng chuẩn 3NF
R(ABCDEF) F = {AB C; C A; B D; A E}
R1(AE) F1 = {A E }
R2(ABCDF) F2 = { AB C; C A; B D }
R21(BD) F21 = {B D}
R22(ABCF) F22 = { AB C; C A }
R221(CA) F221 = {C A}
R222(BCF) F222 = Ø
- Tách R về dạng BCNF có kết nối không mất thông tin:
Kết quả thu đƣợc = {R1(AE), R21(BD), R221(CA), R222(BCF)}.
4.4.18. Cho SĐQH W =
R = (A B C D E F);
F = {AB C; C B; B D; C E}.
1) Chứng minh F tối thiểu.
2) Tìm các khoá của R.
3) R có ở dạng chuẩn 3NF chƣa? Tại sao? Nếu chƣa hãy tách R về dạng 3NF
có kết nối không mất thông tin và bảo toàn phụ thuộc hàm.
4) R đã ở dạng chuẩn BCNF chƣa? Tại sao? Nếu chƣa hãy tách R về dạng
BCNF có kết nối không mất thông tin.
Giải:
1) Chứng minh F tối thiểu.
250 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Bƣớc 1: Các phụ thuộc hàm trong F đều có vế phải chỉ chứa 1 thuộc tính.
F = {AB C; C B; B D; C E};
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
Vì C B; B D; C E có vế trái chỉ chứa 1 thuộc tính nên vế trái của chúng
không chứa các thuộc tính thừa.
+ Xét AB C
- Với A VT = AB ta có:
(VT - A)+ = B+ = BD
C BD nên A không thừa.
- Với B VT = AB ta có:
(VT - B)+ = A+ = ADE
C ADE nên B không thừa.
Các phụ thuộc hàm trong F không chứa các thuộc tính thừa ở vế trái
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Xét AB C
G = {C B; B D; C E};
= ABD
C nên AB C không thừa.
+ Xét C B
G = {AB C; B D; C E};
= CE
B nên C B không thừa.
+ Xét B D
G = {AB C; C B; C E};
= B
D nên B D không thừa.
+ Xét C E
G = {AB C; C B; B D};
= CBD
Phạm Hùng Phú 251
Bài tập cơ sở dữ liệu E nên C E không thừa.
F không chứa các các phụ thuộc hàm thừa
Vậy F = {AB C; C B; B D; C E} - F tối thiểu.
2) Tìm các khoá của R.
- K = AF (A chỉ có ở vế trái; F không nằm trong bất cứ phụ thuộc hàm nào của
+ Vậy R có thể có nhiều khóa + G = BC + K = ABCF + Loại bỏ các thuộc tính thừa trong G.
F) - Tính K+ = (AF)+ = AF U
Với B G ta có (K - B)+ = (ACF)+ = ABCDEF = U nên B thừa, K = ACF.
Với C G ta có (K - C)+ = (AF)+ = AF U nên C không thừa, K = ACF.
Vậy K = ACF là một khóa của R.
Nếu thay đổi thứ tự loại bỏ các thuộc tính trong G ta còn tìm đƣợc khoá khác ABF.
Vậy R có tất cả 2 khoá là ACF và ABF.
3) - R Chƣa ở dạng chuẩn 3NF vì
Xét C E F có E – thuộc tính không khóa (R có tất cả 2 khoá là ACF và ABF);
E {C} và C+= BCDE U nên C E vi phạm 3NF.
- Tách R về dạng 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc hàm.
Bƣớc 1: Tìm phủ tối thiểu của F.
Ta có F đã tối thiểu F = {AB C; C B; B D; C E};
Bƣớc 2: Tìm khoá K của R.
Theo phần 1, R có tất cả 2 khoá là ACF và ABF.
Bƣớc 3: Tách R thành 3NF bảo toàn phụ thuộc hàm.
- Vì F không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có R1(F).
- Ứng với phụ thuộc hàm AB C; C B ta có R2(ABC)
- Ứng với phụ thuộc hàm còn lại ta có R3(BD), R4(CE)
- Kết quả thu đƣợc = { R1(F), R2(ABC); R3(BD), R4(CE)}
252 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
{K} Bƣớc 4: Lấy = {K} = { R1(F), R2(ABC); R3(BD), R4(CE)}
K(BCF) nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm và Ta có R1(F)
có kết nối không mất thông tin là:
= { K(ACF), R2(ABC); R3(BD), R4(CE)}
Hoặc = { K(ABF), R2(ABC); R3(BD), R4(CE)}
4) - R chƣa ở dạng chuẩn BCNF vì theo trên R chƣa ở dạng chuẩn 3NF
R(ABCDEF) F = {AB C; C B; B D; C E};
R1(CE) F1 = { C E}
R2(ABCDF) F2 = { AB C; C B; B D}
R21(BD) F21 = {B D}
R22(ABCF) F22 = {AB C; C B}
R221(CB) F221 = { C B}
R222(BCF) F222 = Ø
- Tách R về dạng BCNF có kết nối không mất thông tin:
Kết quả thu đƣợc = {R1, R21, R221, R222}. Vì R1, R221 có chung khóa là C
nên có thể gộp thành R20(BCE) với F20 = {C E; C B}.
Phép tách cuối cùng đƣợc = {R20(BCE), R21(BD), R222(BCF)}.
4.4.19. Cho SĐQH W =
R = (A B C D E F);
F = {AB C; C B; C D; C E; C F}.
1) Chứng minh F tối thiểu.
2) Tìm các khoá của R.
3) R có ở dạng chuẩn 3NF chƣa? Tại sao? Nếu chƣa hãy tách R về dạng 3NF
có kết nối không mất thông tin và bảo toàn phụ thuộc hàm.
Phạm Hùng Phú 253
Bài tập cơ sở dữ liệu 4) R đã ở dạng chuẩn BCNF chƣa? Tại sao? Nếu chƣa hãy tách R về dạng
BCNF có kết nối không mất thông tin.
Giải:
1) Chứng minh F tối thiểu.
Bƣớc 1: Các phụ thuộc hàm trong F đều có vế phải chỉ chứa 1 thuộc tính.
F = {AB C; C B; C D; C E; C F};
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
Vì C B; C D; C E; C F có vế trái chỉ chứa 1 thuộc tính nên vế trái của
chúng không chứa các thuộc tính thừa.
+ Xét AB C
- Với A VT = AB ta có:
(VT - A)+ = B+ = B
C B nên A không thừa.
- Với B VT = AB ta có:
(VT - B)+ = A+ = ADE
C ADE nên B không thừa.
Các phụ thuộc hàm trong F không chứa các thuộc tính thừa ở vế trái
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Xét AB C
G = {C B; C D; C E; C F};
= AB
C nên AB C không thừa.
+ Xét C B
G = {AB C; C D; C E; C F};
= CDEF
B nên C B không thừa.
+ Xét C D
G = {AB C; C B; C E; C F};
= BCEF
D nên C D không thừa.
254 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
+ Xét C E
G = {AB C; C B; C D; C F};
= BCDF
E nên C E không thừa.
+ Xét C F
G = {AB C; C B; C D; C E };
= BCDE
F nên C F không thừa.
F không chứa các các phụ thuộc hàm thừa
Vậy F = {AB C; C B; C D; C E; C F} - tối thiểu
2) Tìm các khoá của R.
+ G = BC + K = ABC + Loại bỏ các thuộc tính thừa trong G.
Với B G ta có (K - B)+ = (AC)+ = ABCDEF = U nên B thừa, K = AC. Với C G ta có (K - C)+ = A+ = A U nên C không thừa, K = AC.
- K = A (A chỉ có ở vế trái) - K+ = A+ = A U nên R có thể có nhiều khóa
Vậy K = AC là một khóa của R.
Nếu thay đổi thứ tự loại bỏ các thuộc tính trong G ta còn tìm đƣợc khoá khác là AB.
Vậy R có tất cả 2 khoá là AC và AB
3) - R Chƣa ở dạng chuẩn 3NF vì
Xét C E F Có E – thuộc tính không khóa (R có tất cả 2 khoá là ACF và
ABF); E {C} và C+= BCDEF U nên C E vi phạm 3NF.
- Tách R về dạng 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc hàm.
Bƣớc 1: Tìm phủ tối thiểu của F
Ta có F đã tối thiểu và F = {AB C; C B; C D; C E; C F};
Bƣớc 2: Tìm khoá K của R
Theo phần 1, R có tất cả 2 khoá là AC và AB
Phạm Hùng Phú 255
Bài tập cơ sở dữ liệu Bƣớc 3: Tách R thành 3NF bảo toàn phụ thuộc hàm
+ Ứng với phụ thuộc hàm AB C; C B ta có R1(ABC)
+ Ứng với phụ thuộc hàm C D; C E; C F ta có R2(CDEF)
+ Kết quả thu đƣợc = { R1(ABC), R2(CDEF)}
{K(AC)} Bƣớc 4: Lấy = {K} = { R1(ABC), R2(CDEF)}
Ta có K R1(ABC) nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm và có
kết nối không mất thông tin là:
= { R1(ABC), R2(CDEF)}
4) - R chƣa ở dạng chuẩn BCNF vì theo trên R chƣa ở dạng chuẩn 3NF
- Tách R về dạng BCNF có kết nối không mất thông tin:
R(ABCDEF) F = {AB C; C B; C D; C E; C F};
R1(CF) F1 = {C F} R2(ABCDE) F2 = { AB C; C B; C D; C E}
R22(ABCD) F22 = {AB C; C B; C D} R21(CE) F21 = {C E}
R221(CD) F221 = {C D} R222(ABC) F222={AB C;C B}
R2221(CB) F2221 = {C B} R2222(AC) F2222 = Ø
Kết quả thu đƣợc = {R1, R21, R221, R2221, R2222}. Vì R1, R21, R221, R2221 có
chung khóa là C nên có thể gộp thành R20(BCDEF) với F20 = {C B; C D;
C E, C F}.
Phép tách cuối cùng đƣợc = {R20(BCDEF), R2222(AC)}.
256 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
4.4.20. Cho SĐQH W =
với R = (A B C D E F G);
F = {AB C; A D; A E}.
1) Chứng minh F tối thiểu.
2) Tìm các khoá của R.
3) R có ở dạng chuẩn 3NF chƣa? Tại sao? Nếu chƣa hãy tách R về dạng 3NF có kết
nối không mất thông tin và bảo toàn phụ thuộc hàm.
Giải:
1) Chứng minh F tối thiểu.
Bƣớc 1: Các phụ thuộc hàm trong F đều có vế phải chỉ chứa 1 thuộc tính
F = {AB C; A D; A E};
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
Vì A D; A E có vế trái chỉ chứa 1 thuộc tính nên vế trái của chúng không chứa
các thuộc tính thừa.
+ Xét AB C
- Với A VT = AB ta có:
(VT - A)+ = B+ = B
C B nên A không thừa.
- Với B VT = AB ta có:
(VT - B)+ = A+ = ADE
C ADE nên B không thừa.
Các phụ thuộc hàm trong F không chứa các thuộc tính thừa ở vế trái
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Xét AB C
G = {A D; A E};
= ABDE
C nên AB C không thừa.
+ Xét A D
G = {AB C; A E};
= AE
Phạm Hùng Phú 257
Bài tập cơ sở dữ liệu D nên A D không thừa.
+ Xét A E
G = {AB C; A D};
= AD
E nên A E không thừa
F không chứa các các phụ thuộc hàm thừa.
Vậy F = {AB C; A D; A E} - tối thiểu.
2) Tìm các khoá của R.
- K = ABFG (A, B chỉ có ở vế trái; F, G không nằm trong bất cứ phụ thuộc hàm
nào của F)
- Tính K+ = (ABFG)+ = ABCDEFG = U
Vậy K = ABFG là khóa duy nhất của R
3) - R Chƣa ở dạng chuẩn 3NF vì
Xét A E F có E – thuộc tính không khóa (R có một khoá duy nhất là ABFG);
E {A} và A+= ADE U nên A E vi phạm 3NF.
- Tách R về dạng 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc
hàm.
Bƣớc 1: Tìm phủ tối thiểu của F.
Ta có F đã tối thiểu F = {AB C; A D; A E};
Bƣớc 2: Tìm khoá K của R.
Theo phần 1, K = ABFG là khóa duy nhất của R
Bƣớc 3: Tách R thành 3NF bảo toàn phụ thuộc hàm.
+ Vì FG không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có R1(FG).
+ Ứng với phụ thuộc hàm A D; A E ta có R2(ADE)
+ Ứng với phụ thuộc hàm còn lại ta có R3(ABC)
+ Kết quả thu đƣợc = { R1(FG), R2(ADE); R3(ABC)}
{K(ABFG)} Bƣớc 4: Lấy = {K} = { R1(FG), R2(ADE); R3(ABC)}
K(ABFG) nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm Ta có R1(FG)
và có kết nối không mất thông tin là:
258 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
- = { K(ABFG), R2(ADE); R3(ABC)}
4) - R chƣa ở dạng chuẩn BCNF vì theo trên R chƣa ở dạng chuẩn 3NF
R(ABCDEFG) F = {AB C; A D; A E};
R1(ABC) F1 = {AB C};
R2(ABDEFG) F2 = { A D; A E};
R21(AD) F21 = {A D};
R22(ABEFG) F22 = {A E};
R221(AE) F221 = {A E};
R222(ABFG) F222 = Ø
- Tách R về dạng BCNF có kết nối không mất thông tin:
Kết quả thu đƣợc = {R1, R21, R221, R222}. Vì R21, R221 có chung khóa là A
nên có thể gộp thành R20(ADE) với F20 = {A D; A E}. Phép tách cuối cùng đƣợc = {R1, R20, R222}.
4.4.21. Cho SĐQH W =
với R = (A B C D E F G);
F = {AB C; B D; B E; E F}.
1) Chứng minh F tối thiểu.
2) Tìm các khoá của R.
3) R có ở dạng chuẩn 3NF chƣa? Tại sao? Nếu chƣa hãy tách R về dạng 3NF
có kết nối không mất thông tin và bảo toàn phụ thuộc hàm.
4) R đã ở dạng chuẩn BCNF chƣa? Tại sao? Nếu chƣa hãy tách R về dạng
BCNF có kết nối không mất thông tin.
Giải:
1) Chứng minh F tối thiểu.
Bƣớc 1: Các phụ thuộc hàm trong F đều có vế phải chỉ chứa 1 thuộc tính
Phạm Hùng Phú 259
Bài tập cơ sở dữ liệu F = {AB C; B D; B E; E F};
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F
Vì B D; B E; E F có vế trái chỉ chứa 1 thuộc tính nên vế trái của chúng không
chứa các thuộc tính thừa.
+ Xét AB C
- Với A VT = AB ta có:
(VT - A)+ = B+ = BDEF
C BDEF nên A không thừa.
- Với B VT = AB ta có:
(VT - B)+ = A+ = A
C A nên B không thừa.
F không chứa các các phụ thuộc hàm thừa
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Xét AB C
G = {B D; B E; E F};
= ABDEF
C nên AB C không thừa.
+ Xét B D
G = {AB C; B E; E F};
= BEF
D nên B D không thừa.
+ Xét B E
G = {AB C; B D; E F};
= BD
E nên B E không thừa.
+ Xét E F
G = {AB C; B D; B E};
= E
F nên E F không thừa.
F không chứa các các phụ thuộc hàm thừa.
Vậy F = {AB C; B D; B E; E F} - tối thiểu.
260 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
2) Tìm các khoá của R.
- K = ABG (A, B chỉ có ở vế trái; G không nằm trong bất cứ phụ thuộc hàm
nào của F)
- Tính K+ = (ABG)+ = ABCDEFG = U.
Vậy K = ABG là khóa duy nhất của R
3) - R Chƣa ở dạng chuẩn 3NF vì
Xét E F F Có E – thuộc tính không khóa (R có một khoá duy nhất là ABG);
F {E} và E+= EF U nên E F vi phạm 3NF.
- Tách R về dạng 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc hàm.
Bƣớc 1: Tìm phủ tối thiểu của F.
Ta có F = {AB C; B D; B E; E F} đã tối thiểu
Bƣớc 2: Tìm khoá K của R.
Theo phần 1, K = ABG là khóa duy nhất của R
Bƣớc 3: Tách R thành 3NF bảo toàn phụ thuộc hàm.
+ Vì G không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có R1(G).
+ Ứng với phụ thuộc hàm B D; B E ta có R2(BDE)
+ Ứng với phụ thuộc hàm còn lại ta có R3(ABC), R4(EF)
+ Kết quả thu đƣợc = { R1(G), R2(BDE); R3(ABC), R4(EF)}
{K(ABG)} Bƣớc 4: Lấy = {K} = { R1(G), R2(BDE); R3(ABC), R4(EF)}
K(ABG) nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm và Ta có R1(G)
có kết nối không mất thông tin là:
= { K(ABG), R2(BDE); R3(ABC), R4(EF)}
Phạm Hùng Phú 261
Bài tập cơ sở dữ liệu 4) - R chƣa ở dạng chuẩn BCNF vì theo trên R chƣa ở dạng chuẩn 3NF
R(ABCDEFG)
F = {AB C; B D; B E; E
F};
F};
R1(ABC) F1 = {AB C}
R2(ABDEFG) F2 = {B D; B E; E
R22(ABEFG)
F};
R21(BD) F21 = {B D}
F22 = { B E; E
R222(ABFG)
F};
R221(BE) F221 = { B E };
F222 = {E
R2221(EF)
F};
F2221 = {E
R2222(ABG) F2222 = {Ø}
- Tách R về dạng BCNF có kết nối không mất thông tin:
Kết quả thu đƣợc = {R1, R21, R221, R2221, R2222}. Vì R21, R221 có chung khóa
là B nên có thể gộp thành R20(BDE) với F20 = {B D; B E}. Phép tách cuối cùng đƣợc = {R1, R20, R2221, R2222}.
4.4.22. Cho SĐQH W =
với R = (A B C D E F G);
F = {AB C; C A; C E; C G}.
1) Chứng minh F tối thiểu.
2) Tìm các khoá của R.
3) R có ở dạng chuẩn 3NF chƣa? Tại sao? Nếu chƣa hãy tách R về dạng 3NF
có kết nối không mất thông tin và bảo toàn phụ thuộc hàm.
4) R đã ở dạng chuẩn BCNF chƣa? Tại sao? Nếu chƣa hãy tách R về dạng
BCNF có kết nối không mất thông tin.
262 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Giải:
1) Chứng minh F tối thiểu.
Bƣớc 1: Các phụ thuộc hàm trong F đều có vế phải chỉ chứa 1 thuộc tính
F = {AB C; C A; C E; C G}
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
Vì C A; C E; C G có vế trái chỉ chứa 1 thuộc tính nên vế trái của chúng
không chứa các thuộc tính thừa.
+ Xét AB C
- Với A VT = AB ta có:
(VT - A)+ = B+ = B
C B nên A không thừa.
- Với B VT = AB ta có:
(VT - B)+ = A+ = ADEF
C ADEF nên B không thừa.
Các phụ thuộc hàm trong F không chứa các thuộc tính thừa ở vế trái
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Xét AB C
G = {C A; C E; C G};
= AB
C nên AB C không thừa.
+ Xét C A
G = {AB C; C E; C G};
= CEG
A nên C A không thừa.
+ Xét C E
G = {AB C; C A; C G};
= ACG
E nên C E không thừa.
+ Xét C G
G = {AB C; C A; C E};
Phạm Hùng Phú 263
Bài tập cơ sở dữ liệu = ACE
G nên C G không thừa.
F không chứa các các phụ thuộc hàm thừa.
Vậy F = {AB C; C A; C E; C G} - tối thiểu.
2) Tìm các khoá của R.
- K = BDF (B chỉ có ở vế trái; D, F không nằm trong bất cứ phụ thuộc hàm nào
- K+ = (BDF)+ = BDF U nên R có thể có nhiều khóa
+ G = AC + K = ABCDF + Loại bỏ các thuộc tính thừa trong G.
Với A G ta có (K - A)+ = (BCDF)+ = ABCDEFG = U nên A thừa, K = BCDF. Với C G ta có (K - C)+ = (BDF)+ = BDF U nên C không thừa, K = BCDF.
của F)
Vậy K = BCDF là một khóa của R.
Nếu thay đổi thứ tự loại bỏ các thuộc tính trong G ta còn tìm đƣợc khoá ABDF
Vậy R có tất cả 2 khoá là K = BCDF và K = ABDF.
3) - R Chƣa ở dạng chuẩn 3NF vì
Xét C G F có E – thuộc tính không khóa (R có tất cả 2 khoá là BCDF và
ABDF); G {C} và C+= ACEG U nên C G vi phạm 3NF.
- Tách R về dạng 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc hàm.
Bƣớc 1: Tìm phủ tối thiểu của F.
Ta có F đã tối thiểu và F = {AB C; C A; C E; C G}
Bƣớc 2: Tìm khoá K của R.
Theo phần 2, R có tất cả 2 khoá là K = BCDF và K = ABDF
Bƣớc 3: Tách R thành 3NF bảo toàn phụ thuộc hàm.
+ Vì DF không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có
R1(DF).
+ Ứng với phụ thuộc hàm AB C; C A ta có R2(ABC)
+ Ứng với phụ thuộc hàm C E; C G ta có R3(CEG)
264 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
+ Kết quả thu đƣợc = { R1(DF), R2(ABC); R3(CEG)}
{K(BCDF)} Bƣớc 4: Lấy = {K} = { R1(DF), R2(ABC); R3(CEG)}
K nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm và có Ta có R1(DF)
kết nối không mất thông tin là:
= { K(BCDF), R2(ABC); R3(CEG)}.
Hoặc = { K(ABDF), R2(ABC); R3(CEG)}.
4) - R chƣa ở dạng chuẩn BCNF vì theo trên R chƣa ở dạng chuẩn 3NF
R(ABCDEFG) F = {AB C; C A; C E; C G}
R2(ABCDEF) F2 = { AB C; C A; C E }
R1(CG) F1 = { C G }
R21(CE) F21 = {C E}
R22(ABCDF) F22 = { AB C; C A }
R221(CA) F221 = {C A};
R222(BCDF) F222 = Ø
- Tách R về dạng BCNF có kết nối không mất thông tin:
Kết quả thu đƣợc = {R1, R21, R221, R222}. Vì R1, R21, R221có chung khóa là
C nên có thể gộp thành R20(ACEG) với F20 = {C G; C E; C A }. Phép tách cuối cùng đƣợc = { R20(ACEG), R222(BCDF)}.
4.4.23. Cho SĐQH W =
với R = (A B C D E F G);
F = {AB C; A DE; E F}.
1) Tìm phủ tối thiểu của F.
2) Tìm tất cả các khoá của R.
3) R đã ở dạng chuẩn 3NF chƣa? Tại sao?
Phạm Hùng Phú 265
Bài tập cơ sở dữ liệu 4) Tách R về dạng 3NF:
- Bảo toàn phụ thuộc hàm.
- Có kết nối không mất thông tin và bảo toàn phụ thuộc hàm
5) R đã ở dạng chuẩn BCNF chƣa? Tại sao?
6) Nếu R chƣa ở dạng chuẩn BCNF; Hãy tách về dạng BCNF có kết nối không
mất thông tin.
Giải:
1) Tìm phủ tối thiểu của F.
Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ chứa
1 thuộc tính.
F = {AB C; A D; A E; E F};
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
Vì A D; A E; E F có vế trái chỉ chứa 1 thuộc tính nên vế trái của chúng
không chứa các thuộc tính thừa.
+ Xét AB C
- Với A VT = AB ta có:
(VT - A)+ = B+ = B
C B nên A không thừa.
- Với B VT = AB ta có:
(VT - B)+ = A+ = ADEF
C ADEF nên B không thừa.
Sau khi loại bỏ các thuộc tính thừa ở vế trái ta đƣợc:
F = {AB C; A D; A E; E F};
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Xét AB C
G = {A D; A E; E F};
= ABDEF
C nên AB C không thừa.
+ Xét A D
G = {AB C; A E; E F};
266 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
= AEF
D nên A D không thừa.
+ Xét A E
G = {AB C; A D; E F};
= AD
E nên A E không thừa.
+ Xét E F
G = {AB C; A D; A E};
= E
F nên E F không thừa.
Bƣớc 4: Vậy phủ tối thiểu F = {AB C; A D; A E; E F};
2) Tìm tất cả các khoá của R.
- K = ABG (A, B chỉ có ở vế trái; G không nằm trong bất cứ phụ thuộc hàm
nào của F)
- Tính K+ = (ABG)+ = ABCDEFG = U
Vậy K = ABG là khóa duy nhất của R
3) R Chƣa ở dạng chuẩn 3NF vì
Xét E F F có F – thuộc tính không khóa (R có một khoá duy nhất là ABG); E
{F} và E+= EF U nên E F vi phạm 3NF.
4) Tách R về dạng:
- 3NF bảo toàn phụ thuộc hàm.
+ Ta có F = {AB C; A D; A E; E F} – tối thiểu
+ Vì G không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có
R1(G)
+ Ứng với phụ thuộc hàm A D; A E ta có R2(ADE)
+ Ứng với các phụ thuộc hàm còn lại ta có R3(ABC), R4(EF).
Vậy = {R1(G), R2(ADE), R3(ABC), R4(EF)}
- 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc hàm.
Phạm Hùng Phú 267
Bài tập cơ sở dữ liệu Bƣớc 1: Tìm phủ tối thiểu của F.
Theo phần 1, phủ tối thiểu của F là:
F = {AB C; A D; A E; E F}; - tối thiểu
Bƣớc 2: Tìm khoá K của R.
Theo phần 2, K = ABG là khóa duy nhất của R
Bƣớc 3: Tách R thành 3NF bảo toàn phụ thuộc hàm ta đƣợc:
= {R1(G), R2(ADE), R3(ABC), R4(EF)}
Bƣớc 4: Lấy = {K(ABG)} {K} = {R1(G), R2(ADE), R3(ABC), R4(EF)}
K(ABG) nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm và Ta có R1(G)
có kết nối không mất thông tin là:
= { K(ABG), R2(ADE), R3(ABC), R4(EF)}
5) R Chƣa ở dạng chuẩn BCNF vì
Xét E F F có E {F} và E+= EF U nên E F vi phạm BCNF.
R(ABCDEFG)
F = {AB C; A D; A E; E
F}
F}
R1(ABC) F1 = {AB C}
R2(ABDEFG) F2 = {A D; A E; E
R22(ABEFG)
F}
R21(AD) F21 = {A D}
F22 = {A E; E
R221(AE) F221 = {A E}
R222(ABFG) F} F222 = {E
R2221(EF)
F}
F2221 = {E
R2222(ABG) F2222 = Ø
6) Tách về dạng BCNF có kết nối không mất thông tin.
268 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Kết quả thu đƣợc = {R1, R21, R221, R2221, R2222}. Vì R21, R221 có chung khóa
là A nên có thể gộp thành R20(ADE) với F20 = {A D; A E}. Phép tách cuối cùng đƣợc = {R1(ABC), R20(ADE), R2221(EF),
R2222(ABG)}.
4.4.24. Cho SĐQH W =
với R = (A B C D E F G);
F = {AB C; A DE; C A ; E F; F B}.
1) Tìm phủ tối thiểu của F.
2) Tìm tất cả các khoá của R.
3) R đã ở dạng chuẩn 3NF chƣa? Tại sao?
4) Tách R về dạng 3NF:
- Bảo toàn phụ thuộc hàm.
- Có kết nối không mất thông tin và bảo toàn phụ thuộc hàm
5) R đã ở dạng chuẩn BCNF chƣa? Tại sao?
6) Nếu R chƣa ở dạng chuẩn BCNF; Hãy tách về dạng BCNF có kết nối không
mất thông tin.
Giải:
1) Tìm phủ tối thiểu của F.
Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ chứa
1 thuộc tính.
F = {AB C; A D; A E; C A; E F; F B}
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
Vì A D; A E; C A; E F; F B có vế trái chỉ chứa 1 thuộc tính nên vế trái
của chúng không chứa các thuộc tính thừa.
- Xét AB C
+ Với A VT = AB ta có:
(VT - A)+ = B+ = B;
C B nên A không thừa.
+ Với B VT = AB ta có:
(VT - B)+ = A+ = ABCDEF;
Phạm Hùng Phú 269
Bài tập cơ sở dữ liệu C ABCDEF nên B thừa và ta thay AB C bằng A C
Sau khi loại bỏ các thuộc tính thừa ở vế trái ta đƣợc:
F = {A C; C A; A D; A E; E F, F B}
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
- Xét A C
+ G = {C A; A D; A E; E F, F B};
+ = ABDEF
G nên A C không thừa.
+ C A+
- Xét C A
+ G = { A C; A D; A E; E F, F B };
+ = C
+ A nên C A không thừa
- Xét A D
+ G = {A C; C A; A E; E F, F B}
+ = ABCEF
D nên A D không thừa.
- Xét A E
+ G = {A C; C A; A D; E F, F B}
+ = ACD
+ E nên A E không thừa.
- Xét E F
+ G = {A C; C A; A D; A E; F B}
+ = E
+ F nên E F không thừa.
- Xét F B
+ G = {A C; C A; A D; A E; E F}
+ = F
+ F nên F B không thừa
Bƣớc 4: Vậy phủ tối thiểu F = {A C; C A; A D; A E; E F, F B}
270 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
2) Tìm tất cả các khoá của R.
- K = G (G không nằm trong bất cứ phụ thuộc hàm nào của F) - K+ = G+ = G U nên R có thể có nhiều khóa
+ Với A G ta có (K - A)+ = (GCEF)+ = ABCDEFG = U nên A thừa,
- G = ACEF - K = GACEF - Loại bỏ các thuộc tính thừa trong G.
+ Với C G ta có (K - C)+ = (GEF)+ = GEFB U nên C không thừa,
K = GCEF
+ Với E G ta có (K - E)+ = (GCF)+ = ABCDEFG = U nên E thừa,
K = GCEF
+ Với F G ta có (K - F)+ = (GC)+ = ABCDEFG = U nên F thừa, K = GC.
K = GCF
Vậy K = GC là một khóa của R.
Nếu thay đổi thứ tự loại bỏ các thuộc tính trong G ta còn tìm đƣợc khoá AG
Vậy R có tất cả 2 khoá là CG và AG.
3) R Chƣa ở dạng chuẩn 3NF vì
Xét F B F có B – thuộc tính không khóa (B chỉ nằm ở vế phải );
B {F} và F+= FB U nên F B vi phạm 3NF.
4) Tách R về dạng:
- 3NF bảo toàn phụ thuộc hàm.
+ Ta có F = {A C; C A; A D; A E; E F, F B} – tối thiểu
+ Vì G không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có R1(G)
+ Ứng với phụ thuộc hàm A C; C A ta có R2(AC)
+ Ứng với phụ thuộc hàm A D; A E ta có R3(ADE)
+ Ứng với các phụ thuộc hàm còn lại ta có R4(EF), R5(FB).
Vậy = {R1(G), R2(AC), R3(ADE), R4(EF), R5(FB)}
- 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc hàm
{K} = {K} = {R1(G), R2(AC), R3(ADE), R4(EF), R5(FB)}
Phạm Hùng Phú 271
K nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm và có kết Bài tập cơ sở dữ liệu Ta có R1(G)
nối không mất thông tin là:
= { K(AG), R2(AC), R3(ADE), R4(EF), R5(FB)}
Hoặc = { K(CG), R2(AC), R3(ADE), R4(EF), R5(FB)}
5) R Chƣa ở dạng chuẩn BCNF vì
Xét F B F có B {F} và F+= FB U nên F B vi phạm BCNF.
R(ABCDEFG) F = {A C; C A; A D; A E; E F, F B}
R1(FB) F1 = {F B}
R2(ACDEFG) F2 = {A C; C A; A D; A E; E F}
R21(EF)
F}
F21 = {E
R22(ACDEG) F22 = { A C; C A; A D; A E}
R221(AE) F221 = {A E}
R222(ACDG) F222 = { A C; C A; A D }
R2221(AD) F2221 = {A D}
R2222(ACG) F2222 = {A C; C A}
R22222(AG) F22222 =
R22221(AC) F22221 = {A C; C A}
4) Tách về dạng BCNF có kết nối không mất thông tin.
- Kết quả thu đƣợc = {R1, R21, R221, R2221, R22221, R22222}. Vì R221, R2221, R22221
có chung khóa là A nên có thể gộp thành R20(ACDE) với F20 = { A C; A D; A E}.
- Phép tách cuối cùng đƣợc = {R1(FB), R21(EF), R20(ACDE), R22222(AG)}.
272 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
4.4.25. Cho SĐQH W =
với R = (A B C D E F G);
F = {FG C; C EF; B D}.
1) Tìm phủ tối thiểu của F.
2) Tìm tất cả các khoá của R.
3) R đã ở dạng chuẩn 3NF chƣa? Tại sao?
4) Tách R về dạng 3NF:
- Bảo toàn phụ thuộc hàm.
- Có kết nối không mất thông tin và bảo toàn phụ thuộc hàm
5) R đã ở dạng chuẩn BCNF chƣa? Tại sao?
6) Nếu R chƣa ở dạng chuẩn BCNF; Hãy tách về dạng BCNF có kết nối không
mất thông tin.
Giải:
1) Tìm phủ tối thiểu của F.
Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ chứa
1 thuộc tính.
F = {FG C; C E; C F; B D};
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
Vì C E; C F; B D có vế trái chỉ chứa 1 thuộc tính nên vế trái của chúng
không chứa các thuộc tính thừa.
+ Xét FG C
- Với F VT = FG ta có:
(VT - F)+ = G+ = G
C G nên F không thừa.
- Với G VT = FG ta có:
(VT - G)+ = F+ = F
C F nên G không thừa.
Sau khi loại bỏ các thuộc tính thừa ở vế trái ta đƣợc:
F = {FG C; C E; C F; B D};
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
+ Xét FG C
Phạm Hùng Phú 273
Bài tập cơ sở dữ liệu G = {C E; C F; B D};
= FG
C nên FG C không thừa.
+ Xét C E
G = {FG C; C F; B D};
= CF
E nên C E không thừa.
+ Xét C F
G = {FG C; C E; B D};
= CE
F nên C F không thừa
+ Xét B D
G = {FG C; C E; C F};
= B
D nên B D không thừa
Bƣớc 4: Vậy phủ tối thiểu F = {FG C; C E; C F; B D};
2) Tìm các khoá của R.
- K = ABG (B, G chỉ có ở vế trái; A không nằm trong bất cứ phụ thuộc hàm nào
- K+ = (ABG)+ = ABDG U nên R có thể có nhiều khóa
+ G = CF + K = ABCFG + Loại bỏ các thuộc tính thừa trong G.
Với C G ta có (K - C)+ = (ABFG)+ = ABCDEFG = U nên C thừa,
của F)
Với F G ta có (K - F)+ = (ABG)+ = ABDG U nên F không thừa,
K = ABFG.
K = ABFG.
Vậy K = ABFG là một khóa của R.
274 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Nếu thay đổi thứ tự loại bỏ các thuộc tính trong G ta còn tìm đƣợc khoá khác
là K = ABCG.
Vậy R có tất cả 2 khoá là ABFG và ABCG.
3) - R Chƣa ở dạng chuẩn 3NF vì
Xét B DF có D – thuộc tính không khóa (D chỉ nằm ở vế phải); D {B} và
B+ = BD U nên B D vi phạm 3NF.
- Tách R về dạng 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc hàm.
+ Vì A không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có
R1(A).
+ Ứng với phụ thuộc hàm FG C; C F ta có R2(CFG).
+ Ứng với các phụ thuộc hàm còn lại ta có R3(CE), R4(BD).
- 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc hàm
Bƣớc 1: Tìm phủ tối thiểu của F.
Theo phần 1, phủ tối thiểu của F là:
F = {FG C; C E; C F; B D
Bƣớc 2: Tìm khoá K của R.
Theo phần 2, ta có K = ABFG và K = ABCG là các khóa của R.
Bƣớc 3: Tách R thành 3NF bảo toàn phụ thuộc hàm ta đƣợc:
= {R1(A), R2 (CFG), R3(CE), R4(BD)}
{K} Bƣớc 4: Lấy = {K} = {R1(A), R2 (CFG), R3(CE), R4(BD)}
K nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm và có kết Ta có R1(A)
nối không mất thông tin là:
= { K(ABFG), R2 (CFG), R3(CE), R4(BD)}
Hoặc = { K(ABCG), R2 (CFG), R3(CE), R4(BD)}
5) R chƣa ở dạng chuẩn BCNF vì
Xét B DF có D {B} và B+ = BD U nên B D vi phạm BCNF.
Phạm Hùng Phú 275
R(ABCDEFG) F = {FG C; C E; C F; B D}
R1(BD) F1 = {B D}
R2(ABCEFG) F2 = { FG C; C E; C F }
R21(CE) F21 = {C E}
R22(ABCFG) F22 = {FG C; C F}
R222(ABCG) F222 = Ø
R221(CF) F221 = {C F}
Bài tập cơ sở dữ liệu 6) Tách về dạng BCNF có kết nối không mất thông tin.
- Kết quả thu đƣợc = {R1, R21, R221, R222}. Vì R21, R221, có chung khóa là C nên
có thể gộp thành R20(CEF) với F20 = { C E; C F}. - Phép tách cuối cùng đƣợc = {R1(BD), R20(CEF), R222(ABCG)}.
4.4.26. Cho SĐQH W =
với R = (A B C D E F G)
F = {AB CD; C AE};
1) Tìm phủ tối thiểu của F.
2) Tìm tất cả các khoá của R.
3) R đã ở dạng chuẩn 3NF chƣa? Tại sao?
4) Tách R về dạng 3NF:
- Bảo toàn phụ thuộc hàm.
- Có kết nối không mất thông tin và bảo toàn phụ thuộc hàm
5) R đã ở dạng chuẩn BCNF chƣa? Tại sao?
6) Nếu R chƣa ở dạng chuẩn BCNF; Hãy tách về dạng BCNF có kết nối không
mất thông tin.
Giải:
1) Tìm phủ tối thiểu của F.
276 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ chứa
1 thuộc tính.
F = {AB C; AB D; C A; C E};
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
Vì C A; C E có vế trái chỉ chứa 1 thuộc tính nên vế trái của chúng không chứa
các thuộc tính thừa.
- Xét AB C
+ Với A VT = AB ta có: (VT - A)+ = B+ = B
C B nên A không thừa.
+ Với B VT = AB ta có:
(VT - B)+ = A+ = A
C A nên B không thừa.
- Xét AB D
+ Với A VT = AB ta có:
(VT - A)+ = B+ = B
D B nên A không thừa.
+ Với B VT = AB ta có:
(VT - B)+ = A+ = A
D A nên B không thừa.
Sau khi loại bỏ các thuộc tính thừa ở vế trái ta đƣợc:
F = {AB C; AB D; C A; C E};
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
- Xét AB C
+ G = {AB D; C A; C E};
+ = ABD
+ C nên AB C không thừa.
- Xét AB D
+ G = {AB C; C A; C E};
+ = ABCE
Phạm Hùng Phú 277
Bài tập cơ sở dữ liệu
+ D nên AB D không thừa.
- Xét C A
+ G = {AB C; AB D; C E};
+ = CE
+ A nên C A không thừa.
- Xét C E
+ G = {AB C; AB D; C A};
+ = AC
+ E nên C E không thừa.
Bƣớc 4: Vậy phủ tối thiểu F = {AB C; AB D; C A; C E};
2) Tìm tất cả các khoá của R.
- K = BFG (B chỉ có ở vế trái; F, G không nằm trong bất cứ phụ thuộc hàm nào
- K+ = (BFG)+ = BFG U nên R có thể có nhiều khóa
+ G = AC + K = ABCFG + Loại bỏ các thuộc tính thừa trong G.
Với A G ta có (K - A)+ = (BCFG)+ = ABCDEFG = U nên A thừa, K = BCFG. Với C G ta có (K - C)+ = (BFG)+ = BFG U nên C không thừa, K = BCFG.
của F)
Vậy K = BCFG là một khóa của R.
Thay đổi thứ tự loại bỏ các thuộc tính trong G ta đƣợc khóa khác là ABFG.
Vậy R có 2 khóa là BCFG và ABFG.
3) R Chƣa ở dạng chuẩn 3NF vì
Xét C E F có E – thuộc tính không khóa (E chỉ nằm ở vế phải); E {C} và
C+= ACE U nên C E vi phạm 3NF.
4) Tách R về dạng 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc hàm.
Bƣớc 1: Tìm phủ tối thiểu của F.
278 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Theo phần 1, phủ tối thiểu của F là:
F = {AB C; AB D; C A; C E}
Bƣớc 2: Tìm khoá K của R.
Theo phần 2, K = BCFG và K = ABFG là các khóa của R.
Bƣớc 3: Tách R thành 3NF bảo toàn phụ thuộc hàm ta đƣợc:
= {R1(FG), R2 (ABC), R3(ABD), R4(CE)}
{K} Bƣớc 4: Lấy = {K} = {R1(FG), R2 (ABC), R3(ABD), R4(CE)}
Knên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm và có Ta có R1(FG)
kết nối không mất thông tin là:
= { K(BCFG), R2 (ABC), R3(ABD), R4(CE)}.
Hoặc = { K(ABFG), R2 (ABC), R3(ABD), R4(CE)}.
5) R Chƣa ở dạng chuẩn BCNF vì
Xét C E F có E {C} và C+= ACE U nên C E vi phạm BCNF.
R(ABCDEFG) F = {AB C; AB D; C A; C E}
R1(CE) F1 = {C E}
R2(ABCDFG) F2 = {AB C; AB D; C A }
R21(ABD) F21 = {AB D}
R22(ABCFG) F22 = {AB C; C A }
R221(CA) F221 = {C A}
R222(BCFG) F222 = Ø
6) Tách về dạng BCNF có kết nối không mất thông tin.
- Kết quả thu đƣợc = {R1, R21, R221, R222}. Vì R1, R221 có chung khóa là C nên
có thể gộp thành R20(CAE) với F20 = {C A; C E }.
- Phép tách cuối cùng đƣợc = { R20(CAE), R21(ABD),R222(BCFG)}.
Phạm Hùng Phú 279
Bài tập cơ sở dữ liệu
4.4.27. Cho SĐQH W =
với R = (A B C D E F G)
F = {AB C; BC D; D EF};
1) Tìm phủ tối thiểu của F.
2) Tìm tất cả các khoá của R.
3) R đã ở dạng chuẩn 3NF chƣa? Tại sao?
4) Tách R về dạng 3NF:
- Bảo toàn phụ thuộc hàm.
- Có kết nối không mất thông tin và bảo toàn phụ thuộc hàm
5) R đã ở dạng chuẩn BCNF chƣa? Tại sao?
6) Nếu R chƣa ở dạng chuẩn BCNF; Hãy tách về dạng BCNF có kết nối không
mất thông tin.
Giải:
1) Tìm phủ tối thiểu của F.
Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ chứa
1 thuộc tính.
F = {AB C; BC D; D E; D F};
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
Vì D E; D F có vế trái chỉ chứa 1 thuộc tính nên vế trái của chúng không chứa
các thuộc tính thừa.
- Xét AB C
+ Với A VT = AB ta có:
(VT - A)+ = B+ = B
C B nên A không thừa.
+ Với B VT = AB ta có:
(VT - B)+ = A+ = A
C A nên B không thừa.
- Xét BC D
+ Với B VT = BC ta có:
(VT - B)+ = C+ = C D C+ nên B không thừa.
280 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
+ Với C VT = BC ta có:
(VT - C)+ = B+ = B
D B nên C không thừa.
Sau khi loại bỏ các thuộc tính thừa ở vế trái ta đƣợc:
F = {AB C; BC D; D E; D F};
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
- Xét AB C
+ G = {BC D; D E; D F};
+ = AB
nên AB C không thừa. + C
- Xét BC D
+ G = {AB C; D E; D F};
+ = BC
+ D nên BC D không thừa.
- Xét D E
+ G = {AB C; BC D; D F};
+ = DF
+ E nên D E không thừa.
- Xét D F
+ G = {AB C; BC D; D E};
+ = DE
+ F nên D F không thừa.
Bƣớc 4: Vậy phủ tối thiểu F = {AB C; BC D; D E; D F};
2) Tìm tất cả các khoá của R.
- K = ABG (A, B chỉ có ở vế trái; G không nằm trong bất cứ phụ thuộc hàm nào
của F)
- K+ = (ABG)+ = ABCDEFG = U
Vậy K = ABG là khóa duy nhất của R.
3) R Chƣa ở dạng chuẩn 3NF vì
Phạm Hùng Phú 281
Bài tập cơ sở dữ liệu Xét D E F có E – thuộc tính không khóa (E chỉ nằm ở vế phải); E {D} và
D+= DEF U nên D E vi phạm 3NF.
4) Tách R về dạng:
- 3NF bảo toàn phụ thuộc hàm.
+ Vì G không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có R1(G)
+ Ứng với phụ thuộc hàm D E; D F ta có R2(DEF)
+ Ứng với các phụ thuộc hàm còn lại ta có R3(ABC), R4(BCD).
- 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc hàm
Bƣớc 1: Tìm phủ tối thiểu của F.
Theo phần 1, phủ tối thiểu của F là:
F = {AB C; BC D; D E; D F}
Bƣớc 2: Tìm khoá K của R.
Theo phần 2, K = ABG là khóa duy nhất của R.
Bƣớc 3: Tách R thành 3NF bảo toàn phụ thuộc hàm ta đƣợc:
= {R1(G), R2 (DEF), R3(ABC), R4(BCD)}
Bƣớc 4: Lấy = {K(ABG)} {K} = {R1(G), R2 (DEF), R3(ABC), R4(BCD)}
K(ABG) nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm và Ta có R1(G)
có kết nối không mất thông tin là:
= { K(ABG), R2 (DEF), R3(ABC), R4(BCD)}
5) R chƣa ở dạng chuẩn BCNF vì Xét D E F có E {D} và D+= DEF U nên
D E vi phạm BCNF.
282 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
R(ABCDEFG) F = {AB C; BC D; D E; D F}
R1(ABC) F1 = {AB C}
R2(ABDEFG) F2 = {AB D; D E; D F}
R21(ABD) F21 = {AB D}
R22(ABEFG) F22 = {AB E; AB F}
R221(ABE) F221 = {AB E}
R222(ABFG) F222 = {AB F}
R2221(ABF) F2221 = {AB F}
R2222(ABG) F2222 = Ø
6) Tách về dạng BCNF có kết nối không mất thông tin.
- Kết quả thu đƣợc = {R1, R21, R221, R2221, R2222}. Vì R1, R21, R221, R2221 có
chung khóa là AB nên có thể gộp thành R20(ABCDEF) với F20 = {AB C; AB D, AB E, AB F}.
- Phép tách cuối cùng đƣợc = {R20, R2222}.
Chú ý: bài này lên tách từ dƣới lên, tức là từ D F đến AB C
4.4.28. Cho SĐQH W =
với R = (A B C D E F G);
F = {AB CD; D BEF}.
1) Tìm phủ tối thiểu của F.
2) Tìm tất cả các khoá của R.
3) R đã ở dạng chuẩn 3NF chƣa? Tại sao?
4) Tách R về dạng 3NF:
- Bảo toàn phụ thuộc hàm.
- Có kết nối không mất thông tin và bảo toàn phụ thuộc hàm
Phạm Hùng Phú 283
Bài tập cơ sở dữ liệu 5) R đã ở dạng chuẩn BCNF chƣa? Tại sao?
6) Nếu R chƣa ở dạng chuẩn BCNF; Hãy tách về dạng BCNF có kết nối không
mất thông tin.
Giải:
1) Tìm phủ tối thiểu của F.
Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ chứa
1 thuộc tính.
F = {AB C; AB D; D B; D E; D F};
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
Vì D B; D E; D F có vế trái chỉ chứa 1 thuộc tính nên vế trái của chúng
không chứa các thuộc tính thừa.
- Xét AB C
+ Với A VT = AB ta có: (VT - A)+ = B+ = B
C B nên A không thừa.
+ Với B VT = AB ta có:
(VT - B)+ = A+ = A
C A nên B không thừa.
- Xét AB D
+ Với A VT = AB ta có:
(VT - A)+ = B+ = B
D B nên A không thừa.
+ Với B VT = AB ta có:
(VT - B)+ = A+ = A
D A nên B không thừa.
Sau khi loại bỏ các thuộc tính thừa ở vế trái ta đƣợc:
F = {AB C; AB D; D B; D E; D F};
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
- Xét AB C
+ G = {AB D; D B; D E; D F};
+ = ABDEF
284 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
+ C nên AB C không thừa.
- Xét AB D
+ G = {AB C; D B; D E; D F};
+ = ABC
+ D nên AB D không thừa.
- Xét D B
+ G = {AB C; AB D; D E; D F};
+ = DEF
+ B nên D B không thừa.
- Xét D E
+ G = {AB C; AB D; D B; D F};
+ = BDF
+ E nên D E không thừa.
- Xét D F
+ G = {AB C; AB D; D B; D E};
+ = BDE
+ F nên D F không thừa.
Bƣớc 4: Vậy phủ tối thiểu F = {AB C; AB D; D B; D E; D F};
2) Tìm tất cả các khoá của R.
+ G = BD + K = ABDG + Loại bỏ các thuộc tính thừa trong G.
Với B G ta có (K - B)+ = (ADG)+ = ABCDEFG = U nên B thừa, K = ADG. Với D G ta có (K - D)+ = (AG)+ = AG U nên D không thừa, K = AG.
- K = AG (A chỉ có ở vế trái; G không nằm trong bất cứ phụ thuộc hàm nào của F) - K+ = (AG)+ = AG U nên R có thể có nhiều khóa
Vậy K = ADG là một khóa của R.
Nếu thay đổi thứ tự loại bỏ các thuộc tính trong G ta đƣợc khóa khác là ABG.
Vậy R có 2 khóa là ADG và ABG.
Phạm Hùng Phú 285
Bài tập cơ sở dữ liệu 3) R Chƣa ở dạng chuẩn 3NF vì
Xét D E F có E – thuộc tính không khóa (E chỉ nằm ở vế phải); E {D} và
D+ = BDEF U nên D E vi phạm 3NF.
4) Tách R về dạng:
- 3NF bảo toàn phụ thuộc hàm.
+ Vì G không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có R1(G)
+ Ứng với phụ thuộc hàm AB C; AB D ta có R2(ABCD)
+ Ứng với phụ thuộc hàm D B; D E; D F ta có R3(BDEF)
- 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc hàm
Bƣớc 1: Tìm phủ tối thiểu của F.
Theo phần 1, phủ tối thiểu của F là:
F = {AB C; AB D; D B; D E; D F}
Bƣớc 2: Tìm khoá K của R.
Theo phần 2, K = ADG và K = ABG khóa của R.
Bƣớc 3: Tách R thành 3NF bảo toàn phụ thuộc hàm ta đƣợc:
= {R1(G), R2 (ABCD), R3(BDEF)}
{K} Bƣớc 4: Lấy = {K} = {R1(G), R2 (ABCD), R3(BDEF)}
K nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm và có kết Ta có R1(G)
nối không mất thông tin là:
= { K(ADG), R2 (ABCD), R3(BDEF)}.
Hoặc = { K(ABG), R2 (ABCD), R3(BDEF)}.
5) R đã ở dạng chuẩn BCNF chƣa? Tại sao?
R chƣa ở dạng chuẩn BCNF vì Xét D E F có E {D} và D+= BDEF U nên
D E vi phạm BCNF.
286 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
R(ABCDEFG) F = {AB C; AB D; D B; D E; D F}
R1(DF) F1 = {D F}
R2(ABCDEG) F2 = { AB C; AB D; D B; D E }
R21(DE) F21 = { D E}
R22(ABCDG) F22 = { AB C; AB D; D B }
R222(ABFG) F222 = { AB D; D B}
R221(ABC) F221 = {AB C}
R2221(DB) F2221 = {D B}
R2222(AFG) F2222 = Ø
6) Tách về dạng BCNF có kết nối không mất thông tin.
- Kết quả thu đƣợc = {R1, R21, R221, R2221, R2222}. Vì R1, R21, R2221 có chung
khóa là D nên có thể gộp thành R20(DBEF) với F20 = {D E; D F, D B}. - Phép tách cuối cùng đƣợc = {R20(DBEF), R221(ABC), R2222(AFG)}.
4.4.29. Cho SĐQH W =
với R = (A B C D E F G H)
F = {AB CDE; D E; DE F};
1) Tìm phủ tối thiểu của F.
2) Tìm tất cả các khoá của R.
3) R đã ở dạng chuẩn 3NF chƣa? Tại sao?
4) Tách R về dạng 3NF:
- Bảo toàn phụ thuộc hàm.
- Có kết nối không mất thông tin và bảo toàn phụ thuộc hàm
5) R đã ở dạng chuẩn BCNF chƣa? Tại sao?
6) Tách về dạng BCNF có kết nối không mất thông tin.
Phạm Hùng Phú 287
Bài tập cơ sở dữ liệu Giải:
1) Tìm phủ tối thiểu của F.
Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ chứa
1 thuộc tính.
F = {AB C; AB D; AB E; D E; DE F};
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
Vì D E có vế trái chỉ chứa 1 thuộc tính nên vế trái của nó không chứa các thuộc
tính thừa.
- Xét AB C
+ Với A VT = AB ta có:
(VT - A)+ = B+ = B
C B nên A không thừa.
+ Với B VT = AB ta có:
(VT - B)+ = A+ = A
C A nên B không thừa.
- Xét AB D
+ Với A VT = AB ta có:
(VT - A)+ = B+ = B
D B nên A không thừa.
+ Với B VT = AB ta có:
(VT - B)+ = A+ = A
D A nên B không thừa.
- Xét AB E
+ Với A VT = AB ta có:
(VT - A)+ = B+ = B
E B nên A không thừa.
+ Với B VT = AB ta có:
(VT - B)+ = A+ = A
E A nên B không thừa.
- Xét DE F
+ Với D VT = DE ta có:
288 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
(VT - D)+ = E+ = E
F E nên D không thừa.
+ Với E VT = DE ta có:
(VT - E)+ = D+ = DEF
F D+ nên E không thừa. Do đó ta thay DE F bằng D F
Sau khi loại bỏ các thuộc tính thừa ở vế trái ta đƣợc:
F = {AB C; AB D; AB E; D E; D F};
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
- Xét AB C
+ G = {AB D; AB E; D E; D F};
+ = ABDEF
+ C nên AB C không thừa.
- Xét AB D
+ G = {AB C; AB E; D E; D F};
+ = ABCE
+ D nên AB D không thừa.
- Xét AB E
+ G = {AB C; AB D; D E; D F};
+ = ABCDEF
+ E nên AB E thừa.
F = {AB C; AB D; D E; D F};
- Xét D E
+ G = {AB C; AB D; D F};
+ = DF
+ E nên D E không thừa.
- Xét D F
+ G = {AB C; AB D; D E};
+ = DE
+ F nên D F không thừa.
Phạm Hùng Phú 289
Bài tập cơ sở dữ liệu Bƣớc 4: Vậy phủ tối thiểu F = {AB C; AB D; D E; D F};
2) Tìm tất cả các khoá của R.
- K = ABGH (A, B chỉ có ở vế trái; G, H không nằm trong bất cứ phụ thuộc
hàm nào của F)
- K+ = (ABGH)+ = ABCDEFGH = U
Vậy K = ABGH là khóa duy nhất của R.
3) R Chƣa ở dạng chuẩn 3NF vì
Xét D E F có E – thuộc tính không khóa (E chỉ nằm ở vế phải); E {D} và
D+= DEF U nên D E vi phạm 3NF.
4) Tách R về dạng:
- 3NF bảo toàn phụ thuộc hàm.
+ Vì G, H không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có
R1(GH)
+ Ứng với phụ thuộc hàm AB C; AB D ta có R2(ABCD)
+ Ứng với phụ thuộc hàm còn lại ta có R3(DE), R4(DF)
- 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc hàm
Bƣớc 1: Tìm phủ tối thiểu của F.
Theo phần 1, phủ tối thiểu của F là:
F = {AB C; AB D; D E; D F}
Bƣớc 2: Tìm khoá K của R.
Theo phần 2, K = ABGH là một khóa duy nhất của R.
Bƣớc 3: Tách R thành 3NF bảo toàn phụ thuộc hàm ta đƣợc:
= {R1(GH), R2 (ABCD), R3(DE), R4(DF)}
{K(ABGH)} Bƣớc 4: Lấy = {K} = {R1(GH), R2 (ABCD), R3(DE), R4(DF)}
K(ABGH) nên kết quả phép tách R về 3NF bảo toàn phụ thuộc Ta có R1(GH)
hàm và có kết nối không mất thông tin là:
= { K(ABGH), R2 (ABCD), R3(DE), R4(DF)}
290 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
5) R chƣa ở dạng chuẩn BCNF vì Xét D E F có E {D} và D+= DEF U nên
D E vi phạm BCNF.
R(ABCDEFGH) F = {AB C; AB D; D E; D F}
R1(DF) F1= {D F}
R2(ABCDEGH) F2 = { AB C; AB D; D E}
R21(DE) F21 = {D E}
R22(ABCDGH) F22 = {AB C; AB D}
R221(ABD) F221 = {AB D}
R222(ABCGH) F222 = {AB C}
R2221(ABC) F2221 = {AB C}
R2222(ABGH) F2222 = Ø
6) Tách về dạng BCNF có kết nối không mất thông tin.
- Kết quả thu đƣợc = {R1, R21, R221, R2221, R2222}. Vì R1, R21 có chung khóa là
D nên có thể gộp thành R20(DEF) với F20 = { D E; D F}; R221, R2221 có
chung khóa là AB nên có thể gộp thành R220(ABCD) với F220 = { AB D;
AB C};
- Phép tách cuối cùng đƣợc = {R20(DEF), R20(ABCD), R2222(ABGH)}.
4.4.30. Cho SĐQH W =
với R = (A B C D E F G);
F = {AB C; C DEF; D EF; DE F}.
1) Tìm phủ tối thiểu của F.
2) Tìm tất cả các khoá của R.
3) R đã ở dạng chuẩn 3NF chƣa? Tại sao?
4) Tách R về dạng 3NF:
Phạm Hùng Phú 291
Bài tập cơ sở dữ liệu - Bảo toàn phụ thuộc hàm.
- Có kết nối không mất thông tin và bảo toàn phụ thuộc hàm
5) R đã ở dạng chuẩn BCNF chƣa? Tại sao?
6) Nếu R chƣa ở dạng chuẩn BCNF; Hãy tách về dạng BCNF có kết nối không
mất thông tin.
Giải:
1) Tìm phủ tối thiểu của F.
Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ chứa
1 thuộc tính.
F = {AB C; C D; C E; C F; D E; D F; DE F};
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
Vì C D; C E; C F; D E; D F có vế trái chỉ chứa 1 thuộc tính nên vế
trái của chúng không chứa các thuộc tính thừa.
- Xét AB C
+ Với A VT = AB ta có: (VT - A)+ = B+ = B
C B nên A không thừa.
+ Với B VT = AB ta có: (VT - B)+ = A+ = A
C A nên B không thừa.
- Xét DE F
+ Với D VT = DE ta có: (VT - D)+ = E+ = E
F E nên D không thừa.
+ Với E VT = DE ta có:
(VT - E)+ = D+ = DEF
F DEF nên F thừa VT = D
Sau khi loại bỏ các thuộc tính thừa ở vế trái ta đƣợc:
F = {AB C; C D; C E; C F; D E; D F};
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
- Xét AB C
292 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
+ G = {C D; C E; C F; D E; D F};
+ = AB
+ C nên AB C không thừa.
- Xét C D
+ G = {AB C; C E; C F; D E; D F};
+ = CEF
+ D nên C D không thừa.
- Xét C E
+ G = {AB C; C D; C F; D E; D F};
+ = CDEF
+ E nên C E thừa.
F = {AB C; C D; C F; D E; D F};
- Xét C F
+ G = {AB C; C D; D E; D F};
+ = CDEF
+ F nên C F thừa.
F = {AB C; C D; D E; D F};
- Xét D E
+ G = {AB C; C D; D F};
+ = DF
+ E nên D E không thừa.
- Xét D F
+ G = {AB C; C D; D E};
+ = DE
+ F nên D F không thừa.
Bƣớc 4: Vậy phủ tối thiểu F = {AB C; C D; D E; D F};
2) Tìm tất cả các khoá của R.
Phạm Hùng Phú 293
Bài tập cơ sở dữ liệu - K = ABG (A, B chỉ có ở vế trái; G không nằm trong bất cứ phụ thuộc hàm nào
của F)
- K+ = (ABG)+ = ABCDEFG = U
Vậy K = ABG là khóa duy nhất của R.
3) R Chƣa ở dạng chuẩn 3NF vì
Xét D E F có E – thuộc tính không khóa (E chỉ nằm ở vế phải); E {D} và
D+= DEF U nên D E vi phạm 3NF.
4) Tách R về dạng:
- 3NF bảo toàn phụ thuộc hàm.
+ Vì G không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có R1(G)
+ Ứng với phụ thuộc hàm D E; D F ta có R2(DEF)
+ Ứng với phụ thuộc hàm còn lại ta có R3(ABC), R4(CD)
- 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc hàm
Bƣớc 1: Tìm phủ tối thiểu của F.
Theo phần 1, phủ tối thiểu của F là:
F = {AB C; C D; D E; D F}
Bƣớc 2: Tìm khoá K của R.
Theo phần 2, K = ABG là một khóa duy nhất của R.
Bƣớc 3: Tách R thành 3NF bảo toàn phụ thuộc hàm ta đƣợc:
= {R1(G), R2 (DEF), R3(ABC), R4(CD)}
{K(ABG)} Bƣớc 4: Lấy = {K} = {R1(G), R2 (DEF), R3(ABC), R4(CD)}
K(ABG) nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm và Ta có R1(G)
có kết nối không mất thông tin là:
= { K(ABG), R2 (DEF), R3(ABC), R4(CD)}
5) R chƣa ở dạng chuẩn BCNF vì Xét D E F có E {D} và D+= DEF U nên
D E vi phạm BCNF.
294 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
R(ABCDEFG) F = {AB C; C D; D E; D F}
R1(DF) F1 = {D F}
R2(ABCDEG) F2 = { AB C; C D; D E }
R21(DE) F21 = {D E}
R22(ABCDG) F22 = {AB C; C D}
R221(CD) F221 = {C D}
R222(ABCG) F222 = {AB C}
R2221(ABC) F2221 = {AB C}
R2222(ABG) F2222 = Ø
6) Tách về dạng BCNF có kết nối không mất thông tin.
- Kết quả thu đƣợc = {R1, R21, R221, R2221, R2222}. Vì R1, R21 có chung khóa là D
F}.
nên có thể gộp thành R20(DEF) với F20 = {D E; D - Phép tách cuối cùng đƣợc = {R20(DEF), R221(CD), R2221(ABC), R2222(ABG)}.
4.4.31. Cho SĐQH W =
với R = (A B C D E F G);
F = {AB C; C B; A DE; D E; DE F}.
1) Tìm phủ tối thiểu của F.
2) Tìm tất cả các khoá của R.
3) R đã ở dạng chuẩn 3NF chƣa? Tại sao?
4) Tách R về dạng 3NF:
- Bảo toàn phụ thuộc hàm.
- Có kết nối không mất thông tin và bảo toàn phụ thuộc hàm
5) R đã ở dạng chuẩn BCNF chƣa? Tại sao?
Phạm Hùng Phú 295
Bài tập cơ sở dữ liệu 6) Nếu R chƣa ở dạng chuẩn BCNF; Hãy tách về dạng BCNF có kết nối không
mất thông tin.
Giải
1) Tìm phủ tối thiểu của F.
Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ chứa
1 thuộc tính.
F = {AB C; C B; A D; A E; D E; DE F};
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
Vì C B; A D; A E; D E có vế trái chỉ chứa 1 thuộc tính nên vế trái của
chúng không chứa các thuộc tính thừa.
- Xét AB C
+ Với A VT = AB ta có: (VT - A)+ = B+ = B
C B nên A không thừa.
+ Với B VT = AB ta có:
(VT - B)+ = A+ = ADEF
C ADEF nên B không thừa.
- Xét DE F
+ Với D VT = DE ta có: (VT - D)+ = E+ = E
F E nên D không thừa.
+ Với E VT = DE ta có:
(VT - E)+ = D+ = DEF
F DEF nên E thừa VT = D
Sau khi loại bỏ các thuộc tính thừa ở vế trái ta đƣợc:
F = {AB C; C B; A D; A E; D E; D F};
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
- Xét AB C
+ G = {C B; A D; A E; D E; D F};
+ = ABDEF
nên AB C không thừa. + C
296 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
- Xét C B
+ G = {AB C; A D; A E; D E; D F};
+ = C
+ B nên C B không thừa.
- Xét A D
+ G = {AB C; C B; A E; D E; D F};
+ = AE
+ D nên A D không thừa.
- Xét A E
+ G = {AB C; C B; A D; D E; D F};
+ = ADEF
+ E nên A E thừa.
F = {AB C; C B; A D; D E; D F};
- Xét D E
+ G = {AB C; C B; A D; D F};
+ = DF
+ E nên D E không thừa.
- Xét D F
+ G = {AB C; C B; A D; D E};
+ = DE
+ F nên D F không thừa.
Bƣớc 4: Vậy phủ tối thiểu F = {AB C; C B; A D; D E; D F};
2) Tìm tất cả các khoá của R.
+ G = BCD + K = ABCDG + Loại bỏ các thuộc tính thừa trong G.
Với B G ta có (K - B)+ = (ACDG)+ = ABCDEFG = U nên B thừa,
- K = AG (A chỉ có ở vế trái; G không nằm trong bất cứ phụ thuộc hàm nào của F) - K+ = (AG)+ = AG U nên R có thể có nhiều khóa
Phạm Hùng Phú 297
Với C G ta có (K - C)+ = (ADG)+ = ADEFG U nên C không thừa, K = ACDG. Với D G ta có (K - D)+ = (ACG)+ = ABCDEFG = U nên C thừa, K = ACG.
Bài tập cơ sở dữ liệu K = ACDG.
Vậy K = ACG là một khóa của R.
Nếu thay đổi thứ tự loại bỏ các thuộc tính trong G ta đƣợc khóa khác là ABG.
Vậy R có 2 khóa là ACG và ABG.
3) R đã ở dạng chuẩn 3NF chƣa? Tại sao?
R Chƣa ở dạng chuẩn 3NF vì
Xét D E F có E – thuộc tính không khóa (E chỉ nằm ở vế phải); E {D} và
D+= DEF U nên D E vi phạm 3NF.
4) Tách R về dạng:
- 3NF bảo toàn phụ thuộc hàm.
+ Vì G không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có R1(G)
+ Ứng với phụ thuộc hàm AB C; C B ta có R2(ABC)
+ Ứng với phụ thuộc hàm D E; D F ta có R3(DEF)
+ Ứng với phụ thuộc hàm còn lại ta có R4(AD)
- 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc hàm
Bƣớc 1: Tìm phủ tối thiểu của F.
Theo phần 1, phủ tối thiểu của F là:
F = {AB C; C B; A D; D E; D F}
Bƣớc 2: Tìm khoá K của R.
Theo phần 2, K = ACG là một khóa của R.
Bƣớc 3: Tách R thành 3NF bảo toàn phụ thuộc hàm ta đƣợc:
= {R1(G), R2 (ABC), R3(DEF), R4(AD)}
{K(ACG)} Bƣớc 4: Lấy = {K} = {R1(G), R2 (ABC), R3(DEF), R4(AD)}
K(ACG) nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm và Ta có R1(G)
có kết nối không mất thông tin là:
298 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
= { K(ACG), R2 (ABC), R3(DEF), R4(AD)}
5) R chƣa ở dạng chuẩn BCNF vì R chƣa ở dạng chuẩn 3NF.
R(ABCDEFG) F = {AB C; C B; A D; D E; D F}
R1(DF) F1 = {D F}
R2(ABCDEG) F2 = { AB C; C B; A D; D E }
R21(DE) F21 = {D E}
R22(ABCDG) F22 = {AB C; C B; A D}
R221(AD) F221 = {A D}
R222(ABCG) F222 = { AB C; C B}
R2222(ABG) F2222 = Ø
R2221(CB) F2221 = {C B}
6) Tách về dạng BCNF có kết nối không mất thông tin.
- Kết quả thu đƣợc = {R1, R21, R221, R2221, R2222}. Vì R1, R21, có chung khóa là D
nên có thể gộp thành R20(DEF) với F20 = { D E; D F}.
- Phép tách cuối cùng đƣợc = { R20(DEF), R221(AD), R2221(CB), R2222(ABG)}.
4.4.32. Cho SĐQH W =
với R = (A B C D E F G)
F = {ABE C; C EA; E FG};
1) Tìm phủ tối thiểu của F.
2) Tìm tất cả các khoá của R.
3) R đã ở dạng chuẩn 3NF chƣa? Tại sao?
4) Tách R về dạng 3NF:
- Bảo toàn phụ thuộc hàm.
- Có kết nối không mất thông tin và bảo toàn phụ thuộc hàm
Phạm Hùng Phú 299
Bài tập cơ sở dữ liệu 5) R đã ở dạng chuẩn BCNF chƣa? Tại sao?
6) Nếu R chƣa ở dạng chuẩn BCNF; Hãy tách về dạng BCNF có kết nối không
mất thông tin.
Giải
1) Tìm phủ tối thiểu của F.
Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ chứa
một thuộc tính.
F = {ABE C; C E; C A; E F; E G};
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
Vì C E; C A; E F; E G có vế trái chỉ chứa 1 thuộc tính nên vế trái của
chúng không chứa các thuộc tính thừa.
- Xét ABE C
+ Với A VT = ABE ta có:
(VT - A)+ = (BE)+ = BEFG
C BEFG nên A không thừa.
+ Với B VT = ABE ta có:
(VT - B)+ = (AE)+ = AEFG
C AEFG nên B không thừa.
+ Với E VT = ABE ta có:
(VT - E)+ = (AB)+ = AB
C AB nên E không thừa.
Sau khi loại bỏ các thuộc tính thừa ở vế trái ta đƣợc:
F = {ABE C; C E; C A; E F; E G};
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
- Xét ABE C
+ G = {C E; C A; E F; E G};
+ = ABEFG
+ C nên ABE C không thừa.
- Xét C E
+ G = {ABE C; C A; E F; E G};
300 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
+ = AC
+ E nên C E không thừa.
- Xét C A
+ G = {ABE C; C E; E F; E G};
+ = CEFG
+ A nên C A không thừa.
- Xét E F
+ G = {ABE C; C E; C A; E G};
+ = EG
+ F nên E F không thừa.
- Xét E G
+ G = {ABE C; C E; C A; E F};
+ = EF
+ G nên E G không thừa.
Bƣớc 4: Vậy phủ tối thiểu F = {ABE C; C E; C A; E F; E G};
2) Tìm tất cả các khoá của R.
+ G = ACE + K = ABCDE + Loại bỏ các thuộc tính thừa trong G.
Với A G ta có (K - A)+ = (BCDE)+ = ABCDEFG = U nên A thừa, K =
- K = BD (B chỉ có ở vế trái; D không nằm trong bất cứ phụ thuộc hàm nào của F) - K+ = (BD)+ = BD U nên R có thể có nhiều khóa
Với C G ta có (K - C)+ = (BDE)+ = BDEFG U nên C không thừa, K =
BCDE.
Với E G ta có (K - E)+ = (BCD)+ = ABCDEFG = U nên E thừa, K =
BCDE.
BCD.
Vậy K = BCD là một khóa của R.
Nếu thay đổi thứ tự loại bỏ các thuộc tính trong G ta đƣợc khóa khác là ABDE.
Phạm Hùng Phú 301
Bài tập cơ sở dữ liệu Vậy R có 2 khóa là BCD và ABDE.
3) R Chƣa ở dạng chuẩn 3NF vì
Xét E G F có G – thuộc tính không khóa (G chỉ nằm ở vế phải); G {E} và
E+= EG U nên E G vi phạm 3NF.
4) Tách R về dạng:
- 3NF bảo toàn phụ thuộc hàm.
+ Vì D không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có R1(D)
+ Ứng với phụ thuộc hàm ABE C; C E; C A ta có R2(ABCE)
+ Ứng với phụ thuộc hàm E F; E G ta có R3(EFG)
- 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc hàm
Bƣớc 1: Tìm phủ tối thiểu của F.
Theo phần 1, phủ tối thiểu của F là:
F = {ABE C; C E; C A; E F; E G}
Bƣớc 2: Tìm khoá K của R.
Theo phần 2, K = BCD là một khóa của R.
Bƣớc 3: Tách R thành 3NF bảo toàn phụ thuộc hàm ta đƣợc:
= {R1(D), R2 (ABCE), R3(EFG)}
{K(BCD)} Bƣớc 4: Lấy = {K} = {R1(D), R2 (ABCE), R3(EFG)}
K(BCD) nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm và Ta có R1(D)
có kết nối không mất thông tin là:
= { K(BCD), R2 (ABCE), R3(EFG)}
5) R Chƣa ở dạng chuẩn BCNF
Vì xét E G F có G {E} và E+= EG U nên E G vi phạm BCNF.
302 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
R(ABCDEFG)
F = {ABE C; C E; C A; E
F; E
G}
R1(EG)
R2(ABCDEF)
G}
F}
F1 = {E
F2 = {ABE C; C E; C A; E
R21(EF)
F}
F21 = {E
R22(ABCDE) F22 = { ABE C; C E; C A }
R221(CA) F221 = {C A}
R222(BCDE) F222 = {C E}
R2221(CE) F2221 = {C E}
R2222(BCD) F2222 =
6) Tách về dạng BCNF có kết nối không mất thông tin.
- Kết quả thu đƣợc = {R1, R21, R221, R2221 , R2222}. Vì R1, R21 có chung khóa là
E nên có thể gộp thành R20(EFG) với F20 = {E F, E G}; R221, R2221 có chung
khóa là C nên có thể gộp thành R220(CAE) với F220 = {C A, C E}.
- Phép tách cuối cùng đƣợc = {R20(EFG), R220(CAE), R2222(BCD)}.
4.4.33. Cho SĐQH W =
với R = (A B C D E F G H)
F = {CD AB; A E; B F; AB EH};
1) Tìm phủ tối thiểu của F.
2) Tìm tất cả các khoá của R.
3) R đã ở dạng chuẩn 3NF chƣa? Tại sao?
4) Tách R về dạng 3NF:
- Bảo toàn phụ thuộc hàm.
- Có kết nối không mất thông tin và bảo toàn phụ thuộc hàm
5) R đã ở dạng chuẩn BCNF chƣa? Tại sao?
6) Nếu R chƣa ở dạng chuẩn BCNF; Hãy tách về dạng BCNF có kết nối không
mất thông tin.
Giải
1) Tìm phủ tối thiểu của F.
Phạm Hùng Phú 303
Bài tập cơ sở dữ liệu Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ chứa
1 thuộc tính.
F = {CD A; CD B; A E; B F; AB E; AB H };
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
Vì A E; B F có vế trái chỉ chứa 1 thuộc tính nên vế trái của chúng không chứa
các thuộc tính thừa.
- Xét CD A
+ Với C VT = CD ta có: (VT - C)+ = D+ = D
A D nên C không thừa.
+ Với D VT = CD ta có: (VT - D)+ = C+ = C
A C nên D không thừa.
- Xét CD B
+ Với C VT = CD ta có: (VT - C)+ = D+ = D
B D nên C không thừa.
+ Với D VT = CD ta có: (VT - D)+ = C+ = C
B C nên D không thừa.
- Xét AB E
+ Với A VT = AB ta có: (VT - A)+ = B+ = BF
E BF nên A không thừa.
+ Với B VT = AB ta có: (VT - B)+ = A+ = AE
E AE nên B thừa VT = A.
F = {CD A; CD B; A E; B F; AB H };
- Xét AB H
+ Với A VT = AB ta có: (VT - A)+ = B+ = BF
304 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
H BF nên A không thừa.
+ Với B VT = AB ta có: (VT - B)+ = A+ = AE
H AE nên B không thừa.
Sau khi loại bỏ các thuộc tính thừa ở vế trái ta đƣợc:
F = {CD A; CD B; A E; B F; AB H};
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
- Xét CD A
+ G = {CD B; A E; B F; AB H};
+ = BCDF
nên CD A không thừa. + A
- Xét CD B
+ G = {CD A; A E; B F; AB H};
+ = ACDE
nên CD B không thừa. + B
- Xét A E
+ G = {CD A; CD B; B F; AB H};
+ = A
+ E nên A E không thừa.
- Xét B F
+ G = {CD A; CD B; A E; AB H};
+ = B
+ F nên B F không thừa.
- Xét AB H
+ G = {CD A; CD B; A E; B F};
+ = ABEF
+ H nên AB H không thừa.
Bƣớc 4: Vậy phủ tối thiểu F = {CD A; CD B; A E; B F; AB H};
2) Tìm tất cả khoá của R.
Phạm Hùng Phú 305
Bài tập cơ sở dữ liệu - K = CDG (C, D chỉ có ở vế trái; G không nằm trong bất cứ phụ thuộc hàm nào
của F)
- K+ = (CDG)+ = ABCDEFGH = U
Vậy K = CDG là khoá duy nhất của R.
3) R Chƣa ở dạng chuẩn 3NF vì
Xét A E F có E – thuộc tính không khóa (E chỉ nằm ở vế phải); E {A} và
A+= AE U nên A E vi phạm 3NF.
4) Tách R về dạng:
- 3NF bảo toàn phụ thuộc hàm.
+ Vì G không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có R1(G)
+ Ứng với phụ thuộc hàm CD A; CD B ta có R2(ABCD)
+ Ứng với phụ thuộc hàm còn lại ta có R3(AE), R4(BF), R5(ABH).
- 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc hàm
Bƣớc 1: Tìm phủ tối thiểu của F.
Theo phần 1, phủ tối thiểu của F là:
F = {CD A; CD B; A E; B F; AB H}
Bƣớc 2: Tìm khoá K của R.
Theo phần 2, K = CDG là một khóa duy nhất của R.
Bƣớc 3: Tách R thành 3NF bảo toàn phụ thuộc hàm ta đƣợc:
= {R1(G), R2 (ABCD), R3(AE), R4(BF), R5(ABH)}
Bƣớc 4: Lấy = {K}
{K(CDG)} = {R1(G), R2 (ABCD), R3(AE), R4(BF), R5(ABH)}
K(CDG) nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm và Ta có R1(G)
có kết nối không mất thông tin là:
= { K(CDG), R2 (ABCD), R3(AE), R4(BF), R5(ABH)}
5) R Chƣa ở dạng chuẩn BCNF vì
Xét A E F có E {A} và A+= AE U nên A E vi phạm BCNF.
6) Tách về dạng BCNF có kết nối không mất thông tin.
306 Phạm Hùng Phú
R(ABCDEFGH) F = {CD A; CD B; A E; B F; AB H};
R1(ABH) F1 = {AB H}
R2(ABCDEFG) F2= { CD A; CD B; A E; B F}
R21(BF) F21 = {B F}
R22(ABCDEG) F22= {CD A; CD B; A E}
R221(AE) F221= {A E}
R222(ABCDG) F222= {CD A; CD B}
R2221(CDA) F2221= {CD A}
R2222(BCDG) F2222= {CD B}
R22221(CDB) F22221= {CD B}
R22222(CDG) F22222= Ø
Bài tập cơ sở dữ liệu
- Kết quả thu đƣợc = {R1, R21, R221, R2221, R22221, R22222}. Vì R2221, R22221 có
chung khóa là CD nên có thể gộp thành R20(ABCD) với F20 = { CD A,
CD B}.
- Phép tách cuối cùng đƣợc
= {R1(ABH), R21(BF), R221(AE), R20(ABCD), R22222(CDG)}.
4.4.34. Cho SĐQH W =
với R = (A B C D E F G);
F = {AB C; BC DF; DC EF}.
1) Tìm phủ tối thiểu của F.
2) Tìm tất cả các khoá của R.
3) R đã ở dạng chuẩn 3NF chƣa? Tại sao?
4) Tách R về dạng 3NF:
- Bảo toàn phụ thuộc hàm.
- Có kết nối không mất thông tin và bảo toàn phụ thuộc hàm
Phạm Hùng Phú 307
Bài tập cơ sở dữ liệu 5) R đã ở dạng chuẩn BCNF chƣa? Tại sao?
6) Nếu R chƣa ở dạng chuẩn BCNF; Hãy tách về dạng BCNF có kết nối không
mất thông tin.
Giải
1) Tìm phủ tối thiểu của F.
Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ chứa
1 thuộc tính.
F = {AB C; BC D; BC F; DC E; DC F};
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
- Xét AB C
+ Với A VT = AB ta có:
(VT - A)+ = B+ = B
C B nên A không thừa.
+ Với B VT = AB ta có:
(VT - B)+ = A+ = A
C A nên B không thừa.
- Xét BC D
+ Với B VT = BC ta có:
(VT - B)+ = C+ = C
D C nên B không thừa.
+ Với C VT = BC ta có:
(VT - C)+ = B+ =B
D B nên C không thừa.
- Xét BC F
+ Với B VT = BC ta có:
(VT - B)+ = C+ = C
F C nên B không thừa.
+ Với C VT = BC ta có:
(VT - C)+ = B+ =B
F B nên C không thừa.
- Xét DC E
308 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
+ Với D VT = DC ta có:
(VT - D)+ = C+ = C
E C nên D không thừa.
+ Với C VT = DC ta có:
(VT - C)+ = D+ =D
E D nên C không thừa.
- Xét DC F
+ Với D VT = DC ta có:
(VT - D)+ = C+ = C
F C nên D không thừa.
+ Với C VT = DC ta có:
(VT - C)+ = D+ =D
F D nên C không thừa.
Sau khi loại bỏ các thuộc tính thừa ở vế trái ta đƣợc:
F = {AB C; BC D; BC F; DC E; DC F};
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
- Xét AB C
G = {BC D; BC F; DC E; DC F}
=AB
C nên AB C không thừa.
- Xét BC D
G = {AB C; BC F; DC E; DC F}
= BCF
D nên BC D không thừa.
- Xét BC F
G = {AB C; BC D; DC E; DC F};
= BCDEF
F nên BC F thừa.
F = {AB C; BC D; DC E; DC F};
- Xét DC E
Phạm Hùng Phú 309
Bài tập cơ sở dữ liệu
G = {AB C; BC D; DC F};
= DCF
nên DC E không thừa. E
- Xét DC F
G = {AB C; BC D; DC E};
= DCE
F nên DC F không thừa.
Bƣớc 4: Vậy phủ tối thiểu F = {AB C; BC D; DC E; DC F};
2) Tìm tất cả khoá của R.
- K = ABG (A, B chỉ có ở vế trái; G không nằm trong bất cứ phụ thuộc hàm nào
của F)
- K+ = (ABG)+ = ABCDEFG = U
- V ậy K = ABG là khoá duy nhất của R.
3) R Chƣa ở dạng chuẩn 3NF vì
Xét DC F F có F – thuộc tính không khóa (F chỉ nằm ở vế phải); F {DC} và
(DC)+= DCEF U nên D F vi phạm 3NF.
4) Tách R về dạng:
- 3NF bảo toàn phụ thuộc hàm.
+ Vì G không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có R1(G)
+ Ứng với phụ thuộc hàm DC E; DC F ta có R2(CDEF)
+ Ứng với phụ thuộc hàm còn lại ta có R3(ABC), R4(BCD)
- 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc hàm
Bƣớc 1: Tìm phủ tối thiểu của F.
Theo phần 1, phủ tối thiểu của F là:
F = {AB C; BC D; DC E; DC F}
Bƣớc 2: Tìm khoá K của R.
Theo phần 2, K = ABG là một khóa của R.
Bƣớc 3: Tách R thành 3NF bảo toàn phụ thuộc hàm ta đƣợc:
310 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
= {R1(G), R2 (CDEF), R3(ABC), R4(BCD)}
Bƣớc 4: Lấy = {K}
{K(ABG)} = {R1(G), R2 (CDEF), R3(ABC), R4(BCD)}
K(ABG) nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm và Ta có R1(G)
có kết nối không mất thông tin là:
= { K(ABG), R2 (CDEF), R3(ABC), R4(BCD)}
5) R Chƣa ở dạng chuẩn BCNF vì
Xét DC F F có F; F {DC} và (DC)+= DCEF U nên D F vi phạm BCNF.
R(ABCDEFG) F = {AB C; BC D; DC E; DC F};
R1(DCF) F1 = {DC F}
R2(ABCDEG) F2 = { AB C; BC D; DC E }
R21(DC) F21 = {DC E}
R22(ABEFG) F22 = { AB C; BC D}
R221(BCD) F221 = {BC D}
R222(ABFG) F222 = { AB C}
R2221(ABC) F2221 = { AB C }
R2222(ABG) F2222 = Ø
6) Tách về dạng BCNF có kết nối không mất thông tin.
- Kết quả thu đƣợc = {R1, R21, R221, R2221, R2222}. Vì R1, R21 có chung khóa là
DC nên có thể gộp thành R20(CDEF) với F20 = { DC F, DC F}.
- Phép tách cuối cùng đƣợc = {R20, R221(BCD), R2221(ABC), R2222(ABG)}.
4.4.35. Cho SĐQH W =
với R = (A B C D E F G)
F = { EF CD; D F; C BD};
1) Tìm phủ tối thiểu của F.
Phạm Hùng Phú 311
Bài tập cơ sở dữ liệu 2) Tìm tất cả các khoá của R.
3) R đã ở dạng chuẩn 3NF chƣa? Tại sao?
4) Tách R về dạng 3NF:
- Bảo toàn phụ thuộc hàm.
- Có kết nối không mất thông tin và bảo toàn phụ thuộc hàm
5) R đã ở dạng chuẩn BCNF chƣa? Tại sao?
6) Nếu R chƣa ở dạng chuẩn BCNF; Hãy tách về dạng BCNF có kết nối không
mất thông tin.
Giải
1) Tìm phủ tối thiểu của F.
Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có
một thuộc tính.
F = { EF C; EF D; D F; C B; C D};
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
Vì D F; C B; C D có vế trái chỉ chứa một thuộc tính nên vế trái của nó
không chứa các thuộc tính thừa.
- Xét EF C
+ Với E VT = EF ta có: (VT - E)+ = F+ = F
C F nên E không thừa
+ Với F VT = EF ta có: (VT - F)+ = E+ = E
C E nên F không thừa.
- Xét EF D
+ Với E VT = EF ta có: (VT - E)+ = F+ = F
D F nên E không thừa.
+ Với F VT = EF ta có: (VT - F)+ = E+ = E
D E nên F không thừa.
Sau khi loại bỏ các thuộc tính thừa ở vế trái ta đƣợc:
312 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
F = {EF C; EF D; D F; C B; C D};
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
- Xét EF C
+ G = {EF D; D F; C B; C D};
+ = DEF
nên EF C không thừa. + C
- Xét EF D
+ G = {EF C; D F; C B; C D};
+ = BCDEF
nên EF D thừa. + D
F = {EF C; D F; C B; C D};
- Xét D F
+ G = {EF C; C B; C D};
+ = D
+ F nên D F không thừa.
- Xét C B
+ G = {EF C; D F; C D};
+ = CDF
+ B nên C B không thừa.
- Xét C D
+ G = {EF C; D F; C B};
+ = BC
+ D nên C D không thừa.
Bƣớc 4: Vậy phủ tối thiểu F = {EF C; D F; C B; C D};
2) Tìm tất cả các khoá của R.
- K =AEG (E chỉ có ở vế trái; A, G không nằm trong bất cứ phụ thuộc hàm nào
của F)
+ Vậy R có thể có nhiều khóa
- K+ = (AEG)+ = AEG U
Phạm Hùng Phú 313
+ G = CDF + K = ADGCEF + Loại bỏ các thuộc tính thừa trong G.
Với C G ta có (K - C)+ = (ADEFG)+ = ABCDEFG = U nên C thừa,
Bài tập cơ sở dữ liệu
Với D G ta có (K - D)+ = (AEFG)+ = ABCDEFG = U nên D thừa,
K = ADEFG.
Với F G ta có (K - F)+ = (AEG)+ = AEG U nên F không thừa,
K = AEFG.
K = AEFG.
Vậy K = AEFG là một khóa của R.
Nếu thay đổi thứ tự loại bỏ các thuộc tính trong G ta đƣợc khóa khác là ACEG và
ADEG.
Vậy R có 3 khóa là AEFG, ACEG và ADEG.
3) R Chƣa ở dạng chuẩn 3NF vì
Xét C B F có B – thuộc tính không khóa (B chỉ nằm ở vế phải); B {C} và
C+= CBDF U nên C B vi phạm 3NF.
4) Tách R về dạng:
- 3NF bảo toàn phụ thuộc hàm.
+ Vì A, G không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có
R1(AG)
+ Ứng với phụ thuộc hàm C B; C D ta có R2(BCD)
+ Ứng với phụ thuộc hàm còn lại ta có R3(CEF), R4(DF)
- 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc hàm
Bƣớc 1: Tìm phủ tối thiểu của F.
Theo phần 1, phủ tối thiểu của F là:
F = {EF C; D F; C B; C D}
Bƣớc 2: Tìm khoá K của R.
Theo phần 2, K = ADEG là một khóa của R.
Bƣớc 3: Tách R thành 3NF bảo toàn phụ thuộc hàm ta đƣợc:
= {R1(AG), R2 (BCD), R3(CEF), R4(DF)}
314 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Bƣớc 4: Lấy = {K}
{K} = {R1(AG), R2 (BCD), R3(CEF), R4(DF)}
K nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm và có Ta có R1(AG)
kết nối không mất thông tin là:
= { K(AEEG), R2 (BCD), R3(CEF), R4(DF)};
Hoặc = { K(ADEG), R2 (BCD), R3(CEF), R4(DF)};
Hoặc = { K(ACEG), R2 (BCD), R3(CEF), R4(DF)}.
5) R Chƣa ở dạng chuẩn BCNF vì
Xét C B F có B {C} và C+= CBDF U nên C B vi phạm BCNF.
R(ABCDEFG) F = {EF C; D F; C B; C D}
R1(CD) F1 = {C D}
R2(ABCEFG) F2 = { EF C; C F; C B}
R21(CB) F21 = {C B}
R22(ACEFG) F22 = { EF C; C F}
R221(CF) F221 = {C F}
R222(ACEG) F222 = Ø
6) Tách về dạng BCNF có kết nối không mất thông tin.
- Kết quả thu đƣợc = {R1, R21, R221, R222}. Vì R1, R21, R221 có chung khóa là C
nên có thể gộp thành R20(CBDF) ứng với F20 = { C F , C B , C D}
- Phép tách cuối cùng đƣợc = { R20(CBDF), R222(ACEG)}.
4.4.36. Cho SĐQH W =
với R = (A B C D E F G)
F = {FG AB; B CF; C DF};
1) Tìm phủ tối thiểu của F.
2) Tìm tất cả các khoá của R.
Phạm Hùng Phú 315
Bài tập cơ sở dữ liệu 3) R đã ở dạng chuẩn 3NF chƣa? Tại sao?
4) Tách R về dạng 3NF:
- Bảo toàn phụ thuộc hàm.
- Có kết nối không mất thông tin và bảo toàn phụ thuộc hàm
5) R đã ở dạng chuẩn BCNF chƣa? Tại sao?
6) Nếu R chƣa ở dạng chuẩn BCNF; Hãy tách về dạng BCNF có kết nối không
mất thông tin.
Giải
1) Tìm phủ tối thiểu của F.
Bƣớc 1: Đƣa các phụ thuộc hàm trong F về các phụ thuộc hàm mà vế phải chỉ có
một thuộc tính.
F = {FG A; FG B; B C; B F; C D; C F};
Bƣớc 2: Loại các thuộc tính thừa ở vế trái của các phụ thuộc hàm trong F.
Vì B C; B F; C D; C F có vế trái chỉ chứa 1 thuộc tính nên vế trái của nó
không chứa các thuộc tính thừa.
- Xét FG A:
+ Với F VT = FG ta có: (VT - F)+ = G+ = G
A G nên F không thừa.
+ Với G VT = FG ta có: (VT - G)+ = F+ = F
A F nên G không thừa.
- Xét FG B
+ Với F VT = FG ta có: (VT - F)+ = G+ = G
B G nên F không thừa.
+ Với G VT = FG ta có: (VT - G)+ = F+ = F
B F nên G không thừa.
Sau khi loại bỏ các thuộc tính thừa ở vế trái ta đƣợc:
F = {FG A; FG B; B C; B F; C D; C F};
316 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Bƣớc 3: Loại các phụ thuộc hàm thừa trong F.
- Xét FG A
+ G = {FG B; B C; B F; C D; C F}
+ = BCDFG
+ A nên FG A không thừa.
- Xét FG B
+ G = {FG A; B C; B F; C D; C F};
= AFG +
+ B nên FG B không thừa.
- Xét B C
+ G = {FG A; FG B; B F; C D; C F};
+ = BF
+ C nên B C không thừa.
- Xét B F
+ G = {FG A; FG B; B C; C D; C F};
+ = CDF
+ F nên B F thừa.
F = {FG A; FG B; B C; C D; C F};
- Xét C D
+ G = {FG A; FG B; B C; C F};
+ = CF
+ D nên C D không thừa.
- Xét C F
+ G = {FG A; FG B; B C; C D};
+ = CD
+ F nên C F không thừa.
Bƣớc 4: Vậy phủ tối thiểu F = {FG A; FG B; B C; C D; C F};
2) Tìm tất cả khoá của R.
Phạm Hùng Phú 317
Bài tập cơ sở dữ liệu - K = EG (G chỉ có ở vế trái; E không nằm trong bất cứ phụ thuộc hàm nào của
- K+ = (EG)+ = EG U nên R có thể có nhiều khóa
+ G = BCF + K = BCEFG + Loại bỏ các thuộc tính thừa trong G.
F)
Với B G ta có (K - B)+ = (CEFG)+ = ABCDEFG = U nên B thừa,
K = CEFG.
Với C G ta có (K - C)+ = (EFG)+ = ABCDEFG = U nên C thừa,
K = EFG.
Với F G ta có (K - F)+ = (EG)+ = EG U nên F không thừa, K = EFG.
Vậy K = EFG là một khóa của R.
Nếu thay đổi thứ tự loại bỏ các thuộc tính trong G ta đƣợc khóa khác là BEG và
CEG.
Vậy R có 3 khóa là EFG, BEG và CEG.
3) R Chƣa ở dạng chuẩn 3NF vì
Xét C D F có D – thuộc tính không khóa (D chỉ nằm ở vế phải); D {C} và
C+= CD U nên C D vi phạm 3NF.
4) Tách R về dạng:
- 3NF bảo toàn phụ thuộc hàm.
+ Vì E không liên quan đến bất cứ phụ thuộc hàm nào trong F nên ta có R1(E)
+ Ứng với phụ thuộc hàm FG A; FG B ta có R2(ABFG)
+ Ứng với phụ thuộc hàm C D; C F ta có R3(CDF)
+ Ứng với phụ thuộc hàm còn lại ta có R4(BC)
- 3NF có kết nối không mất thông tin và bảo toàn phụ thuộc hàm
Bƣớc 1: Tìm phủ tối thiểu của F.
Theo phần 1, phủ tối thiểu của F là:
F = {FG A; FG B; B C; C D; C F}
Bƣớc 2: Tìm khoá K của R.
318 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
Theo phần 2, K = EFG và K = CEG một khóa của R.
Bƣớc 3: Tách R thành 3NF bảo toàn phụ thuộc hàm ta đƣợc:
= {R1(E), R2 (ABFG), R3(CDF), R4(BC)}
Bƣớc 4: Lấy = {K}
{K} = {R1(E), R2 (ABFG), R3(CDF), R4(BC)}
K nên kết quả phép tách R về 3NF bảo toàn phụ thuộc hàm và có kết Ta có R1(E)
nối không mất thông tin là:
= { K(EFG), R2 (ABFG), R3(CDF), R4(BC)}
Hoặc = { K(CEG), R2 (ABFG), R3(CDF), R4(BC)}
5) R Chƣa ở dạng chuẩn BCNF vì
Xét C D F có D {C} và C+= CD U nên C D vi phạm BCNF.
R(ABCDEFG) F = {FG A; FG B; B C; C D; C F}
R1(AFG) F1 = {FG A}
R2(ABCDEFG) F2 = {FG B; B C; C D; C F}
R21(BFG) F21 = {FG B}
R22(ACDEFG) F22 = {FG C; C D; C F}
R221(CFG) F221 = {FG C}
R222(ADEFG) F222 = {FG D}
R2221(DFG) F2221 = {FG D}
R2222(AEFG) F2222 = Ø
6) Tách về dạng BCNF có kết nối không mất thông tin.
Phạm Hùng Phú 319
Bài tập cơ sở dữ liệu
- Kết quả thu đƣợc = {R1, R21, R221, R2221, R2222}. Vì R1, R21, R221, R2221có
chung khóa là FG nên có thể gộp thành R20(ABCDFG) với F20 = { FG A,
FG B, FG C, FG D}.
- Phép tách cuối cùng đƣợc = {R20, R2222}.
4.4.37. Để quản lý mua bán hàng của một của hàng mua bán vật tƣ xây dựng,
ngƣời ta tổ chức một cơ sở dữ liệu có lƣợc đồ cơ sở dữ liệu quan hệ:
HDBH(SHHDB, NgayB, MaKH, TenKH, GT, DC, MaMH, TenMH, DVT, SL,
DG)
HDMH(SHHDM, NgayM, MaNCC, TenNCC, GT, DC, MaMH, TenMH, DVT,
SL, DG). Hãy chuẩn hóa cơ sở dữ liệu trên về dạng 3NF có ết nối không mất thông
tin và bảo toàn phụ thuộc hàm.
Giải:
1) Tập phụ thuộc hàm:
- Với lƣợc đồ quan hệ HDBH(SHHDB, NgayB, MaKH, TenKH, GT, DC, MaMH,
TenMH, DVT, SL, DG) có
F1 = {SHHDB NgayB, MaKH; MaKH TenKH, GT, DC; MaMH TenMH,
DVT; SHHDB, MaMH SL, DG}.
- Với lƣợc đồ quan hệ HDMH(SHHDM, NgayM, MaNCC, TenNCC, GT, DC,
MaMH, TenMH, DVT, SL, DG).
F2 = {SHHDM, MaNCC NgayM; MaNCC TenNCC, GT, DC;
MaMH TenMH, DVT; SHHDM, MaMH SL, DG}.
2) Phủ tối thiểu:
F1 = {SHHDB NgayB, MaKH; MaKH TenKH, GT, DC; MaMH TenMH,
DVT; SHHDB, MaMH SL, DG} - tối thiểu.
F2 = {SHHDM, MaNCC NgayM; MaNCC TenNCC, GT, DC;
MaMH TenMH, DVT; SHHDM, MaNCC, MaMH SL, DG} - tối thiểu.
3) Khóa của các sơ đồ quan hệ:
W1 =
W2 =
320 Phạm Hùng Phú
Bài tập cơ sở dữ liệu
3) Đƣa về dạng chuẩn 3NF bảo toàn phụ thuộc hàm và có kết nói không mất thông
tin:
- Với W1 =
+ HDBH(SHHDB, NgayB, MaKH);
+ MATH(MaMH, TenMH, DVT);
+ KHH(MaKH, TenKH, GT, DC);
+ BANH(SHHDB, MaMH, SL, DG).
- Với W2 =
+ HDMH(SHHDM, MaNCC, NgayM);
+ MATH(MaMH, TenMH, DVT);
+ NCC(MaNCC, TenNCC, GT, DC);
+ MUAH(SHHDM, MaNCC, MaMH, SL, DG).
- Sau khi biến đổi và gộp các lƣợc đồ có chung khóa, lƣợc đồ cơ sở dữ liệu quan hệ
là:
+ HDBH(SHHD, NgayB, MaKH);
+ HDMH(SHHD, MaKH, NgayM);
+ MATH(MaMH, TenMH, DVT);
+ KHH(MaKH, TenKH, GT, DC);
+ BANH(SHHD, MaMH, SL, DG).
+ MUAH(SHHD, MaNCC, MaMH, SL, DG).
Phạm Hùng Phú 321
DCNCC R222(AGH) F222 = Ø
Bài tập cơ sở dữ liệu
Tµi liÖu tham kh¶o
[1]. NguyÔn Kim Anh. Nguyªn lý cña c¸c hÖ c¬ së d÷ liÖu. NXB §¹i häc Quèc
Gia Hµ Néi. 2004.
[2]. NguyÔn B¸ T êng. C¬ së d÷ liÖu lý thuyÕt vµ thùc hµnh. NXB khoa häc vµ kü
thuËt. 2001.
[3]. Ng« Trung ViÖt. Ng«n ng÷ con d÷ liÖu SQL. NXB Giao th«ng vËn t¶i.
1998.
[4]. Lª TiÕn V ¬ng. NhËp m«n c¬ së d÷ liÖu quan hÖ. NXB Thèng kª. 1999.
[5]. Jeffref D Ulman. Nguyªn lý c¸c hÖ c¬ së d÷ liÖu. TËp 1,2. Biªn dÞch
TrÇn §øc Quang. NXB Thèng kª. 2002.
[6]. Jeffrey D Ulman and Jennifer Widom, A first course in database systems.
Prentice Hall. 1997.
322 Phạm Hùng Phú