Tải bản đầy đủ (.doc) (81 trang)

Tiểu luận môn cơ sở dữ liệu nâng cao CÁC DẠNG CHUẨN CỦA LƯỢC ĐỒ QUAN HỆ

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (830.31 KB, 81 trang )

Bài Thu Hoạch “CHUYÊN ĐÈ CSDLNC”  GVHD: PGS - TS Đỗ Phúc
MỤC LỤC

MỤC LỤC 1
LỜI MỞ ĐẤU 3
NỘI DUNG 6
I.KHÁI NIỆM VỀ HỆ CƠ SỞ DỮ LIỆU QUAN HỆ 6
1. CSDL (DataBase): 6
2. CSDL quan hệ (Relationship DataBase): 6
3. Hệ quản trị CSDL (DataBase Management System - DBMS) 6
4. Mô hình dữ liệu quan hệ 8
Các phép toán trên quan hệ: 11
5. Khoá của quan hệ 11
II.THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ 14
1. Các vấn đề gặp phải khi tổ chức dữ liệu 14
2. Phụ thuộc hàm 15
4. Bao đóng của tập phụ thuộc hàm 19
5. Bao đóng của tập thuộc tính 21
6. Thuật toán tìm bao đóng của tập thuộc tính 22
7. Khóa của lược đồ quan hệ và các thuộc tính tham gia vào khóa 24
7.1. Thuật toán tìm một khoá của một lược đồ quan hệ 24
7.2. Thuật toán tìm tất cả các khoá của một lược đồ quan hệ 26
7.3. Thuật toán cải tiến 26
8. Phủ tối tiểu 28
8.1 Tập phụ thuộc hàm tương đương 28
8.2 Thuật toán tìm phủ tối tiểu 29
9. Phép tách lược đồ quan hệ 30
9.1. Kết nối không mất mát thông tin 31
9.2 Kiểm tra phép kết nối không mất mát thông tin 31
III.CÁC DẠNG CHUẨN CỦA LƯỢC ĐỒ QUAN HỆ 33
1. Dạng chuẩn thứ nhất (1NF – First Normal Form) 34


2. Dạng chuẩn thứ 2 (2NF – Second normal form) 36
3. Dạng chuẩn thứ ba (3NF – third normal form) 39
4. Dạng chuẩn Boye-Codd (BC) 41
IV.HƯỚNG DẨN CÀI ĐẶT VÀ SỬ DỤNG CHƯƠNG TRÌNH 42
1.Cài đặt chương trình 42
2.Các chức năng của chương trình 44
Chương trình “ỨNG DỤNG CÁC THUẬT TOÁN ĐỂ TÌM BAO ĐÓNG, TÌM
KHÓA, TÌM PHỦ TỐI TIỂU VÀ CHUẨN HÓA QUAN HỆ ĐẠT CHUẨN
BOYE CODD” được viết bằng ngôn ngữ C++ gồm 7 menu tùy chọn. 44
HVTH: Nguyễn Thị Kim Phượng Trang 1
Bài Thu Hoạch “CHUYÊN ĐÈ CSDLNC”  GVHD: PGS - TS Đỗ Phúc
Sử dụng chương trình: Nhập số từ 1 đến 7 theo tùy chọn menu yêu cầu của
người sử dụng. Để thoát chương trình nhập số 0. Muốn kết thúc một tùy chọn
trước khi chuyển sang nhập số của menu tùy chọn khác, bấm một phím bất kỳ.
44
Code chương trình: 44
Menu 1: Nhập lược đồ quan hệ 64
Menu 2: In lược đồ quan hệ 65
Menu 3: Tìm bao đóng tập thuộc tính 69
Menu 6: Tìm tất cả khóa của lược đồ quan hệ 71
KẾT LUẬN 74
TÀI LIỆU THAM KHẢO 81
HVTH: Nguyễn Thị Kim Phượng Trang 2
Bài Thu Hoạch “CHUYÊN ĐÈ CSDLNC”  GVHD: PGS - TS Đỗ Phúc
LỜI MỞ ĐẤU

Từ nhiều năm nay, cơ sở dữ liệu (CSDL) quan hệ đã đóng góp
rất lớn vào thành công của ngành công nghệ phần mềm. Mô hình lưu
trữ data dạng bảng ràng buộc bằng các cặp khóa chính - phụ nhằm
đảm bảo tính toàn vẹn dường như đã quá hoàn hảo. SQL – một

scripting gần gũi, đơn giản, linh hoạt,… cộng với phần mềm lưu trữ dữ
liệu quan hệ như Oracle, MySQL, MS SQL Server, PostGreSQL,…
khiến RDBMS (Hệ Quản Trị CSDL quan hệ) gần như độc tôn trong các
mô hình lưu trữ dữ liệu. Nhưng theo đà phát triển vượt bậc của Công
nghệ thông tin và do nhu cầu của người dùng, đã dẫn đến những yêu
cầu về thế hệ lưu trữ phải ngày càng hiệu quả hơn và thế là một thế hệ
databse mới ra đời.
Thế hệ lưu trữ dữ liệu kế tiếp đòi hỏi gì?
Sự gia tăng đột biến về lượng đặt ra một thách thức lớn cho các
mô hình lưu trữ, dẫn đến bài toán về yêu cầu phân tán. Trên thực tế,
RDBMS (Hệ Quản Trị CSDL quan hệ) đã tính toán và triển khai tương
đối thành công ở một mức độ nào đó nhưng vẫn kèm theo những hạn
chế nhất định về mặt tốc độ, và hay bị bottle neck (nghẽn cổ chai), …
Thế hệ database mới là gì?
Thế hệ database kế tiếp là một thế hệ cơ sở dữ liệu non -
relational (không ràng buộc), distributed (phân tán), open source (mã
nguồn mở), horizontal scalable (khả năng mở rộng theo chiều ngang)
để có thể lưu trữ, xử lý từ một lượng rất nhỏ cho tới hàng petabytes dữ
HVTH: Nguyễn Thị Kim Phượng Trang 3
Bài Thu Hoạch “CHUYÊN ĐÈ CSDLNC”  GVHD: PGS - TS Đỗ Phúc
liệu trong hệ thống và đặc biệt có độ chịu tải, chịu lỗi cao cùng với
những đòi hỏi về tài nguyên phần cứng thấp.
Tuy còn những hạn chế nhất định như vậy, nhưng tại sao
việc chọn mô hình dữ liệu quan hệ làm hệ thống hình thức cho
các hệ CSDL phân tán cũng như các hệ CSDL khác thì có nhiều lý
do:
- Trong sách “NGUYÊN LÝ CÁC HỆ CƠ SỞ DỮ LIỆU VÀ CƠ SỞ
TRI THỨC” – tác giả Jeffrey Ullman - biên dịch Trần Đức
Quang – hiệu đính Hồ Thuần đã nhận xét: “Cơ sở toán học của
mô hình quan hệ làm cho nó trở thành một ứng cử viên sáng giá

