Professional Documents
Culture Documents
Giaotrinh Cosodulieu PDF
Giaotrinh Cosodulieu PDF
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
Cơ sở dữ liệu quan hệ
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ệ
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ệ
10
Cơ sở dữ liệu quan hệ
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 n
12
Cơ sở dữ liệu quan hệ
13
Cơ sở dữ liệu quan hệ
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ệ
17
Cơ sở dữ liệu quan hệ
105 102
105 103
18
Cơ sở dữ liệu quan hệ
19
Cơ sở dữ liệu quan hệ
20
Cơ sở dữ liệu quan hệ
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ệ
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:
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
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.
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ụ:
Ví dụ:
30
Cơ sở dữ liệu quan hệ
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:
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)
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ệ
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:
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ệ
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ệ
48
Cơ sở dữ liệu quan hệ
49
Cơ sở dữ liệu quan hệ
50
Cơ sở dữ liệu quan hệ
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ệ
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ệ
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ệ
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
60
Cơ sở dữ liệu quan hệ
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
62
Cơ sở dữ liệu quan hệ
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
64
Cơ sở dữ liệu quan hệ
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: gGIAO_HANG, dDAT_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:
pxPXUAT, 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
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ệ
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ị
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.
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.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ụ:
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ệ
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ệ
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ệ
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ệ
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
83
Cơ sở dữ liệu quan hệ
84
Cơ sở dữ liệu quan hệ
85
Cơ sở dữ liệu quan hệ
Ví dụ 4.9:
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:
86
Cơ sở dữ liệu quan hệ
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ệ
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
- Để 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 *.
88
Cơ sở dữ liệu quan hệ
< 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)
90
Cơ sở dữ liệu quan hệ
91
Cơ sở dữ liệu quan hệ
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
93
Cơ sở dữ liệu quan hệ
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:
Đơ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ệ
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ệ
97
Cơ sở dữ liệu quan hệ
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ệ
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 BCABC
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
BCABC
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) )
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 XU. 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 ZF
mà YXi 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ệ
+ +
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} +
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:
103
Cơ sở dữ liệu quan hệ
104
Cơ sở dữ liệu quan hệ
105
Cơ sở dữ liệu quan hệ
106
Cơ sở dữ liệu quan hệ
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ệ
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ệ
111
Cơ sở dữ liệu quan hệ
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ệ
114
Cơ sở dữ liệu quan hệ
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:
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ệ
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ệ
119
Cơ sở dữ liệu quan hệ
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
121
Cơ sở dữ liệu quan hệ
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 XY đượ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 = {ABC, AC}. PTH ABC không phải là PTH đầy đủ vì có
PTH AC.
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:
123
Cơ sở dữ liệu quan hệ
S1 An HCM 01
S2 Hoà HN 02
S3 Thanh NT 03
S4 Trang NT 03
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ệ
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ệ
128
Cơ sở dữ liệu 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ệ
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= {AC, DB, CABD}
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ó CD và DB 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ệ
Sơ đồ tách:
131
Cơ sở dữ liệu quan hệ
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ệ
135
Cơ sở dữ liệu quan hệ
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
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ệ
139
Cơ sở dữ liệu quan hệ
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 = {XY,
XZ W, YWQ}
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 XZW: tách thành 2 = {R2, F2} với R2 ={XZW}
+ Xét phụ thuộc hàm YWQ: 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 = { CT; HRC; HTR; CSG; HSR} 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 CT 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 CSG 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 HRC 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ệ
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ệ
144
Cơ sở dữ liệu quan hệ
145
Cơ sở dữ liệu quan hệ
146