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 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 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 AK 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à RS 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 / tR 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 / tR 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à RS 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

RS = {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 (RS)

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à XF(R) = FX(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 ( [not null] [,...])

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] [ NOT ] LIKE

WHERE [NOT] [ NOT ] BETWEEN

WHERE [NOT] [ NOT ] IN ()

WHERE [NOT] EXISTS ()

WHERE [NOT] < phép_sánh > ANY  ALL ()

WHERE [NOT]

WHERE [NOT]

WHERE [NOT] ANDOR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 số hàng trong bảng dữ liệu nguồn (không

đế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(): Tìm giá trị lớn nhất của cột hoặc biểu thức.

MIN(): Tìm giá trị nhỏ nhất của cột hoặc biểu thức.

SUM(): Tính tổng của cột kiểu số hoặc biểu

thức kiểu số.

Phạm Hùng Phú 61

Bài tập cơ sở dữ liệu

AVG(): Tính giá trị trung bình của cột kiểu

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ú ý: trong mệnh đề WHERE là một biểu thức Logic và

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 ON (

[ASCDESC, … ] )

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 ADD < tên_cột kiểu_dữ_liệu>

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 DELETE

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 ON <Đối_tượng>

TO [WITH GRANT OPTION]

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 ON <đối_tượng> FROM

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={SHHDNgayghiHD, MaKH; MaKHTenKH, 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 XY và XZ thì XYZ

- Luật tựa bắc cầu: Nếu XY và WYZ thì XWZ

- Luật tách: Nếu XY và Z  Y thì XZ

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 XAF+}

2) Định lý

XY  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 XA 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 – {XA}; - 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 XY của F+ mà X, Y nằm trọn trong Ri , tức là

(XY  Ri ).

 Ri(F) ={X YF+  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 = - SĐQH;

 = {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; CB; 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= có ở dạng chuẩn

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 = - sơ đồ quan hệ

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 = - sơ đồ quan hệ

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 , ta có

- 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 , không có phụ thuộc hàm nào trong F1 vi

phạm BCNF nên dừng tách R1.

- Áp dụng giải thuật trên cho , ta có - C E vi phạm BCNF vì C + = CE  U.

- 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 , không có phụ thuộc hàm nào trong F21 vi

phạm BCNF nên dừng tách R21.

- Áp dụng giải thuật trên cho , không có phụ thuộc hàm nào trong F22 vi

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; MaNCCTenNCC, 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 = với

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 = ; trong đó: R = (ABCDEG);

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; 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 }.

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 = ; Tìm phủ tối thiểu của tập phụ thuộc hàm F bằng giải thuật tìm phủ tối thiểu của tập phụ thuộc hàm.

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 = . Tập phụ thuộc hàm F đã tối thiểu chƣa? Tại sao?

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 = với:

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 = vớ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}.

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 = Thành các LĐQH dạng chuẩn BCNF có kết nối không mất thông tin. Trong đó:

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 ta có:

- 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 = trong đó:

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 ta có: - AB C vi phạm điều kiện BCNF vì (AB)+ = ABCDEF U nên tách R thành

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 không có phụ thuộc hàm nào trong F1 vi

phạm BCNF nên dừng tách F1.

- Áp dụng giải thuật cho ta có:

+ 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 không có phụ thuộc hàm nào trong F21

vi phạm BCNF nên dừng tách F21.

+ Áp dụng giải thuật cho ta có:

 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 không có phụ thuộc hàm nào trong

F221 vi phạm BCNF nên dừng tách F221.

 Tƣơng tự áp dụng giải thuật cho ta tách đƣợc thành

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 = thành các SĐQH dạng chuẩn BCNF có kết nối không mất thông tin. Trong đó:

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 = trong đó:

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 = trong đó:

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 = thành các SĐQH dạng chuẩn BCNF có nối không mất thông tin. Trong đó:

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 = thành các LĐQH dạng chuẩn 3NF bảo toàn phụ thuộc hàm; trong đó:

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 = trong đó:

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 = trong đó:

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 = trong đó:

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 = trong đó:

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 = thành các SĐQH dạng chuẩn 3NF bảo toàn phụ thuộc hàm. Trong đó:

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 = trong đó:

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 = trong đó:

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 = thành các SĐ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. 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 = trong đó:

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 = trong đó:

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 = . Trong đó:

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 = với:

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= với:

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 = với:

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 = với:

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 = với:

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 = với:

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 DF 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 DF 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 = Có khóa duy nhất là: K1 = {SHHDB, MaMH};

W2 = Có khóa duy nhất là: K2 = {SHHDM, MaNCC, MaMH}.

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 = đƣợc tách thành:

+ HDBH(SHHDB, NgayB, MaKH);

+ MATH(MaMH, TenMH, DVT);

+ KHH(MaKH, TenKH, GT, DC);

+ BANH(SHHDB, MaMH, SL, DG).

- Với W2 = đƣợc tách thành:

+ 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ú