trong việc giải quyết, mô tả các vấn đề lý thuyết nền tảng của CSDL
phân tán một cách rõ ràng và một điều quan trọng nữa là phần lớn
các hệ CSDL phân tán đều thuộc loại quan hệ.” Và chính tác giả đã
trình bày rất chi tiết về “Lý Thuyết Thiết Kế Cơ Sở Dữ Liệu Quan
Hệ” trong chương 7, trước khi viết về Lý thuyết và Quản Lý Cơ Sở
Dữ Liệu Phân Tán” ở các chương sau.
- Trong sách “NGUYÊN LÝ CÁC HỆ CƠ SỞ DỮ LIỆU PHÂN TÁN” -
tác giả M.Tamer Ozsu và Patrick Valduries - biên dịch Trần Đức
Quang đã viết riêng chương II “Tổng Quan Về Hệ Quản Trị Cơ
Sở Dữ Liệu Quan Hệ” trước khi trình bày lý thuyết về CSDL phân
tán ở các chương kế tiếp.
Như vậy, ta thấy rất rõ ràng “Việc nhắc lại các kiến thức:
khái niệm của CSDL quan hệ, cũng như việc tìm khóa, tìm phủ
tối tiểu, xác định dạng chuẩn của quan hệ và từ đó chuẩn hóa
một lược đồ quan hệ” cũng quan trọng không kém, góp phần
đặt nền tảng cho việc tiếp thu kiến thức về CSDL phân tán trở
nên dễ dàng hơn.
HVTH: Nguyễn Thị Kim Phượng Trang 4
Bài Thu Hoạch “CHUYÊN ĐÈ CSDLNC”  GVHD: PGS - TS Đỗ Phúc
Chính vì lý do này, mà trong bài thu hoạch chuyên đề “Cơ Sở
Dữ Liệu Nâng Cao” em sẽ trình bày nội dung: “Ứng dụng các thuật
toán để tìm bao đóng, tìm khóa, tìm phủ tối tiểu, và chuẩn hóa
quan hệ đạt dạng chuẩn Boye-Codd”, với mục đích hệ thống hóa,
nhắc lại các kiến thức nền tảng và qua demo chương trình giúp người
sử dụng chương trình có thể nắm bắt thông tin một cách nhanh chóng,
mà vẫn rõ ràng và hiệu quả. Trên cơ sở đó, có thể tiếp thu dễ dàng
kiến thức mới về Cơ Sở Dữ Liệu Phân Tán và có thể thiết kế Cơ Sở
Dữ Liệu Phân Tán phục vụ cho nhu cầu của người dùng.
Thông qua bài thu hoạch, em xin gửi lời cảm ơn đến Phó Giáo
sư - Tiến sỹ Đỗ Phúc. Với kiến thức sâu rộng, lòng nhiệt tình, thái độ

làm việc rất nghiêm túc cùng với cách giảng giải rõ ràng, dễ hiểu,
thông qua các ví dụ ứng dụng trong thực tế cuộc sống, thầy đã tận tâm
truyền đạt những kiến thức nền tảng cơ bản cho chúng em về môn học
“CƠ SỞ DỮ LIỆU NÂNG CAO” – chính điều này thật sự giúp em
hiểu rõ hơn vấn đề, mở rộng tầm nhìn, thấy được sự cần thiết của môn
học đang ảnh hường và chi phối đến nhiều lĩnh vực trong thời đại.

HVTH: Nguyễn Thị Kim Phượng Trang 5
Bài Thu Hoạch “CHUYÊN ĐÈ CSDLNC”  GVHD: PGS - TS Đỗ Phúc
NỘI DUNG

I. KHÁI NIỆM VỀ HỆ CƠ SỞ DỮ LIỆU QUAN HỆ
1. CSDL (DataBase):
CSDL là tập hợp của các dữ liệu có cấu trúc liên quan với nhau
về mặt logic, liên quan đến các vấn đề trong thực tế mà chúng ta đang
cố gắng mô hình hóa chúng, CSDL là hệ thống tích hợp các tập tin
được sử dụng nhằm giảm thiểu sự dư thừa dữ liệu.
2. CSDL quan hệ (Relationship DataBase):
Là loại CSDL được tổ chức dười dạng bảng (table). Về hình
thức, một quan hệ relation r được định nghĩa trên n tập (D
1
, D
2
,…D
n
không nhất thiết phải tách biệt) là một tập các n bộ (hoặc đơn giản là
các bộ <d
1
,d
2

,….d
n
> sao cho d
1
∈D
1
, d
2
∈D
2
,…d
n
∈D
n.
)
3. Hệ quản trị CSDL (DataBase Management System - DBMS)
Một hệ quản trị CSDL (HQTCSDL) là:
- Một tập các phần mềm quản lý CSDL và cung cấp các dịch vụ xử
lý CSDL cho các những người phát triển ứng dụng và người
dùng cuối.
- HQTCSDL cung cấp một giao diện giữa người sử dụng và dữ
liệu.
- HQTCSDL biến đổi CSDL vật lý thành CSDL logic.
Dựa vào cách tổ chức dữ liệu, HQTCSDL được chia thành năm loại:
loại phân cấp, loại mạng, loại tập tin đảo, loại quan hệ, loại đối tượng.
Hiện tại, loại HQTCSDL thường được sử dụng trong công nghệ phần
HVTH: Nguyễn Thị Kim Phượng Trang 6
Bài Thu Hoạch “CHUYÊN ĐÈ CSDLNC”  GVHD: PGS - TS Đỗ Phúc
mềm là loại HQTCSDL quan hệ (RDBMS) và HQTCSDL phân tán
(DBMS).

