Download as pdf or txt
Download as pdf or txt
You are on page 1of 146

Cơ sở dữ liệu quan hệ

MỤC LỤC
Chương 1 CÁC KHÁI NIỆM CƠ BẢN VỀ CƠ SỞ DỮ LIỆU ...................6
1.1 Cơ sở dữ liệu .....................................................................................6
1.1.1 Cơ sở dữ liệu là gì ......................................................................6
1.1.2 Các tính chất của một cơ sở dữ liệu ...........................................7
1.1.3 Sự cần thiết của cơ sở dữ liệu ....................................................8
1.2 Hệ quản trị cơ sở dữ liệu ...................................................................9
1.2.1 Định nghĩa hệ quản trị cơ sở dữ liệu ...........................................9
1.2.2 Các chức năng của một hệ quản trị cơ sở dữ liệu ...................... 10
1.2.3 Các thành phần của một hệ quản trị cơ sở dữ liệu ..................... 10
1.2.4 Người quản trị CSDL ............................................................... 11
1.2.5 Các loại giao diện trong hệ quản trị csdl ................................... 11
1.3 Mô hình dữ liệu ............................................................................... 12
1.3.1 Kiến trúc của cơ sở dữ liệu ...................................................... 12
1.3.2 Mô hình dữ liệu ....................................................................... 13
1.4 Ví dụ về một cơ sở dữ liệu............................................................... 16
1.5 Các mô hình truy xuất dữ liệu ......................................................... 18
1.5.1 Mô hình cơ sở dữ liệu Client – Server ...................................... 18
1.5.2 Mô hình Client – Server nhiều tầng .......................................... 19
1.6 Con người trong hệ cơ sở dữ liệu..................................................... 20
1.6.1 Người quản trị hệ CSDL – Database Adminstrator .................. 20
1.6.2 Người thiết kế cơ sở dữ liệu – Database Designer ..................... 20
1.6.3 Người sử dụng – End User........................................................ 21
1.6.4 Người phân tích hệ thống và lập trình ứng dụng ....................... 21
1.6.5 Người thiết kế và cài đặt quản trị dữ liệu .................................. 21
1.7 Tổng kết chương và câu hỏi ôn tập .................................................. 21
1.7.1 Tổng kết chương....................................................................... 21
1.7.2 Câu hỏi ôn tập ......................................................................... 22
Chương 2 THIẾT KẾ CƠ SỞ DỮ LIỆU – MÔ HÌNH DỮ LIỆU QUAN HỆ
THỰC THỂ ....................................................................................................... 23
2.1 Các bước thiết kế cơ sở dữ liệu........................................................ 23
2.2 Các khái niệm cơ bản của mô hình ER ............................................ 25
2.2.1. Thực thể và kiểu thực thể......................................................... 25
2.2.2 Thuộc tính ................................................................................ 27
2.2.3 Liên kết .................................................................................... 30

1
Cơ sở dữ liệu quan hệ

2.2.4 Mô hình thực thể liên kết (mô hình ER – Entity Relationship
Model) ....................................................................................................... 33
2.3 Mô hình thực thể liên kết mở rộng (mô hình EER) .......................... 36
2.3.1 Lớp cha, lớp con và sự kế thừa ................................................. 36
2.3.2 Chuyên biệt hóa ....................................................................... 37
2.3.3 Tổng quát hóa ........................................................................... 38
2.3.4 Mô hình EER........................................................................... 39
2.4 Phương pháp phân tích dữ liệu theo mô hình ER ............................. 39
2.4.1 Mục đích và yêu cầu của phân tích dữ liệu................................ 40
2.4.2 Cách thức tiếp cận: trên xuống và dưới lên ............................... 40
2.5 Ví dụ về mô hình thực thể liên kết (mô hình ER)............................. 41
2.5.1. Xác định các kiểu thực thể ....................................................... 42
2.5.2 Xác định các thuộc tính và phân loại thuộc tính ........................ 42
2.5.3 Xác định các liên kết và kiểu liên kết ........................................ 43
2.5.4 Xác định số lượng thực thể tham gia liên kết ........................... 44
2.5.5 Vẽ mô hình ER ......................................................................... 44
2.6 Tổng kết chương và câu hỏi ôn tập .................................................. 44
2.6.1 Tổng kết chương....................................................................... 44
2.6.2 Câu hỏi ôn tập ......................................................................... 45
2.7 Một số câu hỏi trắc nghiệm ôn tập ................................................... 45
2.8 Bài tập áp dụng ............................................................................... 51
Chương 3 MÔ HÌNH CƠ SỞ DỮ LIỆU QUAN HỆ ................................. 55
Các khái niệm trong mô hình quan hệ ................................................... 55
3.1.1 Thuộc tính (Attribute) ............................................................... 56
3.1.2 Miền giá trị (Domain) ............................................................... 56
3.1.3 Bộ dữ liệu (Data Tube) ............................................................. 56
3.1.4 Quan hệ (Relation) ................................................................... 56
3.1.5 Lược đồ quan hệ ....................................................................... 57
3.2 Ràng buộc toàn vẹn trong quan hệ ................................................... 57
3.2.1 Giới thiệu ................................................................................. 57
3.2.2 Các đặc trưng RBTV ................................................................ 58
3.2.3 Phân loại RBTV ....................................................................... 60
3.2.4 Ví dụ áp dụng ........................................................................... 66
3.3 Các đặc trưng của một quan hệ ........................................................ 68
3.4 Các quy tắc chuyển đổi từ mô hình ER sang mô hình quan hệ ......... 69

2
Cơ sở dữ liệu quan hệ

3.4.1 Quy tắc 1: Chuyển kiểu thực thể mạnh ..................................... 69


3.4.2 Quy tắc 2: Chuyển kiểu thực thể yếu ........................................ 70
3.4.3 Quy tắc 3: Chuyển các liên kết 1-1 ........................................... 71
3.4.4 Quy tắc 4: Chuyển các liên kết 1 – n ......................................... 71
3.4.5 Quy tắc 5: Chuyển đổi các liên kết M-N ................................... 72
3.4.6 Quy tắc 6: Chuyển đổi các liên kết có bậc lớn hơn 2. ................ 72
3.4.7 Quy tắc 7: Chuyển các liên kết “is-a” ....................................... 73
3.4.8 Áp dụng cho bài toán cụ thể ..................................................... 73
3.5 Tổng kết chương và Câu hỏi ôn tập ................................................. 76
3.5.1 Tổng kết chương....................................................................... 76
3.5.2 Câu hỏi ôn tập .......................................................................... 76
3.6 Phần câu hỏi trắc nghiệm................................................................. 76
3.7 Bài tập áp dụng ............................................................................... 81
Chương 4 ĐẠI SỐ QUAN HỆ .................................................................. 82
4.1. Các phép toán cập nhật ................................................................... 82
4.1.1. Phép chèn (Insert): ................................................................... 82
4.1.2. Phép xóa (Delete) .................................................................... 82
4.1.3. Phép cập nhật (UPDATE):....................................................... 83
4.2. Các phép toán đại số quan hệ.......................................................... 84
4.2.1. Phép hợp - UNION .................................................................. 84
4.2.2. Phép giao - INTERSECT ......................................................... 85
4.2.3. Phép trừ - MINUS ................................................................... 85
4.2.4. Phép Tích Đề các ..................................................................... 86
4.2.5. Phép chọn - SELECT (cắt ngang) ............................................ 86
4.2.6. Phép chiếu – PROJECT (cắt dọc) ............................................ 87
4.2.7. Phép kết nối - JOIN ................................................................. 87
4.2.8. Phép chia - DIVISION............................................................. 89
4.2.9. Hàm nhóm và phép toán nhóm ................................................ 89
4.3. Các tính chất của đại số quan hệ ..................................................... 90
4.3.1. Tính chất giao hoán ................................................................. 90
4.3.2. Tính chất kết hợp: .................................................................... 90
4.3.3. Tính chất tích lũy đẳng: ........................................................... 90
4.3.4. Một số tính chất khác:.............................................................. 91
4.4. Truy vấn dữ liệu trong đại số quan hệ ............................................. 91
4.4.1. Biểu thức quan hệ .................................................................... 91

3
Cơ sở dữ liệu quan hệ

4.4.2. Cây đại số quan hệ....................................................................... 92


4.5. Tối ưu hóa câu hỏi .......................................................................... 93
Nguyên tắc tối ưu hóa ....................................................................... 95
4.6. Tổng kết chương và Câu hỏi ôn tập ................................................ 96
Chương 5: PHỤ THUỘC HÀM ............................................................... 98
5.1. Phụ thuộc hàm ................................................................................ 98
5.1.1. Định nghĩa phụ thuộc hàm ....................................................... 98
5.1.2. Hệ tiên đề Amstrong ................................................................ 99
5.2. Bao đóng và bài toán thành viên ................................................... 100
5.2.1. Bao đóng ............................................................................... 100
5.2.2. Bài toán thành viên ................................................................ 103
5.2.3. Tập phụ thuộc hàm tương đương ........................................... 104
5.2.4. Tập phụ thuộc hàm tối thiểu .................................................. 105
5.2.5. Khóa của lược đồ quan hệ...................................................... 108
5.3. Tổng kết chương .......................................................................... 112
5.4. Câu hỏi ôn tập .............................................................................. 112
5.5. Bài tập áp dụng ............................................................................ 114
Chương 6: CHUẨN HÓA CƠ SỞ DỮ LIỆU .......................................... 115
6.1. Nguyên tắc thiết kế Cơ sở dữ liệu ................................................. 115
6.1.1. Nguyên tắc 1: ........................................................................ 115
6.1.2. Nguyên tắc 2: ........................................................................ 115
6.1.3. Nguyên tắc 3.......................................................................... 116
6.1.4. Nguyên tắc 4.......................................................................... 116
6.2 Chuẩn hóa và các dạng chuẩn dữ liệu ........................................... 117
6.2.1 Giới thiệu ............................................................................... 117
6.2.2 Dạng chuẩn 1NF .................................................................... 120
6.2.3 Dạng chuẩn 2NF ..................................................................... 122
6.2.4 Dạng chuẩn 3NF ..................................................................... 127
6.2.5 Dạng chuẩn BCNF (Boyce Codd) ........................................... 131
6.3 Phép tách kết nối không mất mát thông tin .................................... 132
6.3.1 Giới thiệu .............................................................................. 132
6.3.2 Phép tách ............................................................................... 133
6.3.3 Tách – kết nối không mất mát thông tin .................................. 133
6.3.4 Thuật toán kiểm tra tách không tổn thất thông tin ................... 135
6.4 Chuẩn hóa quan hệ ........................................................................ 139

4
Cơ sở dữ liệu quan hệ

6.4.1 Thuật toán phân rã thành các BCNF không tổn thất ................ 139
6.4.2 Thuật toán phân rã thành các 3NF bảo đảm phụ thuộc và không
tổn thất thông tin ...................................................................................... 140
6.4.3 Thuật toán xác định dạng chuẩn cao nhất............................... 142
6.5 Tổng kết chương và câu hỏi ôn tập ............................................... 142
6.5.1 Tổng kết chương..................................................................... 142
6.5.2 Câu hỏi ôn tập ........................................................................ 142
6.6 Một số câu hỏi trắc nghiệm ôn tập ................................................ 143
6.7 Bài tập áp dụng ............................................................................ 144

5
Cơ sở dữ liệu quan hệ

Chương 1 CÁC KHÁI NIỆM CƠ BẢN VỀ CƠ SỞ DỮ LIỆU

Cơ sở dữ liệu (Database – viết tắt là CSDL) là lĩnh vưc nghiên cứu các mô
hình, nguyên lý, phương pháp tổ chức dữ liệu trên các vật mang tin.
Cơ sở dữ liệu đã trở thành một thành phần chủ yếu trong cuộc sống hàng
ngày của xã hội hiện đại. Tại mỗi thời điểm con người thực hiện nhiều hoạt động
cần có giao tiếp với cơ sở dữ liệu như: rút tiền và gửi tiền trong ngân hàng, đăng
ký chỗ trên máy bay và khách sạn, truy cập và tra cứu tài liệu trong thư viện, đặt
mua hàng trực tuyến trên mạng, … Tương ứng, tại các ngân hàng, các cửa hàng,
các công ty và các đại lý, người ta cũng cập nhật tự động dữ liệu để quản lý tiền
bạc và hàng hóa.
Tất cả các ứng dụng trên đều được gọi là ứng dụng cơ sở dữ liệu truyền
thống. Trong đó, hầu hết các thông tin được lưu trữ và truy cập là các văn bản
hoặc số. Những năm gần đây do các tiến bộ về mặt công nghệ và kỹ thuật đã đưa
đến các ứng dụng mới của cơ sở dữ liệu. Các hệ cơ sở dữ liệu đa phương tiện bây
giờ có thể lưu trữ và xử lý hình ảnh, phim và tiếng nói. Các hệ thông tin địa lý có
thể lưu trữ và phân tích bản đồ, các dữ liệu thời tiết và các ảnh vệ tinh. Ngày nay,
kho dữ liệu và hệ thống phân tích trực tuyến được sử dụng nhiều trong các công
ty để lấy ra và phân tích những thông tin có lợi từ các cơ sở dữ liệu lớn nhằm đưa
ra các quyết định. Các kỹ thuật cơ sở dữ liệu động và thời gian thực được sử
dụng trong kiểm tra tiến trình công nghiệp và sản xuất. Các kỹ thuật tìm kiếm cơ
sở dữ liệu đang được sử dụng nhiều cho World Wide Web để cung cấp việc tìm
kiếm các thông tin cần thiết cho người sử dụng bằng cách duyệt qua Internet.
Để hiểu được các cơ sở kỹ thuật của cơ sở dữ liệu chúng ta phải bắt đầu từ
các cơ sở kỹ thuật của cơ sở dữ liệu truyền thống. Mục đích của giáo trình này là
nghiên cứu các kỹ thuật đó. Trong chương này, chúng ta sẽ tìm hiểu định nghĩa
cơ sở dữ liệu, hệ quản trị cơ sở dữ liệu, mô hình cơ sở dữ liệu và một số thuật
ngữ cơ bản khác.
1.1 Cơ sở dữ liệu
1.1.1 Cơ sở dữ liệu là gì
Dữ liệu (Data): Các thông số, đặc trưng cơ bản có thực và thu thập được
của một đối tượng cần quản lý. Ví dụ: đối tượng cần quản lý là sinh viên, khi đó
dữ liệu về 1 sinh viên là họ tên, ngày sinh, giới tính, quê quán, lớp, khoa, trường,
kết quả học tập, ... của sinh viên đó.
File dữ liệu hay bảng dữ liệu (Data File hoặc Data Table): Là một file
hoặc một bảng lưu trữ các dữ liệu về cùng một loại đối tượng và có chung một ý
nghĩa sử dụng. Các dữ liệu đó có cùng cấu trúc và được lưu trữ dưới dạng bản
ghi trong 1 danh sách được đánh chỉ số hoặc trên bộ nhớ ngoài của máy tính

6
Cơ sở dữ liệu quan hệ

Cơ sở dữ liệu (DataBase): Là tập các file hoặc các bảng dữ liệu có quan hệ
với nhau và có chung một ý nghĩa sử dụng.
Ví dụ cơ sở dữ liệu phục vụ cho công tác tuyển sinh gồm một số bảng dữ
liệu sau: bảng dữ liệu hồ sơ thí sinh, bảng dữ liệu quản lý thi, bảng dữ liệu quản
lý đánh phách, các bảng dữ liệu quản lý điểm các môn thi theo số phách.... Các
bảng này chứa các dữ liệu về các thi sinh của một hội đồng tuyển sinh.
Cơ sở dữ liệu hiện nay bao gồm các loại dữ liệu cơ bản như: âm thanh,
tiếng nói, chữ viết, văn bản, đồ họa, hình ảnh tĩnh hay hình ảnh động, … được
mã hóa dưới dạng các chuỗi bit và được lưu dưới dạng file dữ liệu trong bộ nhớ
của máy tính. Cấu trúc dữ liệu được mô tả theo quy tắc dựa trên lý thuyết toán
học.
Cơ sở dữ liệu là tài nguyên thông tin dùng chung cho nhiều người khác
nhau, bất kỳ người nào sử dụng trên máy tính hay tại các thiết bị đầu cuối về mặt
nguyên tắc đều có quyền truy nhập khai thác toàn bộ hay một phần dữ liệu theo
chế độ trực tuyến hay tương tác không phụ thuộc vào vị trí địa lý của người sử
dụng với các tài nguyên đó.
Khi xây dựng một cơ sở dữ liệu của bài toán cần đảm bảo tối thiểu các yêu
cầu sau:
Tính cấu trúc: Dữ liệu trong CSDL phải được lưu trữ theo một cấu trúc nhất
định nào đó tương ứng với yêu cầu bài toán hoặc thực tế.
Tính toàn vẹn: Các giá trị dữ liệu được lưu trữ phải thỏa mãn một số ràng
buộc, tùy thuộc vào hoạt động của tổ chức mà CSDL phản ánh.
Tính nhất quán: Sau các thao tác cập nhật dữ liệu và ngay cả khi có sự cố
xảy ra thì dữ liệu trong CSDL vẫn phải đảm bảo được tính đúng đắn tương ứng
với thực tế.
Tính an toàn và bảo mật: CSDL cần được bảo vệ an toàn, ngăn được những
truy xuất không được phép và phải khôi phục được CSDL khi có sự cố.
Tính độc lập: một CSDL phục vụ cho nhiều mục đích khai thác khác nhau
vì vậy dữ liệu độc lập với ứng dụng, không phụ thuộc vào bài toán cụ thể,
phương tiện lưu trữ và xử lý
Tính không dư thừa: không được lưu trữ những dữ liệu trùng lặp hay những
thông tin có thể dễ dàng tính toán từ dữ liệu khác
1.1.2 Các tính chất của một cơ sở dữ liệu
Một cơ sở dữ liệu thường có các tính chất sau:
- Một cơ sở dữ liệu biểu thị một khía cạnh nào đó của thế giới thực như
hoạt động của một công ty, một nhà trường, một ngân hàng, … Những thay đổi
của thế giới thực phải được phản ánh một cách trung thực vào trong cơ sở dữ

7
Cơ sở dữ liệu quan hệ

liệu. Những thông tin được đưa vào trong một cơ sở dữ liệu tạo thành một không
gian cơ sở dữ liệu hoặc là một “thế giới nhỏ”.
- Một cơ sở dữ liệu được thiết kế và được phổ biến cho một mục đích riêng.
Nó có một nhóm người sử dụng có chủ định và có một số ứng dụng được xác
định phù hợp với mối quan tâm của ngưởi sử dụng. Hay, một cơ sở dữ liệu có
một nguồn cung cấp dữ liệu, một mức độ tương tác với các sự kiện trong thế giới
thực và một người quan tâm tích cực đến các nội dung của nó.
- Một cơ sở dữ liệu là một tập hợp dữ liệu liên kết với nhau một cách logic
và mang ý nghĩa nhất định nào đó. Một cơ sở dữ liệu không phải là một tập hợp
tùy tiện.
Một cơ sở dữ liệu thường có một kích thước tùy ý và có độ phức tạp thay
đổi. Có những cơ sở dữ liệu chỉ có vài chục hoặc vài trăm bản ghi (như cơ sở dữ
liệu quản lý lương của một doanh nghiệp nhỏ) và cũng có những cơ sở dữ liệu có
dung lượng rất lớn lên đến hàng nghìn bản ghi (như cơ sở dữ liệu tính toán cước
phí điện thoại hoặc ngân hàng). Cơ sở dữ liệu phải được tổ chức quản lý sao cho
những người sử dụng có thể tìm kiếm dữ liệu, cập nhật dữ liệu và lấy dữ liệu ra
khi cần thiết. Một cơ sở dữ liệu có thể được tạo ra và duy trì một cách thủ công
và cũng có thể được tin học hóa. Một cơ sở dữ liệu được tin học hóa tạo ra và
duy trì bằng một nhóm chương trình ứng dụng hoặc bằng một hệ quản trị cơ sở
dữ liệu.
1.1.3 Sự cần thiết của cơ sở dữ liệu
Việc tổ chức lưu trữ dữ liệu theo lý thuyết cơ sở dữ liệu có những ưu điểm
sau:
- Giảm bớt dư thừa dữ liệu trong lưu trữ: trong các ứng dụng lập trình
truyền thống như lập trình C/C++ thì phương pháp tổ chức lưu trữ dữ liệu vừa
tốn kém, lãng phí bộ nhớ và các thiết bị lưu trữ, vừa dư thừa thông tin lưu trữ. Ví
dụ trong bài toán “quản lý điểm sinh viên” và “quản lý giảng dạy giáo viên”,
tương ứng với mỗi bài toán thì một chương trình cần lưu trữ trên một dữ liệu
riêng biệt, độc lập với nhau. Tuy nhiên, trong cả hai chương trình cùng xử lý
chung một số thuộc tính chung như mã môn học, tên môn học, số học trình,…
Như vậy với cách lưu trữ truyền thống thì các dữ liệu được mô tả độc lập với
nhau và lưu trữ hoàn toàn độc lập với nhau vì vậy gây ra sự dư thừa và tốn bộ
nhớ. Nếu tổ chức lưu trữ theo lý thuyết cơ sở dữ liệu thì có thể hợp nhất các tệp
lưu trữ của các bài toán trên lại và cho phép các chương trình có thể cùng chia sẻ
tài nguyên trên cùng một cơ sở dữ liệu.
- Tổ chức lưu trữ dữ liệu theo lý thuyết cơ sở dữ liệu sẽ tránh được sự
không nhất quán trong lưu trữ dữ liệu và bảo đảm được tính toàn vẹn của dữ liệu.
Nếu một thuộc tính được mô tả trong nhiều tệp dữ liệu khác nhau và lặp lại nhiều

8
Cơ sở dữ liệu quan hệ

lần trong các bản ghi, khi thực hiện việc cập nhật, sửa đổi và bổ sung sẽ không
sửa hết các nội dung của các mục đó. Nếu dữ liệu càng nhiều thì sự sai sót khi
cập nhật, bổ sung càng lớn. Khả năng xuất hiện mâu thuẫn, không thống nhất,
không nhất quán thông tin càng nhiều từ đó dẫn đến sự nhập nhằng trong việc
lưu trữ dữ liệu. Do đó, kéo theo sự dị thường thông tin, thừa, thiếu và mâu thuẫn
thông tin.
- Sự không nhất quán dữ liệu trong lưu trữ làm cho dữ liệu mất đi tính toàn
vẹn của nó, tính toàn vẹn dữ liệu đảm bảo cho sự lưu trữ dữ liệu luôn luôn đúng.
Không thể có môn học ngoài quy định của khoa quản lý hoặc ngày sinh của sinh
viên được xây dựng sau ngày ra trường tốt nghiệp của sinh viên, …
- Tổ chức lưu trữ dữ liệu theo lý thuyết cơ sở dữ liệu có thể triển khai đồng
thời nhiều ứng dụng trên cùng một cơ sở dữ liệu: điều này có nghĩa là các ứng
dụng không chỉ chia sẻ chung tài nguyên dữ liệu mà còn trên cùng một cơ sở dữ
liệu có thể triển khai đồng thời nhiều ứng dụng khác nhau tại các thiết bị đầu
cuối.
1.2 Hệ quản trị cơ sở dữ liệu
1.2.1 Định nghĩa hệ quản trị cơ sở dữ liệu
Một hệ quản trị cơ sở dữ liệu là một tập hợp chương trình giúp cho người
sử dụng tạo lập, cập nhật và khai thác mọi cơ sở dữ liệu. Nó là một hệ thống
phần mềm phổ dụng, làm dễ dàng quá trình định nghĩa, xây dựng và thao tác cơ
sở dữ liệu cho các ứng dụng khác nhau.
Định nghĩa một cơ sở dữ liệu bao gồm việc đặc tả các kiểu dữ liệu, các cấu
trúc và các ràng buộc cho các dữ liệu được lưu trữ trong cơ sở dữ liệu.
Xây dựng một cơ sở dữ liệu là quá trình lưu trữ các dữ liệu trên các phương
tiện lưu trữ được hệ quản trị cơ sở dữ liệu kiểm soát.
Thao tác một cơ sở dữ liệu bao gồm các chức năng truy vấn cơ sở dữ liệu
để lấy ra các dữ liệu cụ thể, cập nhật cơ sở dữ liệu để phản ánh các thay đổi trong
thế giới nhỏ và tạo ra các báo cáo từ các dữ liệu.
Các hệ quản trị cơ sở dữ liệu dùng để thể hiện một cơ sở dữ liệu tin học hóa
có thể là phổ dụng (là một phần mềm đóng gói) hoặc có thể là chuyên dụng (là
một tập các phần mềm được tạo ra với một mục đích riêng).

9
Cơ sở dữ liệu quan hệ

1.2.2 Các chức năng của một hệ quản trị cơ sở dữ liệu


Một hệ quản trị cơ sở dữ liệu hiện nay có các chức năng sau:
- Mô tả dữ liệu tạo lập và duy trì sự tồn tại của cơ sở dữ liệu
- Cho phép truy xuất vào cơ sở dữ liệu theo thẩm quyền đã được cấp
- Cập nhật, chèn thêm loại bỏ hay sửa đổi dữ liệu vào tệp
- Tạo mối liên kết giữa các thực thể
- Đảm bảo tính độc dữ liệu, tức là cấu trúc dữ liệu độc lập với các ứng dụng
chương trình
- Cung cấp các phương tiện sao lưu và phục hồi dữ liệu
1.2.3 Các thành phần của một hệ quản trị cơ sở dữ liệu
Một hệ quản trị cơ sở dữ liệu 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ữ truy vấn dữ liệu (Structured Query Language)
- Bộ báo cáo
- Bộ đồ họa
- Bộ giao tiếp ngôn ngữ chủ
- Ngôn ngữ thủ tục
- Từ điển dữ liệu
- Bộ phát sinh ứng dụng

10
Cơ sở dữ liệu quan hệ

1.2.4 Người quản trị CSDL


Người quản trị cơ sở dữ liệu là một người hay một nhóm người có khả năng
chuyên môn cao về công nghệ tin học, có trách nhiệm quản lý và điều khiển toàn
bộ hoạt động của các hệ cơ sở dữ liệu. Vì vậy người quản trị cơ sở dữ liệu cần
phải đặt ra các hình thức, quy định cho người sử dụng nhằm ngăn chặn việc truy
nhập trái phép vào các hệ cơ sở dữ liệu. Người quản trị cơ sở dữ liệu có thể cho
phép người sử dụng những quyền truy cập như chỉ được phép đọc, đọc một phần,
có thể sửa, bổ sung một phần, …
Đối với người quản trị cơ sở dữ liệu có một số nhiệm vụ chính sau:
- Xác định thực thể và nội dung thông tin cần lưu trữ tương ứng của bài
toán. Xác định sơ đồ quan niệm đáp ứng yêu cầu truy nhập của người sử dụng.
- Quyết định cấu trúc lưu trữ và chiến lược truy nhập: người quản trị cơ sở
dữ liệu phải xác định cách thức biểu diễn dữ liệu như mô tả cấu trúc lưu trữ
trong, mô tả cấu trúc lưu trữ vật lý. Xác định mô hình dữ liệu, định nghĩa ánh xạ
giữa cấu trúc lưu trữ và sơ đồ ngoài. Thực hiện các chiến lược lưu trữ, quản lý hệ
thống.
- Người quản trị cơ sở dữ liệu phải tạo môi trường giao tiếp giữa người sử
dụng với các hệ cơ sở dữ liệu, vì sơ đồ ngoài cho người sử dụng là cách nhìn dữ
liệu tương ứng với ngôn ngữ con dữ liệu thích hợp, nên người quản trị cơ sở dữ
liệu phải cung cấp sơ đồ quan niệm, các ánh xạ, và các cấu trúc lưu trữ. Kiểm
soát thẩm quyển truy nhập của người sử dụng và bảo đảm quyền truy nhập của
họ.
- Duy trì các tiêu chuẩn thống nhất về các thủ tục lưu trữ và cấu trúc lưu trữ,
biểu diễn thông tin và các chiến lược truy nhập. Kiểm soát và kiểm tra tính đúng
đắn của dữ liệu. Áp dụng các biện pháp an toàn, an ninh dữ liệu
- Xác định chiến lược lưu trữ, sao chép, phục hồi … trong các trường hợp
hư hỏng do sai sót, hoặc trục trặc kỹ thuật
1.2.5 Các loại giao diện trong hệ quản trị csdl
Các hệ quản trị cơ sở dữ liệu hiện nay cung cấp rất nhiều loại giao diện
người dùng thân thiện, các loại giao diện chính gồm có:
- Giao diện dựa trên bảng chọn: các giao diện này cung cấp cho người sử
dụng danh sách các lựa chọn, gọi là bảng chọn và hướng dẫn người sử dụng diễn
đạt một yêu cầu từ đầu đến cuối. Các bảng chọn làm cho người sử dụng không
cần nhớ lệnh và cú pháp của ngôn ngữ truy vấn. Các bảng chọn thả xuống đã trở
thành kỹ thuật phổ biến hiện nay trong các giao diện dựa trên cửa sổ. Chúng
thường được sử dụng trong các giao diện quét, cho phép người sử dụng nhìn thấy
nội dung của một cơ sở dữ liệu theo cách không có cấu trúc.

11
Cơ sở dữ liệu quan hệ

- Giao diện dựa trên mẫu biểu: các giao diện dạng này biểu thị một mẫu
biểu cho người sử dụng. Những người sử dụng có thể điền vào tất cả các ô của
mẫu biểu có sẵn để nhập vào các dữ liệu mới hoặc họ chỉ đền vào một số ô còn
hệ quản trị cơ sở dữ liệu sẽ đưa ra các dữ liệu phù hợp cho các ô khác còn lại.
Các mẫu biểu thường được thiết kế và được lập trình cho các người dùng đơn
giản. Một số hệ thống có các tiện ích giúp người sử dụng từng bước xây dựng
một mẫu biểu trên màn hình.
- Giao diện đồ họa: một giao diện đồ họa thường hiển thị một lược đồ cho
người sử dụng dưới dạng biểu đồ. Người dùng có thể thực hiện một truy vấn
bằng cách thao tác trên biểu đồ. Trong nhiều trường hợp, GUI sử dụng cả các
bảng chọn và các mẫu biểu. Đa số các GUI sử dụng các công cụ trỏ như chuột,
phím để kích các phần của sơ đồ.
- Giao diện cho người quản trị hệ thống: đa số các hệ quản trị cơ sở dữ
liệu có các lệnh ưu tiên, chỉ có những người quản trị hệ thống mới sử dụng các
lệnh đó. Ví dụ như các lệnh thao tác tạo ra các tài khoản, đặt các tham số cho hệ
thống, cấp các tài khoản, thay đổi lược đồ hoặc tổ chức lại các cấu trúc lưu trữ
của cơ sở dữ liệu.
1.3 Mô hình dữ liệu
1.3.1 Kiến trúc của cơ sở dữ liệu
Một cơ sở dữ liệu đươc mô tả theo 3 mức trừu tượng khác nhau phụ thuộc
vào đối tượng nghiên cứu và sử dụng cơ sở dữ liệu : Mức vật lý, mức khái niệm
và mức khung nhìn.

Khung nhin 1

Khung nhin 2 Cơ sở dữ liệu mức Cơ sở dữ


khái niệm liệu mức
vật lý

Khung nhin n

a. Cơ sở dữ liệu mức vật lý


Một tập hợp các file (bảng) dữ liệu, các chỉ mục hoặc những cấu trúc khác
dùng để lưu trữ và truy xuất dữ liệu một cách hiệu quả gọi là cơ sở dữ liệu mức
vật lý. Cơ sở dữ liệu mức vật lý tồn tại thường xuyên trong các thiết bị lưu trữ
(như đĩa từ, băng từ,..).

12
Cơ sở dữ liệu quan hệ

b. Cơ sở dữ liệu mức khái niệm


Cơ sở dữ liệu mức khai niệm là một một sự trừu tượng hóa của thế giới
thực với mục đích mô tả cơ sở dữ liệu trong quá trình nghiên cứu, thiết kế cơ sở
dữ liệu. Các Hệ quản trị cơ sở dữ liệu cung cấp ngôn ngữ định nghĩa dữ liệu
(Data Definition Language – DDL) để mô tả cơ sở dữ liệu mức khái niệm và
ngôn ngữ thao tác dữ liệu trên cơ sở dữ liệu mức khái niệm (Data Manipulation
Language).
Cơ sở dữ liệu mức vật lý là sự cài đặt cụ thể của cơ sở dữ liệu mức khái
niệm.
c. Cơ sở dữ liệu mức khung nhìn
Khung nhìn (View) hay lược đồ con (SubScheme) là một phần của cơ sở dữ
liệu khái niệm hoặc trừu tượng hóa một phần của sơ sở dữ liệu mức khái niệm.
Đây là cách nhìn của người sử dụng đối với cơ sở dữ liệu.
Hầu hêt các hệ quản trị cơ sở dữ liệu đều cung cấp những phương tiện để
khai báo khung nhìn được gọi là ngôn ngữ định nghĩa dữ liệu lược đồ con
(Subscheme Data Definition Language) và các phương tiện để diễn đạt các câu
truy vấn, thao tác dữ liệu lược đồ con (Subscheme Data Manipulation Language).
Các khung nhìn có vai trò quan trọng trong việc bảo mật hệ thống cơ sở dữ
liệu, chỉ những người có nhu cầu và quyền hạn mới có thể đọc được các file dữ
liệu dành cho họ.
1.3.2 Mô hình dữ liệu
a. Khái niệm mô hình dữ liệu
Mô hình dữ liệu (Data Model) là tập hợp các khái niệm dùng để mô tả
cấu trúc của một hệ cơ sở dữ liệu. Cấu trúc hệ cơ sở dữ liệu bao gồm kiểu dữ
liệu, các quan hệ, và các ràng buộc có thể có của dữ liệu. Hầu hết các mô hình
dữ liệu đều kèm theo các thao tác cơ sở dành cho việc tìm kiếm cơ bản và cập
nhật dữ liệu, ngoài ra các mô hình dữ liệu còn cho phép người sử dụng tự
định nghĩa thêm các thao tác mới.
Như vậy để có thể mô tả các hệ cơ sở dữ liệu trong quá trình thiết kế chúng
ta cần sử dụng các mô hình dữ liệu.
Mỗi mô hình dữ liệu đều có mục đính riêng của mình. Các mô hình dữ liệu
được phân loại dựa trên cơ sở những khái niệm của mô hình dùng để mô tả cấu
trúc của cơ sở dữ liệu.
Mô hình dữ liệu có thể hiểu là hệ hình thức toán học gồm có hai phần:
- Một hệ thống các ký hiệu để mô tả dữ liệu
- Một tập hợp các phép toán thao tác trên dữ liệu đó.
Mô hình dữ liệu khi được xây dựng dựa vào một số đặc trưng:
- Tính ổn định khi thiết kế mô hình dữ liệu

13
Cơ sở dữ liệu quan hệ

- Tính đơn giản: dễ hiểu và dễ thao tác


- Tính dư thừa phải kiểm tra kỹ càng
- Cơ sở lý thuyết vững chắc
Dựa trên mục đích sử dụng người phân loại mô hình dữ liệu thành 3 dạng:
Mô hình dữ liệu mức ngoài: dùng để mô tả cơ sở dữ liệu cho người sử
dụng.
Mô hình dữ liệu mức quan niệm đưa ra các khái niệm mô tả cơ sở dữ liệu
mức khái niệm, Mô hình dữ liệu mức quan niệm là cách nhìn dữ liệu một cách
tổng quát của người sử dụng. Nghĩa là có rất nhiều cách nhìn dữ liệu ở mô hình
ngoài, nhưng chỉ có duy nhất một cách nhìn dữ liệu ở mức quan niệm. Và việc
biểu diễn toàn bộ thông tin trong cơ sở dữ liệu là duy nhất.
Mô hình dữ liệu mức vật lý dùng mô tả cơ sở dữ liệu mức vật lý bao gồm
chi tiết cách thức lưu trữ dữ liệu trên máy tính, các khái niệm trong mô hình dữ
liệu mức vật lý có ý nghĩa với các đặc trưng của máy tính chứ không dành cho
người sử dụng.
b. Ý nghĩa của mô hình dữ liệu
Việc thiết kế cơ sở dữ liệu được thực hiện đơn giản hơn nhiều khi ta sử
dụng các mô hình. Các mô hình là sự trừu tượng đơn giản của các sự kiện trong
thế giới thực. Một mô hình cơ sở dữ liệu là một tập hợp các khái niệm dùng để
biểu diễn các cấu trúc của cơ sở dữ liệu. Cấu trúc của một cơ sở dữ liệu là các
kiểu dữ liệu, các mối liên kết và các ràng buộc phải tuân theo trên các dữ liệu.
Một số mô hình còn có thêm một tập hợp các phép toán cơ bản để đặc tả thao tác
trên cơ sở dữ liệu.
Khi thiết kế mô hình nếu thiết kế tốt sẽ đưa ra các cơ sở dữ liệu tốt và trên
cơ sở đó sẽ có các ứng dụng tốt. Ngược lại, mô hình không tốt sẽ đưa đến thiết kế
cơ sở dữ liệu tồi và dẫn đến các ứng dụng không đúng.
Mô hình dữ liệu được xác định bởi một sơ đồ dữ liệu mô tả của nhiều kiểu
thực thể, chẳng hạn như kiểu thực thể sinh viên, giáo viên, môn học, … Sơ đồ dữ
liệu bao gồm các định nghĩa về các kiểu bản ghi, đó là các ràng buộc cho quyền
và tính toàn vẹn thích hợp. Những ràng buộc này chính là các tính chất của dữ
liệu, tính liên kết các thuộc tính cùng một kiểu dữ liệu. Các định nghĩa này không
bao hàm về cấu trúc lưu trữ, cũng như về chiến lược truy nhập, chúng chỉ là các
định nghĩa về nội dung thông tin, về tính độc lập của dữ liệu trong mô hình quan
niệm.
c. Khái niệm lược đồ (Scheme) và thể hiện (Instance)
Ngoài việc phân chia các mức trừu tượng như trên, chúng ta còn một cách
hiểu khác về tính hai mặt của cơ sở dữ liệu đó là lược đồ và thể hiện. Khi thiết kế
cơ sở dữ liệu người ta quan tâm đến những hoạch định và cấu trúc trên cơ sở dữ
liệu, điều đó được biểu diễn thông qua lược đồ của cơ sở dữ liệu; nhưng khi sử

14
Cơ sở dữ liệu quan hệ

dụng người ta lại quan tâm đến dữ liệu thực sự tồn tại trong cơ sở dư liệu, đó là
thể hiện của cơ sở dữ liệu.
Lược đồ dữ liệu thường được sử dụng để biểu diễn cơ sở dữ liệu mức khái
niệm, thông qua các khái niệm của mô hình dữ liệu quan niệm. Điều đó tạo ra sự
ổn định của sơ đồ dữ liệu vì mô hình quan niệm luôn ổn định. Nếu lược đồ dữ
liệu không ổn định thì các ứng dụng và mô hình ngoài cũng không ổn định. Lược
đồ dữ liệu chỉ được thay đổi khi có sự điều chỉnh trong thế giới thực, đòi hỏi điều
chỉnh lại định nghĩa sao cho phản ánh đúng và chính xác so với thực tế hơn.
1.3.3 Một số mô hình dữ liệu
a. Mô hình thực thể liên kết (Entity Relationship Model – ER): Là mô
hình cho phép mô tả các thực thể thông qua các thuộc tính và mối liên hệ giữa
các thực thể.
b. Mô hình cơ sở dữ liệu quan hệ
Mô hình dữ liệu quan hệ do E.F. Codd đề xuất. Nền tảng cơ bản của mô
hình cơ sở dữ liệu quan hệ là khái niệm lý thuyết tập hợp trên các quan hệ, tức là
tập các bộ giá trị.
Mô hình này tiến hành biểu thị dữ liệu trong một CSDL như một tập các
quan hệ và một quan hệ là một bảng các giá trị gồm các dòng và các cột
c. Mô hình dữ liệu mạng
Mô hình dữ liệu mạng (hay còn gọi là mô hình lưới) là mô hình được biểu
diễn bởi một đồ thị có hướng.
Các thành phần trong mô hình dữ liệu mạng:
- Loại mẫu tin (Record Type): là mẫu đặc trưng cho từng loại đối tượng
riêng biệt, được biểu diễn bởi một hình chữ nhật.
- Mẫu tin hay bản ghi (Record): là thể hiện cụ thể của loại mẫu tin
- Loại liên hệ (Set Type): là sự liên kết giữa một loại mẫu tin chủ với một
loại mẫu tin thành viên, được biểu diễn bởi một hình bầu dục. Trong loại liên hệ,
cần chỉ ra số lượng các mẫu tin tham gia trong mỗi kết hợp. Các loại liên hệ: 1-1:
mỗi mẫu tin của mẫu tin chủ chỉ kết hợp với đúng một mẫu tin thành viên; 1-n;
n-1; Đệ quy: một loại mẫu tin chủ cũng có thể đồng thời là loại mẫu tin thành
viên với chính nó.
Sự liên kết giữa 2 loại mẫu tin được thể hiện bởi các cung có hướng đi từ
loại mẫu tin chủ tới loại liên hệ và từ loại liên hệ tới loại mẫu tin thành viên.
d. Mô hình dữ liệu phân cấp:
Mô hình dữ liệu phân cấp là một cây (Tree) trong đó mỗi nút của cây biểu
diễn một thực thể, giữa nút con và nút cha được liên hệ với nhau theo một mối
quan hệ xác định.

15
Cơ sở dữ liệu quan hệ

Trong mô hình phân cấp, loại mẫu tin được mô tả giống trong mô hình
mạng. Loại liên hệ: Kiểu liên hệ là phân cấp, theo cách: Mẫu tin thành viên chỉ
đóng vai trò thành viên của một mối liên hệ duy nhất, tức là thuộc một chủ duy
nhất.
Như vậy, mối liên hệ từ mẫu tin chủ tới các mẫu tin thành viên là 1-n, và từ
mẫu tin thành viên tới mẫu tin chủ là 1-1.
Giữa hai loại mẫu tin chỉ tồn tại một mối liên hệ duy nhất
e. Mô hình dữ liệu hướng đối tượng
Hiện nay, mô hình dữ liệu hướng đối tượng là loại mô hình tiên tiến nhất
hiện nay, dựa trên cách tiếp cận hướng đối tượng. Trong mô hình này sử dụng
các khái niệm như lớp, sự kế thừa, kế thừa bội…
Phương pháp tiếp cận này còn mới mẻ và các hệ quản trị CSDL hướng đối
tượng hiện nay vẫn chưa nhiều và chưa thuần nhất
f. Mô hình dữ liệu kho dữ liệu
Kho dữ liệu hay được viết là Data Warehouse. Kho dữ liệu là một tập các
dữ liệu có những đặt điểm sau: Tập trung vào một chủ đề, tổng hợp từ nhiều
nguồn dữ liệu khác nhau, từ nhiều thời gian, và không sửa đổi.
Thông thường mô hình kho dữ liệu được dùng trong việc hỗ trợ ra quyết
định trong công tác quản lý.
1.4 Ví dụ về một cơ sở dữ liệu
Chúng ta tìm hiểu về cơ sở dữ liệu mà chúng ta đang tiếp cận, đó là cơ sở
dữ liệu QUẢN LÝ ĐIỂM SINH VIÊN. Cơ sở dữ liệu này lưu giữ các thông tin
liên quan đến sinh viên, các môn học, điểm sinh viên, … cơ sở dữ liệu được tổ
chức thành các bảng: SINH VIÊN lưu giữ dữ liệu mô tả thông tin của một sinh
viên, bảng MÔN HỌC lưu giữ các dữ liệu về một môn học, bảng HỌC PHẦN
lưu giữ dữ liệu về học phần (lớp môn học) của các môn học, bảng ĐIỂM lưu giữ
thông tin điểm của từng học phần của các sinh viên và bảng ĐIỀU KIỆN TIÊN
QUYẾT lưu giữ các thông tin về môn học cần biết trước đủ điều kiện được học
môn tiếp theo.
Bảng dữ liệu ví dụ sau
SINH VIÊN Mã SV Họ tên SV Lớp Chuyên nghành
1 Nguyễn Thị Hải 09B1 CNTT
2 Trần Thanh Thủy 09B2 CNTT
3 Đào Mạnh Hà 710B1 Tin ứng dụng
4 Vương Thành Huy 10B1 Tin ứng dụng
5 Đào Mạnh Hải 11B2 CNTT

16
Cơ sở dữ liệu quan hệ

6 Nguyễn Thanh Hưng 11B3 CNTT

MÔN HỌC Mã MH Tên Môn học Số trình Khoa


101 Tin học đại cương 4 CNTT
102 Cấu trúc Dữ liệu 4 CNTT
103 Toán rời rạc 4 CNTT
105 Cơ sở dữ liệu 4 CNTT
106 Anh văn 1 3 Ngoại ngữ
107 Đường lối 2 Cơ bản

HỌC PHẦN Mã HP Mã MH Học kỳ Năm Tên GV


1011 101 1 2011 Hải
1012 101 2 2012 Huệ
1031 103 1 2010 Thành
1032 103 2 2011 Đức
1021 102 3 2012 Vân
1041 104 4 2011 Tùng
1051 105 5 2011 Lan

BẢNG ĐIỂM Mã SV Mã Học phần Điểm


1 1011 7
1 1021 6
1 1031 5
2 1012 5
2 1022 6
3 1041 6

ĐIỀU KIỆN TIÊN QUYẾT Mã Môn Học Mã môn biết trước


102 101
103 101
103 102

17
Cơ sở dữ liệu quan hệ

105 102
105 103

1.5 Các mô hình truy xuất dữ liệu


1.5.1 Mô hình cơ sở dữ liệu Client – Server
Mục đích chính khi kết nối các máy tính thành mạng là để chia sẻ các tài
nguyên thông tin, một máy chủ cung cấp các loại dịch vụ cho nhiều máy khách
thông qua môi trường mạng. Lúc này, cả máy khách và máy chủ đều cùng tham
gia quá trình xử lý, vì vậy mô hình Client – Server 2 lớp trở nên phổ biến. Các
máy khách (Client) chia sẻ gánh nặng xử lý của máy chủ trung tâm. Khi máy
khách có các yêu cầu ứng dụng, nó gửi yêu cầu về máy chủ được kết nối với cơ
sở dữ liệu, máy chủ xử lý và gửi lại kết quả về máy khách.

Mô hình Client – Server 2 lớp


Trên máy chủ thường cài đặt các hệ cơ sở dữ liệu bao gồm các bảng biểu,
các thủ tục lưu trữ, … và điều khiển các tiến trình cơ bản: quản lý dữ liệu, bảo
mật dữ liệu, thực hiện truy vấn, ràng buộc và các thủ tục lưu trữ, điều khiển lỗi.
Trên phía máy khách thường cài đặt các giao diện người sử dụng để người
dùng đưa ra các yêu cầu xử lý trên cơ sở dữ liệu tương ứng từ phía server.
Tuy nhiên mô hình Client – Server vẫn còn một số bất cập:
- Mô hình Client/Server 2 lớp có hiệu quả cao với cac ứng dụng nhỏ và số
lượng người sử dụng hạn chế. Khi nhiều máy khách (Clients) kết nối truy nhập
vào cơ sở dữ liệu thì năng lực quản lý & xử lý của máy chủ (Server) sẽ bị giảm
xuống, tốc độ xử lý chậm.
- Nhiều kết nối dữ liệu phải được duy trì.
- Mã nguồn không có khả năng dùng sử dụng lại. Một ứng dụng tồn tại
trong nhiều khối mã nguồn khác nhau được cài đặt trên máy khách. Vì vậy khi có
sự thay đổi mã nguồn người ta cần phải cài đặt lại trên tất cả máy khách, điều này
rất khó có thể thực hiện được.
- Không có lớp trung gian điều khiển sự bảo mật và các giao dịch giữa máy
khách và máy chủ.

18
Cơ sở dữ liệu quan hệ

1.5.2 Mô hình Client – Server nhiều tầng


Trong mô hình Client/Server 3 lớp (hay nhiều lớp), quá trình xử lý được
phân tán trên 3 lớp khác nhau với các chức năng riêng biệt. Vì vậy mô hình này
rất thích hợp cho việc tổ chức hệ thống thông tin trên mạng Internet và mạng
Intranet hay trong các mạng cục bộ. Phát triển mô hình 3 lớp sẽ khắc phục được
một số hạn chế xảy ra của mô hình 2 lớp. Các hệ cơ sở dữ liệu được cài đặt trên
các máy chủ Web Server và có thể được truy nhập không hạn chế các ứng dụng
và số lượng người dùng.
♦ Lớp khách (Clients): Chức năng của lớp này là cung cấp dịch vụ trình
bày (Presentation Services). Thực hiện việc giao tiếp giũa người sử dụng với lớp
giao dịch thông qua trình duyệt Browser hay trình ứng dụng để thao tác và xử lý
dữ liệu. Thông thường giao diện người sử dụng được chứa trong các File OCX.
Lớp này có thể cài đặt ở dạng ứng dụng Web gồm những trang ASP sử dụng các
File OCX. Trong mô hình Internet (Internet model), lớp khách là trình duyệt
Internet Explorer hay Netscape.
♦ Lớp giao dịch (Business Tier): cung cấp các dịch vụ quản trị, tổ chức và
khai thác CSDL. Các componenet trước đây được cài đặt trên lớp khách, nay
được cài đặt trên lớp giao dịch. Ví dụ, một người sử dụng trên máy khách đặt
mua hàng, lớp giao dịch kiểm tra mã hàng còn nữa hay không mới quyết định
tiếp tục bán hay không bán. Thành phần của lớp giao dịch trong mô hình Internet
là Web Server và COM+/MTS. Công nghệ của Microsoft với Web Server là IIS
(Internet Information Services) sử dụng ASP để kết nối Client với COM. Web
Server giao tiếp với COM+/MTS component qua COM. COM+/MTS component
điều khiển tất cả giao tiếp với lớp dữ liệu nguồn thông qua ODBC hoặc OLE -
DB.
♦ Lớp nguồn dữ liệu (Data Source): Lớp nguồn dữ liệu cung cấp các dịch
vụ tổ chức và lưu trữ các hệ cơ sở dữ liệu quan hệ. Sẵn sàng cung cấp dữ liệu cho
lớp giao dịch. Đặc trưng của lớp này là SQL Server quản lý dữ liệu và các thành
phần trong cơ sở dữ liệu như bảng, dữ liệu và các thủ tục lưu trữ. Trong mô hình
Internet lớp nguồn dữ liệu quản lý các hoạt động của một lượng lớn Clients.
Microsoft phát triển DNA mô hình chung (Framework) xây dựng cho ứng dụng
nhiều lớp.
Tóm lại, đặc trưng của mô hình tính toán phân tán là các tài nguyên của
mạng như thiết bị phần cứng, chương trình, dữ liệu được phân tán theo địa lý trên
mạng. Người sử dụng có thể truy nhập khai thác trực tuyến hoặc và khai thác
tương tác dữ liệu từ xa.

19
Cơ sở dữ liệu quan hệ

Mô hình Client – Server 3 lớp có sử dụng Middlewave server

Mô hình Client – Server 3 lớp có sử dụng Application server


1.6 Con người trong hệ cơ sở dữ liệu
Với một cơ sở dữ liệu lớn, có rất nhiều người tham gia vào việc thiết kế, sử
dụng và duy trì cơ sở dữ liệu.
1.6.1 Người quản trị hệ CSDL – Database Adminstrator
Trong một đơn vị có nhiều người cùng sử dụng các tài nguyên cơ sở dữ
liệu thì cần phải có một người làm nhiệm vụ giám sát và quản lý cơ sở dữ liệu
đó. Trong môi trường hệ cơ sở dữ liệu, các tài nguyên cần dùng chung là cơ sở
dữ liệu, hệ quản trị cơ sở dữ liệu và các phần mềm liên quan. Người làm vai trò
quản trị hệ cơ sở dữ liệu là người chịu trách nhiệm quản lý và phân chia tài
nguyên đó. Người quản trị chịu trách nhiệm trong việc cho phép và giới hạn truy
cập đến cơ sở dữ liệu, tổ chức và hướng dẫn việc sử dụng cơ sở dữ liệu, cấp các
phần mềm và phần cứng theo yêu cầu cần thiết.
1.6.2 Người thiết kế cơ sở dữ liệu – Database Designer
Người thiết kế cơ sở dữ liệu là người chịu trách nhiệm xác định được các
dữ liệu sẽ được lưu giữ trong cơ sở dữ liệu, chọn được các cấu trúc thích hợp để
biểu diễn và lưu giữ các dữ liệu đó. Những nhiệm vụ này được thực hiện trước
khi tiến hành cài đặt cơ sở dữ liệu cũng như phổ biến cơ sở dữ liệu. Người thiết
kế có trách nhiệm giao thiệp với những người sử dụng tương lại để hiểu được các
đòi hỏi của họ và đưa ra một thiết kế thỏa mãn các yêu cầu đó. Người thiết kế
cũng có nhiệm vụ trao đổi với các nhóm người sử dụng khác và có khả năng hỗ
trợ các yêu cầu của các nhóm.

20
Cơ sở dữ liệu quan hệ

1.6.3 Người sử dụng – End User


Những người sử dụng là những người mà công việc của họ đòi hỏi truy cập
đến cơ sở dữ liệu để truy vấn, cập nhật và sinh ra các thông tin. Có thể chia
những người sử dụng thành hai nhóm chính: người sử dụng thụ động (là người
không có kiến thức về cơ sở dữ liệu) và người sử dụng chủ động (là những người
có hiểu biết tốt về hệ cơ sở dữ liệu).
Đối với người sử dụng thụ động thì họ là nhóm người sử dụng chiếm phần
lớn, chức năng sử dụng chính của họ là truy vấn và cập nhật thường xuyên lên cơ
sở dữ liệu bằng cách sử dụng các câu hỏi và các cập nhật chuẩn (là giao tác định
sẵn của chương trình) đã được lập trình và kiểm tra cẩn thận bởi người lập trình.
Nhóm người này chỉ cần học một ít các thao tác do hệ quản trị cơ sở dữ liệu cung
cấp và hiểu được các kiểu gia tác chuẩn đã có đã được thiết kế và cài đặt là có thể
sử dụng được.
Ngược lại, đối với nhóm người sử dụng chủ động thì họ có hiểu biết tốt về
hệ cơ sở dữ liệu, họ có thể tự cài đặt các ứng dụng riêng của mình để làm thỏa
mãn các yêu cầu phức tạp của họ.
1.6.4 Người phân tích hệ thống và lập trình ứng dụng
Người phân tích hệ thống làm nhiệm vụ xác định các yêu cầu của những
người sử dụng (chủ yếu là những người sử dụng thụ động) để đặc tả các chương
trình phù hợp với yêu cầu của họ.
Người viết chương trình ứng dụng thể hiện các đặc tả của người những
phân tích thành chương trình, sau đó tiến hành kiểm thử, sửa lỗi làm tài liệu
hướng dẫn và bảo trì các giao tác định sẵn
1.6.5 Người thiết kế và cài đặt quản trị dữ liệu
Đó là những người thiết kế, cài đặt các modun, giao diện của hệ quản trị cơ
sở dữ liệu thành các phần mềm đóng gói. Một hệ quản trị cơ sở dữ liệu là một hệ
thống phần mềm phức tạp bao gồm nhiều thành phần. Đó là các modun cài đặt từ
điển dữ liệu, ngôn ngữ truy vấn, bộ xử lý giao diện, truy cập dữ liệu, kiểm tra
cạnh tranh, phục hồi và an toàn. Hệ quản trị cơ sở dữ liệu phải giao tiếp với các
hệ thống phần mềm khách như hệ điều hành và chương trình dịch nhiều ngôn
ngữ khác nhau.
1.7 Tổng kết chương và câu hỏi ôn tập
1.7.1 Tổng kết chương
Trong chương này chúng ta đã thảo luận về vai trò của mô hình dữ liệu bậc
cao trong quá trình thiết kế cơ sở dữ liệu. Ta đã làm quen với các khái niệm cơ
bản của mô hình liên kết - thực thể: kiểu thực thể, kiểu liên kết, và các thuộc tính
của chúng. Các kiểu thuộc tính khác nhau cũng đã được xem xét: thuộc tính đơn,

21
Cơ sở dữ liệu quan hệ

thuộc tính phức hợp, thuộc tính đơn trị, thuộc tính đa trị, thuộc tính lưu trữ, thuộc
tính suy diễn được và các thuộc tính có giá trị null. Thông qua một ví dụ cụ thể,
ta đã tiến hành xây dựng mô hình ER “CÔNG TY”. Ngoài ra, chúng ta cũng đã
nói đến mô hình EER, mở rộng của mô hình ER. Các khái niệm “mở rộng” như
lớp, lớp con, kiểu liên kết lớp cha/lớp con, chuyên biệt hoá, tổng quát hoá cũng
đã được giới thiệu và phân tích. Chúng ta cũng đã nói đến cách biểu diễn đồ hoạ
của các mô hình ER và EER.
1.7.2 Câu hỏi ôn tập
1. Cơ sở dữ liệu là gì? Hiểu thế nào là một hệ cơ sở dữ liệu liệu tác nghiệp?
2. Sự cần thiết tổ chức lưu trữ dữ liệu theo lý thuyết cơ sở dữ liệu?
3. Mục tiêu của hệ cơ sở dữ liệu? Ví dụ minh họa?
4. Nêu tính chất của một cơ sở dữ liệu?
5. Tại sao nói, mô hình dữ liệu là cách nhìn toàn bộ nội dung thông tin của
cơ sở dữ liệu, sơ đồ quan niệm là định nghĩa của cách nhìn ấy?
6. Chức năng và vai trò của hệ quản trị cơ sở dữ liệu và người quản trị cơ sở
dữ liệu?
7. Hiểu thể nào về hệ quản trị cơ sở dữ liệu? Người quản trị cơ sở dữ liệu?
8. Nêu các chức năng của một hệ quản trị cơ sở dữ liệu?
9. Trình bày về mô hình cơ sở dữ liệu Client – Server?
10. Liệt kê các nhóm người có liên quan đến hệ cơ sở dữ liệu?

22
Cơ sở dữ liệu quan hệ

Chương 2 THIẾT KẾ CƠ SỞ DỮ LIỆU – MÔ HÌNH DỮ


LIỆU QUAN HỆ THỰC THỂ

Trong chương này, chúng ta sẽ làm quen với mô hình quan hệ thực thể, gọi
tắt là mô hình ER (Entity – Relationship Model). Mô hình ER là một mô hình khá
đơn giản và gần với tư duy trực quan. Mô hình ER còn được coi là mô hình dữ
liệu mức quan niệm cơ bản, được tập trung vào các cấu trúc dữ liệu và các ràng
buộc của dữ liệu để mô tả tập hợp dữ liệu dùng trong hệ thống. Mô hình này
thường được sử dụng trong trường hợp thiết kế các ứng dụng cơ sở dữ liệu và có
nhiều công cụ hỗ trợ thiết kế cơ sở dữ liệu đều sử dụng các khái niệm của mô
hình.
2.1 Các bước thiết kế cơ sở dữ liệu
Hiện nay, quá trình để thiết kế cơ sở dữ liệu cho một ứng dụng cơ sở dữ
liệu được minh họa bằng sơ đồ như sau:

Hình: Các bước để xây dựng chương trình phần mềm


*Bước 1: Tập hợp và phân tích yêu cầu
Bước đầu tiên là tập hợp và phân tích yêu cầu. Trong bước này, người thiết
kế cơ sở dữ liệu sẽ tìm hiểu bài toán (hệ thống – thế giới thực) bằng cách phỏng
vấn trực tiếp những người sử dụng cơ sở dữ liệu hoặc nghiên cứu các tài liệu
nghiệp vụ liên quan trong hệ thống cần xây dựng để hiểu và nắm rõ các yêu cầu
về mặt dữ liệu của họ. Kết quả của bước này là một tập hợp các ghi chép súc tích

23
Cơ sở dữ liệu quan hệ

về các yêu cầu của người sử dụng cũng như của hệ thống. Những yêu cầu của hệ
thống sẽ được đặc tả càng đầy đủ và càng chi tiết càng tốt. Tuy nhiên, song song
với việc tiến hành đặc tả các yêu cầu dữ liệu, cần phải đặc tả các yêu cầu về chức
năng của ứng dụng – hệ thống: xác định được các thao tác cần thực hiện của
người sử dụng đối với cơ sở dữ liệu.
Bước 2: Thiết kế quan niệm
Khi tất cả các yêu cầu của hệ thống được thu thập và phân tích, tiếp theo là
tạo ra lược đồ quan niệm cho cơ sở dữ liệu bằng cách sử dụng mô hình dữ liệu
quan niệm mức cao. Bước này gọi là thiết kế quan niệm. Lược đồ quan niệm là
một mô tả súc tích về các yêu cầu dữ liệu của người người sử dụng trực tiếp với
hệ thống cần xây dựng. Lược đồ bao gồm các mô tả chi tiết của các kiểu thực thể,
kiểu liên kết và các ràng buộc, chúng được biểu diễn bằng các khái niệm do các
mô hình dữ liệu bậc cao cung cấp. Do những khái niệm này không chứa các chi
tiết cài đặt, nên chúng thường dễ hiểu và có thể sử dụng để trao đổi với người
những người sử dụng hệ thống (người không có chuyên môn sâu trong lĩnh vực
công nghệ thông tin). Lược đồ quan niệm mức cao cũng có thể được sử dụng như
là một tài liệu quan trọng để đảm bảo rằng tất cả các đòi hỏi của người sử dụng
đối với hệ thống được thỏa mãn và các đòi hỏi này không mẫu thuẫn. Bằng cách
sử dụng mô hình này cho phép người thiết kế cơ sở dữ liệu chỉ tập trung vào việc
đặc tả các tính chất của cơ sở dữ liệu mà không cần quan tâm chi tiết đến các
thông tin lưu trữ. Một thiết kế cơ sở dữ liệu tốt sẽ làm dễ dàng và không mất thời
gian chỉnh sửa sau này cho công việc của người thiết kế cơ sở dữ liệu trong bài
toán.
Khi thiết kế lược đồ quan niệm, chúng ta có thể sử dụng các phép toán cơ
bản của mô hình dữ liệu để đặc tả các thao tác của người sử dụng được xác định
khi phân tích chức năng. Điều khó khẳng định lược đồ quan niệm thỏa mãn mọi
yêu cầu chức năng được xác định. Trong trường hợp có một số yêu cầu chức
năng không thể nêu ra được trong lược đồ ban đầu thì sau đó chúng ta có thể sửa
đổi lược đồ cho phù hợp.
Bước 3: Thiết kế mức logic
Bước tiếp theo trong thiết kế cơ sở dữ liệu là việc phải cài được một cơ sở
dữ liệu của bài toán bằng một hệ quản trị cơ sở dữ liệu có sẵn. Hầu hết các hệ
quản trị cơ sở dữ liệu hiện này đều sử dụng một mô hình dữ liệu cài đặt cụ thể,
chẳng hạn như mô hình dữ liệu quan hệ hoặc mô hình dữ liệu đối tượng, vì vậy
lúc này ta phải thực hiện chuyển được từ mô hình dữ liệu quan niệm thành mô
hình dữ liệu có thể cài đặt được. Bước này được gọi là thiết kế mức logic hay
ánh xạ mô hình dữ liệu. Kết quả của bước này thu được một lược đồ cơ sở dữ

24
Cơ sở dữ liệu quan hệ

liệu dưới dạng một hình dữ liệu có khả năng cài đặt được bằng một hệ quản trị cơ
sở dữ liệu cụ thể.
Bước 4: Thiết kế mức vật lý
Bước cuối cùng trong thiết kế cơ sở dữ liệu được gọi là thiết kế vật lý. Tại
bước này, ta phải chỉ rõ ra các cấu trúc bên trong, các đường dẫn truy cập, cách
tổ chức tệp cho cơ sở dữ liệu của bài toán. Song song với bước này, các chương
trình ứng dụng cũng được thiết kế và cài đặt như là các giao tác (kết nối) với cơ
sở dữ liệu tương ứng với đặc tả tương tác mức cao.
2.2 Các khái niệm cơ bản của mô hình ER
Mô hình ER xuất phát từ ba khái niệm cơ bản: thực thể, liên kết và thuộc
tính.
2.2.1. Thực thể và kiểu thực thể
Đối tượng được trình bày chính trong mô hình ER là thực thể. Thực thể là
một “vật - đối tượng” (cụ thể hay trừu tượng) tồn tại thực sự và khá ổn định
trong thế giới thực, có sự tồn tại độc lập và có thể phân biệt với các đối tượng
khác mà ta muốn phản ánh nó trong hệ thống thông tin. Tập hợp tất cả các thực
thể giống nhau tạo thành một tập thực thể (kiểu thực thể).
Thực thể cụ thể và trừu tượng: Một thực thể có thể là cụ thể hay trừu
tượng. Thực thể cụ thể là thực thể mà chúng có thể cảm nhận được bằng giác
quan hay có thể nhìn thấy trực tiếp được bằng mắt. Thực thể trừu tượng là thực
thể mà chúng ta không cảm nhận được bằng giác quan (không nhìn thấy trực tiếp
bằng mắt được) nhưng chúng ta có thể nhận biết được bằng nhận thức hoặc bằng
cảm nhận.
Ví dụ: Thực thể cụ thể như:
Nhân viên Nguyễn Thị Thúy Hà
Đơn hàng số 12233444
Thực thể trừu tượng như:
Khoa Công nghệ thông tin
Môn học Cơ sở dữ liệu
Trong mô hình ER chỉ đề cập đến “tập thực thể” hay “kiểu thực thể”.
Kiểu thực thể: là một tập hợp các thực thể có các thông tin cần quản lý
tương tự nhau. Ví dụ, một công ty có nhiều nhân viên, mỗi nhân viên có các
thông tin cần lưu trữ là tương tự nhau, như: mã nhân viên, họ tên, ngày sinh, quê
quán, hệ số lương, …. Vì vậy tập hợp các thực thể nhân viên trong công ty được
mô tả bằng tập thực thể với tên chung là “NHÂN VIÊN”.
Tập thực thể: Một tập hợp các thực thể của một kiểu thực cụ thể trong cơ
sở dữ liệu tại một thời điểm được gọi là một tập thực thể, nó thường được mô tả

25
Cơ sở dữ liệu quan hệ

trong mô hình bằng cách sử dụng tên của kiểu thực thể. Ví dụ: NHÂN VIÊN vừa
dùng để chỉ một kiểu thực thể, vừa để chi tập hợp hiện tại của tất cả các thực thể
nhân viên trong cơ sở dữ liệu. Tương tự, CÔNG TY dùng để chỉ một kiểu thực
thể và cũng chỉ tập hợp của tất cả các thực thể công ty trong cơ sở dữ liệu.
NHÂN VIÊN CÔNG TY
( Mã, Họ tên, Tuổi, Lương) ( Mã, Tên, Địa điểm, Giám đốc)
NV1, Lê Thủy, 30, 800000 CT1, Công ty phần mềm, Hà nội, Vũ Hải
NV2, Nguyễn Hải, 32, CT2, Công ty hoa quả, Hải phòng, Lê Huy
820000
Ký hiệu biểu diễn thực thể: Một kiểu thực thể được biểu diễn trong lược
đồ ER bằng hình chữ nhật có chứa tên kiểu thực thể bên trong.

Cú pháp:

Ví dụ:
Để xác định kiểu thực thể trong hệ thống, chúng ta tiến hành liệt kê các
danh từ riêng dùng để mô tả cho một tập các đối tượng cần được quản lý của hệ
thống.
Trong mô hình ER, kiểu thực thể được chia làm hai loại: kiểu thực thể
mạnh và kiểu thực thể yếu. Kiểu thực thể mạnh được dùng để mô tả những thực
thể có thể tồn tại độc lập trong hệ thống mà không cần phải có sự tồn tại của một
thực thể khác. Ví dụ: thực thể NHÂN VIÊN, CÔNG TY. Kiểu thực thể yếu là
kiểu thực thể mà sự tồn tại của nó phải phụ thuộc vào sự tồn tại của một thực thể
khác hay thực thể yếu chỉ tồn tại trong hệ thống khi có sự tồn tại của một thực thể
khác trong hệ thống. Ví dụ: thực thể THÂN NHÂN trong hệ thống quản lý nhân
viên, một thân nhân chỉ được quản lý nếu thân nhân đó đi kèm với một nhân viên
cụ thể, ngược lại nếu không có nhân viên trong hệ thống thì không có thân nhân
nào được quản lý.
Các thực thể yếu của một kiểu thực thể yếu được xác định bằng cách liên
kết với các với thực thể cụ thể của một kiểu thực thể mạnh khác bằng cách phối
hợp thông qua một số thông tin (thuộc tính) của thực thể mạnh. Ta gọi kiểu thực
thể mạnh khác đó là kiểu thực thể xác định hoặc kiểu thực thể chủ. Giữa kiểu
thực thể mạnh và kiểu thực thể yếu có một liên kết và liên kết được gọi là liên kết
xác định. Ví dụ: Trong công ty, thân nhân của nhân viên có thể được hưởng bảo
hiểm theo nhân viên. Vì vậy, sẽ có một liên kết dạng NHÂN VIÊN – có – THÂN
NHÂN.

26
Cơ sở dữ liệu quan hệ

Biểu diễn liên kết thực thể chủ và thực thể yếu: Trong sơ đồ ER, kiểu
thực thể yếu được biểu diễn bằng hình chữ nhật nét đôi và liên kết xác định giữa
kiểu thực thể yếu với thực thể xác định được biểu diễn bằng hình thoi nét đôi.

Ví dụ:
HÓA ĐƠN - Số: ……
Họ tên người mua:
Cơ quan:
Địa chỉ:
Hình thức thanh toán:
Mã Tên hàng Đ Số Đơn Thành
hàng VT lượng giá tiền

Tổng tiền

……….., ngày tháng năm


Khách hàng Người Lập HĐ
Trong một số trường hợp đặc biệt quan trọng thường gặp là trường hợp các
chứng từ có bảng. Chẳng hạn như một hóa đơn. Trong mẫu hóa đơn ta thấy cần
quản lý nhiều thông tin, tuy nhiên các thông tin có hai loại khác nhau: các thông
tin ngoài bảng – chỉ nhận giá trị duy nhất và các thông tin trong bảng – có thể
nhận nhiều giá trị. Như vậy khi xây dựng mô hình ER thì Hóa đơn là một kiểu
thực thể và các thông tin cần quản lý được lấy làm thuộc tính của thực thể.
2.2.2 Thuộc tính
Mỗi một thực thể được mô tả bằng một số thông tin để xác đinh đặc tính
riêng biệt dùng để phân biệt thực thể này với thực thể khác trong hệ thống. Ví dụ:
một thực thể NHÂN VIÊN được mô tả bằng Mã nhân viên, Họ tên, Ngày sinh,
Quê quán, Hệ số lương, ... của nhân viên đó. Một thực thể cụ thể sẽ có một giá
trị xác định cho từng thuộc tính đó. Ví dụ: nhân viên NV1 có các giá trị cho Họ
tên, Ngày sinh, Quê quán, Hệ số lương là “Lê Thanh Thủy”, #14/5/1980#, “Hà
Nội”, 3.4. Các giá trị mô tả cho từng thực thể cụ thể là thành phần chính của các
dữ liệu được lưu giữ trong cơ sở dữ liệu.

27
Cơ sở dữ liệu quan hệ

Các giá trị lưu trong thuộc tính của từng thực thể phải nhận những giá trị
nguyên tố hoặc đơn như: kiểu chuỗi, kiểu số nguyên, kiểu số thực, kiểu ngày
tháng, …
Để xác định thuộc tính, chúng ta xác định các danh từ mô tả đặc tính, đặc
trưng gắn liền với các tên kiểu thực thể đã xác định.
Biểu diễn thuộc tính: Trong mô hình ER, thuộc tính được biểu diễn bằng
hình elip nét đơn với tên thuộc tính chứa bên trong và gắn liền với thực thể cần
mô tả.

Ký hiệu:
Ví dụ: kiểu thực thể NHÂN VIÊN có các thuộc tính: mã nhân viên, họ tên,
ngày sinh, quê quán.

Trong mô hình ER, có nhiều kiểu thuộc tính khác nhau:


Thuộc tính đơn và thuộc tính phức hợp,
Thuộc tính đơn trị và thuộc tính đa trị,
Thuộc tính lưu trữ và thuộc tính suy dẫn,
Thuộc tính khóa và thuộc tính định danh
Thuộc tính đơn là thuộc tính không thể phân chia ra được thành các thành
phần riêng biệt nhỏ hơn. Ví dụ: thuộc tính Tuổi của một nhân viên là thuộc tính
đơn, thuộc tính Điểm của sinh viên là một thuộc tính đơn.
Thuộc tính phức hợp là thuộc tính mà có thể phân chia thành các thành
phần nhỏ hơn, biểu diễn các thuộc tính cơ bản hơn với các ý nghĩa độc lập. Ví
dụ: thuộc tính Họ tên của nhân viên có thể tác thành thuộc tính Họ chỉ chứa họ,
thuộc tính Tên chỉ chứa tên. Tương tự, thuộc tính Ngày sinh có thể tách thành các
thuộc tính Ngày, Tháng và Năm riêng biệt. Giá trị cuối cùng của thuộc tính phức
hợp là sự kết hợp các giá trị của các thuộc tính thành phần tạo nên thuộc tính
phức hợp. Việc phân chia một thuộc tính phức hợp thành các thuộc tính đơn tùy
thuộc vào hoàn cảnh và yêu cầu của bài toán cụ thể.
Thuộc tính đơn trị là thuộc tính mà mỗi thực thể cụ thể chỉ nhận một giá trị
duy nhất ứng với thuộc tính đó. Ví dụ: thuộc tính Họ tên là thuộc tính đơn trị của
thực thể nhân viên vì mỗi nhân viên chỉ có một họ tên duy nhất, thuộc tính Ngày
sinh là thuộc tính đơn trị vì mỗi nhân viên cũng chỉ có một ngày sinh duy nhất.

28
Cơ sở dữ liệu quan hệ

Thuộc tính đa trị là để chỉ những thuộc tính mà nó có thể nhận một tập các
giá trị cho cùng một thực thể cụ thể, hay nói cách khác thuộc tính đa trị có thể
nhận và lưu trữ nhiều giá trị đồng thời tại một thời điểm. Ví dụ: thuộc tính Bằng
cấp của nhân viên là một thuộc tính đa trị vì một người có thể không có bằng cấp
nào nhưng một người khác có thể có một bằng, một người nhân viên khác nữa có
thể có nhiều bằng. Tương tự, thuộc tính Kỹ năng của nhân viên là một thuộc tính
đa trị vì mỗi một nhân viên có thể có số kỹ là khác nhau (không có kỹ năng, có
một kỹ năng, có hai kỹ năng, …).
Thuộc tính đa trị được biểu diễn bằng hình elip nét đôi với tên thuộc tính
đặt phía trong.

Ví dụ:
Thuộc tính lưu trữ là các thuộc tính mà giá trị của nó phải được nhập vào
khi cài đặt cơ sở dữ liệu. Ví dụ: thuộc tính Họ tên là thuộc tính lưu trữ vì giá trị
ngày sinh của một nhân viên phải được nhập vào cơ sở dữ liệu.
Thuộc tính suy dẫn là các thuộc tính mà giá trị của nó có thể được suy ra từ
giá trị của các thuộc tính khác liên quan theo một nguyên tắc nào đó, là các thuộc
tính không phải nhập vào từ bàn phím mà nó được tính thông qua các thuộc tính
khác theo một công thức nào đó. Ví dụ: Thuộc tính Tổng lương là thuộc tính suy
dẫn vì tổng lương được tính thông qua hệ số lương nhân với lương cơ bản, thuộc
tính Tuổi là thuộc tính suy dẫn vì Tuổi được tính bằng năm hiện tại trừ năm sinh.
Thuộc tính suy dẫn được biểu diễn bằng hình elip nét đứt với tên thuộc tính
đặt phía trong.

Ví dụ:
Định danh là tập thuộc tính có giá trị duy nhất giúp phân biệt thực thể này
với thực thể khác. Các thuộc tính tham gia vào định danh gọi là thuộc tính định
danh hay thuộc tính khóa. Thuộc tính khóa là thuộc tính mà giá trị của nó là
khác nhau đối với mỗi thực thể riêng biệt trong tập thực thể. Đôi khi, nhiều thuộc
tính kết hợp với nhau tạo thành một khóa, nghĩa là tổ hợp các giá trị của các
thuộc tính này phải khác nhau đối với mỗi thực thể. Trong trường hợp như vậy ta
có một thuộc tính khóa phức hợp. Chú ý rằng khóa phức hợp phải tối thiểu,
nghĩa là tất cả các thuộc tính thành phần phải có mặt trong thuộc tính phức hợp
để thỏa mãn tính chất duy nhất. Trong mô hình ER, thuộc tính khóa được biểu
diễn bằng hình elip và cách gạch chân dưới tên của thuộc tính.

Ví dụ:
Đối với mỗi thực thể trong hệ thống, chúng ta có thể tham khảo một số gợi
ý sau để xác định thuộc tính khóa:

29
Cơ sở dữ liệu quan hệ

Giá trị của thuộc tính không bị thay đổi theo thời gian,
Giá trị của thuộc tính không được phép bỏ trống,
Tránh sử dụng những thuộc tính mà giá trị của nó thể hiện thông tin, hay
cấu trúc của nó thể hiện sự phân loại, vị trí, …
Nên chọn những thuộc tính đơn làm định danh thay vì sử dụng kết hợp một
số thuộc tính.
Ví dụ:

2.2.3 Liên kết


Kiểu liên kết (Relationship Types): Kiểu liên kết R giữa n kiểu thực thể E1,
E2,...,En được định nghĩa là tập các mối liên hệ giữa các thực thể từ những kiểu
thực thể đã cho. Theo toán học, R là tập các liên kết thực ri, trong đó mỗi liên kết
ri liên hệ giữa n thực thể (e1, e2, ..., en), mỗi thực thể ej trong liên kết ri là một
thành viên của kiểu thực thể EJ (I J n). Liên kết R là tập con của tích De-cac
giữa tập các thực thể của n kiểu thực thể: E1x E2x...xEn. Mỗi kiểu thực thể E1, E2,
…, En được gọi là tham gia vào liên kết R, và tương tự, mỗi thực thể riêng biệt
e1, e2, …, en được gọi là tham gia vào thể hiện liên kết ri.
Một cách không hình thức, mỗi thể hiện liên kết ri trong R là một sự kết hợp
của các thực thể, mỗi thực thể thuộc về một kiểu thực thể tham gia vào liên kết.
Mỗi liên kết ri như vậy diễn đạt một sự kiện rằng các thực thể tham gia trong ri có
mối quan hệ với nhau theo một cách nào đó ở trong thế giới thực. Ví dụ, trong
thực tế, các nhân viên phải làm cho một đơn vị nào đó, như vậy, có một liên kết
làm việc cho, liên kết giữa kiểu thực thể NHÂN VIÊN và kiểu thực thể ĐƠN VỊ,
hoặc mỗi sinh viên trong khoa sẽ học một môn học nào đó vì thế có mối liên kết
học giữa kiểu thực thể SINH VIÊN và kiểu thực thể MÔN HỌC.
Trong mô hình ER, kiểu liên kết được biểu diễn bằng một hình thoi với tên
liên kết đặt ở trong được nối trực tiếp với các hình chữ nhật biểu diễn tương ứng
kiểu thực thể tham gia vào liên kết. Liên kết được xác định là các động từ mô tả
mối liên quan giữa hai thực thể.
Quy ước:

Ví dụ:

30
Cơ sở dữ liệu quan hệ

Thể hiện thực tế của liên kết:

Thuộc tính liên kết: Các kiểu liên kết cũng có thể có các thuộc tính, giống
như thuộc tính của các kiểu thực thể, thuộc tính của liên kết dùng để mô tả các
thông tin chỉ có khi có hình thành mối liên kết giữa các thực thể. Ví dụ: liên kết
<Làm trưởng phòng> giữa kiểu thực thể NHÂN VIÊN và PHÒNG BAN có thể
có ngày nhận chức để ghi lại ngày của nhân viên đó được giao làm trường phòng,
hoặc liên kết <làm việc trên> giữa kiểu thực thể NHÂN VIÊN và DỰ ÁN có thể
có thuộc tính số giờ để lưu lại tổng số giờ làm của một nhân viên trên một dự án
nào đó.
Thuộc tính của liên kết cũng được được biểu diễn bằng một hình elip và
được nối với kiểu liên kết.
Ví dụ:

Bậc của kiểu liên kết (Degree of Relationship Types): Bậc của kiểu liên
kết là số các kiểu thực thể tham gia liên kết. Ví dụ : liên kết nơi làm là liên kết
bậc 2 (binary).
Ràng buộc trong kiểu liên kết ( Constraints on Relationship types): Ràng
buộc của kiểu liên kết là giới hạn số các thực thể của một kiểu thực thể tham gia
vào liên kết. Tỷ lệ liên kết (ratio) là số lượng các liên kết thực mà một thực thể
có thể tham gia. Đối với liên kết bậc hai (binary) thường có các loại tỷ lệ sau:
1:1, 1:N, N:N.
Các kiểu liên kết giữa các kiểu thực thể được chia thành các kiểu: liên kết
một – một, liên kết một – nhiều, liên kết nhiều – nhiều.

31
Cơ sở dữ liệu quan hệ

Liên kết một – một (1-1) là kiểu liên kết giữa kiểu thực thể A với kiểu thực
thể B nếu một thực thể trong kiểu A liên kết, có quan hệ với duy nhất một thực
thể trong kiểu B và ngược lại. Kiểu liên kết một – một được biểu diễn bằng cách
thêm số 1 ở hai đầu của kiểu thực thẻ.
Ví dụ:

Liên kết một – nhiều (1-n) là kiểu liên kết giữa kiểu thực thể A với kiểu
thực thể B nếu mà một thực thể trong kiểu A liên kết – có quan hệ với nhiều thực
thể trong kiểu B và một thực thể trong kiểu B chỉ liên kết duy nhất với một thực
thể kiểu A. Kiểu liên kết một – nhiều được biểu diễn bằng cách thêm số 1 ở đầu
bên phía một và thêm n ở đầu bên phía nhiều.
Ví dụ:

Liên kết nhiều – nhiều (m-n) là kiểu liên kết giữa kiểu thực thể A với kiểu
thực thể B nếu mà một thực thể trong kiểu A liên kết với nhiều thực thể trong
kiểu B và một thực thể trong kiểu B cũng liên kết với nhiều thực thể kiểu A. Kiểu
liên kết nhiều – nhiều được biểu diễn bằng cách thêm số m và n ở hai đầu của
liên kết.
Ví dụ:

Các liên kết giữa các thực thể không phải lúc nào cũng liên kết giữa 2 kiểu
thực thể mà có thể thay đổi. Số lượng thực thể tham gia vào một mối liên kết
được gọi là bậc của liên kết. Bậc của liên kết thường gặp các dạng sau: Đệ quy,
bậc 2, bậc 3, …
Ví dụ:

32
Cơ sở dữ liệu quan hệ

Tùy theo hệ thống hay yêu cầu của bài toán thì với mỗi kiểu thực thể số
lượng cho phép của từng kiểu thực thể tham gia vào là khác nhau. Khi đó, số
lượng giới hạn các thực thể của một kiểu thực thể tham gia vào một mối liên kết
được gọi là lực lượng tham gia liên kết. Lực lượng tham gia liên kết được biểu
diễn bởi cặp hai số dưới dạng (min, max) với min là số lượng thực thể tối thiểu
có thể tham gia vào mối liên kết và max là số lượng thực thể tối đa được phép
tham gia vào liên kết, mặc định min = 0 và max = n.
Ví dụ:

2.2.4 Mô hình thực thể liên kết (mô hình ER – Entity Relationship Model)
Mô hình thực thể liên kết là một sơ đồ để biểu diễn rút gọn các thực thể, các
thuộc tính và các mối quan hệ liên kết giữa các thực thể. Trong mô hình ER gồm
tập hợp các đỉnh và các cạnh, với các đỉnh là các thực thể hay các thuộc tính hoặc
các quan hệ còn các cạnh là các đường nối giữa thực thể với thực thể, giữa thực
thể với thuộc tính.
Mục đích của mô hình ER:

33
Cơ sở dữ liệu quan hệ

- Làm thống nhất quan điểm về dữ liệu của những người tham gia hệ thống:
người quản lý, người dùng cuối và người thiết kế hệ thống,
- Xác định các xử lý về dữ liệu cũng như các ràng buộc trên các dữ liệu,
- Giúp đỡ việc thể hiện cơ sở dữ liệu về mặt cấu trúc: Sử dụng thực thể và
các mối liên kết giữa các thực thể. Biểu diễn mô hình quan niệm thực thể bằng
một sơ đồ.
Tập hợp các ký hiệu được dùng trong mô hình ER:

Ví dụ mô hình ER của bài toán quản lý đề án công ty.

34
Cơ sở dữ liệu quan hệ

Để xây dựng được mô hình ER của một bài toán quản lý thực hiện theo các
bước sau:
Bước 1: Xác định các kiểu thực thể
Tìm các danh từ chung trong bài toán dùng để mô tả các đối tượng cần
được quản lý của hệ thống. Duyệt danh sách các thuộc tính từ trên xuống dưới
và mỗi thuộc tính tên gọi sẽ tương ứng với một thực thể.
Bước 2: Xác định các thuộc tính và phân loại từng loại thuộc tính tương
ứng
Tìm các danh từ riêng dùng để mô tả thông tin gắn liền với một đối tượng
thực thể nào đó. Chú ý: để lựa chọn các đặc trưng cần thiết, ta duyệt từ trên
xuống và chỉ giữ lại các thuộc tính đảm bảo yêu cầu sau:
+ Thuộc tính đó cần phải đặc trưng cho một lớp các đối tượng được xét
+ Chọn một thuộc tính một lần nếu lặp lại thì bỏ qua
+ Một thuộc tính phải là sơ cấp
Bước 3: Xác định các liên kết và kiểu liên kết
Tìm các động từ dùng để ràng buộc liên kết giữa hai đối tượng thực thể.
Với mỗi động từ hãy trả lời các câu hỏi: Ai? Cái gì? Ở đâu? Khi nào? Bằng cách
nào?
Bước 4: Xác định số lượng thực thể tham gia vào liên kết
Tìm các con số (nếu có) đi kèm khi mô tả thực thể hay mô tả mối liên kết
giữa các thực thể
Bước 5: Vẽ mô hình ER

35
Cơ sở dữ liệu quan hệ

Dùng các hình vẽ quy ước và đặt vào các vị trí. Sau đó, nối các thành phần
trong mô hình lại với nhau. Sau khi vẽ sơ đồ có thể chuẩn hóa theo nguyên tắc
sau: nếu trong sơ đồ còn chứa: các thuộc tính lặp, nhóm lặp và các thuộc tính
phụ thuộc thời gian, khi đó sơ đồ chỉ còn các thực thể đơn và các thuộc tính đơn.
2.3 Mô hình thực thể liên kết mở rộng (mô hình EER)
Hiện nay, một cách truyền thống, khi xây dựng một cơ sở dữ liệu cho một
bài toán chúng ta thường bắt đầu bằng việc xây dựng mô hình liên kết – thực thể
(mô hình ER) rồi sau đó áp dụng các nguyên tắc chuyển thành mô hình cơ sở dữ
liệu quan hệ. Các khái niệm của mô hình ER có thể được coi là khá đầy đủ để
trình bày các lược đồ cơ sở dữ liệu trong các ứng dụng quản lý truyền thống hiện
nay, chủ yếu là các ứng dụng xử lý dữ liệu trong kinh doanh và trong công
nghiệp. Ngày nay, cùng với sự phát triển nhanh chóng của công nghệ, các ứng
dụng mới hơn cho công nghệ cơ sở dữ liệu đã trở nên phổ biến. Các cơ sở dữ liệu
mới đòi hỏi những yêu phức tạp hơn so với các ứng dụng truyền thống. Vì vậy
người thiết kế cơ sở dữ liệu phải sử dụng thêm các khái niệm mới để giải quyết
bài toán được chính xác và rõ ràng hơn. Việc thêm vào mô hình ER những khái
niệm mới làm mở rộng mô hình ER và tạo nên mô hình ER mở rộng (gọi tắt là
mô hình EER – Enhanced Entity Relationship Model).
2.3.1 Lớp cha, lớp con và sự kế thừa
Khái niệm đầu tiên trong mô hình EER là lớp con của một kiểu thực thể.
Như ta đã biết, kiểu thực thể được sử dụng để biểu diễn cả kiểu của thực thể và
tập hợp các thực thể cùng một kiểu trong cơ sở dữ liệu. Trong nhiều trường hợp,
một kiểu thực thể có thể có các nhóm con các thực thể của nó và những nhóm
con này cần được trình bày rõ ràng do ý nghĩa của nó đối với cơ sở dữ liệu.
Ví dụ, các thực thể thành viên của kiểu thực thể NHÂNVIÊN có thể được
chia thành các nhóm nhỏ: KỸ SƯ, NGƯỜI QUẢN LÝ, KỸ THUẬT VIÊN …
Tập các thực thể trong các nhóm đó là một tập con của các thực thể trong tập
thực thể nhân viên, nghĩa là mỗi thực thể là thành viên của một trong những
nhóm này cũng là một nhân viên. Chúng ta gọi mỗi nhóm này là một lớp con của
kiểu thực thể NHÂNVIÊN. Kiểu thực thể NHÂNVIÊN được gọi là lớp cha của
các lớp con đó. Ta gọi quan hệ giữa lớp cha và một trong những lớp con của nó
là kiểu liên kết lớp cha/ lớp con. Kiểu liên kết lớp cha/ lớp con thường được gọi
là kiểu liên kết là một (IS_A). Chúng ta thường nói rằng một kỹ sư là một nhân
viên, một kỹ thuật viên là một nhân viên.
Chú ý rằng một thực thể thành viên trong lớp con cùng biểu diễn một thực
thể thực tại như một thành viên trong lớp cha, vì vậy, các thực thể thành viên
trong lớp con và các thực thể thành viên trong lớp cha là giống nhau, nhưng vai
trò của chúng hoàn toàn khác nhau. Khi chúng ta tạo một kiểu liên kết lớp cha/

36
Cơ sở dữ liệu quan hệ

lớp con trong hệ thống cơ sở dữ liệu, chúng ta có thể trình bày một thành viên
của lớp con như như là một đối tượng riêng biệt, một bản ghi riêng biệt kết hợp
với các thực thể của lớp cha của nó qua thuộc tính khoá. Kiểu liên kết lớp cha/
lớp con là một kiểu liên kết có tỷ số lực lượng 1:1.
Một khái niệm quan trọng gắn với các lớp con là sự thừa kế kiểu. Kiểu của
một thực thể được xác định bằng các thuộc tính và các kiểu liên kết mà nó tham
gia. Vì mỗi thực thể thành viên trong lớp con cùng biểu diễn một thực thể thực
tại như thực thể trong lớp cha nên các giá trị của thuộc tính của nó trong lớp con
cũng phải giống như là giá trị của các thuộc tính của nó khi nó đóng vai trò là
một thành viên trong lớp cha. Thực thể này cũng được thừa kế các liên kết trong
lớp cha. Một lớp con với các thuộc tính riêng của nó cùng với tất cả các thuộc
tính và kiểu liên kết kế thừa được từ lớp cha có quyền được coi như là một kiểu
thực thể.
2.3.2 Chuyên biệt hóa
Chuyên biệt hóa Là quá trình xác định tập hợp các lớp con của một kiểu
thực thể. Kiểu thực thể này được gọi là lớp cha trong chuyên biệt hoá. Tập các
lớp con tạo nên một chuyên biệt hoá được xác định dựa trên cơ sở một đặc trưng
phân biệt nào đó của các thực thể trong lớp cha. Ví dụ, tập các lớp con {THƯ
KÝ, KỸ SƯ, KỸ THUẬT VIÊN} là một chuyên biệt hoá của lớp cha NHÂN
VIÊN được xác định dựa trên kiểu công việc của các thực thể. Một kiểu thực thể
có thể có một số chuyên biệt hoá dựa trên các đặc trưng khác nhau. Ví dụ, một
chuyên biệt hoá khác của kiểu thực thể NHÂN VIÊN sinh ra tập các lớp con
{NHÂN VIÊN_BIÊN CHẾ, NHÂN VIÊN_HỢP ĐỒNG}. Trong chuyên biệt
hoá này, các thực thể được phân biệt dựa trên cơ sở hình thức trả tiền.
Biểu diễn chuyên biệt hóa: Một chuyên biệt hoá được biểu diễn trong sơ
đồ EER như sau: Các lớp con xác định một chuyên biệt hoá được nối bằng các
đường đến một vòng tròn, vòng tròn đó được nối với lớp cha. Ký hiệu tập con
(trên mỗi đường nối một tập con với vòng tròn chỉ hướng của kiểu liên kết lớp
cha / lớp con). Các thuộc tính chỉ áp dụng cho các thực thể của một lớp con cụ
thể - ví dụ như Tốc_độ_đánh_máy của lớp con THƯ KÝ - được nối với hình chữ
nhật biểu diễn lớp con đó. Các thuộc tính như vậy gọi là các thuộc tính riêng
hoặc là các thuộc tính địa phương của lớp con. Tương tự, một lớp con có thể
tham gia vào các kiểu liên kết riêng, ví dụ, lớp con NHÂN VIÊN_HỢP ĐỒNG
tham gia vào kiểu liên kết <thuộc về>.

37
Cơ sở dữ liệu quan hệ

Có hai lý do chính để đặt các kiểu liên kết lớp cha/lớp con và chuyên biệt
hoá vào mô hình dữ liệu. Thứ nhất là có một số thuộc tính có thể áp dụng cho
một số các thực thể chứ không phải cho toàn bộ các thực thể của lớp cha. Khi đó,
một lớp con sẽ được xác định để nhóm các thực thể mà các thuộc tính đó có thể
áp dụng được. Các thành viên của lớp con này có thể vẫn chia sẻ phần lớn các
thuộc tính của chúng với các thành viên khác của lớp cha.Ví dụ, lớp con THƯ
KÝ có thuộc tính riêng là Tốc_độ_đánh_máy, lớp con KỸ SƯ có thuộc tính
riêng là Kiểu_kỹ_sư nhưng các thuộc tính khác của chúng là chung với kiểu thực
thể NHÂN VIÊN. Lý do thứ hai là chỉ có các thành viên của lớp con có thể tham
gia vào một số kiểu liên kết nào đó. Ví dụ, nếu chỉ có các nhân viên hợp đồng
mới tham gia và công đoàn thì chúng ta có thể diễn đạt sự kiện đó bằng cách tạo
ra một lớp con NHÂN VIÊN_HỢP ĐỒNG của NHÂN VIÊN và liên kết lớp con
này với kiểu thực thể CÔNG_ĐOÀN thông qua kiểu thực thể <thuộc về>.
Tóm lại, quá trình chuyên biệt hoá cho phép chúng ta làm các việc sau:
• Xác định một tập hợp các lớp con của một kiểu thực thể.
• Thiết lập các thuộc tính riêng cho mỗi lớp con.
• Thiết lập các kiểu liên kết riêng giữa mỗi lớp con và các kiểu thực thể
khác hoặc các lớp con khác.
2.3.3 Tổng quát hóa
Là quá trình đảo ngược của chuyên biệt hoá, trong đó ta bỏ qua sự khác
nhau giữa một số kiểu thực thể, xác định các đặc tính chung của chúng và tổng
quát hoá chúng thành một lớp cha của các kiểu thực thể đó. Ví dụ, ta có kiểu thực
thể XE CON với các thuộc tính (Mã_số, Số_giấy_phép, Giá, Tốc_độ_tối_đa,

38
Cơ sở dữ liệu quan hệ

Số_chỗ_ngồi) và kiểu thực thể XE TẢI với các thuộc tính (Mã_số,
Số_giấy_phép, Giá, Trọng_tải, Số_các_trục), các kiểu thực thể này có một số
thuộc tính chung, chúng có thể được tổng quát hoá thành kiểu thực thể với các
thuộc tính (Mã_số, Số_giấy_phép, Giá). Các kiểu thực thể XE CON và XE TẢI
trở thành các lớp con của lớp cha XE ÔTÔ. Như vậy, tổng quát hoá là quá trình
tổng quát một kiểu thực thể từ các kiểu thực thể cho trước.
Một tổng quát hoá được biểu diễn trong sơ đồ EER giống như là một
chuyên biệt hoá. Tổng quát là lớp cha còn chuyên biệt là các lớp con được sử
dụng để tạo nên lớp cha (hình dưới)

2.3.4 Mô hình EER


Mô hình EER có biểu diễn đồ hoạ giống như mô hình ER, nghĩa là các kiểu
thực thể (các lớp) được biểu diễn bằng các hình chữ nhật có ghi tên ở giữa, các
thuộc tính của chúng được biểu diễn bằng các hình ô van nối với hình chữ nhật.
Các kiểu liên kết được biểu diễn bằng các hình thoi và được nối với các kiểu thực
thể tham gia liên kết. Tại các hình thoi có ghi rõ các tỷ số lực lượng tham gia của
các kiểu thực thể tham gia vào kiểu liên kết. Ngoài ra, kiểu liên kết lớp cha/lớp
con được biểu diễn bằng một đường nối có thêm một ký hiệu tập con “⊂“ ở giữa
đường nối. Các lớp con trong một chuyên biệt được nối với một vòng tròn và
vòng tròn được nối với lớp cha. Nếu chuyên biệt là rời rạc, giữa vòng tròn sẽ ghi
chữ d, nếu chuyên biệt là chồng chéo, giữa vòng tròn có ghi chữ o.
2.4 Phương pháp phân tích dữ liệu theo mô hình ER
Như vậy, việc phân tích dữ liệu của một bài toán thường được thực hiện
theo hai giai đoạn:
- Đầu tiên lập lược đồ dữ liệu theo mô hình thực thể liên kết với mục đích
sử dụng ưu thế về tính trực quan và dễ vận dụng của mô hình này

39
Cơ sở dữ liệu quan hệ

- Tiếp đó hoàn thiện lược đồ dữ liệu theo mô hình quan hệ, nhằm lợi dụng
cơ sở lý luận chặt chẽ của mô hình này trong việc chuẩn hóa lược đồ
2.4.1 Mục đích và yêu cầu của phân tích dữ liệu
Mục đích phân tích dữ liệu của hệ thống là lập được lược đồ khái niệm về
dữ liệu, làm căn cứ cho việc thiết kế cơ sở dữ liệu của hệ thống sau này. Lược đồ
khái niệm về dữ liệu ở giai đoạn đầu được lập dưới dạng mô hình ER. Việc phân
tích dữ liệu để xây dựng mô hình ER phải đảm bảo hai yêu cầu:
- Không bỏ sót thông tin: phải liệt kê – xác định để đưa vào lược đồ mọi
thông tin cần phải được lưu trữ để phục vụ cho các xử lý của hệ thống.
- Không dư thừa thông tin: nghĩa là các thông tin đưa vào lược đồ không
được trùng lặp và không phải là thông tin có thể suy dẫn từ các thông tin khác đã
có. Sự dư thừa làm cho việc tốn bộ nhớ và dễ gây ra sự mâu thuẫn – nhập nhằng
của thông tin lưu trữ trong cơ sở dữ liệu.
Để đảm bảo các yêu cầu trên phải thực hiện rà soát kỹ để tìm ra các thông
tin cần quản lý từ nhiều nguồn khác nhau, như:
- Tiếp xúc, phỏng vấn với các nhân viên
- Các tư liệu hệ thống: đó là các báo cáo, các thuyết minh, các tài liệu lập
trong các bước khảo sát hiện trạng và phân tích chức năng trước đó. Trong các
tài liệu đó thì mỗi danh từ nên cân nhắc xem có là thông tin đưa vào lược đồ
không (có thể là thuộc tính hay thực thể).
2.4.2 Cách thức tiếp cận: trên xuống và dưới lên
Các thông tin được đưa vào mô hình ER dưới ba hình thức: thực thể, liên
kết và thuộc tính. Trước tiên ta đi xác định các kiểu thực thể và các kiểu thuộc
tính của chúng.
Có thể tiến hành theo hai cách:
Cách 1: Trước hết đối sánh với thực tế để tìm ra các kiểu thực thể, rồi sau
đó đối với mỗi kiểu thực thể đã chọn thì tìm các thuộc tính mô tả nó.
Cách 2: Tìm tập hợp các kiểu thuộc tính là các thông tin sơ đẳng xuất hiện
trong hệ thống cần quản lý rồi gom nhóm, tổ chức chúng lại thành từng cụm theo
chủ đề mô tả. Mỗi cụm khi đó trở thành một kiểu thực thể (có thể là một kiểu liên
kết).
Cách tốt nhất là kết hợp cả hai cách làm trên bằng cách lặp đi lặp lại nhiều
lần: từ kiểu thực thể tìm ra các kiểu thuộc tính rồi lại từ các kiểu thuộc tính ta tổ
chức ngược lại, chỉnh sửa và bổ sung thành các kiểu thực thể, lặp đi lặp lại cho
đến khi thỏa đáng.
Theo Coad và Yourdon thì thực thể có thể là:
- Thực thể vật chất (cụ thể): ôtô, máy bay, cảm biến, …

40
Cơ sở dữ liệu quan hệ

- Vai trò: sinh viên, người cung cấp, khách hàng, …


- Sự kiện: đặt hàng, đăng ký xe máy, mượn sách, …
- Địa điểm: văn phòng, cửa hàng, …
- Tổ chức: phòng ban, khoa, lớp, …

Tuy nhiên, không phải mọi vật thể có trong thực tế đều trở thành thực thể
trong hệ thống mà phải lựa chọn để đưa vào mô hình. Nguyên tắc lựa chọn thực
thể đưa vào mô hình:
- Có ích cho việc quản lý của bài toán,
- Có cách để phân biệt với các thực thể khác.
Theo định nghĩa thuộc tính là một giá trị mô tả một khía cạnh nào đó của
một thực thể hay của một liên kết.
Tuy nhiên, cũng không phải mọi đặc điểm có thể của một thực thể được
xem là thuộc tính cho nó, mà phải có sự tuyển chọn theo yêu cầu quản lý. Các
thuộc tính khi đã xác định phải có phân loại rõ ràng: thuộc tính mô tả, thuộc tính
lưu trữ, thuộc tính phức hợp, thuộc tính suy dẫn, thuộc tính khóa, ..
Sau khi đã có tập hợp các kiểu thực thể, thì ta cần xác định các liên kết giữa
các thực thể để đưa vào lược đồ.
Việc xác định liên kết hai ngôi có thể thực hiện theo nguyên tắc:
- Dựa vào ý nghĩa của các thực thể (xác định thực thể có thể đóng vai trò
gì?), dựa vào quy tắc quản lý hay các quy trình giao dịch mà ta phát hiện ra các
kiểu liên kết.
- Tìm trên danh sách các kiểu thuộc tính của các kiểu thực thể hoặc tìm trên
các chứng từ giao dịch ta có thể phát hiện ra các tham chiếu. Mỗi tham chiếu
thường tương ứng với một kiểu liên kết.
Các kiểu liên kết nhiều ngôi thì thường ít gặp hơn nhưng cũng cần rà soát
phát hiện chúng để đưa vào mô hình ER.
2.5 Ví dụ về mô hình thực thể liên kết (mô hình ER)
Trong phần này, chúng ta xem xét ví dụ về việc xây dựng mô hình ER cho
cơ sở dữ liệu quản lý đề án công ty. Trước tiên trong việc xây dựng và thiết kế
CSDL là xác định đầy đủ và phân tích các yêu cầu của bài toán. Kết quả này là
một tập hợp các ghi chép súc tích về các yêu cầu người sử dụng cũng như tình
trạng của nơi ta cần xây dựng cơ sở dữ liệu.
Giả sử rằng sau khi tập hợp các yêu cầu và phân tích, hoạt động của công ty
được ghi chép lại như sau:
Công ty được tổ chức thành các đơn vị. Mỗi đơn vị có một tên duy nhất,
một mã số duy nhất, một nhân viên cụ thể quản lý đơn vị. Việc nhân viên quản lý

41
Cơ sở dữ liệu quan hệ

đơn vị được ghi lại bằng ngày nhân viên đó bắt đầu quản lý. Một đơn vị có thể có
nhiều địa điểm. Nhân viên quản lý đơn vị là một người thuộc công ty.
Mỗi đơn vị thực hiện một số dự án. Một dự án có một tên duy nhất, một mã
số duy nhất, một địa điểm thực hiện và thời gian bắt đầu thực hiện dự án.
Với mỗi nhân viên trong công ty, ta lưu giữ lại thông tin như: Họ tên, Mã
số, địa chỉ, hệ số lương, lương (được tính dựa vào hệ số lương và mức lương cơ
bản hiện tại), giới tính, ngày sinh, ngoại ngữ (mỗi nhân viên có thể biết nhiều
ngoại ngữ). Một nhân viên chỉ làm việc cho một đơn vị nhưng có thể làm việc
trên nhiều dự án do nhiều đơn vị đó kiểm soát – thực hiện. Trong một đơn vị chỉ
cho phép tối đa 10 nhân viên dưới quyền quản lý của đơn vị đó. Chúng ta cần lưu
giữ lại số giờ làm việc của mỗi nhân viên trên một dự án nào đó. Mỗi nhân viên
có thể có một người giám sát trực tiếp, người đó cũng là một nhân viên.
Mỗi nhân viên có những người thân kèm theo. Những người này được
hưởng bảo hiểm theo nhân viên. Với mỗi người thân của nhân viên, chúng ta lưu
giữ Họ tên, giới tính, ngày sinh, tuổi, quan hệ với nhân viên.
2.5.1. Xác định các kiểu thực thể
Theo ghi chép ở trên, chúng ta xác định được các kiểu thực thể như sau:
- CÔNG TY không phải là một kiểu thực thể vì ở đây ta có một công ty duy
nhất.
- ĐƠN VỊ là một kiểu thực thể để mô tả các đơn vị - phòng ban cần quản lý
trong công ty.
- DỰ ÁN là một kiểu thực thể để mô tả các dự án được thực hiện trong
công ty.
- NHÂN VIÊN là một kiểu thực thể để mô tả các nhân viên làm việc trong
công ty.
-THÂN NHÂN là một kiểu thực thể để mô tả người thân của nhân viên
được hưởng kèm bảo hiểm xã hội với một nhân viên nào đó. Thực thể THÂN
NHÂN là một thực thể yêu vì sẽ không cần quản lý thân nhân nếu thân nhân đó
không quan hệ với nhân viên nào trong công ty.
2.5.2 Xác định các thuộc tính và phân loại thuộc tính
Thực thể ĐƠN VỊ được quản lý với các thuộc tính Tên đơn vị, Mã số đơn vị
, Người quản lý đơn vị, Ngày bắt đầu nhận quản lý của người quản lý và Địa
điểm. Các thuộc tính Tên đơn vị, Mã số đơn vị, Địa điểm là các thuộc tính dùng
để mô tả thông tin của ĐƠN VỊ, các thuộc tính Người quản lý đơn vị, Ngày bắt
đầu quản lý là các thuộc tính biểu thị một kiểu liên kết (giữa ĐƠN VỊ với kiểu
thực thể NHÂN VIÊN). Các thuộc tính đều là đơn và đơn trị, trừ thuộc tính Địa
điểm, nó là một thuộc tính đa trị ( vì một đơn vị có nhiều địa điểm). Các thuộc

42
Cơ sở dữ liệu quan hệ

tính Tên, Mã số là các thuộc tính khóa (vì mỗi đơn vị có một tên và một mã số
duy nhất).
Thực thể DỰ ÁN có các thuộc tính Tên, Mã số, Địa điểm, Thời gian bắt
đầu, Đơn vị kiểm soát. Các thuộc tính Tên, Mã số, Địa điểm, Thời gian bắt đầu là
các thuộc tính mô tả DỰ ÁN, thuộc tính Đơn vị kiểm soát biểu thị kiểu liên kết
với kiểu thực thể ĐƠN VỊ (một đơn vị kiểm soát một số dự án). Các thuộc tính
Tên, Mã số là các thuộc tính khóa.
Thực thể NHÂN VIÊN với các thuộc tính được quản lý Họ tên, Mã số, địa
chỉ, hệ số lương, lương, giới tính, ngày sinh, ngoại ngữ, người giám sát, đơn vị
quản lý, dự án tham gia, số giờ làm cho dự án. Thuộc tính Họ tên, mã số, địa chỉ,
hệ số lương, giới tính, ngày sinh, ngoại ngữ là những thuộc tính mô tả NHÂN
VIÊN. Thuộc tính Lương là thuộc tính suy dẫn được tính từ thuộc hệ số lương.
Thuộc tính Ngoại ngữ là thuộc tính đa trị vì một nhân viên biết nhiều ngoại ngữ.
Thuộc tính người giám sát, thuộc tính đơn vị quản lý, thuộc tính dự án tham gia
và thuộc tính số giờ dự án là thuộc tính liên kết để chỉ ai là người quản lý nhân
viên đó và nhân viên đó thuộc phòng ban nào hay cho biết nhân viên đó làm cho
dự án nào và mỗi dự án nhân viên đó tham gia làm bao nhiêu giờ. Thuộc tính mã
số là thuộc tính khóa vì mỗi nhân viên được phân biệt với nhau bởi mã số nhân
viên.
Thực thể THÂN NHÂN có các thuộc tính như họ tên, giới tính, ngày sinh,
tuổi, quan hệ với nhân viên và nhân viên. Trong đó, thuộc tính Họ tên, giới tính,
ngày sinh, tuổi và quan hệ là thuộc tính mô tả các thân nhân của một nhân viên
nào đó. Thuộc tính nhân viên là thuộc tính liên kết để chỉ ra thân nhân đó là của
nhân viên nào. Thuộc tính nhân viên là thuộc tính liên kết thể hiện sự ràng buộc
của một thân nhân tương ứng với một nhân viên.
2.5.3 Xác định các liên kết và kiểu liên kết
Giữa thực thể ĐƠN VỊ và DỰ ÁN có liên kết “kiểm soát” vì mỗi đơn vị
kiểm soát một số dự án, kiểu liên kết là liên kết một – nhiều.
Giữa thực thể NHÂN VIÊN và ĐƠN VỊ có liên kết “làm việc cho” vì mỗi
nhân viên chỉ làm cho một đơn vị, kiểu liên kết là nhiều – một.
Giữa thực thể NHÂN VIÊN và ĐƠN VỊ còn có kiểu liên kết một – một với
tên là “quản lý” vì một nhân viên thực hiện quản lý một đơn vị và một đơn vị có
một nhân viên quản lý. Liên kết “quản lý” có một thuộc tính là “ngày bắt đầu” vì
cần ghi lại ngày bắt đầu nhận quản lý đơn vị của một nhân viên.
Giữa thực thể NHÂN VIÊN và DỰ ÁN có mối liên kết “làm việc trên” và
kiểu liên kết là nhiều – nhiều vì một nhân viên là cho nhiều dự án và một dự án
được làm bởi nhiều nhân viên. Liên kết “làm việc trên” có một thuọc tính đi kèm

43
Cơ sở dữ liệu quan hệ

là “số giờ làm” vì cần phải ghi lại số giờ làm việc của một nhân viên trên một dự
án.
Giữa thực thể NHÂN VIÊN với thực thể NHÂN VIÊN có mối liên kết
“giám sát” và có kiểu là một – nhiều vì một nhân viên có thể giám sát một số
nhân viên khác nhau. Kiểu thực thể NHÂN VIÊN ở đây đóng hai vai trò khác
nhau: vai trò người giám sát và vai trò người bị giám sát.
Giữa thực thể NHÂN VIÊN và thực thể THÂN NHÂN có mỗi quan hệ một
– nhiều với tên là “có” và kiểu liên kết là liên kết phụ thuộc .
2.5.4 Xác định số lượng thực thể tham gia liên kết
Các mối liên kết giữa các thực thể trong bài toán không có sự ràng buộc về
số lượng tham gia trừ mối liên kết “làm việc cho” giữa NHÂN VIÊN và ĐƠN có
giới hạn số nhân viên tối đa tham gia vào đơn vị là 10 nhân viên.
2.5.5 Vẽ mô hình ER
Kết quả từ các phân tích trên ta thu được mô hình ER của bài toán Quản lý
đề án công ty như sau:

2.6 Tổng kết chương và câu hỏi ôn tập


2.6.1 Tổng kết chương
Trong chương này chúng ta đã thảo luận về vai trò của mô hình dữ liệu bậc
cao trong quá trình thiết kế cơ sở dữ liệu. Ta đã làm quen với các khái niệm cơ
bản của mô hình liên kết - thực thể: kiểu thực thể, kiểu liên kết, và các thuộc tính
của chúng. Các kiểu thuộc tính khác nhau cũng đã được xem xét: thuộc tính đơn,

44
Cơ sở dữ liệu quan hệ

thuộc tính phức hợp, thuộc tính đơn trị, thuộc tính đa trị, thuộc tính lưu trữ, thuộc
tính suy diễn được và các thuộc tính có giá trị null. Thông qua một ví dụ cụ thể,
ta đã tiến hành xây dựng mô hình ER “CÔNG TY”. Ngoài ra, chúng ta cũng đã
nói đến mô hình EER, mở rộng của mô hình ER. Các khái niệm “mở rộng” như
lớp, lớp con, kiểu liên kết lớp cha/lớp con, chuyên biệt hoá, tổng quát hoá cũng
đã được giới thiệu và phân tích. Chúng ta cũng đã nói đến cách biểu diễn đồ hoạ
của các mô hình ER và EER.
2.6.2 Câu hỏi ôn tập
1. Hãy nói về vai trò của mô hình dữ liệu bậc cao trong quá trình thiết kế cơ
sở dữ liệu.
2. Định nghĩa các thuật ngữ sau: thực thể, thuộc tính, giá trị thuộc tính, thể
hiện liên kết, thuộc tính phức hợp, thuộc tính đa trị, thuộc tính suy diễn được,
thuộc tính phức tạp, thuộc tính khoá, miền giá trị.
3. Kiểu thực thể là gì? Tập thực thể là gì? Giải thích sự khác nhau giữa một
thực thể, một kiểu thực thể và một tập thực thể.
4. Giải thích sự khác nhau giữa một thuộc tính và một tập giá trị.
5. Kiểu liên kết là gì? Giải thích sự khác nhau giữa một thể hiện liên kết,
một tập liên kết và một kiểu liên kết.
6. Vai trò tham gia là gì? Khi nào cần phải sử dụng các tên vai trò trong mô
tả các kiểu liên kết.
7. Mô tả cách chỉ ra các ràng buộc cấu trúc trên các kiểu liên kết.
8. Khi chúng ta nghĩ đến các liên kết như là các thuộc tính, các tập giá trị
của các thuộc tính đó là gì?
9. Kiểu liên kết đệ quy là gì? Cho một số ví dụ về các kiểu liên kết đệ quy.
10. Khi nào khái niệm kiểu thực thể yếu được dùng trong mô hình hoá cơ
sở dữ liệu? Định nghĩa các thuật ngữ: kiểu thực thể chủ, kiểu thực thể yếu, khoá
bộ phận, kiểu liên kết xác định.
11. Trình bày các khái niệm lớp, lớp con, chuyên biệt hoá, tổng quát hoá.
Trong hoàn cảnh nào ta cần tách một lớp thành các lớp con.
12. Trình bày cách biểu diễn đồ hoạ của các mô hình ER và EER.
2.7 Một số câu hỏi trắc nghiệm ôn tập
Câu 1. Đâu là ký hiệu được dùng để biểu diễn thuộc tính suy dẫn trong mô
hình ER?
A. Hình elip nét đơn
B. Hình elip có nét đứt đơn
C. Hình elip nét đôi

45
Cơ sở dữ liệu quan hệ

D. Hình elip có nét đứt đôi


Câu 2. Mô hình thực thể liên kết mô tả chi tiết các thành phần gì?
A. Quan hệ giữa các thực thể
B. Tập thực thể
C. Tất cả các lựa chọn đều đúng
D. Thuộc tính của thực thể
Câu 3. Loại thực thể nào không tồn tại độc lập được mà phải phụ thuộc
vào một kiểu thực thể khác
A. Tập thực thể yếu
B. Cả hai loại trên đều sai
C. Tập thực thể mạnh
D. Cả hai loại trên đều đúng
Câu 4. Các bước thực hiện thiết kế CSDL làm gì?
A. Xác định thực thể và thuộc tính -> Liệt kê và lựa
chọn thông tin -> xác định mối quan hệ và thuộc tính quan hệ -> vẽ sơ đồ ER và
xác định lực lượng tham gia -> chuẩn hóa và rút gọn sơ đồ
B. Liệt kê và lựa chọn thông tin -> xác định thực thể
và thuộc tính -> vẽ sơ đồ ER và xác định lực lượng tham gia -> xác định mối
quan hệ và thuộc tính quan hệ -> chuẩn hóa và rút gọn sơ đồ
C. Liệt kê và lựa chọn thông tin -> xác định thực thể
và thuộc tính -> xác định mối quan hệ và thuộc tính quan hệ -> vẽ sơ đồ ER và
xác định lực lượng tham gia -> chuẩn hóa và rút gọn sơ đồ
D. Liệt kê và lựa chọn thông tin -> vẽ sơ đồ ER và
xác định lực lượng tham gia -> xác định thực thể và thuộc tính -> xác định mối
quan hệ và thuộc tính quan hệ -> chuẩn hóa và rút gọn sơ đồ
Câu 5. Đâu là phát biểu của thuộc tính đa trị của thực thể trong mô hình
thực thể liên kết?
A. Là thuộc tính có chứa một hoặc một vài giá trị
cho một thực thể cụ thể
B. Là thuộc tính không thể chia nhỏ thành các phần
riêng biệt nhỏ hơn
C. Là thuộc tính chỉ có thể nhận một giá trị duy nhất
D. Là thuộc tính có thể phân chia được thành các
thành phần nhỏ hơn, mỗi thành phần mang ý nghĩa độc lập
Câu 6. Giá trị của thuộc tính trong thực thể gồm những kiểu gì?
A. Kiểu xâu kí tự

46
Cơ sở dữ liệu quan hệ

B. Kiểu chuỗi
C. Kiểu nguyên, kiểu số thực
D. Tất cả các phát biểu đều đúng
Câu 7. Mô hình thực thể liên kết được dùng để làm gì?
A. Để thiết kế CSDL ở mức quan niệm
B. Để thiết kế CSDL ở mức cuối cùng
C. Để thiết kế CSDL ở mức vật lý
D. Để thiết kế CSDL ở mức trung gian
Câu 8. Loại thực thể nào không cảm nhận được bằng giác quan mà nhận
biết được thông qua nhận thức?
A. Thực thể trừu tượng
B. Cả hai loại đều đúng
C. Thực thể cụ thể
D. Cả hai loại đều sai
Câu 9. Loại thực thể nào có thể tồn tại độc lập với các kiểu thực thể khác
A. Cả hai loại trên đều đúng
B. Tập thực thể yếu
C. Tập thực thể mạnh
D. Cả hai loại trên đều sai
Câu 10. Đâu là phát biểu của thuộc tính lưu trữ của thực thể trong mô hình
thực thể liên kết?
A. Là thuộc tính mà giá trị phải được nhập trực tiếp
vào khi cài đặt CSDL
B. Là thuộc tính có thể phân chia được thành các
thành phần nhỏ hơn, mỗi thành phần mang ý nghĩa độc lập
C. Là thuộc tính mà giá trị của có thể được suy ra từ
giá trị của các thuộc tính khác
D. Là thuộc tính chỉ có thể nhận một giá trị duy nhất
Câu 11. Đâu là phát biểu của thuộc tính khóa của thực thể trong mô hình
ER?
A. Là thuộc tính được tạo ra từ các thuộc tính khác
của thực thể
B. Là thuộc tính xác định giá trị của thực thể
C. Là thuộc tính được nhập trực tiếp từ khi tạo ra
thực thể

47
Cơ sở dữ liệu quan hệ

D. Là thuộc tính có giá trị duy nhất giúp phân biệt


thực thể này với thực thể khác
Câu 12. Ký hiệu được dùng để mô tả thuộc tính của thực thể
A. Hình elip nét đôi đơn với tên của thuộc tính
B. Hình elip nét đậm với tên của thuộc tính
C. Hình elip nét đơn với tên của thuộc tính
D. Hình elio nét đôi đậm với tên của thuộc tính
Câu 13. Thuộc tính của thực thể là gì?
A. Là sự liên kết giữa hai hay nhiều thực thể với
nhau
B. Là mô hình mô tả về yêu cầu dữ liệu
C. Là những đặc tính riêng biệt mô tả đối tượng
D. Lất cả các phát biểu đều đúng
Câu 14. Các loại thực thể gồm?
A. Thực thể cụ thể
B. Cả hai loại đều đúng
C. Thực thể trừu tượng
D. Cả hai loại đều sai
Câu 15. Chọn phát biểu thuộc tính đơn của thực thể trong mô hình thực
thể liên kết?
A. Là thuộc tính không thể chia nhỏ thành các phần
riêng biệt nhỏ hơn
B. Là thuộc tính có thể phân chia được thành các
thành phần nhỏ hơn, mỗi thành phần mang ý nghĩa độc lập
C. Là thuộc tính chỉ có thể nhận một giá trị duy nhất
cho một thực thể cụ thể
D. Là thuộc tính có chứa một hoặc một vài giá trị
cho một thực thể cụ thể
Câu 16. Các kiểu liên kết giữa các thực thể trong mô hình ER?
A. Liên kết 1 - 1, M - N
B. Liên kết 1 - 1, 1 - N
C. Liên kết 1 - N, M - N
D. Liên kết 1 - 1, 1 - N, M - N
Câu 17. Ký hiệu được sử dụng cho tập thực thể mạnh là?
A. Hình chữ nhật nét đôi chứa tên thực thể

48
Cơ sở dữ liệu quan hệ

B. Hình chữ nhật nét đơn chứa tên thực thể


C. Hình chữ nhật bo tròn góc chứa tên thực thể
D. Hình chữ nhật bo trong góc nét đôi chứa tên thực thể
Câu 18. Bậc của liên kết giữa các thực thể trong mô hình ER là gì?
A. Tất cả các phát biểu đều sai
B. Là số kiểu thực thể tham gia vào liên kết đó
C. Là số kiểu thực thể tối đa tham gia vào liên kết đó
D. Là số kiểu thực thể tối thiểu tham gia vào liên kết đó
Câu 19. Chọn ký hiệu được dùng để mô tả kiểu liên kết giữa Thực thể
mạnh và thực thể yếu?
A. Hình thoi nét đơn
B. Hình vuông nét đơn
C. Hình thoi nét đôi
D. Hình vuông nét đôi
Câu 20. Đâu là phát biểu của thuộc tính suy dẫn của thực thể trong mô
hình thực thể liên kết?
A. Là thuộc tính có thể phân chia được thành các thành phần nhỏ hơn, mỗi
thành phần mang ý nghĩa độc lập
B. Là thuộc tính mà giá trị phải được nhập trực tiếp vào khi cài đặt CSDL
C. Là thuộc tính giá trị của nó có thể được suy ra từ giá trị của các thuộc tính
khác
D. Là thuộc tính chỉ có thể nhận một giá trị duy nhất
Câu 21. Quá trình làm việc để có được một CSDL là
A. Ý tưởng -> lược đồ quan hệ -> thiết kế E/R -> CSDL
B. Ý tưởng -> thiết kế E/R -> lược đồ quan hệ -> HQT CSDL -> CSDL
C. Ý tưởng -> thiết kế E/R -> CSDL
D. Ý tưởng -> lược đồ quan hệ -> CSDL
Câu 22. Thực thể trong mô hình thực thể liên kết gồm có mấy loại?
A. 3 loại
B. 2 loại
C. 4 loại
D. 5 loại
Câu 23. Qui tắc thiết kế CSDL?
A. Tránh trùng lặp
B. Chính xác và dễ hiểu

49
Cơ sở dữ liệu quan hệ

C. Tất cả các lựa chọn


D. Chọn đúng kiểu thực thể và mối quan hệ
Câu 24. Đâu là phát biểu của thuộc tính đơn trị của thực thể trong mô hình
thực thể liên kết?
A. Là thuộc tính có chứa một hoặc một vài giá trị cho một thực thể cụ thể
B. Là thuộc tính chỉ có thể nhận một giá trị duy nhất cho một thực thể cụ thể
C. Là thuộc tính không thể chia nhỏ thành các phần riêng biệt nhỏ hơn
D. Là thuộc tính có thể phân chia được thành các thành phần nhỏ hơn, mỗi
thành phần mang ý nghĩa độc lập
Câu 25. Đâu là phát biểu của thuộc tính phức hợp của thực thể trong mô
hình thực thể liên kết?
A. Là thuộc tính có thể phân chia được thành các thành phần nhỏ hơn, mỗi
thành phần mang ý nghĩa độc lập
B. Là thuộc tính có chứa một hoặc một vài giá trị cho một thực thể cụ thể
C. Là thuộc tính chỉ có thể nhận một giá trị duy nhất cho một thực thể cụ thể
D. Là thuộc tính không thể chia nhỏ thành các phần riêng biệt nhỏ hơn
Câu 26. Ký hiệu để mô tả thuộc tính đa trị là gì?
A. Hình elip nét đôi
B. Hình elip tô màu nét đôi
C. Hình elip nét đơn
D. Hình elip tô màu nét đơn
Câu 27. Thực thể là gì trong mô hình thực thể liên kết?
A. Là tập các thuộc tính để xác định đối tượng
B. Là một "vật" (cụ thể hay trừu tượng) trong thế giới thực, có sự tồn tại độc
lập và phân biệt với các đối tượng khác
C. Là các mối liên hệ giữa đối tượng này với đối tượng khác trong thực tế
D. Lất cả các phát biểu đều sai
Câu 28. Ký hiệu được dùng để mô tả quan hệ giữa các thực thể trong mô
hình ER?
A. Hình thoi nét đứt
B. Hình thoi nét đơn
C. Hình thoi nét đậm
D. Hình thoi nét đôi
Câu 29. Kiểu liên kết giữa thực thể mạnh và thực thể yếu là?
A. Liên kết kế thừa

50
Cơ sở dữ liệu quan hệ

B. Liên kết tổng hợp


C. Liên kết định danh
D. Liên kết bao gồm
Câu 30. Có mấy loại liên kết giữa các thực thể trong mô hình ER?
A. 5 loại
B. 3 loại
C. 4 loại
D. 2 loại
Câu 31. Loại thực thể nào có thể cảm nhận được bằng trực quan hay có thể
nhìn thấy trực tiếp được
A. Cả hai loại đều sai
B. Thực thể cụ thể
C. Cả hai loại đều đúng
D. Thực thể trừu tượng
Câu 32. Ký hiệu được sử dụng cho tập thực thể yếu là?
A. Hình chữ nhật bo trong góc nét đôi chứa tên thực thể
B. Hình chữ nhật bo tròn góc chứa tên thực thể
C. Hình chữ nhật nét đơn chứa tên thực thể
D. Hình chữ nhật nét đôi chứa tên thực thể
2.8 Bài tập áp dụng
Cho các bài toán quản lý sau, lần lượt thực hiện các yêu cầu sau cho từng
bài toán:
- Xác định các thực thể và phân loại thực thể,
- Xác định các thuộc tính tương ứng cho từng thực thể và phân loại thuộc tính,
- Xác định các kiểu liên kết, phân loại các liên kết và lực lượng tham gia liên
kết,
- Vẽ mô hình ER cuối cùng của bài toán.
Bài số 1: Khảo sát hoạt động của một cửa hàng bán sản phẩm, ta thu được
các thông tin quản lý sau:
Mỗi khách hàng thành viên được lưu trữ các thông tin gồm mã khách hàng,
họ tên, địa chỉ, điện thoại, doanh số (là tổng trị giá các hoá đơn mà khách hàng
đó đã mua). Mỗi khách hàng được phân biệt nhau bởi mã số khách hàng.
Mỗi nhân viên của cửa hàng được quản lý các thông tin gồm mã nhân viên,
họ tên, ngày sinh, điện thoại, lương. Mỗi nhân viên được phân biệt nhau bởi mã
số nhân viên. Mỗi nhân viên có thể có nhiều số điện thoại.

51
Cơ sở dữ liệu quan hệ

Mỗi sản phẩm có mã sản phẩm, tên sản phẩm, đơn vị tính, hãng sản xuất,
giá và thuế của sản phẩm đó. Trong đó thuế phải nộp theo quy định nhà nước là
10%.
Mỗi lần khách hàng mua hàng sẽ có một hoá đơn. Mỗi hoá đơn có các
thông tin gồm số hoá đơn, ngày lập hoá đơn, tổng trị giá của hoá đơn đó. Mỗi
hoá đơn phải do nhân viên bán hàng của cửa hàng lập và có thể bán nhiều sản
phẩm cùng lúc.
Mỗi hoá đơn có thể mua nhiều mặt hàng, được kê chi tiết trong bảng chi tiết
hoá đơn trong đó có ghi rõ số lượng và thành tiền cụ thể của từng mặt hàng.
Bài số 2: Khảo sát hệ thống quản lý lịch dạy của các giáo viên và lịch học
của các lớp trong một trường đại học thu được thông tin cần quản lý như sau:
Mỗi giáo viên có thông tin họ và tên giáo viên, số điện thoại, địa chỉ, trình
độ, hệ số lương, lương, ngoại ngữ. Mỗi giáo viên chỉ thuộc sự quản lý hành chính
của một khoa nào đó và được phân biệt với nhau thông qua mã giáo viên. Một
giáo viên có thể biết nhiều ngoại ngữ.
Trong trường có nhiều khoa khác nhau. Mỗi khoa có một mã khoa, tên
khoa, số điện thoại, địa chỉ khoa. Các khoa có mã và tên duy nhất.
Mỗi môn học có một mã môn học, tên môn học, số đơn vị học trình và học
kỳ.
Mỗi lớp có một mã lớp, tên lớp, sĩ số lớp. Mỗi lớp có thể học nhiều môn
nhưng chỉ thuộc sự quản lý hành chính của một khoa nào đó. Mỗi lớp học được
phân công học tại một phòng nào đó, nhưng trong một phòng có thể có nhiều lớp
học ở các ca khác nhau.
Các phòng học có thông tin về số phòng, chức năng của phòng (lý thuyết,
thực hành hay thí nghiệm) và khả năng chứa (số sinh viên tối đa học trong
phòng).
Ứng với mỗi lớp thì mỗi môn học chỉ được phân cho một giáo viên. Một
giáo viên có thể dạy nhiều môn học và dạy nhiều lớp. Tuỳ theo từng lớp và từng
môn học mà mỗi lớp sẽ học ở các phòng khác nhau.
Bài số 3: Khảo sát hệ thông hệ thống tiêu thụ và sản xuất dược phẩm, người
ta thu được các thông tin sau:
Với mỗi bệnh nhân cần quản lý tên bệnh nhân, tuổi bệnh nhân, địa chỉ. Mỗi
bệnh nhân được phân biệt với nhau bởi mã bệnh nhân.
Với mỗi bác sỹ cần phải quản lý các thông tin: tên bác sỹ, chuyên ngành,
ngày bắt đầu đi làm, số năm công tác, đơn vị công tác. Các bác sỹ được phân biệt
với nhau thông qua mã bác sỹ.

52
Cơ sở dữ liệu quan hệ

Với mỗi công ty dược cung cấp thuốc bao gồm các thông tin: mã công ty,
tên công ty, địa chỉ, số điện thoại. Mỗi công ty có nhiều đường điện thoại khác
nhau để khách hàng liên lạc.
Với mỗi loại thuốc phải lưu các thông tin về tên thương mại (tên thuốc bán
trên thị trường), thành phần hoá học (công thức) của thuốc, công dụng của thuốc,
liều dùng. Thuốc có nhiều liều dùng khác nhau tùy theo đối tượng. Mỗi loại
thuốc được bán bởi một công ty dược phẩm và được xác nhận duy nhất qua tên
thương mại của thuốc để phân biệt với các sản phẩm khác của công ty.
Với mỗi hiệu thuốc phải có tên hiệu thuốc, địa chỉ, số điện thoại, chủ hiệu
thuốc. Mỗi hiệu thuốc chuyên bán một số loại thuốc và giá mỗi loại thuốc là khác
nhau cho cùng một tên thuốc với các hiệu thuốc khác nhau.
Các bác sỹ kê đơn thuốc cho bệnh nhân. Một bác sỹ có thể kê đơn cho một
số bệnh nhân và một bệnh nhân cũng có thể có được đơn thuốc từ nhiều bác sỹ.
Mỗi đơn thuốc đều có ngày kê đơn, tên một số loại thuốc và số lượng kèm theo.
Công ty dược phẩm có kí kết hợp đồng dài hạn với các hiệu thuốc. Một
công ty có thể kí hợp đồng với nhiều hiệu thuốc và ngược lại, một hiệu thuốc
cũng có thể kí hợp đồng với nhiều công ty. Mỗi hợp đồng phải có số hợp đồng,
ngày bắt đầu hợp đồng, ngày kết thúc hợp đồng, nội dung hợp đồng.
Bài số 4: Khảo sát hệ thông hệ quản lý các đề tài tốt nghiệp tại trường đại
học, người ta thu được các thông tin sau:
Mỗi SV sau năm 4 sẽ làm đề tài Tốt nghiệp. Mỗi đề tài bao gồm Tên DT,
giáo viên hướng dẫn, thời gian bắt đầu, kết thúc, thuộc khoa nào, do giáo viên
nào phản biện. Các đề tài được quản lý bởi mã đề tài. Một đề tài do duy nhất một
giáo viên hướng dẫn nhưng có thể có nhiều giáo viên phản biện.
Khoa sẽ thành lập các hội đồng khoa học để đánh giá đề tài tốt nghiệp, mỗi
Hội đồng khi thành lập gồm: Chủ tịch, thư kí hội đồng, ngày bảo vệ và hội đồng
được bảo vệ tại địa chỉ (phòng) cụ thể. Trong một hội đồng có duy nhất một chủ
tịch và có thể có từ hai đến ba thư ký hội đồng. Các hội đồng phân biệt thông qua
mã hội đồng. Mỗi đề tài tốt nghiệp sẽ bảo vệ tại một hội đồng xác định, điểm đề
tài là trung bình cộng của điểm Chủ tịch, GV phản biện, GV hướng dẫn. Giáo
viên cho điểm theo từng sinh viên riêng mặc dù các sinh viên có thể làm chung
đề tài.
Trong đợt bảo vệ có thể có nhiều hội đồng, 1 GV có thể hướng dẫn nhiều
đề tài, hay phản biện nhiều đề tài. Chủ tịch HĐ có thể là giáo viên. Mỗi giáo viên
cần thông tin: Tên, địa chỉ , SĐT, học vị, chuyên ngành. Mỗi giáo viên được xác
định thông qua mã giáo viên.
Mỗi đề tài có thể do 1, 2, 3 sinh viên cùng thực hiện. SV có điểm TB<5 sẽ
phải bảo vệ lại với khóa sau và chỉ được bảo vệ tối đa 2 lần.

53
Cơ sở dữ liệu quan hệ

Bài số 5: Khảo sát hệ thống quản lý “trường học”, thu được các thông tin
sau:
Trường được chia thành các trường con, như: Trường Khoa học tự nhiên,
Trường khoa học xã hội, Trường công nghệ, …. Mỗi trường có một hiệu trưởng
quản lý, mỗi hiệu trưởng quản lý một trường. Các trường được phân biệt với
nhau thông qua mã trường và cần xác định các thông tin như địa chỉ, năm thành
lập, email và điện thoại liên lạc. Với mỗi trường có nhiều đường điện thoại sử
dụng được.
Mỗi trường có nhiều khoa khác nhau. Mỗi khoa chỉ thuộc về một trường.
Thông tin về Khoa gồm mã khoa, tên khoa, địa chỉ, số điện thoại.
Mỗi khoa cung cấp nhiều môn học, mỗi môn học gồm có tên môn học, mã
số, số đơn vị học trình, trình độ.
Mỗi môn học có thể có nhiều học phần. Mỗi học phần được lưu giữ bằng
các thông tin: mã học phần, tên môn học, tên giáo viên dạy, học kỳ. Mỗi sinh
viên phải học nhiều học phân. Mỗi giáo viên có thể dạy nhiều nhất là 4 học phần
và cũng có thể không dạy học phần nào.
Mỗi khoa có nhiều giáo viên làm việc, nhưng mỗi giáo viên chỉ làm việc
cho một khoa. Mỗi một khoa có một chủ nhiệm khoa, đó là một giáo viên.
Mỗi một khoa có nhiều sinh viên, mỗi sinh viên chỉ thuộc về một khoa.
Thông tin về mỗi sinh viên gồm: mã sinh viên, họ tên, địa chỉ, ngày sinh, giới
tính, lớp, tên khoa và chế độ đào tạo.
Sau mỗi học kỳ sẽ có một danh sách điểm để phân loại, nó gồm các thông
tin: mã sinh viên, mã học phần, điểm bằng chữ, điểm bằng số.

54
Cơ sở dữ liệu quan hệ

Chương 3 MÔ HÌNH CƠ SỞ DỮ LIỆU QUAN HỆ

Trong phần trước đã trình bày về mô hình ER, mô hình ER là mô hình dễ


lập vì nó phản ánh sát sao các đối tượng trong thực tế. Tuy nhiên mô hình ER
chưa phải là tránh được các nhược điểm. Vì vậy qua bước sơ bộ dùng mô hình
ER để lập được lược đồ dữ liệu, ta phải hoành chỉnh tiếp lược đồ bằng cách:
- Chuyển qua mô hình quan hệ để thực hiện sự chuẩn hóa
- Bổ sung các ràng buộc toàn vẹn, tức là các điều kiện mà lược đồ dữ liệu
phải thỏa mãn.
Mô hình CSDL quan hệ lần đầu tiên được E.F.Codd và tiếp sau đó được
công ty IBM giới thiệu vào năm 1970. Ngày nay, hầu hết các tổ chức đã áp dụng
CSDL quan hệ để quản lý dữ liệu trong đơn vị mình. Mô hình quan hệ do Codd
đề ra có các ưu điểm sau:
- Đơn giản: các dữ liệu được biểu diễn dưới một dạng duy nhất, là quan hệ,
tức là các bảng giá trị, khá tự nhiên và dễ hiểu đối với người dùng không chuyên
tin học.
- Chặt chẽ: các khái niệm được hình thức hóa cao, cho phép áp dụng các
công cụ toán học, các thuật toán.
- Trừu tượng hóa cao: mô hình chỉ dừng ở mức quan niệm, nghĩa là độc
lập với mức vật lý, với sự cài đặt, với các thiết bị. Nhờ đó làm cho tính độc lập
giữa dữ liệu và chương trình cao.
- Cung cấp các ngôn ngữ truy nhập dữ liệu ở mức cao, dễ sử dụng và trở
thành chuẩn.
Mô hình cơ sở dữ liệu quan hệ là cách thức biểu diễn dữ liệu dưới dạng
bảng hay còn gọi là quan hệ, mô hình được xây dựng dựa trên cơ sở lý thuyết đại
số quan hệ.
Các khái niệm trong mô hình quan hệ
Mô hình quan hệ biểu diễn cơ sở dữ liệu như một tập các quan hệ. Mỗi
quan hệ có thể được biểu diễn như một bảng tương ứng với một kiểu thực thể,
mỗi dòng của bảng biểu diễn một tập hợp các giá trị dữ liệu liên quan với nhau
tương ứng với một thực thể cụ thể hoặc một liên kết của thế giới thực, mỗi cột
của bảng tương ứng với một thuộc tính của kiểu thực thể. Tên bảng và tên các cột
dùng để giúp giải thích ý nghĩa của các giá trị trong mỗi dòng. Mọi giá trị trong
một cột đều cùng một kiểu dữ liệu.

55
Cơ sở dữ liệu quan hệ

Theo thuật ngữ mô hình quan hệ hình thức, mỗi hàng được gọi là một bộ,
mỗi đầu cột được gọi là một thuộc tính, và bảng được gọi là một quan hệ. Kiểu
dữ liệu mô tả các kiểu của dữ liệu xuất hiện trong mỗi cột gọi là một miền.
3.1.1 Thuộc tính (Attribute)
Thuộc tính trong mô hình quan hệ là các cột của quan hệ, nó thể hiện một
đặc trưng hay một tính chất của quan hệ
3.1.2 Miền giá trị (Domain)
Một miền giá trị, ký hiệu là D là một tập hợp các giá trị nguyên tử, không
thể phân chia được trong phạm vi mô hình quan hệ. Để đặc tả một miền một
phạm vi nhận giá trị của một thuộc tính nào đó, người ta chỉ ra một tên, một kiểu
dữ liệu và khuôn dạng dữ liệu. Một số ví dụ về định nghĩa miền giá trị:
 Họ tên: Tập hợp các dãy chữ cái có độ dài <= 30.
 Tuổi: Tập các số nguyên nằm trong khoảng từ 1 đến 80.
 Giới tính: Tập hợp gồm hai giá trị “Nam”, “Nữ”.
Miền giá trị trong mô hình quan hệ ký hiệu là D, miền giá trị của một thuộc
tính Ai bất kì ký hiệu là Dom(Ai).
3.1.3 Bộ dữ liệu (Data Tube)
Bộ trong mô hình quan hệ là các dòng thể hiện giá trị của quan hệ trừ dòng
tiêu đề. Bộ dùng để thể hiện dữ liệu cụ thể của các thuộc tính trong quan hệ.
3.1.4 Quan hệ (Relation)
Một quan hệ R(U) trong đó U là tập thuộc tính (A1,...,An), là một tập hợp
n-bộ r = { t1, ..., tn}
Mỗi bộ t là một danh sách có thứ tự của n giá trị, ti = <v1, v2, …, vn>, với
mỗi vi thuộc Dom(Ai) mà 1<= i <= n.
R(U) là tập con của tích Đê các: D1 x .... x Dn. Với Ai là thuộc tính và miền
giá trị của các thuộc tính Ai là: D1 = Dom(A1), D2 = Dom(A2),…, Dn =
Dom(An)
Giá trị thứ i của bộ t tương ứng với thuộc tính Ai, ký hiệu là t[Ai].
Ví dụ:

56
Cơ sở dữ liệu quan hệ

3.1.5 Lược đồ quan hệ


Như trình bày trên, một quan hệ là một bảng hai chiều các giá trị, đó là tập
hợp các bộ của quan hệ tại thời điểm nào đó. Tuy nhiên, trên quan hệ lại thường
xuyên có các phép cập nhật (bổ sung, loại bỏ, điều chỉnh), do đó quan hệ thay
đổi theo thời gian.
Tuy quan hệ thay đổi về giá trị do thực hiện thao tác cập nhật nhưng quan
hệ đó vẫn giữ được các đặc trưng về mặc ngữ nghĩa. Các đặc trưng không thay
đổi đó của quan hệ được gọi là lược đồ quan hệ.
Lược đồ quan hệ được sử dụng để mô tả một quan hệ, bao gồm: Tên quan
hệ, các thuộc tính và bậc của quan hệ (số lượng các thuộc tính).
Ký hiệu lược đồ quan hệ: R(A1,…,An)
Trong đó:
- R là tên quan hệ cần biểu diễn,
- Ai là tên các thuộc tính, mỗi Ai có miền giá trị tương ứng Dom(Ai).
Lược đồ quan hệ là sự tạo thành từ hai yếu tố cơ bản:
- Một cấu trúc cơ bản, gồm tên quan hệ và một danh sách các thuộc tính
(mỗi thuộc tính gắn với một miền), thường cho dưới dạng R(A1, A2, …, An),
- Một tập hợp các ràng buộc toàn vẹn, tức là các điều kiện mà mọi quan
hệ trong lược đồ đều phải thỏa mãn.
Như vậy, Lược đồ quan hệ là một khuôn mẫu, là một bộ lọc cho phép
thiết lập một họ các quan hệ có cùng ngữ nghĩa với nhau.
Ví dụ, ta có lược đồ quan hệ SINHVIÊN (Mã_số, Họ_tên, Ngày_sinh,
Giới_tính, Địa_chỉ) với các ràng buộc toàn vẹn như sau:
- Một bộ <ms, ht, ns, gt, dc> có nghĩa là một sinh viên nào đó có một mã
số, một họ tên, một ngày sinh, một giới tính và một địa chỉ xác định,
- Miền xác định của giới tính chỉ nhận hai giá trị “Nam” hoặc “Nữ”
Lược đồ cơ sở dữ liệu: là tập các lược đồ quan hệ của một hệ thống quản

Ví dụ: Bài toán quản lý sinh viên ta có lược đồ cơ sở dữ liệu như sau:
KHOA(Mã_Khoa, Tên_Khoa)
LỚP(Mã_Lớp, Tên_Lớp, Mã_Khoa)
SINHVIÊN (Mã_SV, Họ_tên, Ngày_sinh, Giới_tính, Địa_chỉ, Mã_Lớp)
3.2 Ràng buộc toàn vẹn trong quan hệ
3.2.1 Giới thiệu
RBTV (Entegrity constraint) là các qui định, điều kiện từ thực tế được cài
đặt để đảm bảo dữ liệu lưu trữ trong CSDL phải thỏa mãn các qui định này. Các

57
Cơ sở dữ liệu quan hệ

điều kiện này phải luôn đúng sau mỗi thao tác (thêm, sửa, xóa) làm thay đổi
trạng thái của CSDL.
Ràng buộc là những quy tắc được áp đặt lên trên dữ liệu đảm bảo tính tin
cậy và độ chính xác của dữ liệu. Các luật toàn vẹn được thiết kế để giữ cho dữ
liệu phù hợp và đúng đắn. Các RBTV là những điều kiện bất biến mà mọi thể
hiện của quan hệ đều phải thỏa mãn ở bất kỳ thời điểm nào. Như vậy, RBTV là
những qui tắc, qui phạm được áp đặt lên trên các đối tượng của thế giới thực.
Ví dụ:
- Mức lương của một người nhân viên không được vượt quá trưởng phòng
mà nhân viên đó làm,
- Người quản lý trực tiếp (của một nhân viên) phải là một nhân viên trong
công ty
RBTV luôn được kiểm tra khi:
- Thực hiện một thao tác cập nhật CSDL
- Kiểm tra định kỳ hay đột xuất, nghĩa là việc kiểm tra RBTV được tiến
hành một cách độc lập đối với các thao tác cập nhật dữ liệu
RBTV rất quan trọng vì:
- Giúp CSDL thể hiện trung thực thế giới thực mà CSDL đang mô tả
- Ngăn chặn các thao tác gây sai sót trên CSDL
- Giúp CSDL luôn đúng đắn so với thực tế tại mọi thời điểm
Có 4 nhóm kiểu ràng buộc chính: Ràng buộc miền giá trị (Domain
Constraints), Ràng buộc khoá (Key Constraints), Ràng buộc thực thể (Entity
Integrity Constraints), và Ràng buộc toàn vẹn tham chiếu (Referential Integrity
Constraints).
3.2.2 Các đặc trưng RBTV
Mỗi một ràng buộc toàn vẹn khi mô tả được xác định qua ba đặc trưng: Bối
cảnh, Nội dung và tầm ảnh hưởng
Bối cảnh
Dùng để xác định những quan hệ có khả năng xảy ra hay vi phạm RBTV
khi thực hiện các phép cập nhật hay nói cách khác bối cảnh dùng để xác định các
quan hệ cần phải được kiểm tra RBTV. Bối cảnh có thể là một hoặc nhiều quan
hệ của một Cơ sở dữ liệu.
Ví dụ: “Mức lương của một người nhân viên không được vượt quá trưởng
phòng”
Ràng buộc trên sẽ có khả năng xảy ra vi phạm khi thực hiện trong trường
hợp:

58
Cơ sở dữ liệu quan hệ

- Cập nhật lương cho nhân viên đã có,


- Thêm một nhân viên mới vào phòng ban,
- Bổ nhiệm một người làm trưởng phòng của một phòng ban.
Vậy ràng buộc toàn vẹn trên xảy ra khi thực hiện thao tác trên hai quan hệ
là “NHAN VIEN” và “PHONG BAN”. Vì vậy bối cảnh của RBTV là “NHAN
VIEN” và “PHONG BAN”.
Nội dung
Dùng để mô tả hay biểu diễn một cách hình thức nội dung hay yêu cầu của
một ràng buộc toàn vẹn, thông thường một ràng buộc toàn vẹn thường được phát
biểu bằng: ngôn ngữ tự nhiên hay bằng ngôn ngữ hình thức (sử dụng các phép
toán như: tồn tại (), với mọi (), phủ định (!), chiếu (), chọn (), kết nối (*))
Tầm ảnh hưởng
Là một bảng để xác định thao tác nào cần phải kiểm tra ràng buộc toàn vẹn
khi thực hiện hoặc xác định thời điểm cần phải tiến hành kiểm tra ràng buộc toàn
vẹn.
Bảng tầm ảnh hưởng có hai loại: bảng tầm ảnh hưởng cho một RBTV và
bảng tầm ảnh hưởng cho nhiều RBTV
Nguyên tắc xây dựng bảng tầm ảnh hưởng:
- Bảng gồm 4 cột và ít nhất 2 hàng, mỗi hàng tương ứng cho một quan hệ
 Cột 1 chứa tên các quan hệ liên quan tới RBTV.
 3 cột tiếp theo là tên các thao tác: Thêm / Sửa / Xoá
- Điền nội dung vào bảng theo nguyên tắc:
 Nếu RBTV cần được kiểm tra nguy cơ dẫn tới vi phạm cho quan hệ thì
đánh dấu cộng (+);
- Có thể chỉ rõ các thuộc tính nào nếu được cập nhật mới dẫn đến vi
phạm bằng cách liệt kê chúng dưới dấu (+)
 Nếu không có nguy cơ bị vi phạm thì đánh dấu trừ (-);
 Nếu không bị vi phạm vì không được phép sửa đổi thì kí hiệu là trừ
với dấu nhân: (- (*)).
Dạng bảng tầm ảnh hưởng của một RBTV

59
Cơ sở dữ liệu quan hệ

Trong đó:
Dấu () thể hiện trạng thái Xảy ra Vi phạm RBTV,
Dấu () thể hiện trạng thái Không xảy ra vi phạm RBTV,
Dấu +(Thuộc tính) thể hiện trạng thái xảy ra RBTV khi thao tác trên thuộc
tính tương ứng,
Dâu -(*) thể hiện trạng thái không thể gây ra vi phạm RBTV do thao tác
không thực hiện được.
Ví dụ: Giới tính của nhân viên chỉ nhận giá trị “Nam” hoặc “Nữ”

Có nghĩa là: ràng buộc này xảy ra khi thêm mới hoặc khi sửa trên thuộc
tính có tên là “giới tính”.
Dạng bảng tầm ảnh hưởng tổng hợp

3.2.3 Phân loại RBTV


Các ràng buộc toàn vẹn gắn kết với một mô hình quan hệ thường được chia
thành hai nhóm chính: ràng buộc trên một quan hệ và ràng buộc trên nhiều quan
hệ.
* Ràng buộc trên một quan hệ là ràng buộc chỉ tác động trên một quan hệ,
thường gồm các trường hợp sau:
- Ràng buộc miền giá trị
- Ràng buộc liên bộ
- Ràng buộc liên thuộc tính
- Ràng buộc giá trị theo thời gian
* Ràng buộc nhiều quan hệ là ràng buộc tác động trên nhiều quan hệ khác
nhau, thường bao gồm các trường hợp sau:

60
Cơ sở dữ liệu quan hệ

- Ràng buộc tham chiếu


- Ràng buộc liên bộ, liên quan hệ
- Ràng buộc liên thuộc tính, liên quan hệ
- Ràng buộc thuộc tính hỗn hợp
a. Ràng buộc miền giá trị
Là quy tắc về các kiểu dữ liệu và những giá trị giới hạn mà một thuộc tính
có thể nhận được.
Thông thường việc xác định miền giá trị của các thuộc tính bao gồm một số
các yêu cầu sau: Tên thuộc tính, Kiểu dữ liệu, Độ dài dữ liệu, Khuôn dạng của dữ
liệu, Các giá trị giới hạn cho phép, Ý nghĩa, có duy nhất hay không, có cho phép
giá trị rỗng hay không.
Ví dụ: Cho lược đồ DIEM THI (MSV, MaMon, DiemThi)
Ràng buộc: “Thuộc tính Điểm có kiểu là nguyên dương, độ dài 2, chỉ nhận
các giá trị trong khoảng từ 0 đến 10”.
- Bối cảnh: DIEM THI
- Nội dung:
Tự nhiên: Điểm là số nguyên dương chỉ nhận giá trị trong khoảng 0
đến 10.
Hình thức:  x DIEM THI: x.Diem > 0 and x.Diem < 10
- Bảng tầm ảnh hưởng
Thêm Xóa Sửa

DIEM THI +(Diem) - +(Diem)


Ví dụ: Cho lược đồ LAM VIEC ( MNV, MDA, SoGio )
Ràng buộc: “Thời gian tham gia dự án của một nhân viên không quá 60
giờ”
- Bối cảnh: NHAN VIEN, DE AN, LAM VIEC
- Nội dung:
Tự nhiên: Thời gian tham gia dự án của nhân viên không quá 60 giờ
Hình thức:  x LAM VIEC: x.Sogio < 60
- Bảng tầm ảnh hưởng
Thêm Xóa Sửa

LAMVIEC +(SoGio) - +(SoGio)


b. Ràng buộc liên bộ

61
Cơ sở dữ liệu quan hệ

Là ràng buộc giữa các bộ giá trị trong một quan hệ thể hiện sự tồn tại của
một hay nhiều bộ phụ thuộc vào sự tồn tại của một hay nhiều bộ khác trong cùng
một quan hệ. Ràng buộc liên bộ thường là các ràng buộc về khóa chính. Ràng
buộc này thường được hệ quản trị CSDL tự động kiểm tra khi thực hiện thao tác
cập nhật trên bảng quan hệ đó.
Ví dụ: cho lược đồ PHONGBAN( MaP, TenP, NgayNC)
Ràng buộc: “Mỗi phòng ban có một mã phòng duy nhất”
- Bối cảnh: PHONGBAN
- Nội dung:
+ Tự nhiên: Mỗi phòng ban có một mã duy nhất
+ Hình thức:  p1, p2  PHONGBAN: p1  p2  p1.MAP  p2.MAP
- Bảng tầm ảnh hưởng:
Thêm Xóa Sửa

PHONGBAN +(MaP) - -*(MaP)


Ví dụ: Cho lược đồ NHANVIEN( MaNV, HoTen, HeSo, MucLuong)
Ràng buộc: “Các nhân viên có cùng hệ số lương thì cùng mức lương”
- Bối cảnh: NHANVIEN
- Nội dung:
+ Tự nhiên: Các nhân viên có cùng hệ số lương thì cùng mức lương
+ Hình thức: n, n2  NHANVIEN: nếu n1.HeSo = n2.HeSo thì
(n1.MucLuong = n2.MucLuong)
- Bảng tầm ảnh hưởng:
Thêm Xóa Sửa

NHANVIEN +(HeSo, MucLuong) - +(HeSo, MucLuong)


c Ràng buộc liên thuộc tính
Là ràng buộc giữa các thuộc tính trong cùng một quan hệ
Ví dụ: Cho DUAN (MADA, TDA, DD, MAP, NGBD, NGKT)
Ràng buộc: “Mỗi một dự án thì ngày bắt dầu dự kiến phải trước ngày kết
thúc dự kiến”
- Nội dung:
Tự nhiên: Với mỗi dự án, ngày bắt đầu dự kiến (NGBD) phải trước ngày
kết thúc dự kiến (NGKT)
Hình thức: d  DUAN, d.NGBD < d.NGKT

62
Cơ sở dữ liệu quan hệ

- Bối cảnh: DUAN


- Bảng tầm ảnh hưởng:
Thêm Xóa Sửa

DUAN +(NgBD, NgKT) - +(NgBD, NgKT)


d Ràng buộc giá trị thuộc tính theo thời gian
Là ràng buộc mô tả giá trị thuộc tính thay đổi theo thời gian do thao tác cập
nhật gây ra, ràng buộc này cho biết mối quan hệ giữa giá trị cũ và giá trị mới của
một thuộc tính.
Ví dụ: Cho lược đồ NHANVIEN(MANV, TENNV, LUONG, PHONG)
Ràng buộc: “Lương của nhân viên chỉ tăng chứ không giảm”
- Nội dung:
•Tự nhiên: Lươngcủa nhân viên chỉ tăng chứ không được giảm
•Hình thức: nvNHANVIEN, nv.LUONG(Cũ) <= nv.LUONG(Mới)
- Bối cảnh: NHANVIEN
- Bảng tầm ảnh hưởng:
Thêm Xóa Sửa

NHANVIEN - - +(Luong)
e. Ràng buộc tham chiếu
Ràng buộc toàn vẹn tham chiếu là một bộ giá trị trong một quan hệ có liên
kết đến một quan hệ khác thì phải liên kết đến một bộ giá trị tồn tại trong quan hệ
đó.
Ràng buộc toàn vẹn tham chiếu phải xác định trên 2 quan hệ khác nhau:
quan hệ tham chiếu và quan hệ được tham chiếu. Ràng buộc toàn vẹn tham chiếu
còn gọi là ràng buộc khóa ngoại.
Chúng ta có thể biểu diễn các ràng buộc tham chiếu bằng sơ đồ. Để làm
điều đó ta vẽ một cạnh có hướng từ mỗi khoá ngoài đến quan hệ mà nó tham
chiếu đến.
Ví dụ: Thuộc tính DNo của quan hệ EMPLOYEE tham chiếu tới thuộc
tính DNumber của quan hệ DEPARTMENT.

63
Cơ sở dữ liệu quan hệ

Ví dụ: Xét các lược đồ quan hệ PHONGBAN (MAP, TENP, TRP, NGNC)
và NHANVIEN (MANV, HT, NS, GT, LUONG)
Ràng buộc: “Mỗi trưởng phòng là một nhân viên trong công ty”
- Nội dung:
*Tự nhiên: Mỗi trưởng phòng phải là một nhân viên trong công ty.
* Hình thức: p  PHONGBAN, n  NHANVIEN: n.MANV = p.TRP
- Bối cảnh: NHANVIEN, PHONGBAN
- Bảng tầm ảnh hưởng:
Thêm Xóa Sửa

PHONGBAN +(TRP) - +(TRP)

NHANVIEN - +(MaNV) -(*)


f. Ràng buộc liên bộ - liên quan hệ
Là ràng buộc xảy ra giữa các bộ khác nhau trên nhiều quan hệ khác nhau.
Ví dụ: Xét các lược đồ quan hệ PHONGBAN(MAPHG, TENPHG,
TRPHG, NGNC) và DIADIEM_PHG(MAPHG, DIADIEM)
Ràng buộc: “Mỗi phòng ban phải có ít nhất một địa điểm phòng”
- Bối cảnh: PHONGBAN, DIADIEM_PHG
- Nội dung:
Hình thức: dDIADIEM_PHG,  pPHONGBAN: d.MAPHG =
p.MAPHG
Tự nhiên: Mỗi phòng ban phải có ít nhất một địa điểm phòng

64
Cơ sở dữ liệu quan hệ

- Bảng tầm ảnh hưởng:


Thêm Xóa Sửa

PHONGBAN - + +(MaPHG)

DIADIEM_PHG + - +(MaPHG)
Ví dụ: Xét các lược đồ quan hệ SV (SV#, HT, NS, GT, Que) và BTL (SV#,
Mamon, Diem )
Ràng buộc: “Mỗi sinh viên phải có ít nhất một bài tập lớn”
- Nội dung:
 Tự nhiên: Mỗi sinh viên phải có ít nhất một bài tập lớn
 Hình thức: s  SV, b  BTL: s.SV# = b.SV#
- Bối cảnh: SV, BTL
- Bảng tầm ảnh hưởng:
Thêm Xóa Sửa

SV + - -(*)(SV#)

BTL - + +(SV#)
g. Ràng buộc liên thuộc tính – liên quan hệ
Là ràng buộc thể hiện điều kiện liên quan giữa các thuộc tính khác nhau
trên nhiều quan hệ khác nhau.
Ví dụ: Xét các lược đồ quan hệ DATHANG(MADH, MAKH, NGAYDH)
và GIAOHANG(MAGH, MADH, NGAYGH)
Ràng buộc: “Với mỗi một đơn hàng, phải có ngày đặt hàng trước ngày giao
hàng”
- Bối cảnh: DATHANG, GIAOHANG
- Nội dung:
Tự nhiên: Với mỗi một đơn hàng, phải có ngày đặt hàng trước ngày giao
hàng
Hình thức: gGIAO_HANG, dDAT_HANG: d[MADH] g[MADH]
 d[NGAYDH] < g[NGAYGH]
- Bảng tầm ảnh hưởng:
Thêm Xóa Sửa

DATHANG - + +(NgayDH)

65
Cơ sở dữ liệu quan hệ

GIAOHANG + - +(NgayGH)
h. Ràng buộc thuộc tính tổng hợp
Là ràng buộc xảy ra khi có một thuộc tính tổng hợp được tính toán từ các
thuộc tính khác.
Ví dụ: Cho lược đồ quan hệ PXUAT(SOPHIEU, NGAY, TT) và
CTIET_PX(SOPHIEU, MAHANG, SL, DG)
Ràng buộc: Tổng trị giá của 1 phiếu xuất phải bằng tổng trị giá của các
chi tiết xuất
- Bối cảnh: PXUAT, CTIET_PX
- Nội dung:
Tự nhiên: Tổng trị giá của 1 phiếu xuất phải bằng tổng trị giá của các chi
tiết xuất
Hình thức:
pxPXUAT, px.TT = (ct  CTIET_PX  ct.SOPHIEU = px.SOPHIEU) ct.SL * ct.DG
- Bảng tầm ảnh hưởng:
Thêm Xóa Sửa

PXUAT -(*) - +(TT)

CTIET_PX + + +(SL,DG)
e. Ràng buộc phụ thuộc hàm
Cho quan hệ R(U), U = {A1, A2,…, An} là tập thuộc tính. Cho X,Y ⊆ U,
nếu tồn tại ánh xạ X → Y thì ta nói rằng X xác định Y hay Y phụ thuộc hàm
vào X. Chi tiết về khái niệm ràng buộc phụ thuộc hàm sẽ trình bày trong chương
sau.
3.2.4 Ví dụ áp dụng
Cho lược đồ CSDL quản lý đề án công ty như sau

66
Cơ sở dữ liệu quan hệ

Hãy mô tả các RBTV liên quan đến bài toán sau và cho biết RBTV thuộc loại gì
R1: “Cập nhật lương nhân viên tăng chứ không giảm.”
RBTV miền giá trị
Bối cảnh: NHANVIEN
 nv  NHANVIEN: nv.MLUONG mới > nv.MLUONG cũ
R1 Thêm Xóa Sửa
NHANVIEN - - + (MLUONG)
R2: “Thời gian giam gia 1 đề án của 1 nhân viên không quá 60 giờ.”
RBTV miền giá trị
Bối cảnh: PHANCONG
 pc  PHANCONG: pc.THOIGIAN  60
R2 Thêm Xóa Sửa
PHANCONG +(THOIGIAN) - + (THOIGIAN)
R3: Một nhân viên chỉ được phân công vào một đề án một lần.
RBTV liên bộ
Bối cảnh: PHANCONG
 pc1, pc2  PHANCONG : pc1  pc2 =>  (pc1.MANV = pc2.MANV 
pc1.MADA = pc2.MADA)
R3 Thêm Xóa Sửa
PHANCONG +(MANV,MADA) - + (MANV, MADA)
R4: “Tập các giá trị PHONG được tìm thấy trong quan hệ NHANVIEN phải
được tìm thấy trong tập các giá trị MAPHG trong quan hệ PHONGBAN.”
RBTV tham chiếu

67
Cơ sở dữ liệu quan hệ

Bối cảnh: NHANVIEN, PHONGBAN


 nv  NHANVIEN,  pb  PHONGBAN: nv.PHG = pb.MAPHG
R4 Thêm Xóa Sửa
NHANVIEN +(PHG) - + (PHG)
PHONGBAN - +(MAPHG) -*
R5: “Người quản lý trực tiếp của một nhân viên phải là nhân viên trong công ty.”
RBTV tham chiếu
Bối cảnh: NHANVIEN
 nv  NHANVIEN: (nv.MA_NQL = NULL)  ( nv’  NHANVIEN:
nv.MA_NQL = nv’.MANV)
R5 Thêm Xóa Sửa
NHANVIEN +(MANV, +(MANV, + (MA_NQL)
MA_NQL) MA_NQL)
R7: “Ngày sinh của trưởng phòng phải nhỏ hơn ngày nhận chức.”
RBTV liên thuộc tính – liên quan hệ
Bối cảnh: NHANVIEN, PHONGBAN
 pb  PHONGBAN,  nv  NHANVIEN: pb.TRPHG = nv.MANV 
pb.NG_NHANCHUC  nv.NGSINH
R7 Thêm Xóa Sửa
PHONGBAN +( NG_NHANCHUC, - + (NG_NHANCHUC,
TRPHG) TRPHG)
NHANVIEN - - +(NGSINH)
R8: “Nhân viên chỉ được phân công vào các đề án do phòng mình phụ trách.”
RBTV về chu trình
Bối cảnh: NHANVIEN, DEAN, PHANCONG
 pc  PHANCONG,  nvda  (NHANVIEN ⋈ PHG=PHONG DEAN):
(nvda.MANV = pc.MA_NVIEN  nvda.MADA = pc.SODA)
R8 Thêm Xóa Sửa
PHANCONG +( MA_NVIEN, - + (MA_NVIEN, SODA)
SODA)
NHANVIEN - + (MANV) -*
DEAN - + (MADA) -*

3.3 Các đặc trưng của một quan hệ


- Giá trị đưa vào cột là đơn nhất,

68
Cơ sở dữ liệu quan hệ

- Các giá trị trong cùng một cột phải thuộc cùng một miền giá trị (cùng
kiểu),
- Thứ tự các bộ trong quan hệ tuỳ ý,
- Thứ tự các giá trị trong một bộ phải đúng trật tự.
3.4 Các quy tắc chuyển đổi từ mô hình ER sang mô hình quan hệ
Như đã học ở chương trước, mô hình ER là mô hình dữ liệu ở mức khái
niệm mới mô tả trừu tượng hóa bài toán của thế giới thực thông qua các ký hiệu
và mô hình này chưa thể lưu trữ được dữ liệu. Để làm được điều đó chúng ta cần
áp dụng các quy tắc để chuyển nó về mô hình quan hệ nhằm quản lý cơ sở dữ
liệu trên máy tính.
Khi đã có mô hình ER ta có thể chuyển về mô hình quan hệ bằng cách áp
dụng các quy tắc chuyển đổi sau:
3.4.1 Quy tắc 1: Chuyển kiểu thực thể mạnh
Quy tắc
- Chuyển mỗi kiểu thực thể mạnh thành một quan hệ, tên quan hệ có thể lấy
trùng tên với kiểu thực thể hoặc đặt tên mới tùy ý,
- Thuộc tính lưu trữ và các thành phần đơn của thuộc tính phức hợp của
kiểu thực thể trở thành thuộc tính của quan hệ (không chứa thuộc tính đa trị và
thuộc tính suy dẫn),
- Các thuộc tính tham gia vào định danh của kiểu thực thể trở thành thuộc
tính khoá chính trong quan hệ.
Ví dụ: Kiểu thực thể NHÂN VIÊN => Quan hệ NHÂN VIÊN

Nếu kiểu thực thể có thuộc tính phức hợp thì trong quan hệ sẽ chỉ lưu các
thuộc tính đơn thành phần.
Ví dụ: Quan hệ EMPLOYEE có thuộc tính Name là thuộc tính phức hợp
gồm các thành phần đơn là Fname, Midn, Lname.

69
Cơ sở dữ liệu quan hệ

Quan hệ: EMPLOYEE (Ssn, fname, midn, lname, bdate, sex, address,
salary)
Nếu trong kiểu thực thể có thuộc tính đa trị thì áp dụng nguyên tắc:
- Quan hệ ban đầu loại bỏ thuộc tính đa trị,
- Chuyển thuộc tính đa trị thành quan hệ mới, với tên là tên thuộc tính hoặc
đặt mới tùy ý,
- Khóa chính của quan hệ mới là khóa chính của quan hệ và thuộc tính gây
ra sự đa trị.
Ví dụ: Quan hệ NHÂN VIÊN có thuộc tính Số điện thoại là thuộc tính đa
trị

3.4.2 Quy tắc 2: Chuyển kiểu thực thể yếu


Quy tắc
- Chuyển mỗi kiểu thực thể yếu (Weak Entity) tạo thành một quan hệ mới,
đặt tên tổng quát là R,
- Tất cả thuộc tính của kiểu thực thể yếu là thuộc tính của R,
- Thuộc tính định danh của kiểu thực thể chủ trở thành khóa ngoại của R,

70
Cơ sở dữ liệu quan hệ

- Khoá chính của R là sự kết hợp giữa thuộc tính định danh của kiểu thực
thể chủ và thuộc tính định danh của kiểu thực thể yếu.
Ví dụ: Kiểu thực thể yếu là THÂN NHÂN có thuộc tính định danh bộ phận
là Tên

Kết quả:
NHÂN VIÊN(MaNV, ….)
THÂN NHÂN(Mã NV, Tên, Giới tính, Ngày sinh, Quan hệ)
3.4.3 Quy tắc 3: Chuyển các liên kết 1-1
Quy tắc
- Xác định một đầu là tùy chọn và đầu còn lại là bắt buộc của liên kết 1 – 1,
- Lấy khóa chính của quan hệ phía tùy chọn sang làm khóa ngoại của phía
bắt buộc,
- Nếu liên kết có thuộc tính thì thuộc tính đó được đưa vào quan hệ phía bắt
buộc.
Nếu liên kết không xác định được chính xác đầu bắt buộc và đầu tùy chọn
thì thực hiện lựa chọn một cách tùy ý.
Ví dụ: Liên kết NHÂN VIÊN quản lý PHÒNG BAN có đầu phía NHÂN
VIÊN là tùy chọn vì một nhân viên có thể làm quản lý của một phòng nào đó
hoặc không làm quản lý của phòng nào.

3.4.4 Quy tắc 4: Chuyển các liên kết 1 – n


Quy tắc

71
Cơ sở dữ liệu quan hệ

- Chuyển khóa chính của quan hệ phía 1 sang làm khóa ngoại của quan hệ
phía nhiều,
- Nếu liên kết có thuộc tính thì thuộc tính đó được đưa vào quan hệ phía
nhiều.
Ví dụ: Liên kết 1- n giữa NHÂN VIÊN làm việc cho PHÒNG BAN

3.4.5 Quy tắc 5: Chuyển đổi các liên kết M-N


Quy tắc
- Mỗi liên kết m-n sinh ra một quan hệ mới,
- Khóa của quan hệ mới gồm thuộc tính khóa của 2 quan hệ tham gia vào
liên kết,
- Nếu liên kết có thuộc tính thì nó là thuộc tính của quan hệ vừa hình thành.
Ví dụ: Liên kết m-n giữa Nhân viên được phân công làm Dự án

3.4.6 Quy tắc 6: Chuyển đổi các liên kết có bậc lớn hơn 2.
Quy tắc
- Mỗi liên kết có bậc >2 sẽ sinh ra quan hệ mới,
- Khóa chính của quan hệ sẽ là các thuộc tính khóa của các quan hệ tham
gia vào liên kết,
- Nếu liên kết có thuộc tính thì nó là thuộc tính của quan hệ mới.

72
Cơ sở dữ liệu quan hệ

Ví dụ:

3.4.7 Quy tắc 7: Chuyển các liên kết “is-a”


Quy tắc
- Chuyển mỗi kiểu thực thể con thành một quan hệ,
- Thuộc tính khóa của các quan hệ này là thuộc tính khóa của kiểu thực thể
cha,
- Các thuộc tính của mỗi kiểu thực thể con sẽ là thuộc tính của quan hệ.
Ví dụ:

Kết quả chuyên biệt hóa thành các quan hệ sau:


EMPLOYEE( SSN, Fname, Mname, Lname, BirthDate, Address, Salary)
SECRETARY( SSN, TypingSpeed)
TECHNICIAN( SSN, Tgrade)
ENGINEER( SSN, EngType)
3.4.8 Áp dụng cho bài toán cụ thể
Trong chương 2 chúng ta đã xây dựng mô hình ER cho bài toán quản lý đề
án công ty. Sơ đồ ER của bài toán:

73
Cơ sở dữ liệu quan hệ

Áp dụng quy tắc 1: chuyển kiểu thực thể mạnh ta có các quan hệ sau
Đơn vị là kiểu thực thể mạnh nên tạo thành một quan hệ
 R1: ĐƠNVỊ( TênĐV, MãsốĐV).
Thuộc tính Địa điểm là thuộc tính đa trị nên bị loại khỏi quan hệ Đơn vị và
sinh ra một quan hệ mới.
 R2: ĐƠNVỊ_ĐỊAĐIỂM( MãsốĐV, ĐịađiểmĐV)
Dự án là kiểu thực thể mạnh => quan hệ
 R3: DỰÁN( TênDA, MãsốDA, ĐịađiểmDA, Tgbắtđầu)
Nhân viên là kiểu thực thể mạnh => quan hệ
 R4: NHÂNVIÊN( Họđệm,Tên, MãsốNV, Ngàysinh, Địachỉ, Giớitính,
HSL)
Thuộc tính Lương là thuộc tính được suy dẫn từ Hệ số lương (HSL) nên nó
không được lưu trong quan hệ Nhân viên. Thuộc tính Ngoại ngữ là thuộc tính đa
trị => quan hệ mới
 R5: NHÂNVIÊN_NGOẠINGỮ ( MãsốNV, Ngoạingữ)
Áp dụng quy tắc 2: Chuyển kiểu thực thể yếu, ta có
 R6: THÂNNHÂN( MãsốNV, Tên, Giớitính, Ngàysinh, Quan hệ)
Áp dụng quy tắc 3: Chuyển đổi liên kết 1-1
- Xét liên kết Nhân viên quản lý Đơn vị: 1-1

74
Cơ sở dữ liệu quan hệ

Ta thấy một nhân viên có thể làm quản lý của một đơn vị hoặc không
nhưng một đơn vị thì luôn có nhân viên quản lý, do đó phía tùy chọn sẽ là Nhân
viên và phía bắt buộc sẽ là Đơn vị do đó quan hệ Đơn vị sẽ bị biến đổi
R1: ĐƠNVỊ( TênĐV, MãsốĐV) =>
 R1.1: ĐƠNVỊ( TênĐV, MãsốĐV, MãNVQL, Ngàybắtđầu ).
Áp dụng quy tắc 4: Chuyển liên kết 1-N
- Xét liên kết Nhân viên làm việc cho Đơn vị: 1-N, thêm MãsốĐV vào bảng
NHÂNVIÊN
 R4.1: NHÂNVIÊN( Họđệm,Tên, MãsốNV, Ngàysinh, Địachỉ, Giớitính,
HSL, MãsốĐV)
- Xét liên kết Đơn vị kiểm soát Dự án: 1-N, thêm MãsốĐV vào bảng
DỰÁN
 R3.1: DỰÁN( TênDA, MãsốDA, ĐịađiểmDA, Tgbắtđầu, MãsốĐV)
- Xét liên kết Nhân viên có Thân nhân: 1-N
 R6.1: THÂNNHÂN( MãsốNV, Tên, Giớitính, Ngàysinh, Quan hệ)
Thuộc tính MãsốNV đã có không cần thêm vào nữa, nó sẽ vừa đóng vai trò
là khóa chính đồng thời vừa là khóa ngoại của quan hệ.
Áp dụng quy tắc 5: Chuyển đổi liên kết M-N
- Xét liên kết Nhân viên làm việc Dự án: M-N
Liên kết nhiều nhiều sinh ra quan hệ mới:
 R7: NHÂNVIÊN_DỰÁN( MãsốNV, MãsốDA, Sốgiờ)
- Quy tắc 6-7 không xuất hiện trong bài toán vừa nêu nên không được áp
dụng.
Kết quả của việc chuyển đổi từ mô hình ER sang mô hình quan hệ của bài
toán trên là:
ĐƠNVỊ( TênĐV, MãsốĐV, MãNVQL, Ngàybắtđầu ).
ĐƠNVỊ_ĐỊAĐIỂM( MãsốĐV, ĐịađiểmĐV)
DỰÁN( TênDA, MãsốDA, ĐịađiểmDA, Tgbắtđầu, MãsốĐV)
NHÂNVIÊN( Họđệm,Tên, MãsốNV, Ngàysinh, Địachỉ, Giớitính, HSL,
MãsốĐV)
NHÂNVIÊN_NGOẠINGỮ( MãsốNV, Ngoạingữ)
THÂNNHÂN( MãsốNV, Tên, Giớitính, Ngàysinh, Quan hệ)
NHÂNVIÊN_DỰÁN( MãsốNV, MãsốDA, Sốgiờ)

75
Cơ sở dữ liệu quan hệ

3.5 Tổng kết chương và Câu hỏi ôn tập


3.5.1 Tổng kết chương
Trong chương này chúng ta đã trình bày về các khái niệm cơ bản trong mô
hình quan hệ như khái niệm về miền giá trị, bộ, quan hệ, lược đồ quan hệ,…
Chúng ta cũng đã trình bày về các loại ràng buộc toàn vẹn trong quan hệ gồm
ràng buộc miền, ràng buộc khóa, khái niệm khóa chính, khóa ngoại,.., ràng buộc
tham chiếu thể hiện quan hệ giữa các bảng , ràng buộc toàn vẹn thực thể không
cho phép khóa chính nhận giá trị Null.
Tiếp theo chúng ta cũng đã đưa ra các quy tắc giúp chuyển đổi từ mô hình
ER sang mô hình quan hệ. Mô hình ER cho bài toán quản lý công ty của chương
2 đã được áp dụng các quy tắc chuyển đổi sang lược đồ cơ sở dữ liệu quan hệ.
Chúng ta cũng đã trình bày về các phép toán có thể thao tác trong mô hình
quan hệ gồm các phép toán cập nhật và các phép toán đại số quan hệ. Với các
phép toán cập nhật chúng ta phải lưu ý về tính đảm bảo ràng buộc toàn vẹn. Từ
các phép toán đã trình bày chúng ta có thể thực hiện truy vấn dữ liệu.
3.5.2 Câu hỏi ôn tập
1. Định nghĩa các thuật ngữ sau: miền, thuộc tính, n-bộ, lược đồ quan hệ,
trạng thái quan hệ, cấp của quan hệ, lược đồ cơ sở dữ liệu, trạng thái cơ sở dữ
liệu.
2. Vì sao các bộ trong một quan hệ là không có thứ tự.
3. Vì sao không cho phép các bộ trùng lặp trong một quan hệ.
4. Nêu những đặc trưng làm cho các quan hệ khác với các bảng hoặc các
tệp thông thường.
5. Nêu các lý do về việc tồn tại các giá trị không xác định trong các quan
hệ.
6. Hãy giải thích về ràng buộc toàn vẹn thực thể và ràng buộc toàn vẹn
tham chiếu. Vì sao các ràng buộc này là quan trọng?
7. Định nghĩa khóa ngoại. Khái niệm này dùng để làm gì? Các khóa ngoài
đóng vai trò như thế nào trong phép nối?
8. Khả hợp là gì? Vì sao các phép toán hợp, giao, trừ đòi hỏi các quan hệ
tham gia vào phép toán phải khả hợp?
3.6 Phần câu hỏi trắc nghiệm
Câu 1. Giá trị các thành phần của khoá quy định:
A. Có thể nhận giá trị null hay các giá trị không xác định.
B. Không thể nhận giá trị null nhưng có thể nhận các giá trị không xác định
C. Có thể nhận giá trị null

76
Cơ sở dữ liệu quan hệ

D. Không thể nhận giá trị null hay các giá trị không xác định.
Câu 2. Có mấy loại liên kết giữa các quan hệ (bảng) trong mô hình quan hệ?
A. 5 B. 6 C. 4 D. 3
Câu 3. "Là tập tất cả các giá trị mà thuộc tính A có thể nhận được". Đây là phát
biểu của gì trong mô hình quan hệ?
A. Bộ B. Miền giá trị
C. Thuộc tính D. Quan hệ
Câu 4. Giá trị của một thuộc tính trong mô hình dữ liệu quan hệ gồm có những
kiểu gì?
A. Kiểu ngày tháng, thời gian B. Tất cả các kiểu đều đúng
C. Kiểu số (số nguyên - số thực) D. Kiểu ký tự
Câu 5. Đâu là nguyên tắc chuyển đổi "quan hệ nhiều - nhiều" khi chuyển từ mô
hình ER sang mô hình quan hệ?
A. Bổ sung các thuộc tính khoá của hai thực thể vào K' và Khoá của lược
đồ quan hệ K' gồm cả 2 khoá của 2 lược đồ qhệ A và B.
B. Tất cả các nguyên tắc đều đúng
C. Bổ sung các thuộc tính riêng của mối kết hợp vào K'
D. Một quan hệ sẽ được chuyển thành một lược đồ quan hệ K', tên của mối
kết hợp sẽ là tên của lược đồ quan hệ K'
Câu 6. Hãy chọn từ/cụm từ tương ứng để hoàn thiện khẳng định sau: Trong cơ
sở dữ liệu quan hệ, thực thể và mối quan hệ giữa các thực thể là hai đối tượng
khác nhau về căn bản. Mối quan hệ giữa các thực thể cũng là một loại ......... đặc
biệt.
A. Phụ thuộc hàm B. Thực thể
C. Cơ sở dữ liệu D. Đối tượng dữ liệu.
Câu 7. Các thành phần của một lược đồ quan hệ?
A. Cả hai lựa chọn đều đúng B. Cả hai lựa chọn đều sai
C. Tên của quan hệ D. Tên của thuộc tính
Câu 8. Ràng buộc toàn vẹn trong mô hình quan hệ là gì?
A. Là những quy tắc bắt buộc thuộc tính khóa phải tuân theo
B. Là những quy tắc buộc buộc các thuộc tính không khóa phải tuân theo
C. Là những quy tắc bắt buộc dữ liệu phải tuân theo nhằm đảm bảo tính tin
cậy và độ chính xác của dữ liệu
D. Là những quy tắc không bắt buộc dữ liệu phải tuân theo nhằm đảm bảo
tính tin cậy và độ chính xác của dữ liệu

77
Cơ sở dữ liệu quan hệ

Câu 9. Hãy chọn từ/cụm từ tương ứng để hoàn thiện khảng định sau: Nếu 2 bộ
bất kỳ trùng nhau trên các thành phần của khóa thì .........
A. Khác nhau trên các thành phần tất cả các bộ.
B. Cũng trùng nhau trên các thành phần của tất cả các bộ
C. Cũng trùng nhau trên các thành phần không khóa.
D. Khác nhau trên các thành phần không khóa.
Câu 10. Thực thể là:
A. Các đối tượng và mối liên kết giữa các đối tượng
B. Các mối liên kết giữa các đối tượng.
C. Các quan hệ
D. Các đối tượng dữ liệu
Câu 11. Mô hình thực thể quan hệ cho phép mô tả:
A. Cấu trúc hệ thống cơ sở dữ liệu
B. Bộ sưu tập các loại dữ liệu của một tổ chức.
C. Lược đồ khái niệm của một tổ chức.
D. Hệ thống thông tin quản lý của tổ chức.
Câu 12. Hãy chọn từ/cụm từ tương ứng để hoàn thiện khảng định sau: Trong một
lược đồ quan hệ luôn tồn tại một hoặc một tập các thuộc tính có khả năng ........
A. Biểu diễn duy nhất các phụ thuộc hàm
B. Biểu diễn các thuộc tính còn lại.
C. Biểu diễn duy nhất các thuộc tính còn lại.
D. Biểu diễn các phụ thuộc hàm
Câu 13. Khái niệm quan hệ trong mô hình quan hệ được biểu diễn thành gì?
A. Bảng B. Hàng C. Cột D. Ô
Câu 14. Ý nghĩa đúng nhất của khóa chính trong mô hình dữ liệu quan hệ?
A. Dùng để xác định duy nhất một bộ trong quan hệ
B. Tất cả các phát biểu đều đúng
C. Dùng để xác định cấu trúc của một quan hệ
D. Dùng để phân biệt với các thuộc tính khác
Câu 15. Đâu là nguyên tắc chuyển đổi "quan hệ một - nhiều" khi chuyển từ mô
hình ER sang mô hình quan hệ?
A. Lấy khóa chính của quan hệ phía nhiều sang làm khóa ngoại của quan hệ
phía một
B. Lấy khóa chính của quan hệ phía một sang làm khóa ngoại của quan hệ
phía nhiều

78
Cơ sở dữ liệu quan hệ

C. Lấy khóa ngoại của quan hệ phía nhiều làm khóa chính của quan hệ phía
một
D. Lấy khóa ngoại của quan hệ phía một làm khóa chính của quan hệ phía
nhiều
Câu 16. Mô hình thực thể - quan hệ cơ bản bao gồm các lớp đối tượng:
A. Thực thể và thuộc tính
B. Thực thể, mối quan hệ và thuộc tính.
C. Môi trường và ranh giới môi trường
D. Các mối quan hệ
Câu 17. Miền giá trị của một thuộc tính A được biểu diễn như thế nào?
A. Tất cả các lựa chọn đều sai B. Value(A)
C. Dom(A) D. Cards(A)
Câu 18. Hãy chọn từ/cụm từ tương ứng để hoàn thiện khảng định sau: Ngôn ngữ
dữ liệu quan hệ là.......... thao tác trên các dữ liệu dưới dạng quan hệ. Dữ liệu
được biểu diễn một cách duy nhất.
A. Tập các phép toán số học
B. Tập các phép toán có các cấu trúc quan hệ.
C. Ngôn ngữ mô tả các thực thể và mối liên kết các thực thể.
D. Ngôn ngữ biểu diễn dữ liệu.
Câu 19. Các thành phần của một quan hệ trong mô hình quan hệ gồm?
A. Tập hợp các cột
B. Tất cả các lựa chọn đều đúng
C. Tập hợp các dòng
D. Tên quan hệ
Câu 20. Câu nào sai trong các câu dưới đây?
A. Trong một bảng có thể có nhiều khóa chính
B. Việc xác định khóa phụ thuộc vào quan hệ logic của các dữ liệu chứ
không phụ thuộc vào giá trị các dữ liệu
C. Mỗi bảng có ít nhất một khóa
D. Nên chọn khóa chính là khóa có ít thuộc tính nhất
Câu 21. Mỗi quan hệ trong mô hình quan hệ gồm mấy thành phần?
A. 4 B. 2 C. 5 D. 3
Câu 22. Đặc điểm của một thuộc tính khóa trong một quan hệ của mô hình dữ
liệu quan hệ?
A. Tất cả các đặc điểm đều đúng

79
Cơ sở dữ liệu quan hệ

B. Xác định duy nhất 1 bộ trong quan hệ


C. Các thuộc tính khóa chính phải có giá trị khác null
D. Các thuộc tính khóa chính thường được gạch dưới
Câu 23. Đâu là nguyên tắc chuyển đổi "Thực thể yếu" khi chuyển từ mô hình ER
sang mô hình quan hệ?
A. Tất cả thuộc tính đơn giản (không gồm thuộc tính khóa) của thực thể yếu
trở thành thuộc tính của quan hệ mới R.
B. Tất cả các nguyên tắc đều đúng
C. Thuộc tính định danh (khóa) của thực thể yếu trở thành khóa ngoại của
quan hệ mới R và Khoá chính của R là sự kết hợp giữa thuộc tính định danh của
thực thể chủ và thuộc tính định danh của thực thể yếu
D. Mỗi thực thể yếu trong mô hình ER, tạo thành một quan hệ mới R
Câu 24. Liên kết giữa các bảng được dựa trên:
A. Ý định của người quản trị hệ CSDL
B. Các thuộc tính trùng tên nhau giữa các bảng
C. Thuộc tính khóa
D. Ý định ghép các bảng thành một bảng có nhiều thuộc tính hơn
Câu 25. Trong mô hình cơ sở dữ liệu quan hệ?
A. Thứ tự của các hàng là không quan trọng
B. Thứ tự của các hàng là quan trọng
C. Thứ tự của các cột là quan trọng
D. Thứ tự của các cột là không quan trọng
Câu 27. Các thuộc tính trong quan hệ được thể hiện dưới dạng gì?
A. Tập hợp các hàng B. Các bảng
C. Tập hợp các cột D. Tập hợp các ô
Câu 28. Đâu là nguyên tắc chuyển đổi "kiểu thực thể" khi chuyển từ mô hình ER
sang mô hình quan hệ?
A. Thuộc tính khoá của kiểu thực thể là thuộc tính khoá của lược đồ quan
hệ.
B. Chuyển đổi mỗi kiểu thực thể bình thường thành một lược đồ quan hệ
C. Tất cả các nguyên tắc đều đúng
D. Các thuộc tính đơn giản và thuộc tính tổ hợp của kiểu thực thể thành các
thuộc tính của lược đồ quan hệ
Câu 29. Mô hình quan hệ được đưa ra vào năm nào?
A. 1970 B. 1972 C. 1974 D. 1968
Câu 30. Các bước chính để tạo CSDL:

80
Cơ sở dữ liệu quan hệ

A. Tạo bảng; Chọn khóa chính cho bảng; Lưu cấu trúc bảng; Tạo liên kết
bảng; cập nhật và khai thác CSDL
B. Tạo bảng; Chọn khóa chính cho bảng; Đặt tên bảng và lưu cấu trúc bảng
C. Tạo bảng; Chọn khóa chính cho bảng; Đặt tên bảng và lưu cấu trúc bảng;
Tạo liên kết bảng
D. Tạo bảng; Chọn khóa chính cho bảng; Đặt tên bảng; Tạo liên kết bảng
3.7 Bài tập áp dụng
Bài số 1: Chuyển đổi các lược đồ ER đã xây dựng của các bài tập 1, 2, 3, 4
ở chương II thành lược đồ cơ sở dữ liệu quan hệ tương ứng
Bài số 2: Hãy tìm các ràng buộc toàn vẹn có trong CSDL được xây dựng
trong Bài số 1
Bài số 3: Cho lược đồ CSDL của bài toán quản lý việc đặt hàng và giao
hàng của công ty như sau:
Q1: KHACH( MaKH, TenKH, DCKH, Dthoai)
Q2: HANG( MaHang, TenHang, QuyCach, DVTinh)
Q3: DATHANG( SoDH, MaHang, SLDat, NgayDat, MaKH)
Q4: HOADON( SoHD, NgayLap, SoDH, TriGiaHD, NgayXuat)
Q5: CHITIET_HD( SoHD, MaHang, GiaBan, SLBan)
Q5: PHIEUTHU( SoPT, NgayThu, MaKH, SoTien)
Yêu cầu: Xác định các ràng buộc toàn vẹn sau
- Chỉ có khách hàng đã đăng ký mới được đặt hàng
- Trị giá của hóa đơn phải lớn hơn 0
- Ngày Lập hóa đơn phải trước ngày xuất hóa đơn
- Ngày đặt hàng phải trước ngày xuất hóa đơn
- Số tiền phải thu của một phiếu phải là số khác 0
- Chỉ thực hiện chi tiết hóa đơn của những hóa đơn đã tồn tại

81
Cơ sở dữ liệu quan hệ

Chương 4 ĐẠI SỐ QUAN HỆ

Các thao tác cơ bản xử lý dữ liệu trong mô hình quan hệ được mô tả thông
qua các phép toán. Các phép toán của mô hình quan hệ có thể phân thành hai
loại: các phép toán cập nhật và các phép toán khai thác dữ liệu. Các phép toán
khai thác dữ liệu với đầu vào là các quan hệ và đầu ra là các quan hệ kết quả
được phát triển theo lý thuyết đại số quan hệ. Các phép toán cập nhật được sử
dụng để tạo ra một quan hệ đúng đắn. Các phép toán đại số quan hệ được sử
dụng để đặc tả các phép khai thác thông tin ra.
4.1. Các phép toán cập nhật
4.1.1. Phép chèn (Insert):
 Cho phép bổ sung một bộ vào quan hệ R.
 Biểu diễn: INSERT(r; A1 = d1, A2 = d2,..., An = dn) trong đó:
o r là quan hệ cần chèn
o Ai là thuộc tính
o di là một giá trị cụ thể, di thuộc dom(Ai), với i = 1,.., n.
Nếu thứ tự các trường là cố định, có thể biểu diễn phép chèn dưới dạng
không tường minh INSERT(r; d1,d2,..., dn).
Ví dụ 4.1: Chèn thêm một bộ t4=(‘004’, ‘Hoàng’,1969, ‘Hà nội’,235) vào
quan hệ EMPLOYEE(SSN, Name, BDate, Address, Salary) ta có thể viết tường
minh như sau:
INSERT(EMPLOYEE; SSN=‘004’, Name=‘Hoàng’, BDate=1969,
Address= ‘Hà nội’, Salary=235).
Hoặc viết thu gọn như sau:
INSERT(EMPLOYEE; ‘004’, ‘Hoàng’, 1969, ‘Hà nội’, 235).
Lưu ý khi viết thu gọn thì trật tự dữ liệu đưa vào phải tương ứng với các
trường trong bảng.
Chú ý: Kết quả của phép chèn có thể gây ra một số sai sót là:
- Bộ mới được thêm không phù hợp với lược đồ quan hệ cho trước
- Một số giá trị của một số thuộc tính nằm ngoài miền giá trị của thuộc
tính đó.
- Giá trị khoá của bộ mới có thể là giá trị đã có trong quan hệ đang lưu
trữ.
4.1.2. Phép xóa (Delete)
 Là phép xoá một bộ ra khỏi một quan hệ cho trước.

82
Cơ sở dữ liệu quan hệ

 Biểu diễn: DEL(r; A = d , A = d ,..., An = dn) hay DEL(r, d , d ,...,


1 1 2 2 1 2

dn) trong đó:


o r là quan hệ cần xóa
o Ai là thuộc tính
o di là một giá trị cụ thể, di thuộc dom(Ai), với i = 1,.., n.
Nếu K=(E , E ,..., Em) là khoá thì có thể viết:
1 2

DEL(r; E = e , E = e ,..., Em = em) trong đó:


1 1 2 2

o r là quan hệ cần xóa


o Ei là thuộc tính khóa
o ei là một giá trị cụ thể, ei thuộc dom(Ei), với i = 1,.., n.
Ví dụ 4.2: Để xoá bộ t1 ra khỏi quan hệ r, ta có thể viết tường minh:
DEL(EMPLOYEE; SSN=‘004’, Name=‘Hoàng’, BDate=1969,
Address=‘Hànội’, Salary=235).
Cần loại bỏ một nhân viên trong quan hệ EMPLOYEE mà biết giá trị
khóa SSN là ‘004’ thì chỉ cần viết: DEL(EMPLOYEE; SSN= ‘004’)
Chú ý: Phép xóa có thể vi phạm ràng buộc dữ liệu
- Bộ dữ liệu cần xóa có ràng buộc dữ liệu với các bộ ở bảng khác.

4.1.3. Phép cập nhật (UPDATE):


 Là phép dùng để sửa đổi một số giá trị nào đó tại một số thuộc tính.
 Biểu diễn:
 UPD (r; A = d , A = d , ..., An=dn; B = b , B = b ,..., Bk = bk)
1 1 2 2 1 1 2 2

trong đó:
o r là quan hệ cần cập nhật
o Ai là thuộc tính
o di là một giá trị cụ thể, di thuộc dom(Ai), với i = 1,.., n.
o {B , B ,..., Bk} là tập các thuộc tính mà tại đó các giá trị của bộ cần
1 2

thay đổi. {B , B ,..., Bk} ứng với tập thuộc tính {A , A ,..., An}
1 2 1 2

Hay UPD(r; E1 = e1, E2 = e2,..., Em = e; B1 = b1, B2 = b2,..., Bk = bk) với


K=(E1, E2,..., Em) là khoá.
Ví dụ 4.3: Để thay đổi tên nhân viên có SSN= ‘003’ trong quan hệ
EMPLOYEE thành Nguyễn Thanh Mai ta có thể viết:
UPD (EMPLOYEE; SSN= ‘003’; Name= ‘Nguyễn Thanh Mai’)
Chú ý: Phép sửa đổi có thể vi phạm ràng buộc khi:
- Sửa thuộc tính khóa chính, khóa ngoại
- Sửa thuộc tính thông thường: miền giá trị, kiểu dữ liệu,..

83
Cơ sở dữ liệu quan hệ

4.2. Các phép toán đại số quan hệ


Đại số quan hệ gồm một tập các phép toán tác động trên các quan hệ và
cho kết quả là một quan hệ.
Có 8 phép toán được chia làm 2 nhóm:
- Nhóm các phép toán tập hợp: hợp, giao, trừ
- Nhóm các phép toán quan hệ: chọn, chiếu, kết nối, chia, tích đề các
Điều kiện thực hiện các phép toán tập hợp: Hai quan hệ r và s được gọi
là khả hợp nếu chúng có cùng bậc (cùng số cột) và được xác định trên cùng một
tập các thuộc tính.
4.2.1. Phép hợp - UNION
 Phép hợp của hai quan hệ r và s là phép gộp các bộ của hai quan hệ
thành một quan hệ và bỏ đi các bộ trùng.
 Biểu diễn:
r U s = {t / t thuộc r hoặc t thuộc s}
Ví dụ 4.4: Cho quan hệ r và s, kết quả của phép hợp r và s như sau:
r ( A, B , C ) s( A, B , C ) r U s ( A, B , C )
a1 b1 c1 a1 b1 c1 a1 b1 c1
a2 b2 c2 a1 b2 c2 a2 b2 c2
a1 b2 c2
Ví dụ 4.5: Cho hai quan hệ Employee1 và Employee2, kết quả của phép
hợp sẽ được thể hiện như hình:

84
Cơ sở dữ liệu quan hệ

4.2.2. Phép giao - INTERSECT


 Phép giao của hai quan hệ r và s là một quan hệ chứa tất cả các bộ
cùng có mặt ở cả hai quan hệ r và s
 Biểu diễn:
r ∩ s ={t / t thuộc r và t thuộc s}
Ví dụ 4.6: Cho
r ( A, B , C ) s( A, B , C )
a1 b1 c1 a1 b1 c1
a2 b2 c2 a1 b2 c2

Kết quả phép giao hai quan hệ r và s sẽ là:


r ∩ s ( A, B , C )
a1 b1 c1
Ví dụ 4.7: Cho

Kết quả phép giao hai quan hệ sẽ là:


EMPLOYEE1 ∩ EMPLOYEE2 = 002, Thiện, P002
4.2.3. Phép trừ - MINUS
 Phép trừ của hai quan hệ r và s là một quan hệ chứa các bộ có trong
bảng r mà không có trong bảng s.
 Biểu diễn:
r - s = {t / t thuộc r và t không thuộc s}
Ví dụ 4.8:
r ( A, B , C ) s( A, B , C )
a1 b1 c1 a1 b1 c1
a2 b2 c2 a1 b2 c2

Kết quả phép trừ 2 quan hệ là:


r - s ( A, B , C )
a2 b2 c2

85
Cơ sở dữ liệu quan hệ

Ví dụ 4.9:

Kết quả phép trừ 2 quan hệ sẽ là:


EMPLOYEE1 - EMPLOYEE2 = 001, Hoàng, P001
4.2.4. Phép Tích Đề các
 Phép tích Đề các được dùng để kết hợp các bộ của các quan hệ lại
với nhau. Kết quả của phép tích đề các là một quan hệ mà mỗi bộ của nó là sự kết
hợp của một bộ của quan hệ này với một bộ của quan hệ khác
 Biểu diễn: Cho quan hệ r(U), U={A , A ,..., An} và quan hệ s(Y),
1 2

Y={B , B ,..., Bm}


1 2

Tích Đề các:
r x s = k{t=(a , a ,..., an, b , b ,..., bm) /a , a ,..., an Є r và b , b ,..., bm Є s}
1 2 1 2 1 2 1 2

Ví dụ 4.10:

Chú ý: Quan hệ tạo thành k có:


Bậc k = bậc r + bậc s
Lực lượng k = lực lượng r x lực lượng s
Phép tích Đề các là phép toán đắt nhất trong các phép toán của đại số quan hệ
4.2.5. Phép chọn - SELECT (cắt ngang)
 Phép chọn trên quan hệ là một quan hệ chứa các dòng của quan hệ
thoả mãn một điều kiện nào đó trên tập các cột thuộc tính.
 Biểu diễn:
σF(R) = { t thuộc R / F(t) đúng}
Trong đó:
- σ: là kí hiệu của phép chọn
- F là biểu thức chọn, là một tổ hợp logic các toán hạng, mỗi toán
hạng là một phép so sánh đơn giản giữa hai thuộc tính hoặc giữa một thuộc tính

86
Cơ sở dữ liệu quan hệ

và một giá trị hằng. Các phép toán trong F gồm:


- Phép toán logic: AND (và), OR (hoặc), NOT (phủ định).
- Phép toán so sánh: <, >, =, >=, <=, <>
Ví dụ 4.11:
r (A , B) F1 = (A=a1) OR (B=3) σF1(r) = r' (A, B)
a1 1 a1 1
a2 2 a3 3
a3 3

Chú ý: Bậc r = bậc r'; lực lượng của r >= lực lượng của r'
4.2.6. Phép chiếu – PROJECT (cắt dọc)
 Phép chiếu trên quan hệ là một quan hệ chứa một số cột (thuộc
tính) nào đó của quan hệ
 Biểu diễn: Cho quan hệ r(U), gọi X là tập con của tập thuộc tính U.
Phép chiếu của quan hệ r trên X là:
ΠX(r) = { t[X]/ thuộc r}; t[X] là bộ t lấy trên tập thuộc tính X}
Ví dụ 4.12: Cho r(A,B)
r (A , B)
a1 1
a2 2
a3 3

Phép chiếu quan hệ r trên thuộc tính X={A} sẽ là quan hệ s như sau:
Π (r) = s(A)
X

a1
a2
a3

Chú ý: Bậc của r > bậc của s. Lực lượng của r > lực lượng của s
4.2.7. Phép kết nối - JOIN
 Phép nối được dùng để kết hợp các bộ có liên hệ với nhau từ hai
quan hệ thành một bộ. Quan hệ tạo thành có số thuộc tính là tổng số thuộc tính
của các quan hệ tham gia vào phép nối.
 Biểu diễn: Cho hai quan hệ r(U), U = {A , A ,..., An} và quan hệ
1 2

87
Cơ sở dữ liệu quan hệ

s(Y), Y = {B , B ,..., Bm}.


1 2

Phép kết nối giữa quan hệ r có thuộc tính A và quan hệ s có thuộc tính B
với một phép so sánh θ là:
r |><| s = {a^b / a thuộc r, b thuộc s và a(A) θ b(B)}
AθB

Ví dụ 4.13: Xét quan hệ r và s trong phép tích đề các


r (A , B ) ; s(C , D) r |x| s = k (A, B, C, D)
a1 1 1 d1 (B>=C) a1 1 1 d1
a2 2 2 d2 a1 1 2 d2
a3 3 a2 2 2 d2
a3 3 1 d1
a3 3 2 d2
Chú ý:
- Lực lượng của phép kết nối k' <= lực lượng của phép tích đề các k.
k' = σB>=C (k) r |><| s = σF(r x s)

- Để phép kết nối có nghĩa, miền trị dom(A) phải so sánh được qua
phép so sánh θ với miền trị dom(B)
- Nếu phép so sánh θ là "=" thì phép kết nối gọi là kết nối bằng.
 Phép kết nối tự nhiên – Natural Join
Phép toán kết nối bằng trên những thuộc tính cùng tên của hai quan hệ và
sau khi kết nối thì cắt bỏ đi một thuộc tính cùng tên bằng phép chiếu của đại số
quan hệ được gọi là phép kết nối tự nhiên ký hiệu *.

r(A, B, C) s(C, D, E) r*s (A, B, C, D, E)


a1 1 1 1 d1 e1 a1 1 1 d1 e1
a2 2 1 2 d2 e2 a2 2 1 d1 e1
a1 2 2 3 d3 e3 a1 2 2 d2 e2

r*s =ΠABCDE( r |><| s)


C=C

88
Cơ sở dữ liệu quan hệ

4.2.8. Phép chia - DIVISION


 Cho r là một quan hệ n - ngôi, s là quan hệ m - ngôi (n > m, s khác
rỗng). Phép chia quan hệ r cho quan hệ s là tập tất cả các n - m bộ t sao cho với
mọi bộ u thuộc s thì bộ (t^u) thuộc r.
 Biểu diễn:
r ÷ s = {t / với mọi u thuộc s thì (t^u) thuộc r}
Ví dụ 4.14:
r(A, B, C, D) s(C, D, E) r ÷s (A, B)
a b c d c d a b
a b e f e f e d
b c e f
e d c d
e d e f
a b d e
4.2.9. Hàm nhóm và phép toán nhóm
Trong truy vấn dữ liệu có những vấn đề mà nếu chỉ dùng các phép toán
đại số cơ bản đã trình bày thì không thể thực hiện được. Ví dụ như các yêu cầu
tính tổng, tính trung bình, tìm giá trị lớn nhất, nhỏ nhất,..hoặc các bài toán đòi hỏi
phải nhóm các bộ trong một quan hệ theo một thuộc tính nào đó rồi thực hiện
tính toán.
Trở lại với bài toán quản lý nhân viên, yêu cầu đưa ra lương trung bình
hoặc tổng lương của tất cả các nhân viên hoặc cho biết số nhân viên của từng đơn
vị thì ta thấy rằng các phép toán đại số cơ bản không thể lấy được dữ liệu, khi đó
người ta cần đến phép toán nhóm với các hàm nhóm toán học.
Hàm nhóm:
SUM(<tên cột>): Cho phép tính tổng theo cột.
AVG(<tên cột>): Trả về giá trị trung bình tính theo cột
MIN(<tên cột>), MAX(<tên cột>): Trả về giá trị nhỏ nhất, lớn nhất của
cột
COUNT(*): Trả về số dòng của bảng
COUNT(<tên cột>): Trả về số dòng của bảng mà giá trị tại cột chỉ định
khác rỗng.
Phép toán nhóm

< các thuộc tính nhóm> ℑ< danh sách các hàm>(R)
Trong đó:

89
Cơ sở dữ liệu quan hệ

 Các thuộc tính nhóm: là danh sách các thuộc tính của quan hệ được
chỉ ra trong R.
 Danh sách hàm là danh sách các cặp (<hàm>(<thuộc tính>)). Trong
đó <hàm> có thể là SUM, AVERAGE, MAX, MIN, COUNT, và <thuộc tính> là
một thuộc tính của quan hệ được chỉ ra trong R.
Ví dụ 4.15: Cho biết số nhân viên của từng đơn vị
MãsốDV ℑ COUNT ( MãNV)( NHÂNVIÊN)
Cho biết lương trung bình của các nhân viên trong từng đơn vị
MãsốDV ℑ AVG (Lương)( NHÂNVIÊN)
Kết quả của phép toán nhóm là một quan hệ và nếu không chỉ ra thuộc
tính nhóm thì các hàm được áp dụng cho các giá trị thuộc tính của tất cả các bộ
trong quan hệ, vì vậy quan hệ kết quả chỉ có một bộ.
Ví dụ 4.16: Cho biết lương trung bình của công ty
ℑ AVG (Lương)( NHÂNVIÊN)

4.3. Các tính chất của đại số quan hệ


4.3.1. Tính chất giao hoán
Các phép toán hợp, giao, kết nối là các phép toán có tính chất giao hoán.
Với mọi quan hệ R1, R2 ta có:

4.3.2. Tính chất kết hợp:


Các phép toán hợp, giao, kết nối, tích Đề các là các phép toán có tính chất
kết hợp. Với mọi quan hệ R1, R2, R3 ta có:

4.3.3. Tính chất tích lũy đẳng:


Các phép hợp, giao, kết nối trong đại số quan hệ là các phép toán có tính
chất tích lũy đẳng. Với mọi quan hệ R trên tập thuộc tính U, ta có:

90
Cơ sở dữ liệu quan hệ

4.3.4. Một số tính chất khác:


Cho R là quan hệ bất kì trên tập U và S là quan hệ bất kì trên tập Y, khi
đó:

σF1(R)  σF2(R)= σF1 or F2(R)


σF1(R)  σF2(R)= σF1 and F2(R)
σF1(R) - σF2(R)= σF1 and (not F2)(R)

4.4. Truy vấn dữ liệu trong đại số quan hệ


Từ các phép toán đại số quan hệ vừa trình bày, người ta có thể viết các
truy vấn dữ liệu trên các quan hệ. Một câu lệnh truy vấn dữ liệu có thể biểu diễn
dưới dạng biểu thức đại số quan hệ hoặc biểu diễn bằng một cây phép toán quan
hệ.
Cho Lược đồ Cơ sở dữ liệu của bài toán quản lý Công ty gồm các quan
hệ:
1. ĐƠNVỊ(TênĐV, MãsốĐV, MãNVQL, Ngàybắtđầu ).
2. ĐƠNVỊ_ĐỊAĐIỂM(MãsốĐV, ĐịađiểmĐV)
3. DỰÁN(TênDA, MãsốDA, ĐịađiểmDA, Tgbắtđầu, MãsốĐV)
4. NHÂNVIÊN(Họđệm,Tên, MãsốNV, Ngàysinh, Địachỉ, Giớitính, HSL,
MãsốĐV)
5. NHÂNVIÊN_NGOẠINGỮ (MãsốNV, Ngoạingữ)
6. THÂNNHÂN(MãsốNV, Tên, Giớitính, Ngàysinh, Quan hệ)
7. NHÂNVIÊN_DỰÁN(MãsốNV, MãsốDA, Sốgiờ)
4.4.1. Biểu thức quan hệ
Ví dụ 4.17: Đưa ra Họ đệm, Tên và địa chỉ của tất cả các nhân viên làm
việc cho đơn vị có tên là “Nghiên cứu”: (Các quan hệ TG1, TG2 là các kết quả
trung gian)
- Chọn đơn vị có tên nghiên cứu, quan hệ kết quả là TG1
TG1 ← σTen= “Nghiêncứu” (ĐƠNVỊ)
- Nối quan hệ TG1 với quan hệ Nhân viên, quan hệ kết quả là TG2
TG2 ← (TG1 ∗ NHÂNVIÊN)
- Quan hệ KETQUA là phép chiếu các thuộc tính Họ đêm, Tên, Địa

91
Cơ sở dữ liệu quan hệ

chỉ trên quan hệ TG2


KETQUA ← πHọđệm, Tên, Địachỉ (TG2)

Ví dụ 4.18: Với mỗi dự án đặt tại Hà nội, hãy liệt kê MãsốDA, TênĐV,
Tên, Địachỉ, Ngàysinh của người quản lý đơn vị.
- Chọn ra các dự án có địa điểm đặt tại Hà nội, quan hệ kết quả là
TG1
TG1 ← σDiadiemDA=”Hanoi”(DỰÁN)
- Nối quan hệ TG1 với quan hệ Đơn vị, quan hệ kết quả là TG2
TG2 ← (TG1 ∗ ĐƠNVỊ)
- Nối quan hệ TG2 với quan hệ Nhân viên, quan hệ kết quả là TG3
TG3 ← (TG2 * NHÂNVIÊN)
- Quan hệ Kết quả là phép chiếu trên các thuộc tính cần hiển thị trên
quan hệ TG3

KẾTQUẢ ← π (TG3)
MãsốDA, TênĐV, Họđệm,Địachỉ, Ngàysinh

Ví dụ 4.19: Hãy tìm tên của các nhân viên làm việc trên tất cả các dự án
do đơn vị có mã số = 5 kiểm soát.
- Chọn ra các dự án do đơn vị số 5 kiểm soát và thực hiện chiếu lấy
ra thuộc tính Mã số DA, quan hệ kết quả là TG1
TG1 ← πMãsốDA (σMã sốDV = 5 (DỰÁN))
- Chiếu lấy ra các thuộc tính Mã số NV, Mã số DA trên quan hệ
Nhân viên – Dự án, quan hệ kết quả là TG2
TG2 ← πMãsốNV, MãsốDA (NHÂNVIÊN_DỰÁN)
- Thực hiện phép chia hai quan hệ TG2 cho TG1 trên thuộc tính
chung Mã số DA, quan hệ kết quả là TG3
TG3 ← TG2 ÷ TG1
- Nối tự nhiên hai quan hệ TG3 và Nhân viên sau đó thực hiện phép
chiếu các thuộc tính Họ đệm và tên để thu được kết quả cần tìm
KETQUA ← πHọđệm, Tên(TG3 * NHÂNVIÊN)
4.4.2. Cây đại số quan hệ
Ví dụ: Đưa ra Họ đệm, Tên và địa chỉ của tất cả các nhân viên làm việc
cho đơn vị có tên là “Nghiên cứu”, ta có cây biểu thức quan hệ như sau:

92
Cơ sở dữ liệu quan hệ

πHọđệm, Tên

σTênDV =’Nghiên cứu’

Đơn vị Nhân viên

4.5. Tối ưu hóa câu hỏi


Tối ưu hóa câu hỏi là việc lựa chọn phương pháp xử lý sao cho khi thực
hiện câu truy vấn sẽ đạt hiệu quả cao nhất, tối ưu về thời gian truy xuất thông tin
và tối ưu về không gian lưu trữ nhưng vẫn đảm bảo tính độc lập và toàn vẹn dữ
liệu.
Mỗi câu hỏi truy vấn sẽ được biểu diễn thông qua các phép toán đại số
quan hệ, kết quả của các phép toán đó sẽ là một quan hệ chứa các bộ và các thuộc
tính có thể lấy từ nhiều quan hệ khác nhau. Vì vậy khi viết các câu hỏi cần cân
nhắc lựa chọn các phép toán sao cho chi phí thực hiện thấp nhất mà hiệu quả cao
nhất.
Khi làm việc với những bài toán mà có khối lượng lưu trữ dữ liệu lớn thì
việc phải tối ưu hóa câu hỏi trong truy xuất và tìm kiếm dữ liệu rất quan trọng
nhằm nâng cao hiệu quả làm việc. Có nhiều kĩ thuật để tối ưu hóa câu hỏi song
chúng ta nghiên cứu về phương pháp phân rã câu hỏi dựa trên biểu thức đại số
quan hệ.
Trở lại với ví dụ về cơ sở dữ liệu quản lý công ty ta có các quan hệ:
1. ĐƠNVỊ(TênĐV, MãsốĐV, MãNVQL, Ngàybắtđầu ).
2. NHÂNVIÊN(Họđệm,Tên, MãsốNV, Ngàysinh, Địachỉ,
Giớitính, HSL, MãsốĐV)
Xem xét tối ưu hóa câu hỏi, ta có câu truy vấn: Đưa ra Họ đệm, Tên và địa
chỉ của tất cả các nhân viên làm việc cho đơn vị có tên là “Nghiên cứu”, biểu
thức đại số quan hệ và cây biểu thức quan hệ được thể hiện như sau:

πHọđệm, Tên, Địa chỉ (σTênDV =’Nghiên cứu’(Đơnvị*Nhân viên))

93
Cơ sở dữ liệu quan hệ

πHọđệm, Tên, Địa chỉ

σTênDV =’Nghiên cứu’

Đơn vị Nhân viên

Quá trình thực hiện câu lệnh truy vấn: đầu tiên thực hiện nối tự nhiên hai
quan hệ Đơn vị và Nhân viên với nhau, kết quả tạo ra một quan hệ có số bản ghi
sẽ là tích số lượng bản ghi của hai quan hệ và số thuộc tính bằng số thuộc tính
của hai quan hệ trên bỏ đi thuộc tính chung là Mã số ĐV. Như vậy sau phép nối
này thì quan hệ kết quả sẽ có kích thước lớn đặc biệt nếu quan hệ nguồn lớn. Sau
đó hệ thống sẽ thực hiện các phép chiếu chọn để lấy ra đơn vị có tên là Nghiên
cứu và họ đệm, tên và địa chỉ của các nhân viện thuộc phòng Nghiên cứu.
Lưu ý câu truy vấn chỉ yêu cầu lấy ra đơn vị có tên là Nghiên cứu, thông
tin này nằm trong quan hệ Đơn vị. Như vậy ta có thể thực hiện phép chọn đơn vị
có tên là Nghiên cứu trước để quan hệ kết quả thu được nhỏ hơn quan hệ Đơn vị
ban đầu. Sau đó thực hiện nối quan hệ vừa thu được với quan hệ Nhân viên dựa
trên Mã số ĐV và cuối cùng thực hiện phép chiếu lấy ra kết quả cuối cùng theo
yêu cầu. Với cách tối ưu này thì câu lệnh sẽ thực hiện nhanh hơn và chi phí về bộ
nhớ cũng nhỏ hơn.
Cây đại số quan hệ được vẽ lại như sau:

πHọđệm, Tên, Địa chỉ

σTênDV =’Nghiên cứu’ Nhân viên

Đơn vị

94
Cơ sở dữ liệu quan hệ

Như vậy, tối ưu hóa biểu thức đại số quan hệ là phương pháp thay một
biểu thức quan hệ bằng một biểu thức tương đương đơn giản hơn, thời gian thực
hiện nhanh hơn mà kết quả không thay đổi.
Trong các phép toán đại số quan hệ thì các phép toán chọn, chiếu, trừ,
chia, giao sẽ làm cho quan hệ ban đầu nhỏ đi, các phép toán tích Đề các, nối, hợp
sẽ làm quan hệ lớn hơn. Do đó để tối ưu hóa câu lệnh truy vấn thường tuân theo
chiến lược:
- Thực hiện các phép toán làm quan hệ nhỏ đi càng sớm càng tốt
- Thực hiện các phép toán làm quan hệ lớn hơn càng về sau càng tốt
- Hạn chế tối đa sử dụng các phép toán tập hợp
Nguyên tắc tối ưu hóa
- Ưu tiên thực hiện các phép toán chiếu, chọn làm cho quan hệ ban
đầu nhỏ đi nhằm giảm khối lượng dữ liệu trung gian và giảm chi phí truy cập
bộ nhớ.
- Thực hiện các phép kết nối bằng chi phí sẽ rẻ hơn phép Tích Đề
các
- Khi thực hiện phép tích Đề các thì nên sắp xếp hay chọn các chỉ số
tham gia vào phép tích Đề các
- Nhóm các phép chọn và chiếu liên tiếp thành một phép toán
- Nhóm các phép tích và chiếu liên tiếp thành một phép toán
- Đánh giá khái quát trước khi thực hiện truy vấn: số phép toán phải
thực hiện, chi phí thực hiện bao gồm chi phí bộ nhớ, chi phí thời gian,…

95
Cơ sở dữ liệu quan hệ

4.6. Tổng kết chương và Câu hỏi ôn tập


Tổng kết chương
Trong chương này chúng ta đã trình bày về các phép toán đại số quan hệ
được thực hiện trên lược đồ cơ sở dữ liệu bao gồm các phép toán tập hợp: hợp,
giao, trừ (phải thỏa mãn điều kiện khả hợp), phép toán tích Đề-các, các phép toán
kết nối các quan hệ cũng như các phép toán cho phép trích lọc dữ liệu như phép
chiếu, chọn, gom nhóm,…
Phần tiếp theo chúng ta đã đề cập đến cách viết các truy vấn dữ liệu sử
dụng các phép toán đã học. Trình bày về cách biểu diễn truy vấn dưới dạng đại
số quan hệ và cây đại số quan hệ. Một truy vấn có thể chưa tối ưu nên chúng ta
có thể thực hiện tối ưu hóa câu hỏi dựa trên các nguyên tắc đã được đề cập.
Câu hỏi ôn tập
Cho cơ sở dữ liệu “Quản lý đề án công ty” như dưới đây:

Thực hiện các câu truy vấn sau bằng ngôn ngữ Đại Số Quan Hệ
1. Các câu truy vấn phép kết
1. Với mỗi phòng ban, cho biết tên phòng ban và địa điểm phòng
2. Tìm tên những người trưởng phòng của từng phòng ban
3. Tìm TENDA, MADA, DDIEM_DA, PHONG, TENPHG, MAPHG, TRPHG,
NG_NHANCHUC
4. Tìm tên và địa chỉ của tất cả nhân viên phòng nghiên cứu
5. Tìm tên những nữ nhân viên và thân nhân của họ
6. Với mỗi đề án ở Ha Noi, liệt kê các mã số đề án (MADA), mã số phòng ban
chủ trì đề án (PHONG), họ tên trưởng phòng (TENNV, HONV), cũng như địa
chỉ và ngày sinh của người ấy.
7. Với mỗi nhân viên, cho biết họ tên của nhân viên và họ tên người quản lý trực
tiếp của nhân viên đó
8. Cho biết tên nhân viên phòng 5 có tham gia vào đề án "Sản phẩm X" và nhân

96
Cơ sở dữ liệu quan hệ

viên này do "Nguyen Thanh Tung" quản lý


9. Cho biết họ tên nhân viên và tên đề án mà nhân viên ấy tham gia nếu có.
10. Với những phòng ban có lương trung bình của các nhân viên thuộc phòng
ban đó là >300.000, cho biết tên phòng ban và số nhân viên thuộc phòng ban đó.
2. Các câu truy vấn gom nhóm.
a. Với những phòng ban có lương trung bình của các nhân viên thuộc phòng ban
đó là >300.000, cho biết tên phòng ban và số nhân viên nam của phòng ban đó.
b. Với mỗi đề án, liệt kê tên đề án (TENDA) và tổng số giờ làm việc 1 tuần cuả
tất cả các nhân viên tham gia dự án đó.
c. Với mỗi phòng ban, liệt kê tên phòng ban (TENPHG)và lương trung bình của
nhân viên trong phòng.
d. Lương trung bình cuả tất cả nữ nhân viên
e. Với những phòng ban có mức lương trung bình trên 30000. Liệt kê tên phòng
ban và số lượng nhân viên của phòng đó.
3. Các câu truy vấn lồng
a. Cho biết danh sách các đề án (MADA) có:
- Nhân viên có họ Dinh hoặc,
- Có người trưởng phòng chủ trì đề án với họ Dinh
b. Danh sách những nhân viên (TENNV, HONV) có trên 2 thân nhân
c. Danh sách những nhân viên (TENNV, HONV) không có thân nhân nào
d. Danh sách những trưởng phòng (TENNV, HONV) có tối thiểu 1 thân nhân
e. Cho biết họ tên nhân viên có mức lương trên mức lương trung bình của phòng
“nghiên cứu”
f. Cho biết tên phòng ban cùng họ tên trưởng phòng của phòng ban có đông nhân
viên nhất
g. Tìm họ tên và địa chỉ của những nhân viên làm việc cho một đề án ở thành phố
HCM nhưng phòng ban mà họ làm việc lại không tọa lạc tại thành phố HCM
h. Tìm họ tên và địa chỉ của các nhân viên mà làm việc cho các đề án ở thành
phố khác với phòng ban họ trực thuộc toạ lạc
4. Các câu truy vấn phép chia
a. Danh sách những nhân viên (TENNV, HONV) làm việc trong mọi đề án
b. Tìm tên (TENNV, HONV)của các nhân viên làm việc cho tất cả đề án do
phòng 5 chủ trì
c. Tìm nhữNG NHÂN VIÊN ĐƯợc phân công tất cả những đề án mà nhân viên Dinh
Ba Tien làm việc.

97
Cơ sở dữ liệu quan hệ

Chương 5: PHỤ THUỘC HÀM

Việc thiết kế cơ sở dữ liệu quan trọng nhất là phải tạo ra được các lược đồ
quan hệ tốt, đảm bảo không dư thừa dữ liệu cũng như có các bất thường trong
thao tác. Chương này sẽ thảo luận về một số vấn đề lý thuyết nhằm tạo được
quan hệ tốt đó, và cần quan tâm đặc biệt đến khái niệm ràng buộc giữa các dữ
liệu trong quan hệ đó chính là phụ thuộc hàm.
5.1. Phụ thuộc hàm
Khái niệm phụ thuộc hàm là khái niệm cơ bản và quan trọng nhất trong
thiết kế cơ sở dữ liệu. Nó là thước đo để đánh giá một thiết kế cơ sở dữ liệu có tốt
hay không. Phụ thuộc hàm chính là những ràng buộc dữ liệu được suy ra từ ý
nghĩa và các mối liên quan giữa các thuộc tính
5.1.1. Định nghĩa phụ thuộc hàm
Cho R(U), với R là quan hệ và U là tập thuộc tính.
Cho X,Y U, phụ thuộc hàm X → Y (đọc là X xác định Y) được định
nghĩa là:
∀ t, t’ ∈ R nếu t.X = t’.X thì t.Y = t’.Y
(Có nghĩa là: Nếu hai bộ có cùng trị X thì có cùng trị Y hay giá trị của bộ
tại thuộc tính X xác định duy nhất các giá trị tại thuộc tính Y)
Ý nghĩa toán học của phụ thuộc hàm X->Y: một giá trị của tập X xác
định duy nhất 01 giá trị của tập Y.
Và ta nói X xác định Y hay Y phụ thuộc hàm vào X. Phụ thuộc hàm được
suy ra từ những quy tắc dữ liệu khi ta khảo sát yêu cầu của bài toán.
Phụ thuộc hàm viết tắt là FD (Functional Dependency), trong đó X được
gọi là vế trái của phụ thuộc hàm và Y là vế phải phụ thuộc hàm.
Để biểu diễn các phụ thuộc hàm trong một lược đồ quan hệ, chúng ta sử
dụng khái niệm sơ đồ phụ thuộc hàm. Mỗi FD được biểu diễn bằng một đường
nằm ngang. Các thuộc tính ở vế trái của FD được nối với đường biểu diễn FD
bằng các đường thẳng đứng, các thuộc tính ở vế phải của FD được nối với đường
biểu diễn FD bằng mũi tên chỉ đến các thuộc tính.
Ví dụ: Ta có lược đồ cơ sở dữ liệu
MƯỢN(Sốthẻ, Mãsốsách, Tênngườimượn, Tênsách, Ngàymượn)
Với các phụ thuộc hàm:
Sốthẻ → Tênngườimượn
Mãsốsách → Tênsách

98
Cơ sở dữ liệu quan hệ

Sốthẻ, Mãsốsách → Ngàymượn


Biểu diễn phụ thuộc hàm dưới dạng sơ đồ ta có:

Nhận xét: cho một phụ thuộc hàm X -> Y thì không thể nói gì về Y -> X.
Ví dụ: Có MãSV -> TênSV nhưng không thể khẳng định có phụ thuộc
TênSV -> MãSV vì tên sinh viên có thể trùng nhau.
5.1.2. Hệ tiên đề Amstrong
Năm 1974 Amstrong đã đưa ra hệ luật dẫn hay là tính chất của phụ thuộc
hàm gọi là hệ tiên đề Amstrong, đó chính là các quy tắc biến đổi của phụ thuộc
hàm.
Cho lược đồ quan hệ r(U), U là tập thuộc tính, F là tập các phụ thuộc hàm
được định nghĩa trên quan hệ r.
Ta có phụ thuộc hàm A → B được suy diễn logic từ F nếu mọi quan hệ r
trên U thỏa các phụ thuộc hàm trong F thì cũng thỏa phụ thuộc hàm A → B.
Ví dụ:
Tập phụ thuộc hàm: F = { A → B, B → C}
Ta có phụ thuộc hàm A → C là phụ thuộc hàm được suy từ F.
a. Các tính chất của Phụ thuộc hàm
Cho X, Y, Z, W U, ta có:
1. Phản xạ: Nếu Y X thì X → Y
2. Tăng trưởng: Nếu Z U và X → Y thì XZ → YZ
(Ký hiệuXZ là X∪ Z)
3. Bắc cầu: Nếu X → Y và Y → Z thì X → Z
4. Giả bắc cầu: Nếu X → Y và WY → Z thì XW → Z
5. Luật hợp: Nếu X → Y và X → Z thì X →YZ
6. Luật phân rã: Nếu X → Y và Z Y thì X → Z
…………..
Nhận xét: Trong sáu luật trên thì các luật 4, 5, 6 suy được từ 1, 2, 3.
Người ta cũng đã chứng minh được là từ các luật 1, 2, 3 có thể suy ra được tất cả

99
Cơ sở dữ liệu quan hệ

các luật khác. Vì vậy các luật 1, 2, 3 là một hệ tiên đề, có tên là Hệ tiên đề
Amstrong
Ví dụ 1: Cho R(ABC) và tập phụ thuộc hàm F {AB C , C A }Áp
dụng hệ tiên đề Amstrong chứng minh rằng BCABC
Ta có:
 C A tăng cường vào hai vế thêm B ta được BC AB (1)
 AB C tăng cường thêm AB vào hai vế ta được AB ABC (2)
 Từ (1,2) áp dụng luật bắc cầu suy ra điều phải chứng minh
BCABC
Ví dụ 2: Chứng minh nếu Nếu X  Y và U  V thì XU  YV
Ta có:
1. Từ X  Y ( giả thiết) có XU  YU, (tăng trưởng U)
2. Từ U  V (giả thiết) có YU  YV (tăng trưởng Y)
3. Có XU  YV ( bắc cầu (1) và (2) )

5.2. Bao đóng và bài toán thành viên


Cho lược đồ quan hệ trên tập thuộc tính U và tập phụ thuộc hàm F, cùng
phụ thuộc hàm f = X  Y  F. Bài toán thành viên giúp xác định các quan hệ r
của lược đồ có thoả f hay không?
Để giải quyết bài toán trên ta có hai phương án:
Phương án 1: Sử dụng định nghĩa phụ thuộc hàm, khi đó ta phải kiểm tra
tất cả các quan hệ có thể có trên lược đồ quan hệ, nhưng số lượng các quan hệ là
vô cùng lớn (có thể vô hạn) vì vậy không thể kiểm tra được
Phương án 2: Sử dụng hệ tiên đề AMSTRONG để biến đổi F, nếu sau
một số hữu hạn bước biến đổi ta nhận được f thì kết luận các quan hệ r trên lược
đồ thoả mãn f. Tuy nhiên với phương án này trong trường hợp các quan hệ trên
lược đồ không thoả mãn f thì không thể chứng minh được.
Như vậy cả hai phương án trên đều chưa đủ giải quyết bài toán đặt ra.
Khái niệm bao đóng sẽ giúp ta giải quyết triệt để bài toán.
5.2.1. Bao đóng
a. Bao đóng của tập phụ thuộc hàm
Cho R(U), U là tập thuộc tính và F là tập các phụ thuộc hàm trên tập thuộc
tính U, tập tất cả các phụ thuộc hàm được suy dẫn ra từ tập F được gọi là bao
đóng của tập phụ thuộc hàm và kí hiệu là F+, F+ được viết là:

Nếu F+ = F thì F được gọi là họ đầy đủ của các phụ thuộc hàm.

100
Cơ sở dữ liệu quan hệ

Ý nghĩa của bao đóng tập phụ thuộc hàm: Bao đóng của tập phụ thuộc
hàm F là tập tất cả các phụ thuộc hàm có thể nhận được sau khi áp dụng các luật
phản xạ, bắc cầu và gia tăng đối với các phụ thuộc hàm trong F.
Để giải quyết bài toán thành viên ta chỉ cần xác định phụ thuộc hàm fi :
X->Y có thuộc F+ hay không?
b. Bao đóng của tập thuộc tính X
Tập tất cả các thuộc tính có thể suy diễn ra từ X nhờ hệ tiên đề Amstrong
gọi là bao đóng của tập thuộc tính X, kí hiệu là X+.
Định nghĩa: Cho một lược đồ quan hệ trên tập thuộc tính U, tập phụ
thuộc hàm F và một tập thuộc tính XU. Bao đóng của 1 tập thuộc tính X (ký
hiệu X+) là tập tất cả các thuộc tính A thuộc U sao cho phụ thuộc hàm X->A F+
.
X+F = { A | A U , X  A  F+ }
Các tính chất :
1. (Phản xạ) X  X+
2. (Đơn điệu ) Nếu X  Y  X+  Y+
3. (Luỹ đẳng) X++ = X+
4. X+ Y+  (XY)+
5. (X+ Y)+ = (XY+)+ = (XY)+
6 . X  Y  F + & Y  X  F+  X + = Y +
7. X  Y  F+  Y  X+
Ý nghĩa của tính chất 7: Để giải quyết bài toán thành viên ta chỉ cần xác
định phụ thuộc hàm fi : X->Y có thuộc F+ hay không và tương đương với việc
xác định Y  X+ hay không?
Để giải quyết yêu cầu này ta phải xác định được X+ (bao đóng của tập
thuộc tính X).
c. Thuật toán xác định bao đóng của tập thuộc tính X (Closure(X,F)):
Input: Tập thuộc tính X và tập phụ thuộc hàm F
Output: Bao đóng của X+?
Thực hiện: lần lượt tính các X0, X1,… theo các bước:
 Bước 1: Đặt X0 = X
 Bước 2: Lần lượt xét các phụ thuộc hàm của F nếu tồn tại pth Y ZF
mà YXi thì Xi+1 = Xi  {Z}, ngược lại, đặt Xi+1 = Xi
 Bước 3: Nếu ở bước 2 mà không tính được Xi+1 thì Xi chính là bao đóng
của tập thuộc tính X, ngược lại lặp lại bước 2.

101
Cơ sở dữ liệu quan hệ

Giả mã của thuật toán CLOSURE(X,F)


Begin
+
X = X;
Do
+ +
Old X = X ;
với mỗi phụ thuộc hàm Y → Z trong F thực hiện
nếu X ⊃ Y thì X = X ∪ Z;
+ + +

+ +
While ( X = Old X );
End
Ví dụ 1: Xét lược đồ quan hệ
R = {MãsốNV, HọtênNV, MãsốDA, TênDA, ĐịađiểmDA, Sốgiờ}
và tập phụ thuộc hàm
F = {MãsốNV → HọtênNV,
MãsốDA → TênDA, ĐịađiểmDA,
MãsốNV, MãsốDA → Số giờ}
Tính bao đóng {MãsốNV}+, {MãsốNV, MãsốDA} +

Giải: Áp dụng thuật toán ta có:


+
{MãsốNV} = { MãsốNV}
Xét F1: MãsốNV → HọtênNV nên có {MãsốNV} = {MãsốNV} ∪ + +

HọtênNV
+
Và kết luận: {MãsốNV} = {MãsốNV, HọtênNV}
+
 {MãsốNV, MãsốDA} = {MãsốNV, MãsốDA}
 Xét F1: MãsốNV → HọtênNV nên có
{MãsốNV, MãsốDA} = {MãsốNV, MãsốDA}∪ HọtênNV= {MãsốNV,
+

MãsốDA, HọtênNV}
 Xét F2: MãsốDA → TênDA, ĐịađiểmDA nên có
{MãsốNV, MãsốDA} ={MãsốNV, MãsốDA HọtênNV}∪ {TênDA,
+

ĐịađiểmDA}
={MãsốNV, MãsốDA, HọtênNV, TênDA, ĐịađiểmDA}
 Xét F3: MãsốNV, MãsốDA → Số giờ nên có:
+
{MãsốNV, MãsốDA} ={MãsốNV, MãsốDA, HọtênNV, TênDA,
ĐịađiểmDA} ∪ Số giờ
={MãsốNV, MãsốDA, HọtênNV, TênDA, ĐịađiểmDA, Số giờ}
Kết luận:
+
{MãsốNV, MãsốDA} ={MãsốNV, MãsốDA, HọtênNV, TênDA,
ĐịađiểmDA, Số giờ}

102
Cơ sở dữ liệu quan hệ

Ví dụ 2: Xét lược đồ quan hệ


Cho R = (A, B, C, D, E, G) và tập phụ thuộc hàm
F = {AB C, C A, BC D, ACD B, D EG, BE C, CG BD,
CE AG}. Tính: (BD)+
Giải:
X0 = BD
 Xét phụ thuộc hàm D  EG => thêm E và G vào X0  X1 = X0 ∪ EG=
BDEG
 Phụ thuộc hàm BE  C => thêm C vào X1  X2 = X1 ∪ C =BCDEG
 Phụ thuộc hàm CE  AG => thêm A vào X2  X3 = X2 ∪ A = ABCDEG
Áp dụng tất cả các phụ thuộc hàm không làm thay đổi X+, nên (BD)+ =
ABCDEG
5.2.2. Bài toán thành viên
Định nghĩa: Một phụ thuộc hàm XY là thành viên của F nếu XY
F+
Về nguyên tắc ta sẽ tìm bao đóng F+ sau đó kiểm tra xem phụ thuộc hàm
XY có thuộc F+ hay không nhưng việc tìm F+ là một việc tốn nhiều thời gian
và công sức vì thế thay vì tìm F+ chúng ta có thể dùng thuật toán sau để kiểm tra
phụ thuộc hàm XY có là thành viên của F hay không.
Input: phụ thuộc hàm cần kiểm tra XY và tập phụ thuộc hàm F
Output: XY là thành viên của F đúng hay sai
Các bước thực hiện:
- Bước 1: Tính X+
- Bước 2: So sánh X+ với Y nếu Y X+ thì khẳng định X  Y là thành
viên của tập phụ thuộc hàm F, ngược lại không là thành viên của F.
Ví dụ 1:
Cho R(ABCDE) và tập phụ thuộc hàm F= { A  CD; C  E; D  BC }
Xác định xem A  B có là thành viên của F.
Giải:
- Tính A+={ACDEBC}
- Nhận thấy B  A+ nên khẳng định phụ thuộc hàm A  B là
thành viên của F.

Ví dụ 2:

103
Cơ sở dữ liệu quan hệ

Cho R(ABEGHI) và tập phụ thuộc hàm F= { AB  E; AG  I; BE  I;


E  G; BE  I; GI  H; }
Xác định xem AB  GH có là thành viên của F.
Giải:
- Tính AB+={ABEIGH}
- Nhận thấy GH  AB+ nên khẳng định phụ thuộc hàm AB
 GH là thành viên của F.
5.3. Tập phụ thuộc hàm tương đương
Hai tập phụ thuộc hàm F và G là tương đương nếu:
 Tất cả các phụ thuộc hàm trong F có thể được suy ra từ G, và
 Tất cả các phụ thuộc hàm trong G có thể suy ra từ F.
Vì thế, F và G là tương đương nếu F+ = G+
Nếu F và G là tương đương thì ta nói F phủ G hay G phủ F.
Thuật toán kiểm tra sự tương đương của 2 tập PTH
 F phủ G: X  YG, tính X+ từ F, sau đó kiểm tra xem YX+
 G phủ F: X  YF, tính X+ từ G, sau đó kiểm tra xem YX+
Ví dụ : Xét hai tập phụ thuộc hàm
F = {A →C, AC → D, E→AD, E →H }
G = { A →CD, E → AH }
Ta chứng minh F phủ G:
Tìm bao đóng của các vế trái của các phụ thuộc hàm trong G theo F. Áp
dụng thuật toán tìm bao đóng của tập thuộc tính, ta có:
{A}+ = { A, C, D };
{E}+ = {E, A, D, H, C}
ta thấy các bao đóng này chứa các vế phải tương ứng. Từ đó suy ra F phủ
G.
Ta chứng minh G phủ F:
Tìm bao đóng của các vế trái của các phụ thuộc hàm trong F theo G. Ta
có:
{A}+ ={A,C,D},
{AC}+ = { A,C,D},
{E}+ = {E,A,H,C,D}, ta thấy các bao đóng này chứa các vế phải tương
ứng. Từ đó suy ra E phủ F.
Tóm lại E tương đương với F.

104
Cơ sở dữ liệu quan hệ

5.4. Tập phụ thuộc hàm tối thiểu


5.4.1. Phụ thuộc hàm có vế phải một thuộc tính
Mỗi tập phụ thuộc hàm F đều tương đương với tập phụ thuộc hàm G mà
vế phải của các phụ thuộc hàm trong G chỉ chứa một thuộc tính
Ví dụ: Cho tập phụ thuộc hàm F
F = {A →C, AC → D, E→AD, E →H }
Ta suy ra:
F≡G={ A →C, AC → D, E→A, E→D, E →H }
5.4.2. Phụ thuộc hàm có vế trái dư thừa
Gọi F là tập phụ thuộc hàm của quan hệ R(U)và X, Y ⊆U, X → Y ∈ F.
Nói rằng phụ thuộc hàm X → Y có vế trái dư thừa (phụ thuộc không đầy
đủ) nếu có thuộc tính A ∈ X sao cho:
F≡F - { X → Y }∪{ (X-A) → Y }
Nói một cách khác ta không thể thay thế bất kì một phụ thuộc hàm X → Y
trong F bằng một phụ thuộc hàm A → Y mà A là tập con của X mà vẫn được tập
phụ thuộc hàm tương đương với F ban đầu (Không có thuộc tính dư thừa ở vế
trái của phụ thuộc hàm)
Ví dụ:
Cho tập phụ thuộc hàm F={ A → BC, B → C, AB → D} ta thấy phụ
thuộc hàm AB → D có vế trái dư thừa B vì
F≡ F - { AB → D}∪{ A → D }
≡ { A → BC, B → C, A → D }
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
các 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
Input: Tập phụ thuộc hàm F
Output: Tập phụ thuộc hàm F không chứa phụ thuộc hàm có vế trái dư
thừa
Các bước thực hiện:
o Bước 1: Với mỗi pth X  Y của F thì thực hiện bước 2
o Bước 2: Với mỗi A  X, nếu A  Y F+ thì thay X  Y bằng A
 Y. Lặp lại bước 2 đến khi vế trái X không dư thừa

Ví dụ: Cho tập F={ A → BC, B → C, AB → D}

105
Cơ sở dữ liệu quan hệ

Xét phụ thuộc hàm AB → D: có A+={ABCD} nên A → D  F+ nên thay


AB → D bằng A → D và
F≡{ A → BC, B → C, A → D }
5.4.3. Tập phụ thuộc hàm không dư thừa
F là tập PTH không dư thừa nếu không tồn tại F’ ⊂ F sao cho F’ ≡ F.
Ví dụ: Cho F = {A BC, B D, AB D} F là dư thừa vì F≡F’={ A
BC, B D}
Thuật toán loại khỏi F các phụ thuộc hàm dư thừa
- Input: Tập PTH F
- Output: Tập F không có PTH dư thừa
- Thuật toán:
 Bước 1: Với mỗi PTH X  Y trong F
 Bước 2: Nếu X  Y là thành viên của F – {X  Y} thì loại
X  Y khỏi F
 Bước 3: Lặp lại bước 2 cho đến khi hết các PTH cần xét
Ví dụ:
Cho F = {A BC, B D, AB D}. Tìm tập phụ thuộc hàm không dư
thừa.
Giải:
1. Giả sử A  BC là dư thừa F={B  D, AB  D}
Kiểm tra A  BC có là thành viên của F: A+={A} ta thấy BC ∉ A+
Vậy: A  BC không dư thừa
2. Giả sử B->D là dư thừa: F={A  BC; AB  D}
Tính: B+ = {B} ta thấy D ∉ B+
=> B  D không dư thừa
3. Xét AB  D: F={A  BC; B  D}
Tính (AB)+ = {ABCD} ta thấy D ∈ (AB)+
=> Vậy: AB  D là dư thừa
Kết luận: F ≡ { A BC, B D } là tập phụ thuộc hàm không dư thừa
5.4.4. Tập phụ thuộc hàm tối thiểu
F được gọi là tập phụ thuộc hàm tối thiểu Ftt (phủ tối thiểu) nếu F thỏa
mãn đồng thời các điều kiện sau:
1. F là tập phụ thuộc hàm có vế trái không dư thừa
2. F là tập phụ thuộc hàm có vế phải một thuộc tính

106
Cơ sở dữ liệu quan hệ

3. F là tập phụ thuộc hàm không dư thừa

Thuật toán tìm phủ tối thiểu của một tập phụ thuộc hàm
Input: Tập phụ thuộc hàm F
Output: Phủ tối thiểu của F
Các bước:
Bước 1: Loại khỏi F các phụ thuộc hàm có vế trái dư thừa
Bước 2: Tách các phụ thuộc hàm có vế phải nhiều hơn một thuộc tính
thành các phụ thuộc hàm có vế phải một thuộc tính
Bước 3: Loại khỏi F các phụ thuộc hàm dư thừa

Lưu ý:
- Với thuật toán trên ta luôn tìm được ít nhất một phủ tối thiểu Ftt ≡ F
- Nếu ta thay đổi trật tự loại bỏ các phụ thuộc hàm trong F thì ta có thể tìm
được các phủ tối thiểu khác nhau.
Ví dụ 1:
Cho tập F={ A → BC, B → C, AB → D}. Tìm phủ tối thiểu của F
Giải:
Bước 1: Xét phụ thuộc hàm AB → D có A+={ABCD} nên A → D  F+
thay AB → D bằng A → D và
F≡{ A → BC, B → C, A → D }
Bước 2: Tách phụ thuộc hàm A → BC ta được
F≡{ A → B, A → C, B → C, A → D }
Bước 3: Kiểm tra xem các phụ thuộc hàm có dư thừa hay không
 Giả sử A → B dư thừa khi đó F = { A → C, B → C, A → D }
Tính A+ = {ACD} ta thấy B ∉ A+ nên A → B không dư thừa.
 Giả sử A → C dư thừa khi đó F= { A → B, B → C, A → D }
Tính A+={ABCD} ta thấy C ∈ A+ nên A → C dư thừa
F≡{ A → B, B → C, A → D }
 Giả sử B → C dư thừa khi đó F={ A → B, A → D }
Tính B+ ={B} ta thấy C ∉ B+ nên B → C không dư thừa
 Giả sử A → D dư thừa khi đó F= { A → B, B → C }
Tính A+={ABC} ta thấy D ∉ A+ nên A → D không dư thừa
Kết luận: Phủ tối thiểu của tập F đã cho là
Ftt={ A → B, B → C, A → D }

107
Cơ sở dữ liệu quan hệ

Ví dụ 2: Cho F={AB CD, B C, C D}. Tìm tập phụ thuộc hàm tối
thiểu
Giải:
Bước 1: Loại PTH có vế trái dư thừa:
Xét AB  CD, giả sử dư A cần CM B  CD là thành viên của F:
B+={BCD} => đúng nên dư A.
Khi đó F = {B  CD; B  C; C  D}
Bước 2: Đưa về dạng PTH có vế phải 1 thuộc tính
F = {B  C; B  D; C  D}
Bước 3: Loại khỏi F các PTH dư thừa
Dễ thấy B  D là dư thừa vì B  C và C  D
Vậy phủ tối thiểu của Ftt = {B  C; C  D}
5.5. Khóa của lược đồ quan hệ
Định nghĩa:
- Cho R(A1, …,An) là lược đồ quan hệ;
- Tập các thuộc tính U = { A1, A2, .. , An}
- Tập các phụ thuộc hàm F= { f1, f2, .. ,fn} xác định trên R.
- K  U là khoá của R nếu thoả mãn hai điều kiện sau :
(1): K  U
(2): Không tồn tại K'  K mà K'  U
Tập thuộc tính S được gọi là siêu khóa nếu S ⊇ K
Thuộc tính A được gọi là thuộc tính khóa nếu A ∈ K với K là khóa bất kì
của lược đồ R, ngược lại A là thuộc tính không khóa.
Một lược đồ quan hệ có thể có nhiều khóa và tập thuộc tính không khóa
có thể là rỗng.
Khi thiết kế một hệ thống thông tin thì việc tạo được một lược đồ quan hệ
đạt một tiêu chuẩn nào đó là rất quan trọng và việc xác định chuẩn của một lược
đồ quan hệ liên quan mật thiết với thuật toán tìm khóa.
Thuật toán tìm một khóa của lược đồ quan hệ R
Input:
 Lược đồ quan hệ R(A1,A2,…An)
 Tập thuộc tính U {A1,A2,…An}
 Tập PTH F
Output: Khóa K của quan hệ R

108
Cơ sở dữ liệu quan hệ

Ý tưởng: Bắt đầu từ tập U vì U+ = U. Ta bớt dần các phần tử của U để


nhận được tập bé nhất mà bao đóng của nó vẫn bằng U.
Các bước:
Bước 1: Gán K = U
Bước 2: Loại khỏi K lần lượt từng thuộc tính A mà ( K\A)+ =U
Lặp lại bước 2 đến khi không loại khỏi K được nữa
Nhận xét: Thuật toán trên chỉ tìm được một khoá trong sơ đồ quan hệ. Nếu
cần tìm nhiều khoá, ta thay đổi trật tự loại bỏ các phần tử của K.
Ví dụ:
Cho R(ABCD) và tập phụ thuộc hàm F = { AB  C; D  B; C  ABD}
Giải:
Bước 1: K=ABCD
Bước 2: Lần lượt loại các thuộc tính của K
Loại A ta có (BCD)+ = {BCDA} = U nên K= BCD
Loại B ta có (CD)+ = {CDAB} = U nên K = CD
Loại C ta có D+ = {DB} ≠ U nên không thể loại C
Loại D ta có C+ = {CABD} = U nên K = C
Kết luận: C là một khóa của lược đồ R đã cho.
Nhận xét: Ta có thể cải thiện tốc độ thực hiện thuật toán trên bằng cách
trong bước 1 ta thay K= U bởi K=Left(U) U (U\(Left U Right)) – tập các thuộc
tính xuất hiện ở vế trái và không xuất hiện ở cả hai vế của phụ thuộc hàm.
Thuật toán tìm khóa cải tiến
 Bước 1: Gán K = Left(U) U (U\(Left U Right))
 Bước 2: Loại khỏi K lần lượt từng thuộc tính A mà ( K\A)+ =U
 Lặp lại bước 2 đến khi không loại khỏi K được nữa
Ví dụ:
Cho R(ABCD) và tập F = {AB → C, B → D, D → B}
Giải:
 K=ABD
 Loại A ta có BD+ = {BD} ≠ U nên không loại được A
 Loại B ta có AB+ = {ABCD}= U nên K= AD
 Loại D ta có A+ = {A} ≠ U nên không loại được D
Kết luận khóa của lược đồ đã cho là AD.
Thuật toán tìm tất cả các khóa
Một số khái niệm cơ bản:

109
Cơ sở dữ liệu quan hệ

- Tập thuộc tính nguồn (TN): bao gồm các thuộc tính chỉ xuất hiện
ở vế trái, không xuất hiện ở vế phải của phụ thuộc hàm và các thuộc tính
không xuất hiện ở vế trái lẫn vế phải của phụ thuộc hàm
- Tập thuộc tính đích (TĐ): bao gồm các thuộc tính chỉ xuất hiện ở
vế phải không xuất hiện ở vế trái của phụ thuộc hàm
- Tập thuộc tính trung gian (TG): Chứa thuộc tính xuất hiện ở cả
vế trái lẫn vế phải của phụ thuộc hàm.
Input: Lược đồ R(U) và tập phụ thuộc hàm F
Output: Tất cả các khóa của phụ thuộc hàm
Các bước:
- Bước 1: Tạo tập nguồn TN và tập trung gian TG
- Bước 2: Tính TN+, nếu TN+ = U, kết luận chỉ có một khóa duy nhất
là TN. Ngược lại qua bước 3.
- Bước 3: Tìm tất cả tập con Xi của tập trung gian.
- Bước 4: Tìm siêu khóa Si bằng cách với mọi Xi, nếu (TN U
+ +
Xi) =R thì Si = TN U {Xi}
- Bước 5:
- Tìm khóa bằng cách loại bỏ các siêu khóa không tối thiểu
- với mọi Si, Sj thuộc S nếu Si chứa trong Sj thì loại bỏ tập Sj ra khỏi
siêu khóa (VD: Si=AB, Sj=ABC thì loại bỏ Sj ra khỏi tập siêu khóa)
S còn lại chính là tập khóa cần tìm.
Ví dụ: Cho lược đồ quan hệ R(CSZ) và tập phụ thuộc hàm F={CS → Z; Z
→ C}. Tìm tất cả các khóa của lược đồ quan hệ trên.
Giải:
Bước 1: TN={S}, TG={CZ}
Bước 2: TN+ ≠ U nên qua bước 3
Bước 3: Tập con Xi của tập trung gian X={∅,C,Z,CZ}
Bước 4:
S+=S Khác R có nghĩa không có siêu khóa.
SC+=SCZ bằng với R nên siêu khóa SC.
SZ+=SZC bằng với R nên Siêu khóa là CZ
SCZ+= bằng với R nên Siêu khóa là CSZ
Bước 5:
Vậy tập siêu khóa S={SC, CZ, CSZ}
Vì SC chứa trong CSZ và CZ chứa trong CSZ nên loại bỏ siêu khóa CSZ
khỏi tập siêu khóa.
Kết quả khóa của lược đồ quan hệ trên là SC và CZ. K={SC, CZ}
Ta có thể lập bảng để thực hiện bước 4 và 5 như sau:

110
Cơ sở dữ liệu quan hệ

Xi TN U Xi (TN U Xi)+ Siêu khóa Khóa


∅ S S
C SC SCZ = U SC SC
Z SZ SZC = U SZ SZ
CZ SCZ SCZ=U SCZ

Quan hệ đã cho có 2 khóa là SC và SZ.

111
Cơ sở dữ liệu quan hệ

5.6. Tổng kết chương


Trong chương này chúng ta đã đề cập đến những bất thường xảy ra khi
thực hiện cập nhật dữ liệu mà cơ sở dữ liệu có sự dư thừa.
Chúng ta đã định nghĩa khái niệm phụ thuộc hàm và thảo luận một số tính
chất của nó. Các phụ thuộc hàm là các nguồn thông tin ngữ nghĩa cơ bản về các
thuộc tính của lược đồ quan hệ. Chúng ta đã chỉ ra cách suy diễn các phụ thuộc
phụ thêm dựa trên một tập các phụ thuộc hàm cho trước và một tập các quy tắc
suy diễn.
Chúng ta đã định nghĩa các khái niệm bao đóng và phủ tối thiểu của một
tập phụ thuộc hàm và cung cấp thuật toán tính phủ tối thiểu. Ta cũng đã chỉ ra
làm thế nào để kiểm tra xem hai tập phụ thuộc hàm có tương đương nhau hay
không.
Chúng ta cũng đã trình bày thuật toán giúp tìm được một khóa tối thiểu
hay tất cả các khóa cho lược đồ quan hệ dựa trên tập thuộc tính U và tập phụ
thuộc hàm F.

5.7. Câu hỏi ôn tập


Câu 1. F:={AB --> C,D --> EG,C--> A,BE --> C, BC --> D, CG -->
BD,ACD --> B, CE --> AG}
A. EB, CE, BC không là khóa của lược đồ quan hệ
B. AB, CG, CD khóa của lược đồ quan hệ
C. AB, CG, CD không là khóa của lược đồ quan hệ
D. ED, CE, BC khóa của lược đồ quan hệ
Câu 2. Chọn một khẳng định nào sau đây là đúng
A. Nếu F = {A → B, B → C, A → D, B → D }.khi đó C → A  F+
B. Nếu F = {A → B, B → C, A→ D, B→ D }.khi đó A→ C F+
C. Nếu F = {A→ B, B→ C, A→ D, B → D }.khi đó D → A  F+
D. Nếu F = {A→ B, B→ C, A→ D, B→ D }.khi đó C→ D F+
Câu 3. Hãy chọn từ/cụm từ tương ứng để hoàn thiện khảng định sau: Giá
trị các thành phần của khoá .........
A. Không thể nhận giá trị null và chấp nhận các giá trị không xác định.
B. Không thể nhận giá trị null hay các giá trị không xác định.
C. Có thể nhận giá trị null hay các giá trị không xác định.
D. Có thể nhận giá trị các giá trị không xác định.

112
Cơ sở dữ liệu quan hệ

Câu 4. Xét lược đồ quan hệ R(T,V,X,P,K) với tập phụ thuộc hàm
F={TV->X; XP->K; X->T; K->P}. Bao đóng của tập X={TVK} là:
A.TVKX B. TVKP C. TVXPK D. TVK
Câu 5. Cho F={AB→C, B→D, CD→E, CE→GH, G→A}. Cho biết các
phụ thuộc hàm nào sau đây được suy dẫn từ F nhờ luật dẫn Armstrong:
A. AB→E. B.AB→AG.
C.AB→G D. Cả 3 phương án đã cho
Câu 6. Chọn một khẳng định nào sau đây là đúng nhất khi nói về thuộc
tính dư thừa
A. A1A2 → B, A1 dư thừa khi A1A2→ B phụ thuộc đầy đủ
B. A1A2→ B, A1 dư thừa khi A2 không xác định B
C. A1A2→ B, A1 dư thừa khi A2 → B phụ thuộc đầy đủ
D. A1A2→ B, A1 dư thừa khi A2→ B
Câu 7. Cho lược đồ quan hệ Q(A,B,C,D,E) có r là
quan hệ tương ứng.
r (A B C D E )
a b c d e
a b g d h
h c n a f
c d n b d
Cho biết thể hiện trên thỏa phụ thuộc hàm nào sau đây :
A. E->ABC B. AB->E C. C->D D. A->C
Câu 8. Cho R(ABCDE) và tập phụ thuộc hàm F = { AB->C, D->E, E-
>B}
Cho biết bao đóng của tập thuộc tính CD+
A. CDEBA B. CDB C. DEB D. CDEB
Câu 9. Nếu A → B và A → C thì suy ra:
A. A → AB B. AA→ C C. A → BC D. AB→ BC
Câu 10. Ω ={A, B, C, D, E, G }, F = {B --> C, C --> B, A --> GD}, khoá
quan hệ là:
A. AB. B. AC C. ACE D. ABC
Câu 11. Cho lược đồ quan hệ Q(A,B,C,D,E,G,H) và tập phụ thuộc hàm
F ={B -> A; DA -> CE; D -> H; GH-> C; AC -> D}. Bao đóng của tập
thuôc tính {AC}:
A. {ACEH} B. {ABCDEH} C. {ACDEH} D. {ACDE}
Câu 12. Thuộc tính A1 dư thừa vế trái trong A1A2 B F+ khi và chỉ khi:

113
Cơ sở dữ liệu quan hệ

A. (F - {A1A2 B} A1)+ F+ B. (F - {A1A2 B} A2)+ F+


C. (F - {A1A2 B} {A2 B})+ F+ D. (F -
{A1A2 B} {A2 B)}+ F+
Câu 13. Xét R(A,B,C,D) có khóa chính là A, là 2NF nhưng không đạt
3NF. Phụ thuộc hàm nào sau đây là không đúng:
A. A->B B. C->A C. B->C D. A->C
Câu 14. Chọn một khẳng định nào sau đây là đúng nhất khi nói về các phụ
thuộc hàm gia tăng:
A. A→ B  A → BC.
B. Có thể mở rộng vế trái, không mở rộng vế phải
C. Có thể mở rộng vế trái hoặc cả hai vế phụ thuộc hàm cùng một thuộc
tính.
D. A → B  AC→ B và A → BC.
Câu 15. Cho lược đồ quan hệ Q(A,B,C,D,E,I) và tập phụ thuộc hàm
F={ACD→EBI, CE→AD}. Tất cả các khoá của Q là
A. ACD và CE B. AD và AE C. AC và CE D. CD
và ACE
Câu 16. Cho lược đồ quan hệ Q(A,B,C,D,E,G) và tập phụ thuộc hàm:
F={AB -> C, C -> A, BC -> D, ACD -> B, D ->EG, BE -> C, CG -> BD,
CE -> AG}
Tìm bao đóng của các tập X={BD}.
A.ABCDE B. BDEG C. ABCDEG D. BD
5.8. Bài tập áp dụng
Câu 1. Cho lược đồ quan hệ R = <U, F> với tập thuộc tính U =
ABCDEGH và tập phụ thuộc hàm F ={A  D, ABDE, CEG, E  H}
a. Tính bao đóng X+ với X = (AB), X= (AE)
b. Chứng tỏ rằng nếu r thoả F thì r cũng thoả : AB  DH
c. Xác định 1 khóa và tất cả các khóa của quan hệ
d. Tìm phủ tối thiểu của tập phụ thuộc hàm F.
Câu 2. Cho lược đồ quan hệ R ( ABCDEGH) và tập phụ thuộc
hàm F ={B D, AB  C, CD E, CE  GH, G A}.
a. Áp dụng hệ tiên đề Amstrong để tìm chuỗi suy diễn cho: AB G
và AB  E
b. Tìm phủ tối thiểu của F
c. Tìm một khoá tối thiểu của lược đồ quan hệ trên, tìm tất cả các
khóa của quan hệ

114
Cơ sở dữ liệu quan hệ

Chương 6: CHUẨN HÓA CƠ SỞ DỮ LIỆU

Trong chương này, sẽ giới thiệu nguyên lý thiết kế và cài đặt các hệ cơ sở
dữ liệu quan hệ. Kỹ thuật chuyển đổi một quan hệ chưa chuẩn hóa về một nhóm
các quan hệ ở dạng chuẩn 3NF không bị tổn thất thông tin, trong một số trường
hợp các phép tách vẫn bảo toàn các phụ thuộc. Nội dung của chương gồm:
- Tách không mất mát thông tin một lược đồ quan hệ,
- Các dạng chuẩn hóa dữ liệu.
6.1. Nguyên tắc thiết kế Cơ sở dữ liệu
6.1.1. Nguyên tắc 1:
Khi xây dựng lược đồ quan hệ sao cho dễ giải thích ý nghĩa của nó. Mỗi
lược đồ quan hệ tương ứng với một kiểu thực thể hoặc một kiểu liên kết và tên
gọi của nó phải gợi nhớ đến đối tượng mà nó lưu trữ dữ liệu.
Ví dụ lược đồ cơ sở dữ liệu cho bài toán quản lý đề án công ty là một lược
đồ cơ sở dữ liệu tốt vì các quan hệ và các thuộc tính đều rõ ràng, dễ hiểu.
6.1.2. Nguyên tắc 2:
Khi thiết kế cơ sở dữ liệu phải đảm bảo sao cho không sinh ra các dị
thường khi cập nhật dữ liệu. Vi dụ cho quan hệ Nhân viên_ Đơn vị như sau:

Quan hệ này thiết kế không tốt vì:


 Dư thừa dữ liệu: nếu một đơn vị có nhiều nhân viên làm việc thì
thông tin về đơn vị bao gồm mã đơn vị, tên đơn vị, mã nhân viên quản lý đơn vị
sẽ lặp lại nhiều lần

115
Cơ sở dữ liệu quan hệ

 Không nhất quán dữ liệu: do dư thừa dữ liệu gây ra. Giả sử sửa bản
ghi thứ nhất tên đơn vị là Nhân sự nhưng không nhất quán với dữ liệu ở bản ghi
thứ 2, 5, 6 (vẫn có tên là Nghiên cứu)
 Dị thường khi thêm bản ghi: thêm một đơn vị mới mà đơn vị đó
chưa có nhân viên nào với cách lưu trữ như trên thì các thông tin về nhân viên sẽ
nhận giá trị Null như vậy lại vi phạm ràng buộc khóa chính với Mã nhân viên
không được bỏ trống.
 Dị thường khi xóa bản ghi: Xóa bản ghi cuối cùng thì thông tin về
đơn vị 1 cũng sẽ bị mất trong khi ta không muốn xóa đơn vị chỉ muốn xóa nhân
viên thuộc đơn vị đó mà thôi.
6.1.3. Nguyên tắc 3
Không nên thiết kế các trường dữ liệu mà giá trị của nó thường xuyên
nhận giá trị Null do giá trị Null có thể có nhiều cách hiểu khác nhau, có cũng
được mà không cũng được. Hơn thế nữa với các giá trị Null thì các hàm tính toán
như Count, Sum không thực hiện được
6.1.4. Nguyên tắc 4
Khi thiết kế cơ sở dữ liệu phải đảm bảo sao cho khi nối các bảng lại với
nhau bởi điều kiện bằng sẽ không sinh ra các bộ không có thật. Ví dụ cho lược đồ
cơ sở dữ liệu gồm các quan hệ sau:

116
Cơ sở dữ liệu quan hệ

Khi nối tự nhiên hai bảng trên ta sẽ có:

Ta sẽ thấy những bộ giá trị đánh dấu * là những bộ không có thật.


6.2 Chuẩn hóa và các dạng chuẩn dữ liệu
6.2.1 Giới thiệu
Khi thực hiện lưu trữ trên các quan hệ chưa được chuẩn hóa thường xuất
hiện các dị thường thông tin. Nghĩa là xảy ra sự dư thừa, mất dữ liệu, mâu thuẫn
hay không nhất quán dữ liệu có thể xảy ra khi cập nhật, bổ sung hay sửa đổi dữ
liệu. Có sự dị thường thông tin là nguyên nhân gây ra sự cản trở của việc tìm
kiếm, hỏi đáp thông tin dẫn đến đưa ra kết quả không chính xác. Mục tiêu chính
của chuẩn hóa thông tin là loại bỏ tối đa khả năng xuất hiện các dị thường dữ liệu
khi tiến hành lưu trữ thông tin trong cơ sở dữ liệu. Khi đó, dữ liệu được lưu trữ sẽ
phản ánh thế giới thực khách quan, đầy đủ và chính xác hơn.
Chuẩn hóa là quá trình khảo sát danh sách các thuộc tính và áp dụng các
quy tắc phân tích vào danh sách đó để biến đổi thành nhiều tập nhỏ hơn, sao cho:
- Tối thiểu việc lặp lại,
- Tránh dị thường thông tin,
- Xác định và giải quyết được sự không rõ ràng, nhập nhằng trong suy
diễn
Chuẩn hóa lược đồ là việc áp dụng một số quy tắc để đưa các bảng từ dạng
chuẩn thấp lên dạng chuẩn cao hơn, quá trình này thực hiện theo phương pháp
trên xuống bằng việc đánh giá mối quan quan hệ và tách quan hệ nếu cần

117
Cơ sở dữ liệu quan hệ

Chuẩn hóa lược đồ quan hệ là quá trình phân rã 1 lược đồ quan hệ đã cho
dựa trên một tập phụ thuộc hàm nhằm đảm bảo các lược đồ quan hệ thỏa mãn
tính chất:
+ Trùng lặp dữ liệu ít nhất
+ Khả năng gây ra bất thường khi cập nhật được giảm thiểu
Quá trình chuẩn hóa phải đảm bảo:
+ Bảo toàn thông tin
+ Bảo toàn các phụ thuộc dữ liệu
Cơ sở của chuẩn hóa dựa trên: phụ thuộc hàm, phụ thuộc đầy đủ, khóa,
thuộc tính không khóa, … Một mô hình được xem là mô hình chuẩn hóa tốt là
mô hình mà ở mỗi thuộc tính không khóa phụ thuộc hàm vào khóa.
Quan hệ chuẩn hóa là quan hệ mà mỗi giá trị thuộc tính trong mỗi bộ là
những thuộc tính nguyên tố, không phân chia nhỏ được. Hay nói cách khác tại
mỗi ô giao của hàng và cột trong quan hệ chỉ có đúng một giá trị chứ không phải
là tập giá trị
Ví dụ: Lược đồ quan hệ quản lý phát hành báo chí QLBC gồm các thuộc
tính:
R = {MK#, TK, DC, MB#, TB, GIA, SL} và
F = {MK#TK; MK#DC; MB#TB; MB#GIA;
(MK#,MB#)SL}.
Trong đó:
MK#: Mã khách hàng TK : Tên khách hàng
DC : Địa chỉ khách hàng MB#: Mã báo, tạp chí
TB : Tên báo, tạp chí GIA: Đơn giá báo, tạp chí
SL : Số lượng báo, tạp chí khách đặt mua
Ngữ nghĩa dữ liệu như sau:
- Với mỗi khách hàng, giá trị của mã khách hàng xác định được một tên
khách và địa chỉ duy nhất
- Với mỗi một mã báo xác định tên báo và đơn giá tương ứng
- Với mã khách hàng, mã báo xác định được số lượng báo muốn mua của
mỗi khách hàng cho từng loại báo

118
Cơ sở dữ liệu quan hệ

Hình: Sơ đồ các phụ thuộc hàm của lược đồ QLBAO

119
Cơ sở dữ liệu quan hệ

MK# TK DC MB# TB GIA SL


KH1 Nguyễn Hằng Thanh Xuân MB1 Tiền phong 5000 20
KH1 Nguyễn Hằng Thanh Xuân MB2 Công an ND 6000 15
KH2 Phạm Huy Hoàng Đống Đa MB1 Tiền phong 5000 10
KH2 Phạm Huy Hoàng Đống Đa MB3 An ninh TĐ 4000 12
KH3 Trần Xuân Đức Hoàn Kiếm MB2 Công an ND 6000 7
KH3 Trần Xuân Đức Hoàn Kiếm MB1 Tiền phong 5000 15
KH3 Trần Xuân Đức Hoàn Kiếm MB3 An ninh TĐ 4000 10
Hình: Một thể hiện của lược đồ QLBAO
 Các loại dạng chuẩn gồm:
 Dạng chuẩn 1 (1NF – First Normal Form)
 Dạng chuẩn 2 (2NF – Second Normal Form)
 Dạng chuẩn 3 (3NF)
 Dạng chuẩn Boye Code (BCNF)
Nhận xét: Tất cả những quan hệ được chuẩn hóa đều ở dạng 1NF; một
số quan hệ 1NF thì cũng ở 2NF; một số quan hệ 2NF thì cũng ở 3NF; và một
số quan hệ 3NF thì cũng ở BCNF.
Các quan hệ chuẩn hóa và chưa chuẩn hóa
Các quan hệ chuẩn 1NF
Các quan hệ chuẩn 2NF
Các quan hệ chuẩn 3NF
Các quan hệ chuẩn BCNF

6.2.2 Dạng chuẩn 1NF


Định nghĩa: Quan hệ R ở dạng chuẩn 1 (1NF - First Normal Form) nếu
mọi thuộc tính của R đều chứa các giá trị nguyên tố (atomic value), giá trị này
không là một danh sách các giá trị hoặc các giá trị phức hợp (composite value).
Quan hệ ở dạng 1NF là quan hệ không chứa các thuộc tính đa trị và thuộc
tính phức hợp.
Cách khác: bảng ở dạng 1NF là bảng có tồn tại PTH có nguồn là một
phần của khóa.

120
Cơ sở dữ liệu quan hệ

Chú ý: Khi xét dạng chuẩn nếu không nói gì thêm thì dạng chuẩn đang xét
ít nhất là đã đạt dạng chuẩn một.
Biểu diễn sơ đồ dạng 1NF:

Ví dụ:
MSKH TÊNKH TP PVC MSMH TÊNMH DG SL
S1 An HCM 01 P1 Táo 650 300
S1 An HCM 01 P2 Cam 500 200
S1 An HCM 01 P3 Chanh 450 400
S2 Hòa HN 02 P1 Táo 650 100
S2 Hoà HN 02 P3 Chanh 450 300
S3 Thanh NT 03 P2 Cam 500 200
S4 Trang NT 03 P2 Cam 500 210

Và F = { 1. MSKH  TÊNKH, TP; 2. MSMH  TÊNMH, ĐG


3. MSKH, MSMH  SL; 4. TP  PVC }
Ta có khoá: MSKH, MSMH. Vậy quan hệ ở dạng chuẩn 1.
Kết luận: Để kiểm tra một lược đồ có là dạng 1NF không thực hiện kiểm
tra lược đồ thỏa mãn hai điều kiện:
- Không có thuộc tính là thuộc tính đa trị,
- Không có thuộc tính là thuộc tính phức hợp.
Đối với những quan hệ chưa ở dạng 1NF ta áp dụng các nguyên tắc sau để
đưa về dạng chuẩn 1NF:
 Bỏ nhóm thuộc tính lặp hoặc gộp ra khỏi quan hệ, chuyển nhóm đó
thành một quan hệ mới,
 Thuộc tính khóa tồn tại trong hai quan hệ.
Ví dụ: Xét quan hệ R (Số hoá đơn, Ngày bán, Mã khách hàng, Tên khách
hàng, Sản phẩm)
SHĐ Ngày bán MaK TenK Sản Phẩm
(SP1, Bánh hải hà, 20)
HD01 2/6/2012 KH01 Nguyễn Thúy Hà (SP2, Bánh Marie, 15)
(SP3, Kẹo socola, 10)
HD02 3/6/2012 KH02 Trần Huy Hoàng (SP1, Bánh hải hà, 10)

121
Cơ sở dữ liệu quan hệ

(SP3, Kẹo socola, 20)


(SP2, Bánh Marie, 15)
HD03 4/6/2012 KH03 Phạm Thị Hải
(SP3, Kẹo socola, 12)
Nhóm (Sản phẩm) là nhóm lặp, ta có thể tách R thành R (Số hoá đơn,
Ngày bán, Mã khách hàng, Tên khách hàng, Mã sản phẩm, Tên sản phẩm, Lượng
yêu cầu).
SHĐ Ngày bán MaK TenK MaSP TenSP SL
HD01 2/6/2012 KH01 Nguyễn Thúy Hà SP1 Bánh hải hà 20
HD01 2/6/2012 KH01 Nguyễn Thúy Hà SP2 Bánh Marie 15
HD01 2/6/2012 KH01 Nguyễn Thúy Hà SP3 Kẹo socola 10
HD02 3/6/2012 KH02 Trần Huy Hoàng SP1 Bánh hải hà 10
HD02 3/6/2012 KH02 Trần Huy Hoàng SP3 Kẹo socola 20
HD03 4/6/2012 KH03 Phạm Thị Hải SP2 Bánh Marie 15
HD03 4/6/2012 KH03 Phạm Thị Hải SP3 Kẹo socola 12
Giả sử quan hệ R đã ở dạng chuẩn 1 nhưng trong thực tế nếu ta quản lý
bằng mô hình này sẽ gặp khó khăn nảy sinh trong việc lưu trữ và cập nhật (thêm,
xoá, sửa) như sau:
- Thêm: Giả sử có một khách hàng mới là (S5, Bình, BH) mà ông ta chưa
cung ứng mặt hàng nào cả. Do MSMH là thuộc tính khóa mà MSMH chưa có giá
trị nên không thể đưa thông tin về ông Bình vào CSDL.
- Xoá: Chẳng hạn, ông S3 chỉ mới cung ứng một mặt hàng duy nhất là P2,
nếu đơn hàng này bị hủy bỏ thì ta bỏ giá trị tại thuộc tính MSMH, mà MSMH là
thuộc tính khoá vì vậy phải bỏ hẳn cả dòng. Do đó, ta mất hoàn toàn thông tin về
ông S3.
- Sửa: Giả sử đơn giá mặt hàng P1 thay đổi, ta phải đổi đơn giá của mặt
hàng này trên toàn bộ lược đồ quan hệ. Có nhiều người cùng mua mặt hàng P1
vậy ta phải sửa tất cả các đơn hàng của mặt hàng P1. Vậy việc sửa lâu và mất
thời gian.
Nguyên nhân của những khó khăn trên khi thêm - sửa - xóa dữ liệu trên
bảng là vì quan hệ ở dạng 1NF tồn tại thuộc tính không khóa phụ thuộc hàm
riêng bộ phận vào một phần của khóa. Để giải quyết hạn chế này đưa quan hệ về
dạng chuẩn cao hơn, dạng 2NF.
6.2.3 Dạng chuẩn 2NF
Định nghĩa: Lược đồ quan hệ R ở 2NF khi và chỉ khi thỏa mãn
- R đã là 1NF

122
Cơ sở dữ liệu quan hệ

- Mọi thuộc tính không khóa của R là phụ thuộc hàm đầy đủ vào khóa
chính
Phụ thuộc hàm đầy đủ: Cho lược đồ R, PTH XY được gọi là PTH đầy
đủ nếu Z  X, Z  : Z  Y. Khi đó ta nói, Y phụ thuộc hàm đầy đủ vào X.
Ví dụ: F = {ABC, AC}. PTH ABC không phải là PTH đầy đủ vì có
PTH AC.
Cách khác định nghĩa lược đồ ở dạng 2NF: lược đồ quan hệ R được gọi là
2NF nếu với mọi X  A trên R (A khác X) thì:
- Hoặc: A là thuộc tính khóa
- Hoặc: X không là tập con thực sự của khóa
Vì vậy, lược đồ ở dạng 2NF sẽ tồn tại các PTH mà thuộc tính không khóa
phụ thuộc bắc cầu vào khóa.
Biểu diễn sơ đồ dạng 2NF:

Mục đích xây dựng lược đồ 2NF là để:


- Giản ước sự dư thừa dữ liệu
- Tránh các dị thường cập nhật gây nên do sự dư thừa dữ liệu này
Ví dụ:

Lược đồ NHÂN VIÊN – DỰ ÁN không ở dạng 2NF vì thuộc tính Tên NV


phụ thuộc bộ phận vào khóa (thuộc tính Mã Nhân Viên)
Ví dụ:

123
Cơ sở dữ liệu quan hệ

Lược đồ NHÂN VIÊN – PHÒNG BAN ở dạng 2NF


Ví dụ: Cho quan hệ dưới dạng bảng
MSKH TÊNKH TP PVC

S1 An HCM 01
S2 Hoà HN 02
S3 Thanh NT 03
S4 Trang NT 03

Các phụ thuộc hàm: FR1 = { MSKH  TÊNKH, TP; TP  PVC }


Lược đồ này đã ở dạng 2NF vì có thuộc tính không khóa PVC phụ thuộc
bắc cầu vào khóa MSKH
Thuật toán kiểm tra quan hệ có ở dạng chuẩn 2NF?
 Bước 1: Tìm tất cả các khóa của quan hệ
 Bước 2: Với mỗi khóa K, tìm bao đóng của tất cả các tập con thực sự S
của K
- Chú ý: nếu khóa có một thuộc tính đơn thì không cần phải kiểm
tra
 Bước 3:
- Nếu có bao đóng S+ chứa thuộc tính không khóa thì quan hệ không
đạt chuẩn 2
- Ngược lại thì quan hệ đạt chuẩn 2 (không tồn tại S mà S+ chứa
thuộc tính không khóa)
Ví dụ: Cho lược đồ Q(ABCD), F= {AB  C, B  D, BC  A}, Q có đạt
chuẩn 2 ko?
Lược đồ có 2 khóa K1 = AB, K2 = BC. Ta có, các tập con thực sự của
khóa: A, B, C.
Ta có: A+ = A, B+ = BD, C+ = C
Vậy lược đồ không ở dạng 2NF vì B+ = BD chứa thuộc tính không khóa.
Ví dụ: Cho LĐQH R = { A,B,C,D,E,G } và F = { ABC, CDE,
EG }. Quan hệ ở dạng chuẩn nào?
Ta thấy A là khóa vì A+ = R (tập thuộc tính của quan hệ).
Các thuộc tính không khóa là {B,C,D,E,G}.
Do khóa chỉ có một thuộc tính (các thuộc tính khác phụ thuộc đầy đủ vào
khóa). Vậy quan hệ R ở 2NF.
Với lược đồ đã ở dạng 2NF thì vẫn xảy ra một số bất thường khi thực hiện
thêm-sửa-xóa trên lược đồ như sau:

124
Cơ sở dữ liệu quan hệ

- Thêm: Biết thông tin về phí vận chuyển đến thành phố Biên Hoà nhưng
không thể thêm riêng thông tin này vào được!
- Xoá: Xóa thông tin về ông Hoà thì sẽ mất thông tin về phí vận chuyển
đến thành phố Hà Nội.
- Sửa: Muốn sửa phí vận chuyển đến thành phố Nha Trang thì phải sửa
trên các dòng liên quan của cả bảng R1. Vì vậy lâu và có khả năng gây ra dữ liệu
không nhất quán.
Nguyên nhân của bất thường trên là do trong lược đồ 2NF tồn tại thuộc tính
không khóa phụ thuộc bắc cầu vào khóa. Để giải quyết bất thường trên ta đưa
lược đồ về dạng chuẩn cao hơn là chuẩn 3NF.
Thuật toán phân rã LĐQH ở dạng chuẩn 1 thành dạng chuẩn 2:
- Nhóm các thuộc tính phụ thuộc vào một phần của khoá, lấy phần đó làm
khoá chính cho quan hệ,
- Giữ các thuộc tính phụ thuộc hoàn toàn vào khoá và giữ lại khoá của
quan hệ đó.

Sơ đồ phân rã:
Ví dụ: Cho lược đồ quan hệ

Áp dụng thuật toán ta tách thành


PB( MaPhong, TenPhong )
NV(MaNV, TenNV, GioiTinh, DiaChi, MaPhong )
Ví dụ: Cho lược đồ quan hệ R(MSMH, TÊNKH, TP, PVC, MSMH,
TÊNMH, ĐG, SL) và tập phụ thuộc hàm F được định nghĩa trên R:
F = { 1. MSKH  TÊNKH, TP; 2. MSMH  TÊNMH, ĐG
3. MSKH, MSMH  SL; 4. TP  PVC }
R đạt dạng chuẩn 1, hãy phân rã thành dạng chuẩn 2 theo thuật toán trên.
Áp dụng thuật toán trên ta có được các lược đồ đã ở dạng 2NF như sau:
MSKH TÊNKH TP PVC

125
Cơ sở dữ liệu quan hệ

S1 An HCM 01
S2 Hoà HN 02
S3 Thanh NT 03
S4 Trang NT 03
FR1 = {MSKH  TÊNKH, TP; TP  PVC}
MSKH MSMH SL
S1 P1 300
S1 P2 200
S1 P3 400
S2 P1 100
S2 P3 300
S3 P2 200
S4 P2 210
FĐH = {MSKH, MSMH  SL}
MSMH TÊNMH ĐG

P1 Táo 650
P2 Cam 500
P3 Chanh 450
FMH = {MSMH  TÊNMH, ĐG}
Ví dụ: Cho R2 (Số hoá đơn, Số sản phẩm, Tên_sản_phẩm,
Lượng_yêu_cầu) và F = { Số_sản_phẩm  Tên_sản_phẩm }. Tách lược đồ về
dạng 2NF?
Ta có Số sản phẩm là một phần của khóa, áp dụng nguyên tắc ta tách R2
thành R3 và R4 như sau: R3 (Số_hoá_đơn, Số_sản_phẩm, Lượng_yêu_cầu) và
R4 (Số_sản_phẩm, Tên_sản_phẩm).
Ví dụ: Xét lược đồ NHÂNVIÊN_DỰÁN( Mã_số_NV, Mã_số_DA,
Số_giờ, Họ_tên_NV, Tên_DA, Địa_điểm_DA) và các phụ thuộc hàm F = {
Mã_số_NV, Mã_số_DA  Số_giờ; Mã_số_NV  Họ_tên_NV; Mã_số_DA 
Tên_DA, Địa_điểm}. Hỏi lược đồ ở dạng chuẩn nào? Tách lược đồ thành các
lược đồ ở dạng 2NF.
Ta có thuộc tính không khóa Họ_tên_NV phụ thuộc bộ phận vào thuộc tính
khóa Mã_số_NV nên tách thành một lược đồ N_D2( Mã_số_NV , Họ_tên_NV).

126
Cơ sở dữ liệu quan hệ

Tương tự, thuộc tính không khóa Tên_DA, Địa_điểm_DA phụ thuộc bộ
phần vào thuộc tính khóa Mã_số_DA nên tách thành một lược đồ N_D3(
Mã_số_DA, Tên_DA, Địa_điểm_DA).
Vậy lược đồ ban đầu tách thành các lược đồ sau: N_D1( Mã_số_NV,
Mã_số_DA, Số_giờ); N_D2( Mã_số_NV , Họ_tên_NV); N_D3( Mã_số_DA,
Tên_DA, Địa_điểm_DA).
6.2.4 Dạng chuẩn 3NF
Định nghĩa: Lược đồ quan hệ R được gọi là ở dạng chuẩn 3NF nếu thỏa
mãn:
- R đã ở 2NF
- Mọi thuộc tính không khóa đều không phụ thuộc bắc cầu vào bất kỳ
khóa chính của quan hệ.
Cách khác, lược đồ ở dạng 3NF nếu thỏa mãn: Xét mọi PTH X  A thì X
là một khóa của R hoặc X là thuộc tính không khóa hay A là thuộc tính khóa của
R (đích là thuộc tính khóa)
Biểu diễn sơ đồ:

Ví dụ:

Lược đồ NHÂN VIÊN – PHÒNG BAN không ở dạng 3NF vì thuộc tính
không khóa Tên phòng phụ thuộc bắc cầu vào MNV thông qua thuộc tính Mã
phòng
Ví dụ: Quan hệ không ở dạng 3NF

127
Cơ sở dữ liệu quan hệ

Ví dụ: Quan hệ ở dạng 3NF

Thuật toán kiểm tra lược đồ ở dạng chuẩn 3:


Bước 1: Tìm tất cả khóa của Q
Bước 2: Từ F tạo tập phụ thuộc hàm tương đương F’ có vế phải một thuộc
tính
Bước 3: Kiểm tra
- Nếu mọi phụ thuộc hàm XA  F’ với AX đều có X là khóa hoặc A là
thuộc tính khóa thì Q đạt chuẩn 3
- Ngược lại Q không đạt chuẩn 3 ( X → A mà X không là khóa và A
không là thuộc tính khóa
Ví dụ: Cho lược đồ quan hệ Q(A,B,C,D) và F = { ABC, DB,
CABD}. Hỏi Q có đạt chuẩn 3 không?
Áp dụng thuật toán tìm khóa, ta có khóa của lược đồ là AB, AD và C.
Xét các PTH X  A của lược đồ đều có A là thuộc tính khóa. Nên lược đồ
ở dạng 3NF
Ví dụ: Xét quan hệ CNHANMACN, LOAINGHE, HESOTHUONG) và
các PTH F = { MACN  LOAINGHE; MACN  HESOTHUONG;
LOAINGHE  HESOTHUONG}. Hỏi lược đồ có đạt chuẩn 3NF không?
Áp dụng thuật toán tìm khóa, ta có khóa của lược đồ là MACN.

128
Cơ sở dữ liệu quan hệ

Trong quan hệ có tồn tại PTH bắc cầu MACNLOAINGHE;


LOAINGHEHESOLUONG. Nên thuộc tính không khóa HESOTHUONG phụ
thuộc bắc cầu vào thuộc tính khóa MACN. Vì vậy quan hệ không đạt chuẩn 3NF.
Nhận xét: quan hệ R là ở dạng 3NF khi và chỉ khi không tồn tại phụ thuộc
hàm bắc cầu X  Y và Y  A với:
- X là khóa,
- Y không là siêu khóa,
- A là thuộc tính không khóa và AXY.
*Cách đưa quan hệ về dạng chuẩn 3NF:
- Tạo quan hệ mới gồm các thuộc tính phụ thuộc bắc cầu vào thuộc tính
khóa, lấy thuộc tính bắc cầu làm khoá,
- Giữ lại các thuộc tính phụ thuộc trực tiếp vào khoá,,
- Thuộc tính bắc cầu nằm ở hai quan hệ.

Sơ đồ:
Ví dụ: cho quan hệ

Tách về 3NF?
Áp dụng nguyên tắc ta thu được lược đồ thỏa mãn 3NF như sau:
NV(MNV, TenNV, GioiTinh, DiaChi, MaPhong)
PHONG(MaPhong, TenPhong)
Ví dụ: Cho quan hệ

Tách về 3NF?

129
Cơ sở dữ liệu quan hệ

Ta có kết quả tách về lược đồ thỏa mãn chuẩn 3NF

Ví dụ: Cho R1 (Số hoá đơn, Ngày bán, Số khách hàng, Tên khách hàng, Số
sản phẩm)
F = { Số hoá đơn  Số khách hàng; Số khách hàng  Tên khách hàng }
Tách R1 về thành các lược đồ ở 3NF?
Áp dụng thuật toán, ta có thể tách R1 thành R5 và R6 như sau :
R5 (Số hoá đơn, Ngày bán, Số khách hàng, Số sản phẩm)
R6 (Số khách hàng,Tên khách hàng)
Ví dụ: Xét lược đồ quan hệ
NHÂNVIÊN_ĐƠNVỊ( Họ_tên_NV, Mã_số_NV, Ngày_sinh, Địa_chỉ,
Mã_số_ĐV, Tên_ĐV, Mã_số_NQL)
Với các phụ thuộc hàm:
Mã_số_NV → Họ_tên_NV, Ngày_sinh, Địa_chỉ,Mã_số_ĐV,Tên_ĐV,
Mã_số_NQL
Mã_số_ĐV→ Tên_ĐV, Mã_số_NQL
Lược đồ có ở dạng 3NF không? Tách về 3NF?
Các thuộc tính Tên_ĐV, Mã_số_NQL phụ thuộc bắc cầu vào khoá chính,
lược đồ quan hệ không thoả mãn điều kiện 3NF.
Áp dụng phương pháp chuẩn hoá ở trên, lược đồ được tách ra như sau:
NV_DV1( Họ_tên_NV, Mã_số_NV, Ngày_sinh, Địa_chỉ, Mã_số_ĐV)
NV_DV2( Mã_số_ĐV, Tên_ĐV, Mã_số_NQL)
Ví dụ: Cho LĐQH r(R) với R = ABCD và F= {AC, DB, CABD}
Xác định dạng chuẩn cao nhất? Đưa về dạng 3NF?
Ta có khóa của lược đồ: A, C
Tính: A+ = ACBD C+ = ACBD
Do tất cả các PTH đều có vế trái chỉ chứa 1 thuộc tính nên ở dạng chuẩn 2
Các thuộc tính khóa A,C và các thuộc tính không khóa B,D
Ta có CD và DB phụ thuộc bắc cầu vì vậy lược đồ không ở 3NF
Vậy dạng chuẩn cao nhất là 2NF

130
Cơ sở dữ liệu quan hệ

Tách về 3NF: R1(A,C,D) và R2(D, B)


6.2.5 Dạng chuẩn BCNF (Boyce Codd)
Định nghĩa: Lược đồ quan hệ R ở dạng chuẩn BCNF nếu với mọi PTH
XA của R, AX thì X là một siêu khóa nhỏ nhất. Hay nói cách khác các thuộc
tính đều phụ thuộc trực tiếp vào khóa.
Biểu diễn sơ đồ:

Ví dụ: Lược đồ quan hệ Sinhvien(MaSV, Hoten, Ngaysinh) là lược đồ ở


dạng BCNF với thuộc tính khóa là MaSV.
Thuật toán kiểm tra dạng chuẩn BCNF
Bước 1: Tìm tất cả các khóa của quan hệ Q,
Bước 2: Từ tập PTH F tạo tập PTH tương đương với F gọi là F’ có vế phải
một thuộc tính,
Bước 3: Nhận xét
- Nếu mọi PTH XA F’ đều có X là khóa thì Q đạt chuẩn BCNF
- Ngược lại Q không đạt chuẩn BCNF ( X  A mà X không là
khóa)
Vậy ta có, mọi PTH đều có vế trái là khóa thì đạt chuẩn BCNF ngược lại
thì không.
Ví dụ: Cho R = {C, S, Z}, Phụ thuộc hàm: CSZ, Z C. Xác định dạng
chuẩn cao nhất của lược đồ?
Lược đồ có khóa tối thiểu: CS, SZ. Vậy không có thuộc tính không khóa.
Áp dụng định nghĩa, lược đồ đã ở dạng chuẩn ba.
Lược đồ không ở dạng chuẩn BCNF vì có PTH: ZC nhưng Z không phải
là một khóa đầy đủ.
Thuật toán tách lược đồ về dạng BCNF:
- Loại bỏ các thuộc tính khóa phụ thuộc hàm vào thuộc tính không khóa ra
khỏi quan hệ và
- Tách chúng thành một quan hệ riêng có khoá chính là thuộc tính không
khóa gây ra phụ thuộc.

Sơ đồ tách:

131
Cơ sở dữ liệu quan hệ

Ví dụ : Cho lược đồ quan hệ R = {A, B, C, D, E, F, G, H, I, J} có khóa


chính là AB. Với tập các phụ thuộc hàm :
F1: AB  C, D, E, F, G, H, I, J
F2: A  E, F, G, H, I, J
F3: F  I, J
F4: D  B
Yêu cầu: Tách lược đồ về dạng chuẩn cao nhất?
Có PTH AE, F, G, H, I, J mà A là một bộ phận của khóa chính nên quan
hệ R là vi phạm 2NF. Áp dụng, tách R thành R1(A, E, F, G, H, I, J) và R2(A, B,
C, D).
Trong R1, do có phụ thuộc hàm FI, J nên có I, J phụ thuộc bắc cầu vào
khóa chính, R1 là quan hệ vi phạm 3NF.
Trong R2 ta có phụ thuộc hàm DB trong đó B là một thuộc tính khóa, R2
vi phạm BCNF.
Tách R1 và R2 ta có: R11(F, I, J) , R12(A, E, F, G, H), R21(D, B),
R22(A, D, C)
Kết luận: quá trình chuẩn hóa lược đồ quan hệ được thực hiện theo sơ đồ
sau

Sơ đồ chuẩn hóa lược đồ quan hệ


6.3 Phép tách kết nối không mất mát thông tin
6.3.1 Giới thiệu
Mục tiêu của lý thuyết CSDL là tính độc lập của dữ liệu. Cấu trúc các hệ cơ
sở dữ liệu phản ánh tính hiện thực, khách quan và tính toàn vẹn dữ liệu. Vì vậy

132
Cơ sở dữ liệu quan hệ

trong quá trình chuẩn hóa dữ liệu và tìm kiếm thông tin, cần thiết phải thực hiện
các phép tách lược đồ quan hệ chưa chuẩn hóa về tập các lược đồ quan hệ đã
được chuẩn hóa, sao cho quá trình tách không làm mất mát thông tin, theo nghĩa
các quan hệ gốc được khôi phục chính xác từ phép kết nối tự nhiên của các quan
hệ chiếu.
Tách – kết nối các lược đồ quan hệ có làm tổn thất thông tin hay không, có
bảo toàn các phụ thuộc hay không đã được nhiều người nghiên cứu, giải quyết.
A.V. Hom C. Beeri & J.D. Ullman giới thiệu thuật toán xác định phép kết nối
giữa các lược đồ quan hệ không có tổn thất thông tin với các giả thiết các phụ
thuộc dữ liệu là các phụ thuộc hàm. Các ông cũng đã mở rộng vấn đề này cho các
trường hợp phụ thuộc dữ liệu là phụ thuộc đa trị.
6.3.2 Phép tách
Định nghĩa: Phép tách các lược đồ quan hệ R = {A1, A2, .. An} là việc thay
thế lược đồ quan hệ R bằng tập các lược đồ con {R1, R2, .., Rk}, trong đó:
Ri  R, i = 1, …, k - Ri là các lược đồ con
và R = R1  R2  ...  Rk
Không đòi hỏi các Ri phải là phân biệt.
Mục đích của phép tách: Loại bỏ các dị thường dữ liệu
Ví dụ: Cho lược đồ quan hệ: S(MaCTy, ĐC, MH, GIA) và tập PTH:
F = { MCTY  ĐC; MCTY, MH  GIA }
Dị thường: địa chỉ một công ty phải lưu nhiều lần vì một công ty có thể có
nhiều mặt hàng khác nhau.
Để giải quyết việc trùng lặp thông tin, lược đồ quan hệ trên có thể được
tách thành 2 lược đồ khác là: S1( MCTY, ĐC) và S2( MCTY, MH, GIA) như
vậy sẽ không lưu địa chỉ của một công ty nhiều lần
6.3.3 Tách – kết nối không mất mát thông tin
Giả sử R tách thành các lược đồ con R1, R2, .., Rk và F là một tập PTH.
Nói rằng phép tách R thành các lược đồ con R1, R2, …, Rk là tách - kết nối
không mất mát thông tin đối với F nếu với mỗi quan hệ r trên R thoả F thì r =
R1(r) *  R2 (r) * ... *  Rk(r)
Tức là r được tạo nên từ phép kết nối tự nhiên của các hình chiếu của
nó trên các Ri, i= 1 … k
Ví dụ: Lược đồ quan hệ quản lý phát hành báo chí QLBC gồm các thuộc
tính: R = {MK#, TK, DC, MB#, TB, GIA, SL} và
F = { MK#  TK; MK#  DC; MB#  TB; MB#  GIA;
(MK#,MB#)  SL }.

133
Cơ sở dữ liệu quan hệ

Trong đó:
MK#: Mã khách hàng TK : Tên khách hàng
DC : Địa chỉ khách hàng MB#: Mã báo, tạp chí
TB : Tên báo, tạp chí GIA: Đơn giá báo, tạp chí
SL : Số lượng báo, tạp chí khách đặt mua
MK# TK DC MB# TB GIA SL
KH1 Nguyễn Hằng Thanh Xuân MB1 Tiền phong 5000 20
KH1 Nguyễn Hằng Thanh Xuân MB2 Công an ND 6000 15
KH2 Phạm Huy Hoàng Đống Đa MB1 Tiền phong 5000 10
KH2 Phạm Huy Hoàng Đống Đa MB3 An ninh TĐ 4000 12
KH3 Trần Xuân Đức Hoàn Kiếm MB2 Công an ND 6000 7
KH3 Trần Xuân Đức Hoàn Kiếm MB1 Tiền phong 5000 15
KH3 Trần Xuân Đức Hoàn Kiếm MB3 An ninh TĐ 4000 10
Trong lược đồ quan hệ QLBC, các thông tin về tên khách (TK) , địa chỉ
(DC), tên báo (TB) … lặp lại rất nhiều lần trong các quan hệ thể hiện, đó là
nguyên nhân dẫn đến sự xuất hiện các bất thường, nhập nhằng thông tin. Phép
tách  được mô tả dưới đây, sẽ tách lược đồ QLBC thành 3 lược đồ chiếu. Lược
đồ s3 = <R3, F3> chỉ cần lưu trữ thông tin về số lượng các loại báo của mỗi một
khách hàng đặt mua. Lược đồ quan hệ s1 = <R1 , F1> lưu trữ thông tin về
khách đặt mua báo, và tương tự trong lược đồ quan hệ s2 = <R2 , F2> lưu trữ
thông tin về các loại báo. Có thể kiểm tra phép tách  không tổn thất thông tin và
bảo toàn được các phụ thuộc hàm.
Phép tách [R1 , R2 , R3]:
• R1 ={M#, TK,DC } , F1 ={MK#  TK, MK#  DC}.
• R2 ={MB#, TB, GIA } , F2 ={MB#  TB, MB#  GIA}.
• R3 ={M#, MB#, SL} , F3 ={(MK#,MB#)  SL}.
Ω1 = {M#, TK,DC } Ω3 = {M#, MB#, SL}
MK# TK DC MK# MB# SL
KH1 Nguyễn Hằng Thanh Xuân KH1 MB1 20
KH2 Phạm Huy Hoàng Đống Đa KH1 MB2 15
KH3 Trần Xuân Đức Hoàn Kiếm KH2 MB1 10
Ω2 = {MB#, TB, GIA } KH2 MB3 12
MB# TB GIA KH3 MB2 7

134
Cơ sở dữ liệu quan hệ

MB1 Tiền phong 5000 KH3 MB1 15


MB2 Công an ND 6000 KH3 MB3 10
MB3 An ninh TĐ 4000
Như vậy mục tiêu của phép tách lược đồ quan hệ là nhằm loại bỏ các dị
thường thông tin khi thực hiện các phép lưu trữ như chèn thêm, loại bỏ hay sửa
đổi thông tin trong trong các quan hệ lưu trữ. Tuy nhiên khi thực hiện phép tách,
thông tin của lược đồ quan hệ có bị tổn thất hay không. Nói cách khác nếu kết
nối tự nhiên các thành phần lược đồ quan hệ chiếu, liệu thông tin của lược đồ
quan hệ gốc có tổn thất thông tin hay không, các phụ thuộc hàm có được bảo
toàn hay không?
6.3.4 Thuật toán kiểm tra tách không tổn thất thông tin
Input:
- R = {A1, A2, .., An} – n thuộc tính với tập PTH F và
- phép tách p = (R1, R2, .., Rk) – k lược đồ con
Output: Kiểm tra phép tách có mất mát thông tin hay không ?
Thuật toán:
Bước 1: Tạo bảng với n+1 cột và k+1 hàng
- Cột thứ j tương ứng với thuộc tính Aj
- Hàng thứ i tương ứng với lược đồ Ri.
- Tại ô (i,j) điền kí hiệu aj nếu Aj  Ri, ngược lại điền kí hiệu bij
A1 A2 … An-1 An
R1 = A1…An a1 b12 … an-1 b1n
R2 … … … … …
… … … … … …
Rk … … … … …
Bước 2: Lần lượt xét các PTH (X  Y)  F, áp dụng để thay đổi giá trị
trên bảng theo nguyên tắc:
Nếu tồn tại các hàng mà tất cả các cột tương ứng với thuộc tính X có giá trị
bằng nhau thì làm bằng nhau trên thuộc tính Y bằng cách điền lại giá trị tại các
cột thuộc tính Y theo nguyên tắc: nếu có một giá trị aj trong các cột tương ứng
với các thuộc tính của Y thì đồng nhất các ký hiệu thành aj, nếu không thì đồng
nhất thay bằng ký hiệu bij với bij nhỏ nhất
Tiếp tục áp dụng tất cả các phụ thuộc hàm cho bảng (kể cả lặp lại các phụ
thuộc hàm đã áp dụng) cho tới khi không làm thay đổi gì trên bảng nữa.

135
Cơ sở dữ liệu quan hệ

Bước 3: Xem xét kết quả và đánh giá


Nếu trong bảng xuất hiện một hàng gồm toàn kí hiệu a1, a2, .. , an thì phép
tách-kết nối là không mất mát thông tin, ngược lại là phép tách-kết nối có mất
mát thông tin.
Ví dụ: Cho quan hệ: CungCap(S#, Sname, Add, Item, Price)
Tập phụ thuộc hàm: S#  Sname,Add và Sname,Item  Price
Kiểm tra phép tách CC(S#, Sname, Add, Item, Price) thành hai sơ đồ con
Cty{S#, Sname, Add} và MatHang{S#, Item, Price} có mất mát thông tin?
Các bước thực hiện:
Lập bảng gồm 3 hàng và 6 cột

S# Sname Add Item Price

S#, Sname, Add a1 a2 a3 b14 b15

S#, Item, Price a1 b22 b23 a4 a5

Xét PTH S#  Sname, Add:


- Có cả hai hàng bằng nhau tại thuộc tính S#
- Làm bằng nhau các kí hiệu đối với thuộc tính Sname và Add
 làm b22 thành a2
 làm b23 thành a3
Ta có bảng như sau

Bảng có một hàng bao gồm các ký hiệu a. Vì vậy, phép tách không mất
mát thông tin
Ví dụ: Cho quan hệ R = ABCDE, Tập phụ thuộc hàm F = {A  C, B  C,
C  D, DE  C, CE  A}
Tách thành các quan hệ: R1 = AD, R2 = AB, R3 = BE, R4 = CDE, R5 = AE
Kiểm tra phép tách trên có mất mát thông tin không?
 Lập bảng 6 hàng – 6 cột

136
Cơ sở dữ liệu quan hệ

 Xét PTH: A  C
o Có các hàng 1, 2, 5 bằng nhau trên thuộc tính A
o Làm bằng nhau các ký hiệu đối với các thuộc tính C, cụ thể: b23, b53
thành b13

 Xét PTH: BC


o Có các hàng 2, 3 bằng nhau trên thuộc tính B
o Làm bằng nhau các ký hiệu đối với các thuộc tính C, cụ thể: b33
thành b13

 Xét PTH: CD


o Có các hàng 1, 2, 3, 5 bằng nhau trên thuộc tính C
o Làm bằng nhau các ký hiệu đối với các thuộc tính D, cụ thể: b24,
b34, b54 thành a4

137
Cơ sở dữ liệu quan hệ

 Xét PTH: DE  C
o Có các hàng 3, 4, 5 bằng nhau trên thuộc tính DE
o Có thể làm bằng nhau các ký hiệu đối với các thuộc tính C, thay
b13 thành a3

 Xét PTH: CE  A
o Có các hàng 3, 4, 5 bằng nhau trên thuộc tính CE
o Có thể làm bằng nhau các ký hiệu đối với các thuộc tính A, thay
b31, b41 thành a1

Kết quả: Có dòng chứa các ký hiệu a. Vậy phép tách – kết nối không mất
mát thông tin.

138
Cơ sở dữ liệu quan hệ

6.4 Chuẩn hóa quan hệ


Chuẩn hóa quan hệ là việc phân rã một lược đồ quan hệ ban đầu thành các
lược đồ con ở dạng chuẩn 3NF hoặc ở dạng BCNF sao cho vẫn bảo toàn phụ
thuộc và không mất mát dữ liệu.
6.4.1 Thuật toán phân rã thành các BCNF không tổn thất
Input: Quan hệ R và tập PTH F
Output: tách thành các lược đồ ở BCNF bảo toàn thông tin
Phương pháp: phương pháp chính là tách lược đồ thành hai lược đồ con
bằng cách lựa chọn một phụ thuộc hàm nào đó trong tập phụ thuộc hàm ban đầu.
Các bước thực hiện:
- Ban đầu giả sử phép tách S chỉ là R,
- Chọn PTH XA trong đó X không chứa khóa của S và AX. Thay thế S
ban đầu bởi S1 và S2 với S1 = XA và S2 = S\A. Trong đó S1 = XA thỏa mãn là
BCNF,
- Quá trình trên tiếp tục cho đến khi tất cả các lược đồ quan hệ đều ở BCNF
Ví dụ: Cho lược đồ R(CTHRSG), trong đó:
- C – Course: Khóa học; T – Teacher: Giáo viên; H – Hour: Giờ học
- R – Room: Phòng học; S – Student: Sinh viên; G – Group: Nhóm
Ý nghĩa dữ liệu:
- Mỗi khóa học chỉ có một thầy dạy,
- Một phòng học tại giờ xác định chỉ có một khóa học,
- Thầy dạy tại giờ học cụ thể sẽ xác định phòng học cụ thể,
- Khóa học với một sinh viên cụ thể xác định lớp học cụ thể,
- Mỗi sinh viên học trong một giờ xác định tại phòng học cụ thể.
Có PTH F ={ CT; HRC; HTR; CSG; HSR} và Khóa: HS
Yêu cầu: Tách lược đồ về dạng BCNF?
 Xét CS  G: CS không phải là khóa, nên tách thành  = <R,F> thành 2
lược đồ quan hệ sau:
1 = <R1, F1> với R1 = {C, S, G} và F1 = {CS  G}
2 = <R2, F2> bới R2 = {C, T, H, S, R} và F2 = {CT, HRC, HTR,
HS  R}
Ta có: 1 ở dạng BCNF và 2 ở dạng 3NF nhưng chưa ở dạng BCNF
 Xét C  T: T không là thuộc tính khóa vì vậy tách 2 thành 2 lược đồ
quan hệ sau:
21 = <R21, F21> với R21 = {C, T} và F21 = {C  T}

139
Cơ sở dữ liệu quan hệ

22 = <R22, F22> với R22 = {C, H, S, R} và F22 = {HRC, HSR}


Ta có: 21 ở dạng BCNF và 22 chưa ở dạng BCNF
 Xét HR  C: HR không phải là khóa nên tách 22 thành hai lược đồ
quan hệ sau:
221 = <R221, F221> với R221 = { C, H, R} và F221 = {HR  C}
222 = <R222, F222> với R222 = {H, S,R} và F222 = {HS  R}
Như vậy theo nguyên tắc từ lược đồ quan hệ R(CTHRSG) với F={ CT;
HRC; HTR; CSG; HSR} thuật toán đã tách thành các lược đồ con {1,
21, 221, 222} ở dạng chuẩn BCNF khi kết nối không mất mát thông tin,
trong đó:
1 = <R1, F1> với R1 = {C, S, G} và F1 = {CS  G}
21 = <R21, F21> với R21 = {C, T} và F21 = {C  T}
221 = <R221, F221> với R221 = {C, H, R} và F221 = {HR  C}
222 = <R222, F222> với R222 = {H, S,R} và F222 = {HS  R}

Quá trình mô tả tách – kết nối không mất thông tin về BCNF
6.4.2 Thuật toán phân rã thành các 3NF bảo đảm phụ thuộc và không tổn thất
thông tin
Input: Lược đồ R và tập các phụ thuộc hàm F
Output: Tách thành các lược đồ ở 3NF vừa bảo toàn phụ thuộc hàm vừa
bảo toàn thông tin

140
Cơ sở dữ liệu quan hệ

Thuật toán:
- Bước 1: Tìm phủ tối thiểu của tập phụ thuộc hàm F
- Bước 2:
- Với mỗi vế trái X của một phụ thuộc hàm xuất hiện trong phủ tối
thiểu, tạo một lược đồ mới theo nguyên tắc:
 với các thuộc tính {X, A1, A2,…, Ak}
 trong đó X→A1, X→A2,…, X→Ak là các phụ thuộc hàm
trong phủ tối thiểu với X là vế trái
 X là khóa của quan hệ này
- Xét tất cả các phụ thuộc hàm của tập phủ tối thiểu.
- Nếu có lược đồ con chứa khóa K thì kết thúc thuật toán ngược lại
thì tạo lược đồ con chứa khóa K.
Ví dụ: cho lược đồ  = <R, F> với R = {X, Y, X, W, Q} và F = {XY,
XZ W, YWQ}
Xác định một phép tách thành 3NF bảo toàn phụ thuộc và không tổn thất
thông tin
- Lược đồ có khóa là: XZ
- Thực hiện thuật toán tách:
+ Xét phụ thuộc hàm X  Y: tách thành 1 = {R1, F1} với R1 = {XY}
+ Xét phụ thuộc hàm XZW: tách thành 2 = {R2, F2} với R2 ={XZW}
+ Xét phụ thuộc hàm YWQ: tách thành 3 = {R2, F3} với R3 = {YWQ}
Ta thấy 2 đã chứa khóa nên kết quả phép tách là R = { R1, R2, R3}
Ví dụ: Cho lược đồ R(CTHRSG), trong đó: C – Course; T – Teacher; H –
Hour: Giờ học; R – Room; S – Student; G – Group.
Có PTH F = { CT; HRC; HTR; CSG; HSR} và Khóa: HS
Yêu cầu: Tách lược đồ về dạng 3NF?
Thực hiện:
- Bước 1: Không mất tính tổng quát phủ tối thiểu của F cũng chính là F.
- Bước 2:
+ Phụ thuộc hàm CT vi phạm 3NF (phụ thuộc bắc cầu vào khoá), vì vậy
tách R thành R1(C,T) và R2(C,H,R,S,G).
+ Phụ thuộc hàm CSG vi phạm 3NF(phụ thuộc bộ phận vào khoá), tách
R2 thành R21(C,S,G) và R22(C,H,R,S).
+ Phụ thuộc hàm HRC vi phạm 3NF, tách R22 thành R221(H,R,C) và
R222(H,S,R).

141
Cơ sở dữ liệu quan hệ

Vậy lược đồ được tách thành: R1(C,T), R21(C,S,G), R221(H,R,C) và


R222(H,S,R).
6.4.3 Thuật toán xác định dạng chuẩn cao nhất
Khi cho một lược đồ quan hệ nào đó, để xác định dạng chuẩn cao nhất của
lược đồ, ta lần lược thực hiện các bước sau:
Bước 1: Tìm tất cả các khóa của lược đồ,
Bước 2: Sử dụng thuật toán kiểm tra lược đồ ở dạng chuẩn BCNF, nếu lược
đồ ở dạng BCNF thì dừng thuật toán và kết luận dạng cao nhất là BCNF, ngược
lại sang bước tiếp theo,
Bước 3: Sử dụng thuật toán kiểm tra lược đồ ở dạng chuẩn 3NF, nếu lược
đồ ở dạng 3NF thì dừng và kết luận dạng cao nhất là 3NF, ngược lại thì chuyển
sang bước tiếp theo,
Bước 4: Sử dụng thuật toán kiểm tra lược đồ ở 2NF, nếu lược đồ ở dạng
2NF thì dừng thuật toán và kết luận dạng cao nhất là 2NF, ngược lại kết luận ở
dạng 1NF.
6.5 Tổng kết chương và câu hỏi ôn tập
6.5.1 Tổng kết chương
Trong chương này, chúng ta đã mô tả quá trình chuẩn hóa để đạt đến các
thiết kế tốt bằng cách kiểm tra các quan hệ đối với các phụ thuộc hàm không
mong muốn. Chúng ta cũng đi tìm hiểu cách chuẩn hóa liên tiếp dựa trên khóa
chính được định nghĩa trong mỗi quan hệ và sau đó giảm nhẹ các yêu cầu để đưa
ra các định nghĩa tổng quát của các dạng chuẩn.
Trong chương này chúng ta cũng trình bày một số thuật toán chuẩn hóa như
thuật toán tổng hợp để tạo ra các quan hệ 3NF từ một lược đồ quan hệ ban đầu
chưa chuẩn, đồng thời cũng trình bày thuật toán tạo ra quan hệ BCNF từ một
lược đồ quan hệ ban đầu.
Chúng ta cũng thảo luận về tính chất tách như tách kết nối không mất mát
thông tin.
6.5.2 Câu hỏi ôn tập
1. Sự cần thiết tách các lược đồ quan hệ.
2. Trình bày khái niệm và định nghĩa phép tách.
3. Định nghĩa phép tách - kết không tổn thất thông tin. Ví dụ minh hoạ.
4. Cho một số thí dụ về phép tách - kết nối tổn thất và không tổn thất thông
tin
5. Trình bày thuật toán kiểm tra tách - kết nối không tổn thất thông tin.
6. Phát biểu định nghĩa dạng chuẩn thứ nhất – 1NF (First Normal Form)

142
Cơ sở dữ liệu quan hệ

7. Phát biểu định nghĩa dạng chuẩn thứ hai – 2NF (Second Normal Form)
8. Phát biểu định nghĩa dạng chuẩn thứ 3 - 3NF (Third Normal Form)
9. Trình bảy quá trình tách một lược đồ quan hệ 1NF về dạng 3NF.
10. Trình bày khái niệm và định nghĩa dạng chuẩn Boyce Codd.
11. Nhận biết dạng chuẩn 3NF & BCNF.
12. Cho thí dụ 3NF nhưng không là BNCF.
13. Cho thí dụ không 3NF và không là BNCF.
14. Cho một số thí dụ về các dạng chuẩn lược đồ quan hệ
15. Trình bày thuật toán tách – kết nối lược đồ quan hệ không tổn thất
thông tin
16. Phép tách lược đồ quan hệ về nhóm tương đương 3NF.
17. Phép tách lược đồ quan hệ về dạng chuẩn Boyce Codd.
6.6 Một số câu hỏi trắc nghiệm ôn tập
Câu 1: Lược đồ quan hệ s = <Ω, F> được gọi là dạng chuẩn 1 – 1NF, khi
và chỉ khi
A. Bao đóng các thuộc tính là lớn nhất
B. Các thuộc tính khoá phụ thuộc bắc cầu vào khoá.
C. Các thuộc tính chỉ chứa các giá trị nguyên tố
D. Các phụ thuộc không có vế trái dư thừa
Câu 2: Lược đồ quan hệ s= <Ω, F> được gọi là dạng chuẩn 2NF, khi và
chỉ khi
A. Dạng chuẩn 1NF và tồn tại X  Y ∈ F + sao cho X là tập con của khóa
B. Không tồn tại các phụ thuộc dư thừa.
C. Các thuộc tính khoá phụ thuộc bắc cầu vào khoá.
D. Dạng chuẩn 1NF và các thuộc tính không khoá phụ thuộc đầy đủ vào
khoá
Câu 3: Lược đồ quan hệ s= <Ω, F> được gọi là dạng chuẩn 3NF, khi và
chỉ khi
A. Không tồn X  Y ∈ F+ sao cho X+ ≠ Ω , Y  X là thuộc tính không
khóa.
B. Nếu X  Y ∈ F +, Y  X thì khi đó X
C. Y là một thuộc tính của khóa.
D. Lược đồ 2NF và các thuộc tính không khoá phụ thuộc khoá.
Câu 4: X là định thuộc khi và chỉ khi
A. Tồn tại Y ⊆ Ω sao cho X  Y ∈ F+ là phụ thuộc đầy đủ

143
Cơ sở dữ liệu quan hệ

B. Tồn tại Y ⊆ Ω sao cho X  Y ∈ F+ là phụ thuộc không đầy đủ .


C. Tồn tại Y ⊆ Ω sao cho X  Y ∈ F+ là phụ thuộc không dư thừa
D. Tồn tại Y ⊆ Ω sao cho X  Y ∈ F+ là phụ thuộc dư thừa
Câu 5: Hãy chọn từ/cụm từ tương ứng để hoàn thiện khảng định sau:
Trong quá trình chuẩn hoá dữ liệu và tìm kiếm thông tin phải thực hiện các ... ...
về tập các lược đồ quan hệ chuẩn hoá, sao cho quá trình tách không làm tổn thất
thông tin.
A. Phép tách lược đồ quan hệ.
B. Phép lưu trữ.
C. Phép tìm kiếm thông tin.
D. Phép chiếu, chọn và kết nối
Câu 6: Hãy chọn từ/cụm từ tương ứng để hoàn thiện khảng định sau: Mục
tiêu của phép tách lược đồ quan hệ là nhằm loại bỏ ... ... ... khi thực hiện các
phép lưu trữ như chèn thêm, loại bỏ hay sửa đổi thông tin trong trong các quan
hệ lưu trữ.
A. Dị thường thông tin.
B. Không toàn vẹn dữ liệu.
C. Không bảo mật dữ liệu.
D. Không nhất quán dữ liệu.
Câu 7: Hãy chọn từ/cụm từ tương ứng để hoàn thiện khảng định sau: Từ
một lược đồ quan hệ dạng 1NF có thể chuyển đổi về nhóm các lược đồ quan hệ
chiếu dạng chuẩn 3NF bằng cách ... ... ... vào khoá và loại bỏ các phụ thuộc bắc
cầu vào khoá.
A. Loại bỏ các phụ thuộc không đầy đủ.
B. Phụ thuộc bắc cầu.
C. Phụ thuộc dư thừa.
D. Các thuộc tính dư thừa
Câu 8: Ω = {A, B, C, D, E, G, H} và F = {C  AB, D  E, B  G}.
A. Lược đồ chưa được chuẩn hoá.
B. Lược đồ là dạng chuẩn 3NF.
C. Lược đồ là dạng chuẩn 2NF.
D. Lược đồ là dạng chuẩn BCNF.
6.7 Bài tập áp dụng
Bài số 1: Cho lược đồ quan hệ R = <U,F> với tập thuộc tính U =
ABCDEHG và tập phụ thuộc hàm F = {DEG, EA, HC, CGH,
DGEA, DB}

144
Cơ sở dữ liệu quan hệ

a. Xác định khoá của lược đồ quan hệ trên.


b. Xác định dạng chuẩn cao nhất của lược đồ quan hệ trên.
Bài số 2: Xác định dạng chuẩn cao nhất của lược đồ quan hệ với các thuộc
tính ABCDEF và tập phụ thuộc hàm {ABC, CB, ABDE, FA}
Bài số 3: Cho W = < R,F> và R = { A, B, C, D } và F = {BD, AC,
CABD}. Hỏi W có là 2NF, 3NF không ?
Bài số 4: Xác định dạng chuẩn cao nhất của lược đồ quan hệ sau: H =
(U,F); U = ABCD; và F = { CDB, A C, BACD }
Bài số 5: Cho lược đồ R = (BOISQD) và F ={ SD, IB, ISQ, BO }
a. Chứng tỏ phép tách: R = (SD, IB, ISQ, BO) là phép tách không mất mát
thông tin.
b. Chứng tỏ phép tách trên là ở dạng 3NF.
Bài số 6: Cho tập các thuộc tính quản lý tổng đài- cước thuê bao: TD# (Mã
tổng đài), TD (Tên tổng đài), DL (Dung lượng), MC# (Mầu cáp), SDT (Số điện
thoại thuê bao), NSX (Nước sản xuất), NG (Ngày lắp đặt tổng đài), GTR (Giá trị
tổng đài), VT (Nơi đặt tổng đài), TB (Tên thuê bao), TB#(Mã thuê bao), DC(Địa
chỉ thuê bao), SDTD(Số điện thoại đến/đi), NGG(Ngày thực hiện đàm thoại),
GB(Giờ bắt đầu đàm thoại), KT(Giờ kết thúc đàm thoại), DD(Đi/đến).
a. Hãy xác định một phép tách không tổn thất về 3NF có bảo toàn phụ thuộc
hàm của quan hệ trên.
b. Hãy xác định một phép tách – kết nối không tổn thất về BCNF.
Bài số 7: Cho tập các thuộc tính quản lý phát hành báo chí QLBC gồm các
thuộc tính MK#(Mã khách), K(Tên khách), DC(Địa chỉ), MB#(Mã báo),TB(Tên
báo), GIA(Giá báo), SL(số lượng), KY(kỳ phát hành).
a. Hãy xác định một phép tách – kết nối không tổn thất về 3NF có bảo toàn
phụ thuộc.
b. Hãy xác định một phép tách – kết nối không tổn thất về BCNF.
Bài số 8: Cho R = {A,B,C,D} và F = {AB, BC, AD, DC},
[AB,AC,BD].
a.  là phép tách – kết nối không tổn thất thông tin.
b.  bảo toàn các phụ thuộc hay không.
Bài số 9: Cho R = { A, B, C, D} , F = {AC, DC, BDA} và
[AB,ACD,BCD]. Chứng minh rằng phép tách – kết nối  không tổn thất thông
tin.
Bài số 10: Cho R = {A,B,C,D} và F = {AB, BC, DB}
Tách về các lược đồ dạng chuẩn BNCF.

145
Cơ sở dữ liệu quan hệ

Bài số 11: Cho một quan hệ R ={A, B, C, D, E, F, G, H, I, J} và tập phụ


thuộc hàm
F = { A,B  C; A  D, E; B  F; F  G, H; D  I, J }
Yêu cầu:
- Tìm {A}+
- Tìm khóa của quan hệ R.
- Tách quan hệ R thành BCNF.
- Kiểm tra xem việc tách trên có mất mát thông tin không?
Bài số 12: Cho một quan hệ R = {A, B, C, D, E, F, G, H, I, J} và tập phụ
thuộc hàm
G = {A,BC; B, DE, F; A, DG, H; AI; HJ}
Yêu cầu:
- Tìm {A}+
- Tìm khóa của quan hệ R.
- Tách quan hệ R thành BCNF.
- Kiểm tra xem việc tách trên có mất mát thông tin không?
Bài số 13: Cho một quan hệ R = {CourseNo, SecNo, OfferingDept,
Credit_Hours, CourseLevel, InstructorSSN, Semester, Year, Days_Hours,
RoomNo, NoOfStudents} và tập phụ thuộc hàm:
F = { CourseNo  OfferingDept, Credit_Hours, CourseLevel;
CourseNo, SecNo, Semester, Year  Days_Hours, RoomNo,
NoOfStudents, InstructorSSN;
RoomNo, Days_Hours, Semester, Year  InstructorSSN, CourseNo,
SecNo }
Yêu cầu:
- Tìm khóa của quan hệ R.
- Quan hệ trên thuộc dạng chuẩn mấy?
- Tách quan hệ về dạng 3NF.
- Kiểm tra xem việc tách trên có mất mát thông tin không?

146

You might also like