Dựa vào sự phân cấp, các hệ cơ sở dữ liệu (hệ CSDL) đầu tiên
được xây dựng theo các mô hình phân cấp và mô hình mạng, đã xuất
hiện vào những năm 1960, được xem là thế hệ thứ nhất của các hệ
quản trị cơ sở dữ liệu (hệ QTCSDL). Tiếp theo là thế hệ thứ hai, các hệ
QTCSDL quan hệ, được xây dựng theo mô hình dữ liệu quan hệ do
E.F. Codd đề xuất vào năm 1970.
Các hệ QTCSDL có mục tiêu tổ chức dữ liệu, truy cập và cập nhật
những khối lượng lớn dữ liệu một cách thuận lợi, an toàn và hiệu quả.
Tuy nhiên, với sự phát triển nhanh chóng của công nghệ truyền
thông và sự phát triển vượt bậc không ngừng của mạng Internet, cùng
với xu thế toàn cầu hoá trong mọi lĩnh vực, đặc biệt là về thương mại,
đã làm nảy sinh nhiều ứng dụng mới, phải quản lý những đối tượng có
cấu trúc phức tạp (văn bản, âm thanh, hình ảnh) và động (các chương
trình, các mô phỏng). Các CSDL thuộc thế hệ một và hai không thể giải
quyết được các bài toán trong môi trường phân tán (không tập trung),
đòi hỏi phải xử lý song song các dữ liệu và hệ thống không thuần nhất.
Thế hệ thứ ba của hệ quản trị CSDL ra đời vào những năm 80 trong đó
có CSDL phân tán đã đáp ứng những nhu cầu đặt ra trong thời đại này.
Một hệ quản trị CSDL thực hiện các chức năng sau:
+ Tạo cấu trúc dữ liệu tương ứng với mô hình dữ liệu được chọn.
+ Đảm bảo tính độc lập dữ liệu.
+ Cập nhật dữ liệu.
+ Phát sinh các báo cáo từ các dữ liệu trong CSDL.
HVTH: Nguyễn Thị Kim Phượng Trang 7
Bài Thu Hoạch “CHUYÊN ĐÈ CSDLNC”  GVHD: PGS - TS Đỗ Phúc
+ Đảm bảo tính an toàn và toàn vẹn dữ liệu trong CSDL.
+ Cung cấp các tiện ích sao lưu phục hồi dữ liệu.
+ Cung cấp các thủ tục điều khiển tương tranh.
Một hệ quản trị thông thường có các thành phần chính sau:
+ Ngôn ngữ định nghĩa dữ liệu (Data Definition Language).

+ Ngôn ngữ thao tác dữ liệu (Data Manipulation Language).
+ Ngôn ngữ hỏi đáp dữ liệu (Query Language).
+ Bộ viết báo cáo.
+ Từ điển dữ liệu.
+ Bộ phát sinh đồ hoạ.
4. Mô hình dữ liệu quan hệ
Khái niệm
Mô hình dữ liệu quan hệ (Relational Data Model) do EF. Codd đề
xuất năm 1970. Nền tảng lý thuyết của nó là khái niệm lý thuyết tập hợp
trên các quan hệ, tức là tập của các bộ giá trị.
Thuộc tính (attribute)
Thuộc tính là các đặc điểm riêng của một đối tượng, mỗi thuộc tính
có tên gọi và phải thuộc về một kiểu dữ liệu nhất định
Kiểu dữ liệu
Các thuộc tính được phân biệt qua tên gọi và phải thuộc một kiểu
dữ liệu nhất định (số, chuỗi, ngày tháng, logic, hình ảnh…). Kiểu dữ liệu
có thể là kiểu vô hướng (thuộc tính đơn hay thuộc tính nguyên tố) hoặc
là kiểu có cấu trúc (không phải thuộc tính nguyên tố)
HVTH: Nguyễn Thị Kim Phượng Trang 8
Bài Thu Hoạch “CHUYÊN ĐÈ CSDLNC”  GVHD: PGS - TS Đỗ Phúc
Trong nhiều hệ quản trị CSDL, người ta thường đưa thêm vào
miền giá trị của các thuộc tính một giá trị đặc biệt gọi là giá trị rỗng
(NULL). Tuỳ theo ngữ cảnh mà giá trị này có thể đặc trưng cho một giá
trị không thể xác định được hoặc một giá trị chưa được xác định ở vào
thời điểm nhập tin nhưng có thể được xác định vào thời điểm khác.
Miền thuộc tính
Là tập hợp các thuộc tính của đối tượng, các đối tượng thường
có rất nhiều thuộc tính, tuy vậy để quản lý ta chỉ cần quản lý một số
thuộc tính cần thiết cho thông tin về đối tượng.
Quan hệ

Sự thể hiện của lược đồ quan hệ ở một thời điểm nào đó được
gọi là quan hệ, rõ ràng là trên một lược đồ quan hệ có thể xác định
nhiều quan hệ. Quan hệ là tập con của tích Đề Các của một hoặc nhiều
miền. Vậy, mỗi quan hệ có thể là vô hạn, ở đây luôn giả thiết rằng quan
hệ là một tập hữu hạn.
Có thể định nghĩa quan hệ một cách hình thức như sau:
Định nghĩa: Gọi U = {A
1
, A
2
, …, A
n
} là tập hữu hạn các thuộc
tính, mỗi thuộc tính A
i
với i = 1,…, n có miền giá trị tương ứng là
Dom(A
i
). Quan hệ r trên tập thuộc tính U = {A
1
,…, A
n
}, ký hiệu là r(U)
hoặc r(A
1
, , A
n
), là tập con của tích Đề Các của các miền giá trị.
r(U)


dom(A
1
)
×

×
dom(A
n
)
HVTH: Nguyễn Thị Kim Phượng Trang 9
Bài Thu Hoạch “CHUYÊN ĐÈ CSDLNC”  GVHD: PGS - TS Đỗ Phúc
Hay có thể viết:
r (U) = A
1
A
2
A
n
a
1
1
a
1
2
a
1
n
a
2
1

a
2
2
a
2
n
a
3
1
a
3
2
a
3
n

a
m
1
a
m
2
a
m
n
Trong đó: A
1
, A
2
, A

n
: Gọi là miền thuộc tính của quan hệ r
DOM(A
1
) = {a
1
1
, a
2
1
, a
m
1
}: Gọi là miền trị của thuộc tính A
1
n: Gọi là bậc của quan hệ r (hay r là quan hệ n ngôi)
m: Gọi là lực lượng của quan hệ r
Ta thấy so với một bảng thì:
− Mỗi quan hệ tương ứng với một bảng dữ liệu (là một tập dữ liệu)
− Mỗi thuộc tính tương ứng với một cột dữ liệu trong bảng (là một
trường)
− Mỗi bộ tương ứng với một hàng của bảng dữ liệu (là một bản ghi)
Lưu ý :
- Lược đồ quan hệ được sử dụng để mô tả về cấu trúc và ràng
buộc toàn vẹn của một quan hệ. Một quan hệ có thể thay đổi theo thời
gian, nhưng lược đồ quan hệ dùng để chỉ nội dung của quan hệ thì tồn
tại lâu hơn, đó là tính bất biến của quan hệ theo một nghĩa tương đối.
HVTH: Nguyễn Thị Kim Phượng Trang 10
n thuộc tính
m bộ

Bài Thu Hoạch “CHUYÊN ĐÈ CSDLNC”  GVHD: PGS - TS Đỗ Phúc
- Khi nói đến lược đồ quan hệ trong đó chỉ tập trung vào khía
cạnh mô tả cấu trúc của một quan hệ mà không quan tâm đến ràng
buộc thì ta sẽ dùng ký hiệu
R(A
1
, A
2
, …, A
n
).
- Mỗi quan hệ là một thể hiện của lược đồ quan hệ, ký hiệu r(R)
là quan hệ r của lược đồ R.
- Với một bộ t thuộc quan hệ r của lược đồ R và X ⊆ U, ta ký hiệu
t[X] là bộ t chỉ chứa các giá trị của các thuộc tính trong X, và t[A
i
] để chỉ
giá trị của bộ t tương ứng với thuộc tính A
i
.
Các phép toán trên quan hệ:
- Các phép toán tập hợp (Set operation): Phép hợp (Union operation),
Phép Giao (Intersection), Phép Trừ (Minus, Difference), Tích
Descartes (Cartesian Product, Product)
- Các phép toán quan hệ: Phép Chiếu (Projection), Phép Chọn
(Selection), Phép Kết, Phép Kết Tự Nhiên (Join, Natural join), Phép
chia (Division)
5. Khoá của quan hệ
Định nghĩa: Cho quan hệ r xác định trên tập thuộc tính U, K là
một tập thuộc tính K ⊆ U. Gọi K là khoá của quan hệ r nếu với ∀ bộ t

i
,
t
j
∈ r; t
i
≠ t
j
thì t
i
[K] ≠ t
j
[K] (tức là giá trị trên K của một bộ nào đó khác
giá trị trên K của mọi bộ còn lại, hay nói cách khác bộ đó là xác định
duy nhất).
Mỗi tập K ⊆ U thỏa mãn điều kiện trên được gọi là một khóa hay
một siêu khóa.
Ví dụ: Xét quan hệ R sau :

R (A B C D)
HVTH: Nguyễn Thị Kim Phượng Trang 11
Bài Thu Hoạch “CHUYÊN ĐÈ CSDLNC”  GVHD: PGS - TS Đỗ Phúc
t
1
= a
1
b
1
c
1

d
1
t
2
= a
2
b
2
c
2
d
2
t
3
= a
3
b
3
c
2
d
2
t
4
= a
1
b
2
c
2

d
2
Xét thấy: K
1
=U, K
2
=ABC, K
3
=AB, … là các khoá của quan hệ r.
Nhưng X=BC không phải là tập khoá của quan hệ r vì t
2
[X] = t
4
[X]
nhưng t
2
≠ t
4
Ví dụ: Quan hệ Sinhvien
Sinhvien (MASV HOTENSV GIOITINH NGAYSINH NSINH
MALOP)
t
1
K4001 Lê Duy Anh Nam 11/10/88 TN K4A
t
2
K5201 Hoàng Thủy Hà Nữ 04/05/89 BG K5B
Trong đó, mã Sinh viên (MASV) là khoá. Mỗi MASV đều xác định
duy nhất một sinh viên.
Trong môt quan hệ có thể có nhiều khóa. Việc tìm tất cả các khóa

của quan hệ là rất khó khăn. Lưu ý rằng, nếu K là khóa của quan hệ r
thì với mọi tập K

sao cho K ⊆ K

, K

cũng là khóa của r.
Định nghĩa khóa tối tiểu: Tập K ⊆ U được gọi là khóa tối tiểu
của quan hệ r xác định trên tập thuộc tính U nếu thỏa mãn:
+ K là một khóa của r,
+ Bất kỳ tập con thực sự K

nào của K đều không là khóa.
Một quan hệ có thể có nhiều khóa tối tiểu, thông thường người ta
chọn một khóa tối tiểu làm khóa chính, các khóa tối tiểu còn lại gọi là
khóa dự bị (hay khóa dự tuyển). Việc chọn một khóa tối tiểu làm khóa
chính là tùy ý, nhưng thông thường nên chọn khóa tối tiểu có một thuộc
tính hoặc có ít thuộc tính nhất.
HVTH: Nguyễn Thị Kim Phượng Trang 12
Bài Thu Hoạch “CHUYÊN ĐÈ CSDLNC”  GVHD: PGS - TS Đỗ Phúc
Khóa chính được dùng để nhận diện một bộ trong quan hệ, khi
muốn tìm kiếm một bộ t nào đó, ta chỉ cần biết thành phần khóa chính
của t là đủ. Do đó, giá trị của các thuộc tính trên tập khóa chính của tất
cả các bộ phải khác NULL. Đây là ràng buộc toàn vẹn thực thể của
CSDL. Thực tế, khi sửa đổi giá trị thuộc tính trong khóa chính của 1 bộ t
chính là hủy bộ t đó và đưa vào bộ t

khác.
Thuộc tính khóa là thuộc tính có tham gia vào một khóa nào đó

(khóa chính hay khóa dự bị). Thuộc tính không tham gia vào khóa nào
(khóa tối tiểu) gọi là thuộc tính không khóa.
Khóa ngoại: Tập K ⊆ U được gọi là khóa ngoại của quan hệ r
xác định trên tập thuộc tính U nếu tồn tại quan hệ r

và K là khóa chính
của quan hệ r

. Khi đó r’ và r có liên kết với nhau thông qua khóa ngoại
K.
Việc xác định khóa ngoại của một quan hệ đòi hỏi sự hiểu biết về
ý nghĩa hay vai trò của mỗi tập thuộc tính trong các quan hệ khác nhau
của CSDL. Một CSDL gồm nhiều quan hệ với nhiều khóa ngoại để biểu
diễn mối liên kết giữa các quan hệ, ta gọi các mối liên kết này là các
ràng buộc toàn vẹn tham chiếu.
Một CSDL không chỉ thỏa mãn các ràng buộc toàn vẹn mà còn
phải thỏa mãn các ràng buộc khác nữa. Ví dụ, “điểm của môn học thì
phải nằm trong đoạn từ 0 đến 10” hay “ngày mượn sách phải trước
ngày trả”, hay “số giờ làm việc tối đa của nhân viên trong một tuần là
56”, … Những điều kiện như vậy gọi là các ràng buộc toàn vẹn ngữ
nghĩa.
HVTH: Nguyễn Thị Kim Phượng Trang 13
Bài Thu Hoạch “CHUYÊN ĐÈ CSDLNC”  GVHD: PGS - TS Đỗ Phúc
II. THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ
1. Các vấn đề gặp phải khi tổ chức dữ liệu
Trước khi bàn về cách thiết kế một cơ sở dữ liệu tốt, chúng ta
hãy phân tích xem tại sao trong một số lược đồ quan hệ lại tồn tại “các
vấn đề phát sinh”.
Ví dụ: cho lược đồ quan hệ:
Thi(MASV, HOTEN, MONHOC, DIEMTHI) với một quan hệ như

sau:
MASV HOTEN MONHOC DIEMTHI
TT5001 Nguyễn Duy An Cấu trúc dữ liệu 7
TT5001 Nguyễn Duy An Cơ sở dữ liệu 8
TT5014 Lê Hoàng Minh Kỹ thuật lập trình 5
TT5001 Nguyễn Duy An Kỹ thuật lập trình 6
Quan hệ trên ghi kết quả điểm thi các môn của các sinh viên.
Chúng ta nhận thấy một số vấn đề nảy sinh như sau:
1. Dư thừa dữ liệu: Với mỗi môn thi họ tên của sinh viên lại
được lặp lại.
2. Không nhất quán (dị thường xuất hiện khi sửa dữ liệu): Do
hậu quả dư thừa, chúng ta có thể sửa đổi họ tên của một sinh viên
trong một bộ nào đó nhưng vẫn để lại họ tên cũ trong những bộ khác.
Vì vậy có thể không có họ tên duy nhất đối với mỗi sinh viên như mong
muốn.
3. Dị thường khi thêm bộ: Chúng ta không thể biết họ tên của
một sinh viên nếu hiện tại sinh viên đó không dự thi môn nào.
HVTH: Nguyễn Thị Kim Phượng Trang 14
Bài Thu Hoạch “CHUYÊN ĐÈ CSDLNC”  GVHD: PGS - TS Đỗ Phúc
4. Dị thường khi xoá bộ: Ngược lại với vấn để thứ 3, chúng ta
có thể xoá tất cả các môn thị của một sinh viên, vô ý làm mất dấu vết
để tìm ra họ tên của sinh viên này
Những vấn đề nêu trên sẽ được giải quyết nếu chúng ta phân rã
lược đồ quan hệ Diemthi thành hai lược đồ quan hệ:
Sinhvien(MASV, HOTEN)
Ketqua(MASV, MONHOC, DIEMTHI)
Lúc này, lược đồ quan hệ Sinhvien cho biết họ tên của mỗi sinh
viên chỉ xuất hiện đúng một lần, do vậy không có dư thừa. Ngoài ra
chúng ta có thể nhập họ tên của một sinh viên dù hiện tại sinh viên đó
chưa có kết quả thi môn nào. Tuy nhiên, để tìm danh sách họ tên của

các sinh viên ứng với môn thi Cơ sở dữ liệu thì chúng ta phải thực hiện
phép kết nối.
2. Phụ thuộc hàm
Định nghĩa
- Cho quan hệ r xác định trên tập thuộc tính U={A
1
, …, A
n
}. X và Y
là tập con của U. Ta nói Y phụ thuộc hàm vào X nếu với 2 bộ bất kỳ t
1
,
t
2


r, (t
1
≠ t
2
) mà t
1
[X] = t
2
[X] thì t
1
[Y] = t
2
[Y]. Ký hiệu là: X


Y (đọc là X
xác định hàm Y hoặc Y phụ thuộc hàm vào X). (Nghĩa là, không thể tồn
tại hai bộ r giống nhau ở các thuộc tính trong tập X mà lại khác nhau ở
một hay nhiều thuộc tính nào đó trong tập Y).
Ký hiệu phụ thuộc hàm là f, tập phụ thuộc hàm là F. Như vậy:
f: X

Y
F = {f: X

Y | X, Y ⊆ U, và Y phụ thuộc hàm vào X}
- Nếu Y không phụ thuộc hàm vào X ta có thể viết X! →Y
HVTH: Nguyễn Thị Kim Phượng Trang 15
Bài Thu Hoạch “CHUYÊN ĐÈ CSDLNC”  GVHD: PGS - TS Đỗ Phúc
- Lưu ý: Chỉ xét những các phụ thuộc hàm thoả mãn cho mọi
quan hệ trên lược đồ tương ứng của nó. Không thể xem xét một phụ
thuộc hàm thoả mãn một quan hệ r đặc biệt (ví dụ quan hệ rỗng) của
lược đồ R rồi sau đó quy nạp rằng phụ thuộc đó thoả mãn trên R.
Ví dụ 1: Cho quan hệ
S(S#, SNAME, STATUS, CITY)
SP(S#, P#, QTY)
P(P#, PNAME, CORLOR, WEIGHT, CITY)
Trong quan hệ của hãng cung ứng, mỗi một trong số các thuộc
tính SNAME, STATUS, CITY đều phụ thuộc hàm vào thuộc tính S#. Mỗi
giá trị S# tồn tại vừa đúng một giá trị tương ứng đối với từng thuộc tính
SNAME, STATUS và CITY khi đó có thể viết: S#

SNAME, S#

STATUS và S#


CITY
Ví dụ 2: Cho lược đồ quan hệ R(ABCDE)
HVTH: Nguyễn Thị Kim Phượng Trang 16
Bài Thu Hoạch “CHUYÊN ĐÈ CSDLNC”  GVHD: PGS - TS Đỗ Phúc
A B C D E
a1 b1 c1 d1 e1
a1 b2 c2 d2 e1
a2 b1 c3 d3 e1
a2 b1 c4 d3 e1
a3 b2 c3 d1 e1
Những phụ thuộc hàm sau đây có thoả mãn R hay không?
A

D; AB

D; E

A; A

E;
- Các phụ thuộc hàm thoả mãn: AB

A; A

E;
Lược đồ quan hệ
- Một lược đồ quan hệ R là một cặp (U, F) trong đó U là tập hữu
hạn các thuộc tính, F là tập các phụ thuộc hàm xác định trên U.
Ký hiệu là R(U, F) hoặc R = (U, F)

Ví dụ: Cho lược đồ quan hệ R(U, F):
U = {A,B,C,D,E}, F = {A→BC, B →D, AD → E}
* Nhận xét:
- Lược đồ quan hệ dùng để mô tả cấu trúc của quan hệ, tại mỗi
thời điểm lược đồ quan hệ có thể hiện là một quan hệ cụ thể.
- Có thể ký hiệu lược đồ quan hệ xác định trên tập thuộc tính U =
{A
1
, …, A
n
} như sau: R(U) hay R(A
1
, …, A
n
).
HVTH: Nguyễn Thị Kim Phượng Trang 17
Bài Thu Hoạch “CHUYÊN ĐÈ CSDLNC”  GVHD: PGS - TS Đỗ Phúc
- Thể hiện của quan hệ R của lược đồ quan hệ R(U, F) là tập tất
cả các bộ thỏa mãn tập tất cả các phụ thuộc hàm trong F.
Hệ tiên đề Armstrong cho phụ thuộc hàm
Gọi R(U, F) là lược đồ quan hệ với U={A
1
, , A
n
} là tập các thuộc
tính. X, Y, Z. W

U.
Hệ tiên đề Armstrong bao gồm:
− Tiên đề phản xạ: Nếu Y


X thì X

Y (mọi tập con của X đều
phụ thuộc hàm vào X)
− Tiên đề tăng trưởng: Nếu Z

U và X

Y thì XZ

YZ, trong
đó ký hiệu XZ là hợp của 2 tập X và Z thay cho ký hiệu X

Z.
− Tiên đề bắc cầu: Nếu X

Y và Y

Z thì X

Z.
Hệ quả của hệ tiên đề Armstrong (các luật):
− Luật hợp: Nếu X

Y và X

Z thì X

YZ

− Luật tựa bắc cầu (bắc cầu giả): Nếu X

Y và YW

Z thì
XW

Z
− Luật tách: Nếu X

Y và Z

Y thì X

Z
3. Phụ thuộc đa trị
Mối quan hệ giữa dữ liệu với nhau được thể hiện qua phụ thuộc
hàm, nhưng phụ thuộc hàm không phải là duy nhất. Khái niệm phụ
thuộc hàm trong trường hợp tổng quát không đủ để vét hết các loại phụ
thuộc tồn tại trong quan hệ. Trong thực tế còn có nhiều loại phụ thuộc
dữ liệu nữa. Chẳng hạn, mỗi cặp vợ chồng (tên cha, mẹ) không phải
xác định duy nhất tên một đứa con mà là một hoặc một số con; hoặc
HVTH: Nguyễn Thị Kim Phượng Trang 18
Bài Thu Hoạch “CHUYÊN ĐÈ CSDLNC”  GVHD: PGS - TS Đỗ Phúc
một người có thể xác định sở hữu trên một chiếc xe máy… Mối quan hệ
đó trong CSDL gọi là phụ thuộc đa trị.
Giả sử cho R là một lược đồ quan hệ, X và Y là hai tập con của
R. Ta nói rằng, X là xác định đa trị Y, ký hiệu: X



Y hoặc có một phụ
thuộc đa trị của Y vào X (viết tắt là MVD – MultiValued Dependency)
nếu với mỗi giá trị của X có một tập rỗng hoặc một tập có giá trị tương
ứng trên Y mà không liên quan gì tới các giá trị của các thuộc tính còn
lại của R–X-Y.
Hệ tiên đề đối với phụ thuộc đa trị :
A1. Luật bù cho MVD: Nếu X


Y thì X


U-X-Y
A2. Luật tăng trưởng cho MVD: Nếu X


Y và V

W thì WX


Y.
A3. Luật bắc cầu cho MVD: Nếu X


Y và Y


Z thì X



Z-Y
Các luật phối hợp giữa FD và MVD
A4. Nếu X

Y thì X


Y
A5. Nếu X


Y, Z

Y và W là tập con phân biệt với Y (tức là
W

Y =
φ
) và W

Z thì X

Z.
4. Bao đóng của tập phụ thuộc hàm
- Suy diễn: Cho lược đồ quan hệ R(U, F), F – là tập phụ thuộc
hàm, X, Y ⊆ U, X → Y là một phụ thuộc hàm. Ta nói phụ thuộc hàm X
→ Y được suy diễn logic ra từ F nếu mọi quan hệ r trên lược đồ R thỏa
mãn các phụ thuộc hàm trong F thì cũng thỏa mãn phụ thuộc hàm X →
Y.

HVTH: Nguyễn Thị Kim Phượng Trang 19
Bài Thu Hoạch “CHUYÊN ĐÈ CSDLNC”  GVHD: PGS - TS Đỗ Phúc
Bao đóng (closure) của tập phụ thuộc hàm F (ký hiệu là F
+
) là
tập tất cả các phụ thuộc hàm có thể suy diễn logic từ F dựa vào tiên để
Armstrong. Ta có F

F
+

Ví dụ: Cho lược đồ quan hệ R(ABCDEGH) và F được cho như
sau:
F = {B

A; DA

CE; D

H; GH

C; AC

D}.
Khi đó:
F
+
= {B

A; DA


CE; D

H; GH

C; AC

D; BC

AC;
BC

D; DA

AH; DG

C; BC

AD,… }
- Phụ thuộc hàm có vế trái dư thừa
F là tập các phụ thuộc hàm trên lược đồ quan hệ Q, Z là tập thuộc
tính, Z→Y∈F.
Phụ thuộc hàm Z → Y có vế trái dư thừa (phụ thuộc không đầy
đủ) nếu có một A∈Z sao cho: F ≡ F-{Z → Y}∪{(Z-A) → Y}
Ngược lại Z → Y là phụ thuộc hàm có vế trái không dư thừa hay
Y phụ thuộc hàm đầy đủ vào Z hay phụ thuộc hàm đầy đủ.
Ta nói F là tập phụ thuộc hàm có vế trái không dư thừa nếu F
không chứa phụ thuộc hàm có vế trái dư thừa.
Thuật toán loại khỏi F các phụ thuộc hàm có vế trái dư thừa.
Bước 1: Lần lượt thực hiện bước 2 cho các phụ thuộc hàm X→Y của F

Bước 2: Với mọi tập con thật sự X’≠ ∅ của X.
Nếu X'→Y∈ F+ thì thay X→Y trong F bằng X'→Y thực hiện lại bước 2
Tập phụ thuộc hàm có vế phải một thuộc tính
HVTH: Nguyễn Thị Kim Phượng Trang 20
Bài Thu Hoạch “CHUYÊN ĐÈ CSDLNC”  GVHD: PGS - TS Đỗ Phúc
Mỗi tập phụ thuộc hàm F đều tương đương với một tập phụ
thuộc hàm G mà vế phải của các phụ thuộc hàm trong G chỉ gồm một
thuộc tính.
Ví dụ: cho F = {A → BC, B → C, AB → D} ta suy ra
F ≡ {A → B, A → C , B → C, AB → D} = G
G được gọi là tập phụ thuộc hàm có vế phải một thuộc tính.
Thuộc tính phụ thuộc bắc cầu
Q là lược đồ quan hệ, X,Y là hai tập con của Q+, A là một thuộc
tính.
Nói rằng A phụ thuộc bắc cầu vào X nếu cả ba điều sau thỏa:
X → Y,Y → A
Y →/ X
A ∉ XY
5. Bao đóng của tập thuộc tính
- Cho lược đồ quan hệ R(U, F), X

U. Bao đóng của tập thuộc
tính X trên tập phụ thuộc hàm F ký hiệu là X
+
(hoặc X
F
+
) là tập tất cả các
thuộc tính A


U được suy ra từ X dựa vào các phụ thuộc hàm trong F
và hệ tiên đề Armstrong, nghĩa là:
X
+
= {A: A

U và X

A

F
+
}. Ta có X ⊆ X
+
.
Ví dụ: Cho lược đồ quan hệ R(ABCDEGH) và tập phụ thuộc hàm
F:
F = {B

A; DA

CE; D

H; GH

C; AC

D}. Hãy tính B
+
; H

+
;
BC
+
Ta có:
HVTH: Nguyễn Thị Kim Phượng Trang 21
Bài Thu Hoạch “CHUYÊN ĐÈ CSDLNC”  GVHD: PGS - TS Đỗ Phúc
B
+
= BA; (do có phụ thuộc hàm B

A)
H
+
= H (do có phụ thuộc hàm H

H)
BC
+

= BCADEH (do có các phụ thuộc hàm B

A; AC

D; DA

CE; D

H)
- Tính chất của bao đóng của tập thuộc tính:

+ Tính phản xạ: X ⊆ X
+
+ Tính đơn điệu: Nếu X ⊆ Y thì X
+
⊆ Y
+
+ Tính lũy đẳng: X
++
= X
+
+ (XY)
+
= X
+
Y
+

+ (X
+
Y)
+
= (XY
+
)
+
= (X
+
Y
+
)

+
+ X → Y ∈ F
+
⇔ Y ⊆ X
+
6. Thuật toán tìm bao đóng của tập thuộc tính
Thuật toán tìm bao đóng của tập các thuộc tính đối với mỗi tập
phụ thuộc hàm
- Input: + 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 và
+ X

U
- Output: X
+
(Bao đóng của X trên F)
Mã giả:
X+ = X // khởi tạo
repeat
oldX+ = X+
for each FD Y ⊆ Z in F do // kiểm tra từng PTH
if Y is a subset of X+, then // nếu vế trái trong X+
X+ = X+ U Z // thêm vế phải vào X+
HVTH: Nguyễn Thị Kim Phượng Trang 22
Bài Thu Hoạch “CHUYÊN ĐÈ CSDLNC”  GVHD: PGS - TS Đỗ Phúc
until X+ == oldX+ // lặp trong khi X+ thay đổi
Ví dụ 1: Cho lược đồ R(U, F), U= {A,B,C,D,E}, F = {A → B; B →
C; D → E}. Tính A
+
.

Áp dụng thuật toán ta có:
- B
0
: X
0
= {A}
- B
1
: X
1
= {AB} (vì có A

B, {A} ⊆ X
0
)
- B
2
: X
2
= {ABC} (vì có B

C, {B} ⊆ X
1
)
- B
3
: X
3
= X
2


Vậy A
+
= {ABC}
Ví dụ 2: Cho lược đồ quan hệ R(ABCDEG) với tập các phụ thuộc
hàm F sau:
AB

C D

EG ACD

B C

A
BE

C CE

AG BC

D CG

BD
Tìm bao đóng của tập X = {BD}.
Áp dụng thuật toán trên ta có:
- B
0
: X
0

= {BD}, sau đó chọn phụ thuôc hàm có vế trái chứa B, D
hoặc BD.
- B
1
: X
1
= {BDEG} (vì có D

EG, {D} ⊆ X
0
), lại tiếp tục tìm phụ
thuộc hàm có vế trái chứa trong X
1
.
- B
2
: X
2
= {BCDEG} (vì có BE

C, {BE} ⊆ X
1
)
- B
3
: X
3
= {ABCDEG} (vì có CE

AG, {CE} ⊆ X

2
)
- B
4
: X
4
= X
3

Vậy X
+
= (BD)
+
= {ABCDEG}
Ví dụ 3: Cho lược đồ R(U, F), U= {A,B,C,D,E,G,H}
F = {A → D; AB → DE; CE → G, E → H}. Tính (AB)
+
HVTH: Nguyễn Thị Kim Phượng Trang 23
Bài Thu Hoạch “CHUYÊN ĐÈ CSDLNC”  GVHD: PGS - TS Đỗ Phúc
Áp dụng thuật toán ta có:
- B
0
: X
0
= {AB}
- B
1
: X
1
= {ABDE} (vì có AB


DE, {AB} ⊆ X
0
)
- B
2
: X
2
= {ABDEH} (vì có E

H, {E} ⊆ X
1
)
- B
3
: X
3
= X
2

Vậy (AB)
+
= {ABDEH}.
7. Khóa của lược đồ quan hệ và các thuộc tính tham gia vào khóa.
- Siêu khóa (superkey) của một lược đồ quan hệ R = {A1, A2, , An}
là tập thuộc tính S ⊆ R thỏa tính chất không có hai bộ t1 và t2 trong một
trạng thái hợp lệ r của R mà t1[S] = t2[S]
- Khóa (key) K là siêu khóa với tính chất bổ sung là khi xóa thuộc tính
nào khỏi K sẽ khiến K không còn là siêu khóa.
- Nếu lược đồ quan hệ có nhiều hơn một khóa, mỗi khóa sẽ được gọi là

khóa dự tuyển (candidate key). Một trong các khóa dự tuyển được lựa
chọn làm khóa chính (primary key), các khóa còn lại làm khóa phụ
(secondary keys).
Thuộc tính khóa: là thuộc tính nằm trong một khóa dự tuyển.
Thuộc tính không khóa: không phải là thuộc tính khóa
Khóa của quan hệ: Cho quan hệ r( R ), tập K ⊂ Rđược gọi là khóa của
quan hệ r nếu: K+=R nếu bớt một phần tử khỏi K thì bao đóng của nó
sẽ khác R. Như thế tập K ⊂ R nếu K+=R và ( K \ A )+ ≠ R , ∀ A ⊂ R
Một quan hệ có thể có nhiều khóa.
7.1. Thuật toán tìm một khoá của một lược đồ quan hệ
Bước 1: K = U
HVTH: Nguyễn Thị Kim Phượng Trang 24
Bài Thu Hoạch “CHUYÊN ĐÈ CSDLNC”  GVHD: PGS - TS Đỗ Phúc
Bước 2: Nếu (K-A)
+
= U thì K = K-A với A

K
Bước 3: Lặp lại bước 2 cho đến khi không thể loại bỏ được phần
tử nào nữa của K. Khi đó K còn lại chính là một khoá cần tìm.
Nếu muốn tìm các khoá khác (nếu có) của lược đồ quan hệ, ta có
thể thay đổi thứ tự loại bỏ các phần tử của K.
Ví dụ: Cho lược đồ quan hệ R(ABC) và tập phụ thuộc hàm
F = {A

B; A

C ; B

A}. Hãy tìm một khoá của R

- K = ABC
- Loại thuộc tính A, do (K-A)
+
= (BC)
+
= ABC nên K =BC
- Thuộc tính B không loại được, do (K-B)
+
= (AC)
+

= AB
- Loại thuộc tính C, do (K-C)
+

=(AB)
+
= ABC nên K = B
Vậy một khoá của R là B
Nhận xét:
- Những thuộc tính nào xuất hiện duy nhất ở phía phải của tập
phụ thuộc hàm F thì tham gia vào khoá.
- Những thuộc tính xuất hiện duy nhất ở phía trái thì chắc chắn
tham gia vào khoá.
- Những thuộc tính không xuất hiện trong các phụ thuộc hàm
chắc chắn phải tham gia vào khoá.
- Những thuộc tính vừa có mặt ở vế trái, vừa có mặt ở vế phải có
khả năng tham gia vào khoá hoặc không.
HVTH: Nguyễn Thị Kim Phượng Trang 25

×