thiet ke co so du lieu
TRANSCRIPT
![Page 1: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/1.jpg)
TRƢỜNG ĐẠI HỌC KINH TẾ TP.HCM
KHOA TIN HỌC QUẢN LÝ
GIÁO TRÌNH
CƠ SỞ DỮ LIỆU
Biên soạn: HUỲNH VĂN ĐỨC
Bộ môn: HỆ THỐNG THÔNG TIN
![Page 2: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/2.jpg)
![Page 3: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/3.jpg)
LỜI NÓI ĐẦU CHO LẦN XUẤT BẢN THỨ 2
Trƣớc hết chúng tôi chân thành cám ơn sự tiếp nhận của bạn đọc đối
với phiên bản đầu tiên. Với phiên bản đầu tiên chúng tôi đã nhận đƣợc
nhiều góp ý, thôi thúc chúng tôi sớm điều chỉnh để có phiên bản thứ hai
này.
Trong phiên bản này ngoài những điều chỉnh nhỏ liên quan đến biên
tập, chúng tôi còn điều chỉnh và bổ sung thêm một số kiến thức và kỹ năng.
Đầu tiên, chúng tôi làm rõ thêm một số khái niệm và thuật toán. Bao
gồm khái niệm khóa, thuật toán tìm bao đóng của tập thuộc tính, thuật toán
tìm phủ tối tiểu, quy trình thay thế đuổi. Tiếp theo là bổ sung một khẳng
định “vi phạm dạng chuẩn có thể tìm thấy chính trong F”. Khẳng định này
cho phép xây dựng một phƣơng thức, rõ ràng và dễ hiểu hơn, xác định
dạng chuẩn của một lƣợc đồ quan hệ. Chúng tôi cũng thay thế cách thức
xác định tập phụ thuộc hàm chiếu, vốn đƣợc phát biểu không chính xác
trong phiên bản đầu. Cuối cùng là một phụ lục giới thiệu quá trình thiết kế
một lƣợc đồ cơ sở dữ liệu cho một bài toán nhỏ nhƣng không tầm thƣờng,
theo tiếp cận thực tế từ góc độ của ngƣời thiết kế có đôi chút kinh nghiệm.
Qua đó cho thấy vai trò cũng nhƣ những thuận lợi và thách thức khi áp
dụng lý thuyết vào thực tế.
Trong lần tái bản này chúng tôi muốn đƣợc gởi lời cám ơn chân
thành đến TS. Trần Minh Thuyết, khoa Tin học quản lý, đại học Kinh tế
Tp.HCM vì những đóng góp quý báu và có giá trị. Một lần nữa chúng tôi
rất vui mừng đón nhận các đóng góp gần xa của bạn đọc.
Tp.Hồ Chí Minh, Ngày 10/05/2009
Ngƣời viết
HUỲNH VĂN ĐỨC
![Page 4: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/4.jpg)
![Page 5: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/5.jpg)
LỜI NÓI ĐẦU
Đây là giáo trình 60 tiết đƣợc viết cho sinh viên chuyên ngành tin học
quản lý của trƣờng đại học kinh tế Tp.HCM. Giáo trình này cũng có thể
dùng cho chƣơng trình 45 tiết hoặc các chuyên ngành khác của ngành hệ
thống thông tin kinh tế, bằng cách giảm nhẹ yêu cầu ở một số nội dung tuỳ
theo mục tiêu của chƣơng trình đào tạo.
Đây là giáo trình môn học nên nội dung của nó bám sát với đề cƣơng.
Tuy nhiên, so với đề cƣơng, bố cục của tài liệu có một chút thay đổi. Cụ
thể, mô hình thực thể kết hợp đƣợc giới thiệu cuối cùng. Sự thay đổi này
xuất phát từ kinh nghiệm giảng dạy của chính tác giả và nhiều đồng nghiệp
khác, có tham khảo đến một số tài liệu đƣợc chúng tôi đánh giá là hay
[1][4].
Môn cơ sở dữ liệu là một trong những môn học quan trọng của
chuyên ngành Tin học Quản lý. Tài liệu này đƣợc biên soạn sao cho mức
lĩnh hội của sinh viên có thể đạt đến khả năng áp dụng các kiến thức của
môn học, giải quyết các tình huống rất gần với thực tế. Chúng tôi đƣa ra rất
nhiều ví dụ và bài tập. Những ví dụ và bài tập này khá đa dạng, nhiều ví dụ
và bài tập mang tính kiểm tra đơn giản, nhiều ví dụ và bài tập khác lại
mang tính áp dụng phức tạp.
Giáo trình đƣợc chia làm 7 chƣơng.
Chƣơng 1 giới thiệu tổng quan về cơ sở dữ liệu và môi trƣờng cơ sở
dữ liệu. Chƣơng này tập trung làm rõ các khái niệm quan trọng trong lĩnh
vực cơ sở dữ liệu. Các cấp độ trừu tƣợng của mô hình dữ liệu, kiến trúc cơ
sở dữ liệu 3 mức cũng nhƣ các thành phần của môi trƣờng cơ sở dữ liệu và
của hệ quản trị cơ sở dữ liệu đều đƣợc giới thiệu trong chƣơng này. Cuối
chƣơng, chúng tôi đƣa ra hai case study để tiện sử dụng thƣờng xuyên
trong giáo trình.
Chƣơng 2 trình bày mô hình cơ sở dữ liệu quan hệ. Ngoài việc giới
thiệu chi tiết các yếu tố mô hình tạo nên mô hình dữ liệu, chƣơng này còn
cung cấp cho sinh viên những kiến thức sâu sắc về quan hệ toán học. Hiểu
thấu đáo các phép toán đại số quan hệ và sử dụng thành thạo chiến lƣợc
giải bài toán bằng các biểu thức đại số quan hệ, sinh viên trang bị cho mình
các kỹ năng cần thiết làm việc với các hệ quản trị cơ sở dữ liệu có hỗ trợ
mô hình quan hệ.
![Page 6: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/6.jpg)
Giáo trình cơ sở dữ liệu
Chƣơng 3 giới thiệu về ngôn ngữ cơ sở dữ liệu. Do mục tiêu của môn
học mà chƣơng này chỉ tập trung vào ngôn ngữ hỏi. Với kiến thức và kỹ
năng có đƣợc ở chƣơng 2, cùng với cú pháp ngôn ngữ đƣợc học trong
chƣơng này, sinh viên đủ tự tin làm việc với hệ quản trị cơ sở dữ liệu giải
quyết nhiều bài toán xử lý dữ liệu phức tạp.
Các chƣơng 4, 5 và 6 nói về lý thuyết thiết kế. Theo đó sinh viên học
đƣợc cách chuẩn hoá một lƣợc đồ quan hệ với các ràng buộc phụ thuộc
hàm. Thiết kế cơ sở dữ liệu là một trong những kỹ năng quan trọng của
sinh viên chuyên ngành tin học quản lý. Mỗi chƣơng ở đây đảm nhận một
phần riêng, nhƣng trọn vẹn, để chắc rằng sinh viên lĩnh hội đƣợc các phần
riêng ấy ở mức có thể áp dụng đƣợc.
Chƣơng 7 giới thiệu mô hình thực thể kết hợp. Chƣơng này trình bày
phƣơng pháp luận thiết kế mô hình cơ sở dữ liệu mức quan niệm. Chúng
tôi kết thúc giáo trình bằng mô hình thực thể kết hợp với hai mục đích.
Thứ nhất, chúng tôi muốn sinh viên thực sự tập trung vào lý thuyết thiết kế
và kỹ năng giải quyết bài toán bằng đại số quan hệ. Thứ hai, mô hình này
là một điểm kết thúc quan trọng. Nó cho thấy vai trò của các chƣơng trƣớc
trong toàn bộ mô hình dữ liệu. Theo đó, sinh viên sẽ chủ động chọn mức
trừu tƣợng cho mô hình cơ sở dữ liệu mức quan niệm, chủ động phát biểu
các phụ thuộc hàm cũng nhƣ các yếu tố vật lý của mô hình.
Cấu trúc và nội dung của tài liệu đƣợc biên soạn phù hợp với mục
tiêu môn học và chúng tôi đã phải chọn lọc nhiều nội dung từ các tài liệu
tham khảo. Hầu hết các ký hiệu và định nghĩa lấy trong [6], riêng khái
niệm phủ tối tiểu lấy trong [7]. Rất nhiều nội dung đƣợc chọn lọc từ [1].
Nhiều nội dung khác đƣợc chọn lọc từ [2, 3, 5]. Bố cục của tài liệu rất gần
[4] và nhiều bài tập cũng đƣợc chọn từ [4].
Để sử dụng giáo trình đƣợc hiệu quả, sinh viên phải thực hành trực
tiếp các ví dụ và bài tập trong các chƣơng 3 và 7, bằng cách sử dụng một
hệ quản trị cơ sở dữ liệu và một hệ hỗ trợ lập mô hình cụ thể. Một tài liệu
giới thiệu các hệ này sẽ đƣợc cung cấp cho sinh viên trƣớc khi bắt đầu môn
học. Tài liệu phải giới thiệu các hệ cụ thể cũng nhƣ có các hƣớng dẫn chi
tiết nhằm bảo đảm sinh viên có thể tự học đƣợc.
Nhân dịp này chúng tôi chân thành cảm ơn Ban giám hiệu trƣờng đại
học Kinh tế Tp.HCM, phòng Quản lý Khoa học và Hợp tác Quốc tế đã tạo
điều kiện cho giáo trình này sớm đến tay sinh viên, góp phần bổ sung thêm
tài liệu học tập cho sinh viên chuyên ngành tin học quản lý nói riêng và
ngành hệ thống thông tin kinh tế nói chung. Chúng tôi cũng chân thành
![Page 7: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/7.jpg)
cảm ơn các đóng góp quý báu của các thành viên trong Hội đồng thẩm
định, của quý Thầy Cô trong bộ môn, trong khoa.
Dù rất nỗ lực bám sát các mục tiêu đặt ra, nhƣng tài liệu đƣợc viết ra
chắc chắn vẫn còn khiếm khuyết. Chúng tôi rất vui mừng đón nhận các
đóng góp của bạn đọc. Mọi đóng góp xin vui lòng gởi đến
Tp.Hồ Chí Minh, Ngày 06/06/2008
Ngƣời viết
HUỲNH VĂN ĐỨC
![Page 8: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/8.jpg)
![Page 9: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/9.jpg)
MỘT SỐ QUY ƢỚC KÝ HIỆU
Chữ in đầu bảng alphabet: A, B, C, ... thường dùng để
chỉ thuộc tính;
Chữ thƣờng đầu bảng alphabet: a, b, c, ... thường dùng
để chỉ một giá trị nào đó trong tập giá trị của thuộc tính
A, B, C, ...;
Với thuộc tính có nhiều từ ta sẽ bao lại bằng dấu ngoặc
vuông [...];
Chữ in cuối bảng alphabet: X, Y, Z, ... thường dùng để
chỉ tập các thuộc tính. Nhƣ vậy ta hiểu A X và X Y
một cách bình thƣờng;
Ký hiệu X = ABC = (ABC) thay cho X = {A, B, C};
Ký hiệu Z = XY thay cho Z = XY;
Chữ in R, S thường chỉ lƣợc đồ quan hệ;
Chữ thƣờng r, s thường chỉ quan hệ;
Các chữ thƣờng t, u, v thường để chỉ bộ của quan hệ;
Ký hiệu t.A là giá trị của thuộc tính A của t;
Ký hiệu t.X là tập giá trị của các thuộc tính thuộc X của
t;
Ký hiệu r(R) nói rằng quan hệ r đƣợc định nghĩa trên
lƣợc đồ R;
Ký hiệu K thường để chỉ một khoá của R;
Ký hiệu K (hoặc k) thường để chỉ tập các khoá của R;
Ký hiệu D thường chỉ lƣợc đồ cơ sở dữ liệu;
Ký hiệu d(D) hay d thường chỉ cơ sở dữ liệu;
Tập phụ thuộc hàm thường đƣợc ký hiệu là F, G;
Phụ thuộc hàm thường đƣợc ký hiệu là f, g;
![Page 10: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/10.jpg)
Giáo trình cơ sở dữ liệu
Các ký hiệu R, <R, F>, <R, K >, <R, K, F> hoặc ABCD,
ABCD, <ABCD, F>, <ABCD, K >, <ABCD, K, F> đều
là lƣợc đồ quan hệ;
Ký hiệu 𝑆𝐴𝑇𝑅 𝐹 hay 𝑆𝐴𝑇 𝐹 là tập tất cả các quan hệ
r(R) thoả F;
Ký hiệu PTT(F) là một phủ tối tiểu của F;
Ký hiệu F+ là tập các phụ thuộc hàm hệ quả của F;
Ký hiệu f ∊ F+
cho biết f là phụ thuộc hàm hệ quả của F;
Ký hiệu 𝐹 ⊨ 𝑓 cho biết f đƣợc suy (dẫn xuất) từ F bởi
bộ luật;
Ký hiệu 𝐹 ⊨ 𝐺 cho biết G đƣợc suy (dẫn xuất) từ F bởi
bộ luật;
Ký hiệu 𝐹 ≡ 𝐺 cho biết F tƣơng đƣơng G;
Ký hiệu 𝑋𝐹+ hay X
+ là bao đóng của tập thuộc tính X
đƣợc suy từ F bởi bộ luật;
Ký hiệu 𝜋𝑆(𝐹) là chiếu của tập phụ thuộc hàm F lên
lƣợc đồ S;
Ký hiệu F‟ là tập phụ thuộc hàm chiếu của F;
Ký hiệu ρ là phân rã của một lƣợc đồ quan hệ;
𝑟 ∪ 𝑠 là hợp của hai quan hệ r và s;
𝑟 ∩ 𝑠 là giao của hai quan hệ r và s;
𝑟 − 𝑠 là hiệu của hai quan hệ r và s;
𝑟 = 𝑎𝑑𝑜𝑚 𝑟 − 𝑟 là phần bù của quan hệ r;
𝑟 × 𝑠 là tích (Descartes) của hai quan hệ r và s;
𝜍𝑝 𝑟 là chọn các bộ của quan hệ r thỏa điều kiện p;
𝜋𝑋 𝑟 hay 𝑟[𝑋] là chiếu của quan hệ r lên tập thuộc tính
X;
𝑟 ⋈ 𝑠 là kết tự nhiên của hai quan hệ r và s;
𝑟 ⋈𝐴 = 𝐵 𝑠 là kết tương đương của hai quan hệ r và s;
𝑟 ⋈𝐴 𝜃 𝐵 𝑠 là kết theta của hai quan hệ r và s;
𝑟 ⋉ 𝑠 là kết ngoài bên phải của hai quan hệ r và s;
𝑟 ⋉𝐶 𝑠 là kết ngoài bên phải của hai quan hệ r và s với
điều kiện C;
![Page 11: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/11.jpg)
𝑟 ⋊ 𝑠 là kết ngoài bên trái của hai quan hệ r và s;
𝑟 ⋊𝐶 𝑠 là kết ngoài bên trái của hai quan hệ r và s với
điều kiện C;
𝑟 ×𝐶 𝑠 là kết ngoài của hai quan hệ r và s với điều kiện
kết C;
𝑟 ⊳ 𝑠 là kết trái của hai quan hệ r và s;
𝑟 ⊳𝐶 𝑠 là kết trái của hai quan hệ r và s với điều kiện C;
𝑟 ⊲ 𝑠 là kết phải của hai quan hệ r và s;
𝑟 ⊲𝐶 𝑠 là kết phải của hai quan hệ r và s với điều kiện
C;
𝑟 ÷ 𝑠 là chia quan hệ r cho quan hệ s;
𝑎 𝜃 𝑏 là phép so sánh giữa hai trị;
𝐴 𝜃 𝐵 là phép so sánh giữa hai thuộc tính;
𝑎 𝜃 𝑟 là phép so sánh giữa một giá trị và một quan hệ;
𝐴 𝜃 𝑟 là phép so sánh giữa một thuộc tính và một quan
hệ;
1NF là dạng chuẩn 1;
2NF là dạng chuẩn 2;
3NF là dạng chuẩn 3;
4NF là dạng chuẩn 4;
BCNF là dạng chuẩn BC;
𝑇𝜌 là bảng tableaux của phân rã ρ;
𝑇𝜌∗là bảng tableaux của ρ sau khi thực hiện quy trình
thay thế đuổi;
𝑇𝜌 ,𝑋 là bảng tableaux của phân rã ρ và tập thuộc tính X;
𝑇𝜌 ,𝑋∗ là bảng tableaux của ρ và tập thuộc tính X sau khi
thực hiện quy trình thay thế đuổi.
![Page 12: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/12.jpg)
![Page 13: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/13.jpg)
MỤC LỤC
Chƣơng 1 TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU ................................... 1
1. Mở đầu ....................................................................................... 2
2. Hệ thống dựa trên tập tin ............................................................. 4
2.1. Tiếp cận 4 2.2. Hạn chế 7
3. Tiếp cận cơ sở dữ liệu ................................................................. 8
3.1. Tiếp cận 8 3.2. Môi trường cơ sở dữ liệu 11 3.3. Mô hình dữ liệu 14
4. Tổng quan về hệ quản trị cơ sở dữ liệu ...................................... 23
4.1. Chức năng 24 4.2. Thành phần 25
5. Giới thiệu các case study ........................................................... 29
5.1. Công ty Mỹ Gia 29 5.2. Trường đại học Tri Khánh 33
Chƣơng 2 MÔ HÌNH CƠ SỞ DỮ LIỆU QUAN HỆ ........................... 39
1. Mở đầu ..................................................................................... 40
2. Khái niệm ................................................................................. 42
2.1. Quan hệ và lược đồ quan hệ 42 2.2. Khoá của lược đồ quan hệ 43 2.3. Quan hệ toán học 45
3. Mô hình .................................................................................... 46
3.1. Cơ sở dữ liệu và lược đồ cơ sở dữ liệu 46 3.2. Ràng buộc toàn vẹn 47
4. Đại số quan hệ........................................................................... 55
4.1. Các ví dụ mở đầu 55 4.2. Các phép toán tập hợp: hợp, giao, hiệu và bù 59 4.3. Phép chọn 61 4.4. Phép chiếu 62 4.5. Phép kết 63 4.6. Phép chia 69 4.7. Tính toán 70
![Page 14: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/14.jpg)
Giáo trình cơ sở dữ liệu
5. Dùng đại số quan hệ .................................................................. 71
5.1. Các chiến lược 71 5.2. Tính tiền điện 72 5.3. Công ty Mỹ Gia 74 5.4. Kiểm tra ràng buộc toàn vẹn 75
Chƣơng 3 Ngôn ngữ cơ sở dữ liệu SQL .............................................. 83
1. Giới thiệu case study ................................................................. 84
2. Ngôn ngữ con định nghĩa dữ liệu (DDL) ................................... 86
2.1. Kiểu dữ liệu 87 2.2. Tạo cơ sở dữ liệu 89 2.3. Định nghĩa miền giá trị 89 2.4. Tạo bảng (quan hệ và lược đồ quan hệ) 90 2.5. Khai báo các ràng buộc toàn vẹn 94 2.6. Tạo bảng với các ràng buộc toàn vẹn 96 2.7. Hủy bảng 97 2.8. Định nghĩa lại bảng 97
3. Ngôn ngữ con thao tác dữ liệu ................................................... 98
3.1. Thêm xoá sửa 98 3.2. Truy vấn dữ liệu 99 3.3. Truy vấn con 103 3.4. Cài đặt đại số quan hệ 104 3.5. Dùng truy vấn kiểm tra ràng buộc toàn vẹn 108
4. Ngôn ngữ con điều khiển truy cập (DCL) ................................ 109
4.1. Cấp quyền cho người dùng khác 110 4.2. Hủy quyền của người dùng khác 111 4.3. View 112
Chƣơng 4 PHỤ THUỘC HÀM ......................................................... 119
1. Khái niệm ............................................................................... 122
1.1. Phụ thuộc hàm 122 1.2. Tập phụ thuộc hàm 123 1.3. Luật dẫn - Hệ tiên đề Armstrong 124 1.4. Phủ của phụ thuộc hàm 125
2. Tìm phủ tối tiểu ....................................................................... 127
2.1. Giải bài toán thành viên 127 2.2. Giải bài toán tìm phủ tối tiểu 128
3. Khảo sát tình huống................................................................. 133
3.1. Tình huống 133 3.2. Giải quyết 134
![Page 15: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/15.jpg)
4. Kỹ thuật tableaux .................................................................... 134
4.1. Áp dụng giải bài toán thành viên 135 4.2. Áp dụng giải bài toán bao đóng 136
Chƣơng 5 DẠNG CHUẨN ............................................................... 141
1. Bài toán tìm tất cả khoá ........................................................... 142
2. Các dạng chuẩn ....................................................................... 145
2.1. Dạng chuẩn 1 145 2.2. Dạng chuẩn 2 147 2.3. Dạng chuẩn 3 148 2.4. Dạng chuẩn BC (Boyce-Codd) 149 2.5. Xác định dạng chuẩn 150
3. Chiếu của tập phụ thuộc hàm................................................... 152
3.1. Khái niệm 152 3.2. Tính chất đặc trưng đầy đủ F 154 3.3. Tính chất ép thỏa F 155 3.4. Vấn đề với dạng chuẩn BC 156
Chƣơng 6 CHUẨN HOÁ LƢỢC ĐỒ QUAN HỆ ............................. 161
1. Kiểm tra các tiêu chuẩn ........................................................... 162
1.1. Kiểm tra tính bảo toàn thông tin 162 1.2. Bảo toàn phụ thuộc 164
2. Chuẩn hoá ............................................................................... 166
2.1. Tiếp cận phân rã 167 2.2. Tiếp cận tổng hợp 169
3. Dạng chuẩn 4 .......................................................................... 171
Chƣơng 7 MÔ HÌNH THỰC THỂ KẾT HỢP .................................. 179
1. Khái niệm ............................................................................... 179
1.1. Thực thể 180 1.2. Thuộc tính 181 1.3. Mối kết hợp 183 1.4. Nhiều hơn về mối kết hợp 185 1.5. Tìm phụ thuộc hàm từ mô hình E-R 188 1.6. Các ký hiệu trong Power Designer 192 1.7. Chuyển sang mô hình quan hệ 197
2. Lập mô hình dữ liệu mức quan niệm ....................................... 201
2.1. Khảo sát tình huống 202 2.2. Tìm thực thể 204 2.3. Tìm mối kết hợp 204
![Page 16: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/16.jpg)
Giáo trình cơ sở dữ liệu
2.4. Phân rã các mối kết hợp nhiều hơn hai ngôi 205
3. Hƣớng dẫn lập mô hình ........................................................... 206
3.1. Xây dựng mô hình cục bộ mức quan niệm 206 3.2. Xây dựng mô hình (toàn cục) mức quan niệm 211
Phụ lục XẾP LỊCH THỰC HÀNH ........................................................ 221
1. Đặc tả ...................................................................................... 221
2. Thiết kế ................................................................................... 222
3. Cài đặt và thử nghiệm ............................................................. 224
4. Làm việc với cơ sở dữ liệu ...................................................... 225
5. Hỗ trợ lập trình ........................................................................ 226
6. Thiết kế lại .............................................................................. 229
7. Mô hình thực thể kết hợp......................................................... 229
8. Kết luận .................................................................................. 230
![Page 17: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/17.jpg)
Chƣơng 1 TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU
Mục tiêu của chƣơng.
Trong chƣơng này chúng ta sẽ đƣợc giới thiệu một cách
tổng quan về:
Các khái niệm: cơ sở dữ liệu, hệ quản trị cơ sở dữ
liệu, hệ thống cơ sở dữ liệu và mô hình cơ sở dữ liệu;
Các hạn chế của các mô hình dữ liệu dựa trên hệ
thống tập tin và các điểm mạnh yếu của các mô hình
dữ liệu dựa trên cơ sở dữ liệu;
Các vấn đề của cơ sở dữ liệu: bảo tồn, truy xuất và
bảo mật;
Các đặc trƣng của mô hình dữ liệu dựa trên cơ sở dữ
liệu: độc lập dữ liệu, không dư thừa, nhất quán, toàn
vẹn, an toàn và chia sẻ;
Các mô hình cài đặt: mô hình phân cấp, mô hình mạng
và mô hình quan hệ;
Các mô hình dữ liệu mức quan niệm: mô hình thực thể
kết hợp và mô hình hướng đối tượng;
Vai trò của các lƣợc đồ logic và vật lý;
Mục đích của kiến trúc cơ sở dữ liệu 3 mức: mức
ngoài, mức quan niệm và mức trong;
Vai trò của ngôn ngữ cơ sở dữ liệu: định nghĩa, thao
tác và truy vấn;
Phân loại hệ quản trị cơ sở dữ liệu;
Các thành phần của một hệ quản trị cơ sở dữ liệu;
Vai trò của những ngƣời dùng khác nhau: quản trị cơ
sở dữ liệu, lập trình cơ sở dữ liệu và sử dụng cơ sở dữ
liệu.
![Page 18: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/18.jpg)
2 Giáo trình cơ sở dữ liệu
1. Mở đầu
Có thể chúng ta không để ý, nhƣng trong cuộc sống hàng ngày chúng ta
thƣờng có sử dụng đến cơ sở dữ liệu (database1). Chẳng hạn, khi chúng ta
mua hàng ở siêu thị, một cơ sở dữ liệu sẽ đƣợc truy cập, thông quá thiết bị
đọc mã vạch do nhân viên bán hàng sử dụng. Hệ thống sẽ dùng mã vạch
này để truy cập đến cơ sở dữ liệu hàng hoá, tìm đơn giá sản phẩm, ghi lên
hoá đơn bán hàng và giảm lƣợng tồn. Cũng vậy, khi chúng ta liên hệ một
đại lý du lịch để hỏi về các tour du lịch, nhân viên tiếp nhận cũng sẽ truy
cập đến cơ sở dữ liệu du lịch để cung cấp cho chúng ta các thông tin liên
quan cũng nhƣ hƣớng dẫn chúng ta lựa chọn hành trình, phƣơng tiện. Hoặc
xét tình huống đến mƣợn sách tại một thƣ viện. Thủ thƣ có thể phải sử
dụng đến cơ sở dữ liệu thư viện lƣu trữ dữ liệu về sách, tài liệu, về tác giả,
độc giả, về chi tiết mƣợn cũng nhƣ chi tiết đăng ký mƣợn khi chƣa có sách,
nhằm đáp ứng các hoạt động mƣợn trả của thƣ viện.
Ngày nay, sự thành công của một tổ chức phụ thuộc vào khả năng thu thập
dữ liệu, quản lý chúng một cách hiệu quả cũng nhƣ dùng chúng để phân
tích và định hƣớng các hoạt động. Để có các quyết định tốt chúng ta cần
các thông tin có giá trị, là kết quả của các quá trình xử lý dữ liệu khác
nhau. Hiện nay, các thuật ngữ nhƣ xa lộ thông tin đã dần trở nên thông
dụng và công việc xử lý thông tin đã nhanh chóng phát triển thành một
ngành công nghiệp nhiều tỷ đô la.
Rõ ràng, việc quản lý dữ liệu hiệu quả là một trong các yếu tố quan trọng
của một tổ chức. Bằng các quá trình xử lý dữ liệu phù hợp ta đƣợc thông
tin. Thông tin là điểm mấu chốt để nhà quản lý sử dụng tài nguyên một
cách hiệu quả. Đƣợc thông tin, đó là biết một tập các khả năng, các phƣơng
án hành động giúp cho việc ra quyết định đƣợc đúng đắn. Tuy nhiên, thông
tin cung cấp cho nhà quản lý phải chính xác, đầy đủ và kịp thời. Có nhƣ
vậy các quyết định của họ không những đúng đắn mà còn hiệu quả.
Ví dụ sau minh hoạ mối quan hệ giữa dữ liệu và thông tin.
Ví dụ 1.1
Giữa quý I của năm 2001 và quý 2 của năm 2006, hai cửa hàng của công ty
X phát sinh 1,380,456 và 1,453,907 hoá đơn bán hàng và nhƣ vậy dữ liệu
đƣợc phát sinh bao gồm 2,834,363 số hoá đơn, 2,834,363 ngày lập,
1 Thuật ngữ data base (hai từ rời) đƣợc dùng lần đầu vào năm 1963. Thuật ngữ database
(từ đơn) đƣợc sử dụng vào đầu những năm 1970 bắt đầu ở Châu Âu và trở nên thông dụng
cho đến ngày nay.
![Page 19: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/19.jpg)
Chƣơng 1: Tổng quan về cơ sở dữ liệu 3
2,834,363 trị giá hoá đơn, 2,834,363 tham chiếu đến nhân viên bán hàng.
Ngƣời quản lý muốn biết tình hình bán hàng qua chỉ tiêu doanh số trung
bình theo nhân viên của mỗi cửa hàng theo từng quý. Chúng ta cần lƣu trữ
các dữ liệu này và thực hiện việc xử lý để cung cấp thông tin cho nhà quản
lý dƣới dạng biểu đồ.
Tại thời điểm này chúng ta tạm coi công việc quản lý dữ liệu tập trung vào
việc thu thập, lưu trữ và lấy lại dữ liệu. Theo đó, chúng ta quan tâm đến
các phương thức quản lý dữ liệu hiệu quả. Xét ví dụ sau:
Ví dụ 1.2
Trung tâm A, vào đầu mỗi tháng, có tổ chức dạy hai môn ngắn hạn là kỹ
thuật bàn phím, 15 tiết, và Internet, 20 tiết. Ngoài các giảng viên cơ hữu,
trung tâm còn mời thêm các giảng viên thỉnh giảng. Mỗi tháng quản lý có
nhiệm vụ mở lớp, phân công giảng dạy vào đầu tháng và tính lƣơng cho
mọi ngƣời vào cuối tháng. Quản lý nhận lương cứng (bằng hệ số lương
nhân với lương cơ bản) cộng phụ cấp quản lý, giảng viên cơ hữu nhận
lƣơng cứng và tiền giảng (bằng tổng số tiết nhân với thù lao mỗi tiết),
giảng viên thỉnh giảng nhận tiền giảng nhân với hệ số mời cộng 1.
Biết lương cơ bản bằng 450 (nghìn), thù lao mỗi tiết bằng 50 (nghìn), hệ số
mời bằng 0.5 và phụ cấp quản lý bằng 1800 (nghìn). Hiện trung tâm có 1
![Page 20: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/20.jpg)
4 Giáo trình cơ sở dữ liệu
quản lý tên Minh (hệ số lương bằng 3), 2 giảng viên tên Lan (hệ số lương
bằng 3) và Hùng (hệ số lương bằng 2) và 1 giảng viên mời tên Thảo.
Đầu tháng này, giảng viên Lan dạy 1 lớp kỹ thuật bàn phím và 1 lớp
Internet, giảng viên Hùng dạy 1 lớp kỹ thuật bàn phím còn giảng viên Thảo
dạy 2 lớp Internet. Hãy tổ chức lƣu trữ toàn bộ dữ liệu và lấy lại dữ liệu
này để tính toán lƣơng giúp cho quản lý Minh vào cuối tháng này. Ngoài
ra, với vai trò quản lý, Minh có thể muốn có thông tin về tình hình mở lớp
trong suốt một năm. Chẳng hạn anh ta muốn so sánh số lớp mở đƣợc theo
từng quý trong vòng 5 năm.
2. Hệ thống dựa trên tập tin2
2.1. Tiếp cận
Về mặt lịch sử, các chƣơng trình ứng dụng đầu tiên tập trung vào các tác
vụ văn phòng nhỏ nhƣ xử lý đơn hàng, phân công công việc, thanh toán
lương, tính tồn kho, ghi sổ kế toán. Nói chung, các tác vụ này đơn giản và
dữ liệu không quá phức tạp để hiểu. Dữ liệu đƣợc lƣu trong một hệ thống
các tập tin có cấu trúc riêng và có các quan hệ logic với nhau. Đặc tả chi
tiết về cấu trúc và các quan hệ cũng nhƣ cách truy xuất dữ liệu từ các tập
tin là hoàn toàn phụ thuộc3 vào chƣơng trình ứng dụng cụ thể. Với mỗi ứng
dụng, các lập trình viên có toàn quyền trong mô tả dữ liệu và tự mình
nhanh chóng xây dựng các tập tin và lƣu chúng trên các cuộn băng riêng và
các đĩa từ riêng.
Như vậy hệ thống dựa trên tập tin là hệ thống các chương trình ứng dụng
thực hiện các dịch vụ cho người dùng cuối mà mỗi chương trình tự định
nghĩa và quản lý dữ liệu riêng của nó.
Với tiếp cận này chúng ta phải xây dựng các thủ tục nhập xuất thật hiệu
quả và khi gặp phải các yêu cầu xử lý dữ liệu phức tạp chúng ta phải xây
dựng các thuật toán chính xác. Đặc biệt nếu chúng ta có nhiều bộ phận có
những chƣơng trình quản lý riêng thì việc lƣu trữ dƣ thừa là không thể
tránh khỏi. Thậm chí các cấu trúc trùng lắp này lại đƣợc mô tả khác nhau.
2 Hiểu để không lặp phải những hạn chế khi thiết kế và để chuyển đổi dữ liệu. Thật ra hệ dựa trên tập tin vẫn còn tồn tại trong những hệ thống đặc biệt. 3 Mang tính sở hữu, chƣơng trình ứng dụng chiếm hữu toàn bộ dữ liệu của nó và toàn
quyền trong việc tổ chức lƣu trữ cũng nhƣ chiến lƣợc truy xuất.
![Page 21: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/21.jpg)
Chƣơng 1: Tổng quan về cơ sở dữ liệu 5
Ví dụ 1.3
Để giải quyết bài toán ở ví dụ 2, chúng ta có thể tổ chức dữ liệu nhƣ sau4:
Dùng các biến với kiểu dữ liệu có sẵn để lƣu các dữ liệu của lương cơ bản,
thù lao mỗi tiết, hệ số mời và phụ cấp quản lý. Ta có:
lương cơ bản = 450
thù lao mỗi tiết = 50
hệ số mời = 0.5
phụ cấp quản lý = 1800
Dùng biến (mảng) với cấu trúc {tên môn, số tiết} để lƣu dữ liệu của môn
học. Ta có:
Tên môn số tiết
kỹ thuật bàn phím 15
internet 20
Giả sử chúng ta quyết định công thức tính lƣơng chung cho tất cả là
Lương = (hệ số lương)(lương cơ bản)+ (phụ
cấp quản lý)(là quản lý) + (tổng số
tiết)(thù lao mỗi tiết)(1 + (hệ số
mời) (là mời giảng)).
Dùng biến (mảng) với cấu trúc {họ tên, hệ số lương, là quản lý, là mời
giảng} để lƣu dữ liệu của quản lý, giảng viên và giảng viên mời. Ta có:
Họ tên hệ số lương là quản lý là mời giảng
Minh 3 1 0
Lan 3 0 0
Hùng 2 0 0
Thảo 0 0 1
Dùng biến (mảng) với cấu trúc {chỉ mục giảng viên, chỉ mục môn, số lớp}
để lƣu dữ liệu phân công giảng. Ta có:
Chỉ mục giảng viên chỉ mục môn số lớp
1 0 1
1 1 1
2 0 1
3 1 2
4 Chỉ là gợi ý
![Page 22: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/22.jpg)
6 Giáo trình cơ sở dữ liệu
Toàn bộ dữ liệu này đƣợc lƣu trong một tập tin với nội dung nhƣ sau5
450, 50, 5, 1800,
2,
kỹ thuật bàn phím, 15,
Internet, 20,
4,
Minh, 3, 1, 0,
0,
Lan, 3, 0, 0,
2,
0, 1,
1, 1,
Hùng, 2, 0, 0,
1,
0, 1,
Thảo, 0, 0, 1,
1,
1, 2
Chúng ta sẽ viết chƣơng trình lấy dữ liệu từ tập tin này, đƣa vào các biến
nhƣ đã mô tả rồi thực hiện các tính toán cần thiết (xem bài tập).
Tiếp cận này không còn phù hợp nữa khi mà dung lƣợng dữ liệu của các tổ
chức ngày càng lớn và rất lớn cũng nhƣ nhu cầu nhận thông tin có giá trị
ngày càng nhiều và rất nhiều. Thật vậy, với dung lƣợng dữ liệu rất lớn và
cùng với điều này là các quan hệ dữ liệu phức tạp nảy sinh, thì việc quản lý
dữ liệu quả thật không đơn giản tý nào. Chúng ta có thể không kiểm soát
nổi hệ thống các tập tin do chính chúng ta tạo ra. Tiếp cận này tiềm ẩn
nguy cơ gây ra mâu thuẫn, chia sẻ dữ liệu đã khó ngày càng trở nên khó
hơn. Cho dù các lập trình viên có cộng tác với nhau chặt chẽ thì việc định
nghĩa các cấu trúc lƣu trữ, xây dựng các chiến lƣợc truy xuất riêng sẽ rất dễ
bị tổn thƣơng khi chia sẻ hoặc khi có thay đổi về cấu trúc.
Ví dụ 1.4
Giả sử bài toán cho ở ví dụ 2 giờ đây đƣợc giải quyết bởi 3 bộ phận.
5 Cũng chỉ là gợi ý. Trong đó xuất hiện một số dữ liệu để điều khiển truy xuất: chẳng hạn
sau các dữ liệu chung xuất hiện số 2 cho biết sau đây là dữ liệu của 2 môn; hoặc sau dữ
liệu của môn xuất hiện số 4 cho sau đó là dữ liệu của 4 ngƣời lãnh lƣơng; rồi sau dữ liệu
chung của ngƣời lãnh lƣơng xuất hiện một số nguyên cho biết số môn mà ngƣời ấy giảng.
![Page 23: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/23.jpg)
Chƣơng 1: Tổng quan về cơ sở dữ liệu 7
1. Bộ phận quản lý nhân viên đảm nhận việc lƣu và cập nhật dữ liệu
chung (lương cơ bản, phụ cấp quản lý, hệ số mời, thù lao mỗi tiết)
và dữ liệu của nhân viên (của chỉ nhân viên trong trung tâm: họ tên,
hệ số lương, là quản lý).
2. Bộ phận quản lý giảng dạy đảm nhận lƣu và cập nhật dữ liệu của
môn học (tên môn, số tiết), dữ liệu của giảng viên (chỉ giảng viên
mà thôi: họ tên, là mời giảng), dữ liệu của phân công (giảng viên
nào, dạy môn gì, số lớp).
3. Bộ phận tính lƣơng lƣu đầy đủ thông tin để tính lƣơng (lƣơng cơ
bản, phụ cấp quản lý, hệ số mời, thù lao mỗi tiết, họ tên, hệ số
lƣơng, là quản lý, là mời giảng, tổng số tiết).
Thử tƣởng tƣợng mỗi bộ phận tự tổ chức dữ liệu, tự định nghĩa cấu trúc và
tự lƣu trữ dữ liệu. Khi ấy việc lƣu trữ dƣ thừa tiềm ẩn nguy cơ gây ra mâu
thuẫn. Có thể có những dữ liệu bộ phận này cần lấy từ bộ phận khác, lại
gây ra xung đột về cấu trúc, gây khó khăn trong cộng tác giữa các bộ phận.
Đó là chƣa kể các bộ phận có thể thay đổi định nghĩa, thay đổi cách lƣu trữ
làm cho các nguy cơ đã có thêm nặng nề.
2.2. Hạn chế
Dữ liệu tách biệt và cô lập
Điều này gây khó khăn khi truy cập. Với dữ liệu đƣợc lƣu nhƣ ở ví dụ 4,
nếu bộ phận quản lý giảng dạy muốn in danh sách giảng viên với đầy đủ
chi tiết, thì sẽ gặp khó khăn khi phải truy cập đến các tập tin ở bộ phận
quản lý nhân viên.
Trùng lắp
Ngoài chi phí lƣu trữ, chi phí cập nhật dữ liệu, còn một vấn đề nghiêm
trọng hơn nhiều. Đó là nguy cơ xảy ra mâu thuẫn. Với dữ liệu đƣợc lƣu
nhƣ ở ví dụ 4, giả sử bộ phận quản lý nhân viên thay đổi dữ liệu mà dữ liệu
ở bộ phận tính lƣơng không đƣợc đồng bộ. Điều này gây ra hậu quả là
lƣơng bị tính sai.
Lệ thuộc dữ liệu
Sự thay đổi cấu trúc mô tả dữ liệu của một bộ phận, dù thật đơn giản, lại
gây ra tác động theo chiều rộng đến các chƣơng trình có sử dụng các cấu
trúc này, không chỉ trong phạm vi một bộ phận. Các chƣơng trình làm chủ
dữ liệu của mình nhƣng lại lệ thuộc vào dữ liệu do chƣơng trình khác làm
chủ.
![Page 24: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/24.jpg)
8 Giáo trình cơ sở dữ liệu
Không tƣơng thích
Các chƣơng trình có thể đƣợc viết bởi các ngôn ngữ lập trình khác nhau.
Cơ chế lƣu trữ và lấy lại của các ngôn ngữ lập trình khác nhau có thể khác
nhau. Điều này gây khó khăn khi phải xử dụng dữ liệu của nhau.
Không mềm dẻo trong xử lý dữ liệu
Dữ liệu bị buộc vào chƣơng trình. Chƣơng trình đƣợc cài đặt với các xử lý
xác định. Nếu một yêu cầu xử lý dữ liệu mới đƣợc đặt ra, nó phải đƣợc cài
đặt thêm và thậm chí biên dịch lại. Vẫn xét ví dụ 4, nếu bây giờ tại bộ phận
quản lý giảng dạy có nhu cầu đƣa ra một báo cáo thống kê về số tiền chi
cho giảng viên theo từng môn, thì chúng ta phải viết hoặc một chƣơng trình
mới, hoặc bổ sung một chức năng cho chƣơng trình cũ rồi biên dịch lại.
Công việc này cũng sẽ gây khó khăn cho lập trình viên khi phải truy xuất
tập tin ở bộ phận khác hoặc nhận dữ liệu với cấu trúc lệ thuộc vào chƣơng
trình ở bộ phận khác.
3. Tiếp cận cơ sở dữ liệu
Trong thực tế sự bùng nổ dữ liệu đang thách thức chúng ta trong công việc
mô tả, lưu trữ cũng như tìm kiếm. Chúng sẽ nhanh chóng trở thành một
khoản nợ nếu nhƣ chi phí thu thập và quản lý vƣợt xa giá trị do chúng
mang lại. Chính vì thế mà chúng ta luôn phải tìm kiếm các mô hình dữ
liệu và các công cụ quản lý dữ liệu hiệu quả.
Tại thời điểm này chúng ta hiểu, một cách trực giác, cơ sở dữ liệu là một
tập các dữ liệu có liên quan đến các hoạt động của một hoặc nhiều tổ chức
có quan hệ với nhau và hệ quản trị cơ sở dữ liệu là một phần mềm đƣợc
thiết kế để hỗ trợ cho công việc bảo tồn và quản lý cơ sở dữ liệu6.
3.1. Tiếp cận
Khi mà việc quản lý dữ liệu bằng hệ thống tập tin trở nên khó khăn, cần
thiết phải tập trung quản lý chúng nhƣ là một thực thể thống nhất, ít ra là ở
mức mô tả. Khi đó chúng ta sẽ có một cái nhìn tổng quát mang tính hệ
thống đối với toàn bộ dữ liệu của tổ chức.
6 Khi nói đến cơ sở dữ liệu chúng ta không thể không nhắc đến hệ quản trị cơ sở dữ liệu
cũng giống nhƣ khi nói đến kiểu dữ liệu chúng ta không thể không nhắc đến các phép
toán.
![Page 25: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/25.jpg)
Chƣơng 1: Tổng quan về cơ sở dữ liệu 9
Định nghĩa 1.1
Cơ sở dữ liệu là một tập hợp các dữ liệu dùng chung, có quan hệ logic với
nhau, cùng với mô tả của chúng, được thiết kế cho nhu cầu thông tin của
một tổ chức.
Chúng ta xem xét chi tiết định nghĩa này để hiểu đầy đủ khái niệm. Theo
định nghĩa, cơ sở dữ liệu là một kho dữ liệu lớn đƣợc định nghĩa một lần và
đƣợc dùng đồng thời bởi nhiều bộ phận ngƣời dùng. Dữ liệu đƣợc tích hợp
với lƣợng dƣ thừa tối thiểu, độc lập với ứng dụng và trở thành một tài
nguyên dùng chung. Cơ sở dữ liệu lƣu không chỉ dữ liệu mà cả mô tả của
dữ liệu, còn đƣợc gọi là từ điển dữ liệu hay dữ liệu về dữ liệu. Việc dữ
liệu đƣợc định nghĩa độc lập với ứng dụng cho phép chúng ta mô hình dữ
liệu với nhiều cấp độ trừu tƣợng nhờ đó chúng ta thấy đƣợc mối quan hệ
logic của dữ liệu trong tổ chức. Với tiếp cận này chúng ta có đƣợc các
thuận lợi trong quản lý dữ liệu nhƣng cũng xuất hiện một số thách thức.
Các thuận lợi
Việc tách dữ liệu ra khỏi chƣơng trình ứng dụng cho phép quản lý và sử
dụng chúng đƣợc hiệu quả. Trƣớc tiên dữ liệu trở nên độc lập với chƣơng
trình. Chƣơng trình có thể khai thác dữ liệu mà không cần biết đến cấu
trúc, cũng nhƣ chiến lƣợc truy xuất. Nhờ đó ta có thể cài đặt các ứng dụng
sao cho nếu có sự thay đổi trên dữ liệu về cấu trúc hay chiến lƣợc truy xuất
thì vẫn không phải cài đặt lại chƣơng trình. Tiếp theo dữ liệu còn đƣợc
chia sẻ cho nhiều ứng dụng khác nhau. Cuối cùng dữ liệu không còn bị
trùng lắp giúp giảm không gian lƣu trữ và tăng tính toàn vẹn dữ liệu. Nhờ
đó dữ liệu sẽ nhất quán và không gây mâu thuẫn.
Tính chất thống nhất giữa các dữ liệu trong hệ thống nhƣ một toàn bộ cho
phép xây dựng các mô hình dữ liệu. Theo đó chúng ta có thể chỉ ra những
liên hệ, những ràng buộc bất biến trong suốt thời gian sống của dữ liệu.
Nhờ làm nổi bật ý nghĩa của các quan hệ dữ liệu, chúng ta có thể xây dựng
nên các ứng dụng đa dạng và hiệu quả. Chúng ta còn có thể xây dựng
phƣơng pháp luận cho phân tích thiết kế và cài đặt chƣơng trình ứng
dụng dựa trên các lƣợc đồ logic giúp việc viết một chƣơng trình ứng dụng
đƣợc dễ dàng hơn.
Cho phép xây dựng một ngôn ngữ phi thủ tục theo đó việc khai thác dữ
liệu đƣợc thực hiện bằng cách mô tả những gì là cần lấy mà không cần chỉ
rõ dữ liệu sẽ đƣợc lấy ra nhƣ thế nào.
Cho phép xây dựng một cơ chế bảo mật dữ liệu bằng cách hạn chế quyền
truy xuất của các chƣơng trình ứng dụng. Chƣơng trình ứng dụng chỉ đƣợc
![Page 26: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/26.jpg)
10 Giáo trình cơ sở dữ liệu
phép truy xuất từng phần hay toàn bộ dữ liệu phụ thuộc vào thẩm quyền
của nó.
Chúng ta có thể liệt kê các thuận lợi nhƣ
1. Kiểm soát đƣợc sự dƣ thừa dữ liệu, giảm chi phí lƣu trữ;
2. Dữ liệu nhất quán, dễ phát hiện các xung đột giữa các yêu cầu nếu
có;
3. Cho phép rút ra nhiều thông tin hơn và có giá trị hơn từ cùng một
nguồn dữ liệu;
4. Dữ liệu đƣợc chia sẻ, tăng cƣờng khả năng truy cập và đáp ứng,
kiểm soát sự tƣơng tranh;
5. Tăng cƣờng tính toàn vẹn;
6. Tăng cƣờng tính bảo mật;
7. Tăng cƣờng khả năng thỏa mãn các chuẩn của đơn vị, của tổ chức,
của quốc gia cũng nhƣ của quốc tế;
8. Tăng hiệu suất quản lý và khai thác dữ liệu;
9. Cải thiện việc sao lƣu và phục hồi dữ liệu.
Các thách thức
Dữ liệu đƣợc quản lý tập trung làm gia tăng độ phức tạp. Để quản lý hiệu
quả chúng ta phải tốn nhiều công sức hơn, chuyên nghiệp hơn. Tính tổng
quát gia tăng làm giảm đi tính chuyên biệt. Dữ liệu tập trung quá lớn làm
cho mức tin cậy, độ sẵn sàng cũng nhƣ tính bảo mật luôn bị đe doạ.
Chúng ta có thể liệt kê ra đây một số bất tiện cũng nhƣ các bài toán cần
giải quyết khi làm việc theo tiếp cận này
Các bất tiện
1. Phức tạp;
2. Chi phí cao;
3. Không chuyên biệt;
4. Dễ bị tấn công.
Các bài toán
1. Bảo đảm tính toàn vẹn;
2. Bảo đảm tính bảo mật;
3. Bảo đảm chia sẻ và điều khiển tƣơng tranh;
4. Bảo đảm tính độc lập dữ liệu.
![Page 27: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/27.jpg)
Chƣơng 1: Tổng quan về cơ sở dữ liệu 11
Giải quyết các vấn đề này không là nhiệm vụ của ứng dụng. Thay vào đó,
chúng ta cần một môi trƣờng cơ sở dữ liệu7 có sự tham gia của nhiều
thành phần gồm phần cứng, phần mềm, dữ liệu, thủ tục và con người.
Trong đó phần mềm quản lý cơ sở dữ liệu chuyên dụng, gọi là hệ quản trị
cơ sở dữ liệu, đóng một vai trò quan trọng.
Định nghĩa 1.2
Hệ quản trị cơ sở dữ liệu là một hệ thống phần mềm cho phép người dùng
định nghĩa, tạo và bảo tồn cơ sở dữ liệu; cũng cung cấp việc truy cập có
kiểm soát đến cơ sở dữ liệu.
Từ định nghĩa chúng ta thấy, về cơ bản, nhiệm vụ chính của hệ quản trị là
tạo, bảo tồn cơ sở dữ liệu và kiểm soát việc truy cập đến cơ sở dữ liệu.
Thông qua ngôn ngữ định nghĩa dữ liệu, hệ quản trị cho phép ngƣời dùng
định nghĩa cơ sở dữ liệu. Thông qua ngôn ngữ thao tác dữ liệu, hệ quản
trị cho phép ngƣời dùng thêm, xoá, sửa và lấy lại dữ liệu.
Với cơ chế truy cập có kiểm soát, hệ quản trị cơ sở dữ liệu bảo đảm đƣợc
tính bảo mật, tính toàn vẹn dữ liệu, điều khiển sự tƣơng tranh, khôi phục
trạng thái toàn vẹn trƣớc đó khi có lỗi xảy ra ở phần cứng hoặc phần mềm.
Để dữ liệu thực sự độc lập với ứng dụng, hệ quản trị cơ sở dữ liệu còn cung
cấp cơ chế khung nhìn cho ngƣời dùng cuối. Nhờ đó bảo đảm thực hiện
độc lập dữ liệu, hơn nữa cơ chế này cũng cho phép tăng cƣờng tính bảo
mật và tính toàn vẹn dữ liệu.
3.2. Môi trƣờng cơ sở dữ liệu
Nhƣ đã đƣợc đề cập, môi trƣờng cơ sở dữ liệu bao gồm: phần cứng, phần
mềm, dữ liệu, thủ tục và con người.
Phần cứng
Bao gồm tất cả các thiết bị vật lý mà chủ yếu là máy tính và các thiết bị
ngoại vi. Chúng có thể đƣợc nối với nhau trong một hệ thống mạng cho
phép thực hiện các truy xuất từ xa. Mỗi hệ quản trị cơ sở dữ liệu đòi hỏi
phần cứng phù hợp. Ngoài ra yêu cầu về phần cứng, trên từng máy và trên
toàn hệ thống mạng, còn phụ thuộc vào chính yêu cầu của tổ chức.
7 Một số tài liệu còn gọi là hệ thống cơ sở dữ liệu.
![Page 28: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/28.jpg)
12 Giáo trình cơ sở dữ liệu
Phần mềm
Thƣờng vẫn đƣợc hiểu là hệ quản trị cơ sở dữ liệu, nhƣng trong trƣờng hợp
tổng quát chúng còn bao gồm cả hệ điều hành, các chƣơng trình ứng dụng
và các phần mềm tiện ích. Vì vai trò quan trọng của hệ quản trị cơ sở dữ
liệu, chúng ta nên có thêm sự hiểu biết về nó. Hệ quản trị cơ sở dữ liệu
đƣợc phân loại theo các tiêu chí: số ngƣời dùng, số vị trí lƣu trữ và kiểu sử
dụng, nhƣ sau:
1. Phân loại tùy theo số người dùng gồm một ngƣời dùng hay nhiều
ngƣời dùng. Hệ một ngƣời dùng chỉ cho phép một ngƣời dùng tại
một thời điểm và nếu chỉ dùng một máy tính ta sẽ gọi là hệ cơ sở dữ
liệu desktop. Hệ nhiều ngƣời dùng hỗ trợ nhiều ngƣời dùng tại cùng
một thời điểm và nếu nó đƣợc dùng trong một công ty ta sẽ gọi là
cơ sở dữ liệu công ty.
2. Phân loại tùy theo số số vị trí lưu trữ gồm tập trung hay phân tán.
Hệ cơ sở dữ liệu tập trung chỉ cho phép lƣu dữ liệu tại một vị trí
duy nhất, trong lúc hệ cơ sở dữ liệu phân tán hỗ trợ lƣu dữ liệu tại
nhiều vị trí.
3. Phân loại tùy theo kiểu sử dụng gồm giao dịch hay trợ giúp quyết
định8. Hệ cơ sở dữ liệu giao dịch hỗ trợ các giao dịch hàng ngày
lƣu các dữ liệu giao dịch và ngay lập tức, trong lúc hệ cơ sở dữ liệu
trợ giúp quyết định lƣu trữ các dữ liệu mang tích lịch sử để hỗ trợ
các quyết định, phát sinh các dự báo, đánh giá thị trƣờng, …
Ví dụ 1.5
Một công ty có một hệ thống khách sạn trên khắp nƣớc. Với mỗi khách
sạn, khách hàng ở bất cứ đâu cũng có thể biết những thông tin cần thiết và
thực hiện thao tác giữ chỗ trƣớc. Ngƣời quản lý không cần đến các khách
sạn cũng biết tình hình hoạt động của chúng, yêu cầu cung cấp thông tin và
điều hành hệ thống. Khi ấy cơ sở dữ liệu thuộc loại nhiều người dùng,
phân tán và giao dịch.
Ngƣời dùng
Gồm tất cả các ngƣời dùng đƣợc phân loại theo chức năng nhƣ quản trị dữ
liệu, quản trị cơ sở dữ liệu, thiết kế cơ sở dữ liệu, lập trình ứng dụng và
ngƣời dùng cuối.
8 Còn đƣợc gọi là kho dữ liệu. Với kho dữ liệu, dữ liệu hầu nhƣ không thay đổi và có dung
lƣợng rất lớn nên cần đƣợc tổ chức theo mô hình riêng để hỗ trợ tốt việc khai thác.
![Page 29: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/29.jpg)
Chƣơng 1: Tổng quan về cơ sở dữ liệu 13
Chúng ta cần làm rõ các vai trò này.
1. Vai trò quản trị. Cơ sở dữ liệu và hệ quản trị cơ sở dữ liệu cũng là
các tài nguyên cần đƣợc quản lý. Quản trị dữ liệu có nhiệm vụ lên
kế hoạch xây dựng cơ sở dữ liệu, bảo đảm các chuẩn theo quy định,
đƣa ra các chính sách các thủ tục cho thiết kế logic, tƣ vấn cho nhà
quản lý, định hƣớng phát triển và hỗ trợ tối đa cho các mục tiêu của
tổ chức. Quản trị cơ sở dữ liệu có nhiệm vụ xây dựng cơ sở dữ
liệu, kiểm soát tính bảo mật và toàn vẹn, bảo đảm các yêu cầu của
ứng dụng và ngƣời dùng.
2. Vai trò thiết kế. Trong dự án lớn chúng ta phân biệt 2 kiểu thiết kế:
thiết kế logic và thiết kế vật lý. Thiết kế logic tập trung vào mô
hình hoá dữ liệu gồm dữ liệu, quan hệ và quy tắc. Họ phải hiểu đầy
đủ dữ liệu của tổ chức và các quy tắc quản lý. Để hiệu quả họ phải
tính đến những ngƣời dùng trong tƣơng lai trong sự phát triển của
mô hình dữ liệu. Kết quả thiết kế cần độc lập với hệ quản trị và chi
tiết cài đặt. Thiết kế vật lý tiếp nhận mô hình dữ liệu và quyết định
cách cài đặt mô hình dữ liệu cũng nhƣ chuyển các quy tắc quản lý
thành các ràng buộc dữ liệu. Chọn cấu trúc lƣu trữ và phƣơng thức
truy xuất, thiết kế các mức bảo mật dữ liệu theo yêu cầu.
3. Vai trò lập trình. Khi cơ sở dữ liệu đƣợc cài đặt, các chƣơng trình
ứng dụng cung cấp những chức năng cho ngƣời dùng cuối phải
đƣợc viết ra. Đây là công việc của lập trình viên ứng dụng.
Thƣờng thì họ viết ứng dụng theo đặc tả của nhân viên phân tích
dùng các ngôn ngữ thuộc thế hệ thứ 3 hoặc 4.
4. Vai trò người dùng cuối, thƣờng đƣợc chia làm 2 loại. Loại không
biết gì về cơ sở dữ liệu, truy cập cơ sở dữ liệu qua các chƣơng trình
ứng dụng đƣợc viết thật đơn giản dễ sử dụng. Loại có biết về cơ sở
dữ liệu, có khả năng dùng ngôn ngữ cấp cao truy vấn dữ liệu, thậm
chí viết đƣợc các ứng dụng riêng.
Dữ liệu
Là toàn bộ dữ liệu đƣợc lƣu trong cơ sở dữ liệu. Từ quan điểm ngƣời dùng
cuối, dữ liệu là thành phần quan trọng nhất của môi trƣờng cơ sở dữ liệu.
![Page 30: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/30.jpg)
14 Giáo trình cơ sở dữ liệu
Tuy nhiên, việc xác định dữ liệu nào cần lƣu và cách tổ chức chúng là công
việc của nhà thiết kế9.
Thủ tục
Là các chỉ thị, các luật chi phối việc thiết kế và sử dụng hệ thống cơ sở dữ
liệu. Chúng có vai trò quan trọng trong một tổ chức, bảo đảm kiểm soát
đƣợc toàn bộ dữ liệu trong cơ sở dữ liệu.
Ví dụ 1.6
Xét một hệ thống cho thuê băng đĩa có dung lương dữ liệu nhỏ và các thủ
tục là đơn giản, ta chỉ cần hai ngƣời dùng chung một máy tính để bàn với
tính năng vừa phải. Còn với một hệ thống bảo hiểm của ngân hàng có dung
lương dữ liệu đồ sộ cùng nhiều thủ tục chặt chẽ và phức tạp, ta cần ít nhất
một quản trị hệ thống, vài chuyên viên quản trị cơ sở dữ liệu làm toàn thời
gian, nhiều nhân viên thiết kế và lập trình cùng làm việc trong một mạng
máy tính diện rộng.
3.3. Mô hình dữ liệu
Một cơ sở dữ liệu tốt nếu nhƣ nó đƣợc thiết kế tốt. Kết quả thiết kế cho ta
mô hình cơ sở dữ liệu. Lập mô hình là cách tốt nhất để đảm bảo tính hệ
thống của cơ sở dữ liệu giúp dữ liệu đƣợc nhất quán và đầy đủ đáp ứng
đƣợc yêu cầu quản lý10
.
Định nghĩa 1.3
Mô hình dữ liệu là mô hình trừu tượng của dữ liệu cho phép người dùng
nhìn thấy dữ liệu dưới các cấu trúc thuật ngữ dễ hiểu mà ta gọi là lược đồ.
Mô hình dữ liệu gồm có:
1. Tập các ký hiệu dùng để mô tả dữ liệu, và
2. Tập các quy định xác định cách sử dụng các ký hiệu
Mô hình dữ liệu đƣợc phân làm hai loại chính: mô hình theo hướng quan
niệm và mô hình theo hướng cài đặt11
.
9 Nhƣ đã đề cập trong định nghĩa cơ sở dữ liệu, dữ liệu ở đây bao gồm cả dữ liệu về dữ
liệu. Chúng ta cần phát triển các ngôn ngữ mô hình hoá đồng thời yêu cầu hệ quản trị cơ
sở dữ liệu hỗ trợ ít nhất một mô hình để giúp quản lý cơ sở dữ liệu hiệu quả. 10 Trong phạm vi môn học, chúng ta sẽ tập trung vào việc thiết kế cơ sở dữ liệu. 11
Còn đƣợc gọi là mô hình vật lý. Trong tài liệu này, việc thêm cụm từ “theo hướng”
nhằm phân biệt với thuật ngữ dùng trong kiến trúc ANSI-SPARC.
![Page 31: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/31.jpg)
Chƣơng 1: Tổng quan về cơ sở dữ liệu 15
Mô hình dữ liệu mức quan niệm tập trung vào tính logic của biểu diễn dữ
liệu. Nó trả lời cho câu hỏi cái gì được biểu diễn trong cơ sở dữ liệu. Trong
khi mô hình cài đặt lại nhấn mạnh đến cách biểu diễn dữ liệu và cách cài
đặt các cấu trúc trong cơ sở dữ liệu.
Sau đây, chúng ta sẽ tìm hiểu sơ lƣợc vài mô hình theo hƣớng cài đặt (mô
hình phân cấp, mô hình mạng và mô hình quan hệ) và vài mô hình theo
hƣớng quan niệm (mô hình thực thể kết hợp và mô hình hƣớng đối tƣợng);
cũng vẫn dùng dữ liệu ở ví dụ 1 để minh họa.
Tại điểm này, chúng tôi muốn làm rõ thêm một thuật ngữ vẫn thƣờng đƣợc
sử dụng: thuật ngữ mô hình logic. Nhƣ đã đƣợc đề cập, trong mô hình
chúng ta sử dụng các cấu trúc lƣợc đồ. Theo hƣớng quan niệm các lƣợc đồ
tập trung vào tính logic của biểu diễn dữ liệu. Theo hƣớng cài đặt các lƣợc
đồ tập trung vào mô tả cách cài đặt các cấu trúc này. Do đó mô hình vật lý
là mô hình theo hƣớng cài đặt. Tuy nhiên, trong tài liệu này, các mô hình
cài đặt mà những chi tiết mô tả trong các lƣợc đồ vẫn chƣa quan tâm thật
sự đến việc cài đặt sẽ đƣợc gọi là các lược đồ logic và mô hình lúc này sẽ
đƣợc gọi là mô hình logic. Trong các mô hình cài đặt dƣới đây, các lƣợc đồ
logic đƣợc sử dụng.
Mô hình theo hƣớng cài đặt
Mô hình phân cấp. Đƣợc đƣa ra vào đầu những năm 60. Trong mô hình, dữ
liệu đƣợc mô tả bởi cấu trúc cây. Trong đó kiểu dữ liệu của mỗi đỉnh là
kiểu mẩu tin xác định cấu trúc của tập tin lƣu trữ; còn các cạnh mô tả mối
quan hệ cha con (là các mối quan hệ 1-nhiều)
Ví dụ 1.7
Dữ liệu của bài toán cho ở ví dụ 2 có thể đƣợc biểu diễn theo mô hình phân
cấp nhƣ sau:
![Page 32: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/32.jpg)
16 Giáo trình cơ sở dữ liệu
phụ cấp quản lý lương cơ bản thù lao mỗi tiết hệ số mời
1800 450 50 0.5
họ tên hệ số lương
Minh 3
họ tên hệ số lương họ tên hệ số lương
Lan 3 Hùng 2
họ tên
Thảo
môn số tiết số lớp
Internet 20 2
môn số tiết số lớp
kỹ thuật bàn phím 15 1
môn số tiết số lớp
Internet 20 1
môn số tiết số lớp
kỹ thuật bàn phím 15 1
Hình ảnh cây thƣ mục cho ta thấy cách tổ chức theo mô hình phân cấp.
Trong ví dụ trên chúng ta quan sát thấy có các mẩu tin; mỗi mẩu có thể có
các mẩu tin con. Bỏ qua dữ liệu, chỉ giữ lại các cấu trúc mẩu tin (còn gọi là
![Page 33: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/33.jpg)
Chƣơng 1: Tổng quan về cơ sở dữ liệu 17
lƣợc đồ12
), chúng ta nhìn thấy mô hình ở mức trừu tƣợng hơn, cho phép
nhìn thấy các ký hiệu và cách thức xây dựng mô hình.
Vào những năm cuối của thập niên 60, ngƣời ta đã cố gắng khởi tạo mô
hình mạng nhƣ là một cải tiến của mô hình phân cấp. Đến tháng 4 năm
1971, các nền tảng của mô hình mạng đã đƣợc công bố. Trong tiếp cận
này, chúng ta dùng đồ thị có hƣớng để mô tả dữ liệu. Giống nhƣ mô hình
phân cấp, kiểu dữ liệu của mỗi đỉnh là kiểu mẩu tin và các cạnh (có hƣớng)
mô tả mối quan hệ 1-nhiều. Tuy nhiên vì đây là đồ thị nên chúng ta có thể
mô tả các mối quan hệ nhiều-nhiều, vốn cho phép mô tả nhiều mối quan hệ
phức tạp.
Ví dụ 1.8
Dữ liệu của bài toán cho ở ví dụ 2 có thể đƣợc biểu diễn theo mô hình
mạng nhƣ sau:
phụ cấp quản lý lương cơ bản thù lao mỗi tiết hệ số mời
1800 450 50 0.5
họ tên hệ số lương
Minh 3
họ tên hệ số lương họ tên hệ số lương
Lan 3 Hùng 2
họ tên
Thảo
môn số tiết môn số tiết
kỹ thuật bàn phím 15 Internet 20
Trên đây, mũi tên hai đầu hàm ý có hai hƣớng giữa 2 mẩu tin.
12 Theo thói quen, với mô hình cài đặt chúng ta hay dùng thuật ngữ cấu trúc thay cho lƣợc
đồ.
![Page 34: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/34.jpg)
18 Giáo trình cơ sở dữ liệu
Mô hình quan hệ đƣợc đƣa ra vào đầu những năm 70 bởi E.F.Codd và trở
nên thông dụng vì tính mềm dẻo của nó. Trong mô hình này dữ liệu đƣợc
mô tả theo một cách tự nhiên hơn. Dữ liệu đƣợc lƣu trong các bảng gọi là
quan hệ. Ta mô hình hoá cơ sở dữ liệu bằng cách mô tả cấu trúc của các
bảng.
Ví dụ 1.9
Dữ liệu của bài toán cho ở ví dụ 2 có thể đƣợc biểu diễn theo mô hình quan
hệ nhƣ sau:
id họ tên hệ số
lương
id mid số
lớp
mid Môn số
tiết
QL Minh 3 G1 Int 1 BP kỹ thuật
bàn phím
15
G1 Lan 3 G1 BP 1 Int Internet 20
G2 Hùng 2 G2 BP 1
M1 Thảo M1 Int 2
Mô hình theo hƣớng quan niệm
Trong mô hình dữ liệu mức quan niệm chúng ta cũng vẫn làm việc với các
lƣợc đồ.
Mô hình thực thể kết hợp (ERM – Entity Relationship Model) . Mô hình
dùng thực thể để mô tả dữ liệu và mối kết hợp để mô tả các liên kết giữa
các dữ liệu.
Ví dụ 1.10
Với dữ liệu của bài toán cho ở ví dụ 2 chúng ta quan sát thấy có 2 thực thể
Người Lãnh Lương và Môn Học; giữa chúng tồn tại mối kết hợp Giảng
dạy. Chúng ta có lƣợc đồ:
Người Lãnh Lương Môn Học
id
họ tên
hệ số lƣơng
Giảng dạy mid
số tiết
Mô hình hướng đối tượng. Mô hình cho phép mô tả dữ liệu gần với tính
phức tạp thực sự của chúng trong thế giới thực. Mô hình ban đầu đƣợc gọi
là mô hình dữ liệu ngữ nghĩa (SDM – Sematic Data Model, M.Hammer
và D.McLeod, 1981). Nó dùng cấu trúc đối tƣợng để mô tả cả dữ liệu lẫn
mối liên hệ giữa chúng nên còn đƣợc gọi là mô hình dữ liệu hƣớng đối
![Page 35: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/35.jpg)
Chƣơng 1: Tổng quan về cơ sở dữ liệu 19
tƣợng (OODM – Object Oriented Data Model). Đến lƣợt nó, OODM trở
thành cơ sở của mô hình cơ sở dữ liệu hƣớng đối tƣợng (OODBM –
Object Oriented DataBase Model) và đƣợc quản lý bởi hệ quản trị cơ sở dữ
liệu hƣớng đối tƣợng (OODBMS). Trong tiếp cận này, các đối tƣợng tùy
theo mức trừu tƣợng đƣợc mô tả trong một cấu trúc gọi là lớp (class). Các
lớp đƣợc nối với nhau qua các quan hệ kết hợp (giống mô hình thực thể kết
hợp) và các quan hệ thừa kế (cho phép mô tả đối tƣợng với nhiều cấp độ
trừu tƣợng)
Ví dụ 1.11
Với dữ liệu của bài toán cho ở ví dụ 2 chúng ta quan sát thấy có 4 đối
tƣợng Người Lãnh Lương và 2 đối tƣợng Môn Học.
Các đối tƣợng ngƣời lãnh lƣơng có thể đƣợc phân hoạch thành {Quản Lý,
Giảng Viên Cơ Hữu, Giảng Viên Mời} với các phƣơng thức tính lƣơng
khác nhau.
Ghép {Quản Lý, Giảng Viên Cơ Hữu} thành Nhân Viên, {Giảng Viên Cơ
Hữu, Giảng Viên Mời} thành Giảng Viên, cùng với mối kết hợp Giảng dạy
giữa Giảng Viên và Môn Học.
Chúng ta có lƣợc đồ sau:
Người L.Lương
họ tên
Nhân Viên Giảng Viên Môn Học
hệ số lƣơng
lƣơng cơ bản
Tính lƣơng()
thù lao tên môn
số tiết
Quản Lý GViên Cơ Hữu GViên Mời
phụ cấp Tính lƣơng() hệ số mời
Tính lƣơng()
Việc quản lý tập trung dữ liệu và làm nó tách khỏi các chƣợng trình ứng
dụng càng trở nên hiệu quả nếu nhƣ có khả năng trừu tƣợng hoá dữ liệu ở
mức cao. Sự trừu tƣợng hoá không những tăng cƣờng hiệu quả quản lý mà
![Page 36: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/36.jpg)
20 Giáo trình cơ sở dữ liệu
còn giúp tƣ duy tốt. Sự trừu tƣợng hoá thƣờng có nhiều cấp độ. Trong cơ
sở dữ liệu, sự trừu tƣợng hoá đƣợc chia thành 3 mức: mức quan niệm, mức
trong và mức ngoài 13
.
Mô hình mức quan niệm. Là sự trừu tƣợng hoá phần thế giới thực có liên
quan đến những ngƣời sử dụng cơ sở dữ liệu. Mức này cho ta cái nhìn toàn
cục của dữ liệu, là cơ sở để xác định và mô tả các đối tƣợng nhưng bỏ qua
các chi tiết. Nó biễu diễn toàn bộ nội dung thông tin của cơ sở dữ liệu,
đƣợc xác định bằng lƣợc đồ quan niệm định nghĩa chỉ nội dung thông tin
mà không chứa bất cứ một chi tiết nào về phép lƣu trữ cũng nhƣ chiến lƣợc
truy xuất. Mức quan niệm dùng để biểu diễn khía cạnh logic của cơ sở dữ
liệu:
13 Vào năm 1971, tại hội nghị CODASYL (Conference on Data Systems and Languages), nhóm DBTG (Data Base Task Group) đã đƣa ra một tiếp cận 2 mức: mức lƣợc đồ
(schema) dành cho hệ thống và mức lƣợc đồ con (subschemas) dành cho ngƣời dùng. Kiến
trúc 3 mức do 2 tổ chức ANSI (American National Standards Institute) và SPARC
(Standards Planning and Requirements Committee) hợp nhất đƣa ra vào năm 1975. Mặc
dù không trở thành một chuẩn, nhƣng kiến trúc ANSI/SPARC vẫn cung cấp một cơ sở để
hiểu các chức năng của hệ quản trị cơ sở dữ liệu.
…
Conceptual
schema
Internal
schema
user 1 user 2 user n
View 1 View 2 View n
Database
Mức ngoài
Mức quan niệm
Mức trong
![Page 37: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/37.jpg)
Chƣơng 1: Tổng quan về cơ sở dữ liệu 21
Các thực thể, thuộc tính và các mối kết hợp14
;
Các ràng buộc dữ liệu;
Ngữ nghĩa của dữ liệu;
Thông tin bảo mật và nhất quán.
Mô hình mức trong. Mô hình này phụ thuộc hệ quản trị cơ sở dữ liệu, do đó
chúng ta phải chọn hệ quản trị cơ sở dữ liệu trƣớc rồi mới đƣa ra mô hình
trong. Một hệ quản trị cơ sở dữ liệu luôn có các lược đồ trong mô tả các
kiểu mẩu tin, các chỉ mục, các trƣờng lƣu trữ cũng nhƣ thứ tự lƣu trữ. Nhƣ
vậy, khi xây dựng mô hình trong, ngƣời thiết kế cơ sở dữ liệu phải đặc tả
nó thật chính xác15
.
Mức trong dùng để biểu diễn khía cạnh vật lý của cơ sở dữ liệu, là cách
thức dữ liệu đƣợc lƣu trong cơ sở dữ liệu:
Định vị không gian lƣu trữ cho dữ liệu và các chỉ mục;
Mô tả bản ghi cho việc lƣu trữ;
Cơ chế và chiến lƣợc truy xuất;
Các kỹ thuật nén và mã hoá dữ liệu.
Một hệ quản trị cơ sở dữ liệu sẽ cung cấp một ngôn ngữ định nghĩa dữ liệu
để mô tả mức này đồng thời cài đặt cấu trúc cho cơ sở dữ liệu vật lý.
Mô hình mức ngoài. Mô hình mức này còn đƣợc gọi là view (user view)
hay lƣợc đồ con. Có thể xem view nhƣ là quan niệm của một ngƣời dùng
cụ thể về cơ sở dữ liệu. Mỗi mô hình ngoài đều đƣợc xác định bởi một
lƣợc đồ ngoài16
.
14 Trong tài liệu này, chúng ta sẽ dùng mô hình thực thể kết hợp để đƣa ra mô hình dữ liệu
mức quan niệm gồm các lƣợc đồ quan niệm và gọi là các lƣợc đồ thực thể kết hợp (ERD –
Entity Relationship Diagram). Chính xác hơn, lược đồ thực thể kết hợp là loại lược đồ thường dùng để mô hình theo hướng quan niệm. Trong tài liệu này, chúng tôi đồng nhất
mô hình theo hướng quan niệm với mô hình mức quan niệm. 15 Trong tài liệu này, chúng tôi dùng mô hình quan hệ để mô tả các lƣợc đồ mức trong và
gọi là các lƣợc đồ quan hệ (RD – Relation Diagram). Chính xác hơn, lược đồ quan hệ là
loại lược đồ thường dùng để mô hình theo hướng vật lý. Tuy nhiên, chúng ta sẽ không đi
vào chi tiết các mô tả mức vật lý (ngƣời đọc có thể đọc thêm trong các tài liệu về hệ quản trị cơ sở dữ liệu) mà chỉ dừng lại ở các lƣợc đồ logic. Trong tài liệu này, chúng tôi đồng
nhất mô hình (logic) theo hướng vật lý với mô hình mức trong. 16 Thƣờng chúng ta sẽ dùng mô hình thực thể kết hợp để mô tả mỗi mức ngoài. Thực tế,
trong quá trình xác định các lƣợc đồ quan niệm, các lƣợc đồ ngoài đƣợc xác định trƣớc.
Nhƣ vậy việc dùng các lƣợc đồ thực thể kết hợp biểu diễn mức ngoài sẽ giúp chúng ta xây
dựng các lƣợc đồ mức quan niệm đƣợc dễ dàng hơn. Tuy nhiên, theo một quan điểm khác,
![Page 38: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/38.jpg)
22 Giáo trình cơ sở dữ liệu
Mặc khác, bằng cách đặc tả các lƣợc đồ ngoài, chúng ta có đƣợc một số
thuận lợi:
1. Nếu có một chƣợng trình ứng dụng dùng toàn bộ các mối kết hợp
trong cơ sở dữ liệu, nó sẽ làm cản trở việc phát triển hệ thống.
2. Các lƣợc đồ con giúp ngƣời thiết kế dễ dàng hơn trong xác định dữ
liệu dùng trong mỗi chƣợng trình ứng dụng
3. Các lƣợc đồ con giúp ngƣời thiết kế kiểm tra tính đầy đủ của mô
hình quan niệm
4. Các lƣợc đồ con giúp kiểm tra tính an toàn và toàn vẹn của mô hình
trong
Hầu hết các hệ quản trị cơ sở dữ liệu đều cung cấp một công cụ để mô tả
view còn được gọi là ngôn ngữ định nghĩa dữ liệu lược đồ con. Kiến trúc 3
mức này cho phép thực hiện tính độc lập dữ liệu. Nhƣ vậy chúng ta có 2
kiểu độc lập dữ liệu: logic và vật lý.
Độc lập dữ liệu logic. Là việc thay đổi mô hình quan niệm không ảnh
hƣởng đến mô hình ngoài. Tức là việc xuất hiện thêm, thậm chí loại bớt,
các thực thể các kết hợp đều không ảnh hƣởng đến các lƣợc đồ ngoài.
Độc lập dữ liệu vật lý. Là việc thay đổi mô hình trong không ảnh hƣởng
đến mô hình quan niệm. Tức là việc thay đổi thiết bị lƣu trữ, cấu trúc lƣu
trữ hay chiến lƣợc truy xuất đều không ảnh hƣởng đến các lƣợc đồ quan
niệm.
Ví dụ 1.12
Xét cơ sở dữ liệu nhân viên:
Hai lƣợc đồ ngoài
Mã NV Họ Tên Tuổi Lƣơng Mã NV Tên Đơn vị
Lƣợc đồ quan niệm:
Mã NV Họ Tên Ngày sinh Lƣơng Đơn vị
đặc biệt khi làm việc với mô hình cơ sở dữ liệu quan hệ, mô hình ngoài (user view) đƣợc
mô tả bởi một tập các quan hệ (cũng đƣợc gọi là view).
![Page 39: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/39.jpg)
Chƣơng 1: Tổng quan về cơ sở dữ liệu 23
Lƣợc đồ trong:
struct Nhan_Vien {
int MaNV;
int DonVi;
char Ho[15];
char Ten[5];
struct date Ngay_Sinh;
float Luong;
struct Nhan_Vien *next;
};
index MaNV;
index DonVi;
Với một hệ quản trị cơ sở dữ liệu cụ thể chúng ta sử dụng ngôn ngữ cơ sở
dữ liệu với chỉ vài lệnh là đã vừa mô tả các lƣợc đồ vừa đặt ra các yêu cầu
lƣu trữ và chiến lƣợc truy xuất để hệ quản trị cơ sở dữ liệu tạo ra cơ sở dữ
liệu vật lý.
4. Tổng quan về hệ quản trị cơ sở dữ liệu
Trong định nghĩa cơ sở dữ liệu chúng ta có nói đến các chức năng chính
của hệ quản trị cơ sở dữ liệu. Mục này nhằm thảo luận các chức năng đó
một cách chi tiết hơn. Vì hầu hết các chức năng của hệ quản trị cơ sở dữ
liệu là trong suốt đối với ngƣời dùng, định nghĩa sau đƣợc phát biểu dƣới
góc độ ngƣời dùng.
Định nghĩa 1.4
Hệ quản trị cơ sở dữ liệu là một phần mềm quản lý cấu trúc của cơ sở dữ
liệu và kiểm soát việc truy xuất dữ liệu, bao gồm các chức năng:
1. Tạo và bảo toàn cơ sở dữ liệu.
2. Cho phép truy xuất cơ sở dữ liệu theo thẩm quyền.
3. Phục hồi dữ liệu theo yêu cầu.
4. Cập nhật dữ liệu.
Nhƣ vậy nhiệm vụ chính của hệ quản trị cơ sở dữ liệu là quản lý dữ liệu
hiệu quả cho nên một hệ quản trị cơ sở dữ liệu phải thực hiện các chức
năng quan trọng nhằm đảm bảo tính toàn vẹn và nhất quán của dữ liệu
trong cơ sở dữ liệu. Nó có hai khả năng chính là khả năng quản lý bền
vững dữ liệu và khả năng truy xuất một số lượng lớn dữ liệu một cách hiệu
quả.
![Page 40: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/40.jpg)
24 Giáo trình cơ sở dữ liệu
4.1. Chức năng
Hệ quản trị cơ sở dữ liệu có các chức năng sau17
:
Quản lý tự điển dữ liệu. Hệ quản trị quản lý tất cả các dữ liệu dùng để mô
tả dữ liệu18
. Nó lƣu các định nghĩa về cấu trúc và quan hệ trong tự điển dữ
liệu. Cho phép thực hiện trừu tƣợng hoá dữ liệu nhằm đảm bảo tính độc lập
dữ liệu và độc lập cấu trúc.
Quản lý lưu trữ. Hệ quản trị tạo ra các cấu trúc phức tạp để lƣu trữ từ
những dữ liệu cơ bản đơn giản đến các dữ liệu phức tạp, từ các định nghĩa
về biểu mẫu, biểu báo đến các ràng buộc dữ liệu và các đoạn mã chƣơng
trình.
Quản lý nhập xuất. Hệ quản trị biến đổi dữ liệu vào phù hợp với cấu trúc
lƣu trữ, nhờ đó ta không cần quan tâm đến định dạng vật lý của dữ liệu, và
kết xuất dữ liệu ra theo các yêu cầu logic của ngƣời dùng.
Quản lý bảo mật. Hệ quản trị tạo ra một hệ thống bảo mật kiểm soát quyền
sử dụng của ngƣời dùng.
Điều khiển truy xuất nhiều người dùng. Hệ quản trị tạo ra các cấu trúc phức
tạp dùng các giải thuật tinh vi nhằm bảo đảm cơ sở dữ liệu luôn luôn nhất
quán
Quản lý sao lưu và phục hồi cơ sở dữ liệu. Hệ quản trị cung cấp các thủ tục
sao lƣu và phục hồi dữ liệu đảm bảo dữ liệu an toàn và toàn vẹn khi xảy ra
sự cố hoặc khi có yêu cầu từ ngƣời dùng.
Quản lý sự toàn vẹn dữ liệu. Hệ quản trị cung cấp cơ chế nhằm giảm dƣ
thừa và tăng sự nhất quán, đặc biệt trong cơ sở dữ liệu nhiều ngƣời dùng.
17 Codd liệt kê 8 dịch vụ của một hệ quản trị cơ sở dữ liệu đầy đủ (1982):
1. Hỗ trợ giao tác
2. Kiểm soát tƣơng tranh
3. Phục hồi dữ liệu khi có sự cố
4. Kiểm soát đặc quyền của ngƣời dùng
5. Hỗ trợ truyền thông dữ liệu
6. Bảo đảm tính toàn vẹn
7. Bảo đảm tính độc lập dữ liệu
8. Cung cấp các tiện ích cho ngƣời quản trị cơ sở dữ liệu 18 Thuật ngữ metadata nghĩa là dữ liệu về dữ liệu hay dữ liệu dùng để mô tả dữ liệu.
![Page 41: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/41.jpg)
Chƣơng 1: Tổng quan về cơ sở dữ liệu 25
Ngôn ngữ truy xuất cơ sở dữ liệu và giao diện (interface) lập trình ứng
dụng. Hệ quản trị cung cấp cơ chế truy xuất dữ liệu qua ngôn ngữ truy xuất
cơ sở dữ liệu là ngôn ngữ hỏi gồm: ngôn ngữ định nghĩa dữ liệu DDL và
ngôn ngữ thao tác dữ liệu DML. Nó cũng cung cấp các giao diện cho các
ngôn ngữ lập trình.
Giao diện giao tiếp với cơ sở dữ liệu. Hệ quản trị cung cấp các thủ tục giao
tiếp đặc biệt đƣợc thiết kế cho phép cơ sở dữ liệu đáp ứng các yêu cầu của
ngƣời dùng cuối trong môi trƣờng mạng.
4.2. Thành phần
DBMS
Tiền xử lý
DML
Xử lý
truy vấn
Lập trình viên Người dùng Quản trị cơ sở dữ liệu
Chƣơng
trình UD Truy vấn Lƣợc đồ cơ
sở dữ liệu
Cơ sở dữ liệu và
tự điển dữ liệu
Biên dịch
DDL
Mã chƣơng
trình
Quản lý
DB
Quản lý
DD
Phƣơng thức
truy xuất
Quản lý
tập tin
Vùng đệm
hệ thống
![Page 42: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/42.jpg)
26 Giáo trình cơ sở dữ liệu
Hệ quản trị cơ sở dữ liệu có các thành phần sau:
1. Tiền xử lý ngôn ngữ thao tác dữ liệu;
2. Xử lý truy vấn;
3. Biên dịch ngôn ngữ định nghĩa dữ liệu;
4. Mã đối tượng chương trình;
5. Quản lý cơ sở dữ liệu;
6. Quản lý từ điển dữ liệu;
7. Quản lý tập tin.
Kiểm tra
toàn vẹn
Xử lý
truy vấn
Quản lý
dữ liệu
Quản lý
giao tác
Kiểm soát
đặc quyền
Quản lý
lịch
Tối ƣu
truy vấn
Mã chƣơng
trình
Xử lý lệnh
Quản lý
DD
Quản lý tập
tin
DM
Quản lý
vùng đệm
Quản lý
phục hồi
![Page 43: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/43.jpg)
Chƣơng 1: Tổng quan về cơ sở dữ liệu 27
Trong đó chi tiết thành phần của bộ quản lý cơ sở dữ liệu với 8 thành phần
con:
1. Kiểm soát đặc quyền;
2. Kiểm tra toàn vẹn;
3. Xử lý lệnh;
4. Tối ưu truy vấn;
5. Quản lý giao tác;
6. Quản lý lịch;
7. Quản lý phục hồi;
8. Quản lý vùng đệm.
![Page 44: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/44.jpg)
28 Giáo trình cơ sở dữ liệu
TÓM TẮT
Để quản lý hiệu quả dữ liệu của tổ chức cần thực hiện tiếp cận cơ
sở dữ liệu;
Tiếp cận cơ sở dữ liệu hình thành một môi trƣờng cơ sở dữ liệu
gồm: dữ liệu (thành phần quan trọng nhất), phần cứng, phần mềm
(trong đó quan trọng nhất là hệ quản trị cơ sở dữ liệu), ngƣời dùng
và thủ tục;
Với tiếp cận cơ sở dữ liệu, dữ liệu đƣợc quản lý riêng, cho phép
dùng mô hình để biểu diễn và đặc tả, cũng cho phép xây dựng ngôn
ngữ cơ sở dữ liệu để cài đặt và thao tác;
Kiến trúc cơ sở dữ liệu 3 mức cho phép tách biệt các vai trò, cho
phép thực hiện tính độc lập dữ liệu;
Mô hình thực thể kết hợp thƣờng đƣợc dùng để mô hình cơ sở dữ
liệu mức ngoài và mức quan niệm;
Mô hình quan hệ thƣờng đƣợc dùng để mô hình cơ sở dữ liệu mức
trong;
Cơ chế khung nhìn không những hỗ trợ thực hiện độc lập dữ liệu
mà còn hỗ trợ thực hiện bảo mật dữ liệu;
Hệ quản trị cơ sở dữ liệu giúp ngƣời dùng thực hiện các vai trò của
mình dễ dàng nhƣng hiệu quả;
Hệ quản trị cơ sở dữ liệu bảo đảm giải quyết các vấn đề nảy sinh
khi thực hiện tiếp cận cơ sở dữ liệu: bảo tồn, truy xuất và bảo mật;
Hệ quản trị cơ sở dữ liệu hỗ trợ mô hình, theo hƣớng cài đặt, bảo
đảm đầy đủ các đặc trƣng độc lập dữ liệu, không dư thừa, nhất
quán, toàn vẹn, an toàn và chia sẻ.
![Page 45: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/45.jpg)
Chƣơng 1: Tổng quan về cơ sở dữ liệu 29
5. Giới thiệu các case study
Trong tài liệu này chúng tôi giới thiệu hai case study thuộc về hai lĩnh vực
rất khác nhau. Chúng đủ phức tạp cho phép chúng tôi đƣa ra các ví dụ và
bài tập cho bạn đọc thử sức. Dĩ nhiên không phải tất cả các ví dụ và bài tập
đều đƣợc đƣa ra từ hai case study này.
5.1. Công ty Mỹ Gia
Công ty Mỹ Gia đại diện cho chủ của những ngôi nhà cho thuê. Công ty
cung cấp các dịch vụ nhƣ quảng cáo trên các báo, tạp chí, phỏng vấn khách
hàng, tổ chức xem nhà và đàm phán cho thuê. Công ty cũng đảm nhận việc
kiểm tra nhà định kỳ để bảo đảm tình trạng của nó luôn tốt.
Sau đây là thông tin đƣợc công ty duy trì tại mỗi chi nhánh để hỗ trợ những
hoạt động và quản lý hàng ngày của công ty.
Chi nhánh
Ở hầu hết các tỉnh thành, công ty đều có chi nhánh. Mỗi chi nhánh đều có
một mã riêng, gọi là mã chi nhánh, phân biệt lẫn nhau. Thông tin của chi
nhánh gồm một địa chỉ đầy đủ (số nhà, đƣờng, quận / huyện, tỉnh / thành
phố và mã bƣu điện), một số điện thoại và một số fax.
Nhân viên
Các nhân viên tại mỗi chi nhánh gồm có một trƣởng chi nhánh, một thƣ ký,
một giám sát và các chuyên viên (tối thiểu 5 và tối đa 10). Trƣởng chi
nhánh có nhiệm vụ theo dõi toàn bộ hoạt động của chi nhánh. Giám sát, có
sự hỗ trợ của thƣ ký, giám sát các công việc của chuyên viên. Các chuyên
viên đảm nhận các công việc hàng ngày của chi nhánh.
Mỗi nhân viên đều có một mã riêng, gọi là mã nhân viên, phân biệt lẫn
nhau qua tất cả các chi nhánh. Thông tin của nhân viên gồm họ, tên, địa
chỉ, số điện thoại, giới tính, ngày sinh, số của sổ bảo hiểm, chức vụ, lương
và ngày vào làm. Riêng thƣ ký lƣu thêm tốc độ đánh máy của họ.
Công ty cũng lƣu thông tin của một ngƣời thân của nhân viên gồm họ tên,
quan hệ với nhân viên, địa chỉ và số điện thoại.
Mỗi trƣởng chi nhánh đƣợc cấp một khoảng đi lại hằng năm và một
khoảng thƣởng hằng tháng dựa vào hoạt động trong thị trƣờng cho thuê
nhà này.
![Page 46: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/46.jpg)
30 Giáo trình cơ sở dữ liệu
Nhà cho thuê
Chi nhánh quản lý các nhà cho thuê trong địa bàn của mình, theo đó mỗi
nhà do một chuyên viên theo dõi và mỗi chuyên viên theo dõi không quá
20 nhà. Mỗi nhà đều có một mã riêng, gọi là mã nhà cho thuê, phân biệt
lẫn nhau qua tất cả các chi nhánh. Thông tin của nhà gồm địa chỉ đầy đủ
(số nhà, đƣờng, quận / huyện, tỉnh / thành phố và mã bƣu điện), loại (nhà
hoặc căn hộ, hầu hết các nhà cho thuê là các căn hộ) số phòng và giá thuê
(đƣợc thay đổi mỗi năm).
Khi một nhà thôi không còn cho thuê nữa, thông tin của nó vẫn còn đƣợc
giữ tối thiểu trong 3 năm.
Chủ nhà
Chủ của các nhà cho thuê là cá nhân hoặc doanh nghiệp. Công ty cấp cho
mỗi chủ nhà một mã riêng, gọi là mã chủ nhà, phân biệt lẫn nhau qua tất cả
các chi nhánh. Thông tin của chủ là cá nhân gồm họ tên, địa chỉ, số điện
thoại; thông tin của chủ là doanh nghiệp gồm tên doanh nghiệp, loại doanh
nghiệp, địa chỉ doanh nghiệp, số điện thoại và họ tên người tiếp xúc.
Khách hàng
Khi khách hàng tiếp xúc với công ty, thông tin về họ đƣợc lƣu lại gồm họ,
tên, địa chỉ, số điện thoại, nhu cầu về tiện nghi và khả năng trả tiền thuê
lớn nhất. Công ty cũng cấp cho họ một mã riêng, gọi là mã khách hàng,
phân biệt lẫn nhau qua tất cả các chi nhánh.
Công ty cũng tiến hành phỏng vấn khách hàng. Thông tin phỏng vấn cũng
đƣợc lƣu lại gồm ngày phỏng vấn, chuyên viên phỏng vấn, nhận xét chung
về khách hàng.
Xem nhà
Thƣờng thì khách hàng muốn đến xem một hoặc nhiều nhà trƣớc khi thuê.
Công ty thu xếp việc này và lƣu lại những thông tin gồm ngày xem, nhận
xét của khách.
Quảng cáo
Trong trƣờng hợp nhà khó cho thuê, công ty thực hiện quảng cáo trên báo
và lƣu lại ngày quảng cáo cùng chi phí quảng cáo. Chỉ những tờ báo thích
hợp đƣợc chọn, công ty lƣu thông tin của những tờ báo này gồm tên tờ
báo, địa chỉ tờ báo, số điện thoại số, số fax và họ tên người tiếp xúc.
![Page 47: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/47.jpg)
Chƣơng 1: Tổng quan về cơ sở dữ liệu 31
Hợp đồng cho thuê
Khách hàng có quyền thuê một hoặc nhiều nhà và bất kỳ lúc nào. Công ty
có nhiệm vụ lập hợp đồng cho thuê với số hợp đồng duy nhất qua tất cả các
chi nhánh. Chi tiết hợp đồng gồm hợp đồng số, giá thuê, phương thức
thanh toán, tiền ký quỹ, có trả tiền ký quỹ hay không, ngày bắt đầu và kết
thúc, thời gian thuê (đơn vị tính là tháng: ít nhất 3 tháng, nhiều nhất 1
năm). Khi hợp đồng hết hạn, công ty vẫn giữ thông tin này ít nhất 3 năm.
Kiểm tra nhà
Công ty có trách nhiệm kiểm tra định kỳ các nhà, kể cả những nhà đang
đƣợc thuê, ít nhất 6 tháng một lần để bảo đảm nó luôn ở tình trạng tốt. Chi
tiết mỗi lần kiểm tra cũng đƣợc lƣu lại gồm ngày kiểm tra, mã chuyên viên
kiểm tra và nhận xét về tình trạng nhà.
Hoạt động của chi nhánh
Chuyên viên
1. Tạo và bảo tồn thông tin xem nhà do mình thực hiện;
2. Báo cáo về những nhận xét của khách sau khi xem nhà;
3. Tạo và bảo tồn thông tin kiểm tra do mình thực hiện;
4. Tạo và bảo tồn thông tin quảng cáo do mình thực hiện;
5. Xem danh sách về những nhà cho thuê do mình quản;
6. Xem danh sách về những khách hàng do mình quản;
7. Tìm những nhà phù hợp với nhu cầu tiện nghi và khả năng tài chính
của khách hàng.
Giám sát
1. Tạo và bảo tồn thông tin về nhà và chủ nhà;
2. Tạo và bảo tồn thông tin về khách hàng;
3. Xem danh sách các quảng cáo theo nhà;
4. Xem danh sách các quảng cáo theo báo;
5. Xem nội dung các kiểm tra định kỳ;
6. Xem danh sách nhà đang thuê theo từng chuyên viên;
Quản lý và giám sát
1. Xem danh sách nhân viên;
2. Tạo và bảo tồn hợp đồng thuê nhà;
3. Xem danh sách hợp đồng theo nhà;
Quản lý
![Page 48: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/48.jpg)
32 Giáo trình cơ sở dữ liệu
1. Tạo và bảo tồn thông tin của tất cả nhân viên (kể cả ngƣời thân nhất
của họ);
2. Xem danh sách toàn bộ nhân viên;
![Page 49: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/49.jpg)
Chƣơng 1: Tổng quan về cơ sở dữ liệu 33
5.2. Trƣờng đại học Tri Khánh
Trƣờng đại học Tri Khánh tổ chức đào tạo theo tín chỉ. Sau đây là thông tin
đƣợc nhà trƣờng duy trì để hỗ trợ cho những hoạt động và quản lý hàng
ngày của trƣờng.
Chuyên ngành đào tạo
Trƣờng đào tạo theo các chuyên ngành. Mỗi chuyên ngành là một hƣớng
đào tạo hẹp của ngành. Mỗi ngành có một mã riêng, gọi là mã ngành, phân
biệt lẫn nhau. Thông tin của một ngành gồm tên ngành và loại bằng cấp.
Mỗi chuyên ngành có một mã riêng, gọi là mã chuyên ngành, phân biệt lẫn
nhau trong phạm vi tất cả các ngành. Thông tin của một chuyên ngành gồm
tên chuyên ngành và mục tiêu chung.
Khoa đào tạo
Các chuyên ngành đào tạo của trƣờng đều do các khoa tổ chức đào tạo.
Khoa chịu trách nhiệm đào tạo tất cả các chuyên ngành của một hoặc nhiều
ngành. Mỗi khoa có một mã riêng, gọi là mã khoa, phân biệt lẫn nhau.
Thông tin của một khoa gồm tên khoa, một số điện thoại và một số fax.
Môn học
Chương trình đào tạo của một chuyên ngành gồm một danh sách các môn
học đƣợc sắp xếp một cách khoa học nhằm bảo đảm mục tiêu đào tạo cụ
thể. Mỗi chƣơng trình đào tạo có một mã riêng, gọi là mã chương trình đào
tạo, phân biệt lẫn nhau trong phạm vi khoa. Thông tin của một chƣơng
trình đào tạo gồm năm áp dụng và mục tiêu cụ thể. Mỗi môn có một mã
riêng, gọi là mã môn, phân biệt lẫn nhau trong phạm vi tất cả các ngành.
Thông tin của một môn gồm tên môn, số tín chỉ và nội dung. Một môn có
một hoặc nhiều môn tiên quyết. Một chƣơng trình đào tạo nếu có một môn
nào đó thì phải có tất cả các môn tiên quyết của nó. Các môn tiên quyết của
một môn phải đƣợc sắp xếp học trƣớc.
Giảng viên
Giảng viên là ngƣời đảm nhận công việc giảng dạy. Khoa quản lý giảng
viên về mặt hành chính. Mỗi giảng viên đều có một mã riêng, gọi là mã
giảng viên, phân biệt lẫn nhau qua tất cả các khoa. Thông tin của một giảng
viên gồm họ, tên, địa chỉ, số điện thoại, giới tính, ngày sinh, học vị, chức
danh, chức vụ, hệ số lương và ngày vào trường.
![Page 50: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/50.jpg)
34 Giáo trình cơ sở dữ liệu
Bộ môn
Khoa tổ chức các giảng viên thành các bộ môn để quản lý môn học về mặt
chuyên môn. Mỗi môn do một bộ môn quản lý. Mỗi bộ môn có một mã
riêng, gọi là mã bộ môn, phân biệt lẫn nhau trong phạm vi tất cả các khoa.
Thông tin của một bô môn gồm tên bộ môn và số điện thoại.
Sinh viên
Ngay từ lúc vào trƣờng sinh viên đã đăng ký chuyên ngành và chịu sự quản
lý của khoa về mặt hành chính. Khoa sẽ phân công giảng viên cố vấn cho
sinh viên về chuyện học tập sao cho sinh viên biết rõ ai là ngƣời cố vấn cho
mình để chủ động liên hệ mỗi khi gặp khó khăn trong học tập. Mỗi sinh
viên đều có một mã riêng, gọi là mã sinh viên, phân biệt lẫn nhau qua tất cả
các khoa. Thông tin của một sinh viên gồm họ, tên, địa chỉ, số điện thoại,
giới tính, ngày sinh và khoá học.
Lớp
Với mỗi học kỳ, khoa sẽ mở các lớp (đào tạo) để sinh viên đăng ký học.
Lớp do một giảng viên phụ trách giảng một môn nào đó. Sinh viên đƣợc
phép đăng ký chỉ khi môn này thuộc chƣơng trình đào tạo mà sinh viên
theo học, sinh viên chƣa đạt môn này và đã đạt tất cả các môn tiên quyết
của nó. Sinh viên đƣợc gọi là đạt một môn nếu sinh viên có đăng ký học và
điểm đánh giá của giảng viên phụ trách môn có kết quả từ 5 trở lên. Mỗi
lớp có một mã riêng, gọi là mã lớp, phân biệt lẫn nhau trong phạm vi khoa.
Thông tin của lớp gồm ngày bắt đầu, các buổi học trong tuần và phòng
học của mỗi buổi.
Hoạt động
Sinh viên
1. Xem chƣơng trình đào tạo;
2. Xem điểm;
3. Đăng ký lớp.
Giảng viên
1. Nhập điểm;
2. Xem danh sách lớp do mình phụ trách;
3. Xem danh sách sinh viên thuộc lớp do mình phụ trách;
4. Xem danh sách sinh viên do mình cố vấn;
5. Báo cáo kết quả học của lớp do mình phụ trách;
6. Báo cáo kết quả học của sinh viên do mình cố vấn.
![Page 51: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/51.jpg)
Chƣơng 1: Tổng quan về cơ sở dữ liệu 35
Bộ Môn
1. Phân công giảng viên phụ trách lớp;
2. Xem danh sách giảng viên trong bộ môn;
3. Xem danh sách môn thuộc bộ môn;
4. Xem danh sách lớp của các giảng viên thuộc bộ môn;
5. Xem danh sách sinh viên đƣợc cố vấn bởi các giảng viên thuộc bộ
môn;
6. Xem danh sách sinh viên trong lớp do giảng viên thuộc bộ môn phụ
trách;
7. Báo cáo khối lƣợng và chất lƣợng giảng dạy của mỗi giảng viên
thuộc khoa.
Khoa
1. Tạo và bảo tồn thông tin về môn;
2. Tạo và bảo tồn thông tin về ngành, chuyên ngành;
3. Tạo và bảo tồn thông tin về chƣơng trình đào tạo;
4. Tạo và bảo tồn thông tin về bộ môn;
5. Tạo và bảo tồn thông tin về lớp;
6. Sắp xếp nhân sự cho bộ môn;
7. Sắp xếp môn cho bộ môn;
8. Sắp xếp cố vấn học tập cho sinh viên;
9. Xem danh sách toàn bộ môn trong trƣờng;
10. Xem danh sách giảng viên thuộc khoa;
11. Xem danh sách sinh viên của khoa;
12. Xem kết quả học tập của sinh viên thuộc khoa;
13. Báo cáo về quy mô và chất lƣợng đào tạo của mỗi chuyên ngành
thuộc khoa.
Phòng đào tạo
1. Tạo và bảo tồn thông tin về sinh viên;
2. Xếp lịch học cho các lớp;
3. Xem danh sách toàn bộ lớp;
4. Xem danh sách sinh viên theo lớp;
5. Báo cáo kết quả đào tạo theo từng khoá.
Phòng tổ chức
1. Tạo và bảo tồn thông tin về khoa;
2. Tạo và bảo tồn thông tin về giảng viên;
3. Xem danh sách toàn bộ bộ môn;
4. Xem danh sách giảng viên theo khoa, theo bộ môn.
![Page 52: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/52.jpg)
36 Giáo trình cơ sở dữ liệu
BÀI TẬP
1. Xét hệ thống quản lý tồn kho của một công ty lớn, với mỗi chức năng
sau đây, hãy xác định kiểu ngƣời dùng (là quản trị, lập trình hay sử
dụng)
a. Tạo báo cáo lƣợng tồn kho hàng tháng;
b. Cập nhật lƣợng tồn của từng mặt hàng trong các phiếu nhập vừa
đƣợc nhận;
c. Hủy tài khoản ngƣời dùng của một nhân viên vừa đƣợc nghỉ
hƣu;
d. Đổi cấu trúc của lƣợc đồ hàng hoá để thêm thông tin cho mỗi
mặt hàng;
e. Trả lời qua điện thoại lƣợng tồn hiện tại của một mặt hàng.
2. Chỉ ra 2 vấn đề khác nhau về bảo mật giữa hệ thống cơ sở dữ liệu một
ngƣời dùng và hệ thống cơ sở dữ liệu nhiều ngƣời dùng?
3. Một trƣờng đại học có nhiều cơ sở khắp nơi trên thế giới muốn tạo một
cơ sở dữ liệu phân tán lƣu thông tin của sinh viên. Nó đƣợc thiết kế
khác với cơ sở dữ liệu tập trung ở những điểm gì?
4. Các chƣơng trình ứng dụng thông qua một hệ quản trị cơ sở dữ liệu để
cùng nhau chia sẻ một cơ sở dữ liệu. Khi cơ sở dữ liệu và các chƣơng
trình ứng dụng cùng làm việc trực tiếp với một hệ quản trị cơ sở dữ liệu
duy nhất thì hệ thống cơ sở dữ liệu này đƣợc gọi là một lớp (single
tier). Sự phát triển của máy tính cá nhân, sự tin cậy ngày càng tăng của
phần cứng, các tiện ích của Internet đã dẫn đến xu thế sử dụng các hệ
thống phân bố có kiến trúc nhiều lớp. Với hệ thống 2 lớp (two-tier) các
chƣơng trình ứng dụng làm việc với hệ quản trị cơ sở dữ liệu client,
còn cơ sở dữ liệu đƣợc quản lý bởi hệ quản trị cơ sở dữ liệu server
(kiến trúc client-server); hệ quản trị cơ sở dữ liệu client tƣơng tác với
hệ quản trị cơ sở dữ liệu server để phục vụ các chƣơng trình ứng dụng.
Trong hệ thống 3 lớp (three-tier), có bổ sung thêm lớp giữa
(middleware) để client của một server có thể truy xuất dữ liệu từ một
server khác. Hãy xác định số lớp (1, 2 hoặc 3) cho mỗi hệ thống cơ sở
dữ liệu sau:
a. Một nghệ nhân, làm việc tự do, thiết kế và bán các sản phẩm
mỹ nghệ thông qua thƣ đặt hàng hoặc các cửa hàng mỹ nghệ;
![Page 53: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/53.jpg)
Chƣơng 1: Tổng quan về cơ sở dữ liệu 37
b. Một trƣờng đại học có nhiều cơ sở khắp nơi trên thế giới với cơ
sở dữ liệu tập trung tại văn phòng trung tâm, các cơ sở sẽ truy
xuất dữ liệu qua server đặt tại trung tâm này;
c. Hệ thống bán vé máy bay toàn cầu.
5. Cho một ví dụ hệ thống cơ sở dữ liệu 3 lớp.
6. Một nghệ nhân, làm việc tự do, thiết kế và bán các sản phẩm mỹ nghệ
thông qua thƣ đặt hàng hoặc các cửa hàng mỹ nghệ. Hiện tại anh ta có
một danh sách thƣ đặt hàng đƣợc lƣu trong tập tin văn bản. Anh ta cũng
lƣu danh sách khách hàng và danh sách nhà cung cấp nguyên vật liệu
trong hai tập tin văn bản khác. Anh ta dùng bảng tính (spreadsheet) để
lƣu hoá đơn. Thu nhập và chi phí đƣợc lƣu trong một bảng tính khác.
Anh ta sẽ nhận đƣợc những lợi ích gì nếu dữ liệu đƣợc thiết kế để lƣu
trữ trong một cơ sở dữ liệu và đƣợc quản lý bởi một hệ quản trị cơ sở
dữ liệu?
7. Với mỗi mô hình sau, hãy mô hình cơ sở dữ liệu cho dữ liệu ở câu 6:
a. Mô hình mạng;
b. Mô hình phân cấp;
c. Mô hình quan hệ.
8. Giải thích sự khác nhau giữa ngôn ngữ định nghĩa dữ liệu và ngôn ngữ
thao tác dữ liệu. Ngôn ngữ nào (định nghĩa hay thao tác) đƣợc sử dụng
cho mỗi tác vụ sau:
a. Nhập điểm cho sinh viên;
b. Thêm lớp mới;
c. Thêm một thuộc tính mới cho mỗi sinh viên;
d. Tính tổng số tín chỉ đạt đƣợc của mỗi sinh viên.
9. Giải thích sự khác nhau giữa độc lập dữ liệu mức logic và độc lập dữ
liệu mức vật lý.
10. Thành phần nào của hệ quản trị cơ sở dữ liệu dùng để bảo đảm tính
nhất quán của dữ liệu trong cơ sở dữ liệu?
11. Một cửa hàng bán hoa tƣơi, bán hoa qua các đơn đặt hàng. Cửa hàng
lƣu thông tin về hoa và đơn đặt hàng. Một đơn đặt hàng có thể đặt
nhiều hơn một hoa với số lƣợng xác định. Thông tin về hoa gồm: mã
hoa, tên hoa, loại hoa và đặc điểm riêng. Thông tin về đơn đặt hàng
![Page 54: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/54.jpg)
38 Giáo trình cơ sở dữ liệu
gồm: đơn đặt hàng số, tên khách hàng, địa chỉ và phương thức giao
hàng.
a. Thiết kế các lƣợc đồ mức ngoài, mức quan niệm và mức trong;
b. Bạn dùng ngôn ngữ gì (định nghĩa hay thao tác) cho mỗi tác vụ
sau (a) Tạo một bảng mới lƣu dữ liệu về loại đất và nhu cầu ánh
sáng cho mỗi loại hoa; (b) Thêm một hoa mới; (c) Thêm thông
tin giá bán cho mỗi loại hoa.
12. Dùng ngôn ngữ C xây dựng chƣơng trình tính lƣơng cho trung tâm A
(ví dụ 2) với dữ liệu đƣợc lƣu trong tập tin (ví dụ 3).
13. Dùng Microsoft Access xây dựng chƣơng trình tính lƣơng cho trung
tâm A với dữ liệu đƣợc tổ chức thành bảng (ví dụ 9).
14. Dùng Microsoft Access xây dựng 3 chƣơng trình ứng dụng (ví dụ 4)
cho trung tâm A với mô hình trong gồm các lƣợc đồ logic (ví dụ 9).
15. Thảo luận về từng thuận lợi và mỗi thách thức khi thực hiện tiếp cận cơ
sở dữ liệu.
16. Thảo luận về mỗi thành phần và mỗi chức năng của hệ quản trị cơ sở
dữ liệu nói chung và một hệ quản trị cơ sở dữ liệu cụ thể.
![Page 55: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/55.jpg)
Chƣơng 2 MÔ HÌNH CƠ SỞ DỮ LIỆU QUAN HỆ
Mục tiêu của chƣơng.
Trong chƣơng này chúng ta sẽ học về:
Quan hệ và các phép toán trên quan hệ;
Mô hình cơ sở dữ liệu quan hệ: lược đồ quan hệ, lược
đồ cơ sở dữ liệu quan hệ, ràng buộc toàn vẹn;
Phân biệt giữa quy tắc quản lý và ràng buộc toàn vẹn;
Phân biệt giữa khoá và siêu khoá;
Phân biệt giữa khoá ngoại và ràng buộc tồn tại;
Giải quyết vấn đề bằng đại số quan hệ: xử lý dữ liệu,
kiểm tra tính nhất quán của dữ liệu;
Phân biệt giữa phân rã bảo toàn thông tin và kết đầy
đủ;
Quy trình ba bƣớc cho một biểu thức đại số quan hệ;
Các chiến lƣợc19
giải bài toán bằng đại số quan hệ;
Thuật toán với các câu lệnh là biểu thức đại số quan
hệ.
Trong chƣơng 1 chúng ta đã giới thiệu về mô hình cơ sở dữ liệu quan hệ.
Theo đó, dữ liệu đƣợc lƣu trong các bảng còn đƣợc gọi là các quan hệ. Với
mô hình này ngƣời dùng thấy dữ liệu thông qua các bảng, còn chi tiết lƣu
trữ và chiến lƣợc truy xuất để lại cho hệ quản trị cơ sở dữ liệu quan hệ đảm
nhận. Trong chƣơng này, chúng ta sẽ làm rõ các yếu tố của mô hình, tập
trung làm khái niệm quan hệ; cũng khảo sát các phép toán trên quan hệ và
sử dụng chúng để xử lý dữ liệu, bằng cách thao tác trực tiếp trên các quan
hệ thay vì thao tác qua các mục dữ liệu riêng biệt. Việc dùng đại số quan
hệ để giải bài toán là một cách làm rất khác, cũng sẽ đƣợc giới thiệu khá
chi tiết trong chƣơng này.
19 Những chiến lƣợc, đƣợc giới thiệu trong chƣơng này, đƣợc rút ra từ kinh nghiệm của tác giả trong quá trình sử dụng đại số quan hệ giải các bài toán.
![Page 56: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/56.jpg)
40 Giáo trình cơ sở dữ liệu
1. Mở đầu
Chúng ta bắt đầu bằng bài toán tính hoá đơn tiền điện với dữ liệu đƣợc tổ
chức lƣu trữ trong nhiều bảng.
Ví dụ 2.1
Mỗi tháng công ty điện lực cho ngƣời đi ghi lại chỉ số điện kế của khách
hàng, tính, in hoá đơn, rồi cử ngƣời giao hoá đơn và thu tiền. Công việc lập
hoá đơn rất đơn giản. Sau khi xác định kỳ hoá đơn, ngƣời dùng chỉ cần
chọn khách hàng, nhập chỉ số tiêu thụ, hệ thống sẽ in ra hoá đơn.
Dữ liệu đƣợc yêu cầu lƣu trữ cho công việc này gồm địa chỉ khách hàng
cho mỗi khách hàng và đơn giá theo từng mức tiêu thụ.
Giả sử công ty có 3 khách hàng, và có 4 mức tiêu thụ. Toàn bộ dữ liệu
đƣợc tổ chức lƣu thành 2 bảng nhƣ sau:
Khách hàng (Mã KH Địa chỉ) Định mức (Từ Đến Giá)
01 134 NTT 1 100 80
02 242/4 TBT 101 150 100
03 33 PH 151 200 150
201 400 200
Hệ thống có đầy đủ dữ liệu để lập hoá đơn. Chẳng hạn, với chỉ số tiêu thụ
của 3 khách hàng trên đây theo thứ tự là 120, 250 và 80, ta có bảng chi tiết
tiêu thụ:
Chi tiết tiêu thụ (Mã KH Tiêu thụ Giá Thành tiền)
01 100 80 8000
01 20 100 2000
02 100 80 8000
02 50 100 5000
02 50 150 7500
02 50 200 10000
03 80 80 6400
Cần lƣu ý, chúng ta vẫn đang nói về mô hình, một công cụ cho phép hiểu
hệ thống, do đó tính rõ ràng là cần thiết. Thử phân tích ví dụ trên.
Trong ví dụ này ta thấy mỗi bảng lƣu cùng một loại thông tin. Mỗi dòng
trong bảng Khách hàng lƣu thông tin của một khách hàng, với thứ tự dữ
liệu theo đúng tiêu đề cột. Dòng dữ liệu này đƣợc xem là một thể hiện của
khách hàng trong hệ thống. Cũng vậy mỗi dòng trong bảng Định mức lƣu
thông tin của mỗi mức gồm phạm vi tiêu thụ và đơn giá trong phạm vi tiêu
![Page 57: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/57.jpg)
Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ 41
thụ này. Ngoài ra chúng ta cũng thấy có các dữ liệu dùng để xác định chính
xác đối tƣợng (trong bảng Khách hàng đó là Mã KH còn trong bảng Định
mức là phạm vi tiêu thụ).
Trong ví dụ này, chúng ta thấy có sƣ lƣu trữ dƣ thừa dữ liệu. Nếu loại bỏ
cột đến trong bảng Định mức chúng ta vẫn đủ thông tin cho việc tính hoá
đơn; tuy nhiên, khi ấy thông tin trên cùng một dòng là không đầy đủ20
.
Để ngắn gọn, chúng ta ký hiệu r, s và u thay cho các quan hệ Khách hàng,
Định mức và Chi tiết tiêu thụ. Chúng ta chờ đợi một biểu thức cho u thông
qua r và s, thay cho việc lập trình thông thƣờng, tức là duyệt qua các dòng
của r và s để truy cập dữ liệu và làm các xử lý cần thiết.
Như vậy với mô hình cơ sở dữ liệu quan hệ, gồm các quan hệ và các phép
toán, người dùng có thể xử lý dữ liệu ở mức trừu tượng cao mà không cần
quan tâm đến chi tiết cơ chế lưu trữ và chiến lược truy xuất. Mỗi bảng
trong mô hình này lưu giữ thông tin của một loại đối tượng, mỗi đối tượng
trên một dòng. Trong thực tế, các đối tượng luôn có quan hệ với nhau và
chúng ta vẫn có thể dùng các bảng để lưu các kết hợp này, mỗi dòng một
liên kết.
Ví dụ 2.2
Cơ sở dữ liệu của một siêu thị lƣu thông tin của danh mục hàng hoá trong
bảng Hàng hoá (Mã hàng, Tên hàng, Đơn vị tính, Giá bán), của danh sách
hoá đơn trong bảng Hoá đơn (Số hoá đơn, Ngày lập, Trị giá, Thuế VAT),
của các liên kết giữa hoá đơn và hàng hoá trong bảng Chi tiết hoá đơn (Số
hoá đơn, Mã hàng, Số lượng, Giá thực bán).
Hàng hoá (Mã hàng Tên hàng Đơn vị tính Giá bán)
H01 Máy tính Bộ 5600
H02 Đĩa 10 đĩa 30
H03 Màn hình Chiếc 1250
H04 CPU Chiếc 3250
Hoá đơn (Số hoá đơn Ngày lập Trị giá Thuế VAT)
D01 12/11/06 5490 5%
D02 14/12/06 12140 5%
20 Rõ ràng mục tiêu là giảm dƣ thừa tối đa, nhƣng nếu quá cực đoan sẽ làm giảm đi tính rõ
ràng. Tùy vào mức độ trừu tƣợng đang quan tâm cho phép có những dƣ thừa nhất định.
![Page 58: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/58.jpg)
42 Giáo trình cơ sở dữ liệu
Chi tiết hoá đơn (Số hoá đơn Mã hàng Số lượng Giá thực bán)
D01 H01 1 5400
D01 H02 3 30
D02 H04 3 3200
D02 H03 2 1200
D02 H02 5 28
2. Khái niệm
2.1. Quan hệ và lƣợc đồ quan hệ
Quan hệ là một bảng gồm các dòng và cột. Mỗi tiêu đề cột đƣợc gọi là
thuộc tính, nhận các giá trị trong một tập gọi là miền giá trị của thuộc
tính. Tập các thuộc tính đƣợc gọi là lƣợc đồ quan hệ. Mỗi dòng đƣợc gọi
là bộ. Ta có định nghĩa hình thức nhƣ sau.
Định nghĩa 2.1
1. Lược đồ quan hệ là một tập hữu hạn các thuộc tính R = {A1, A2, ..., An
}. Mỗi thuộc tính Ai có kiểu dữ liệu riêng với tập giá trị là dom(Ai) = Di
(1 i n).
2. Quan hệ là một tập các bộ r = r(R) = { t1, t2,..., tp }, mỗi bộ t = (a1, a2,
…, an ) với t.Ai = ai Di ( 1 i n ).
Bảng p+1 dòng, n cột biểu diễn một quan hệ p bộ, n thuộc tính. Dòng đầu
là danh sách n thuộc tính, p dòng tiếp theo là p bộ. Giá trị t.Ai của thuộc
tính thứ i đƣợc đặt ở đúng cột i.
Ví dụ 2.3
Cho quan hệ lịch bay, mỗi dòng là một lịch bay cụ thể cho biết thông tin
của chuyến bay gồm mã số chuyến bay, nơi đi, nơi đến, giờ đi và giờ đến.
Airline_schedule (NUMBER FROM TO DEPARTS ARRIVES)
83 JFK O‟Hare 11:30a 1:43p
84 O‟Hare JFK 3:00p 5:55p
109 JFK Los Angeles 9:50p 2:52a
213 JFK Boston 11:43a 12:45p
214 Boston JFK 2:20p 3:12p
Airline_schedule là một quan hệ trên lƣợc đồ {NUMBER, FROM, TO,
DEPARTS, ARRIVES}. Miền giá trị của mỗi thuộc tính có thể là:
dom(NUMBER) = tập các số gồm 1, 2 hoặc 3 ký số; dom(FROM) =
![Page 59: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/59.jpg)
Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ 43
dom(TO) = {JFK, O’Hare, Los Angeles, Boston, Atlanta};
dom(DEPARTS) = dom(ARRIVES) = tập thời gian trong ngày.
Chúng ta có thể dùng các chữ tắt để có một quan hệ kém ngữ nghĩa nhƣng
dễ khảo sát.
Ví dụ 2.4
Ký hiệu N, F, T, A, D và r thay cho NUMBER, FROM, TO, ARRIVES,
DEPARTS và Airline_schedule ta có quan hệ r đƣợc định nghĩa trên lƣợc
đồ R = (NFTAD) nhƣ sau
r (N F T D A)
n1 c1 c2 d1 a1
n2 c2 c1 d2 a2
n3 c1 c3 d3 a3
n4 c1 c4 d4 a4
n5 c4 c1 d5 a5
2.2. Khoá của lƣợc đồ quan hệ
Thử tƣởng tƣợng tình huống một phụ huynh đến trƣờng hỏi về tình hình
học tập của con em mình. Ngƣời ấy sẽ phải cung cấp thông tin gì để nhân
viên quản lý có thể xác định chính xác sinh viên này? Thông tin để phân
biệt các đối tƣợng đƣợc gọi là thông tin định danh và tập thuộc tính tƣơng
ứng đƣợc gọi là khoá
Định nghĩa 2.2
Cho quan hệ r định nghĩa trên lược đồ quan hệ R, tập con K R được gọi
1. Là siêu khoá nếu t, t’ r ta có t.Ai = t’.Ai (Ai K, gọn t.K = t’.K)
t = t’.
2. Là khoá nếu K là siêu khoá của r và không có tập con thật sự nào nào
của K thoả tính chất này.
Một lƣợc đồ quan hệ có thể có nhiều khoá. Những khoá mà ngƣời dùng liệt
kê ra gọi là các khoá tƣờng minh hay còn gọi là các khoá chỉ định, ngƣợc
lại khoá không tƣờng minh đƣợc gọi là khoá ẩn. Trong số các khoá tƣờng
minh ta thƣờng chọn ra một khoá và gọi là khoá chính21
. Chú ý là có một
số khoá chỉ định có thể mới chỉ là siêu khoá, hoặc vì lý do nào đó hoặc vì
21 Nếu có thể, khoá chính chỉ nên gồm 1 thuộc tính. Trong hầu hết các trƣờng hợp chúng
ta thƣờng bổ sung cho lƣợc đồ một thuộc tính làm khoá chính
![Page 60: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/60.jpg)
44 Giáo trình cơ sở dữ liệu
lúc chỉ định việc hiểu bài toán chưa thật thấu đáo. Thực tế, dữ liệu đƣợc
lƣu trong quan hệ phải tuân theo một số quy tắc. Thoả mãn một tập các
khoá cũng là một quy tắc, cho nên lƣợc đồ quan hệ cần bổ sung thêm tập
các khoá. Theo đó lƣợc đồ quan hệ sẽ xác định các khóa để các quan hệ cụ
thể trên lƣợc đồ này phải thỏa. Xét quan hệ Sinh viên cụ thể, mặc dù có thể
thấy giá trị trên tập các thuộc tính {Họ, Tên, Ngày sinh} là phân biệt lẫn
nhau, nhƣng cũng không vì thế mà coi chúng là khóa của lƣợc đồ, trừ phi
đó là yêu cầu thực sự của hệ thống.
Bạn đọc cần lƣu ý định nghĩa trên phát biểu cho quan hệ r bất kỳ có ngụ ý
nói rằng khóa là một khái niệm của lƣợc đồ. Từ nay về sau khi nói đến
khóa chúng ta hiểu là khóa của lƣợc đồ quan hệ mà tất cả các quan hệ đƣợc
định nghĩa trên lƣợc đồ này đều phải thỏa.
Định nghĩa 2.3
Một lược đồ quan hệ là một bộ (R, K) gồm tập R các thuộc tính và tập K
các khoá
Nếu đƣợc, thay vì liệt kê tập K chúng ta gạch chân các thuộc tính tham gia
trong khoá
Ví dụ 2.5
Lƣợc đồ lịch bay viết lại cho đầy đủ R = (NFTAD) = (NFTAD, {N})
Một cách ít hình thức hơn cho phép dễ dàng kiểm tra khoá, đó là dữ liệu
trên thuộc tính khoá không xuất hiện nhiều hơn một lần. Ta có thuật toán:
Thuật toán 1: SatisfyKey(r, K)
Vào : quan hệ r và khoá K R.
Ra : đúng hoặc sai.
Các bước :
1. xây dựng r‟={ t.K | t r }.
2. trả về |r| = |r‟|
Ví dụ 2.6
Quan hệ lịch bay thỏa khoá NUMBER vì tập {t.N | t r} = {n1, n2, n3, n4,
n5} = {83, 84, 109, 213, 214} có số phần tử bằng đúng số phần tử của tập r
= Airline_schedule.
![Page 61: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/61.jpg)
Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ 45
2.3. Quan hệ toán học
Để dễ dàng sử dụng các phép toán trên quan hệ, chúng ta nên tìm hiểu khái
niệm quan hệ theo nghĩa toán học. Theo đó quan hệ là tập con của tập
tích22
.
Ví dụ 2.1
Cho hai tập X = {a, b, c, d, f, g} và Y = {1, 2, 3, 4, 5, 6}. Xét tập con r của
tập tích XY, r = {(b, 3), (c, 3), (c, 4), (d, 3), (d, 4), (d, 5), (e, 4), (f, 4), (f,
5), (g, 6)}, r là một quan hệ định nghĩa trên XY. Ta có dạng bảng của r:
r X Y
b 3
c 3
c 4
d 3
d 4
d 5
e 4
f 4
f 5
g 6
Với biểu diễn dạng bảng, ta có mỗi dòng là một điểm của quan hệ trong tập
tích, tên bảng là tên quan hệ, tên của mỗi tập thành phần là thuộc tính.
Như vậy, không gian tích biểu diễn lược đồ, điểm trong không gian tích
biểu diễn bộ và tập các điểm cho ta một quan hệ. Số các thuộc tính (cột)
được gọi là cấp của quan hệ; số các bộ (dòng) được gọi là bản số của
quan hệ. Theo đó, quan hệ r(X, Y) ở trên có cấp bằng 2 và bản số bằng 9.
22 Các tính chất của một quan hệ nhƣ phản xạ, đối xứng, phản xứng, bắt cầu, tƣơng
đƣơng, thứ tự, hàm,… đã đƣợc nghiên cứu chi tiết trong môn toán rời rạc. Môn này tập
trung nói về lƣu trữ hiệu quả.
g
f
e
d
c
b
a
1 2 3 4 5 6 7
![Page 62: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/62.jpg)
46 Giáo trình cơ sở dữ liệu
3. Mô hình
Ta dùng các bảng để lƣu dữ liệu. Mỗi bảng lƣu thông tin của các đối tƣợng
cùng loại, các liên kết cùng loại. Tuy nhiên, khi làm việc với mô hình
chúng ta chỉ quan tâm đến các lƣợc đồ và các quan hệ giữa chúng.
3.1. Cơ sở dữ liệu và lƣợc đồ cơ sở dữ liệu
Định nghĩa 2.4
1. Lược đồ cơ sở dữ liệu D trên U là một tập các lược đồ quan hệ {R1,
R2,..., Rp} sao cho U = R1R2...Rp (mỗi Ri có thể định nghĩa kèm theo tập
khoá Ki ).
2. Cơ sở dữ liệu d là tập các quan hệ d = { r1, r2,..., rp } với ri (Ri) .
Từ nay về sau nếu không sợ nhầm lẫn ta sẽ coi ri là quan hệ trên Ri.
Ví dụ 2.7
r1 ( A B C ) r2 ( B D )
a1 b1 c1 b1 d1
a1 b2 c2 b2 d2
a2 b3 c3 b3 d3
a2 b4 c4 b4 d4
a2 b1 c5 b5 d2
a3 b1 c6
a3 b2 c4
a4 b3 c1
a4 b3 c6
a4 b5 c7
Ta có d = {r1, r2} là một cơ sở dữ liệu định nghĩa trên lƣợc đồ
cơ sở dữ liệu D = {R1, R2} trong đó R1= (ABC,{AC}) và
R2=(BD,{B})
Trong định nghĩa trên, chúng ta chỉ thấy các lƣợc đồ mà không nhận ra các
quan hệ giữa các lƣợc đồ. Thật ra, giữa các bảng có các thuộc tính chung
hoặc có các liên hệ cho phép hình thành các liên kết có nghĩa23
. Bạn đọc đã
biết cấu trúc đồ thị, một cấu trúc rời rạc rất hữu dụng24
. Một đồ thị gồm
một tập hữu hạn các đỉnh và một tập hữu hạn các cạnh, mỗi cạnh nối hai
23 Thƣờng đƣợc giữ trong các tài liệu phân tích thiết kế. 24 Xem toán rời rạc.
![Page 63: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/63.jpg)
Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ 47
đỉnh. Hình dung các bảng là các đỉnh. Khi ấy tồn tại các cạnh với ngữ
nghĩa cụ thể giúp liên kết các dữ liệu trong cơ sở dữ liệu để giải quyết một
bài toán nào đó.
Ví dụ 2.8
Trong cơ sở dữ liệu điện lực, ta thấy có các liên kết sau cho phép tính hoá
đơn tiền điện
Khách hàng (Mã KH Địa chỉ Tiêu thụ) Định mức (Từ Đến Giá)
01 134 NTT 120 1 100 80
02 242/4 TBT 250 101 150 100
03 33 PH 80 151 200 150
201 400 200
Thông thƣờng các liên kết đƣợc hình thành từ phép so sánh bằng, trƣờng
hợp cụ thể ở đây các liên kết đƣợc hình thành từ phép so sánh Tiêu thụ
Từ. Bằng cách bỏ đi dữ liệu, chỉ giữ lại các lƣợc đồ, chúng ta nhìn thấy mô
hình dữ liệu giúp tƣ duy dễ dàng hơn. Trong phần cuối của chƣơng, bằng
cách hình dung lƣợc đồ cơ sở dữ liệu nhƣ là một đồ thị, chúng ta có thể viết
các phép toán quan hệ giải một bài toán cụ thể.
3.2. Ràng buộc toàn vẹn
Khái niệm
Dữ liệu trong hệ thống có liên quan với nhau và thỏa một số ràng buộc, là
những quy tắc bất biến đối với các quan hệ trong cơ sở dữ liệu. Chúng
đƣợc gọi là các ràng buộc toàn vẹn. Những lƣợc đồ quan hệ tham gia mô
tả ràng buộc toàn vẹn đƣợc gọi là bối cảnh của ràng buộc toàn vẹn. Các
thao tác thêm, xoá, sửa có ảnh hƣởng đến ràng buộc toàn vẹn đều đƣợc mô
tả trong một bảng gọi là bảng tầm ảnh hƣởng; nhờ bảng này chúng ta dễ
dàng đặc tả các phƣơng thức xử lý khi thao tác trên dữ liệu.
Khi định nghĩa khoá cho một lƣợc đồ quan hệ, chúng ta đã đƣa ra một quy
tắc và gọi là ràng buộc khoá. Với ràng buộc khoá, bối cảnh của ràng buộc
là lƣợc đồ quan hệ trên đó khoá đƣợc định nghĩa và các thao tác thêm sửa
có thể ảnh hƣởng đến ràng buộc này25
.
25 Dù thao tác sửa hiếm khi sửa giá trị của thuộc tính khoá chính, nhƣng các khoá khác thì
không chắc.
![Page 64: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/64.jpg)
48 Giáo trình cơ sở dữ liệu
Ví dụ 2.9
Cho cơ sở dữ liệu gồm 3 quan hệ
Độc-Giả (Mã-DG, Địa-chỉ-DG)
Sách (Mã-sách, Số-bản)
Mượn (Mã-DG, Mã-sách, Ngày-mượn )
Giả sử có 3 quy tắc:
1. Chỉ lƣu một địa chỉ cho mỗi độc giả.
2. Một độc giả đƣợc mƣợn không quá 3 cuốn sách.
3. Không cho mƣợn nếu số bản còn lại của sách bằng đúng 1.
Ký hiệu D, C, S, B, N thay cho Mã-DG, Địa-chỉ-DG, Mã-sách, Số-bản,
Ngày-mượn và r1, r2, r3 thay cho Độc-Giả, Sách, Mượn. Cơ sở dữ liệu đƣợc
viết lại:
r1(DC); r2,(SB); r3(DSN)
Ngoài quy tắc 1 là hệ quả của ràng buộc khoá, hai quy tắc còn lại đƣợc
trình bày dƣới dạng mệnh đề nhƣ sau:
1. Quy tắc 2 : t r1, |{t‟ r3| t.D = t‟.D}| 3
2. Quy tắc 3 : t r2, t.B - |{t‟ r3| t.S = t‟.S}| 1
Bối cảnh của quy tắc 2 là R326
, bối cảnh của quy tắc 3 là R2 và R3. Ta xây
dựng bảng tầm ảnh hƣởng:
r2 Sách r3 Mượn
Quy tắc Thêm Xoá Sửa Thêm Xoá Sửa
2 * Mã-DG
3 Số-bản * Mã-sách
Trong bảng tầm ảnh hƣởng, với thao tác sửa nên ghi rõ sửa trên thuộc tính
nào. Bảng tầm ảnh hƣởng trên đây minh hoạ điều này.
26 Mặc dù khi viết quy tắc 2 dƣới dạng mệnh đề chúng ta có dùng bảng r1, thật ra chỉ cần
nhóm các dòng của r3 theo mã độc giả thì mỗi nhóm có bản số không quá 3.
![Page 65: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/65.jpg)
Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ 49
Phân loại ràng buộc toàn vẹn
Ràng buộc trên cùng một quan hệ
1. Ràng buộc khác trống. Ràng buộc này không cho phép một thuộc tính
không có dữ liệu. Cần lƣu ý các thuộc tính tham gia vào khoá chính
phải chịu ràng buộc này.
Ví dụ 2.10
Giả sử bắt buộc phải lƣu địa chỉ của độc giả. Quan hệ r1 sau vi phạm ràng
buộc khác trống (chuỗi trống là khác với chuỗi rỗng), vì thuộc tính địa chỉ
cũng nhƣ thuộc tính khoá chính không đƣợc phép để trống
r1 (D C)
d1 c1
d2
c3
2. Ràng buộc miền giá trị. Trong thực tế, miền giá trị của thuộc tính hết
sức phong phú trong khi các kiểu dữ liệu có sẵn lại hạn chế. Với ràng
buộc này chúng ta làm chính xác hơn miền giá trị của thuộc tính
Ví dụ 2.11
Giả sử Dom(Số-bản) = {3, 4, 5, 6, 7, 8, 9, 10}, quan hệ r2 sau có hai dòng
bị vi phạm (nếu không có ràng buộc này, chúng ta dùng kiểu dữ liệu xây
dựng sẵn gần nhất là kiểu số nguyên dƣơng 1 byte, thì vi phạm này sẽ
không đƣợc phát hiện).
r2 (S B)
s1 1
s2 12
s3 5
3. Ràng buộc liên thuộc tính. Xảy ra trên cùng dòng.
Ví dụ 2.12
Giả sử trong sách ta thêm thuộc tính số bản đang mượn (M) thì ràng buộc
3 trở thành ràng buộc liên thuộc tính B – M 1. Hai quan hệ r2 và r3 sau vi
phạm ràng buộc này.
r2 ( S B M ) r3 ( D S N)
s1 3 3 d1 s1 n1
s2 4 1 d1 s2 n1
s3 6 0 d3 s1 n1
s4 3 0 d4 s1 n2
![Page 66: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/66.jpg)
50 Giáo trình cơ sở dữ liệu
4. Ràng buộc liên bộ. Là ràng buộc giữa các dòng. Một số tính chất quan
trọng của quan hệ nhƣ phản xạ, đối xứng, phản xứng, bắt cầu, xác định
hàm,… thuộc loại này.
Ví dụ 2.13
Xét quan hệ r = [sổ cái] ([chứng Từ gốc], [tài Khoản], [tài khoản Đối
ứng]), có tính đối xứng. Quan hệ r sau vi phạm ràng buộc nói trên
r (T K D)
1 t1 t2
1 t2 t1
2 t1 t3
Ràng buộc trên nhiều quan hệ
1. Ràng buộc tồn tại. Sự xuất hiện của một thể hiện này phụ thuộc vào
sự xuất hiện của một thể hiện khác.
Ví dụ 2.14
Xét lƣợc đồ cơ sở dữ liệu tại một trƣờng đại học {R1(LN), R2(SL),
R3(SML), R4(NM)} với cơ sở dữ liệu r1 = LopHoc, r2 = SinhVien, r3 =
DangKy và r4 = KeHoach và L, N, S, M là viết tắt của các thuộc tính ma
Lop, ma Nganh, ma Sinh Vien, ma Mon. Trƣờng cho phép sinh viên đăng
ký học lại các môn không đạt chung với lớp khác.
Đăng ký phải thỏa mãn ràng buộc tồn tại sau: môn đăng ký phải là môn
không đạt, có tổ chức dạy ở một lớp nào đó cùng ngành đào tạo.
Cơ sở dữ liệu sau vi phạm ràng buộc này
r1 ( L N) r2 ( S L ) r3 ( S M L ) r4 ( N M )
l1 a s1 l1 s1 m1 l3 a m1
l2 b s2 l1 s2 m2 l2 a m2
l3 a s3 l2 s3 m1 l2 b m2
s4 l2 b m3
s5 l3
2. Ràng buộc khoá ngoại. Là một ràng buộc tồn tại đặc biệt, trong đó
một số thuộc tính trong lƣợc đồ đang xét tham chiếu đến các thuộc tính
khoá của lƣợc đồ khác
Ví dụ 2.15
Trong lƣợc đồ của quan hệ Muon, [Ma Sach] tham chiếu đến khoá chính
[Ma Sach] trong lƣợc đồ của quan hệ Sach, và [Doc Gia] tham chiếu đến
![Page 67: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/67.jpg)
Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ 51
khoá chính [Doc Gia] trong lƣợc đồ của quan hệ Doc_gia. Cơ sở dữ liệu
thư viện sau vi phạm ràng buộc khoá ngoại này:
r1 ( D C ) r2 ( S B ) r3 ( S D )
d1 c1 s1 4 s1 d1
d2 c2 s2 5 s4 d3
d3 c3 s3 9 s2 d5
3. Ràng buộc liên quan hệ, liên thuộc tính. Là mở rộng của ràng buộc
liên thuộc tính trong trƣờng hợp các thuộc tính này nằm ở các bảng
khác nhau
Ví dụ 2.16
Giả sử thuộc tính số bản đang mượn (M) đƣợc lƣu trong một quan hệ khác
với quan hệ mượn, khi ấy quy tắc 3 là một ràng buộc liên quan hệ, liên
thuộc tính. Chẳng hạn ta có quan hệ r4(SM) lƣu số bản đang đƣợc mƣợn;
cơ sở dữ liệu sau vi phạm quy tắc 3
r2 ( S B) r3 ( D S N) r4 ( S M )
s1 3 d1 s1 n1 s1 3
s2 4 d1 s2 n1 s2 1
s3 6 d3 s1 n1
s4 3 d4 s1 n2
4. Ràng buộc liên quan hệ, liên bộ. Là mở rộng của ràng buộc liên bộ
trong trƣờng hợp các bộ này nằm ở các bảng khác nhau
Ví dụ 2.17
Với lƣợc đồ cơ sở dữ liệu ban đầu, quy tắc 3 (quy tắc không cho mượn nếu
số bản còn lại của sách bằng đúng 1) là một ràng buộc liên quan hệ, liên
bộ. Cơ sở dữ liệu thư viện sau vi phạm quy tắc 3 này
r1 ( D C ) r2 ( S B ) r3 ( S D N)
d1 c1 s1 4 s1 d1 n1
d2 c2 s2 5 s1 d3 n1
d3 c3 s3 9 s2 d3 n2
Nhƣ vậy việc cho một lƣợc đồ cơ sở dữ liệu ngoài các lƣợc đồ quan hệ, về
mặt thực tiễn, chúng còn bị ràng buộc bởi các quy tắc mà cơ sở dữ liệu
![Page 68: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/68.jpg)
52 Giáo trình cơ sở dữ liệu
phải thỏa27
. Đứng trên quan điểm thực hành chúng ta quan tâm nhiều đến
các ràng buộc toàn vẹn. Ta có định nghĩa.
Định nghĩa 2.5
1. Lược đồ cơ sở dữ liệu D là một tập các lược đồ quan hệ {R1, R2,..., Rp}
trong đó mỗi lược đồ quan hệ Ri ngoài tập thuộc tính ra còn phát biểu
một vị từ mà ở đây ta sẽ gọi là tân từ trong đó có ẩn chứa các ràng
buộc toàn vẹn.
2. Cơ sở dữ liệu d định nghĩa trên lược đồ cơ sở dữ liệu D = {R1, R2,...,
Rp} là họ các quan hệ d = {r1, r2,..., rp} với ri là quan hệ trên Ri và thoả
tân từ của quan hệ.
Ví dụ 2.18
Mô hình dữ liệu của cơ sở dữ liệu kế toán có thể đƣợc cho nhƣ sau :
Cho danh sách các thuộc tính
TKSO CHAR(5)
TKTEN CHAR(25)
CTSO CHAR(8)
NGAY_LAP DATE
NOI_DUNG CHAR(50)
VIET_CHO CHAR(25)
TKNO CHAR(5)
TKCO CHAR(5)
SO_TIEN INT(20)
Danh sách các quan hệ cùng các lƣợc đồ quan hệ tƣơng ứng
TK( TKSO, TKTEN )
Tân từ: Quan hệ tài khoản (TK) lƣu thể hiện của các thực
thể tài khoản. Mỗi thể hiện tài khoản có một tài khoản số
(TKSO) nhằm phân biệt các tài khoản với nhau và một tài
khoản tên (TKTEN) cho ngƣời dùng biết ý nghĩa của tài
khoản này.
CHTU (CTSO, NGAY_LAP, NOI_DUNG, VIET_CHO)
Tân từ: Quan hệ chứng từ (CT) lƣu thể hiện của các thực thể
chứng từ. Mỗi thể hiện chứng từ có một chứng từ số
27 Hệ quản trị cơ sở dữ liệu lƣu đặc tả của các thuộc tính, các lƣợc đồ quan hệ cũng nhƣ
các ràng buộc toàn vẹn trong từ điển dữ liệu.
![Page 69: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/69.jpg)
Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ 53
(CTSO) để phân biệt các chứng từ với nhau; với một chứng
từ cần thiết phải lƣu các thông tin bắt buộc gồm có ngày lập
(NGAY_LAP), nội dung (NOI_DUNG) và tên người ký
nhận chứng từ (VIET_CHO)
CTCT (CTSO, TKNO, TKCO, SO_TIEN)
Tân từ: Quan hệ chi tiết chứng từ (CTCT) lƣu thể hiện của
các liên kết giữa chứng từ và tài khoản. Mỗi thể hiện chi tiết
chứng từ liên quan đến một chứng từ (CTSO) và hai tài
khoản (TKNO, TKCO); với một chi tiết chứng từ, bắt buộc
phải có một số tiền (SO_TIEN) đƣợc ghi nợ vào TKNO và
ghi có vào TKCO. Việc lập các chi tiết chứng từ phải thỏa
các quy tắc quản lý sau
(1) các tài khoản đƣợc ghi nợ hay có đều phải khác nhau
(2) chúng đều đã có trong quan hệ TK
(3) với tất cả các chi tiết của cùng một chứng từ nếu ghi nợ
vào nhiều tài khoản thì ghi có vào chỉ một tài khoản và
ngƣợc lại.
Ta có thể rút ra các ràng buộc
Khoá:
1. TKSO là khoá của TK
2. CTSO là khoá của CHTU
3. CTSO,TKNO,TKCO là khoá của CTCT
Khoá ngoại:
4. TKNO, TKCO trong CTCT chịu ràng buộc khoá ngoại TKSO trong
TK
5. CTSO trong CTCT chịu ràng buộc khoá ngoại CTSO trong CHTU
Ràng buộc khác:
6. Các thuộc tính NGAY_LAP, NOI_DUNG, VIET_CHO và SO_TIEN
phải thỏa ràng buộc khác rỗng
7. t CTCT, t.TKNO t.TKCO
8. t CHTU, t1, t2 {t‟ CTCT | t‟.[CTSO] = t.[CTSO]},
(t1.[TKNO] t2.[TKNO] t1.[TKNO] = t2.[TKNO])
Các ràng buộc toàn vẹn 1 từ đến 7 là rõ ràng, riêng ràng buộc thứ 8 có thể
viết lại dƣới dạng phủ định:
![Page 70: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/70.jpg)
54 Giáo trình cơ sở dữ liệu
t CHTU, t1, t2 {t‟ CTCT | t‟.[CTSO] = t.[CTSO]},
(t1.[TKNO] t2.[TKNO]) (t1.[TKNO] t2.[TKNO])
dạng này rồi sẽ đƣợc chuyển về một biểu thức quan hệ giúp kiểm tra ràng
buộc đƣợc dễ dàng hơn (xem bài tập).
Ví dụ 2.19
Xét cơ sở dữ liệu nhân viên với các lƣợc đồ quan hệ:
PHONG( MaPG, TenPG, SoDT )
Tân từ: Quan hệ phòng (PHONG) lƣu thể hiện của các thực
thể phòng. Mỗi thể hiện phòng có một mã phòng (MaPG),
nhằm phân biệt các phòng với nhau, một tên phòng (TenPG)
và một số điện thoại (SoDT).
NHAN_VIEN( MaNV, TenNV, MaPG, LaTP )
Tân từ: Quan hệ nhân viên (NHAN_VIEN) lƣu thể hiện của
các thực thể nhân viên. Mỗi thể hiện nhân viên có một mã
nhân viên (MaNV), nhằm phân biệt các nhân viên với nhau,
một tên nhân viên (TenNV), đƣợc xếp vào một phòng duy
nhất (MaPG) và đƣợc xác định có phải là trƣởng phòng hay
không (LaTP). Ngoài ra trong số các nhân viên cùng phòng
có một và chỉ một ngƣời làm trƣởng phòng.
Ta có thể rút ra các ràng buộc (ngoại trừ các ràng buộc khác trống, miền
giá trị)
Khoá:
1. MaPG là khoá của PHONG
2. MaNV là khoá của NHAN_VIEN
Khoá ngoại:
3. MaPG trong NHAN_VIEN chịu ràng buộc khoá ngoại MaPG trong
PHONG
Ràng buộc khác:
4. ∀𝑝 ∈ 𝑃𝐻𝑂𝑁𝐺,∃! 𝑛 ∈ 𝑁𝐻𝐴𝑁𝑉𝐼𝐸𝑁, 𝑝.𝑀𝑎𝑃𝐺 = 𝑛.𝑀𝑎𝑃𝐺 ⋀𝑛.𝐿𝑎𝑇𝑃
Cho đến lúc này chúng ta đã nắm đƣợc các yếu tố của mô hình cơ sở dữ
liệu quan hệ bao gồm lược đồ quan hệ, lược đồ cơ sở dữ liệu, ràng buộc
toàn vẹn. Chúng ta cũng phân biệt đƣợc sự khác nhau giữa khoá và siêu
![Page 71: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/71.jpg)
Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ 55
khoá, giữa khoá chính và các khoá thay thế, giữa khoá ngoại và ràng buộc
tồn tại. Có các ràng buộc đơn giản nhƣ khác trống, miền giá trị, liên thuộc
tính; có các ràng buộc giữa các dòng trong cùng một bảng; có các ràng
buộc phức tạp giữa các bảng khác nhau. Chúng ta cũng nhìn mô hình cơ sở
dữ liệu quan hệ dƣới cấu trúc đồ thị.
Với mô hình cơ sở dữ liệu quan hệ, dữ liệu đƣợc tổ chức lƣu trữ trong các
bảng với các ràng buộc nhằm bảo đảm tính nhất quán của dữ liệu. Dữ liệu
của một thực thể, mang tính nhất thể, có thể đƣợc lƣu trong nhiều bảng và
rất cần đƣợc phục hồi. Dữ liệu đƣợc lƣu trữ cần đƣợc khai thác hiệu quả.
Chúng ta đã biết bảng thực chất là một quan hệ. Với quan hệ chúng ta có
các phép toán. Việc tính toán mà biểu thức đƣợc tạo ra bởi các quan hệ và
các phép toán quan hệ là một tiếp cận rất khác. Trong phần còn lại của
chƣơng chúng ta sẽ học về các phép toán quan hệ và dùng chúng để giải
quyết các bài toán vừa đề cập: phục hồi dữ liệu và khai thác cơ sở dữ liệu.
4. Đại số quan hệ
Chúng ta đang làm việc với quan hệ, do đó chúng ta cần các thao tác trên
quan hệ. Về bản chất quan hệ là tập con trong không gian tích. Chúng ta sẽ
phải làm việc với các phép toán làm thay đổi lƣợc đồ và các phép toán liên
quan đến tập con. Quan hệ cùng với các phép toán quan hệ đƣợc gọi là đại
số quan hệ. Tại điểm này đại số quan hệ là ngôn ngữ cơ sở dữ liệu quan hệ
phù hợp nhất cho phép bỏ qua các chi tiết cài đặt.
4.1. Các ví dụ mở đầu
Ví dụ 2.20
Xét bài toán tính hoá đơn tiền điện của công ty điện lực. Cụ thể: cho các
bảng
Khách hàng (Mã KH Địa chỉ Tiêu thụ) Định mức (Từ Đến Giá)
01 134 NTT 120 1 100 80
02 242/4 TBT 250 101 150 100
03 33 PH 80 151 200 150
201 400 200
Hãy phát sinh bảng
![Page 72: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/72.jpg)
56 Giáo trình cơ sở dữ liệu
Chi tiết tiêu thụ (Mã KH Tiêu thụ thực Giá Thành tiền)
01 100 80 8000
01 20 100 2000
02 100 80 8000
02 50 100 5000
02 50 150 7500
02 50 200 10000
03 80 80 6400
Ở đây từ 2 lƣợc đồ (Mã KH, Địa chỉ, Tiêu thụ) và (Từ, Đến, Giá) chúng ta
phải tạo ra lƣợc đồ mới (Mã KH, Tiêu thụ, Giá, Thành tiền), từ hai quan hệ
Khách hàng và Định mức chúng ta phát sinh ra quan hệ mới Chi tiết tiêu
thụ. Thử khảo sát quá trình sau:
Tích Khách hàng với Định mức
r1 (Mã KH Địa chỉ Tiêu thụ Từ Đến Giá)
01 134 NTT 120 1 100 80
01 134 NTT 120 101 150 100
01 134 NTT 120 151 200 150
01 134 NTT 120 201 400 200
02 242/4 TBT 250 1 100 80
02 242/4 TBT 250 101 150 100
02 242/4 TBT 250 151 200 150
02 242/4 TBT 250 201 400 200
03 33 PH 80 1 100 80
03 33 PH 80 101 150 100
03 33 PH 80 151 200 150
03 33 PH 80 201 400 200
Chỉ những dòng thể hiện có tiêu thụ trong mức tƣơng ứng mới đƣợc tính
toán. Chọn trên r1 những dòng thể hiện chỉ số sử dụng thực, đó là Tiêu thụ
Từ, ta có
r2 (Mã KH Địa chỉ Tiêu thụ Từ Đến Giá)
01 134 NTT 120 1 100 80
01 134 NTT 120 101 150 100
02 242/4 TBT 250 1 100 80
02 242/4 TBT 250 101 150 100
02 242/4 TBT 250 151 200 150
02 242/4 TBT 250 201 400 200
03 33 PH 80 1 100 80
![Page 73: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/73.jpg)
Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ 57
Tính toán chỉ số sử dụng thực: tiêu thụ thực = min (tiêu thụ, đến) – từ + 1,
và tiền phải trả cho mỗi mức: thành tiền = tiêu thụ thực giá, rồi chiếu
xuống các thuộc tính cần thiết, ta đƣợc kết quả cuối cùng
Chi tiết tiêu thụ (Mã KH Tiêu thụ thực Giá Thành tiền)
01 100 80 8000
01 20 100 2000
02 100 80 8000
02 50 100 5000
02 50 150 7500
02 50 200 10000
03 80 80 6400
Chúng ta đã từng đề cập đến việc nhìn các lƣợc đồ quan hệ dƣới cấu trúc
đồ thị. Ở đây chúng ta thấy có cạnh nối hai lƣợc đồ quan hệ ban đầu. Cạnh
này cho phép chúng ta thực hiện phép toán đúng đắn (phép kết) để thu
đƣợc các dữ liệu giải bài toán.
Ví dụ dƣới đây sẽ giới thiệu cho chúng ta hình dung các phép toán trƣớc
khi chúng ta thực sự làm việc với chúng.
Ví dụ 2.21
Giả sử dữ liệu của công ty Mỹ Gia đƣợc lƣu trong các bảng sau đây
Chi nhánh (Mã CN, Địa chỉ, Quận-Huyện, Tỉnh-Thành, Số DT, Số fax)
Lƣu thông tin các chi nhánh, mỗi chi nhánh một dòng
Nhân viên (Mã NV,Họ,Tên, Địa chỉ, Số DT, Chức vụ, Ngày sinh, Lương,
SBH số, Mã CN)
Lƣu thông tin nhân viên và liên kết giữa nhân viên với chi nhánh
Chủ nhà (Mã chủ nhà, Họ, Tên, Địa chỉ, Số DT)
Lƣu thông tin các chủ nhà, mỗi chủ nhà một dòng
Nhà cho thuê (Mã Nhà, Địa chỉ, Quận-Huyện, Tỉnh-Thành, Kiểu nhà, Số
lượng phòng, Giá thuê, Mã chủ nhà, Mã CN, Mã NV)
Lƣu thông tin nhà cho thuê và các liên kết giữa nhà cho thuê với chủ
nhà, với chi nhánh và với nhân viên
Khách hàng (Mã KH, Họ, Tên, Địa chỉ, Số DT, Nhu cầu, Khả năng)
Lƣu thông tin các khách hàng, mỗi khách hàng một dòng
Xem nhà (Mã KH, Mã Nhà, Ngày xem, Nhận xét)
![Page 74: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/74.jpg)
58 Giáo trình cơ sở dữ liệu
Lƣu liên kết giữa khách hàng và nhà sau khi xem, một khách hàng xem
một nhà chỉ một lần duy nhất
Giả sử chúng ta đƣợc yêu cầu trả lời một số câu hỏi. Với ngôn ngữ cơ sở
dữ liệu quan hệ chúng ta có thể chỉ ra các biểu thức mà không quan tâm
đến chi tiết cài đặt. Nhƣ vậy, với mỗi yêu cầu sau đây, chúng ta thử chỉ ra
các bảng tham gia vào biểu thức và dùng các phép toán thích hợp để đƣa ra
bảng dẫn xuất kết quả.
1. Liệt kê danh sách tất cả nhân viên có lƣơng lớn hơn 5 triệu
Bảng tham gia vào biểu thức là Nhân viên còn phép toán là phép chọn
2. Đƣa ra danh sách lƣơng của tất cả nhân viên, thông tin gồm mã nhân
viên, họ tên nhân viên và lương
Bảng tham gia vào biểu thức là Nhân viên còn phép toán là phép chiếu
3. Liệt kê danh sách các tỉnh - thành phố hoặc có chi nhánh hoặc có nhà
cho thuê nhƣng chƣa có chi nhánh
Xuất hiện các đối tƣợng tỉnh - thành phố nhƣng không có bảng riêng
cho chúng. Chúng đƣợc lƣu trong các liên kết, chẳng hạn với chi nhánh
và với nhà cho thuê. Hai tập con, tỉnh - thành phố có chi nhánh và tỉnh -
thành phố có nhà cho thuê, đƣợc phát sinh bằng phép chiếu trên các
bảng Chi nhánh và Nhà cho thuê; sau đó phép toán hợp cho chúng ta
kết quả mong muốn
4. Đƣa ra danh sách các thành phố có chi nhánh nhƣng chƣa có nhà cho
thuê
Giống câu 3, nhƣng phép toán cuối là phép hiệu
5. Liệt kê họ, tên và nhận xét của tất cả khách hàng đã có cuộc thăm viếng
nhà
Rõ ràng chúng ta cần lấy ra các liên kết, giữa khách hàng và nhà, chúng
đƣợc lƣu trong bảng Xem nhà. Tuy nhiên họ, tên của các khách hàng có
tham gia tạo nên các liên kết này lại đƣợc lƣu ở bảng Khách hàng.
Phép nối 2 bảng đƣợc gọi là phép kết (trong toán có phép hợp thành).
Nhƣ vậy các phép toán đƣợc sử dụng ở đây là phép kết và phép chiếu
6. Đƣa ra một báo cáo về tình trạng của các ngôi nhà đang chờ thuê qua
kết quả viếng thăm của khách hàng, kể cả những ngôi nhà khách không
có ý kiến gì cũng nhƣ những ngôi nhà chƣa đƣợc thăm lần nào
![Page 75: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/75.jpg)
Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ 59
Nhà có thể đƣợc thăm viếng, khi ấy cơ sở dữ liệu sẽ lƣu các liên kết,
giữa nó với khách hàng, vào bảng Xem nhà dù có nhận xét hay không.
Vẫn còn những ngôi nhà chƣa đƣợc khách hàng nào đến thăm; với
chúng chƣa có liên kết nào xuất hiện và do đó cũng không có nhận xét
(dữ liệu không có đƣợc ký hiệu là null). Chúng ta cần phép hợp giữa
các liên kết thật giữa nhà và khách hàng với các liên kết rỗng giữa nhà
với giá trị null của những ngôi nhà chƣa có ai đến xem (có thể dùng
phép hiệu)
7. Liệt kê đầy đủ các thông tin của tất cả nhân viên làm việc tại chi nhánh
Nha trang.
Chúng ta cần lấy ra tập con của các liên kết, giữa nhân viên và chi
nhánh, chúng đƣợc lƣu ngay trong bảng Nhân viên. Tuy nhiên điều
kiện để chọn lại đƣợc lƣu ở bảng Chi nhánh. Nhƣ vậy các phép toán
đƣợc sử dụng ở đây là phép kết và phép chọn
8. Tìm tất cả những ngƣời thuê đã thăm tất cả các ngôi nhà có 3 phòng.
Trƣớc hết chúng ta cần thấy rõ đây là nhóm khách hàng đặc biệt, mỗi
khách hàng trong nhóm này có viếng thăm tất cả những ngôi nhà 3
phòng. Xét những khách hàng không thuộc nhóm này ta thấy sẽ tồn tại
một ngôi nhà có 3 phòng mà họ chƣa đến xem, tức là không đƣợc lƣu
trong bảng Xem nhà. Vậy phép toán ở đây là phép lấy phần bù của
những khách hàng không thuộc nhóm.
Giờ đây chúng ta đã sẵn sàng cho việc khảo sát các phép toán quan hệ.
Chúng ta sẽ tìm hiểu thấu đáo các phép toán rồi trả lời các câu hỏi ở trên
sau.
Với quan hệ, chúng ta dùng các phép toán để đƣa ra các quan hệ dẫn xuất.
Vì quan hệ là tập con chúng ta có các phép toán hợp, giao, hiệu và bù.
Mặt khác, một số quan hệ có các tính chất cho phép ta phân rã thành các
quan hệ cấp thấp có thể phục hồi lại đƣợc; các phép toán ở đây là chiếu,
chia và kết. Cuối cùng, việc xử lý dữ liệu là mục tiêu quan trọng ta cần đến
phép chọn và các phép toán số học cũng nhƣ các hàm tính toán.
4.2. Các phép toán tập hợp: hợp, giao, hiệu và bù
Ta đã biết quan hệ là tập con của tập tích, cho nên có thể định nghĩa các
phép toán về tập hợp thông thƣờng nhƣ hợp, giao, hiệu và bù. Tuy nhiên,
cần phải làm rõ tập tích này mới định nghĩa phép toán bù đƣợc hiệu quả.
Chúng ta sẽ bắt đầu mục này bằng một chuẩn bị.
![Page 76: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/76.jpg)
60 Giáo trình cơ sở dữ liệu
Xét lƣợc đồ quan hệ R, ta có dom(R) là toàn bộ tập tích tuy có lực lƣợng
hữu hạn nhƣng lại quá lớn cho một ứng dụng nào đó, hơn nữa sẽ xuất hiện
rất nhiều phần tử (bộ) vô nghĩa đối với ứng dụng này. ở đây, chúng ta cần
xác định một tập tích khác là tập con của dom(R), gọi là adom(R), nhƣng
bao hàm tất cả các quan hệ khả dĩ tại thời điểm đang xét.
Định nghĩa 2.6
Cho quan hệ r định nghĩa trên lược đồ R = {A1 ,A2 , ..., An}, định nghĩa:
1. adom(Aj , r ) = {d Dj | t r, t.Aj = d}
2. adom(R, r )= adom(A1, r ) adom(A2, r ) ... adom(An, r )
Ví dụ 2.22
Cho hai quan hệ r,s trên lƣợc đồ quan hệ R = (ABC) :
r (A B C ) s ( A B C)
a1 b1 c1 a1 b2 c1
a1 b2 c1 a2 b2 c1
a2 b1 c2 a2 b2 c2
Kết quả r s, r s và r\s nhƣ sau :
rs ( A B C ) r s ( A B C ) r\s ( A B C )
a1 b2 c1 a1 b1 c1 a1 b1 c1
a1 b2 c1 a2 b1 c2
a2 b1 c2
a2 b2 c1
a2 b2 c2
Coi dom(A)={a1, a2 }; dom(B)={b1, b2, b3} và dom(C)={c1, c2} thì :
dom(R) (A B C ) dom(R)\r ( A B C)
a1 b1 c1 a1 b1 c2
a1 b1 c2 a1 b2 c2
a1 b2 c1 a1 b3 c1
a1 b2 c2 a1 b3 c2
a1 b3 c1 a2 b1 c1
a1 b3 c2 a2 b2 c1
a2 b1 c1 a2 b2 c2
a2 b1 c2 a2 b3 c1
a2 b2 c1 a2 b3 c2
a2 b2 c2
a2 b3 c1
a2 b3 c2
![Page 77: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/77.jpg)
Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ 61
Bằng cách tính adom(A) = {a1, a2 }; adom(B) = {b1, b2 } và adom(C) =
{c1, c2} ta có:
adom(R) (A B C ) adom(R)\r ( A B C)
a1 b1 c1 a1 b1 c2
a1 b1 c2 a1 b2 c2
a1 b2 c1 a2 b1 c1
a1 b2 c2 a2 b2 c1
a2 b1 c1 a2 b2 c2
a2 b1 c2
a2 b2 c1
a2 b2 c2
Định nghĩa 2.7
Quan hệ adom(R)\r được gọi là phần bù thực sự của r trên R, ký hiệu là
r(R).
Lƣu ý phép hợp (do đó phép bù cũng vậy) không bảo toàn các khoá chỉ
định.
Ví dụ 2.23
Cho hai quan hệ r,s trên lƣợc đồ quan hệ R=(ABC) với khoá AB:
r (A B C ) s ( A B C)
a1 b1 c1 a1 b1 c1
a1 b2 c1 a2 b2 c1
a2 b2 c2 a1 b2 c2
Kết quả r s sau đây vi phạm khoá AB:
r s ( A B C )
a1 b1 c1
a1 b2 c1
a2 b2 c2
a2 b2 c1
a1 b2 c2
4.3. Phép chọn
Cho lƣợc đồ quan hệ R, p là một biểu thức logic định nghĩa trên các thuộc
tính của R đƣợc gọi là điều kiện p. Cho quan hệ r trên R, mỗi t r thì t
hoặc thoả p hoặc không. Với p, ta có mệnh đề “t thoả p” và gọi p(t) là chân
trị của mệnh đề này.
![Page 78: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/78.jpg)
62 Giáo trình cơ sở dữ liệu
Định nghĩa 2.8
Cho r(R) và điều kiện p. Phép chọn trên r các bộ thỏa điều kiện p, ký hiệu
là p(r), được định nghĩa như sau:
p(r) = {tr | p(t)}
Ví dụ 2.24
Cho quan hệ
r (N F T D A)
n1 c1 c2 d1 a1
n2 c2 c1 d2 a2
n3 c1 c3 d3 a3
n4 c2 c4 d4 a4
n5 c4 c1 d5 a5
với p = (F=c2) ta có
F=c2(r) (N F T D A)
n2 c2 c1 d2 a2
n4 c2 c4 d4 a4
4.4. Phép chiếu
Định nghĩa 2.9
Cho r(R), X R. Phép chiếu r lên X, ký hiệu là X(r) hay r[X], được định
nghĩa:
X(r) = r[X] = {t.X, tr}
Ví dụ 2.25
Lấy r ở ví dụ trên, với X=DA, ta có:
DA(r) (D A)
d1 a1
d2 a2
d3 a3
d4 a4
d5 a5
![Page 79: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/79.jpg)
Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ 63
4.5. Phép kết
Trƣớc khi đi vào chi tiết, chúng ta nhắc lại một chút về quan hệ. Cho hai
tập X và Y. Một quan hệ R định nghĩa trên X và Y là một tập con của tập
tích XY. Với (x, y) thuộc R, ta nói x có quan hệ R với y và ký hiệu là x R y.
Nhƣ vậy khi nói đến quan hệ R chúng ta nghĩ đến tập tích và một điều kiện
cho biết một phần tử có thuộc R hay không (tức có phải là thành viên của R
không). Các phép kết đƣợc cài đặt cho mục đích này. Trong đó điều kiện
để một phần tử có thuộc R hay không đóng vai trò cốt yếu. Với nhận xét
này bản chất của các phép kết dƣới đây là chỉ ra điều kiện thành viên28
.
Kết tự nhiên
Định nghĩa 2.10
Cho r1(R1), r2(R2), coi S=R1R2, R=R1UR2. Phép kết tự nhiên trên hai
quan hệ r1 và r2, ký hiệu là r1 ⋈ r2, được định nghĩa như sau:
r1 ⋈ r2 (R) = {t(R)| t1r1 và t2r2, t.R1=t1, t.R2=t2 }
Ví dụ 2.26
Cho hai quan hệ r, s trên hai lƣợc đồ quan hệ R = (AC), S = (BC):
r (A C ) s (B C )
a1 c1 b1 c3
a1 c2 b1 c1
a2 c1 b2 c2
a2 c2 b3 c1
a3 c3 b3 c2
ta có : r ⋈ s ( A B C )
a1 b1 c1
a1 b3 c1
a1 b2 c2
a1 b3 c2
a2 b1 c1
a2 b3 c1
a2 b2 c2
a2 b3 c2
a3 b1 c3
28 Lƣu ý, trong thực hành, dùng phép tích trƣớc rồi phép chọn sau sẽ có độ phức tạp tính
toán lớn hơn rất nhiều so với dùng phép kết.
![Page 80: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/80.jpg)
64 Giáo trình cơ sở dữ liệu
Quy ƣớc. Nếu S = thì r1 ⋈ r2 là tích Descartes thông thƣờng.
Tính chất 1: Tính chất của phép kết
1. Tính kết hợp : (r1 ⋈ r2) ⋈ r3 = r1 ⋈ (r2 ⋈ r3).
2. Tính giao hoán r1 ⋈ r2 = r2 ⋈ r1.
Tính chất này cho phép khi viết các phép toán chúng ta không bận tâm đến
thứ tự của các quan hệ đóng vai trò toán hạng.
Tính chất 2: Một số tính chất khác
1. Cho r(R), s(S) và AR ta có
A=a(r ⋈ s) = A=a(r) ⋈ s.
2. Cho r(R, r’(R) và s(S) ta có
(r \ r’) ⋈ s = (r ⋈ s) \ (r’ ⋈ s).
(r r’) ⋈ s = (r ⋈ s) (r’ ⋈ s).
Các tính chất này cho phép ta thay đổi thứ tự thực hiện phép toán để làm
giảm độ phức tạp tính toán hay, nói cách khác, tối ƣu hoá biểu thức.
Ví dụ 2.27
Cho cơ sở dữ liệu thư viện {s(STAB), b(BD), g(OGC), m(OSN)}, trong đó
S, T, A, B, D, O, G, C và N là viết tắt của mã Sách, Tên sách, tác giả, nhà
xuất Bản, Địa chỉ nhà xuất bản, số thẻ, tên độc Giả, địa Chỉ độc giả và
Ngày mượn tƣơng ứng. Giả sử ta muốn có một quan hệ r(T) gồm danh sách
tên những cuốn sách đã được cho mượn trước ngày n.
Biểu thức sau là đúng
T
N<n
⋈
m(OSN) s(STAB)
![Page 81: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/81.jpg)
Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ 65
Nhƣng biểu thức sau, thực hiện phép chọn trƣớc, vừa đúng vừa tối ƣu hơn
T
⋈
N<n s(STAB)
m(OSN)
Một quan hệ có một số tính chất nào đó cho phép ta phân rã nhƣng vẫn có
thể tái tạo lại sau này một cách đầy đủ29
. Ta có bài toán sau
Bài toán 1: phân rã bảo toàn thông tin
1. Cho r(R), xét R1,R2 R sao cho R = R1R2, đặt r1=r[R1] và r2=r[R2] và
với r‟= r1 ⋈ r2 ta có r r‟. Câu hỏi đặt ra là khi nào thì r‟ r nghĩa là r
= r‟ ?
2. Tập = {R1, R2} nhƣ trên đƣợc gọi là một phân rã. Bài toán có thể phát
biểu một cách tổng quát với phân rã = {R1,R2 ,..., Rp }, trong đó
R1,R2,..., Rp R và R = R1R2…Rp, nhƣ sau: đặt ri=r[Ri] xét r‟= r1 ⋈ r2
⋈ ... ⋈ rp khi nào thì r = r‟ ?.
Định nghĩa 2.11
Phân rã là bảo toàn thông tin (Lossless Join decomposition) nếu mọi r(R)
ta có r = r’.
Ví dụ 2.28
Cho r trên R=(ABC) :
r ( A B C )
a1 b1 c1
a1 b2 c1
a2 b1 c1
29 Đối tƣợng thể hiện trong hệ thống qua dữ liệu, rõ ràng toàn bộ dữ liệu của đối tƣợng
trong ngữ cảnh nào đó cần đƣợc phục hồi trọn vẹn.
![Page 82: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/82.jpg)
66 Giáo trình cơ sở dữ liệu
Coi ={(AC),(BC)} và phân rã r theo , ta đƣợc :
r1 (A C ) r2 (B C )
a1 c1 b1 c1
a2 c1 b2 c1
Bây giờ ta kết chúng lại thành r‟= r1 ⋈ r2, ta có:
r‟ ( A B C )
a1 b1 c1
a1 b2 c1
a2 b1 c1
a2 b2 c1
quan sát thấy r r’ do đó là một phân rã không bảo toàn thông tin.
Ngoài ra ta còn quan tâm đến bài toán ngƣợc của bài toán phân rã bảo toàn
thông tin ở trên gọi là bài toán kết đầy đủ.
Bài toán 2: kết đầy đủ
1. Cho r1(R1), r2(R2). Coi R = R1R2 đặt r = r1 ⋈ r2, xét r‟1=r[R1] và
r‟2=r[R2] ta luôn có r‟1 r1 và r‟2 r2. Khi nào thì điều ngƣợc lại xảy
ra nghĩa là r‟1 = r1 và r‟2 = r2 ?
2. Bài toán có thể phát biểu tổng quát cho p>2 quan hệ: cho ri(Ri) (i=1..p),
coi R=R1R2..Rp đặt r = r1 ⋈ r2 ⋈ ... ⋈ rp xét r‟i = r[Ri] (i=1..p) khi nào
thì r‟i = ri i ?
Định nghĩa 2.12
Phân rã là thỏa tính chất kết đầy đủ nếu mọi ri(R) ta có ri = r’i.
Ví dụ 2.29
Cho hai quan hệ r1 , r2 trên hai lƣợc đồ quan hệ R1 =AC và R2 =BC :
r1 (A C ) r2 (B C )
a1 c1 b1 c1
a1 c2
Ta có r = r1⋈ r2 ( A B C )
a1 b1 c1
Bây giờ r‟1 =r[R1] (A C )
a1 c1
r‟2 =r[R2] (B C )
b1 c1
![Page 83: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/83.jpg)
Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ 67
quan sát thấy r1 r‟1.
Hai quan hệ đã cho là không thoả tính chất kết đầy đủ và do đó = {(AC),
(BC)} là một phân rã không thỏa tính chất kết đầy đủ.
Phép kết tƣơng đƣơng
Khác với phép kết tự nhiên buộc phải thoả hai điều kiện :
1. Chỉ trên các thuộc tính cùng tên
2. Tất cả các thuộc tính cùng tên
Phép kết tƣơng đƣơng cho phép mở rộng :
1. Hai thuộc tính khác tên nhƣng các giá trị của chúng có thể so sánh
với nhau .
2. Không nhất thiết phải so sánh trên tất cả các thuộc tính chung.
Ví dụ 2.30
Cho hai quan hệ r1 , r2 trên hai lƣợc đồ quan hệ R1 = AB và R2 = CD :
r1 (A B ) r2 (C D )
a1 1 1 d1
a2 2 2 d3
a3 1 3 d1
a1 2
kết quả thực hiện phép kết tƣơng đƣơng với B = C nhƣ sau
r = r1 ⋈[B=C] r2 ( A B C D )
a1 1 1 d1
a2 2 2 d3
a3 1 1 d1
a1 2 2 d3
Phép kết theta
Coi (theta) là một trong các toán tử so sánh nhƣ , , , , ... chúng ta
đƣa ra phép kết mở rộng hơn đƣợc gọi là phép kết theta trong đó các thuộc
tính không chỉ so sánh bằng mà còn so sánh bởi một trong số các toán tử so
sánh nói trên.
Ví dụ 2.31
Thực hiện phép kết theta với A<C trên r1 , r2
![Page 84: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/84.jpg)
68 Giáo trình cơ sở dữ liệu
r1 (A B ) r2 (C D )
1 b1 1 d1
2 b2 2 d3
3 b1 3 d1
1 b2
r = r1 ⋈[A<C] r2 ( A B C D )
1 b1 2 d3
1 b1 3 d1
2 b2 3 d1
1 b2 2 d3
1 b2 3 d1
Phép kết ngoài
Trong kết quả trả về của phép kết ngoài có cả các bộ không kết đƣợc.
Ví dụ 2.32
Với r1 , r2 ở ví dụ trên, ta có các phép kết ngoài: kết trái ⋊𝐶 , kết phải ⋉𝐶 ,
kết ngoài ×𝐶 (phép kết ngoài luôn có điều kiện, dù là kết tự nhiên, để
phân biệt với tích Descartes)
r = r1 ⋊ 𝐴>𝐶 r2 ( A B C D )
1 b1 null null
2 b2 1 d1
3 b1 1 d1
3 b1 2 d3
1 b2 null null
r = r1 ⋉ 𝐴>𝐶 r2 ( A B C D )
2 b2 1 d1
3 b1 1 d1
3 b1 2 d3
null null 3 d1
r = r1 × 𝐴>𝐶 r2 ( A B C D )
1 b1 null null
2 b2 1 d1
3 b1 1 d1
3 b1 2 d3
1 b2 null null
null null 3 d1
![Page 85: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/85.jpg)
Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ 69
Phép kết một phía
Giống phép kết nhƣng lƣợc đồ kết quả trùng với lƣợc đồ của quan hệ bị
kết, nhƣ đƣợc minh hoạ trong ví dụ sau.
Ví dụ 2.33
Vẫn hai quan hệ r1 , r2 đƣợc cho ở các ví dụ trên, ta có:
r = r1 ⊳[A > C] r2 ( A B )
2 b2
3 b1
3 b1
r = r1 ⊲[A > C] r2 ( C D )
1 d1
2 d3
4.6. Phép chia
Định nghĩa 2.13
Cho r(R), s(S) với SR. Coi R’=R\S. Phép chia r cho s ký hiệu là rs cho
ta quan hệ:
r‟(R‟) = {t | tss, tr r với tr (R‟) = t và tr (S) = ts }
Ví dụ 2.34
Cho r trên R=(ABC) và s trên S=(C) nhƣ sau:
r ( A B C ) s ( C )
a1 b1 c1 c1
a1 b2 c2 c2
a1 b1 c3
a1 b2 c1
a1 b2 c3
a1 b1 c2
a2 b1 c1
a2 b1 c3
ta có r‟= rs ( A B )
a1 b1
a1 b2
Chú ý, bản chất của phép chia là phép chọn. Thay vì nói 𝑟 ÷ 𝑠, chúng ta có
thể nói tìm những bộ t thuộc r[R’] thoả điều kiện 𝑠 ⊂ 𝜋𝑆 𝜍𝑅′ =𝑡 .𝑅′ 𝑟 . Ở ví
![Page 86: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/86.jpg)
70 Giáo trình cơ sở dữ liệu
dụ trên r[R’] gồm có 3 bộ là {(a1, b1), (a1, b2), (a2, b1)}. Chúng ta chọn
bộ (a1, b1) vì 𝜋𝑆 𝜍𝐴=𝑎1,𝐵=𝑏1 𝑟 gồm các giá trị {c1, c3, c2} chứa s. Điều
này cũng đúng đối với bộ (a1, b2) nhƣng không đúng đối với bộ (a2, b1).
Ví dụ 2.35
Xét yêu cầu chọn những sinh viên biết tiếng Anh và Pháp.
Với lƣợc đồ r(SAPH) ta dùng phép chọn,
Với lƣợc đồ r(SN) ta dùng phép chia hoặc phép chọn với điều kiện
chọn là quan hệ bao hàm giữa hai tập con.
4.7. Tính toán
Trên cùng một dòng
Bằng cách dùng tên cột thay cho biến trong biểu thức tính toán.
Ví dụ 2.36
Với r ( A B C)
a1 1 3
a2 2 4
a3 2 3
Ta có
r[A, S = B + C] ( A S )
a1 4
a2 6
a3 5
Trên cùng một cột
Để thực hiện tính toán này chúng ta phải nhóm các dòng lại thành các
nhóm, theo giá trị của một hoặc nhiều thuộc tính, rồi dùng các hàm tổng
(aggregate) sau đây:
Sum (tính tổng)
Avg (tính trung bình)
Max (tính giá trị lớn nhất)
…
Ký hiệu gGf thực hiện phép toán f trên cột nào đó với tập giá trị trên các
dòng đƣợc nhóm lại theo điều kiện e. Ví dụ sau minh hoạ
![Page 87: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/87.jpg)
Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ 71
Ví dụ 2.37
Với
r ( A B )
a1 1
a1 3
a2 1
a2 2
a1 2
a2 4
Ta có
AGS = sum(B) (r)[A, S] ( A S )
a1 6
a2 7
AGM = max(B) (r)[A, M] ( A M )
a1 3
a2 4
5. Dùng đại số quan hệ
Trong mục này chúng ta dùng đại số quan hệ để giải các bài toán tính toán
trên quan hệ. Chúng ta sẽ minh hoạ qua ví dụ tính tiền điện và trả lời các
câu hỏi của cơ sở dữ liệu Mỹ Gia, đƣợc đặt ra ở mục 4.1.
5.1. Các chiến lƣợc
Mục tiêu cuối cùng của chúng ta là đƣa ra một biểu thức đại số quan hệ.
Đây là một tiếp cận rất khác so với các tính toán trên số thông thƣờng30
và
chúng ta cần một số chiến lƣợc giải quyết vấn đề thuộc loại này31
.
1. Phân rã thành các câu hỏi con;
2. Nhìn lƣợc đồ cơ sở dữ liệu dƣới cấu trúc đồ thị để thấy các phép
kết;
30 Chẳng hạn tìm số thực x sao cho x + 5 = 4 là quen thuộc, nhƣng bài toán tìm tập con X của tập E sao cho X ∩ A = B, trong đó A và B cũng là các tập con của E, rõ ràng là khá xa
lạ. 31
Những chiến lƣợc, đƣợc giới thiệu ở đây, đƣợc rút ra từ kinh nghiệm của tác giả trong
thời gian dài giải quyết các bài toán bằng đại số quan hệ.
![Page 88: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/88.jpg)
72 Giáo trình cơ sở dữ liệu
3. Xác định loại so sánh
a. Giữa hai giá trị
b. Giữa giá trị và quan hệ
c. Giữa hai quan hệ
4. Xây dựng biểu thức đại số qua 4 bƣớc (trong đó 3 bƣớc đầu rất
quan trọng, tập hợp đầy đủ dữ liệu cho bƣớc thứ 4):
a. Xác định lƣợc đồ kết quả;
b. Xác định con đƣờng truy xuất (dùng chiến lƣợc 2);
c. Xác định điều kiện chọn (dùng chiến lƣợc 3);
d. Tính toán (thêm thuộc tính hoặc giá trị của các nhóm)
5. Phát biểu các mệnh đề chỉ dùng lƣợng từ tồn tại.
Trong nhiều trƣờng hợp, khi mà biểu thức phức tạp, chúng ta sẽ dùng các
biểu thức trung gian. Ngoài ra, trong trƣờng hợp tổng quát, chúng ta có thể
phải cần đến các cấu trúc tuần tự, rẽ nhánh và lặp32
.
5.2. Tính tiền điện
Ký hiệu M, I, U, D và G thay cho Mã KH, Tiêu thụ, Từ, Đến, và Giá. Ký
hiệu s0 và s1 là Tiêu thụ và Định mức. Lấy lại dữ liệu cũ:
s0 (M I ) s1 (U D G)
01 120 1 100 80
02 250 101 150 100
03 80 151 200 150
201 400 200
Giải:
Xác định lược đồ. Chúng ta cần tính lƣợng tiêu thụ thực tế của mỗi
định mức. Lƣợng này đƣợc tính từ I, U và D. Nhƣ vậy lƣợc đồ là
(M, I, U, D, G).
Xác định con đường truy xuất. Dùng chiến lƣợc 2, cạnh nối giữa
hai quan hệ là điều kiện I ≥ U.
32 Xây dựng các thủ tục trong đó các chỉ thị là các câu đại số quan hệ là chủ đề khác nằm
ngoài phạm vi tài liệu này (xem các tài liệu về lập trình cơ sở dữ liệu hay các hệ quản trị
cơ sở dữ liệu)
![Page 89: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/89.jpg)
Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ 73
Xác định điều kiện chọn. Không có
Nhƣ vậy sau 3 bƣớc, chúng ta có kết quả tập hợp dữ liệu:
r = s0⋈(I U)s1 (M I U D G)
01 120 1 100 80
01 120 101 150 100
02 250 1 100 80
02 250 101 150 100
02 250 151 200 150
02 250 201 400 200
03 80 1 100 80
Tính toán dòng. Thêm thuộc tính T = GN và N = min(I, D) – U + 1:
s = r[M, N = if(I<D, I, D) – U + 1, G, T = G*N]
= (s0⋈(I U)s1) [M, N = if(I<D, I, D) – U + 1, G, T = G*N]
(M N G T)
01 100 80 8000
01 20 100 2000
02 100 80 8000
02 50 100 5000
02 50 150 7500
02 50 200 10000
03 80 80 6400
Tính toán cột. Nhóm các dòng theo mã khách hàng, tính tổng tiền phải
trả cho mỗi nhóm bằng hàm sum:
(MGS = sum(T) s )[M, S] (M S)
01 10000
02 30500
03 6400
Nhƣ vậy để giải bài toán tính tiền điện chúng ta có thể dùng duy nhất
một biểu thức đại số quan hệ (khó hiểu)
(MGS = sum(T) ((s0⋈(I U)s1) [M, N = if(I<D, I, D) – U + 1, G, T = G*N])
)[M, S]
Hoặc dùng nhiều biểu thức đại số quan hệ (dễ hiểu hơn)
r = s0⋈(I U)s1
s = r[M, N = if(I<D, I, D) – U + 1, G, T = G*N]
(MGS = sum(T) s )[M, S]
![Page 90: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/90.jpg)
74 Giáo trình cơ sở dữ liệu
5.3. Công ty Mỹ Gia
Chúng ta đã có các gợi ý về phép toán. Mục này sử dụng các chiến lƣợc đã
nêu giải một số câu phức tạp.
Viết lại lƣợc đồ cơ sở dữ liệu
Chi nhánh (Mã CN, Địa chỉ, Quận-Huyện, Tỉnh-Thành, Số DT,
Số fax)
Nhân viên (Mã NV, Họ, Tên, Địa chỉ, Số DT, Chức vụ, Ngày
sinh, Lương, SBH số, Mã CN)
Chủ nhà (Mã chủ nhà, Họ, Tên, Địa chỉ, Số DT)
Nhà cho thuê (Mã Nhà, Địa chỉ, Quận-Huyện, Tỉnh-Thành, Kiểu
nhà, Số lượng phòng, Giá thuê, Mã chủ nhà, Mã CN,
Mã NV)
Khách hàng (Mã KH, Họ, Tên, Địa chỉ, Số DT, Nhu cầu, Khả
năng)
Xem nhà (Mã KH, Mã Nhà, Ngày xem, Nhận xét)
Giải:
Một số câu phức tạp.
1. Liệt kê danh sách các tỉnh - thành phố hoặc có chi nhánh hoặc có nhà
cho thuê nhƣng chƣa có chi nhánh
Phân rã thành 2 câu hỏi con (a) Các tỉnh - thành phố có chi nhánh,
(b) Các tỉnh - thành phố có nhà cho thuê và dùng phép hợp;
Cả hai có lƣợc đồ chung là (Tỉnh-Thành)
Với (a) dữ liệu lấy từ Chi nhánh
Với (b) dữ liệu lấy từ Nhà cho thuê
𝐶𝑖 𝑛á𝑛 𝑇ỉ𝑛 − 𝑇à𝑛 ∪ 𝑁à 𝑐𝑜 𝑡𝑢ê 𝑇ỉ𝑛 − 𝑇à𝑛
2. Liệt kê họ, tên và nhận xét của tất cả khách hàng đã có cuộc thăm viếng
nhà
Lƣợc đồ là (Họ, Tên, Nhận xét);
Hai quan hệ liên quan là Xem nhà và Khách hàng. Cạnh nối giữa
chúng là kết tự nhiên;
𝑋𝑒𝑚 𝑛à ⋈ 𝐾á𝑐 à𝑛𝑔 𝐻ọ,𝑇ê𝑛,𝑁ậ𝑛 𝑥é𝑡
![Page 91: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/91.jpg)
Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ 75
3. Đƣa ra một báo cáo về tình trạng của các ngôi nhà đang chờ thuê qua
kết quả viếng thăm của khách hàng, kể cả những ngôi nhà khách không
có ý kiến gì cũng nhƣ những ngôi nhà chƣa đƣợc thăm lần nào
Phân thành 2 câu hỏi con (a) Nhà có khách thăm có hoặc không có
ý kiến (b) Nhà chƣa có khách thăm;
Lƣợc đồ là (Mã Nhà, Mã KH, Nhận xét) trong đó Mã KH và Nhận
xét nhận giá trị NULL nếu chƣa có khách thăm;
𝑟1⋃ 𝑟2
với
𝑟1 = 𝑋𝑒𝑚 𝑛à 𝑀ã 𝑁à,𝑀ã 𝐾𝐻,𝑁ậ𝑛 𝑥é𝑡 𝑟2 = 𝜍𝑀ã 𝑁à∉𝑟𝑁à 𝑐𝑜 𝑡𝑢ê 𝑀ã 𝑁à,𝑀ã 𝐾𝐻,𝑁ậ𝑛 𝑥é𝑡 𝑟 = 𝑁à 𝑐𝑜 𝑡𝑢ê 𝑀ã 𝑁à
Giả sử thử tìm cạnh nối hai quan hệ có liên quan là Xem nhà và
Nhà cho thuê, chúng ta thấy cạnh này đƣợc hình thành từ phép kết
ngoài (trái hoặc phải tuỳ thứ tự kết):
𝑋𝑒𝑚 𝑛à ⋉ 𝑁à 𝑐𝑜 𝑡𝑢ê 𝑀ã 𝑁à,𝑀ã 𝐾𝐻,𝑁ậ𝑛 𝑥é𝑡
5.4. Kiểm tra ràng buộc toàn vẹn
Ràng buộc toàn vẹn là một mệnh đề. Dùng chiến lƣợc 5, chúng ta đƣa về
biểu thức đại số quan hệ.
Xét lƣợc đồ R với tân từ P. Giả sử ta có quan hệ r(R). Khi ấy:
∀𝑡 ∈ 𝑟,𝑃 𝑡 ↔ ∃𝑡 ∈ 𝑟,𝑃 𝑡 ↔ 𝑡 ∈ 𝑟,𝑃 𝑡 = ∅
Chúng ta có câu đại số quan hệ kiểm tra r thỏa tân từ P:
𝜍𝑃 𝑟 = ∅
Với các ràng buộc phức tạp chúng ta hoàn toàn có thể áp dụng cách làm
nhƣ vậy.
Ví dụ 2.38
Kiểm tra ràng buộc tồn tại.
∀𝑡 ∈ 𝑟,∃𝑡 ′ ∈ 𝑠, 𝑡 ′ .𝐴 = 𝑡.𝐴
Giải:
Ta thấy ngay biểu thức đại số
![Page 92: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/92.jpg)
76 Giáo trình cơ sở dữ liệu
𝑟 𝐴 ⊂ 𝑠 𝐴
↔ 𝑟 𝐴 − 𝑠 𝐴 = ∅
↔ 𝜍𝐴∉𝑠 𝐴 𝑟 = ∅
Có một cách làm khác hữu dụng trong trƣờng hợp tổng quát khi mà phép
trừ là không rõ ràng. Dùng chiến lƣợc 5, biến đổi:
∀𝑡 ∈ 𝑟,∃𝑡 ′ ∈ 𝑠, 𝑡 ′ .𝐴 = 𝑡.𝐴
↔ ∃𝑡 ∈ 𝑟,∀𝑡 ′ ∈ 𝑠, 𝑡 ′ .𝐴 ≠ 𝑡.𝐴
↔ ∃𝑡 ∈ 𝑟,∃𝑡 ′ ∈ 𝑠, 𝑡 ′ .𝐴 = 𝑡.𝐴
↔ 𝑡 ∈ 𝑟|𝑡.𝐴 ∉ 𝑡 ′ .𝐴|𝑡′ ∈ 𝑠 = ∅
Chúng ta vẫn trở lại câu đại số quan hệ kiểm tra ràng buộc tồn tại:
𝜍𝐴∉𝑠 𝐴 𝑟 = ∅
Chúng ta cũng có thể dùng phép kết:
𝜍𝑠.𝐴=𝑁𝑈𝐿𝐿 𝑟 ⋊ 𝑠 = ∅
Chúng ta cần một số kết quả để tiện sử dụng sau này.
Tổng quát
∀𝑥 ∈ 𝑟, 𝑝 𝑥 ↔ 𝜍𝑝 𝑟 = ∅
∃𝑥 ∈ 𝑟, 𝑝 𝑥 ↔ 𝜍𝑝 𝑟 ≠ ∅
∀𝑥 ∈ 𝑟,∃𝑦 ∈ 𝑠, 𝑝 𝑥, 𝑦 ↔ 𝑟 − 𝑟 ⋈𝑝 𝑠 𝑅 = ∅
∃𝑥 ∈ 𝑟,∀𝑦 ∈ 𝑠, 𝑝 𝑥, 𝑦 ↔ 𝑟 − 𝑟 ⋈𝑝 𝑠 𝑅 ≠ ∅
Ràng buộc tồn tại
𝑟 𝐴 ⊂ 𝑠 𝐴
↔ 𝑟 𝐴 − 𝑠 𝐴 = ∅
↔ 𝜍𝐴∉𝑠 𝐴 𝑟 = ∅
↔ 𝜍𝑠.𝐴=𝑁𝑈𝐿𝐿 𝑟 ⋊ 𝑠 = ∅
Ví dụ 2.39
Cơ sở dữ liệu ở ví dụ 2.19 có một ràng buộc (để đơn giản chúng tôi bỏ qua
yêu cầu duy nhất).
∀𝑝 ∈ 𝑟,∃𝑛 ∈ 𝑠, 𝑝.𝐴 = 𝑛.𝐴 ⋀𝑛.𝐵
Viết lại
∀𝑝 ∈ 𝑟,∃𝑛 ∈ 𝑠, 𝑛.𝐵, 𝑝.𝐴 = 𝑛.𝐴
![Page 93: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/93.jpg)
Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ 77
Chúng ta phát hiện đây là ràng buộc tồn tại, do đó ràng buộc đƣợc thỏa
mãn nếu:
𝑟 𝐴 − 𝜍𝐵𝑠 𝐴 = ∅
hoặc
𝜍𝑠.𝐴=𝑁𝑈𝐿𝐿 𝑟 ⋊ 𝜍𝐵𝑠 = ∅
Ví dụ 2.40
Cho hai quan hệ
r A s B
1 1
3 2
5 4
Có hay không các dòng trên r có giá trị A lớn hơn tất cả các giá trị B của s.
Giải:
Câu trả lời tƣơng đƣơng với mệnh đề sau
∃𝑥 ∈ 𝑟,∀𝑦 ∈ 𝑠,𝑥.𝐴 > 𝑦.𝐵
Suy ra câu đại số quan hệ là 𝑟 − 𝑟 ⋈𝑟 .𝐴≤𝑠.𝐵 𝑠 𝑅 = 1,3,5 − 1,3 = 5 ≠ ∅ đúng.
Chúng tôi kết thúc chương bằng một nhấn mạnh đến tiếp cận so sánh hơn
là tiếp cận mệnh đề. Lý do chính ở đây, ngoài tính dễ hiểu, nằm ở chỗ ngôn
ngữ hỏi (xem chương 3) có hỗ trợ phép so sánh giữa một giá trị (hoặc một
thuộc tính) và một quan hệ (truy vấn con); Nó cũng hỗ trợ việc kiểm tra
một quan hệ có rỗng hay không, cho phép chúng ta cài đặt trường hợp so
sánh giữa hai quan hệ bằng cách chuyển về so sánh một quan hệ với quan
hệ rỗng33
.
33 Chi tiết mời xem chƣơng 3
![Page 94: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/94.jpg)
78 Giáo trình cơ sở dữ liệu
TÓM TẮT
Mô hình cơ sở dữ liệu quan hệ dùng các lƣợc đồ quan hệ để biểu
diễn dữ liệu;
Các quy tắc quản lý đƣợc cài đặt trong mô hình quan hệ dƣới dạng
các ràng buộc toàn vẹn;
Khoá là một toàn vẹn thực thể, cho phép không lẫn lộn giữa các đối
tƣợng;
Ngƣời ta thƣờng chọn một khoá làm khoá chính;
Siêu khoá cũng cho phép xác định đối tƣợng, nhƣng khoá xác định
đối tƣợng với tập thuộc tính không thể bớt đƣợc;
Khoá ngoại là một toàn vẹn tham chiếu, ràng buộc sự tồn tại của
đối tƣợng này với đối tƣợng khác, cho phép xác định đối tƣợng
tham chiếu;
Khoá ngoại của một lƣợc đồ quan hệ là khoá trong lƣợc đồ quan hệ
khác;
Ràng buộc tồn tại là một ràng buộc có dạng bao hàm;
Ràng buộc khoá ngoại là một ràng buộc tồn tại nhƣng ngƣợc lại
không đúng;
Với các quan hệ chúng ta có đại số quan hệ thao tác trên chúng;
Một biểu thức đại số quan hệ gồm các quan hệ và các phép toán
quan hệ;
Hệ quản trị cơ sở dữ liệu hỗ trợ mô hình cơ sở dữ liệu quan hệ sẽ có
ngôn ngữ cơ sở dữ liệu thao tác dựa trên đại số quan hệ;
Xây dựng một biểu thức đại số quan hệ để cho ra một quan hệ lời
giải là khó và cần có các chiến lƣợc hỗ trợ;
Phân rã thành các câu hỏi con cho phép dễ viết nhiều biểu thức hơn
và cho ra thuật toán với các câu lệnh là biểu thức đại số quan hệ;
Nhìn lƣợc đồ cơ sở dữ liệu dƣới cấu trúc đồ thị cho phép nhận diện
phép kết;
Phép so sánh không phải giữa các giá trị mà còn thêm tập giá trị;
Quy trình ba bƣớc cho một biểu thức đại số quan hệ là quy trình tìm
phép toán theo thứ tự chiếu, kết và chọn;
Phát biểu các mệnh đề chỉ dùng lƣợng từ tồn tại cho phép chuyển
mệnh đề thành biểu thức đại số quan hệ, giúp kiểm tra ràng buộc
toàn vẹn.
![Page 95: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/95.jpg)
Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ 79
BÀI TẬP
1. Quan hệ sau lƣu dữ liệu của nhân viên (NV):
Nhân Viên
Mã NV Họ Tên HSL Chức vụ Phòng
N007 Nguyễn Văn Tâm 2.5 NViên Tiếp Thị
N126 Trần Minh 3.7 TPhòng Kinh Doanh
N143 Lê Thị Cẩm Tú 2.5 NViên Tiếp Thị
N024 Nguyễn Tuấn Tú 2.7 NViên Kinh Doanh
a. Xác định lƣợc đồ quan hệ, khoá chính.
b. Lƣợc đồ này có khoá ngoại không?
c. Lƣợc đồ này nên có các ràng buộc nào?
2. Cơ sở dữ liệu sau lƣu dữ liệu của nhân viên (NV) và của phòng (PG):
Phòng
Mã PG Tên Phòng Số Điện Thoại Mã TP
P01 Tiếp Thị 8423121 N126
P02 Kinh Doanh 8423241 N143
Nhân Viên
Mã NV Họ Tên HSL Chức vụ Mã PG
N007 Nguyễn Văn Tâm 2.5 NViên P01
N126 Trần Minh 3.7 TPhòng P02
N143 Lê Thị Cẩm Tú 2.5 NViên P01
N024 Nguyễn Tuấn Tú 2.7 NViên P02
Dữ liệu lƣu phải thoả các quy tắc sau:
Nhân viên phải thuộc về một phòng;
Phòng phải có trƣởng phòng;
Trƣởng phòng là nhân viên thuộc phòng.
![Page 96: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/96.jpg)
80 Giáo trình cơ sở dữ liệu
Hãy:
a. Chỉ ra các vi phạm (cơ sở dữ liệu không nhất quán, mâu thuẫn);
b. Với mỗi quy tắc, viết biểu thức đại số quan hệ tìm ra các vi
phạm;
c. Phát biểu các quy tắc trên thành các ràng buộc toàn vẹn, nếu
đƣợc;
d. Xây dựng lại lƣợc đồ cơ sở dữ liệu với các ràng buộc bảo đảm
cơ sở dữ liệu nhất quán.
3. Xác định khoá chính cho các lƣợc đồ quan hệ sau:
a. Đơn-Hàng (Đơn-Hàng-Số, Ngày-Đặt, Ngày-Giao, Trị-Giá). Giả
sử với mỗi ngày Đơn Hàng Số đƣợc bắt đầu lại từ 1;
b. Kho (Thành-Phố, Địa-Chỉ, Số-Điện-Thoại). Giả sử có thể có
nhiều kho trong cùng một thành phố;
c. Thanh-Toán (Mã-Khách-Hàng, Tài-Khoản, Số-Tiền, Ngày-
Thanh-Toán). Giả sử khách hàng có nhiều hơn một tài khoản,
nhƣng trong một ngày chỉ đƣợc phép sử dụng một tài khoản,
cho dù phải thanh toán nhiều lần.
4. Cho hai quan hệ:
r A B C s A B C
a 1 a a 1 a
b 1 b a 3 d
a 1 c
c 2 d
Xác định quan hệ kết quả từ các biểu thức sau:
a. 𝜍𝐴=𝑎 𝑟 b. 𝜋𝐴,𝐵 𝑟 c. 𝑟⋃𝑠
d. 𝑟 × 𝑠
e. 𝑟 − 𝑠
5. Cho r(A) = {a, b} và s(B) = {1, 2, 3}. Tính 𝑟 × 𝑠.
6. Cho r(A, B) = {(a, 1), (b, 2)}, s(B, C) = {(1, x), (1, y), (3, z)}. Tính
a. 𝑟 ⋈ 𝑠
b. 𝑟 ⋊ 𝑠
c. 𝑟 ⊳ 𝑠
![Page 97: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/97.jpg)
Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ 81
7. Cho r(A, B) = {(a, 1), (a, 2), (b, 1), (b, 2), (c, 1)}, s(B) = {1, 2}.
Tính 𝑟 ÷ 𝑠
8. Cho lƣợc đồ cơ sở dữ liệu với các lƣợc đồ quan hệ
a. Khách-Sạn (Mã-KS, Tên-KS, Địa-Chỉ-KS)
b. Phòng (Số-Phòng, Mã-KS, Loại-Phòng, Giá)
c. Khách-Hàng (Mã-KH, Tên-KH, Địa-Chỉ-KH)
d. Đặt-Phòng (Mã-KS, Mã-KH, Ngày-Đến, Ngày-Đi, Số-Phòng)
Viết biểu thức đại số quan hệ:
a. Liệt kê danh sách các khách sạn;
b. Liệt kê danh sách các phòng đơn có giá dƣới 120;
c. Liệt kê tên và địa chỉ của tất cả khách hàng;
d. Liệt kê giá và loại phòng của tất cả các phòng của khách sạn Rex;
e. Liệt kê tất cả khách hàng hiện đang ở khách sạn Rex.
9. Trong kế toán, với mỗi dòng trong bảng (quan hệ) Nhật-Ký, ta phát
sinh hai dòng trong bảng (quan hệ) Sổ-Cái nhƣ đƣợc minh hoạ trong ví
dụ sau:
Nhật Ký
CT Gốc Ngày Nội Dung TKCó TKNợ Số Tiền
PN01 14/05/08 Mua hàng 111 156 30000
HD03 16/04/08 Bán hàng 511 111 12000
Sổ Cái
TK Nội Dung Ngày Tiền Nợ Tiền Có DU CT Gốc
111 Mua hàng 14/05/08 0 30000 156 PN01
156 Mua hàng 14/05/08 30000 0 111 PN01
511 Bán hàng 16/04/08 0 12000 111 HD03
111 Bán hàng 16/04/08 12000 0 511 HD03
Viết biểu thức đại số quan hệ tạo quan hệ Sổ-Cái từ quan hệ Nhật-Ký.
![Page 98: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/98.jpg)
82 Giáo trình cơ sở dữ liệu
10. Viết biểu thức đại số quan hệ trả lời cho mỗi câu hỏi liên quan đến cơ
sở dữ liệu Mỹ Gia đƣợc nêu trong mục 5.2.
11. Cuối phần mô hình, chúng ta có đề cập đến việc phát biểu ràng buộc
dƣới dạng mệnh đề chỉ có lƣợng từ tồn tại. Hãy phát biểu các mệnh đề
sau dƣới dạng nhƣ vậy:
a. ∀𝑥 ∈ 𝑟,𝑃(𝑥)
b. ∀𝑥 ∈ 𝑟,∃𝑦 ∈ 𝑠,𝑃(𝑥,𝑦)
c. ∃𝑥 ∈ 𝑟,∀𝑦 ∈ 𝑠,𝑃(𝑥,𝑦)
d. Phép chia 𝑟 ÷ 𝑠
12. Cho một ví dụ về ràng buộc dạng ∀𝑥 ∈ 𝑟,∃𝑦 ∈ 𝑠,𝑃(𝑥,𝑦). Viết câu đại
số quan hệ chỉ ra các vi phạm, nếu có.
13. Ví dụ 2.39 chƣa giải quyết trọn vẹn ràng buộc trong ví dụ 2.19. Hãy
thực hiện điều này.
14. Cài đặt phép chia qua các phép toán khác.
Hai câu sau cần đƣợc giảng viên mô tả bài toán và cách giải trƣớc khi sinh
viên có thể dùng đại số quan hệ để giải.
15. Dùng đại số quan hệ giải bài toán phân cụm dữ liệu.
16. Dùng đại số quan hệ giải bài toán quy hoạch nguyên với miền ràng
buộc bị chận.
![Page 99: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/99.jpg)
Chƣơng 3 Ngôn ngữ cơ sở dữ liệu SQL
Mục tiêu của chƣơng.
Trong chƣơng này chúng ta sẽ học về:
Ngôn ngữ con định nghĩa dữ liệu;
Ngôn ngữ con thao tác dữ liệu;
Ngôn ngữ con truy vấn dữ liệu;
Ngôn ngữ con kiểm soát truy xuất;
Vai trò của khung nhìn;
Cài đặt đại số quan hệ;
Kiểm tra ràng buộc toàn vẹn;
Giải quyết vấn đề bằng ngôn ngữ con truy vấn dữ liệu.
Với mô hình cơ sở dữ liệu quan hệ chúng ta có một ngôn ngữ hình thức
(đại số quan hệ) làm việc với các quan hệ. Chƣơng này giới thiệu một ngôn
ngữ cơ sở dữ liệu quan hệ thực đƣợc xây dựng, nhƣ là một chuẩn, trong
các hệ quản trị cơ sở dữ liệu quan hệ, đó là ngôn ngữ Structured Query
Language (viết tắt là SQL).
SQL là một ngôn ngữ phi thủ tục bao gồm: ngôn ngữ con định nghĩa dữ
liệu (DDL: Data Define Language), ngôn ngữ con thao tác dữ liệu (DML:
Data Manipulation Language), ngôn ngữ con kiểm soát truy xuất (DCL:
Data Control Language) và ngôn ngữ con truy vấn dữ liệu (QL: Query
Language)34
.
Cho đến lúc này chúng ta cũng chỉ biết, tƣơng đối đầy đủ, một mô hình dữ
liệu duy nhất là mô hình cơ sở dữ liệu quan hệ. Với mô hình này chúng ta
thấy dữ liệu dƣới dạng các lƣợc đồ quan hệ, cùng với các ràng buộc toàn
vẹn. Với chúng ta, mô hình quan niệm35
dễ đọc hơn so với mô hình vật lý
34 Thƣờng thì DML và QL đƣợc nhập lại thành một và gọi chung là DML. 35 Chúng ta đã từng đề cập đến việc dùng mô hình thực thể kết hợp để biểu diễn cơ sở dữ liệu mức quan niệm (chƣơng 1). Tuy nhiên, chúng ta hiện biết quá ít về mô hình này, cho
nên tạm dùng mô hình cơ sở dữ liệu quan hệ mức logic để biểu diễn mức quan niệm.
![Page 100: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/100.jpg)
84 Giáo trình cơ sở dữ liệu
nhờ ở tính trừu tƣợng cao. Theo đó, miền giá trị của các thuộc tính trong
các lƣợc đồ quan hệ có thể vắng mặt hoặc không phụ thuộc kiểu dữ liệu
của một hệ quản trị cơ sở dữ liệu cụ thể nào; cũng vậy, các ràng buộc đƣợc
phát biểu tự nhiên hơn gần gũi với các quy tắc quản lý. Tuy nhiên, để hệ
quản trị cơ sở dữ liệu xây dựng đƣợc cơ sở dữ liệu, chúng ta cần phải có
mô hình cơ sở dữ liệu mức vật lý (mức trong). Với mức vật lý, chúng ta có
đủ thông tin36
làm việc với hệ quản trị cơ sở dữ liệu để tạo và quản trị cơ
sở dữ liệu.
Trong phạm vi tài liệu này, chúng tôi tập trung vào việc giải bài toán phục
hồi thông tin và khai thác cơ sở dữ liệu bằng ngôn ngữ con truy vấn dữ liệu
hay ngôn ngữ hỏi.
1. Giới thiệu case study
Chúng ta sẽ dùng mô hình cơ sở dữ liệu quản lý tồn kho sau đây để minh
họa các thao tác dùng ngôn ngữ hỏi. Mô hình đƣợc trình bày ở mức vật lý
nhƣ sau:
Bảng hàng hoá lƣu danh mục hàng hoá:
HANG_HOA (
MA_HANG CHAR(10),
TEN_HANG CHAR(20),
DV_TINH CHAR(20),
GIA INT)
Trong đó MA_HANG là khoá chính; TEN_HANG, DV_TINH và GIA
đều khác rỗng; GIA phải là một số nguyên dƣơng; Tạo một index trên
TEN_HANG.
Bảng tồn kho lƣu thời điểm kiểm kê và lƣợng tồn lúc đó, theo từng mặt
hàng một:
TON (
MA_HANG CHAR(10),
NGAY_KK DATE,
L_TON INT)
36 Gồm các kiểu dữ liệu, các ràng buộc toàn vẹn, các chỉ mục, …
![Page 101: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/101.jpg)
Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL 85
Trong đó {MA_HANG, NGAY_KK} là khoá chính; L_TON khác rỗng
và là một số nguyên dƣơng; MA_HANG là khoá ngoại tham chiếu đến
khoá chính MA_HANG trong bảng HANG_HOA; tạo một index trên
NGAY_KK;
Bảng phiếu nhập lƣu danh mục phiếu nhập:
PHIEU_NHAP (
PN_SO CHAR(10),
NGAY_NHAP DATE)
Trong đó PN_SO là khoá chính; NGAY_NHAP khác rỗng;
Bảng chi tiết nhập lƣu lƣợng nhập của các mặt hàng theo từng phiếu
nhập:
CT_NHAP (
PN_SO CHAR(10),
MA_HANG CHAR(10),
L_NHAP INT)
Trong đó {PN_SO, MA_HANG} là khoá chính; L_NHAP dƣơng và
khác rỗng; MA_HANG là khoá ngoại tham chiếu đến khoá chính
MA_HANG trong bảng HANG_HOA; PN_SO là khoá ngoại tham
chiếu đến khoá chính PN_SO trong bảng PHIEU_NHAP;
Bảng hoá đơn lƣu danh mục hoá đơn bán hàng:
HOA_DON (HD_SO CHAR(10), NGAY_LAP DATE)
Trong đó HD_SO là khoá chính; NGAY_LAP khác rỗng;
Bảng chi tiết hoá đơn lƣu lƣợng bán của các mặt hàng theo từng hoá
đơn:
CT_BAN (
HD_SO CHAR(10),
MA_HANG CHAR(10),
L_BAN INT)
Trong đó {HD_SO, MA_HANG} là khoá chính; L_BAN dƣơng, khác
rỗng; MA_HANG và HD_SO là các khoá ngoại tham chiếu đến các
khoá chính MA_HANG và HD_SO trong các bảng HANG_HOA và
HOA_DON tƣơng ứng.
![Page 102: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/102.jpg)
86 Giáo trình cơ sở dữ liệu
Ngoài ra chúng ta còn có ràng buộc “Xét thời điểm D tuỳ ý, với mặt hàng H
nào đó, gọi T là lượng tồn của H tại thời điểm D, ta phải có T > 0”.
Ta có lƣợc đồ cơ sở dữ liệu mức logic dƣới dạng đồ thị trực quan nhƣ sau:
2. Ngôn ngữ con định nghĩa dữ liệu (DDL)
Với mô hình cơ sở dữ liệu mức trong, còn đƣợc gọi là lƣợc đồ cơ sở dữ
liệu (SCHEMA) hay cơ sở dữ liệu (DATABASE), chúng ta có các đối
tƣợng cơ sở dữ liệu nhƣ: miền giá trị (DOMAIN), bảng (TABLE), ràng
buộc toàn vẹn (CONSTRAINT), khung nhìn (VIEW) và chỉ mục
(INDEX).
Ngôn ngữ con DDL cho phép chúng ta làm việc với hệ quản trị cơ sở dữ
liệu để tạo, hủy hoặc điều chỉnh các đối tƣợng cơ sở dữ liệu nói trên kể cả
bản thân cơ sở dữ liệu hay lƣợc đồ cơ sở dữ liệu. Bảng sau cho ta cái nhìn
tổng quan về ngôn ngữ con DDL.
OBJECT DDL
CREATE ALTER DROP
DOMAIN √ √ √
TABLE √ √ √
VIEW √ √
INDEX √ √
SCHEMA √ √
Riêng ràng buộc toàn vẹn, đƣợc làm việc qua các câu lệnh CREATE và
ALTER trên các đối tƣợng DOMAIN và TABLE.
![Page 103: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/103.jpg)
Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL 87
2.1. Kiểu dữ liệu
Theo chuẩn ISO, có 6 kiểu dữ liệu đƣợc xây dựng sẵn:
Kiểu dữ liệu Mô tả
Xâu ký tự
Dãy nhị phân
Số chính xác
Số gần đúng
Ngày giờ
Khoảng
CHAR, VARCHAR
BIT, BIT VARRYING
NUMERIC, DEC, INT, SMALLINT
FLOAT, REAL, DOUBLE
DATE, TIME, TIMESTAMP
INTERVAL
Với mỗi kiểu dữ liệu chúng ta luôn có miền giá trị và các phép toán kèm
theo. Việc chọn miền giá trị nào cho các thuộc tính đều phải xem xét đủ 2
yếu tố này, chẳng hạn số hoá đơn hay số điện thoại nên dùng kiểu xâu ký
tự (tại sao?).
Chúng ta có các khai báo chi tiết nhƣ sau
Kiểu xâu ký tự
CHAR
CHAR (<length>)
VARCHAR
VARCHAR (<length>)
Kiểu dãy nhị phân
BIT
BIT (<length>)
BIT VARYING
BIT VARYING (<length>)
Kiểu số chính xác
NUMERIC
NUMERIC (<precision>)
NUMERIC (<precision, scale>)
DEC
DEC (<precision>)
![Page 104: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/104.jpg)
88 Giáo trình cơ sở dữ liệu
DEC (<precision, scale>)
INT
SMALLINT
Kiểu số gần đúng
FLOAT
FLOAT (<precision>)
REAL
DOUBLE
Kiểu ngày tháng
DATE
TIME
TIME (<time_precision>)
TIME WITH TIME ZONE
TIME (<time_precision>) WITH TIME ZONE
TIMESTAMP
TIMESTAMP (<time_precision>)
TIMESTAMP WITH TIME ZONE
TIMESTAMP (<time_precision>) WITH TIME ZONE
Kiểu khoảng
INTERVAL <start> TO <end>
INTERVAL <start>
INTERVAL SECOND
YEAR | MONTH | DAY | HOUR |
Chúng ta sẽ khảo sát ngôn ngữ con DDL và dùng nó tạo ra lƣợc đồ cơ sở
dữ liệu:
Tạo cơ sở dữ liệu (lƣợc đồ cơ sở dữ liệu) rỗng;
Định nghĩa miền giá trị;
Tạo bảng (quan hệ và lƣợc đồ quan hệ);
Khai báo các ràng buộc toàn vẹn;
Định nghĩa các chỉ mục.
![Page 105: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/105.jpg)
Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL 89
2.2. Tạo cơ sở dữ liệu
Với ngôn ngữ cơ sở dữ liệu quan hệ, lƣợc đồ (cơ sở dữ liệu) bao gồm tất cả
các đối tƣợng cơ sở dữ liệu nhƣ
Cú pháp
CREATE SCHEMA <tên lƣợc đồ> [AUTHORIZATION <tên
ngƣời dùng>]
DROP SCHEMA <tên lƣợc đồ> [RESTRICT | CASCADE]
CREATE DATABASE <tên cơ sở dữ liệu> [AUTHORIZATION
<tên ngƣời dùng>]
Ví dụ 3.1
Tạo lƣợc đồ cơ sở dữ liệu QLTK:
CREATE DATABASE qltk
2.3. Định nghĩa miền giá trị
Về mặt toán học
𝐷 = 𝑥 ∈ 𝑇 𝑝(𝑥)
Trong đó T là kiểu dữ liệu (hoặc một miền giá trị đã đƣợc định nghĩa
trƣớc) và p là một vị từ. Khi ấy, D sẽ thừa hƣởng các phép toán của T.
Chẳng hạn, với tập các điểm số:
𝐷 = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 = 𝑥 ∈ ℕ 0 ≤ 𝑥 ≤ 10
Các phép toán số học trên số nguyên có thể đƣợc áp dụng cho các phần tử
của D.
Cú pháp
CREATE DOMAIN <tên miền> AS <tên kiểu> CHECK (<điều
kiện>)
CREATE DOMAIN <tên miền> AS <tên kiểu> DEFAULT <giá
trị mặc định> CHECK (<điều kiện>)
DROP DOMAIN <tên miền> [ RESTRICT | CASCADE]
![Page 106: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/106.jpg)
90 Giáo trình cơ sở dữ liệu
Ví dụ 3.2
CREATE DOMAIN sex_type AS CHAR CHECK (VALUE IN (‘M’, ‘F’))
CREATE DOMAIN grade_type AS INT CHECK (VALUE BETWEEN 0
AND 10)
Ví dụ 3.3
Tạo kiểu số lượng cho các thuộc tính L_NHAP, L_BAN, L_TON:
CREATE DOMAIN sl_type AS INT CHECK (VALUE > 0)
Tạo kiểu mã số cho các thuộc tính MA_HANG, HD_SO, PN_SO:
CREATE DOMAIN ID_type AS CHAR(10)
2.4. Tạo bảng (quan hệ và lƣợc đồ quan hệ)
Lƣợc đồ quan hệ gồm danh sách thuộc tính, kèm miền giá trị của mỗi thuộc
tính. Miền giá trị của thuộc tính có thể là kiểu dữ liệu, là miền đƣợc định
nghĩa trƣớc, hoặc định nghĩa ngay lúc tạo bảng.
Cú pháp
Tạo bảng chỉ với danh sách các thuộc tính
CREATE TABLE <tên bảng> (
<tên thuộc tính> <miền giá trị> [ ,<tên thuộc tính> < miền
giá trị> […]]
)
Ví dụ 3.4
Tạo bảng hàng hoá:
CREATE TABLE HANG_HOA (
MA_HANG ID_type,
TEN_HANG CHAR(20),
DV_TINH CHAR(20),
GIA INT)
![Page 107: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/107.jpg)
Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL 91
Tạo bảng tồn kho:
CREATE TABLE TON (
MA_HANG ID_type,
NGAY_KK DATE,
L_TON sl_type)
Nhƣ đã đề cập trong chƣơng 1, hệ quản trị cơ sở dữ liệu sẽ hỗ trợ một mô
hình dữ liệu cho phép phát sinh câu lệnh từ phần tử mô hình. Chẳng hạn,
hệ quản trị cơ sở dữ liệu SQLServer có hỗ trợ mô hình cơ sở dữ liệu quan
hệ nên một phần mềm hỗ trợ thiết kế sẽ dựa vào đó mà phát sinh câu lệnh
create table đúng cú pháp từ lƣợc đồ quan hệ.
Ví dụ 3.5
Xét quan hệ hàng hoá với lƣợc đồ mức vật lý đƣợc đặc tả nhƣ sau:
HANG_HOA (MA_HANG CHAR(10),
TEN_HANG CHAR(20),
DV_TINH CHAR(20),
GIA INT)
Trong đó MA_HANG là khoá chính; TEN_HANG, DV_TINH và GIA
đều khác rỗng; GIA phải là một số giữa 10 và 100.
Dùng phần mềm hỗ trợ thiết kế Power Designer (PD), ta có lƣợc đồ
trực quan:
Một khi các yếu tố vật lý đã đƣợc đặc tả đầy đủ PD sẽ phát sinh câu
lệnh SQL37
:
37 Cú pháp phụ thuộc vào hệ quản trị nào đƣợc chọn.
![Page 108: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/108.jpg)
92 Giáo trình cơ sở dữ liệu
create table HANGHOA (
MA_HG ID_TYPE not null,
TEN_HG text not null,
DV_TINH text not null,
GIA int null
constraint CKC_GIA_HANGHOA check (GIA is null or (GIA
between 10 and 100)),
constraint PK_HANGHOA primary key nonclustered (MA_HG))
Rõ ràng lƣợc đồ trực quan, dù có cho thấy thêm các đặc tả mức vật lý, về
bản chất, nó vẫn chỉ là lƣợc đồ logic.
Với các đặc tả phức tạp hơn, PD có thể phát sinh nhiều hơn một câu lệnh
định nghĩa dữ liệu cho một lƣợc đồ quan hệ.
Ví dụ 3.6
Bảng chi tiết nhập lƣu lƣợng nhập của các mặt hàng theo từng phiếu
nhập:
CT_NHAP (
PN_SO CHAR(10),
MA_HANG CHAR(10),
L_NHAP INT)
Trong đó {PN_SO, MA_HANG} là khoá chính; L_NHAP khác rỗng;
MA_HANG là khoá ngoại tham chiếu đến khoá chính MA_HANG
trong bảng HANG_HOA; PN_SO là khoá ngoại tham chiếu đến khoá
chính PN_SO trong bảng PHIEU_NHAP.
Ta có lƣợc đồ trực quan:
Một khi các yếu tố vật lý đã đƣợc đặc tả đầy đủ PD sẽ phát sinh các
câu lệnh SQL:
![Page 109: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/109.jpg)
Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL 93
Định nghĩa bảng ở mức tối thiểu:
create table CT_NHAP (
PN_SO ID_TYPE not null,
MA_HG ID_TYPE not null,
LNHAP SL_TYPE not null,
constraint PK_CT_NHAP primary key (PN_SO, MA_HG)
)
Khai báo ràng buộc khoá ngoại với hàng hoá:
alter table CT_NHAP
add constraint FK_CT_NHAP_CT_NHAP2_HANGHOA foreign key
(MA_HG)
references HANGHOA (MA_HG) on update cascade
Định nghĩa các chỉ mục:
create index NHAP_FK on CT_NHAP (PN_SO ASC)
create index NHAP2_FK on CT_NHAP (MA_HG ASC)
Định nghĩa cách kiểm tra ràng buộc khoá ngoại với phiếu nhập:
Ngữ cảnh của ràng buộc này là 2 bảng: PHNHAP và CT_NHAP.
Với bảng PHNHAP, ràng buộc chịu ảnh hƣởng bởi các thao tác thêm
và sửa:
create trigger TI_NHAP on CT_NHAP for insert as begin
declare @numrows int, @numnull int
select @numrows = @@rowcount
if @numrows = 0 return
if update(PN_SO) begin
if (select count(*) from PHNHAP t1, inserted t2
where t1.PN_SO = t2.PN_SO) != @numrows
goto error
![Page 110: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/110.jpg)
94 Giáo trình cơ sở dữ liệu
end
return
error:
rollback transaction
end
create trigger TU_NHAP on CT_NHAP for update as begin
declare @numrows int, @numnull int,
select @numrows = @@rowcount
if @numrows = 0 return
if update(PN_SO)begin
if (select count(*) from PHNHAP t1, inserted t2
where t1.PN_SO = t2.PN_SO) != @numrows
goto error
end
return
error:
rollback transaction
end
Đoạn mã trên chỉ mang tính giới thiệu không nằm trong phạm vi của tài
liệu này.
2.5. Khai báo các ràng buộc toàn vẹn
Các ràng buộc gồm:
1. Khác rỗng
2. Miền giá trị
3. Khoá chính
4. Khoá
5. Khoá ngoại
6. Quy tắc quản lý
![Page 111: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/111.jpg)
Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL 95
Cú pháp
Thêm miền giá trị, khoá chính, khoá ứng viên, khoá ngoại và quy tắc quản
lý
ALTER TABLE <tên bảng> ADD CONSTRAINT <tên ràng
buộc>
CHECK (<biểu thức điều kiện>)
ALTER TABLE <tên bảng> ADD CONSTRAINT <tên ràng
buộc>
PRIMARY KEY (<danh sách thuộc tính>)
ALTER TABLE <tên bảng> ADD CONSTRAINT <tên ràng
buộc>
UNIQUE (<danh sách thuộc tính>)
ALTER TABLE <tên bảng> ADD CONSTRAINT <tên ràng
buộc>
FOREIGN KEY (<danh sách thuộc tính>)
REFERENCES <tên bảng> (<danh sách thuộc tính>)
ON DELETE {SET NULL| NO ACTION | SET DEFAULT
| CASCADE}
ON UPDATE {SET NULL| NO ACTION| SET DEFAULT|
CASCADE }
CREATE ASSERTION <tên quy tắc> CHECK (<điều kiện>)
Ví dụ 3.7
Khai báo các ràng buộc toàn vẹn cho bảng hàng hoá
ALTER TABLE HANG_HOA
ADD CONSTRAINT HH_PK PRIMARY KEY (MA_HANG)
ALTER TABLE HANG_HOA
ALTER COLUMN TEN_HANG NOT NULL
ALTER TABLE HANG_HOA
ADD CONSTRAINT C_GIA CHECK (GIA>0)
Khai báo các ràng buộc toàn vẹn cho bảng tồn kho
ALTER TABLE TON
ADD CONSTRAINT TON_PK PRIMARY KEY (MA_HANG,
NGAY_KK)
![Page 112: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/112.jpg)
96 Giáo trình cơ sở dữ liệu
ALTER TABLE TON
ADD CONSTRAINT TON_HH_FK FOREIGN KEY (MA_HANG)
REFERENCES HANG_HOA(MA_HANG)
Ví dụ 3.8
CREATE ASSERTION siSo CHECK (NOT EXISTS (
SELECT classID
FROM student
GROUP BY classID
HAVING COUNT(*) > 50))
2.6. Tạo bảng với các ràng buộc toàn vẹn
Tạo bảng ngoài danh sách thuộc tính còn có thêm các ràng buộc toàn vẹn
Ví dụ 3.9
1. Tạo bảng với ràng buộc khoá chính và khác rỗng
CREATE TABLE HOA_DON (
HD_SO ID_type, NGAY_LAP DATE,
CONSTRAINT HD_PK PRIMARY KEY (HD_SO),
CONSTRAINT C_NLAP CHECK ( NGAY_LAP is NOT NULL))
2. Tạo bảng với ràng buộc miền giá trị và khoá ứng viên
CREATE TABLE HANG_HOA (
MA_HANG ID_type PRIMARY KEY,
TEN_HANG Text(20) UNIQUE,
DV_TINH Text(20) NOT NULL,
GIA INT NOT NULL,
CONSTRAINT C_GIA CHECK (GIA>0))
ở đây ngoài các phép toán so sánh hai ngôi chúng ta có thể dùng
phép so sánh bất đẳng thức kép x BETWEEN a AND b, nghĩa là a
x b. Ngoài ra ta cũng quan sát thấy có thể định nghĩa ràng buộc
tại dòng mô tả thuộc tính nếu nhƣ ràng buộc chỉ liên quan đến
thuộc tính này mà thôi.
![Page 113: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/113.jpg)
Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL 97
3. Tạo bảng với ràng buộc khoá ngoại
CREATE TABLE CT_BAN (
HD_SO ID_type, MA_HANG ID_type, L_BAN sl_type,
CONSTRAINT CTBAN_PK PRIMARY KEY (HD_SO,
MA_HANG),
CONSTRAINT CTB_HD_FK FOREIGN KEY (HD_SO)
REFERENCE HOA_DON (HD_SO),
CONSTRAINT CTB_HH_FK FOREIGN KEY (MA_HANG)
REFERENCE HANG_HOA (MA_HANG))
2.7. Hủy bảng
Cú pháp
DROP TABLE <tên bảng>
Với điều kiện bảng không bị lệ thuộc (chẳng hạn không có một ràng buộc
khoá ngoại nào tham chiếu đến nó)
Ví dụ 3.10
Xoá bảng CT_BAN
DROP TABLE CT_BAN
2.8. Định nghĩa lại bảng
Ngoài việc định nghĩa thêm các ràng buộc toàn vẹn, các câu lệnh ALTER
còn cho phép thêm, xoá, sửa (điều chỉnh) một thuộc tính (cột), một ràng
buộc.
Cú pháp
ALTER TABLE <tên bảng> ADD <tên cột> <kiểu dữ liệu> [<ràng
buộc>]
ALTER TABLE <tên bảng> DROP COLUMN <tên cột>
ALTER TABLE <tên bảng> ADD CONSTRAINT <tên> <loại>
<tham số>
ALTER TABLE <tên bảng> DROP CONSTRAINT <tên ràng
buộc>
![Page 114: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/114.jpg)
98 Giáo trình cơ sở dữ liệu
Ví dụ 3.11
Xoá cột L_BAN khỏi bảng CT_BAN
ALTER TABLE CT_BAN DROP COLUMN L_BAN
Thêm cột L_BAN vào bảng CT_BAN với kiểu nguyên và ràng buộc khác
rỗng
ALTER TABLE CT_BAN ADD L_BAN INT CHECK (L_BAN IS NOT
NULL)
3. Ngôn ngữ con thao tác dữ liệu
Các quan hệ (bảng hoặc view) là tập các bộ. Chúng ta có thể thực hiện các
thao tác trên bộ, cũng là các thao tác trên dữ liệu (cần phân biệt với ngôn
ngữ con định nghĩa dữ liệu chỉ làm việc trên các lƣợc đồ)
3.1. Thêm xoá sửa
Cú pháp
Các lệnh sau làm việc với các bộ (các dòng của bảng)
INSERT INTO <tên bảng> [(<các thuộc tính>)] VALUES (<các
giá trị>)
INSERT INTO <tên bảng> [(<danh sách thuộc tính>)] <câu truy
vấn>
DELETE FROM <tên bảng> WHERE <điều kiện>
UPDATE <tên bảng> SET <lệnh gán> WHERE <điều kiện>
Ví dụ 3.12
1. Thêm một hoá đơn mới
INSERT INTO Hoa_Don VALUES (‘HD007’, ‘07/17/05’)
2. Xóa hoá đơn số 7:
DELETE FROM Hoa_Don WHERE HD_SO = ‘HD007’
3. Đổi ngày của hoá đơn số 7 thành ngày mới
UPDATE Hoa_Don SET <NGAY_LAP = ‘07/27/05’> WHERE HD_SO
= ‘HD007’
![Page 115: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/115.jpg)
Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL 99
3.2. Truy vấn dữ liệu
Trong chƣơng trƣớc chúng ta đã giới thiệu các chiến lƣợc giải quyết bài
toán dùng đại số quan hệ. Mục này giới thiệu ngôn ngữ con truy vấn dữ
liệu. Chúng ta tiếp tục áp dụng các chiến lƣợc trong chƣơng trƣớc để đƣa
ra các câu truy vấn đúng. Vì mục tiêu chính của chƣơng nhằm đƣa ra cách
thức giải bài toán dùng truy vấn, chúng tôi giới thiệu ngôn ngữ con này
qua các bƣớc giải bài toán đã đƣợc đề cập trong chƣơng trƣớc. Kỹ năng sử
dụng câu truy vấn con cũng đƣợc trình bày chi tiết.
Tập hợp dữ liệu
Là một quá trình tập hợp dữ liệu từ một hoặc nhiều bảng (FROM) kết xuất
thành một quan hệ với lƣợc đồ quan hệ đƣợc xác định trƣớc (SELECT) và
thoả mãn các điều kiện nào đó (WHERE)
Cú pháp
SELECT [DISTINCT] <danh sách thuộc tính>
FROM <danh sách quan hệ>
WHERE <điều kiện>
SELECT [DISTINCT] <danh sách thuộc tính>
FROM <danh sách quan hệ cùng các phép kết >
WHERE <điều kiện chọn >
Có thể dạng thứ nhất là đơn giản và dễ hiểu, nhƣng dạng thứ hai cho chúng
ta thấy các phép toán của đại số quan hệ gồm phép kết (FROM), phép
chiếu (SELECT) và phép chọn (WHERE)38
.
Quan hệ kết quả đƣợc định nghĩa trên lƣợc đồ với các thuộc tính có sẵn
hoặc thuộc tính mới dẫn xuất (AS) từ biểu thức tính toán với các thuộc tính
đã có đóng vai trò biến và kết quả tính toán đƣợc thực hiện trên từng dòng.
Ví dụ 3.13
Tập hợp dữ liệu cho hoá đơn số 7, bao gồm cả giá trị thành tiền.
Giải:
Kết quả là một quan hệ với mỗi dòng là chi tiết của hoá đơn. Áp dụng quy
trình 3 bƣớc: xác định lƣợc đồ, xác định đồ thị con, xác định điều kiện
chọn:
38 Nhƣ đã đề cập trong chƣơng trƣớc, phép kết có thể đƣợc định nghĩa qua phép tích và
phép chọn. Tuy nhiên, trong thực hành, phép kết có độ phức tạp tính toán nhỏ hơn rất
nhiều.
![Page 116: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/116.jpg)
100 Giáo trình cơ sở dữ liệu
Xác định lược đồ: (HD_SO, NGAY_LAP, MA_HANG, L_BAN,
T_TIEN);
Xác định đồ thị con: Đỉnh là các quan hệ HOA_DON, BAN và
HANG_HOA còn cạnh đƣợc xác định bởi phép kết tự nhiên;
Xác định điều kiện chọn: HD_SO = „HD007‟ (so sánh với một giá
trị)
Trong ví dụ này có một yêu cầu tính toán T_TIEN = L_BAN*GIA
(thêm thuộc tính dẫn xuất)
Ta có kết quả câu truy vấn
SELECT HOA_DON.*, BAN.MA_HANG, L_BAN, L_BAN*GIA AS
T_TIEN
FROM (HOA_DON INNER JOIN
BAN ON (HOA_DON.HD_SO = BAN.HD_SO)) INNER
JOIN
HANG_HOA ON (HANG_HOA.MA_HANG = HANG_HOA
.MA_HANG)
WHERE HOA_DON.HD_SO = ‘HD007’
Phân tích ví dụ này chúng ta thấy:
SELECT xác định lƣợc đồ, thêm thuộc tính dẫn xuất;
FROM xác định đồ thị con;
WHERE xác định điều kiện chọn.
Với ngôn ngữ con truy vấn ở đây, ngoài phép kết INNER JOIN chúng ta
còn có hai phép kết ngoài LEFT JOIN và RIGHT JOIN
Tính toán giá trị của nhóm (truy vấn tổng)
Dữ liệu sau khi đƣợc tập hợp lại sẽ đƣợc phân nhóm39
theo các bộ giá trị
của tập thuộc tính đặt sau GROUP BY.
39 Một câu truy vấn tổng chỉ làm việc với một phân hoạch.
![Page 117: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/117.jpg)
Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL 101
Ví dụ 3.14
Xét quan hệ chi tiết bán
CT_BAN HD_SO MA_HANG L_BAN
HD01 H01 15
HD01 H02 22
HD02 H01 14
HD02 H03 7
HD02 H05 13
HD03 H04 11
HD03 H05 8
Câu truy vấn SELECT HD_SO, L_BAN FROM CT_BAN tập hợp dữ liệu
vào một bảng có hai cột. Thêm GROUP BY HD_SO, các dòng của bảng
này đƣợc chia làm 3 nhóm:
CT_BAN HD_SO L_BAN
nhóm 1 HD01 15
HD01 22
nhóm 2 HD02 14
HD02 7
HD02 13
nhóm 3 HD03 11
HD03 8
Lúc này mỗi nhóm có nhiều dòng. Giá trị thuộc tính của nhóm là một giá
trị đại diện. Các hàm tính tổng, còn đƣợc gọi là các hàm kết tập 40
(AGGREGATE), sẽ xác định một giá trị đại diện cụ thể cho mỗi nhóm:
40 Việc tính toán đƣợc thực hiện trên tập các giá trị của một cột đƣợc nhóm lại theo một
tiêu chuẩn nào đó. Kết quả cho ta một quan hệ mới, mỗi dòng lƣu dữ liệu tổng hợp của
mỗi nhóm. Chẳng hạn, giả sử chúng ta lƣu tuổi của các nhân viên trên cột TUOI, tuổi của
ai ứng với dòng nấy. Bây giờ nếu nhóm họ lại theo giới tính, chúng ta sẽ có 2 nhóm với 2
tập dữ liệu về tuổi của mỗi nhóm và chúng ta có thể tính tuổi trung bình của mỗi nhóm.
![Page 118: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/118.jpg)
102 Giáo trình cơ sở dữ liệu
SUM
MAX
MIN
LAST
FIRST
COUNT
AVG
Sau khi tính toán, nếu muốn chọn theo các giá trị đại diện của nhóm, chúng
ta sẽ đặt điều kiện chọn sau HAVING.
Chúng ta có quy trình 3 bƣớc:
1. Tập hợp dữ liệu;
2. Gom nhóm và dùng các hàm tổng;
3. Chọn sau tính toán41
.
Cú pháp
SELECT [DISTINCT] <danh sách thuộc tính>
FROM <danh sách quan hệ cùng các phép kết >
WHERE <điều kiện chọn trƣớc tính toán tổng>
GROUP BY <danh sách để nhóm các dòng >
HAVING <điều kiện chọn sau tính toán tổng>
Ví dụ 3.15
Dùng dữ liệu ở ví dụ trên, ta có kết quả thực hiện câu truy vấn
SELECT HD_SO, MAX(L_BAN) AS SL_MAX, COUNT(*) AS CNT
FROM CT_BAN
WHERE L_BAN > 10
GROUP BY HD_SO
HAVING CNT > 1
là quan hệ sau (chƣa có tên)
HD_SO SL_MAX CNT
HD01 22 2
HD02 14 2
41 Nhƣ vậy WHERE dùng để lọc trước khi tính toán tổng, với mục đích tập hợp dữ liệu,
còn HAVING dùng để lọc sau khi tính toán tổng.
![Page 119: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/119.jpg)
Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL 103
3.3. Truy vấn con
Khi làm việc với các biểu thức phức tạp, chúng ta có thể trích ra các biểu
thức con. Với các biểu thức con, ngữ nghĩa của biểu thức ban đầu sẽ dễ
hiểu hơn. Ngoài ra các biểu thức con có thể tách riêng để sử dụng lại. Cũng
vậy, khi truy vấn chúng ta có thể có các truy vấn con42
. Các câu truy vấn
con thƣờng đƣợc sử dụng ở phép kết (FROM) và phép chọn (WHERE). Vì
truy vấn con là một quan hệ dẫn xuất nên dùng ở phép kết hoàn toàn đơn
giản. Chúng ta chi tiết cách dùng truy vấn con ở phép chọn bởi 2 lý do.
So sánh trong điều kiện chọn
Ở phép chọn chúng ta cần mệnh đề. Với mệnh đề đƣợc tạo thành từ các
biến, thƣờng là các phép so sánh các giá trị của các biến với nhau nên đơn
giản. Khi làm việc với truy vấn con là các quan hệ dẫn xuất, chúng ta đối
diện với các mệnh đề dạng:
𝑟 = ∅
𝑟 ≠ ∅
𝑥 ∈ 𝑟
𝑥 ∉ 𝑟
Với SQL ta có
𝑟 ≠ ∅ ⇔ 𝐸𝑋𝐼𝑆𝑇𝑆(𝑟) 𝑥 ∈ 𝑟 ⇔ 𝑥 𝐼𝑁 𝑟
Phép toán thành viên có thể mở rộng thành phép so sánh bằng
𝑥 ∈ 𝑟 ⇔ 𝑥 =𝐴𝑁𝑌 𝑟
𝑥 ∉ 𝑟 ⇔ 𝑥 ≠𝐴𝐿𝐿 𝑟
Giờ đây chúng ta có thể đặt các biểu thức so sánh ở phép chọn:
𝑥 𝜃𝐴𝑁𝑌 𝑟
𝑥 𝜃𝐴𝐿𝐿 𝑟
Trong đó 𝜃 ∈ >,≥, <,≤, =,≠
42 Thông thƣờng các truy vấn con đƣợc thực hiện trƣớc. Khi ấy toàn bộ câu truy vấn sẽ trở
nên dễ hiểu. Tuy ngôn ngữ SQL cho phép các truy vấn con tƣơng tác với câu truy vấn
chính, chúng tôi vẫn khuyến cáo tránh thực hiện điều này để toàn bộ câu truy vấn đƣợc dễ
hiểu.
![Page 120: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/120.jpg)
104 Giáo trình cơ sở dữ liệu
Ví dụ 3.16
Tìm những hàng hoá chƣa bán lần nào.
Giải:
Ta có câu truy vấn:
SELECT *
FROM HANG_HOA
WHERE MA_HANG NOT IN (SELECT MA_HANG FROM
CT_BAN)
Điều kiện chọn không cố định
Khi truy vấn chúng ta xét một dòng, quyết định chọn hay không. Với truy
vấn con đặt ở WHERE, trong nhiều trƣờng hợp, phụ thuộc vào dòng đang
xét.
Ví dụ 3.17
Tìm những hàng hoá, mà những ngày có bán mặt hàng này không có ngày
nào nằm giữa ngày 1 và 5 của tháng.
Giải:
Với mỗi mặt hàng, có một tập mà sự tồn tại của nó quyết định việc chọn.
Tập này phụ thuộc vào chính mặt hàng đang chọn. Ta có:
SELECT *
FROM HANG_HOA
WHERE NOT EXISTS (
SELECT *
FROM CT_BAN INNER JOIN HOA_DON
ON (CT_BAN.HD_SO = HOA_DON.
HD_SO)
WHERE (DAY(NGAY_LAP) BETWEEN 1 AND 5)
AND (HANG_HOA.MA_HANG =
CT_BAN.MA_HANG) )
3.4. Cài đặt đại số quan hệ
Nhƣ đã đƣợc đề cập, bản thân cú pháp SELECT … FROM … WHERE đã
cài đặt các phép toán quan hệ cơ bản là phép chọn, phép kết (dĩ nhiên cả
tích Descartes) và phép chiếu. Trong mục này chúng ta quan tâm đến cài
đặt phép chia và các phép toán tập hợp con nhƣ phép hợp, phép giao và
phép hiệu.
![Page 121: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/121.jpg)
Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL 105
Phép Hợp
SELECT … UNION [ALL]
SELECT …
Ví dụ 3.18
Tạo sổ cái từ sổ nhật ký
SELECT Chung_Tu, TK_No AS TK, TK_Co AS DU, Tien AS T_No, 0
AS T_Co
FROM Nhat_Ky
UNION
SELECT Chung_Tu, TK_Co AS TK, TK_No AS DU, 0 AS T_No, Tien
AS T_Co
FROM Nhat_Ky
Phép giao
SELECT …
WHERE <thuộc tính định danh> IN (SELECT <thuộc tính
định danh> …)
Ví dụ 3.19
Cho quan hệ
r = Trình độ ngoại ngữ (MaNV NNgu)
01 Anh
01 Nga
02 Anh
02 Hoa
02 Pháp
03 Anh
04 Hoa
Tìm ra những nhân viên biết 2 ngoại ngữ Anh và Hoa.
Giải:
Ta có câu truy vấn:
SELECT MaNV
FROM r
![Page 122: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/122.jpg)
106 Giáo trình cơ sở dữ liệu
WHERE NNgu = ‘Anh’
AND MaNV IN (SELECT MaNV FROM r WHERE
NNgu = ‘Hoa’)
Phép hiệu
SELECT …
WHERE <thuộc tính định danh> NOT IN (SELECT <thuộc tính
định danh> …)
Ví dụ 3.20
Tìm những hoá đơn có bán những mặt hàng không đƣợc lƣu trong cơ sở dữ
liệu
SELECT H_DON.*
FROM H_DON INNER JOIN BAN ON ( H_DON.HD_SO =
BAN.HD_SO )
WHERE
MA_HANG NOT IN (SELECT MA_HANG FROM
HANG_HOA)
Phép chia
Với phép chia r(AB) ÷ s(B), bằng cách biểu diễn qua một số phép toán
khác chúng ta có thể cài đặt phép chia bằng ngôn ngữ SQL(xem chƣơng 2,
các chiến lƣợc):
1. Xét biểu thức đại số quan hệ của phép chia (xem bài tập):
r[A] – (r[A]s – r)[A]
Viết lại
q0 = r[A]
q1 = q0s
q2 = (q1 – r)[A]
q3 = q0 – q2
Ta có thể cài đặt phép chia bởi một dãy các câu truy vấn liên tiếp
q0: SELECT DISTINCT A FROM r
q1: SELECT q0.A, s.B FROM q0, s
![Page 123: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/123.jpg)
Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL 107
q2: SELECT DISTINCT q1.A
FROM q1
WHERE q1.A&q1.B NOT IN (SELECT r.A&r.B FROM r)
q3: SELECT q0.A
FROM q0
WHERE q0.A NOT IN (SELECT q2.A FROM q2)
Nếu cần có thể tích hợp thành một câu truy vấn duy nhất
SELECT q0.A
FROM (SELECT DISTINCT A FROM r) AS q0
WHERE q0.A NOT IN (
SELECT q2.A
FROM (
SELECT DISTINCT q1.A
FROM (SELECT q0.A, s.B FROM q0, s) AS q1
WHERE q1.A&q1.B
NOT IN (SELECT r.A&r.B FROM r)) AS q2 )
2. Bản chất của phép chia là chọn, bộ t của r đƣợc chọn nếu
𝜍𝐴=𝑡 .𝐴 𝑟 𝐵 ⊃ 𝑠. Nhƣ vậy với mỗi x thuộc s, thực hiện
𝑟𝑥 = 𝜍𝐵=𝑥 𝑟 𝐴
Cuối cùng
r ÷ s = 𝑟𝑥𝑥∈𝑠
= 𝜍𝐵=𝑥 𝑟 𝐴
𝑥∈𝑠
3. Dùng kỹ thuật truy vấn con làm điều kiện chọn. Với t thuộc r, chọn r
với giá trị của A bằng với t.A rồi chiếu lên B, đƣợc quan hệ. Quan hệ
này so sánh với s làm điều kiện chọn. Ta có câu đại số quan hệ
𝜍𝑠⊂ 𝜍𝐴=𝑢 .𝐴 𝑟 𝐵 𝜌𝑢 𝑟 𝐴
Trong đó ρ là phép đổi tên. Biểu thức điều kiện ở đây có dạng so sánh
giữa 2 tập con không có trong ngôn ngữ con truy vấn. Nhƣ vậy cho
đến khi cài đặt đƣợc điều kiện chọn loại này, chúng ta vẫn phải sử
dụng một trong hai cách ở trên. Tuy nhiên, lƣu ý mệnh đề A ⊂ B
tƣơng đƣơng với A – B = ∅, ta có:
![Page 124: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/124.jpg)
108 Giáo trình cơ sở dữ liệu
SELECT A
FROM r AS u
WHERE NOT EXISTS (
SELECT *
FROM (SELECT B FROM r WHERE A = u.A)
WHERE B NOT IN (SELECT B FROM s)
)
Ví dụ 3.21
Trở lại ví dụ 19, giả sử s (NNgu) = {Anh, Hoa}. Bài toán tìm những nhân
viên biết 2 ngoại ngữ Anh và Hoa chính là phép chia r cho s. Cách giải thứ
2 chúng ta đã thực hiện ở ví dụ 19. Ở đây chúng ta dùng cách thứ 3.
SELECT MaNV
FROM r AS u
WHERE NOT EXISTS (
SELECT *
FROM (SELECT NNgu FROM r WHERE MaNV = u. MaNV)
WHERE NNgu NOT IN (SELECT NNgu FROM s)
)
3.5. Dùng truy vấn kiểm tra ràng buộc toàn vẹn
Ngôn ngữ hỏi là một công cụ tốt cho việc giải quyết vấn đề này. Một số
ràng buộc toàn vẹn có thể định nghĩa ngay lúc khởi tạo cơ sở dữ liệu nhờ
đó nó đƣợc kiểm tra một cách tự động, một số khác đƣợc thực hiện trực
tiếp hoặc gián tiếp thông qua lời gọi hàm với các hàm kiểm tra đƣợc cài đặt
sẵn hoặc bởi ngƣời dùng.
Trong thực tế việc để hệ quản trị kiểm tra các ràng buộc toàn vẹn có thể
không là một giải pháp tối ƣu; đặc biệt với các ràng buộc phức tạp. Có một
số chiến lƣợc giải quyết vấn đề này.
1. Chúng ta có thể bổ sung các thuộc tính dẫn xuất và kiểm soát chúng
một cách hiệu quả. Bây giờ, khi cần thiết, hệ quản trị chỉ cần kiểm tra
các ràng buộc đơn giản trên các thuộc tính này.
2. Với các ràng buộc phức tạp nên đƣợc kiểm tra ở mức ứng dụng hoặc ở
một lớp trung gian nào đó. Ở mức ứng dụng, nếu chúng ta có thể thiết
![Page 125: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/125.jpg)
Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL 109
kế sao cho ngƣời sử dụng khó lòng vi phạm các ràng buộc toàn vẹn thì
sẽ giảm bớt gánh nặng kiểm tra.
3. Trong trƣờng hợp còn lại, ngôn ngữ con truy vấn dữ liệu cho phép
chúng ta dễ dàng cài đặt các thủ tục kiểm tra. Ý tƣởng ở đây là tìm ra
những vi phạm. Nếu kết quả tìm bằng rỗng thì cơ sở dữ liệu là thỏa
ràng buộc toàn vẹn. Hàm EXISTS(.), kiểm tra một quan hệ là khác
rỗng, cho phép chúng ta kết luận cơ sở dữ liệu có vi phạm ràng buộc
hay không.
Chúng ta có thể tiếp cận đại số quan hệ trƣớc khi viết ra các câu truy vấn
cụ thể.
Ví dụ 3.22
Cài đặt thuật toán kiểm tra khoá43
của quan hệ r(AB).
Giải:
Ta có ràng buộc
Count(r) = Count(r[A])
Bằng cách viết lại
q1 = r[c = Count(A)]
q2 = (r[A])[c = Count(A)]
q = q1.c = q2.c(q1q2)
4. Ngôn ngữ con điều khiển truy cập (DCL)
Ngôn ngữ con điều khiển truy cập cho phép cấp (GRANT) hoặc hủy bỏ
(REVOKE) quyền (PRIVILEGE) của ngƣời dùng trên các đối tượng cơ sở
dữ liệu.
Các quyền bao gồm:
SELECT: lấy các dòng dữ liệu từ một bảng;
INSERT: thêm các dòng dữ liệu, trong các cột cụ thể, trong một
bảng;
UPDATE: sửa các dòng dữ liệu, trong các cột cụ thể, trong một
bảng;
DELETE: xoá các dòng dữ liệu trong một bảng;
43 dùng trực tiếp từ định nghĩa cũng đƣợc nhƣng sẽ phức tạp hơn.
![Page 126: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/126.jpg)
110 Giáo trình cơ sở dữ liệu
REFERENCES: tham chiếu đến các cột cụ thể trong bảng chứa
khoá ngoại.
Đối tƣợng cơ sở dữ liệu ở đây là bảng
Trong môi trƣờng cơ sở dữ liệu có một vai trò quản trị cơ sở dữ liệu
(DBA). Ngƣời dùng có vai trò này sẽ quản lý toàn bộ ngƣời dùng và có
thẩm quyền cấp và thu hồi giấy phép của ngƣời dùng bất kỳ. Ngƣời dùng
cụ thể có toàn quyền trên các đối tƣợng cơ sở dữ liệu do mình tạo ra.
4.1. Cấp quyền cho ngƣời dùng khác
Cú pháp
GRANT <danh sách các quyền> | ALL PRIVILEGES
ON <tên đối tƣợng>
TO <danh sách ngƣời dùng> | PUBLIC
[WITH GRANT OPTION]
Ví dụ 3.23
Cấp quyền SELECT và UPDATE (studentName) trên bảng student
cho admin
GRANT SELECT, UPDATE(studentName)
ON student
TO admin
Cấp quyền SELECT trên bảng student cho 2 ngƣời dùng personnel
và deputy
GRANT SELECT
ON student
TO personnel, deputy
Cấp quyền SELECT trên bảng class cho tất cả ngƣời dùng
GRANT SELECT
ON class
TO PUBLIC
![Page 127: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/127.jpg)
Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL 111
4.2. Hủy quyền của ngƣời dùng khác
Cú pháp
REVOKE [GRANT OPTION FOR] <danh sách các quyền> | ALL
PRIVILEGES
ON <tên đối tƣợng>
FROM {<danh sách ngƣời dùng> | PUBLIC} [RESTRICT |
CASCADE]
[WITH GRANT OPTION]
Ví dụ 3.24
Xét tình huống có 5 ngƣời dùng A, B, C, D và E. Trong đó A, E có quyền
INSERT trên bảng student và có quyền cấp quyền này cho ngƣời dùng
khác.
1. A cấp quyền cho B
GRANT INSERT
ON student TO B
WITH GRANT OPTON
B có quyền INSERT nhƣ A
2. B cấp quyền cho C
GRANT INSERT
ON student TO C
WITH GRANT OPTON
B có quyền INSERT nhƣ B
3. E cấp quyền cho C
GRANT INSERT
ON student
TO C
WITH GRANT OPTON
C có quyền INSERT nhƣ A và E (hai giấy phép)
4. C cấp quyền cho D
GRANT INSERT
ON student TO D
![Page 128: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/128.jpg)
112 Giáo trình cơ sở dữ liệu
D có quyền INSERT do C cấp
5. A hủy quyền của B
REVOKE INSERT
ON student CASCADE
Các giấy phép do A cấp và uỷ quyền cấp đều bị thu hồi. Theo đó B
không còn giấy phép INSERT nào, C vẫn còn một giấy phép do E
cấp do đó D vẫn còn quyền INSERT do C cấp.
4.3. View
View, hay khung nhìn, là một bảng ảo đƣợc tạo thành từ câu truy vấn để
nhìn vào cơ sở dữ liệu từ quan điểm ngƣời dùng nhằm thực hiện độc lập dữ
liệu. Với view chúng ta có một cơ chế an toàn dữ liệu khi kiểm soát đƣợc
việc cập nhật lên cơ sở dữ liệu.
Cú pháp
CREATE VIEW <tên view> [(<tên thuộc tính>[, …])]
AS SELECT …
Qua view hạn chế truy xuất để tăng cƣờng bảo mật cơ sở dữ liệu.
Cú pháp
CREATE VIEW <tên view> [(<tên thuộc tính>[, …])]
AS SELECT …
[WITH [CASCADE | LOCAL] CHECK OPTION]
Cập nhật trên view
Để cho phép cập nhật cơ sở dữ liệu qua view, các view phải thoả:
1. Không có DISTINCT
2. Lƣợc đồ quan hệ phải lấy từ tên thuộc tính gốc và xuất hiện một
lần
3. Câu SELECT chỉ là các phép chọn và chiếu trên bảng duy nhất;
4. Điều kiện chọn không có các truy vấn con liên quan đến bảng
đang xét
5. Không có tính toán, do đó không có GROUP BY cũng nhƣ
HAVING
![Page 129: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/129.jpg)
Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL 113
Ví dụ 3.25
CREATE VIEW siSo (classID, className, siSo)
AS SELECT class. classID, className, COUNT(*)
FROM student, class
WHERE student.classID, class.classID
GROUP BY classID, className
View này không thể cập nhật vì có tính toán
CREATE VIEW siSo (classID, className, siSo)
AS SELECT class. classID, className, COUNT(*)
FROM student, class
WHERE student.classID, class.classID
GROUP BY classID, className
View này không thể cập nhật vì có tính toán
Với các view cho phép cập nhật, view có khả năng kiểm tra dữ liệu mới có
thỏa điều kiện của phép chọn không.
Ví dụ 3.26
Với view sau:
CREATE VIEW class3
AS SELECT *
FROM student
WHERE classID = ‘C3’
WITH CHECK OPTION
Thì các câu lệnh sau sẽ không đƣợc thực hiện
UPDATE class3
SET classID = ‘C5’
WHERE studentID = ‘S036’
INSERT INTO class3(studentID, classID)
VALUES (‘S121’, ‘C2’)
![Page 130: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/130.jpg)
114 Giáo trình cơ sở dữ liệu
TÓM TẮT
Hệ quản trị cơ sở dữ liệu cung cấp một ngôn ngữ cơ sở dữ liệu cho
phép làm việc với mô hình cơ sở dữ liệu mà nó hỗ trợ;
Hệ quản trị cơ sở dữ liệu quan hệ cung cấp một ngôn ngữ cơ sở dữ
liệu gọi là Structured Query Language (SQL);
SQL có 4 bộ ngôn ngữ con: ngôn ngữ con định nghĩa dữ liệu, ngôn
ngữ con thao tác dữ liệu, ngôn ngữ hỏi và ngôn ngữ con điều khiển
truy cập;
Ngôn ngữ con định nghĩa dữ liệu cho phép cài đặt các lƣợc đồ vật
lý;
Ngôn ngữ con định nghĩa dữ liệu cho phép khai báo một số loại
ràng buộc toàn vẹn;
Ngôn ngữ con thao tác dữ liệu làm việc với dữ liệu dựa trên các
lƣợc đồ logic;
Ngôn ngữ hỏi có cấu trúc dễ hiểu;
Ngôn ngữ hỏi dựa trên đại số quan hệ nên dễ dàng cài đặt các biểu
thức đại số quan hệ, cho phép sử dụng các chiếc lƣợc giải bài toán
của đại số quan hệ;
Ngôn ngữ hỏi cho phép truy vấn vẫn dữ liệu cũng nhƣ cài đặt kiểm
tra các ràng buộc toàn vẹn;
Ngôn ngữ con kiểm soát truy xuất cho phép thực hiện an toàn dữ
liệu;
Khung nhìn là một cơ chế cho phép thực hiện an toàn và toàn vẹn
dữ liệu.
![Page 131: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/131.jpg)
Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL 115
BÀI TẬP
Cơ sở dữ liệu sau dùng cho các câu từ 1 đến 3.
Khách hàng Mã KH Tên KH Địa chỉ
KH01 Nguyễn A 134 NTT
KH02 Trần B 242/4 TBT
KH03 Phạm C 33 PH
Định mức Mã DM Từ Đến Giá
D1 1 100 80
D2 101 150 100
D3 151 200 150
D4 201 400 200
Tiêu thụ Kỳ Mã KH Tiêu thụ
0804 KH01 150
0804 KH02 240
0804 KH03 110
0805 KH01 120
0805 KH02 250
0805 KH03 80
Ký hiệu M, T, C, A, U, D, G, K và I là tên tắt của các thuộc tính Mã
KH, Tên KH, Địa chỉ KH, Mã DM, Từ, Đến, Giá, Kỳ và Tiêu thụ.
Ký hiệu r, s và u là tên tắt của các bảng Khách hàng, Định mức và
Tiêu thụ. Bạn đọc có thể dùng lƣợc đồ cơ sở dữ liệu đƣợc viết tắt
nhƣ sau:
r (MTC), s (AUDG) và u (KMI)
![Page 132: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/132.jpg)
116 Giáo trình cơ sở dữ liệu
1. Đặc tả thêm các yếu tố vật lý, dùng ngôn ngữ DDL định nghĩa lƣợc đồ
cơ sở dữ liệu.
2. Dùng ngôn ngữ DML đƣa dữ liệu vào cơ sở dữ liệu.
3. Dùng ngôn ngữ QL trả lời các câu hỏi:
a. Tìm những khách hàng có mức tiêu thụ lớn nhất không vƣợt quá
200;
b. Tính tiền điện kỳ 0806 cho tất cả khách hàng.
Lƣợc đồ cơ sở dữ liệu sau dùng cho các câu từ 4 đến 10.
Khách-Sạn (Mã-KS, Tên-KS, Địa-Chỉ-KS, Tỉnh-Thành-
phố)
Phòng (Số-Phòng, Mã-KS, Loại-Phòng, Giá)
Khách-Hàng (Mã-KH, Tên-KH, Địa-Chỉ-KH)
Đặt-Phòng (Mã-KS, Mã-KH, Ngày-Đến, Ngày-Đi, Số-
Phòng)
Bạn đọc có thể dùng lƣợc đồ cơ sở dữ liệu đƣợc viết tắt nhƣ sau:
r (STsDsT), s (PSLG), u (KTkDk) và v (SKBEP)
4. Tìm tất cả khách sạn ở thành phố Nha Trang.
5. Tìm tất cả khách sạn ở thành phố Nha Trang có loại phòng đơn có giá
dƣới 200.
6. Ở Nha Trang có bao nhiêu khách sạn.
7. Năng suất sử dụng phòng theo từng loại phòng của tất cả các khách sạn
ở Nha Trang trong năm 2007.
8. Ở Nha Trang, trong ngày hôm nay có bao nhiêu phòng trống theo từng
loại phòng.
9. Danh sách tất cả hoá đơn trong ngày hôm nay, thông tin gồm Tỉnh-
Thành-phố, Mã-KS, Ngày-hoá-đơn, Số-Phòng, Loại-phòng, Giá, Số-
Tiền.
10. Làm báo cáo về tổng số ngày đến ở, trong 2 năm 2006 và 2007, theo
từng khách hàng của tất cả các khách hàng.
![Page 133: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/133.jpg)
Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL 117
Lƣợc đồ cơ sở dữ liệu (Thể Thao Đội) sau dùng cho các câu từ 11 đến 18.
CLB : CLB_MA INT(3) KEY Mã số câu lạc bộ
CLB_DC TEXT Địa chỉ câu lạc bộ
DOI : CLB_MA INT(3) KEY Mã số câu lạc bộ
DOI_MA INT(2) KEY Mã số đội
LT CHAR(2) Lứa tuổi của đội
PHAI CHAR(3) Phái tính
TD : TD_MA INT(3) KEY Mã số trận đấu
PHG_MA INT(3) Mã số phòng
TD_GIO CHAR(6) Giờ thi đấu
TD_NGAY DATE Ngày thi đấu
DOI_TD :
TD_MA INT(3) Mã số trận đấu
DOI_MA INT(2) Mã số đội
CLB_MA INT(3) Mã số câu lạc bộ
Mỗi trận đấu là một cuộc gặp giữa hai đội cùng LT và PHAI
PHONG :
PHG_MA INT(3) KEY Mã số phòng
PHG_DC CHAR(50) Địa chỉ phòng
PHG_TSS INT(2) Tổng số sân của phòng
LUA_TUOI :
LT CHAR(2) KEY Lứa tuổi
LT_TGTD) INT(2) Thời gian thi đấu
VDV :
VDV_MA INT(3) KEY Mã số vận động viên
VDV_TEN CHAR(25) Tên vận động viên
VDV_DC CHAR(50) Địa chỉ vận động viên
CLB_MA INT(3) Mã số câu lạc bộ
LT CHAR(2) Lứa tuổi vận động viên
PHAI CHAR(3) Phái tính
VDV_DOI :
VDV_MA INT(3) Mã số vận động viên
DOI_MA INT(2) Mã số đội
Một vận động viên có thể đăng ký vào nhiều đội
![Page 134: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/134.jpg)
118 Giáo trình cơ sở dữ liệu
11. Danh sách tên các vận động viên của câu lạc bộ mã số 45.
12. Tên các vận động viên của đội số 3 của câu lạc bộ mã số 27.
13. Số lƣợng các trận đấu lứa tuổi LT1 diễn ra ngày 16/06/90.
14. Mã số các câu lạc bộ và mã số các đội trong đó có quy tụ những vận
động viên thuộc một lứa tuổi nhỏ hơn lứa tuổi của đội.
15. Địa chỉ và mã số của các câu lạc bộ có một hoặc nhiều đội tham dự trận
đấu diễn ra trong phòng mã số 17 ngày 06/12/90.
16. Danh sách các trận đấu bắt đầu hoặc kết thúc trong khoảng thời gian từ
13 giờ và 16 giờ tại phòng mã số 49 vào ngày 05/08/90.
17. Địa chỉ và tên các vận động viên đã chơi hoặc sẽ chơi đối lại đội mã số
1 của các câu lạc bộ mã số 50.
18. Số tối đa các trận đấu bắt đầu đồng thời trong ngày 06/12/90.
19. Chứng minh các biểu thức đại số quan hệ dùng để cài đặt phép chia.
20. Với hệ thống quản lý tồn kho đã cho trong chƣơng này, dùng Power
Designer:
a. Thiết kế cơ sở dữ liệu mức quan niệm;
b. Phát sinh cơ sở dữ liệu mức vật lý;
c. Đặc tả đầy đủ các yếu tố vật lý (xem mục 1 của chƣơng)
d. Dùng ngôn ngữ con định nghĩa dữ liệu cài đặt cơ sở dữ liệu này;
e. Đặc tả ít nhất 2 vai trò ngƣời dùng, dùng DCL cấp quyền cho vài
ngƣời dùng;
f. Đƣa ra một ràng buộc, tạo một khung nhìn cho phép làm việc bảo
đảm tính toàn vẹn dữ liệu đối với ràng buộc này.
![Page 135: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/135.jpg)
Chƣơng 4 PHỤ THUỘC HÀM
Mục tiêu của chƣơng.
Trong chƣơng này chúng ta sẽ học về:
Khái niệm phụ thuộc hàm;
Lƣu trữ dƣ thừa và phụ thuộc hàm;
Lƣợc đồ quan hệ với ràng buộc phụ thuộc hàm;
Khoá và phụ thuộc hàm;
Bộ luật dẫn;
Phụ thuộc hàm hệ quả, bài toán thành viên;
Phủ tối tiểu của một tập phụ thuộc hàm;
Kỹ thuật tableaux.
Một quan hệ có thể có tính chất nào đó cho phép chúng ta lƣu trữ hiệu quả.
Chẳng hạn, để lƣu một quan hệ có tính đối xứng ta chỉ cần lƣu một bên, so
với đƣờng chéo chính44
, và phục hồi toàn bộ quan hệ này bằng phép hợp.
Chƣơng này sẽ khảo sát một loại quan hệ quan trọng: quan hệ hàm. Việc
phát hiện ra các quan hệ hàm giữa các thuộc tính trong lƣợc đồ quan hệ cho
phép chúng ta đƣa ra các cấu trúc lƣu trữ không dƣ thừa.
Ví dụ 4.1
Cho quan hệ
44 quan hệ r(X,Y) đối xứng nếu (x,y) thuộc r thì (y,x) cũng vậy; bằng cách biểu diễn r trong mặt phẳng XY ta quan sát thấy nó đối xứng qua đƣờng chéo chính (x,x). Một ví dụ
về quan hệ có tính đối xứng là sổ cái tài khoản. Khi lƣu trữ ngƣời ta không lƣu sổ cái tài
khoản mà chỉ cần lƣu các sổ chi tiết, tại đó không còn tồn tại tính đối xứng nữa. Một ví dụ
khác khi lƣu đƣờng nối giữa các thành phố, nếu có tính đối xứng, chúng ta chỉ cần lƣu một
cho mỗi cặp đối xứng nhau.
![Page 136: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/136.jpg)
120 Giáo trình cơ sở dữ liệu
r ( A B C D)
1 -2 4 0
1 -2 4 0
2 3 9 1
2 3 9 1
3 2 4 2
4 -2 4 3
5 1 1 4
Quan sát thấy C = B2, D = A – 1 và B là một hàm của A. Giả sử điều này
luôn đúng. Rõ ràng cách lƣu nhƣ vậy là dƣ thừa, vừa lãng phí không gian
lƣu trữ vừa phải thƣờng xuyên kiểm tra tính đúng đắn của bảng. Câu hỏi
đặt ra là nên lƣu dữ liệu này nhƣ thế nào: cần bao nhiêu bảng và liệu có
phục hồi lại bảng gốc bằng SQL không? Ở đây quan hệ giữa C và B, giữa
D và A là hoàn toàn xác định, chúng ta không cần lƣu trữ; quan hệ giữa A
và B cũng là một quan hệ hàm nhƣng không xác định, chúng ta nên lƣu
riêng. Kết quả ta có một quan hệ lƣu trữ không dƣ thừa sau:
r ( A B)
1 -2
2 3
3 2
4 -2
5 1
Giờ đây chỉ cần một câu truy vấn, chúng ta hoàn toàn có thể phục hồi lại
quan hệ gốc45
.
Ví dụ 4.2
Cho quan hệ
r ( A B C D)
a u x 1
a u x 2
b v y 1
b v y 3
c w x 2
d u x 1
Quan sát thấy
45 SELECT A, B, B*B AS C, A – 1 AS D FROM r (xem chƣơng 3)
![Page 137: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/137.jpg)
Chƣơng 4: Phụ thuộc hàm 121
B là một hàm của A;
C là một hàm của A;
C là một hàm của B.
Nếu lƣu riêng các quan hệ hàm này, ta có
r1 ( A D ) r2 ( A B ) r3 ( A C ) r4 ( B C )
a 1 a u a x u x
a 2 b v b y v y
b 1 c w c x w x
b 3 d u d x
c 2
d 1
Tuy nhiên quan hệ hàm có tính bắt cầu, việc lƣu riêng quan hệ hàm giữa
A và C là thừa và chúng ta loại bớt bảng r3:
r1 ( A D ) r2 ( A B ) r4 ( B C )
a 1 a u u x
a 2 b v v y
b 1 c w w x
b 3 d u
c 2
d 1
Những quan hệ hàm nhƣ vậy tồn tại rất nhiều trong thực tế và đƣợc gọi là
các phụ thuộc hàm. Việc lƣu các quan hệ hàm trong các bảng riêng biệt
giúp tránh dƣ thừa trong lƣu trữ, vốn tiềm ẩn những hậu quả đe dọa nghiêm
trọng đến tính toàn vẹn của dữ liệu.
Không phải bất kỳ quan hệ hàm nào đƣợc tìm thấy đều phải đƣợc lƣu trong
một bảng riêng. Có những quan hệ hàm là hệ quả của các quan hệ hàm
khác, nhƣ đã đƣợc thấy trong ví dụ 2. Vì các quan hệ hàm hệ quả đều đƣợc
phục hồi qua ngôn ngữ cơ sở dữ liệu quan hệ nên không cần lƣu riêng.
Chƣơng này sẽ tìm hiểu khái niệm phụ thuộc hàm và tập trung giải quyết
bài toán quan trọng: cho tập F các phụ thuộc hàm, tìm tập G tương đương
F không chứa các phụ thuộc hàm hệ quả. Tập G nhƣ vậy đƣợc gọi là phủ
tối tiểu46
của F.
46 Một số tài liệu dùng thuật ngữ phủ tối thiểu.
![Page 138: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/138.jpg)
122 Giáo trình cơ sở dữ liệu
1. Khái niệm
Về cơ bản, để tránh dƣ thừa chúng ta sẽ lƣu riêng mỗi khi tìm thấy phụ
thuộc hàm. Tuy nhiên việc lƣu những phụ thuộc hàm dẫn xuất lại gây ra dƣ
thừa bảng. Trọng tâm của chƣơng này là tìm một tập phụ thuộc hàm không
dƣ thừa gọi là phủ tối tiểu47
. Để làm điều này chúng ta phải kiểm tra đƣợc
tính thành viên của một phụ thuộc hàm. Nhƣng trƣớc hết chúng ta phải biết
phụ thuộc hàm là gì.
1.1. Phụ thuộc hàm
Định nghĩa 4.1
Cho quan hệ r trên lược đồ quan hệ R và X, Y là các tập thuộc tính của R.
Ta nói r thỏa phụ thuộc hàm X Y, nếu
∀𝑡 ∈ 𝑟 ∀𝑡 ′ ∈ 𝑟 (𝑡.𝑋 = 𝑡 ′ .𝑋 ⟹ 𝑡.𝑌 = 𝑡 ′ .𝑌)
Để có thể dùng SQL kiểm tra xem một quan hệ có thỏa một phụ thuộc hàm
nào hay không, chúng ta có thể thực hiện bằng cách tìm ra 2 dòng vi phạm
hoặc đơn giản bằng cách đếm số dòng nhƣ ví dụ sau
Ví dụ 4.3
Cho quan hệ r(ABC)
r ( A B C D)
a1 b1 c1 d1
a1 b1 c1 d2
a2 b1 c3 d2
a3 b2 c1 d1
Để kiểm tra r có thỏa phụ thuộc hàm AB không, chúng ta có thể:
Hoặc đếm r[A] và r[AB], rồi so sánh
Hoặc kết r với chính nó, tìm ra các dòng vi phạm
Với cách thứ 1, ta có câu SQL:
SELECT C1 = C2 FROM (SELECT COUNT(*)AS C1 FROM
(SELECT DISTINCT A FROM r)), SELECT COUNT(*)AS C2
FROM (SELECT DISTINCT A, B FROM r))
47 Nếu bạn đọc không quan tâm đến phủ tối tiểu hoặc tập phụ thuộc hàm đã tối tiểu, thì chỉ
cần đọc khái niệm phụ thuộc hàm và bỏ qua mục này.
![Page 139: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/139.jpg)
Chƣơng 4: Phụ thuộc hàm 123
Với cách thứ 2, ta có câu SQL:
SELECT r.A, r.B FROM r INNER JOIN r AS r1
ON ((r.A = r1.A) AND (r.B <> r1.B))
1.2. Tập phụ thuộc hàm
Trong cơ sở dữ liệu, chúng ta luôn có các quy tắc mà dữ liệu phải thỏa.
Trong chƣơng này, các quy tắc chúng ta quan tâm chính là các phụ thuộc
hàm. Cho lƣợc đồ quan hệ R, xét tập F các phụ thuộc hàm định nghĩa trên
R48
, ký hiệu:
SATR(F) = {r(R) | r thỏa F }
Nếu không sợ nhầm lẫn, viết SAT(F) thay cho SATR(F). Trƣờng hợp R
không tƣờng minh, coi R là hợp của tất cả các thuộc tính trên cả hai vế phải
và trái của tất cả các phụ thuộc hàm thuộc F.
Ví dụ 4.4
Cho quan hệ r(ABCDE)
r ( A B C D E )
a1 b1 c1 d1 e1
a1 b2 c2 d2 e1
a2 b1 c3 d3 e1
a2 b1 c4 d3 e1
a3 b2 c5 d1 e1
Ta có r SAT(F), với F = {A D, AB D, C BDE, E A, A E}.
Ví dụ 4.5
Xét quan hệ
[hoá đơn](HDSố, NLập, MãKH, DChỉ, MãHG, TênHG, SốL, DGiá),
viết tắt r(SNKDHTLG).
Một cách tự nhiên r thỏa
F = { S NK, K D, H TG, SH L }.
Quan hệ r cụ thể dƣới đây không thỏa F (thật ra, r không thỏa bất cứ một
phụ thuộc hàm nào của F)
48 là các phụ thuộc hàm dạng XY, với X và Y là các tập con của R.
![Page 140: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/140.jpg)
124 Giáo trình cơ sở dữ liệu
r ( S N K D H T L G)
1 12 a aa x xx 4 12
1 12 a cc y yy 3 11
2 14 a bb x zz 2 11
2 14 b bb y yy 4 12
2 15 b bb x xx 1 12
Kể từ đây, mỗi khi cho cặp <R, F> chúng ta ngụ ý sẽ chỉ làm việc với các
quan hệ định nghĩa trên R và thỏa F, tức SATR(F). Trƣờng hợp R không
đƣợc cho tƣờng minh, R đƣợc xác định theo cách đã biết.
Định nghĩa 4.2
Cho tập phụ thuộc hàm F. Phụ thuộc hàm f = XY được gọi là phụ thuộc
hàm hệ quả của F, nếu r thỏa f với mọi r thuộc SAT(F).
Việc đƣa ra các ràng buộc phụ thuộc hàm có thể dẫn đến dƣ thừa: có những
phụ thuộc hàm là hệ quả của những cái khác. Gọi tập tất cả các phụ thuộc
hàm hệ quả của F là bao đóng của F, ký hiệu F+, bài toán kiểm tra f F
+
đƣợc gọi là bài toán thành viên.
1.3. Luật dẫn - Hệ tiên đề Armstrong
Thật không tƣởng nếu muốn kiểm tra xem mọi r SAT(F) có thoả f hay
không. Chúng ta cần một tiếp cận khác thay cho việc kiểm tra trực tiếp.
Bộ luật dẫn
F1. Tính phản xạ
XX
F2. Tính thêm vào
Nếu XY thì XZY
F3. Tính hội
Nếu XY và XZ thì XYZ
F4. Tính phân rã
Nếu XYZ thì XY và XZ
F5. Tính bắc cầu
Nếu XY và YZ thì XZ
F6. Tính bắc cầu giả
Nếu XY và YZW thì XZW
![Page 141: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/141.jpg)
Chƣơng 4: Phụ thuộc hàm 125
Mệnh đề 1
Xét các luật F1, F2, F6 ta có :
1. Chúng suy ra ba luật còn lại và
2. Không có hai luật nào trong chúng là có thể suy ra luật thứ ba49
.
Định nghĩa 4.3: Hệ tiên đề Armstrong
Tập gồm ba luật dẫn {F1, F2, F6} được gọi là hệ tiên đề Armstrong
Ta nói f là đƣợc suy dẫn từ F, ký hiệu F ⊨ f, nếu f đƣợc suy ra từ F bằng
các luật dẫn.
Ví dụ 4.6
Kiểm tra F ⊨ AEDI, với F = { A D, AB E, BI E, CD I, E
C }.
Giải:
Ta có: AD ⊨ AED (F2);
EE ⊨ AEE (F2);
{ AEE, EC} ⊨ AEC (F5);
{AED, AEC} ⊨ AECD (F3);
{ AECD, CDI} ⊨ AEI (F5);
{AED, AEI} ⊨ AEDI (F3).
Vậy F ⊨ AEDI,
Mệnh đề 2
Cho tập phụ thuộc hàm F và f là phụ thuộc hàm tuỳ ý. Ta có f là được suy
dẫn từ F nếu và chỉ nếu f là thành viên của F+.
Rõ ràng F F+.
1.4. Phủ của phụ thuộc hàm
Cho 2 tập phụ thuộc hàm F và G. Nếu G+ = F
+ ta nói G tƣơng đƣơng F, ký
hiệu F G. Nếu G+ F
+ ta nói G đƣợc suy dẫn từ F, ký hiệu F ⊨ G.
49 F5 là trƣờng hợp riêng của F6; F3 đƣợc chứng minh bằng cách dùng F1 cho YZ sau đó
dùng F6 hai lần, lần 1 đƣợc XZYZ và lần 2 đƣợc XYZ; với F4 để chứng minh XY
trƣớc hết ta dùng F1 cho Y rồi dùng F2 đƣợc YZY và cuối cùng dùng F5.
![Page 142: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/142.jpg)
126 Giáo trình cơ sở dữ liệu
Định nghĩa 4.4
Cho F, tập phụ thuộc hàm G được gọi là một phủ của F, nếu G F.
Rõ ràng G là một phủ của F thì F cũng là một phủ của G. Việc gọi G là một
phủ của F ngụ ý G tốt hơn F theo một nghĩa nào đó, ở đây G là đơn giản
hơn F.
Ví dụ 4.7
Cho F={AB, BC, AC, ABC, ABC } và G={AB, BC}. Ta
có G là một phủ của F, hơn nữa G đơn giản hơn F.
Việc tìm ra những phủ đơn giản hơn rõ ràng là có ý nghĩa. Giả sử XY là
thành viên của F+ thì XAY cũng vậy, nhƣng một phủ nên chứa XY
hơn chứa XAY.
Định nghĩa 4.5
Cho lược đồ <R, F>. Ta nói X Y là phụ thuộc hàm đầy đủ dưới F, nếu
XY là thành viên của F+ và nếu với mọi A thuộc X, (X – A) Y không là
thành viên của F+.
Phụ thuộc hàm đầy đủ đóng vai trò quan trọng trong thực hành. Xét lƣợc
đồ <R, F> và quan hệ r SATR(F). Với XY là thành viên của F+ quan
hệ r[XY] nhận X làm siêu khoá. Tuy nhiên, nếu XY là phụ thuộc hàm
đầy đủ dƣới F, thì X là khoá trong r[XY].
Định nghĩa 4.6
Tập phụ thuộc hàm F được gọi là tối tiểu nếu thoả:
1. Tất cả f F có dạng X A;
2. Tất cả f F đều đầy đủ dưới F;
3. Bỏ bớt một phụ thuộc hàm khỏi F sẽ không còn tương đương F.
Định nghĩa 4.7: Phủ tối tiểu
Cho tập phụ thuộc hàm F. Tập phụ thuộc hàm G được gọi là một phủ tối
tiểu của F nếu:
1. G là một phủ của F.
2. G tối tiểu.
Ví dụ 4.8
Tập phụ thuộc hàm F = {AB, AC, BA, BC, CA} không tối tiểu
nhƣng có phủ G = { AB, AC, BA, CA } thì phủ tối tiểu.
![Page 143: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/143.jpg)
Chƣơng 4: Phụ thuộc hàm 127
Chú ý rằng số phụ thuộc hàm trong phủ tối tiểu không chắc là ít nhất. Xét
lại F nhƣ trên ta thấy {AB, BC, CA} cũng là một phủ tối tiểu của F
nhƣng có ít phụ thuộc hàm hơn phủ tối tiểu G ở trên.
2. Tìm phủ tối tiểu
Chúng ta đƣa ra thuật ngữ bao đóng của tập thuộc tính, làm cơ sở giải bài
toán thành viên, tiếp sau là bài toán tìm phủ tối tiểu.
2.1. Giải bài toán thành viên
Định nghĩa 4.8
Cho lược đồ quan hệ (R, F) và X R, tập X+
F = {A R | X A } được
gọi là bao đóng của X dưới F.
Trong trƣờng hợp không sợ nhầm lẫn ta sẽ viết X+ thay cho X
+F.
Rõ ràng X+ xác định tất cả các phụ thuộc hàm suy dẫn dạng XY.
Thuật toán tìm X+ rất đơn giản: bắt đầu với X
+ = X, với bất cứ phụ thuộc
hàm nào nếu vế trái nằm trong X+, hợp vế phải vào X
+.
Thuật toán 1: Closure(X, F)
Vào : Tập các phụ thuộc hàm F và tập thuộc tính X R.
Ra : X+
Các bước :
1. X+ = X
2. do
2.1 T = X+
2.2 foreach (L → R) F do
if (L X+) X
+ = X
+ R
while (T != X+)
3. return X+
Chú ý khi tính X+, mỗi phụ thuộc hàm chỉ dùng tối đa 1 lần.
Ví dụ 4.9
Cho F = {A D, AB E, BI E, CD I, E C }. Tính (AE)+.
![Page 144: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/144.jpg)
128 Giáo trình cơ sở dữ liệu
Giải:
Bƣớc 1: (AE)+
= AE
Bƣớc 2 lần 1: dùng A D và E C, (AE)+
= AEDC
Bƣớc 2 lần 2: dùng CD I và E C, (AE)+
= AEDCI
Bƣớc 2 lần 3: không dùng đƣợc phụ thuộc hàm nào
Vậy (AE)+
= AEDCI
Một cấu trúc dạng bảng sẽ dễ quan sát hơn
AE AEDC AEDCI
A D *
AB E
BI E
CD I *
E C *
Giờ đây muốn kiểm tra tính thành viên của phụ thuộc hàm X Y, chỉ cần
tính XF+.
Mệnh đề 3
Cho tập phụ thuộc hàm F, ta có (XY) F+ Y X
+
Ví dụ 4.10
Cho F = {AD, ABE, BIE, CDI, EC }, ta có (AE DI) F+ vì
DI (AE)+.
2.2. Giải bài toán tìm phủ tối tiểu
Dựa vào bài toán thành viên và vào định nghĩa của tập phụ thuộc hàm tối
tiểu, ngƣời ta xây dựng thuật toán tìm phủ tối tiểu. Về tổng thể các bƣớc
của thuật toán theo đúng thứ tự của định nghĩa tập phụ thuộc hàm tối tiểu:
1. Phân rã một phụ thuộc hàm để vế phải chỉ có một thuộc tính (luật
F4)
2. Rút gọn vế trái để đƣợc phụ thuộc hàm đầy đủ (luật F2)
3. Rút gọn tập phụ thuộc hàm để đạt tính không dƣ thừa
Trong mỗi bƣớc đều phải kiểm tra tính thành viên thông qua việc tính bao
đóng của vế phải. Trƣớc khi đƣa ra thuật toán, chúng ta xét qua vài ví dụ
minh họa cho mỗi bƣớc
![Page 145: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/145.jpg)
Chƣơng 4: Phụ thuộc hàm 129
Ví dụ 4.11
Phân rã phụ thuộc hàm AB CDE đƣợc ba phụ thuộc hàm có vế
phải chỉ gồm 1 thuộc tính là { AB C, AB D, AB E}
Ví dụ 4.12
Làm phụ thuộc hàm ABCDE trở nên đầy đủ với
F = { ABCDE,
GABD,
ABCG,
CDG }
Giải:
Tính bao đóng của 14 tập con thật sự và khác rỗng của nó và tìm
thấy 4 tập con xác định E là CD, ABC, ACD và BCD. Trong đó chỉ
có 2 tập con không có tập con thật sự nào có tính chất này là CD và
ABC. Thay phụ thuộc hàm không đầy đủ ABCDE bởi một trong
hai phụ thuộc hàm đầy đủ ABCE hoặc CDE
1 A+ = A
2 B+ = B
3 C+ = C
4 D+ = D
5 AB+ = AB
6 AC+ = AC
7 AD+ = AD
8 BC+ = BC
9 BD+ = BD
10 CD+ = CDGABE *
11 ABC+ = ABCGDE *
12 ABD+ = ABD
13 ACD+ = ACDGBE *
14 BCD+ = BCDGAE *
Bằng cách loại dần từng thuộc tính, chúng ta có cách duyệt sau cho
phép giảm bớt độ phức tạp tính toán.
Loại A BCD+ = BCDGAE *
Loại AB CD+ = CDGABE *
Loại ABC D+ = D
Loại ABD C+ = C
![Page 146: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/146.jpg)
130 Giáo trình cơ sở dữ liệu
Cách làm này thu đƣợc phụ thuộc đầy đủ nhƣng không chắc ít
thuộc tính nhất, chẳng hạn
Loại D ABC+ = ABCGDE *
Loại DA BC+ = BC
Loại DB AC+ = AC
Loại DC AB+ = AB
Ví dụ 4.13
Cho
F = { ABC,
CDE,
EC,
DAEG,
ABGD,
DGAB }
Kiểm tra tính dƣ thừa của phụ thuộc hàm CDE.
Giải:
Loại CDE khỏi F,
F = { ABC,
EC,
DAEG,
ABGD,
DGAB }
Tính bao đóng với F mới: CD+ = CDAEGB. Vậy CDE dƣ thừa.
Bây giờ chúng ta sẵn sàng phát biểu thuật toán
Thuật toán 2: MinimalCover(F)
Vào : Tập phụ thuộc hàm F.
Ra : Một phủ tối tiểu G của F.
Các bước :
1. G =
2. foreach (X Y) F do
foreach A Y do G = G {X A}
![Page 147: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/147.jpg)
Chƣơng 4: Phụ thuộc hàm 131
3. foreach (X A) G DO
Z = X
while (U Z, U X, G ⊨ (U A)) do
Z = U
G = G\{ X A } { Z A}
4. foreach f G do
if (G\{f} G) G = G\{f}
5. RETURN(G)
Ví dụ 4.14
Tìm một phủ tối tiểu của F, với tập phụ thuộc hàm F nhƣ sau:
F = { ABC, CA,
BCD, ACDB,
DEG, BEC,
CGBD, CEAG }
Giải:
Thực hiện thuật toán ta có:
Bƣớc 2 (phân rã):
G = { AB C, C A,
BC D, ACD B,
D E, D G,
BE C, CG B,
CG D, CE A,
CE G }
Bƣớc 3 (làm đầy đủ hay rút gọn vế trái):
Chỉ làm việc với những phụ thuộc hàm có vế trái nhiều hơn một
thuộc tính
Vế trái Loại Bao đóng Chọn
AB A B+ = B
B A+ = A
BC B C+ = CA
C B+ = B
ACD A CD+ = CDABEG *
AC D+ = D
![Page 148: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/148.jpg)
132 Giáo trình cơ sở dữ liệu
AD C+ = CA
BE B E+ = E
E B+ = B
CG C G+ = G
G C+ = CA
CE C E+ = E
E C+ = CA *
Thay ACD B bởi CD B và CE A bởi C A (đã có trong
F):
G = { AB C, C A,
BC D, CD B,
D E, D G,
BE C, CG B,
CG D, CE G }
Bƣớc 4 (loại phụ thuộc hàm dƣ thừa hay rút gọn tập phụ thuộc hàm):
Chỉ làm việc với những phụ thuộc hàm có cùng vế phải (lƣu ý bao
đóng tính trên F đã loại phụ thuộc hàm đang xét và những phụ
thuộc hàm đã loại trƣớc đó)
Vế phải Vế trái Bao đóng Loại
C AB AB+ = AB
BE BE+ = BE
D BC BC+ = BCA
CG CG+ CGABD *
B CD CD+ CDAEGB *
CG
G D D+ = DE
CE CE+ = CEA
Kết quả sau bƣớc 4 là một phủ tối tiểu của F
G = { AB C, C A,
BC D, D E,
D G, BE C,
CG B, CE G }
![Page 149: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/149.jpg)
Chƣơng 4: Phụ thuộc hàm 133
3. Khảo sát tình huống
Chúng ta đã mở đầu chƣơng bằng lƣợc đồ quan hệ với ràng buộc phụ thuộc
hàm dẫn đến có sự dƣ thừa khi lƣu trữ dữ liệu trong các bảng nhƣ vậy.
Chúng ta cũng đã chỉ ra cách giải quyết khi xác định đƣợc tập phụ thuộc
hàm là không dƣ thừa. Cách giải quyết này sẽ phân rã lƣợc đồ ban đầu
thành các lƣợc đồ con. Giờ đây chúng ta đang đối diện trƣớc bài toán phân
rã bảo toàn thông tin đã đƣợc đề cập trong chƣơng mô hình cơ sở dữ liệu
quan hệ. Trong mục này chúng ta sẽ khảo sát một tình huống. Chúng ta sẽ
xét một lƣợc đồ quan hệ với tập phụ thuộc hàm, tìm phủ tối tiểu, cho trƣớc
một quan hệ thỏa tập phụ thuộc hàm này, đƣa ra các phân rã có thể bảo
toàn thông tin hoặc không.
3.1. Tình huống
Quan hệ sau lƣu lịch mổ của bệnh nhân:
Lịch mổ
MãNV Tên bác sĩ MãBN TênBN Ngày Giờ Phòng
D1011 Nguyễn A B100 Lê V 12/5/08 10:00 P15
D1011 Nguyễn A B105 Lý S 12/5/08 12:00 P15
D1024 Phạm B B108 Trần X 12/5/08 10:00 P10
D1024 Phạm B B108 Trần X 14/5/08 14:00 P10
D1032 Trần C B105 Lý S 14/5/08 16:30 P15
D1032 Trần C B110 Lê X 15/5/08 18:00 P13
Ký hiệu tên các thuộc tính MãNV, Tên bác sĩ, MãBN, TênBN, Ngày, Giờ và
Phòng theo thứ tự bởi các chữ cái M, T, B, E, N, G và P, chúng ta viết lại
lƣợc đồ quan hệ dƣới dạng đơn giản dễ làm việc, R = (MTBENGP).
Trong lƣợc đồ này dễ nhận ra có các phụ thuộc hàm M T, B E. Thêm
một chút khó khăn, chúng ta còn nhận ra thêm các phụ thuộc hàm MNG
PB, BNG PM. Nhƣ vậy tập các phụ thuộc hàm là
F = { M T, B E, MNG PB, BNG PM }
Giải bài toán tìm phủ tối tiểu, chúng ta thấy F đã tối tiểu.
![Page 150: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/150.jpg)
134 Giáo trình cơ sở dữ liệu
3.2. Giải quyết
Lƣu các quan hệ hàm M T và B E ở các bảng riêng và đặt tên thích
hợp, ta có:
Bác sĩ MãNV Tên bác sĩ
D1011 Nguyễn A
D1024 Phạm B
D1032 Trần C
Bệnh nhân MãBN TênBN
B100 Lê V
B105 Lý S
B108 Trần X
B110 Lê X
Lịch mổ MãNV MãBN Ngày Giờ Phòng
D1011 B100 12/5/08 10:00 P15
D1011 B105 12/5/08 12:00 P15
D1024 B108 12/5/08 10:00 P10
D1024 B108 14/5/08 14:00 P10
D1032 B105 14/5/08 16:30 P15
D1032 B110 15/5/08 18:00 P13
Có thể kiểm tra trực tiếp phân rã này bảo toàn thông tin (xem chƣơng 2).
4. Kỹ thuật tableaux
Tableaux là một quan hệ với các dòng gồm 2 loại biến. Loại thứ nhất
không thể thay thế gồm các biến ai chỉ xuất hiện trên cột thứ i và loại thứ
![Page 151: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/151.jpg)
Chƣơng 4: Phụ thuộc hàm 135
hai có thể thay thế gồm các biến bj. Quá trình biến đổi T thành T* thoả tập
phụ thuộc hàm bằng cách thay thế các biến bj đƣợc gọi là kỹ thuật
tableaux.
Ví dụ 4.15
Xét bảng
T(A B C D)
a1 a2 b1 b2
b3 a2 b4 a4
a1 b6 a3 a4
Với F = {B C, A D}. Bắt đầu với B C, ta thấy dòng 1 và 2
có B giống nhau do đó C phải giống nhau thay b4 bởi b1:
T(A B C D)
a1 a2 b1 b2
b3 a2 b1 a4
a1 b6 a3 a4
Tiếp tục với A D, ta thấy dòng 1 và 3 có A giống nhau do đó D
phải giống nhau thay b2 bởi a4:
T(A B C D)
a1 a2 b1 a4
b3 a2 b1 a4
a1 b6 a3 a4
Đến đây bảng đã thỏa tập phụ thuộc hàm, ta có kết quả thay thế
cuối cùng là T* (A B C D)
a1 a2 b1 a4
b3 a2 b1 a4
a1 b6 a3 a4
Tuy kỹ thuật tableaux đòi hỏi tính toán nhiều, nhƣng do tính trực quan, nó
đƣợc sử dụng trong nhiều trƣờng hợp.
4.1. Áp dụng giải bài toán thành viên
Để kiểm tra (X Y) F+, ta xây dựng bảng TX, áp dụng kỹ thuật tableaux
đƣợc T*X, kiểm tra các cột của Y xem có chứa toàn biến loại a không.
1. TX gồm 2 dòng, một dòng tồn a và dòng còn lại với các biến a nằm trên các cột của X,
các cột còn lại chứa các biến b
![Page 152: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/152.jpg)
136 Giáo trình cơ sở dữ liệu
2. Tính T*X
3. Kiểm tra cột A có chứa toàn các biến loại a hay không
Ví dụ 4.16
Kiểm tra (B D) F+, với F = {B C, C D} và R = {ABCDE}.
Giải:
Ta có TB (A B C D E)
a1 a2 a3 a4 a5
b1 a2 b2 b3 b4
Tính T*B (A B C D E)
a1 a2 a3 a4 a5
b1 a2 a3 a4 b4
Kiểm tra cột D và kết luận B D là thành viên của F+
4.2. Áp dụng giải bài toán bao đóng
Để tính X+, ta thực hiện
1. Xây dựng TX
2. Tính T*X
3. Tập hợp các cột toàn a
Ví dụ 4.17
Giải:
Tính B+, với F = {B C, C D} và R = {ABCDE}.
Giải:
Thực hiện giống ví dụ trên, ta có B+=BCD
![Page 153: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/153.jpg)
Chƣơng 4: Phụ thuộc hàm 137
TÓM TẮT
Phụ thuộc hàm là một quan hệ hàm;
Việc xuất hiện phụ thuộc hàm dẫn đến lƣu trữ dƣ thừa;
Lƣu riêng các quan hệ hàm là một giải pháp;
Phân rã một quan hệ có thể dẫn đến không bảo toàn thông tin;
Với tập phụ thuộc hàm, cần bảo đảm tính tối tiểu để khi phân rã
không làm dƣ thừa các quan hệ con;
Thuật toán tìm phủ tối tiểu dựa trên kỹ năng xác định tính thành
viên của một phụ thuộc hàm;
Kiểm tra tính thành viên của một phụ thuộc hàm dựa trên bộ luật
dẫn;
Kỹ thuật tính bao đóng là một kỹ thuật đơn giản kiểm tra tính thành
viên;
Kỹ thuật tableaux là một kỹ thuật khác cũng cho phép kiểm tra tính
thành viên.
![Page 154: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/154.jpg)
138 Giáo trình cơ sở dữ liệu
BÀI TẬP
1. Cho quan hệ:
r A B C
1 4 2
3 5 6
3 4 6
7 3 8
9 1 0
r thoả phụ thuộc hàm nào sau đây: A B, A C, AB C, BC
A
2. Cho một phản ví dụ chứng tỏ luật { AB C, C A } ⊨ { A B }
là sai.
3. Cho tập phụ thuộc hàm F = { AB C, C D, D A }. Hãy:
a. Chỉ ra một khoá;
b. Chỉ ra một siêu khoá;
4. Cho tập phụ thuộc hàm F = { A B, BC D }. Dùng bộ luật, cho
biết phụ thuộc hàm sau đây là thành viên của F+: AC D, B D
và AD B.
5. Dùng bộ luật, chứng tỏ {XYW, Y Z, WZ P, WP QR, Q
X} ⊨ XYP.
6. Kiểm tra tính tƣơng đƣơng giữa hai tập phụ thuộc hàm F = { A
BC, A D, CD E} và G = { A BCE, A ABD, CD E }.
7. Loại các thuộc tính dƣ thừa trái khỏi các phụ thuộc hàm của
F = { X YW, XW Z, Z Y, XY Z }
8. Loại các phụ thuộc hàm dƣ thừa ra khỏi
F = { X Y, Y X, Y Z, Z Y, X Z, Z X }
9. Cho tập phụ thuộc hàm F ={ AB C, B D, CD E, CE
GH, G A }
Tính AB+ suy ra AB E.
![Page 155: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/155.jpg)
Chƣơng 4: Phụ thuộc hàm 139
F ⊨ (BG C) đúng hay sai (dùng cả luật dẫn lẫn kỹ thuật bao
đóng và kỹ thuật tableaux).
10. Tìm một phủ tối tiểu của
F = { A C, AB C, C DI, CD I, EC AB, EI C }
11. Tìm một tập phụ thuộc hàm có hai phủ tối tiểu với số phụ thuộc
hàm khác nhau.
12. Xét lƣợc đồ quan hệ R của quan hệ thời khoá biểu, lƣu thông tin về
lịch giảng trong một trƣờng đại học (xem case study 2) trong học kỳ
hiện tại:
R = (LMGTBP)
Trong đó L, M, G, T, B và P theo thứ tự là viết tắt của Mã-lớp, Mã-
môn, Mã-giảng-viên, Thứ, Buổi và Mã-phòng. Hãy xác định tập phụ
thuộc hàm.
13. Một đại lý chuyên cung cấp lao động theo thời vụ cho các khách
sạn trong thành phố. Quan hệ sau lƣu thông tin về hợp đồng giữa
đại lý với khách sạn. Vì số lao động nhƣ vậy rất đông và mang tính
thời vụ nên một hợp đồng có nhiều lao động và xác định tổng số
giờ làm việc của mỗi lao động.
Hợp đồng
SốBHXH Số HĐ Giờ Tên NV MãKS TênKS
1135 C1024 16 Lê V K25 Rex
1057 C1024 24 Lý S K25 Rex
1068 C1025 28 Trần X K04 Royal
1135 C1025 15 Lê V K04 Royal
a. Xác định tập phụ thuộc hàm
b. Tìm phủ tối tiểu
c. Phân rã và kiểm tra tính bảo toàn thông tin
![Page 156: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/156.jpg)
![Page 157: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/157.jpg)
Chƣơng 5 DẠNG CHUẨN
Mục tiêu của chƣơng.
Trong chƣơng này chúng ta sẽ học về:
Khái niệm dạng chuẩn;
Khái niệm thuộc tính khoá, thuộc tính không khoá;
Bài toán tìm tập tất cả các khoá;
Giá trị nguyên tố và dạng chuẩn 1;
Phụ thuộc đầy đủ và dạng chuẩn 2;
Phụ thuộc bắc cầu và dạng chuẩn 3;
Phụ thuộc không tầm thƣờng và dạng chuẩn BC;
Phân rã và chiếu của tập phụ thuộc hàm;
Phân rã bảo toàn tập phụ thuộc hàm;
Phân rã đặc trƣng đầy đủ tập phụ thuộc hàm.
Các thao tác trên quan hệ có thể ảnh hƣởng đến tính toàn vẹn dữ liệu. Phụ
thuộc hàm là một dạng ràng buộc toàn vẹn. Với ràng buộc phụ thuộc hàm,
chúng ta sẽ tìm hiểu các dạng chuẩn của lƣợc đồ quan hệ <R, F> nhƣ là
một tiêu chuẩn cho việc thiết kế cơ sở dữ liệu quan hệ nhằm bảo đảm giảm
tối đa việc lƣu trữ dƣ thừa.
Nhƣ vậy dạng chuẩn là một khái niệm cho phép đánh giá sự dư thừa trong
lưu trữ.
Ví dụ 5.1
Cho quan hệ
r ( A B C D )
a1 b1 c1 d1
a1 b2 c2 d1
a2 b3 c1 d2
Quan sát thấy r thoả phụ thuộc hàm A D. Giả sử đây là ràng buộc mà r
phải thỏa, tức r đƣợc định nghĩa trên lƣợc đồ <R, F> với R = (ABCD) và F
![Page 158: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/158.jpg)
142 Giáo trình cơ sở dữ liệu
= {A D}. Rõ ràng với việc sử dụng lƣợc đồ trên đã gây ra nguy cơ lƣu
trữ dƣ thừa. Chẳng hạn nếu chúng ta thay đổi dòng 1 bằng câu lệnh cập
nhật CH(r; a1, b1, c1, d1; C = c1, D = d3), r sẽ vi phạm phụ thuộc hàm A
D.
Ví dụ 5.2
Dùng lại ví dụ trên, bổ sung thêm phụ thuộc hàm AB C, tức F = {AB
C, A D}. Chúng ta lƣu r trong 2 lƣợc đồ50
<ABC, {AB C}>, < AD, {A
D}> nhƣ sau:
r1 ( A B C) r2 ( A D )
a1 b1 c1 a1 d1
a1 b2 c2 a2 d2
a2 b3 c1
Với AB là một khoá chỉ định của R1 = ABC, và A là một khoá chỉ định của
R2 = AD.
Thật ra đây là kết quả của 2 phép chiếu. Bây giờ muốn xây dựng lại r chỉ
cần dùng phép kết (bài toán bảo toàn thông tin). Cách lƣu trữ này tránh
đƣợc sự dƣ thừa.
Trong ví dụ trên chúng ta thấy các phụ thuộc hàm đã chuyển thành các phụ
thuộc khoá. Một trong các bài toán quan trọng trong chƣơng này là bài
toán tìm tất cả các khoá của lƣợc đồ <R, F>. Khái niệm dạng chuẩn nói
chung đều liên quan đến khoá. Mục tiêu của chƣơng này là xác định dạng
chuẩn của lƣợc đồ quan hệ dạng <R, F>.
Lược đồ <R, F> được gọi là không đạt chuẩn nếu tìm thấy phụ thuộc hàm
X A với X không chứa khoá và A không thuộc X. Khi ấy quan hệ định
nghĩa trên R có nguy cơ xuất hiện dƣ thừa. Chẳng hạn, trong 2 ví dụ trên, r
là dƣ thừa trong lúc r1 và r2 thì không.
1. Bài toán tìm tất cả khoá
Trong chƣơng 2 chúng ta đã định nghĩa khoá của một lƣợc đồ quan hệ, là
khoá của tất cả các quan hệ thuộc SATR(F).
Phụ thuộc hàm X Y đƣợc gọi là phụ thuộc khoá nếu X là một khoá của
<R, F>.
50 xem chƣơng 4,
![Page 159: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/159.jpg)
Chƣơng 5: Dạng chuẩn 143
Cho <R, F>, ta có các nhận xét sau:
1. Khoá phải chứa các thuộc tính có ở vế trái của một phụ thuộc hàm
nào đó nhƣng không có ở vế phải của tất cả các phụ thuộc hàm
2. Khoá không chứa các thuộc tính chỉ có ở vế phải các phụ thuộc
hàm
3. Xét tập con X, chƣa là khoá, với thuộc tính A không nằm trong X
có trong vế trái của một phụ thuộc hàm nào đó, ta có khoá không
thể chứa XA nếu một trong hai điều sau đúng
a. A X+
b. Xuất hiện một thuộc tính dƣ thừa trong XA
Ví dụ 5.3
Tìm tất cả các khoá của <R, F> với R=(DSMG) và F={MD, DM,
DSG, MSG}.
Giải: Gọi K là tập các khoá ta có:
K {D, S, M, G, DS, DM, DG, SM, SG, MG, DSM, DSG, DMG,
SMG};
S là thuộc tính không có ở vế phải (của bất kỳ phụ thuộc hàm
thuộc F), còn G là thuộc tính chỉ có ở vế phải (ở một phụ thuộc
hàm nào đó thuộc F). Theo nhận xét 1 và 2, khoá phải chứa S và
không chứa G, suy ra K {S, DS, SM, DSM}
Xét S, vì S chƣa là khoá, loại S, K {DS, SM, DSM}. Với S vừa
loại ta quan tâm đến 2 thuộc tính bổ sung cho S là M và D:
o Với M, MS là khoá, loại các siêu khoá K {DS, SM}
o Với D, DS là khoá, K {DS, SM}
Vậy K = {DS, SM}
Ví dụ 5.4
Tìm tất cả các khoá của <R, F> với R=(ABCDE) và F={AB B, CB D,
AE C}.
Giải: Gọi K là tập các khoá:
Khoá phải chứa AE và không chứa D, K {AE, AEB, AEC,
AEBC}
Vì AE chƣa là khoá, AE+ = AEC, theo nhận xét 3 ta có K
{AEB}
Còn duy nhất 1 ứng viên, vậy K = {AEB}
![Page 160: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/160.jpg)
144 Giáo trình cơ sở dữ liệu
Nếu F là phủ tối tiểu, việc tìm khoá sẽ đỡ phức tạp hơn. Xét ví dụ sau:
Ví dụ 5.5
Làm lại ví dụ trên với F = {CB D, AE C} tối tiểu. Khoá phải chứa
AEB và không chứa D, tập ứng viên chỉ còn lại 2 {AEB, AEBC}. Do AEB
là khoá cho nên nó là khoá duy nhất.
Với các quan hệ phức tạp gồm nhiều thuộc tính chúng ta cần đến thuật
toán. Dựa vào các nhận xét đã nêu chúng ta sẽ phát triển một cây tìm tập
các khoá với gốc là các thuộc tính buộc phải có trong khoá và các nhánh
đƣợc phát triển bằng các thuộc tính còn lại sau khi đã loại bỏ các thuộc tính
không thể tham gia vào khoá. Các nút đƣợc phát triển chỉ khi chúng bảo
đảm tìm thấy khoá do đó cây nên đƣợc phát triển theo chiều rộng và lệch
trái.
Trong thuật toán sau, chúng ta xây dựng cây theo chiều rộng dựa trên các
nguyên tắc:
1. Gốc là tập thuộc tính gồm các thuộc tính có ở vế trái của một phụ
thuộc hàm nào đó, nhƣng không có ở vế phải của tất cả các phụ
thuộc hàm.
2. Với mỗi nút lá của cây, xác định tập bổ sung là tập bổ sung của nút
cha loại đi các thuộc tính nằm trong bao đóng của nó (tập bổ sung ở
nút gốc là những thuộc tính không nằm trong bao đóng của nút
gốc).
3. Phát triển cây theo mỗi thuộc tính bổ sung
4. Loại các nút con là siêu khoá
5. Dừng ở các nút con là khoá
6. Phát triển các nút con còn lại
Thuật toán 3: Tìm tất cả các khoá
Vào : Lƣợc đồ quan hệ <R, F>
Ra : tập các khoá K
Các bước :
1. Xây dựng cây theo các nguyên tắc đã nêu
2. Tập hợp các khoá trên cây vào K
3. RETURN(K)
![Page 161: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/161.jpg)
Chƣơng 5: Dạng chuẩn 145
Ví dụ 5.6
Cho lƣợc đồ <R, F> với R = (ABC) và F = { A B, B C } ta có cây chỉ
gồm gốc A và đây là khoá duy nhất.
Ví dụ 5.7
Cho lƣợc đồ <R, F> với R = (ABC) và F = { AB C, C A, A B } ta
có
ABC
A B C
Nếu F tối tiểu thì cây sẽ gọn hơn, chẳng hạn với F = {A BC, C A}
ABC
A C
Ví dụ 5.8
Xét lƣợc đồ quan hệ R = (DSMG) với F = { M D, D M, DS G, MS
G }.
S MD
SM SD
2. Các dạng chuẩn
Trƣớc hết chúng ta cần một định nghĩa. Cho lƣợc đồ quan hệ <R, F>. Giả
sử K là tập tất cả các khoá. Thuộc tính khoá là thuộc tính tham gia vào một
khoá bất kỳ trong K. Ngƣợc lại gọi là thuộc tính không khoá.
2.1. Dạng chuẩn 1
Thuộc tính A được gọi là nguyên tố nếu vdom(A), v không phải là tập
các giá trị hoặc là một giá trị phức hợp. Một cách tổng quát, về mặt logic,
một giá trị có thể là một giá trị phức, nhƣng nếu không thể truy xuất trực
tiếp các giá trị thành phần vẫn xem giá trị này là nguyên tố51
.
51 E.F.Codd (1990) phát biểu giá trị là nguyên tố nếu không thể phân rã bởi hệ quản trị cơ
sở dữ liệu, kể cả khi dùng các hàm. Về sau, H.Darwen và C.J.Date (1992) cho rằng phát
![Page 162: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/162.jpg)
146 Giáo trình cơ sở dữ liệu
Ví dụ 5.9
Thuộc tính ngày sinh có kiểu DATE là nguyên tố, còn nếu có kiểu cấu trúc
{day, month, year} thì không còn nguyên tố nữa. Thuộc tính điểm có kiểu
INTEGER là nguyên tố, còn nếu có kiểu mảng gồm nhiều số thì không
nguyên tố.52
Định nghĩa 5.1
1. Lược đồ quan hệ đạt dạng chuẩn 1 nếu mọi thuộc tính của nó đều
nguyên tố.
2. Lược đồ cơ sở dữ liệu đạt chuẩn 1 nếu mọi lược đồ quan hệ con đều
đạt chuẩn 1
Khi làm việc với mô hình quan hệ, chúng ta thừa nhận các lƣợc đồ cơ sở
dữ liệu đều đạt chuẩn 153
vì miền giá trị của các thuộc tính đƣợc coi là
nguyên tố.
Ví dụ 5.10
Quan hệ
KH ( MãKH TênKH SốĐT)
k02 Lan {08123456, 0912999999}
…
Không đạt chuẩn 1, vì kiểu của SốĐT là kiểu mảng. Nếu đổi kiểu của SốĐT
thành kiểu xâu ký tự thì quan hệ trên đạt chuẩn 1, nhƣng không thể truy
xuất trực tiếp một trong số các số điện thoại của khách hàng đƣợc.
biểu của Codd là không rõ ràng. Theo C.J.Date, một bảng đạt chuẩn 1 nếu nó đẳng cấu với
một quan hệ. Theo đó, giao giữa mỗi dòng và mỗi cột của một bảng đạt chuẩn 1, nếu khác
trống, chỉ chứa một giá trị duy nhất. Thuật ngữ nguyên tố đƣợc dùng trong tài liệu này
đƣợc hiểu theo nghĩa của C.J.Date. Để tránh nhập nhằng, một số tài liệu sử dụng thuật ngữ
repeating group thay cho thuật ngữ nguyên tố. 52 Xét việc gán hai số 5 và 7 vào biến x. Nếu kiểu của x là mảng, gán x[0] = 5 và x[1] = 7, kiểu mảng không là nguyên tố. Nếu kiểu của x là nguyên, chúng ta không thể gán hai giá
trị trên vào x đƣợc. Tuy nhiên nếu biểu diễn (5, 7) = 5*12 + 7 = 67, thì có thể gán (gián
tiếp) hai giá trị trên qua giá trị mới là 67 vào biến x. Rõ ràng kiểu nguyên là nguyên tố. 53 có quan điểm cho rằng quan hệ [chi tiết hoá đơn](HDSố, MãHG, SốL, ĐGiá, TTiền) có
thuộc tính dẫn xuất TTiền = SốL ĐGiá đƣợc cho là không nguyên tố. Quan điểm của
chúng tôi ở đây chỉ chú trọng đến kiểu của thuộc tính có là nguyên tố hay không mà thôi.
![Page 163: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/163.jpg)
Chƣơng 5: Dạng chuẩn 147
2.2. Dạng chuẩn 2
Cho tập phụ thuộc hàm F, phụ thuộc hàm (X Y) F+ đƣợc gọi là không
dƣ thừa trái nếu Y là phụ thuộc đầy đủ vào X dƣới F.
Ví dụ 5.11
Cho lƣợc đồ <R, F> với R = (ABCD) và F = {AB C, A D}. Vì AB là
khoá duy nhất suy ra C và D là hai thuộc tính không khoá còn A và B là hai
thuộc tính khoá. Ngoài ra C phụ thuộc đầy đủ vào khoá duy nhất AB còn D
thì không.
Ví dụ 5.12
Xét lƣợc đồ cơ sở dữ liệu {<(ABC), F = {AB C}>, < (AD), {A D}>}.
Với lƣợc đồ quan hệ trƣớc, ta có A và B là hai thuộc tính khoá còn C là
thuộc tính không khoá, hơn nữa C phụ thuộc đầy đủ vào khoá duy nhất AB.
Với lƣợc đồ quan hệ sau, ta có là A thuộc tính khoá còn D là thuộc tính
không khoá và D phụ thuộc đầy đủ vào khoá duy nhất A.
Định nghĩa 5.2
1. Lược đồ quan hệ R đạt dạng chuẩn 2 dưới F nếu R đạt dạng chuẩn 1 và
mọi thuộc tính không khoá của R đều phải phụ thuộc đầy đủ vào tất cả
các khoá của R.
2. Một lược đồ cơ sở dữ liệu D đạt dạng chuẩn 2 dưới F nếu mọi lược đồ
quan hệ Rj của D đều đạt dạng chuẩn 2 dưới F.
Nói cách khác, mỗi khi tìm thấy vi phạm, tức tìm thấy phụ thuộc hàm X
A mà X không chứa khoá, nếu A là thuộc tính không khoá còn X là tập con
thực sự của một khoá nào đó thì vi phạm này là vi phạm chuẩn 2.
Ví dụ 5.13
Lƣợc đồ <ABCD, {AB C, A D}> không đạt chuẩn 2 vì tìm thấy vi
phạm A D với D không khoá còn A thuộc khoá AB.
Ví dụ 5.14
Lƣợc đồ cơ sở dữ liệu {<(ABC), F = {AB C}>, < (AD), {A D}>} đạt
chuẩn 2 vì các lƣợc đồ quan hệ đều đạt chuẩn 2.
Dạng chuẩn 2 vẫn còn ẩn chứa sự dƣ thừa dữ liệu, nghĩa là vẫn còn tìm
thấy các vi phạm, do đó vẫn còn đó sự bất ổn. Xét ví dụ sau.
![Page 164: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/164.jpg)
148 Giáo trình cơ sở dữ liệu
Ví dụ 5.15
Cho quan hệ r định nghĩa trên lƣợc đồ <(ABCD), {AB C, CD,
DC}>:
r ( A B C D )
a1 b1 c1 d1
a1 b2 c2 d2
a2 b3 c1 d1
Lƣợc đồ này đạt chuẩn 2 nhƣng lƣu trữ trên r vẫn dƣ thừa, tức các thao tác
trên r có khả năng gây ra bất ổn. Thao tác CH(r; a1, b1, c1, d1; C=c3,
D=d1) làm cho r không thỏa phụ thuộc hàm D C.
2.3. Dạng chuẩn 3
Cho tập phụ thuộc hàm F, phụ thuộc hàm dẫn xuất (X Z) F+ đƣợc gọi
là phụ thuộc hàm bắc cầu, nếu có Y sao cho X Y (Y ↛ X) và Y Z (Z ∉
XY). Với phụ thuộc hàm bắc cầu X Z, ta còn nói Z là phụ thuộc bắc cầu
vào X (qua Y)
Ví dụ 5.16
Trong lƣợc đồ <(ABCD), {AB C, C D, D C}>, phụ thuộc hàm AB
D là phụ thuộc hàm bắc cầu vì AB C và C D (C ↛ AB và D ∉
ABC).).
Định nghĩa 5.3
1. Lược đồ quan hệ R đạt dạng chuẩn 3 dưới F nếu R đạt chuẩn 1 và mọi
thuộc tính không khoá của R đều không phụ thuộc bắc cầu vào bất kỳ
khoá nào của R.
2. Lược đồ cơ sở dữ liệu D là đạt dạng chuẩn 3 dưới F nếu mọi lược đồ
quan hệ Rj của D đều đạt dạng chuẩn 3 dưới F.
Nói cách khác, mỗi khi tìm thấy vi phạm, tức tìm thấy phụ thuộc hàm X
A mà X không chứa khoá, nếu A là thuộc tính không khoá thì vi phạm này
là vi phạm chuẩn 3.
Rõ ràng một vi phạm chuẩn 2, cũng vi phạm chuẩn 3 do đó nếu một lƣợc
đồ đạt chuẩn 3 thì nó đạt chuẩn 2.
Ví dụ 5.17
Lƣợc đồ <(ABCD), {AB C, C D, D C}> không đạt dạng chuẩn 3
vì tìm thấy vi phạm C D với D là thuộc tính không khoá.
![Page 165: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/165.jpg)
Chƣơng 5: Dạng chuẩn 149
Ví dụ 5.18
Lƣợc đồ cơ sở dữ liệu {<(ABC), F = {AB C}>, < (CD), {C D, D
C}>} đạt chuẩn 3 (do đó đạt chuẩn 2) vì các lƣợc đồ quan hệ đều đạt chuẩn
3.
Ngay cả dạng chuẩn 3 vẫn còn ẩn chứa sự dƣ thừa dữ liệu, nghĩa là vẫn còn
có các vi phạm, do đó vẫn còn tiếp tục có sự bất ổn. Xét ví dụ sau.
Ví dụ 5.19
Cho quan hệ r định nghĩa trên lƣợc đồ <(ABC), {AB C, C B}>. Lƣợc
đồ này đạt chuẩn 3 vì không có thuộc tính không khoá.
r ( A B C)
a1 b1 c1
a1 b2 c2
a2 b1 c1
Tuy nhiên thao tác cập nhật CH(r; a1, b1, c1; B = b2, C = c1) làm nó vi
phạm C B.
2.4. Dạng chuẩn BC (Boyce-Codd)
Đây là dạng chuẩn cao nhất khi làm việc với các ràng buộc phụ thuộc hàm.
Với lƣợc đồ quan hệ đạt chuẩn này chúng ta sẽ không tìm thấy bất kỳ một
vi phạm nào. Nhắc lại, trong chƣơng này, khi nói tới việc tìm thấy một vi
phạm nghĩa là tìm thấy một phụ thuộc hàm không tầm thƣờng mà lƣợc đồ
cơ sở dữ liệu đang xét phải thỏa.
Một phụ thuộc hàm không tầm thƣờng là phụ thuộc hàm hoặc vế phải
không có phần giao với vế trái hoặc hợp của hai vế là tập con thật sự của
R.
Định nghĩa 5.4
1. Lược đồ quan hệ R đạt dạng chuẩn BC dưới F nếu R đã đạt dạng
chuẩn 1 và mọi thuộc tính của R đều không phụ thuộc bắc cầu vào bất
kỳ khoá nào của R.
2. Lược đồ cơ sở dữ liệu D đạt dạng chuẩn BC dưới F nếu mọi lược đồ
quan hệ Rj của D đều đạt dạng chuẩn BC dưới F.
Nói cách khác, mỗi khi tìm thấy vi phạm, tức tìm thấy phụ thuộc hàm X
A mà X không chứa khoá thì vi phạm này là vi phạm chuẩn BC. Rõ ràng
một vi phạm chuẩn 3, cũng vi phạm chuẩn BC do đó nếu một lƣợc đồ đạt
chuẩn BC thì nó đạt chuẩn 3. Ta có:
![Page 166: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/166.jpg)
150 Giáo trình cơ sở dữ liệu
Cho lược đồ <R, F>. Gọi NF1R(F), NF2R(F), NF3R(F) và NFBCR(F) thứ tự
là các quan hệ thuộc SATR(F) đạt chuẩn 1, 2, 3 và BC, ta có NF1 ⊃ NF2
⊃ NF3 ⊃ NFBC
Ví dụ 5.20
Lƣợc đồ <(ABC), {AB C, C B}> không đạt dạng chuẩn BC, vì có vi
phạm C B.
Ví dụ 5.21
Lƣợc đồ cơ sở dữ liệu {<(ABC), {AB C}>, <(BC), {C B}>} đạt dạng
chuẩn BC, vì các lƣợc đồ quan hệ con đều đạt chuẩn BC54
.
2.5. Xác định dạng chuẩn
Ngoài trừ dạng chuẩn BC, khi xét một lƣợc đồ có đạt dạng chuẩn 2 hoặc 3
hay không chúng ta phải xét một thuộc tính nào đó có là thuộc tính khoá
hay không. Nói cách khác, muốn xác định dạng chuẩn của một lƣợc đồ
quan hệ trƣớc hết chúng ta cần tìm tập các khoá. Sau đây là các bƣớc xác
định dạng chuẩn của lƣợc đồ quan hệ <R, F>:
1. Nếu không tìm thấy bất kỳ vi phạm nào, <R, F> đạt chuẩn BC, kết
thúc;
2. Tìm tập khoá;
3. Nếu không tìm thấy vi phạm chuẩn 3, <R, F> đạt chuẩn 3, kết thúc;
4. Nếu không tìm thấy vi phạm chuẩn 2, <R, F> đạt chuẩn 2, kết thúc;
5. <R, F> đạt chuẩn 1.
Ví dụ 5.22
Xác định dạng chuẩn của lƣợc đồ <R, F> = <(ABCD), {AB C, C D,
D C}>.
Giải:
1. Tìm thấy vi phạm C D, vì C+ = CD R, <R, F> không đạt chuẩn
BC.
2. Ta có AB là khoá duy nhất.
3. Tìm thấy vi phạm C D, C là thuộc tính không khoá, <R, F>
không đạt chuẩn 3.
4. Không tìm thấy bất kỳ vi phạm chuẩn 2 nào, <R, F> đạt chuẩn 2.
54 Với điều kiện bổ sung ràng buộc tồn tại r(ABC)[BC] s(BC).
![Page 167: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/167.jpg)
Chƣơng 5: Dạng chuẩn 151
Chúng ta chấp nhận kết quả sau (xem bài tập): Nếu có một vi phạm vi phạm
dạng chuẩn, thì vi phạm dạng này có thể tìm thấy trong F. Với kết quả này
chúng ta có cách xác định dạng chuẩn nhƣ sau:
1. Tìm tập khoá;
2. Liệt kê các vi phạm của F;
3. Xác định vế trái thuộc khóa;
4. Xác định các thuộc tính không khóa;
5. Kết luận dạng chuẩn.
Sử dụng bảng dạng sau để trình bày quá trình xác định dạng chuẩn
XY X+ X ⊊ K A ∊ Y Vi phạm
Ví dụ 5.23
Xác định dạng chuẩn của lƣợc đồ <R, F> = <(ABCD), {AB C, C D,
D C}>.
Giải:
Biết khóa duy nhất là AB. Lập bảng
X Y X+ X ⊊ K A ∊ Y Vi phạm
C D CD D Chuẩn 3
D C CD C Chuẩn 3
Vậy <R, F> đạt chuẩn 2.
Ví dụ 5.24
Xác định dạng chuẩn của lƣợc đồ <R, F> = <(ABC), {A B, B C}>.
Giải:
Biết khóa duy nhất là A. Lập bảng
X Y X+ X ⊊ K A ∊ Y Vi phạm
B C BC C Chuẩn 3
Vậy <R, F> đạt chuẩn 2.
![Page 168: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/168.jpg)
152 Giáo trình cơ sở dữ liệu
Ví dụ 5.25
Xác định dạng chuẩn của lƣợc đồ <R, F> = <(ABCD), {A B, B C}>.
Giải:
Biết khóa duy nhất là AD. Lập bảng
X Y X+ X ⊊ K A ∊ Y Vi phạm
A B ABC AD B Chuẩn 2
B C BC C Chuẩn 3
Vậy <R, F> đạt chuẩn 1.
3. Chiếu của tập phụ thuộc hàm
Muốn xác định dạng chuẩn của lƣợc đồ cơ sở dữ liệu ta phải xác định dạng
chuẩn của các lƣợc đồ quan hệ thành phần. Trong trƣờng hợp ràng buộc
phụ thuộc hàm đƣợc cho trên cơ sở dữ liệu chúng ta không có cơ sở để xác
định dạng chuẩn của các lƣợc đồ quan hệ thành phần cho đến khi tìm thấy
các tập phụ thuộc hàm thành phần.
3.1. Khái niệm
Cho tập phụ thuộc hàm F và tập con các thuộc tính S. Xét f F+, f = (X →
Y). Tập phụ thuộc hàm S(f) = {X → A | XA S} đƣợc gọi là chiếu của f
xuống R.
Định nghĩa 5.5
Cho tập phụ thuộc hàm F và tập thuộc tính S. Trong ngữ cảnh của F, chiếu
của F lên S, ký hiệu S(F), là tập các phụ thuộc hàm hệ quả định nghĩa trên
S.
Thật ra chúng ta chỉ quan tâm đến vế trái của phụ thuộc hàm, do đó với X
là tập con của S, ký hiệu
𝜋𝑆 𝑋 = 𝜋𝑆 𝐹,𝑋 = 𝑋 → 𝐴:𝐴 ∈ 𝑆
Ký hiệu SF gồm họ các tập con thực sự của S là hội của các vế trái nằm
trong S, ta có:
𝜋𝑆 𝐹 = 𝜋𝑆 𝑋
𝑋∈𝑆𝐹
![Page 169: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/169.jpg)
Chƣơng 5: Dạng chuẩn 153
Sau đây là các bƣớc tìm S(F):
1. Tìm SF
2. Tính bao đóng của tất cả các phần tử của SF
3. Giao các bao đóng này với S, xác định S(F)
4. Rút gọn, hay tìm phủ tối tiểu, nếu cần.
Ví dụ 5.26
Cho F = {AB CD, C D, D C}, tính ABC(F) và CD(F).
Giải:
Tính ABCF = {AB, C}, CDF = {C, D};
Tính AB+ = R, C
+ = D
+ = CD;
Suy ra ABC(F) = {AB C} và CD(F) = {C D, D C}
Ví dụ 5.27
Cho F = {A C, B D, CD H}, tính ABH(F)
Giải:
Tính ABHF = {A, B, AB};
Tính A+ = AC, B
+ = BD, AB
+ = R;
Suy ra ABH(F) = {AB H}
Ví dụ 5.28
Xác định dạng chuẩn của lƣợc đồ cơ sở dữ liệu {ABC, CD} với ràng buộc
là tập phụ thuộc hàm F = {AB CD, C D, D C}.
Giải:
Tính
ABC(F) = {AB C}
CD(F) = {C D, D C},
Ta có lƣợc đồ cơ sở dữ liệu
{<(ABC),ABC(F)>, <(CD),CD(F)>}
= {<(ABC),{AB C}>, <(CD), {C D, D C}>}
đạt chuẩn BC vì các lƣợc đồ thành phần đều đạt chuẩn BC.
![Page 170: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/170.jpg)
154 Giáo trình cơ sở dữ liệu
3.2. Tính chất đặc trƣng đầy đủ F
Khoá cũng là một dạng ràng buộc phụ thuộc hàm, nói cách khác khoá sinh
ra một phụ thuộc hàm. Một lƣợc đồ quan hệ mà tập phụ thuộc hàm đƣợc
sinh ra từ tập khoá sẽ rất có ý nghĩa trong thực hành.
Định nghĩa 5.6
1. Một phụ thuộc hàm f = XY được gọi là phụ thuộc hàm được in trong
lược đồ quan hệ R nếu XY = R.
2. Một phụ thuộc hàm f = XY được gọi là phụ thuộc hàm được in trong
lược đồ cơ sở dữ liệu D={ R1, R2,..., Rp } nếu có j sao cho f được in
trong Rj.
Định nghĩa 5.7
Cho lược đồ cơ sở dữ liệu D. Gọi G là tập các phụ thuộc hàm được in
trong D. Cho tập F các phụ thuộc hàm. Ta nói D là đặc trưng đầy đủ F,
hay F được đặc trưng đầy đủ trong D, nếu F G.
Ví dụ 5.29
Xét lƣợc đồ D = {(ABC), (BD)} với ràng buộc phụ thuộc hàm F = {AC
BD, B D}. Lƣợc đồ D‟ = {(ACB), (BD)} với các phụ thuộc hàm đƣợc in
G = {AC B, B D} đƣợc cảm sinh từ tập khoá. Kiểm tra G F suy ra
D‟ đặc trƣng đầy đủ F. Nhƣ vậy thay vì làm việc với lƣợc đồ D, ta làm việc
với lƣợc đồ tƣơng đƣơng D‟.
Ví dụ 5.30
Cho tập phụ thuộc hàm :
F = { B1B2A, D1D2B1, D1D2B2,
B1C1, B2C2, D1A,
D2A, AB1C2D2, AB2C1D1}
Xét lƣợc đồ cơ sở dữ liệu :
D = { <B1B2D1D2 ,{B1B2, D1D2 }>,
<B1C1, {B1}), (B2C2, {B2}>,
<D1A, {D1}), (D2, {D2}>,
<AB1C2D2, {AB1C2}>,
<AB2C1D1, {AB2C1}>}
ta có F đƣợc đặc trƣng đầy đủ trong D.
![Page 171: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/171.jpg)
Chƣơng 5: Dạng chuẩn 155
3.3. Tính chất ép thỏa F
Thực tế không dễ dàng đạt đƣợc tính đặc trƣng đầy đủ F, chúng ta chỉ cần
hội của tất cả các tập phụ thuộc hàm chiếu từ F tƣơng đƣơng với F là đủ.
Tính chất này đƣợc gọi là tính ép thỏa F.
Định nghĩa 5.8
1. Một phụ thuộc hàm f = (X Y) được gọi là được bao trong lược đồ R
nếu XY R.
2. Một phụ thuộc hàm f = (X Y) được gọi là được bao trong lược đồ cơ
sở dữ liệu D = { R1, R2,..., Rp } nếu có j sao cho f được bao trong Rj.
Định nghĩa 5.9
Cho lược đồ cơ sở dữ liệu D và G là tập các phụ thuộc hàm được bao
trong D. Cho tập F các phụ thuộc hàm, ta nói D ép thỏa F, hay F bị ép
thỏa trong D, nếu F G.
Ví dụ 5.31
Cho lƣợc đồ cơ sở dữ liệu
D = { <ABC, {A BC, C A}>,
<BCD, {CD}>,
<DE, {DE}>}
Ta thấy lƣợc đồ này ép thỏa tập phụ thuộc hàm sau
F = {A BC,
C A,
A D,
D E,
A E}
Tính ép thỏa ở đây và tính đặc trƣng đầy đủ ở mục trƣớc cho phép ta chỉ
cần kiểm tra các ràng buộc phụ thuộc hàm trên từng quan hệ là đủ55
.
55 Nhất quán cục bộ suy ra nhất quán toàn cục. Trong thực hành, điều này cho phép triển
khai hệ thống một cách hiệu quả.
![Page 172: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/172.jpg)
156 Giáo trình cơ sở dữ liệu
Ví dụ 5.32
Cho cơ sở dữ liệu với các ràng buộc
F = {A BC, C A, A D, D E, A E}
r1 ( A B C ) r2 ( B C D) r3 (D E)
a1 b1 c1 b1 c1 d1 d1 e1
a2 b1 c2 b2 c2 d2 d2 e2
a3 b3 c5 b3 c3 d3 d3 e1
a4 b4 c2 b4 c1 d1
a5 b1 c4 b5 c2 d2
Ta thấy F bị ép thoả trong D với các lƣợc đồ thành phần
D = {<ABC, {A BC, C A}>, <BCD, {CD}>, <DE, {DE}>}
Giờ đây chỉ cần kiểm tra các ràng buộc trên mỗi quan hệ là đủ. Quan sát
thấy r1 vi phạm phụ thuộc hàm C A, suy ra cơ sở dữ liệu là không nhất
quán.
Ví dụ 5.33
Lƣợc đồ <R, F> = <ABCD, {AB CD, C D, D C}> không đạt dạng
chuẩn BC. Xét R1 = ABC, R2 = CD, tìm các tập phụ thuộc hàm chiếu, ta có
lƣợc đồ cơ sở dữ liệu {<ABC, {AB C}>, <CD, {CD, DC}>} đạt
chuẩn BC và ép thỏa F (thật ra đặc trƣng đầy đủ F).
3.4. Vấn đề với dạng chuẩn BC
Với dạng chuẩn BC, không còn tìm thấy các phụ thuộc hàm có nguy cơ
dẫn đến mâu thuẫn, tính dƣ thừa đã đƣợc loại bỏ triệt để (dĩ nhiên chỉ đối
với phụ thuộc hàm). Tuy nhiên, lại nảy sinh vấn đề khác đó là tính ép thỏa
tập phụ thuộc hàm. Không có gì bảo đảm tìm thấy một lƣợc đồ cơ sở dữ
liệu đạt chuẩn BC ép thoả F.
Ví dụ 5.34
Cho lƣợc đồ quan hệ R =(ABC) và tập phụ thuộc hàm F = {AB C, C
B}56
. Lƣợc đồ này đạt dạng chuẩn 3 nhƣng ta không thể tìm đƣợc một lƣợc
đồ cơ sở dữ liệu D đạt dạng chuẩn BC mà F bị ép thỏa trong D57
56 đây là một lƣợc đồ thực tế, lƣợc đồ cơ sở dữ liệu cho một trung tâm luyện thi đại học, ở
đây A: Lớp, B: Môn và C: Giảng viên. Theo đó, lớp và môn xác định giảng viên, còn
giảng viên xác định môn.
![Page 173: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/173.jpg)
Chƣơng 5: Dạng chuẩn 157
TÓM TẮT
Với dạng chuẩn chúng ta có một cách đo mức độ dƣ thừa trong lƣu
trữ với ràng buộc là các phụ thuộc hàm;
Nếu tìm thấy bất kỳ một phụ thuộc hàm không tầm thƣờng nào đó,
thì lƣợc đồ quan hệ là vi phạm chuẩn BC;
Tìm thấy phụ thuộc hàm dạng X A với A là thuộc tính không
khoá, thì lƣợc đồ quan hệ là vi phạm chuẩn 3;
Tìm thấy phụ thuộc hàm dạng X A với A là thuộc tính không
khoá còn X là tập con thật sự của một khoá nào đó, thì lƣợc đồ
quan hệ là vi phạm chuẩn 2;
Giải bài toán tìm tất cả các khoá là cơ sở để xác định chuẩn 2 hoặc
3;
Kiểm tra một lƣợc đồ có vi phạm chuẩn BC hay không, chúng ta
không cần giải bài toán tìm tất cả các khoá;
Giải bài toán tìm tất cả các phụ thuộc hàm chiếu là bƣớc đi đầu tiên
để xác định chuẩn 2 hoặc 3 của một phân rã;
Kiểm tra dạng chuẩn BC của một phân rã không cần phải tìm các
tập chiếu của tập phụ thuộc hàm gốc;
Tính ép thỏa cho phép chỉ kiểm tra tính nhất quán cục bộ;
Tính đặc trƣng đầy đủ rất có ý nghĩa trong thực hành;
Không phải luôn luôn phân rã đƣợc một lƣợc đồ cơ sở dữ liệu đạt
chuẩn BC và ép thoả tập phụ thuộc hàm;
Bằng cách bổ sung các ràng buộc tồn tại có thể đạt đƣợc một phân
rã đạt chuẩn BC và đặc trƣng đầy đủ phụ thuộc hàm.
57 tuy nhiên, luôn tìm đƣợc một lƣợc đồ cơ sở dữ liệu đạt dạng chuẩn 3 và đặc trƣng đầy
đủ F. Riêng cơ sở dữ liệu đạt dạng chuẩn BC và đặc trƣng đầy đủ F phải cần một chút
điều chỉnh, bằng cách bổ sung một ràng buộc tồn tại chẳng hạn (xem ví dụ 21).
![Page 174: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/174.jpg)
158 Giáo trình cơ sở dữ liệu
BÀI TẬP
1. Tìm tập các khoá của lƣợc đồ quan hệ <R, F> sau:
a. R = XYZW;
F = { Y W, W Y, XY Z };
b. R = ABCDEF;
F = { A B, C DF, AC E, D F };
2. Xác định dạng chuẩn của các lƣợc đồ quan hệ sau:
a. <ABC, {A C, B C}>
b. <ABCDE, {A B, B A, AC DE, BC DE}>
3. Xác định dạng chuẩn của các lƣợc đồ cơ sở dữ liệu D sau
a. D = {AC, AB}
với F = {A C, B C}
b. D = {(AB), (ACDE)}
với F = {A B, B A, AC DE, BC DE}
c. D = {(AB), (ACD), (BCE)}
với F = {A B, B A, AC DE, BC DE}
4. Cho lƣợc đồ quan hệ
<R, F> = < GHCDAB,
{GH AD, AG B, CD GH, C A, BH C}>
Xét tập thuộc tính
R1 = GHCDA, R2 = AGB, R3 = CA và R4 = BHC.
a. Tìm các tập phụ thuộc hàm chiếu Fi = Ri(F);
b. Kiểm tra tính ép thoả F của lƣợc đồ cơ sở dữ liệu
{<R1, F1>, <R2, F2>, <R3, F3>, <R4, F4>};
c. Kiểm tra tính đặc trƣng đầy đủ F của lƣợc đồ cơ sở dữ liệu
{<R1, F1>, <R2, F2>, <R3, F3>, <R4, F4>}
5. Xác định dạng chuẩn cho mỗi lƣợc đồ <R, F> sau:
a. R = ABCD,
F = {AB C, A D, BD C}
b. R = ABCD,
F= {A C, D C, BD A}
![Page 175: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/175.jpg)
Chƣơng 5: Dạng chuẩn 159
c. R = (Store, Department, Item, Manager), F = {SI D, SD
M} với S, D, I và M là viết tắt của Store, Department,
Item và Manager tƣơng ứng.
d. R = (Flight, frOm, To, Depart, Arrives, dUration, Plane
type, first cLass, Coach, total Seats, #Meal), F={ P LCS,
DU M, AU M, LC S, LS C, CS L} cùng tập
các khoá chỉ định {F, OTD, OTA}. Trong đó F, O, T, D, A,
U, P, L, C, S và M theo thứ tự là viết tắt của Flight, frOm,
To, Depart, Arrives, dUration, Plane type, first cLass,
Coach, total Seats và #Meal tƣơng ứng.
6. Cho quan hệ:
Hợp đồng
SốBHXH Số HĐ Giờ Tên NV MãKS TênKS
1135 C1024 16 Lê V K25 Rex
1057 C1024 24 Lý S K25 Rex
1068 C1025 28 Trần X K04 Royal
1135 C1025 15 Lê V K04 Royal
a. Xác định tập phụ thuộc hàm;
b. Xác định dạng chuẩn;
c. Cho một phân rã hợp lý. Xác định dạng chuẩn và kiểm tra
tính ép thoả tập phụ thuộc hàm của phân rã này.
7. Cho quan hệ:
Lịch mổ
MãNV Tên bác sĩ MãBN TênBN Ngày Giờ Phòng
D1011 Nguyễn A B100 Lê V 12/5/08 10:00 P15
D1011 Nguyễn A B105 Lý S 12/5/08 12:00 P15
D1024 Phạm B B108 Trần X 12/5/08 10:00 P10
D1024 Phạm B B108 Trần X 14/5/08 14:00 P10
D1032 Trần C B105 Lý S 14/5/08 16:30 P15
D1032 Trần C B110 Lê X 15/5/08 18:00 P13
![Page 176: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/176.jpg)
160 Giáo trình cơ sở dữ liệu
a. Xác định tập phụ thuộc hàm;
b. Xác định dạng chuẩn;
c. Cho một phân rã hợp lý. Xác định dạng chuẩn và kiểm tra
tính đặc trƣng đầy đủ tập phụ thuộc hàm của phân rã này.
8. Chứng minh khẳng định “Nếu có một vi phạm vi phạm dạng chuẩn,
thì vi phạm dạng này có thể tìm thấy trong F”
![Page 177: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/177.jpg)
Chƣơng 6 CHUẨN HOÁ LƢỢC ĐỒ QUAN HỆ
Mục tiêu của chƣơng.
Trong chƣơng này chúng ta sẽ học về:
Bài toán chuẩn hoá lƣợc đồ quan hệ với ràng buộc phụ
thuộc hàm;
Các mục tiêu của chuẩn hoá: dạng chuẩn cao, bảo
toàn thông tin, bảo toàn phụ thuộc, đặc trưng đầy đủ,
tối thiểu số lược đồ con;
Kiểm tra tính bảo toàn thông tin trực tiếp trên lƣợc đồ;
Kiểm tra tính bảo toàn phụ thuộc mà không cần phải
chiếu tập phụ thuộc hàm lên các lƣợc đồ con;
Tiếp cận bảo toàn thông tin và tính bảo toàn phụ
thuộc;
Thuật toán phân rã;
Tiếp cận bảo toàn phụ thuộc và tính bảo toàn thông
tin;
Sát nhập các lƣợc đồ quan hệ và bài toán khử thuộc
tính bắc cầu;
Thuật toán tổng hợp và lƣợc đồ đầy đủ;
Phụ thuộc đa trị và dạng chuẩn 4.
Khi gặp một lƣợc đồ quan hệ hoặc một lƣợc đồ cơ sở dữ liệu có dạng
chuẩn thấp, chúng ta phải tìm một lƣợc đồ mới có dạng chuẩn cao hơn. Có
thể lƣợc đồ mới không tƣơng đƣơng với lƣợc đồ cũ, nhƣng với dạng chuẩn
cần đạt là dạng chuẩn 3, chúng ta hy vọng có đƣợc sự tƣơng đƣơng.
Trong chƣơng này, chúng ta sẽ làm việc với lƣợc đồ quan hệ có dạng
chuẩn thấp. Để đạt chuẩn cao hơn chúng ta sẽ phải phân rã nó thành các
lƣợc đồ con. Các tiêu chuẩn của phân rã bao gồm:
1. Tối thiểu đạt chuẩn 3;
2. Bảo toàn thông tin;
3. Bảo toàn phụ thuộc (tính ép thỏa) hoặc đặc trƣng đầy đủ F.
![Page 178: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/178.jpg)
162 Giáo trình cơ sở dữ liệu
Trong đó 2 tiêu chuẩn đầu là quan trọng nhất. Tiêu chuẩn 3 có thể không
đạt đƣợc nếu đòi hỏi phân rã phải đạt chuẩn BC. Ngoài ra số lƣợng các
lƣợc đồ con cũng là một tiêu chuẩn đáng quan tâm, càng ít càng tốt.
Chúng ta có hai vấn đề cần giải quyết. Thứ nhất, kiểm tra một phân rã có
đạt các tiêu chuẩn đã nêu không. Thứ hai, đƣa ra một phân rã thỏa mãn các
tiêu chuẩn đã nêu.
1. Kiểm tra các tiêu chuẩn
Cho lƣợc đồ quan hệ <R, F> và một phân rã = {Ri}i=1..m. Ở đây các tập
phụ thuộc hàm chiếu chƣa đƣợc xác định. Bài toán xác định dạng chuẩn đã
đƣợc giải quyết hoàn toàn trong chƣơng 5. Trong chƣơng 5, chúng ta cũng
có một cách kiểm tra tính bảo toàn phụ thuộc, bằng cách tìm các tập phụ
thuộc hàm chiếu. Chúng ta cũng đã kiểm tra tính bảo toàn thông tin bằng
những tính toán trực tiếp trên một quan hệ cụ thể trong chƣơng 2. Mục này
sẽ giải các bài toán kiểm tra tính bảo toàn thông tin trên lƣợc đồ thay vì
trên các quan hệ cụ thể; bài toán kiểm tra tính bảo toàn phụ thuộc mà
không cần chiếu.
1.1. Kiểm tra tính bảo toàn thông tin
Cho quan hệ r(R). Xét R1, R2 R sao cho R = R1R2. Chiếu r xuống R1, R2
đƣợc 2 quan hệ r1 = r[R1] và r2 = r[R2]. Kết tự nhiên r1 và r2 lại, đƣợc r‟= r1
⋈ r2. Ta luôn có r r‟. Câu hỏi đặt ra là khi nào chiều ngƣợc lại cũng
đúng, r‟ r, nghĩa là r = r‟.
Câu hỏi tƣơng tự cũng đƣợc đặt ra với phân rã . Cho r(R), đặt ri = r[Ri],
với điều kiện gì thì r‟ = r1 ⋈ r2 ⋈ ... ⋈ rm = r.
Định nghĩa 6.1
Phân rã là bảo toàn thông tin (Lossless Join decomposition) nếu mọi r
SATR(F) ta luôn có r = r’.
Bài toán 3
Xác định có là phân rã bảo toàn thông tin có hay không.
Nếu phân rã là bảo toàn phụ thuộc, ta có định lý sau giúp giải bài toán 1
hiệu quả.
Định lý 1
Một phân rã đã bảo toàn phụ thuộc sẽ bảo toàn thông tin nếu có một lược
đồ con chứa khoá của lược đồ gốc.
![Page 179: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/179.jpg)
Chƣơng 6: Chuẩn hoá lƣợc đồ quan hệ 163
Ví dụ 6.1
Với F = {A D, B C}, kiểm tra tính bảo toàn thông tin của = {AB,
BC, AD}.
Giải:
Kiểm tra trực tiếp thấy phân rã trên bảo toàn phụ thuộc. Vì AB là khoá của
<R, F> suy ra phân rã là bảo toàn thông tin.
Một định lý khác cũng giúp chúng ta kiểm tra tính bảo toàn thông tin
Định lý 2
Cho <R, F> và phân rã = {R1, R2}. Phân rã bảo toàn thông tin nếu F+
chứa ít một trong 2 phụ thuộc hàm (R1 R2) → R1 hoặc (R1 R2) → R2.
Sử dụng tính kết hợp của phép kết tự nhiên ta có cách kiểm tra tính bảo
toàn thông tin nhƣ đƣợc minh hoạ trong ví dụ sau.
Ví dụ 6.2
Với F = {A D, B C}, kiểm tra tính bảo toàn thông tin của = {AB,
BC, AD}.
Giải:
Phân rã theo phụ thuộc hàm A D, đƣợc phân rã58
{ABC, AD} bảo toàn
thông tin. Ta có B C đƣợc bao trong lƣợc đồ con ABC. Phân rã lƣợc đồ
con này theo B C, đƣợc phân rã {AB, BC} bảo toàn thông tin. Kết hợp
lại ta đƣợc phân rã {AB, BC, AD} bảo toàn thông tin. Phân rã kết hợp này
chính là . Vậy bảo toàn thông tin.
Trƣờng hợp tổng quát chúng ta sử dụng kỹ thuật tableaux với T gồm m
dòng mỗi dòng ứng với một lƣợc đồ con. Các biến loại a ứng với các thuộc
tính trong lƣợc đồ con.
Phân rã là bảo toàn thông tin nếu T* chứa một dòng toàn biến loại a
Các bƣớc
1. T gồm m dòng, dòng thứ i với các biến a nằm trên các cột của Ri, các cột còn lại
chứa các biến b
58 Chúng ta có hai ngữ nghĩa khi dùng cụm từ phân rã: phân rã trong phân rã một lược đồ
quan hệ là động từ còn phân rã trong thu được phân rã {AB, BCD} là danh từ.
![Page 180: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/180.jpg)
164 Giáo trình cơ sở dữ liệu
2. Tính T*
3. Kiểm tra xem có dòng nào toàn a không
Ví dụ 6.3
Với F = {A D, B C}, kiểm tra tính bảo toàn thông tin của = {AB,
BC, AD}.
Giải:
Lập bảng T
T (A B C D)
a1 a2 b1 b2
b3 a2 a3 b4
a1 b5 b6 a4
Tính T*:
T* (A B C D)
a1 a2 a3 a4
b3 a2 a3 b4
a1 b5 b6 a4
Quan sát thấy dòng 1 toàn các biến loại a. Vậy bảo toàn thông tin.
1.2. Bảo toàn phụ thuộc
Phân rã là bảo toàn tập phụ thuộc hàm F nếu F bị ép thoả trong với tƣ
cách lƣợc đồ cơ sở dữ liệu.
Bài toán 4
Xác định xem phân rã có bảo toàn phụ thuộc hay không.
Trong chƣơng 5, chúng ta đã giải bài toán này bằng cách chiếu tập phụ
thuộc hàm xuống các lƣợc đồ con Ri, đƣợc Fi. Gọi F‟ là hợp của các tập
phụ thuộc hàm này:
𝐹′ =∪ 𝐹𝑖
Theo cách làm ở chƣơng 5, chúng ta sẽ kiểm tra tính tƣơng đƣơng giữa F
và F‟. Thật ra chỉ cần kiểm tra 𝐹′ ⊨ 𝐹 vì ta luôn có 𝐹 ⊨ 𝐹′. Để kiểm tra
𝐹′ ⊨ 𝐹 ta phải kiểm tra xem mỗi f thuộc F có là thành viên của F‟+ hay
không. Theo cách làm thông thƣờng chúng ta phải tính 𝑋𝐹′+ .
![Page 181: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/181.jpg)
Chƣơng 6: Chuẩn hoá lƣợc đồ quan hệ 165
Thƣờng thì ta phải tính F‟ (chƣơng 5). Mục này sẽ giới thiệu một cách làm
khác. Thuật toán sau tính bao đóng của X dƣới F‟ mà không cần tính F‟.
Thuật toán 4: EClosure(X, F, )
Vào : tập thuộc tính X, tập phụ thuộc hàm F, phân rã
Ra : X+
F‟
Các bước :
1. do
Y = X
foreach Ri do
X = X (X Ri)+
F Ri
while (Y != X)
2. return(X)
Ví dụ 6.4
Cho F = {A B, B C, C D, D A} và ={(AB), (BC), (CD)}. Tính
D+
F‟.
Giải:
Ta có X = D.
Trong lần lặp thứ 1, với lƣợc đồ con CD: X+
F = DABC, suy ra X =
CD
Trong lần lặp thứ 2, với lƣợc đồ con BC: X+
F = DABC, suy ra X =
CDB
Trong lần lặp thứ 3, với lƣợc đồ con BC: X+
F = DABC, suy ra X =
CDB
Vậy D+
F‟ = ABCD.
Dùng bao đóng dƣới F‟ chúng ta có thể kiểm tra F có bị ép thỏa hay không.
Ví dụ 6.5
Cho F = {A B, B C, C D, D A}. Kiểm tra tính bảo toàn phụ
thuộc của phân rã = {(AB), (BC), (CD)}.
Giải:
Chỉ cần kiểm tra phụ thuộc hàm D A.
Ta có D+
F‟ = ABCD, suy ra F‟ ⊨ (D A), suy ra F‟ ⊨ F.
![Page 182: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/182.jpg)
166 Giáo trình cơ sở dữ liệu
Vậy F bị ép thoả trong , tức bảo toàn phụ thuộc hàm F.
Dùng kỹ thuật tableaux tính X+
F’.
Xây dựng
T, X(R) = T(R) {t}
với t.Aj là biến loại a nếu Aj X.
Tính T*, X(R), nhưng không thay đổi các dòng của T(R)
Quan sát các cột toàn a, X+
F‟ = {Aj | t(Aj) = a}
Ví dụ 6.6
Cho F = {AD C, CD A, B D} và phân rã ={(ABC), (CD)}. Tính
AB+
F‟.
Giải:
Lập bảng
T,[AB](R) ( A B C D )
a a a b1
b2 b3 a a
a a b4 b5
Đƣờng đứt nét phân biệt các dòng của T với t.
Tính:
T*,[AB](R) ( A B C D )
a a a b1
b2 b3 a a
a a a b1
Suy ra CB+
F‟ = ABC
2. Chuẩn hoá
Quá trình chuẩn hoá một lƣợc đồ quan hệ là đƣa ra một phân rã (trong bối
cảnh này có thể đƣợc hiểu là một lƣợc đồ cơ sở dữ liệu) thỏa một hoặc
nhiều tiêu chuẩn sau:
1. Bảo toàn thông tin (nếu không phân rã sẽ trở nên vô nghĩa)
2. Dạng chuẩn cao (là mục tiêu)
3. Bảo toàn phụ thuộc (đặc trƣng đầy đủ F thì tốt hơn)
![Page 183: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/183.jpg)
Chƣơng 6: Chuẩn hoá lƣợc đồ quan hệ 167
2.1. Tiếp cận phân rã
Trong tiếp cận này59
, mỗi khi tìm thấy một vi phạm, chúng ta sẽ thực hiện
thủ tục phân rã theo định lý 2. Nhƣ vậy, nếu dạng chuẩn đích là chuẩn 3,
chúng ta cần phải xác định tập các khoá của lƣợc đồ quan hệ (trong ứng
dụng, đôi khi tập khóa đƣợc cho sẵn đƣợc gọi là khóa chỉ định).
Ví dụ 6.7
Cho lƣợc đồ quan hệ R = (FROPADTLCSM)60
với các khoá chỉ định {F,
ROD, ROA} và tập phụ thuộc hàm F = {T LCS, PD M, AD M, LC
S, LS C, CS L}. Tìm một phân rã đạt chuẩn 3 theo tiếp cận phân
rã.
Giải:
Tập các khoá chỉ định cũng chính là tập tất cả các khoá.
Với PD M, = {R1(PDM), R2(FROPADTLCS)}.
Với T LCS trong R2, = {R1(PDM), R21(TLCS),
R22(FROPADT)}.
Với LC S trong R21, = {R1(PDM), R211(LCS), R212(TLC),
R22(FROPADT)}.
59 Về ngữ nghĩa cần phân biệt: tiếp cận phân rã, phân rã một lược đồ và xét phân rã ρ 60
FROPADTLCSM là viết tắt của FLIGHT, FROM, TO, DEPARTS, ARRIVES,
DURATION, PLANE-TYPE, FIRST-CLASS, COACH, TOTAL-SEATS, #MEALS
(FROPADTLCSM
)
PD M
(PDM) (FROPADTLCS)
T LCS
LC S
(TLCS) (FROPADT)
(TLC) (LCS)
![Page 184: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/184.jpg)
168 Giáo trình cơ sở dữ liệu
Nhận xét
1. Sƣ phức tạp tăng khi tăng số thuộc tính của R và số phụ thuộc hàm của
F, đặc biệt nếu phải tìm các khoá của lƣợc đồ con
2. Số lƣợc đồ quan hệ con không tối ƣu
3. Số các thuộc tính trên các lƣợc đồ quan hệ con không tối ƣu.
4. F có thể không bị ép thỏa
5. Ngầm che dấu một số phụ thuộc bắc cầu
Nếu lƣợc đồ không quá phức tạp, bằng cách chọn phụ thuộc bắc cầu thích
hợp chúng ta có thể đạt đƣợc tiêu chuẩn thứ 3 bảo toàn phụ thuộc hoặc đặc
trƣng đầy đủ F.
Ví dụ 6.8
Xét lƣợc đồ quan hệ bán hàng <R, F> với tập thuộc tính R(HNKDMTSG)61
và tập phụ thuộc hàm F = {H NK, K D, M T, HM SG}. Tìm
một phân rã thoả ba tiêu chuẩn: bảo toàn thông tin, chuẩn BC và đặc trƣng
đầy đủ F.
Giải:
Chọn các phụ thuộc hàm bắc cầu thứ tự là K D, H NK và M T ta
có
R(HNKDMTSG)
R1(KD) R2(HNKMTSG)
R21(HNK) R22(HMTSG)
R221(MT) R222(HMSG)
Đƣợc phân rã = {R1(KD), R21(HNK), R221(MT), R222(HMSG)} bảo toàn
thông tin, đạt chuẩn BC và đặc trƣng đầy đủ F.
61 HNKDMTSG là viết tắt của Hoá đơn, Ngày lập, Khách hàng, Địa chỉ, Mã hàng, Tên
hàng, Số lượng, đơn Giá.
K D
H NK
M T
![Page 185: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/185.jpg)
Chƣơng 6: Chuẩn hoá lƣợc đồ quan hệ 169
2.2. Tiếp cận tổng hợp
Tiếp cận này lƣu các phụ thuộc hàm trong các bảng riêng. Cách làm nhƣ
vậy sẽ bảo đảm thu đƣợc phân rã đạt dạng chuẩn cao và đặc trƣng đầy đủ
F. Để tránh dƣ thừa các lƣợc đồ con chúng ta sẽ phải tìm phủ tối tiểu của F
trƣớc. Tuy nhiên số lƣợc đồ có thể không tối ƣu, ngoài ra không bảo đảm
phân rã là bảo toàn thông tin.
Ví dụ 6.9
Cho lƣợc đồ quan hệ <ABCDE, {A B, B A, AC DE, BC DE}>.
Với phủ tối tiểu {A B, B A, AC DE} ta có phân rã = {(AB),
(BA), (ACDE)}. Phân rã này có thể sát nhập hai lƣợc đồ con đầu thành =
{(A B), (ACDE)}.
Chúng ta dùng định lý 1 để bảo đảm tính bảo toàn thông tin.
Ví dụ 6.10
Cho lƣợc đồ quan hệ <ABCDEGH, {B CD, C H, DE H, G
C}>. Kiểm tra trực tiếp thấy tập phụ thuộc hàm đã tối tiểu. Bằng tiếp cận
tổng hợp chúng ta thu đƣợc phân rã = {(BCD), (CH), (DEH), (GC)}.
Theo định lý 1, phân rã này không bảo toàn thông tin. Bây giờ tìm thấy
khoá duy nhất BGE, bổ sung lƣợc đồ quan hệ (BGE) vào phân rã trên, ta
thu đƣợc phân rã = {(BCD), (CH), (DEH), (GC), (BGE)} bảo toàn thông
tin, chuẩn BC, đặc trƣng đầy đủ tập phụ thuộc hàm.
Để tìm phân rã với ít lƣợc đồ con, chúng ta phải sát nhập một số lƣợc đồ
con lại. Gọi khoá của các lƣợc đồ con là khoá thiết kế, rõ ràng sát nhập
những lƣợc con có các khoá thiết kế tƣơng đƣơng nhau (cùng bao đóng) sẽ
vẫn bảo đảm tính đặc trƣng đầy đủ. Tuy nhiên còn đó bài toán dạng chuẩn.
Bằng cách loại bỏ các thuộc tính bắc cầu trên các lƣợc đồ sát nhập, chúng
ta đƣợc dạng chuẩn 3.
Ví dụ 6.11
Xem lại ví dụ 9 để ý tình huống sát nhập.
Ví dụ 6.12
Cho lƣợc đồ quan hệ <R, F>, với R = (GHCDAB) và F = {GH AD, AG
B, CD GH, C A, BH C} tối tiểu. Tìm một phân rã có ít lƣợc đồ
con nhất thoả: bảo toàn thông tin, dạng chuẩn ít nhất bằng 3, đặc trƣng đầy
đủ F.
![Page 186: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/186.jpg)
170 Giáo trình cơ sở dữ liệu
Giải:
Bằng tiếp cận tổng hợp = {(GHAD), (AGB), (CDGH), (CA),
(BHC)} thoả chuẩn BC, đặc trƣng đầy đủ F;
Quan sát thấy lƣợc đồ con (GHAD) chứa khoá, bảo toàn thông
tin;
Sát nhập = {(GH CDA), (AGB), (CA), (BHC)} không đạt
chuẩn 3, loại thuộc tính bắc cầu A khỏi lƣợc đồ đầu tiên, =
{(GH CD), (AGB), (CA), (BHC)} đạt chuẩn BC.
Vậy = {(GH CD), (AGB), (CA), (BHC)} là phân rã có ít lƣợc đồ con
nhất thoả: bảo toàn thông tin, dạng chuẩn BC, đặc trƣng đầy đủ F.
Nhƣ vậy, chúng ta có một thuật toán tìm một phân rã thỏa 4 tính chất:
1. F đƣợc đặc trƣng đầy đủ;
2. Đạt tối thiểu chuẩn 3;
3. Không tồn tại lƣợc đồ khác với ít lƣợc đồ con hơn mà vẫn thỏa 1 và 2;
4. Bảo toàn thông tin.
Chúng ta gọi lƣợc đồ cơ sở dữ liệu thỏa 3 tính chất đầu là lược đồ cơ sở dữ
liệu đầy đủ. Với lƣợc đồ đầy đủ, nếu chƣa bảo toàn thông tin ta sẽ bổ sung
một lƣợc đồ con gồm các thuộc tính của một khoá nào đó của R.
Thuật toán 5
Vào : Lƣợc đồ quan hệ R, tập phụ thuộc hàm F.
Ra : Lƣợc đồ cơ sở dữ liệu D đầy đủ và bảo toàn thông tin.
Các bước :
1. Tìm một phủ tối tiểu 2. Xây dựng các lược đồ con với mỗi phụ
thuộc hàm đều được in trong một lược đồ
con nào đó, ta được một phân rã đặc
trưng đầy đủ F;
3. Nhóm các lược đồ con có khoá thiết kế tương đương nhau, rồi khử các thuộc tính
bắt cầu, nếu có, ta được một phân rã đầy
đủ;
4. Bổ sung, nếu cần, một lược đồ với các thuộc tính là các thuộc tính của một
khoá bất kỳ của R, ta được một phân rã D
đầy đủ và bảo toàn thông tin;
5. Return D.
![Page 187: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/187.jpg)
Chƣơng 6: Chuẩn hoá lƣợc đồ quan hệ 171
Ví dụ 6.13
Cho các thuộc tính với các ký tự tắt kèm theo Subject : S, Teacher : T,
Class : C. Xét lƣợc đồ quan hệ <(CST), F = {T S, CS T}>. Áp dụng
thuật toán:
Bƣớc 1: F đã tối tiểu
Bƣớc 2: Phát sinh D = {(TS), (CST)
Bƣớc 3: Không nhóm
Bƣớc 4: Không bổ sung
Ví dụ 6.14
Cho lƣợc đồ <(GHCDAB), F = {GH AD, AG B, CD GH, C A,
BH C}>. Áp dụng thuật toán:
Bƣớc 1: F đã tối tiểu
Bƣớc 2: Phát sinh D = {(GHAD), (AGB), (CDGH), (CA), (BHC)}
Bƣớc 3: Nhóm 2 lƣợc đồ con thứ 1 và 3 lại, khử thuộc tính bắc cầu
A trong lƣợc đồ kết quả, D = {(GH CD), (AGB), (CA),
(BHC)}
Bƣớc 4: Không bổ sung
Ví dụ 6.15
Cho lƣợc đồ <(ABCDE), {A B, B A, AC D, BC E}>.
Bƣớc 1: Tập phụ thuộc hàm đã tối tiểu
Bƣớc 2: Phát sinh D = {(AB), (BA), (ACD), (BCE)}
Bƣớc 3: Nhóm lƣợc đồ con 1 và 2, 3 và 4 lại, khử thuộc tính bắc
cầu B khỏi lƣợc đồ kết quả thứ 2, D = {(A B), (ACDE)}
Bƣớc 4: Không bổ sung
3. Dạng chuẩn 4
Trong thực tế, xuất hiện nhiều ràng buộc toàn vẹn không thuộc dạng phụ
thuộc hàm nhƣ ví dụ sau đây.
Ví dụ 6.16
Với các trƣờng đại học tổ chức đào tạo theo niên chế, sinh viên đƣợc xếp
vào một lớp nhất định. Vào đầu học kỳ, phòng đào tạo xếp lịch học theo
lớp và sinh viên cùng lớp phải học các môn giống nhau. Ký hiệu S, L và M
là viết tắt của Sinh viên, Lớp và Môn tƣơng ứng. Lƣợc đồ quan hệ (SLM)
![Page 188: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/188.jpg)
172 Giáo trình cơ sở dữ liệu
không phải thỏa bất kỳ phụ thuộc hàm nào, nhƣng quan hệ sau là vi phạm
quy tắc quản lý trên
r ( S M L)
1 a x
2 b x
1 a x
Thật vậy, trong quan hệ này hai sinh viên 1 và 2 học cùng lớp nhƣng lại
học các môn không giống nhau.
Dạng ràng buộc nhƣ ví dụ trên đƣợc gọi là ràng buộc phụ thuộc đa trị.
Theo đó, với lớp học cho trƣớc, quan hệ giữa sinh viên và môn học ở trên
có dạng tích Descartes.
Lúc này ta nói S (cũng vậy, M) phụ thuộc đa trị vào L, ký hiệu L ↠ S (L ↠
M) trong lƣợc đồ SML (cách nói này là bắt buộc đối với phụ thuộc đa trị)
Định nghĩa 6.2
Ta nói quan hệ r(XYZ) thỏa phụ thuộc đa trị X ↠ Y nếu mỗi khi tìm thấy
trên r có hai bộ (x, y1, z1) và (x, y2, z2) thì sẽ tìm thấy hai bộ (x, y1, z2) và (x,
y2, z1)
Lƣu ý một phụ thuộc hàm cũng là một phụ thuộc đa trị. Với các lƣợc đồ
tập F các ràng buộc gồm phụ thuộc hàm và phụ thuộc đa trị ta có một dạng
chuẩn mới.
Định nghĩa 6.3
Ta nói <R, F> đạt dạng chuẩn 4 nếu mỗi phụ thuộc đa trị X ↠ Y được suy
từ F, X phải chứa một khoá của <R, F>.
Trong phạm vi tài liệu, chúng tôi không đi vào chi tiết của các bài toán
giống nhƣ trƣờng hợp F chỉ gồm các phụ thuộc hàm. Để hỗ trợ khi giải
quyết các bài toán thực tế, kết quả sau giúp nhiều cho bài toán thiết kế cơ
sở dữ liệu.
![Page 189: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/189.jpg)
Chƣơng 6: Chuẩn hoá lƣợc đồ quan hệ 173
Quan hệ r(XYZ) thỏa phụ thuộc đa trị X ↠ Y nếu và chỉ nếu phân rã {(XY),
(XZ)} bảo toàn thông tin.
Với kết quả này, tiếp cận phân rã cho phép chúng ta đƣa ra lƣợc đồ đạt
chuẩn 4. Nhƣ đã biết tiếp cận phân rã bảo đảm dạng chuẩn mong muốn
trong khi vẫn bảo toàn thông tin62
.
Ví dụ 6.17
Trở lại ví dụ 16, lƣợc đồ <(SLM), {L ↠ M}> không đạt chuẩn 4. Phân rã
thành lƣợc đồ mới {(LS) , (LM)} đạt chuẩn 4.
Ví dụ 6.18
Lƣợc đồ quan hệ < (ABCDE), {A BC, C ↠ DE}> không đạt chuẩn 4.
Phân rã theo phụ thuộc đa trị đƣợc {(CDE), (ABC)} đạt chuẩn 4.
62 Riêng mục tiêu bảo toàn phụ thuộc là một chủ đề riêng nằm ngoài phạm vi của tài liệu
này.
![Page 190: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/190.jpg)
174 Giáo trình cơ sở dữ liệu
TÓM TẮT
Chuẩn hoá là quá trình phân rã một lƣợc đồ quan hệ;
Kết quả chuẩn hoá là một phân rã, đƣợc xét nhƣ là một lƣợc đồ cơ
sở dữ liệu, sao cho các lƣợc đồ con có dạng chuẩn cao hơn lƣợc đồ
gốc;
Khoá của các lƣợc đồ con gọi là các khoá thiết kế;
Kết quả chuẩn hoá phải bảo đảm bảo toàn thông tin;
Có nhiều cách kiểm tra tính bảo toàn thông tin dựa trên lƣợc đồ mà
không phải thao tác trên các quan hệ cụ thể;
Kết quả chuẩn hoá nếu bảo toàn phụ thuộc sẽ rất có ý nghĩa trong
thực hành;
Có một cách kiểm tra tính bảo toàn phụ thuộc mà không cần chiếu
tập phụ thuộc hàm lên các lƣợc đồ con;
Tiếp cận phân rã cho phép đạt dạng chuẩn cao nhƣ mong muốn
trong lúc vẫn bảo đảm tính bảo toàn thông tin, nhƣng không chắc
bảo toàn phụ thuộc;
Việc lựa chọn thích hợp phụ thuộc hàm trong từng bƣớc của quá
trình phân rã cho phép bảo toàn phụ thuộc nhƣng dạng chuẩn đạt
đƣợc có thể chỉ đến chuẩn 3;
Tiếp cận tổng hợp cho phép đặc trƣng đầy đủ F và đạt chuẩn BC,
nhƣng không chắc bảo toàn thông tin và có thể có nhiều lƣợc đồ
con;
Có thể gộp các lƣợc đồ con có khoá thiết kế tƣơng đƣơng nhau lại
thành một lƣợc đồ chung, nhƣng dạng chuẩn có thể bị giảm;
Khử các thuộc tính bắc cầu trong lƣợc đồ sát nhập cho ta một lƣợc
đồ với tối thiểu số lƣợc đồ con và đƣợc gọi là lƣợc đồ đầy đủ;
Lƣợc đồ đầy đủ nếu chƣa bảo toàn thông tin, chỉ cần thêm vào một
lƣợc đồ con gồm các thuộc tính của một khoá nào đó, sẽ bảo toàn
thông tin;
Với việc xuất hiện thêm các loại ràng buộc tổng quát hơn phụ thuộc
hàm, nhƣ phụ thuộc đa trị chẳng hạn, chúng ta có các dạng chuẩn
cao hơn.
![Page 191: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/191.jpg)
Chƣơng 6: Chuẩn hoá lƣợc đồ quan hệ 175
BÀI TẬP
1. Chuẩn hoá các lƣợc đồ quan hệ <R, F> sau, dùng thuật toán phân
rã:
a. R =(ABCDE, {DA, DBC, DBE});
F = { A BC, BC A, BCD E, E C }
b. R = (ABCDE, {AB, AC});
F = { AB CDE, AC BDE, B CE, C BD }
c. R = (ABCDE,{A});
F = { A BCDE, CD E, EC B }
2. Chuẩn hoá các lƣợc đồ quan hệ <R, F> sau, dùng thuật toán tổng
hợp:
a. R = ABCDE;
F = { A BC, BC A, BCD E, E C }
b. R = ABCDE;
F = { A B, B AE, AC D }
c. R = AB1B2C1C2DEI1I2I3J;
F = { A B1B2C1C2DEI1I2I3J,
B1B2C1 AC2DEI1I2I3J,
B1B2C2 AC1DEI1I2I3J,
E I1I2I3, C1D J, C2D J,
I1I2 I3, I2I3 I1, I1I3 I2 }
3. Chuẩn hoá các lƣợc đồ <R, F> sau, thỏa bảo toàn thông tin và đạt
chuẩn BC:
a. R = ABCD;
F = { ABC, AD, BDC }
b. R = (Store, Department, Item, Manager);
F = { SID, SDM }
4. Chuẩn hoá các lƣợc đồ <R, F> sau, thỏa bảo toàn thông tin và đạt
chuẩn BC và đặc trƣng đầy đủ F, nếu đƣợc:
a. R = ABCD;
F = { AC, DC, BDA }
b. R = ({Flight, frOm, To, Depart, Arrives, dUration, Plane
type, first cLass, Coach, total Seats, #Meal}, {F, OTD,
![Page 192: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/192.jpg)
176 Giáo trình cơ sở dữ liệu
OTA});
F = { PLCS, DUM, AUM, LCS, LSC, CSL }
5. Cho tập thuộc tính {STUDENT#, NAME, BIRTHDAY, AGE,
ADVISOR, DEPARTMENT, SEMETER, COURSE, GRADE}.
Dùng các ký tự in đậm thay thế cho tên đầy đủ, xét lƣợc đồ
<(SNBAVDMCG), {SMC}> thoả tập phụ thuộc hàm F = { S
NBAVD, B A, V D }.
a. Bằng trực giác chỉ ra một phân rã rồi xác định dạng chuẩn
của nó;
b. Có hay không một phân rã đạt chuẩn BC, bảo toàn thông tin
và bảo toàn phụ thuộc.
6. Cho lƣợc đồ <R, F>, R = ABCDE và F = { ABC, CE, EC,
CD, ABE }
a. Xác định dạng chuẩn của <R, F>;
b. Xác định dạng chuẩn và kiểm tra tính bảo toàn thông tin,
bảo toàn phụ thuộc của phân rã = { ABC, ADE, CE }.
7. Cho lƣợc đồ R = {Broker, Office, Investor, Stock, Quantity,
Dividend} = BOISQD và tập phụ thuộc hàm F = {SD, IB,
ISQ, BO }. Hãy:
a. Tìm tập các khoá;
b. Bằng trực giác chỉ ra một phân rã rồi xác định dạng chuẩn
của nó và kiểm tra tính bảo toàn thông tin, bảo toàn phụ
thuộc;
c. Xác định dạng chuẩn và kiểm tra tính bảo toàn thông tin,
bảo toàn phụ thuộc của phân rã = {ISQS, IBO}
8. Cho R = {Ship name, Voyage indentifier, Type of ship, Cargo
carried by one ship on one voyage, Port, Day} = SVTCPD và F = {
S T, V SC, SD PV }. Hãy tìm một phân rã đạt chuẩn BC,
bảo toàn thông tin và đặc trƣng đầy đủ F.
9. Cho lƣợc đồ quan hệ R = {Nhân viên, Chức danh, Bậc lương, Hệ
số lương, hệ Số chức danh} = NCBHS. Giả sử R thoả BC H,
ngoài ra tại một thời điểm bất kỳ R còn thoả N BC và C S.
Với mỗi câu hỏi sau, xác định tập phụ thuộc hàm F và đƣa ra một
lược đồ đầy đủ.
![Page 193: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/193.jpg)
Chƣơng 6: Chuẩn hoá lƣợc đồ quan hệ 177
a. Trong bối cảnh thời điểm đƣợc xác định trƣớc (chẳng hạn
cơ sở dữ liệu chỉ lƣu thông tin cho thời điểm hiện tại mà
thôi).
b. Trong bối cảnh thời điểm là tùy ý, bằng cách dùng thuộc
tính Mốc thời gian (viết tắt là M) để lƣu thời điểm khi tiếp
nhận nhân viên, trong những lần đƣợc nâng bậc lương hoặc
đổi chức danh, và những lần điều chỉnh hệ số chức danh.
10. Cho tập thuộc tính R = {Hàng hoá, Đơn vị tính, Phiếu xuất, lượng
Toàn, trị gIá tồn, Lượng xuất, Giá xuất}. Dùng các ký tự đƣợc in
đậm làm chữ viết tắt, xét lƣợc đồ R = HĐPTILG. Giả sử R thoả H
Đ và PH LG, ngoài ra tại một thời điểm bất kỳ trƣớc khi lập
phiếu, R còn phải thỏa H TI. Với mỗi câu hỏi sau, hãy xác định
tập phụ thuộc hàm F và đƣa ra một lược đồ đầy đủ
a. Trong bối cảnh thời điểm đƣợc xác định trƣớc (chẳng hạn
cơ sở dữ liệu chỉ lƣu thông tin cho thời điểm hiện tại mà
thôi)
b. Trong bối cảnh thời điểm là tùy ý. Bằng cách dùng thuộc
tính Ngày lập (viết tắt là N) để lƣu thời điểm lập phiếu, giả
sử khi ấy ta quan sát thấy R còn phải thỏa thêm các phụ
thuộc hàm P N và N P.
11. Cho lƣợc đồ R = {Nhân viên, Phòng, chức Vụ, nGạch} = NPVG.
Giả sử R thoả phụ thuộc N GP. Tại thời điểm xác định, R còn
thoả N V. Ngoài ra với thể hiện chỉ có các trƣởng phòng, R còn
thoả thêm P N (khi ấy trƣởng phòng đóng hai vai trò: vừa quản
lý vừa là thành viên của phòng). Với mỗi câu hỏi sau, hãy xác định
tập phụ thuộc hàm F và đƣa ra một lược đồ đầy đủ
a. Trƣờng hợp cơ sở dữ liệu chỉ lƣu thông tin hiện tại
b. Trƣờng hợp tổng quát, dùng hai thuộc tính Q (Quyết định)
và K (ngày Ký) để lƣu quyết định và ngày ký quyết định
chức vụ cho nhân viên, khi ấy ta quan sát thấy R thoả thêm
các phụ thuộc hàm Q NKV và KN Q.
12. Tìm một lƣợc đồ quan hệ có ràng buộc đa trị. Chuẩn hoá nó đến
dạng chuẩn 4.
13. Thử bàn về tiếp cận tổng hợp khi tập phụ thuộc có các phụ thuộc đa
trị.
![Page 194: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/194.jpg)
178 Giáo trình cơ sở dữ liệu
![Page 195: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/195.jpg)
Chƣơng 7 MÔ HÌNH THỰC THỂ KẾT HỢP
Mục tiêu của chƣơng.
Trong chƣơng này chúng ta sẽ học về:
Phƣơng pháp luận thiết kế cơ sở dữ liệu mức quan
niệm;
Mô hình thực thể kết hợp (ER);
Cách sử dụng mô hình ER thiết kế cơ sở dữ liệu mức
quan niệm;
Các ký hiệu mô hình của Power Designer (PD);
Chuyển mô hình mức quan niệm về mô hình mức
logic;
Vấn đề của việc xuất hiện chu trình trong mô hình;
Tính xác định của phụ thuộc hàm và ngữ cảnh;
Vai trò của ngƣời dùng cuối trong quá trình thiết kế;
Vai trò của mô hình ngoài trong quá trình thiết kế.
Chúng ta đã biết mô hình dữ liệu mức quan niệm tập trung vào tính logic
của biểu diễn dữ liệu. Trong chƣơng này chúng tôi giới thiệu một mô hình
rất phù hợp để lập mô hình dữ liệu mức quan niệm, mô hình thực thể kết
hợp (Entity Relationship63
, viết tắt là ER).
1. Khái niệm
Mô hình thực thể kết hợp là một tiếp cận mô hình hoá dữ liệu dựa trên các
khái niệm thực thể (entity), thuộc tính (attribute) và mối kết hợp
(relationship). Nó đƣa ra các lƣợc đồ quan niệm trực quan và dễ hiểu.
63 Thuật ngữ mối kết hợp (relationship) đã quen đƣợc xử dụng
![Page 196: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/196.jpg)
180 Giáo trình cơ sở dữ liệu
1.1. Thực thể
Trong hệ thống có các đối tƣợng, các sự vật, các khái niệm mà sự tồn tại
của chúng đóng vai trò quan trọng trong việc lập mô hình. Chúng tạo thành
những nhóm và đƣợc mô tả trong mô hình thực thể kết hợp dƣới thuật ngữ
thực thể64
.
Ví dụ 7.1
Với công ty điện lực, các thực thể có thể là Khách hàng, Mức tiêu
thụ, …
Với một trƣờng đại học, các thực thể có thể là Sinh viên, Giảng viên,
Môn học, Chương trình đào tạo …
Với một siêu thị, các thực thể có thể là Khách hàng thân thiết, Nhà
cung cấp, Hàng hoá, Hoá đơn, Phiếu nhập, Biên bản kiểm kê, …
Với công ty Mỹ Gia, các thực thể có thể là Chi nhánh, Nhân viên,
Người thân, Nhà cho thuê, Chủ nhà, Khách hàng, Hợp đồng …
Mô hình hoá có nhiều cấp độ trừu tƣơng từ tổng quát đến chi tiết. Ban đầu,
ở mức trừu tƣợng cao, chỉ một số thực thể quan trọng đƣợc đƣa ra. Càng về
sau, mô hình càng cụ thể, xuất hiện các thực thể mới nhằm mô tả các đối
tƣợng, sự vật và khái niệm trong hệ thống đƣợc chi tiết hơn.
Ví dụ 7.2
Với công ty điện lực, thực thể Khách hàng có thể chi tiết thành các
thực thể nhƣ Hộ gia đình, Cơ sở kinh doanh, …
Với một trƣờng đại học, thực thể Môn học có thể chi tiết thành các
thực thể nhƣ Môn tự chọn, Môn bắt buộc …
Với công ty Mỹ Gia, thực thể Nhân viên có thể chi tiết thành các
thực thể nhƣ Quản lý, Thư ký, Giám sát, Chuyên viên …
Có những thực thể mà sự tồn tại của nó phụ thuộc vào sự tồn tại của một
hoặc nhiều thực thể khác. Chúng đƣợc gọi là thực thể phụ thuộc hay thực
thể yếu
Ví dụ 7.3
Với công ty Mỹ Gia, thực thể Người thân không thể tồn tại nếu
không có thực thể Nhân viên. Ta có, Người thân là thực thể yếu phụ
thuộc vào Nhân viên
64 Lƣu ý: những ngƣời thiết kế khác nhau có thể đƣa ra các thực thể khác nhau
![Page 197: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/197.jpg)
Chƣơng 7: Mô hình thực thể kết hợp 181
Ta có: “Thực thể là là một phần tử mô hình trong mô hình thực thể kết hợp,
dùng để mô tả các đối tượng, sự vật hoặc khái niệm cùng loại. Các đối
tượng, sự vật hoặc khái niệm65
mà thông tin của nó có vai trò quan trọng
trong việc việc xây dựng cơ sở dữ liệu cho một tổ chức, cần được mô tả
trong các thực thể. Thông tin cụ thể về một đối tượng, hay trạng thái của
chúng, được gọi là một thể hiện của chúng trong hệ thống đang xét”.
Chúng ta dùng một hình chữ nhật để ký hiệu thực thể, hình chữ nhật có
viền đôi để ký hiệu thực thể yếu. Bên trong hình chữ nhật có gắn nhãn là
tên của thực thể.
Ví dụ 7.4
Ký hiệu thực thể Nhân viên, Chi nhánh và thực thể yếu Người thân
Các ký hiệu này cho biết trong hệ thống có một tập các nhân viên,
tập các chi nhánh và tập các người thân của nhân viên mà thông tin
về họ có vai trò nào đó trong cơ sở dữ liệu của công ty Mỹ Gia.
Thông tin của một đối tƣợng nhân viên cụ thể có thể là mã nhân
viên, chi nhánh làm việc, họ, tên, địa chỉ, số điện thoại, giới tính,
ngày sinh, số của sổ bảo hiểm, chức vụ, lương, ngày vào làm và tốc
độ đánh máy (xem chƣơng 1). Một số thông tin dùng để mô tả, số
khác cho biết các liên kết với các đối tƣợng khác.
1.2. Thuộc tính
Chúng ta dùng danh sách thuộc tính để mô tả các đối tượng. Các giá trị
thuộc tính của các đối tƣợng cho ta một thể hiện của chúng trong hệ thống.
Một thực thể có bao nhiêu thuộc tính phụ thuộc vào mục tiêu của cơ sở dữ
liệu, thƣờng là đủ để chúng ta có thể làm việc. Ký hiệu thuộc tính trong mô
hình là một hình oval có nhãn và đƣợc gắn với thực thể chủ nhân duy nhất
của nó.
65 Kể từ đây chúng ta sẽ dùng thuật ngữ đối tƣợng thay cho các thuật ngữ đối tƣợng, sự vật
hoặc khái niệm
Nhân Viên
Ngƣời thân Chi nhánh
![Page 198: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/198.jpg)
182 Giáo trình cơ sở dữ liệu
Ví dụ 7.5
Nhờ các giá trị thuộc tính chúng ta quan sát đƣợc đối tƣợng, nhận diện và
làm việc với chúng. Tập giá trị của thuộc tính đƣợc gọi là miền giá trị của
thuộc tính.
Thuộc tính có các thuộc tính con đƣợc gọi là thuộc tính phức. Chúng ta có
thể tách các thuộc tính phức để tạo thành một thực thể mới, nếu thấy cần
thiết.
Ví dụ 7.6
Với thuộc tính địa chỉ, giả sử chúng ta quan tâm đến các thông tin
riêng nhƣ tỉnh thành phố, quận huyện và số nhà, ta có:
Trong thực tế, một đối tƣợng đƣợc hoàn toàn xác định qua một vài giá trị
thuộc tính nào đó. Chẳng hạn, mã sinh viên xác định duy nhất một sinh
viên trong trƣờng đại học.
Một tập con tối tiểu các thuộc tính cho phép phân biệt các đối tƣợng với
nhau đƣợc gọi là khoá. Một thực thể có thể có nhiều khoá (candidate key),
chúng ta sẽ chọn một trong chúng làm khoá chính (primary key) và gạch
chân chúng trong lƣợc đồ. Thật lý tƣởng nếu chọn đƣợc khoá chính chỉ
gồm một thuộc tính66
.
66 Trong thực tế, chúng ta thƣờng bổ sung cho thực thể một thuộc tính để làm khoá chính
Sinh Viên
Họ Tên Ngày Sinh
Địa chỉ
Sinh Viên
Họ Tên Ngày Sinh
Số Nhà
Quận
Thành Phố
Địa chỉ
![Page 199: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/199.jpg)
Chƣơng 7: Mô hình thực thể kết hợp 183
Ví dụ 7.7
Mô hình cho phép đặc tả các thuộc tính có nhiều trị, khi ấy nó đƣợc gọi là
thuộc tính đa trị và đƣợc nối với thực thể bằng đƣờng kẻ đôi. Thuộc tính
mà giá trị của nó hoàn toàn xác định qua giá trị của các thuộc tính khác
đƣợc gọi là thuộc tính dẫn xuất đƣợc nối với thực thể bằng đƣờng đứt nét.
Ví dụ 7.8
1.3. Mối kết hợp
Mối kết hợp trong mô hình ER biểu diễn một kết hợp giữa các thực thể, là
tập các liên kết giữa các đối tƣợng của các thực thể thành phần, mỗi liên
kết đƣợc gọi là một thể hiện kết hợp. Số thực thể tham gia vào mối kết hợp
đƣợc gọi là bậc của mối kết hợp, mối kết hợp bậc một còn đƣợc gọi là kết
hợp đệ quy. Chúng ta dùng một hình thoi có gắn nhãn để biểu diễn mối kết
hợp. Vì các liên kết đƣợc hình thành trong quá trình hệ thống hoạt động
nên nhãn của mối kết hợp thƣờng là tên của các hoạt động này67
.
67 Tuy nhiên, dù dữ liệu đƣợc phát sinh từ các hoạt động của hệ thống, chúng vẫn là danh
từ do vậy việc dùng các loại từ khác với danh từ để đặt tên cho mối kết hợp cũng chỉ nhằm
mục đích nhấn mạnh đến bản chất của việc phát sinh ra chúng. Thực chất dữ liệu là danh
từ và mối kết hợp giữa chúng, nếu có, vẫn nên thuần tuý ở tính logic và có thể dùng các
loại từ biểu diễn mối quan hệ (xem thêm phần hƣớng dẫn mô hình hố), còn muốn biết các
hoạt động làm phát sinh dữ liệu chúng ta cần đến các biểu đồ khác.
Sinh Viên
Họ Tên Ngày Sinh
Mã SV
Sinh Viên
Họ Tên Ngày Sinh
Mã SV
Tuổi
Địa chỉ
![Page 200: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/200.jpg)
184 Giáo trình cơ sở dữ liệu
Ví dụ 7.9
Trong một mối kết hợp, một đối tƣợng có thể không có trong bất kỳ liên
kết nào nhƣng cũng có thể tham gia trong nhiều liên kết với các đối tƣợng
khác. Để đặc tả số lần một đối tƣợng có thể tham gia vào mối kết hợp
chúng ta dùng hai số min và max cho biết số liên kết tối thiểu và tối đa mà
một đối tƣợng của nó đƣợc phép thực hiện với các đối tƣợng của các thực
thể còn lại. Cặp [min:max] đƣợc gọi là bản số của thực thể tham gia vào
mối kết hợp.
Ví dụ 7.10
[1:1] [4:30]
[0:6] [1:2]
[0:n] [1:n]
[1:1]
Giảng Viên Môn Dạy
Thành Phố Kề với
Nhân Viên Khách Hàng Lập
Hóa Đơn
Nhân Viên Khách Hàng Lập
Hóa Đơn
Giảng Viên Khoa Thuộc
Giảng Viên Môn Dạy
![Page 201: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/201.jpg)
Chƣơng 7: Mô hình thực thể kết hợp 185
Trong lƣợc đồ đầu, giảng viên thuộc về một khoa duy nhất còn khoa có ít
nhất 4 giảng viên và nhiều nhất 30 giảng viên. Ở lƣợc đồ tiếp theo, giảng
viên dạy tối đa 6 môn còn mỗi môn phải có giảng viên giảng nhƣng không
quá hai. Lƣợc đồ cuối, nhân viên đƣợc phép lập nhiều hoá đơn; khách hàng
phải nhận ít nhất một hoá đơn (phải mua hàng mới có dữ liệu trong cơ sở
dữ liệu); hoá đơn chỉ đƣợc lập một lần duy nhất68
.
Bản số của mối kết hợp có thể dùng để biểu diễn các ràng buộc phụ thuộc
hàm và ràng buộc khác rỗng. Theo đó, bản số max bằng 1 cho biết có ràng
buộc phụ thuộc hàm, bản số min khác 0 cho biết có ràng buộc khác rỗng.
Ví dụ 7.11
[1:1] [4:30]
Trong mối kết hợp này, ta có một ràng buộc phụ thuộc hàm Giảng viên →
Khoa và hai ràng buộc tồn tại: thông tin liên kết với khoa của giảng viên và
thông tin liên kết với giảng viên của khoa phải đƣợc lƣu trong cơ sở dữ liệu
ngay khi có đối tƣợng69
.
1.4. Nhiều hơn về mối kết hợp
Thực thể yếu (thực thể phụ thuộc)
Một thực thể đƣợc gọi là thực thể yếu nếu
Nó đóng vai trò phụ thuộc tồn tại trong một hoặc nhiều mối kết hợp
Khoá chính của nó thực hiện đƣợc vai trò chỉ trong bối cảnh các thể
hiện của các thực thể bị phụ thuộc là xác định. Nói cách khác, một
mình nó là không đủ để phân biệt các đối tƣợng của chính nó mà phải
có sự tham gia của các khoá chính của các thực thể bị phụ thuộc.
Mô hình ER dùng một hình tròn nhỏ để biểu diễn vai trò phụ thuộc của
thực thể yếu cần đến khoá chính của thực thể bị phụ thuộc để phân biệt các
đối tƣợng của nó.
68 Bản số thể hiện một số quy tắc quản lý của hệ thống. Lƣu ý mô hình không biểu diễn đƣợc tất cả các quy tắc quàn lý. Tuỳ vào mức trừu tƣợng mà một số quy tắc đƣợc đặc tả
trong mô hình cụ thể. 69
Đây thực là một nghịch lý logic. Tuy nhiên, các lập trình viên có kinh nghiệm đề có thể
cài đặt các ràng buộc loại này.
Giảng Viên Khoa Thuộc
![Page 202: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/202.jpg)
186 Giáo trình cơ sở dữ liệu
Ví dụ 7.12
Lƣợc đồ này ngụ ý khoá chính của đội chỉ dùng để phân biệt giữa các đội
trong cùng một câu lạc bộ, hơn nữa đội là phụ thuộc tồn tại vào câu lạc bộ.
Thực thể kết hợp
Trong mô hình ban đầu của Chen, mối kết hợp không có thuộc tính. Để đặc
tả các mối kết hợp có thuộc tính, chúng ta sẽ chuyển mối kết hợp thành
thực thể và gọi là thực thể kết hợp. Thực thể kết hợp là một thực thể yếu
phụ thuộc vào các thực thể thành phần của mối kết hợp (bình thƣờng nó
phụ thuộc vào tất cả các thực thể thành phần, nhƣng trong một số trƣờng
hợp thì không phải lúc nào cũng vậy, khi ấy ta phải đặc tả cho rõ ràng).
Thực thể kết hợp đƣợc ký hiệu bởi một hình chữ nhật bao một hình thoi.
Ví dụ 7.13
Lƣợc đồ ngụ ý mối kết hợp dạy (tên đầy đủ của nó nên là được phân công
dạy) đƣợc chuyển thành thực thể kết hợp để nó có thuộc tính riêng cũng
nhƣ cho phép nó tham gia vào các kết hợp khác, hơn nữa chỉ có khoá chính
của môn và lớp tham gia phân biệt các sự kiện phân công giảng dạy này70
Thực thể cha, thực thể con
Chúng ta có thể phân hoạch tập các đối tƣợng của thực thể để đƣợc các tập
con. Nhƣ vậy ta đã tạo ra các thực thể mới. Thực thể ban đầu đóng vai trò
thực thể cha, còn các thực thể đƣợc sinh ra đóng vai trò thực thể con. Quá
trình nhƣ vậy có thể đƣợc tiếp tục, khi ấy chúng ta có những thực thể đóng
cả hai vai trò.
70 trong trƣờng hợp bỏ qua đặc tả chi tiết này, chúng ta xem thực thể kết hợp phụ thuộc
vào tất cả các thực thể thành phần.
Câu Lạc Bộ Đội Lập
Giảng Viên
Môn Dạy
Lớp
![Page 203: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/203.jpg)
Chƣơng 7: Mô hình thực thể kết hợp 187
Cách làm này cho phép ta mô tả một số đối tƣợng đƣợc chi tiết hơn về các
thuộc tính riêng cũng nhƣ các mối quan hệ riêng khác mà các đối tƣợng
khác không có. Quan hệ cha con giữa thực thể cha và thực thể con là một
mối kết hợp đặc biệt và có bản số 1:1. Trong trƣờng hợp tổng quát, họ các
thực thể con không nhất thiết là một phân hoạch của thực thể cha. Mô hình
ER dùng ký hiệu G để biểu diễn sự không giao nhau của các thực thể con
(nếu đầy đủ nó sẽ là một phân hoạch), và dùng ký hiệu Gs để biểu diễn có
những thực thể con có phần giao khác rỗng.
Ví dụ 7.14
Một phân hoạch thực thể sinh viên
Ví dụ 7.15
Một mô tả chi tiết nhân viên, có những nhân viên vừa là giảng viên vừa là
quản lý.
Sinh Viên
Chính Quy Bằng 2 Tại Chức
G G
Nhân Viên
Giảng Viên Quản Lý
Gs
![Page 204: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/204.jpg)
188 Giáo trình cơ sở dữ liệu
1.5. Tìm phụ thuộc hàm từ mô hình E-R
Phụ thuộc hàm là các ràng buộc, chúng có thể đúng trong ngữ cảnh này
nhƣng không đúng trong ngữ cảnh khác. Phụ thuộc hàm xác định một quan
hệ hàm, nếu ngữ cảnh làm quan hệ hàm không xác định thì ràng buộc phụ
thuộc hàm không còn tác dụng.
Trên từng thực thể hoặc từng mối kết hợp
Phụ thuộc hàm cảm sinh từ khoá chính
Ví dụ 7.16
Thực thể Sinh viên với khoá chính Mã SV
Sinh viên
Mã SV
Họ tên
Ngày sinh
Giới tính
Xác định phụ thuộc hàm S HNG
Phụ thuộc hàm cảm sinh từ mối kết hợp 1-n
Ví dụ 7.17
Mối kết hợp 1-n giữa hai thực thể Sinh viên và Lớp
Sinh viên 1:1 0:n Lớp
Mã SV
…
Mã Lớp
…
Xác định phụ thuộc hàm SL
Phụ thuộc hàm cảm sinh từ mối kết hợp n-n
Ví dụ 7.18
Mối kết hợp n-n giữa hai thực thể Hoá đơn và Hàng hoá
Hoá đơn 1:n 0:n Hàng hoá
Mã SV
…
Mã Lớp
…
Xác định phụ thuộc hàm SLN
Số lƣợNg
![Page 205: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/205.jpg)
Chƣơng 7: Mô hình thực thể kết hợp 189
Thật ra phụ thuộc hàm này đƣợc phát sinh từ khoá khi chuyển về mô hình
quan hệ. Tuy nhiên không phải tất cả các phụ thuộc hàm đều có thể nhận
đƣợc từ mô hình ER.
Ví dụ 7.19
Trong mối kết hợp phân công giảng là mối kết hợp 3 ngôi giữa các thực
thể Lớp, Giảng viên và Môn ta không thể nhận ra phụ thuộc hàm LM
G.
Bằng cách biến đổi mô hình ER đƣa các quan hệ phức tạp về các mối kết
hợp hai ngôi đơn giản ta có thể phát hiện nhiều phụ thuộc hàm.
Ví dụ 7.20
Trong mối kết hợp phân công giảng giữa Lớp, Giảng viên và Môn ta phân
tích bộ 3 (g,m,l) thành (g,(m,l)) trong đó kết hợp kế hoạch học giữa Lớp và
Môn là n-n; chuyển kết hợp này thành thực thể và nhận ra phân công giảng
là kết hợp giữa Giảng viên và kế hoạch học có bản số 1-n suy ra có phụ
thuộc hàm LM G.
Tuy nhiên lạm dụng cách làm này có thể dẫn đến việc đánh mất một số
ràng buộc. Giả sử thêm thực thể phòng (P) vào mối kết hợp. Coi (g, m, l, p)
= ((g, (m, l)), p)) chúng ta phát hiện phụ thuộc hàm LM G nhƣng việc
bổ sung thực thể kết hợp giữa môn và lớp rồi thực thể kết hợp giữa môn-
lớp và giảng viên vào mô hình, theo cách làm này, sẽ ngăn cản việc phát
hiện ra phụ thuộc hàm khác nhƣ LP MG hay GP LM71
.
Trên lƣợc đồ
Các phụ thuộc hàm tìm thấy không thể đơn giản hợp lại thành một tập phụ
thuộc hàm đƣợc72
.
Ví dụ 7.21
Xét hai kết hợp Nợ và Có giữa Nhật ký và Tài khoản nhƣ sau
71 Trong nhiều trƣờng hợp, việc tìm đầy đủ các phụ thuộc hàm nên để lại bƣớc sau, khi đã đƣa ra đƣợc mô hình cơ sở dữ liệu quan hệ. Với tập phụ thuộc hàm này chúng ta sẽ chuẩn
hoá bằng các kỹ thuật đã học ở những chƣơng trƣớc. 72
Một cách tổng quát, phụ thuộc hàm xác định tồn tại quan hệ hàm. Với dữ liệu cụ thể
quan hệ hàm này phải hoàn toàn đƣợc xác định.
![Page 206: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/206.jpg)
190 Giáo trình cơ sở dữ liệu
Nhật ký 1:1 0:n Tài khoản
NK ID
…
TK Số
…
1:1 0:n
Ở đây có hai quan hệ hàm giữa Nhật ký và Tài khoản. Việc mô tả bằng phụ
thuộc hàm là không xác định.
Thay đổi ngữ cảnh
Chỉ quan tâm đến lƣợc đồ con. Trong ví dụ trên nếu xét trên ngữ cảnh ghi
nợ cho tài khoản ta có
Ví dụ 7.22
Trong ngữ cảnh ghi nợ cho tài khoản:
Nhật ký 1:1 0:n Tài khoản
NK ID
…
TK Số
…
Lúc này ta có quan hệ hàm giữa Nhật ký và Tài khoản, cụ thể Nhật ký →
Tài khoản.
Nhân bản thực thể
Ví dụ 7.23
Nhân bản tài khoản
Nhật ký 1:1 0:n Tài khoản Nợ
NK ID
…
TK Nợ
…
Ta có Nhật ký → Tài khoản Nợ.
Chuyên biệt hoá thực thể
Ví dụ 7.24
Xét quy tắc quản lý: nhân viên (N) thuộc về một phòng (P); phòng phải có
trƣởng phòng (T); trƣởng phòng phải là nhân viên thuộc phòng.
Nợ
Có
Nợ
![Page 207: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/207.jpg)
Chƣơng 7: Mô hình thực thể kết hợp 191
Giải
Mặc dù quan sát thấy có các phụ thuộc hàm N P, P T, T N nhƣng
không thể xếp chúng thành một tập phụ thuộc hàm đƣợc.
Trong ngữ cảnh toàn bộ nhân viên: Ta có N P là đúng.
Nhân viên 1:1 0:n Phòng
Mã NV
…
Mã PG
…
Trong ngữ cảnh toàn bộ trưởng phòng: Ta có N P, P T, T N đúng.
Cần nhắc lại mỗi phụ thuộc hàm là một quan hệ hàm xác định. Chẳng
hạn, với tập phụ thuộc hàm {A B, B C, A C} chúng ta có hai quan
hệ hàm từ A vào C, một trực tiếp và một bắc cầu qua B. Do tính xác định,
chúng là một và chúng ta loại bỏ quan hệ hàm đƣợc cho trực tiếp73
. Nhƣ
vậy chúng ta cần lƣu ý đến bản chất của các phụ thuộc dẫn xuất. Trong mô
hình trên, tích giữa N P, P T và T N xác định N N hiểu là
trưởng phòng của nhân viên và không là hàm đồng nhất, nhƣng tích giữa P
T, T N và N P, xác định hàm đồng nhất P P và tích giữa T
N, N P và P T xác định hàm đồng nhất T T. Theo đó, cơ sở dữ
liệu sau là mâu thuẫn.
nv (N P) pb (P T) tp (T N)
a 1 1 u u a
b 1 2 v v b
c 2
d 2
vì (v b 1 u) và (2 v b 1) không là các quan hệ đồng nhất
Bây giờ nếu chuyên biệt hoá, thì tập luật đúng theo ngữ cảnh và không còn
mâu thuẫn.
Xét lƣợc đồ sau:
73 Khi mô hình có chu trình thƣờng phải chú ý điều này. Thực tế có tồn tại nhiều quan hệ
hàm giữa 2 tập thuộc tính và chúng ta cần đến ngữ cảnh.
![Page 208: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/208.jpg)
192 Giáo trình cơ sở dữ liệu
Nhân viên 1:1 0:n Phòng
Mã NV
…
Mã PG
…
1:1
1:1
NV Thường Trưởng phòng
1.6. Các ký hiệu trong Power Designer
Trong chƣơng này chúng tôi sử dụng công cụ phần mềm hỗ trợ thiết kế
(CASE, Computer-Aided Sofware Engineering) là Power Designer để lập
mô hình quan niệm. Mục này nhằm giới thiệu các khái niệm và ký hiệu
liên quan đến mô hình ER
Thực thể, thuộc tính và miền giá trị
Sử dụng ký hiệu hình chữ nhật có ba ngăn để mô tả thực thể:
Ngăn trên chứa tên thực thể.
Ngăn giữa là danh sách thuộc tính kèm miền giá trị74
. Các thuộc
tính tham gia khoá chính đƣợc gạch chân.
Ngăn cuối là các ràng buộc (có thể bỏ nếu không cần phải mô tả).
Thực thể Sinh Viên sau đây minh họa các điều trên.
74 ở mức trừu tƣợng cao, chƣa cần phải mô tả miền giá trị của thuộc tính
G
![Page 209: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/209.jpg)
Chƣơng 7: Mô hình thực thể kết hợp 193
Thực thể yếu
Ta có ký hiệu thể hiện sự phụ thuộc, nhƣ sau
Mối quan hệ (relationship)
Dùng để đặc tả mối kết hợp không quá 2 ngôi và không có thuộc tính75
.
Hình sau minh họa mối kết hợp 1 ngôi và 2 ngôi:
Mối kết hợp (association)
Mối kết hợp cho phép có thuộc tính. Hình sau minh họa mối kết hợp 3 ngôi
cho phép thêm thuộc tính.
75 cần lƣu ý bản số ghi trong ký hiệu mối quan hệ ngƣợc với bản số ghi trong mối kết hợp
![Page 210: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/210.jpg)
194 Giáo trình cơ sở dữ liệu
Nếu cần thiết chuyển thành thực thể (thực thể kết hợp) ta có
Lƣu ý đến ký hiệu phụ thuộc. Trong mô hình trên ta quan sát thấy Lich
Giang phụ thuộc vào hai thực thể Mon và Lop. Thật ra, trong mô hình này,
ngƣời thiết kế muốn nhấn mạng đến ràng buộc phụ thuộc hàm. Thật vậy,
gọi K là khoá của lịch giảng còn M, L và G là khoá của các thực thể Mon,
Lop và Giang Vien tƣơng ứng, theo mô hình Lich Giang là thực thể yếu, ta
có KML G. Trong thực tế, ngƣời thiết kế không đặc tả khoá cho lịch
giảng, do đó phụ thuộc hàm thực sự là ML G.
Thực thể cha và thực thể con
Thực thể cha và các thực thể con với các ký hiệu giao bằng rỗng hoặc cho
phép giao khác rỗng nhƣ đƣợc minh hoạ trong hình sau.
![Page 211: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/211.jpg)
Chƣơng 7: Mô hình thực thể kết hợp 195
Ví dụ minh họa
Trong mục này, chúng ta thử khảo sát các yêu cầu của hệ thống quản lý
đào của một trƣờng đại học (không phải từ case study 2 ở chƣơng 1) để
đƣa ra mô hình E-R nhƣ là một mô hình dữ liệu mức quan niệm. Từ các
yêu cầu, chúng ta sẽ lần lƣợt đƣa ra các thực thể và các mối kết hợp để cuối
cùng tích hợp lại thành mô hình.
Đại học X có nhiều khoa, mỗi khoa tổ chức đào tạo một số ngành
Để hoàn tất việc đào tạo khoa phải xây dựng một hệ thống các môn
học. Các môn học này đƣợc thiết kế phù hợp với từng ngành và thứ
tự học là quan trọng.
Inheritance_2
Inheritance_1
Giang Vien
GV MoiGV Co Huu
Nhan Vien
Quan Tri
![Page 212: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/212.jpg)
196 Giáo trình cơ sở dữ liệu
Khoa cần các giảng viên có khả năng giảng dạy các môn này.
Giảng viên phải thuộc về một khoa và đƣợc yêu cầu dạy ít nhất một
môn nhƣng không quá 3 môn. Môn phải có giảng viên dạy và
không quá 2 giảng viên
Mỗi năm khoa đều mở ra một số lớp cho mỗi ngành
Và phân công giảng dạy phù hợp với mục tiêu đào tạo
Ta có mô hình dữ liệu mức quan niệm nhƣ sau
![Page 213: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/213.jpg)
Chƣơng 7: Mô hình thực thể kết hợp 197
1.7. Chuyển sang mô hình quan hệ
Khi mô hình E-R đã đủ chi tiết, sẵn sàng cho việc xây dựng mô hình dữ
liệu mức logic76
, chúng ta dùng các quy tắc sau để chuyển mô hình E-R
sang mô hình quan hệ.
Quy tắc
1. Phát sinh lƣợc đồ quan hệ duy nhất cho các thực thể có tồn tại mối
kết hợp 1:1 với tập khoá là các khoá chính của các thực thể gốc.
2. Mỗi thực thể chuyển thành một lƣợc đồ quan hệ với khoá chính là
khoá chính của thực thể;
76 Trong kiến trúc 3 mức ANSI-SPARC, mức trong là mức gần với cài đặt. Thực tế khi thiết kế cơ sở dữ liệu chúng ta thƣờng xem mức trong theo hai cấp độ trừu tƣợng. Thiết kế
cơ sở dữ liệu mức logic là xây dựng mô hình độc lập với hệ quản trị cơ sở dữ liệu và các
quan tâm về mặt vật lý khác. Trong lúc Thiết kế cơ sở dữ liệu mức vật lý là quá trình đƣa
ra các mô tả cài đặt cơ sở dữ liệu trên bộ nhớ thứ cấp; nó mô tả cấu trúc lƣu trữ và các
phƣơng pháp truy xuất hiệu quả. Trong tài liệu này khi nói đến mô hình mức trong, chúng
tôi nhấn mạnh đến mô hình cơ sở dữ liệu mức logic.
![Page 214: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/214.jpg)
198 Giáo trình cơ sở dữ liệu
3. Mỗi thực thể phụ thuộc chuyển thành lƣợc đồ quan hệ với khoá
chính là tổ hợp của khoá chính của thực thể với khoá chính của các
thực thể bị phụ thuộc;
4. Với các mối kết hợp 1 ngôi:
a. Mỗi mối kết hợp 1:n, mở rộng lƣợc đồ quan hệ thêm một
lần nữa các thuộc tính của khóa chính (nhớ đổi tên) cùng
với các thuộc tính của mối kết hợp;
b. Mỗi mối kết hợp n:n chuyển thành lƣợc đồ quan hệ, bổ sung
thêm gấp đôi các thuộc tính khoá chính (hình thành các ràng
buộc khoá ngoại) và xác định ràng buộc khoá chính từ các
thuộc tính này.
5. Với các kết hợp 2 ngôi:
a. Mỗi mối kết hợp 1:n, mở rộng lƣợc đồ quan hệ bên bản số 1
để thêm các thuộc tính khóa chính của quan hệ bên bản số n
(hình thành ràng buộc khoá ngoại) cùng với các thuộc tính
của mối kết hợp;
b. Mỗi mối kết hợp n:n chuyển thành lƣợc đồ quan hệ, thêm
các thuộc tính khoá chính của các thực thể thành phần (hình
thành các ràng buộc khoá ngoại) và xác định ràng buộc
khoá chính từ các thuộc tính này.
6. Với các kết hợp nhiều hơn 2 ngôi chuyển thành lƣợc đồ quan hệ,
thêm các thuộc tính khoá chính của các thực thể thành phần (hình
thành các ràng buộc khoá ngoại) và xác định ràng buộc khoá chính
từ các ràng buộc phụ thuộc.
7. Với mỗi lƣợc đồ quan hệ có đƣợc, dựa vào các quy tắc quản lý:
a. Xác định tập phụ thuộc hàm;
b. Phân rã lƣợc đồ bằng quá trình chuẩn hoá;
c. Dùng view dựng lại lƣợc đồ gốc.
Ví dụ 7.25
Xét mô hình dữ liệu quản lý nhân sự lƣu thông tin của nhân viên, của
phòng và của các liên kết gồm liên kết nhân viên thuộc phòng và liên kết
nhân viên làm trưởng phòng, với các quy tắc quản lý:
Nhân viên thuộc về một phòng;
Phòng phải có trƣởng phòng;
Trƣởng phòng là nhân viên thuộc phòng.
![Page 215: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/215.jpg)
Chƣơng 7: Mô hình thực thể kết hợp 199
Biểu đồ ER sau cho ta ý niệm về mô hình dữ liệu. Theo đó, giữa thực thể
nhân viên và thực thể phòng có một mối kết hợp 1:n. Thực thể trưởng
phòng là một thực thể con của thực thể nhân viên, và có một mối kết hợp
1:1 giữa thực thể trưởng phòng và thực thể phòng. Biểu đồ này đã mô tả
hai quy tắc đầu. Quy tắc thứ 3 sẽ đƣợc cài đặt thành ràng buộc toàn vẹn
trong mô hình cơ sở dữ liệu mức logic.
Thuộc tính khoá của trƣởng phòng vẫn là N. Ở đây chúng ta nên đổi
lại tên. Gọi T là thuộc tính khoá của trƣởng phòng, ta có kết quả áp
dụng các quy tắc nhƣ sau.
Dùng các quy tắc 1 và 2:
Phát sinh 2 lƣợc đồ quan hệ nv(N) và p(P T)
Dùng quy tắc 5:
Bổ sung P vào nv(NP) và ràng buộc khoá ngoại
Cài đặt các quy tắc quản lý khác:
Phụ thuộc tồn tại p[T] ⊂ nv[N] cài đặt trƣởng phòng là nhân
viên;
Phụ thuộc tồn tại p[TP] ⊂ nv[NP] cài đặt trƣởng phòng là
nhân viên thuộc phòng.
Vậy mô hình cơ sở dữ liệu mức logic gồm
Hai lƣợc đồ quan hệ nv(NP) và p(P T);
Và một ràng buộc tồn tại p[TP] ⊂ nv[NP].
![Page 216: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/216.jpg)
200 Giáo trình cơ sở dữ liệu
Ví dụ 7.26
Xét mô hình dữ liệu quản lý đào tạo với mô hình dữ liệu quan niệm đƣợc
xây dựng bằng biểu đồ ER sau, không có các quy tắc quản lý nào khác
ngoài các quy tắc quản lý đã đƣợc mô tả trên biểu đồ.
Ký hiệu K, G, M, N và L là các thuộc tính khoá (khoá chính) của các
thực thể Khoa, Giang Vien, Mon, Nganh và Lop tƣơng ứng, ta có kết
quả áp dụng các quy tắc:
Dùng các quy tắc 2 và 3:
Phát sinh 5 lƣợc đồ quan hệ k(K), gv(G), m(MN), n(N) và
l(L)
Dùng quy tắc 4:
Phát sinh lƣợc đồ tq(MNM‟N‟), trong đó M‟N‟ là tiên quyết
của MN
Dùng quy tắc 5:
![Page 217: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/217.jpg)
Chƣơng 7: Mô hình thực thể kết hợp 201
Mở rộng gv(GK), m(MNK), n(NK), n(LN), lƣu ý đến quan hệ
đồng nhất
Phát sinh gm(GMN)
Dùng quy tắc 6:
Phát sinh pc(GMNL), lƣu ý các quan hệ đồng nhất và ràng
buộc tồn tại
Kết quả ta có lƣợc đồ cơ sở dữ liệu
{k(K), gv(GK), m(MNK), tq(MNM‟N‟), n(NK), l(LN), gm(GMN),
pc(GMNL)}
2. Lập mô hình dữ liệu mức quan niệm
Quá trình xây dựng mô hình dữ liệu mức quan niệm là một quá trình lặp.
Sau mỗi vòng lặp mô hình đƣợc đặc tả đầy đủ hơn, gần với thực tế hơn.
Mô hình ban đầu với những thực thể và các mối kết hợp chung nhất, tổng
quát và chủ yếu nhất. Mô hình cuối cùng là mô hình đạt đƣợc sự thỏa thuận
giữa ngƣời dùng cuối và ngƣời thiết kế.
Phƣơng pháp luận
Chúng ta làm quen với quy trình 5 bƣớc sau:
1. Thu thập thông tin về tổ chức đáp ứng yêu cầu của hệ thống:
a. Phương pháp: phỏng vấn để hiểu yêu cầu hệ thống, phân
tích các nghiệp vụ để phát hiện tất cả dữ liệu vào ra hệ
thống;
b. Công cụ: sơ đồ dòng dữ liệu, sơ đồ dòng công việc;
c. Mục tiêu: xác định dòng công việc và thông tin liên quan
tới tổ chức.
2. Lập mô hình quan niệm:
a. Phương pháp: đọc tài liệu phỏng vấn, phân tích tập dữ liệu,
xác định các yêu cầu xử lý và các quy tắc quản lý;
b. Công cụ: mô hình thực thể kết hợp;
c. Mục tiêu: tìm thực thể, mối kết hợp và các ràng buộc
3. Chuẩn hoá
![Page 218: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/218.jpg)
202 Giáo trình cơ sở dữ liệu
a. Phương pháp: với mỗi lƣợc đồ quan hệ từ mô hình ER, xác
định tập phụ thuộc hàm, phụ thuộc đa trị;
b. Công cụ: dùng lý thuyết thiết kế;
c. Mục tiêu: dạng chuẩn 3, đặc trƣng đầy đủ F, bảo toàn thông
tin.
4. Xây dựng các biểu đồ thể hiện của bảng (Table Instance Charts)
a. Phương pháp: quan sát tập dữ liệu và thử đặt chúng vào
bảng;
b. Công cụ: dùng mẫu;
c. Mục tiêu: sẵn sàng cho cài đặt.
5. Cài đặt
a. Phương pháp: với lƣợc đồ cơ sở dữ liệu vừa xây dựng
xong, từ các quy tắc quản lý, xây dựng các ràng buộc toàn
vẹn;
b. Công cụ: dùng ngôn ngữ SQL;
c. Mục tiêu: cơ sở dữ liệu nhất quán.
Với quy trình trên, trong phạm vi tài liệu này chúng ta quan tâm đến các
bƣớc 2 và 3. Các bƣớc 1, 4 và 5 đƣợc giới thiệu trong các môn khác. Do
các kỹ năng ở bƣớc 3 đã đƣợc giới thiệu trong các chƣơng trƣớc, chƣơng
này chúng ta tập trung vào bƣớc 2. Mục sau khảo sát một tình huống nhằm
minh hoạ các công việc của bƣớc 2.
2.1. Khảo sát tình huống
Cửa hàng C kinh doanh hai mặt hàng a và b cung cấp chủ yếu cho hai
khách hàng u và v. Cửa hàng có hai nhân viên bán hàng x và y và một kế
toán c.
Trong ngày hôm nay nhân viên x bán cho khách hàng u cả 2 mặt
hàng a và b với số lƣợng tƣơng ứng là 3 và 2. Hoá đơn đƣợc chuyển đến kế
toán c để ghi sổ kế toán. Công việc kế toán của cửa hàng chỉ liên quan đến
các tài khoản 111, 511, 156, 632, 331 và 911.
Đầu ngày, kế toán c đã tính toán các dữ liệu liên quan công nợ khách
hàng, giá bán, giá vốn và lượng tồn kho hàng hoá. Theo đó, khách hàng u
nợ 40, khách hàng v nợ 20, hàng a còn lại 17 giá bán 14 giá vốn 12, hàng b
còn lại 8 giá bán 22 giá vốn 19.
![Page 219: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/219.jpg)
Chƣơng 7: Mô hình thực thể kết hợp 203
Khi lập hoá đơn, nhân viên bán hàng phải ghi lại số hoá đơn, ngày
lập, tiền trả trước của khách, ai bán, bán cho ai, bán những mặt hàng nào,
số lượng bán và số lượng còn lại của từng mặt hàng. Ở đây, sau khi bán
hàng cho u, nhân viên x ghi lại các dữ liệu cụ thể là: hoá đơn số 7, lập ngày
13, trả trƣớc 40, x bán, bán cho u, bán mặt hàng x số lƣợng 3 còn lại 14 và
mặt hàng y số lƣợng 2 còn lại 6.
Khi nhận hoá đơn kế toán phải ghi các bút toán gồm : bút toán thứ
mấy, ngày ghi sổ, ghi cho hoá đơn nào, tài khoản ghi nợ, tài khoản ghi có
và số tiền. Trong trƣờng hợp này, kế toán c ghi 3 bút toán với dữ liệu giống
nhau là ghi sổ ngày 13, ghi cho hoá đơn số 7 và các dữ liệu khác nhau nhƣ
sau: bút toán 20 ghi nợ 111 ghi có 511 số tiền 40, bút toán số 21 ghi nợ 331
ghi có 511 số tiền 46, bút toán 22 ghi nợ 632 ghi có 156 số tiền 74.
Hình sau mô tả tất cả dữ liệu hiện có qua các cấu trúc và các liên kết:
x
a
17
14
12
b
19
22
8
y
u
40
v
20
c
111
511
331 632
156
911
7
13
40
2
3 14
6
2 14
14
14
14
![Page 220: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/220.jpg)
204 Giáo trình cơ sở dữ liệu
2.2. Tìm thực thể
Bắt đầu từ việc quan sát một số dữ liệu mẫu. Các thao tác tổ chức dữ liệu
đơn giản thƣờng liên quan đến quan hệ nội tại giữa dữ liệu và các yêu cầu
chức năng của hệ thống.
Việc quan sát nên bắt đầu từ các chức năng vì khi phân tích chức năng
chúng ta nhìn thấy dữ liệu77
. Ở đây, chúng ta có hai chức năng: lập hoá đơn
và ghi sổ nhật ký kế toán.
Theo định nghĩa, thực thể dùng để mô tả các đối tƣợng cùng loại. Đặc biệt,
chúng thƣờng tồn tại độc lập. Với sơ đồ trên, chúng ta đã gom dữ liệu của
một đối tƣợng lại, qua đó xác định đƣợc các đối tƣợng cùng loại.
Chúng ta thu đƣợc danh sách các thực thể
2.3. Tìm mối kết hợp
Các thực thể có các quan hệ nội tại. Tuy nhiên, việc xem xét các chức năng
chúng ta sẽ thấy rõ hơn quá trình sinh ra các kết hợp. Chẳng hạn, với chức
năng lập hoá đơn chúng ta sinh ra hoá đơn cùng các kết hợp giữa nó với
nhân viên, với khách hàng và với hàng hoá
77 Giống nhƣ khi xét thao tác cộng hai số, chúng ta thấy có 3 mục dữ liệu.
![Page 221: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/221.jpg)
Chƣơng 7: Mô hình thực thể kết hợp 205
Còn với chức năng ghi sổ ta sinh ra các dòng nhật ký và các mối kết hợp
giữa chúng với hóa đơn và với tài khoản.
Mối kết hợp có thể đƣợc chuyển thành thực thể kết hợp. ở đây mối kết hợp
bán nên đƣợc chuyển thành thực thể kết hợp để có thể thêm vào thuộc tính
số lượng.
2.4. Phân rã các mối kết hợp nhiều hơn hai ngôi
Trong kết hợp một hoặc hai ngôi chúng ta dễ dàng nhận ra thực thể phụ
thuộc tồn tại nhƣ là một quy tắc quản lý. Điều này bị che khuất trong các
kết hợp nhiều hơn hai ngôi. Với kết hợp nhiều ngôi ta có thể căn cứ vào
ngữ nghĩa cụ thể để phân rã thành các kết hợp hai ngôi hoặc đơn giản
chuyển kết hợp thành thực thể kết hợp rồi xem xét tính phụ thuộc tồn tại
của nó với các thực thể thành phần78
.
Trong tình huống đang xét, giả sử ban đầu ta có mối kết hợp sau
78 Nếu có nhiều hơn một cách phân rã, thì ta nên giữ lại mô hình ban đầu nhƣ là một trừu
tƣợng ở mức cao
![Page 222: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/222.jpg)
206 Giáo trình cơ sở dữ liệu
Bản số max của hoá đơn cho phép ta phân rã thành hai mối kết hợp hai
ngôi sau
3. Hướng dẫn lập mô hình
Nhƣ đã đề cập, chúng ta sẽ tập trung vào bƣớc 2. Mục này sẽ chi tiết các
hoạt động của bƣớc 2:
1. Xây dựng các mô hình cục bộ mức quan niệm từ góc nhìn của
ngƣời dùng:
a. Tìm thực thể;
b. Tìm mối kết hợp;
c. Xác định thuộc tính cho mỗi thực thể và mỗi mối kết hợp;
d. Biến đổi mô hình đến cấp trừu tƣợng chấp nhận đƣợc;
e. Phát biểu các ràng buộc dữ liệu.
2. Vẽ mô hình toàn cục mức quan niệm.
a. Trộn các mô hình cục bộ thành mô hình toàn cục;
b. Loại bỏ các kết hợp dẫn xuất;
c. Tổ hợp các ràng buộc dữ liệu cục bộ;
d. Phát biểu các ràng buộc dữ liệu mang tính toàn cục.
Chúng ta sẽ minh hoạ các hoạt động trên qua việc thiết kế cơ sở dữ liệu
mức logic cho công ty Mỹ Gia.
3.1. Xây dựng mô hình cục bộ mức quan niệm
Trong mục này chúng tôi sử dụng các ký hiệu của Power Designer.
Từ góc nhìn của Chuyên Viên
Tìm thực thể và mối kết hợp
a. Tạo và bảo tồn thông tin xem nhà do mình thực hiện
b. Báo cáo về những nhận xét của khách sau khi xem nhà
![Page 223: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/223.jpg)
Chƣơng 7: Mô hình thực thể kết hợp 207
c. Tạo và bảo tồn thông tin kiểm tra do mình thực hiện
d. Tạo và bảo tồn thông tin quảng cáo do mình thực hiện
e. Xem danh sách về những nhà cho thuê do mình quản
f. Xem danh sách về những khách hàng do mình quản
g. Tìm những nhà phù hợp với nhu cầu tiện nghi và khả năng tài
chính của khách hàng.
![Page 224: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/224.jpg)
208 Giáo trình cơ sở dữ liệu
Xác định thuộc tính cho mỗi thực thể và mỗi mối kết hợp
Trƣớc hết, chúng ta vẽ biểu đồ chƣa có các thuộc tính. Sau đó, qua các tài
liệu đặc tả chúng ta sẽ bổ sung thuộc tính cho biểu đồ và chúng ta cũng chỉ
ra các ràng buộc.
Trích các thông tin liên quan từ các tài liệu đặc tả:
Mỗi nhân viên đều có mã nhân viên, họ, tên, địa chỉ, số điện thoại, giới
tính, ngày sinh, số của sổ bảo hiểm, chức vụ, lương và ngày vào làm. Mỗi
nhà do một chuyên viên theo dõi và mỗi chuyên viên theo dõi không quá
20 nhà. Mỗi nhà đều có mã nhà cho thuê, địa chỉ đầy đủ (số nhà, đƣờng,
quận / huyện, tỉnh / thành phố và mã bƣu điện), loại số phòng và giá thuê.
Thông tin về khách hàng gồm mã khách hàng, họ, tên, địa chỉ, số điện
thoại, nhu cầu về tiện nghi và khả năng trả tiền thuê lớn nhất. Thƣờng thì
khách hàng muốn đến xem một hoặc nhiều nhà trƣớc khi thuê. Công ty thu
xếp việc này và lƣu lại những thông tin gồm ngày xem, nhận xét của
khách. Trong trƣờng hợp nhà khó cho thuê, công ty thực hiện quảng cáo
trên báo và lƣu lại ngày quảng cáo cùng chi phí quảng cáo. Chỉ những tờ
báo thích hợp đƣợc chọn, công ty lƣu thông tin của những tờ báo này gồm
tên tờ báo, địa chỉ tờ báo, số điện thoại số, số fax và họ tên người tiếp xúc.
Công ty có trách nhiệm kiểm tra nhà định kỳ, kể cả những nhà đang đƣợc
thuê, ít nhất 6 tháng một lần để bảo đảm nó luôn ở tình trạng tốt. Chi tiết
mỗi lần kiểm tra cũng đƣợc lƣu lại gồm ngày kiểm tra, mã chuyên viên
kiểm tra và nhận xét về tình trạng nhà.
![Page 225: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/225.jpg)
Chƣơng 7: Mô hình thực thể kết hợp 209
Mô hình dữ liệu mức quan niệm:
Các ràng buộc:
Ngoài các ràng buộc liên quan đến khoá chính, đến bản số của mối kết hợp,
chúng ta không ràng buộc nào.
Từ góc nhìn của Giám sát
Tìm thực thể và mối kết hợp
a. Tạo và bảo tồn thông tin về nhà và chủ nhà
b. Tạo và bảo tồn thông tin về khách hàng
c. Xem danh sách các quảng cáo theo nhà
d. Xem danh sách các quảng cáo theo báo
e. Xem nội dung các kiểm tra định kỳ
f. Xem danh sách nhà đang thuê theo từng chuyên viên
![Page 226: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/226.jpg)
210 Giáo trình cơ sở dữ liệu
Xác định thuộc tính và vẽ mô hình
Ở đây không có thêm các ràng buộc dữ liệu quan trọng nào. Theo đặc tả
chúng ta có thể chuyên biệt hoá thực thể chủ nhà thành doanh nghiệp và
không phải doanh nghiệp.
Giả sử hệ thống chỉ gồm 2 mô hình cục bộ trên, chúng ta sẽ tiến hành vẽ
mô hình toàn cục mức quan niệm theo các bƣớc:
a. Trộn các mô hình cục bộ thành mô hình toàn cục (bao gồm
loại bỏ các kết hợp dẫn xuất);
b. Tổ hợp các ràng buộc dữ liệu cục bộ;
c. Phát biểu các ràng buộc dữ liệu mang tính toàn cục.
![Page 227: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/227.jpg)
Chƣơng 7: Mô hình thực thể kết hợp 211
3.2. Xây dựng mô hình (toàn cục) mức quan niệm
Không có các ràng buộc từ các mô hình cục bộ, nhƣng trong mô hình toàn
cục này xuất hiện một ràng buộc toàn cục: Với một khách hàng: nhân viên
tiếp xúc lần đầu và nhân viên dẫn đi xem có thể khác nhau.
![Page 228: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/228.jpg)
212 Giáo trình cơ sở dữ liệu
TÓM TẮT
Ngƣời quản trị cơ sở dữ liệu rất cần mô hình dữ liệu mức quan
niệm;
Mô hình thực thể kết hợp (ER) là một loại ngôn ngữ đặc tả hình
thức. Nó đƣa các biểu đồ trực quan, dễ hiểu gồm các thực thể và
các kết hợp giữa các thực thể;
Dùng các biểu đồ ER để xây dựng mô hình dữ liệu mức quan niệm
là một cách làm hiệu quả;
Từ biểu đồ ER dễ dàng đƣa ra lƣợc đồ cơ sở dữ liệu;
Mô hình dữ liệu mức quan niệm có thể có nhiều mức trừu tƣợng;
Một mô hình với mức trừu tƣợng thấp cho phép thấy rõ nhiều ràng
buộc cài đặt các quy tắc quản lý nhƣng cũng dễ đánh mất nhiều quy
tắc quản lý khác;
Một mô hình với mức trừu tƣợng cao tuy không có nhiều các ràng
buộc đƣợc cài đặt nhƣng các quy tắc quản lý vẫn hiện hữu;
Có nhiều trƣờng hợp lƣợc đồ cơ sở dữ liệu, đƣợc phát sinh từ mô
hình dữ liệu mức quan niệm, đã đạt dạng chuẩn cao;
Nhiều trƣờng hợp khác, sau khi đƣa ra lƣợc đồ cơ sở dữ liệu, các
quy tắc quản lý có thể đƣợc phát biểu thành các phụ thuộc hàm cho
phép thực hiện quá trình chuẩn hoá;
Một số quy tắc quản lý tuy có thể đƣợc phát biểu thành các phụ
thuộc hàm nhƣng vì nhiều lý do khác nhau ngƣời thiết kế có thể bỏ
qua. Khi ấy lƣợc đồ cơ sở dữ liệu sẽ tổng quát hơn, còn các quy tắc
này sẽ đƣợc cài đặt bằng các ràng buộc;
Lạm dụng quá trình chuẩn hoá, một số quy tắc quản lý cố tình đƣợc
phát biểu thành các phụ thuộc hàm dù không đƣợc tự nhiên, sẽ cho
một lƣợc đồ cơ sở dữ liệu gần với thực tế nhƣng kém tổng quát
hơn;
Từ góc độ ngƣời dùng cuối chúng ta thấy rõ các mô hình dữ liệu
mức ngoài, làm cơ sở để xây dựng và kiểm tra mô hình dữ liệu mức
quan niệm.
![Page 229: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/229.jpg)
Chƣơng 7: Mô hình thực thể kết hợp 213
BÀI TẬP
1. Giám đốc khách sạn A quan tâm đến năng suất sử dụng phòng cũng
nhƣ tỉ lệ đến nhận phòng của những khách hàng đăng ký giữ chỗ
trước.
Biết năng suất sử dụng phòng (trong một tháng) bằng tỉ số giữa
tổng số ngày có khách và tích của tổng số phòng nhân cho 30; còn
tỉ lệ nhận phòng bằng tỉ số giữa số lƣợng khách đăng ký và số
lƣợng khách đến nhận phòng sau khi đăng ký. Hãy lập mô hình
thực thể kết hợp sử dụng các thực thể Khach (Khách), Phong
(Phòng), PhieuDK (Phiếu đăng ký), PhieuNP (Phiếu nhận phòng).
2. Công ty X chuyên sản xuất sản phẩm A. Có nhiều nguyên vật liệu
khác nhau đƣợc sử dụng trong quá trình sản xuất. Chất lƣợng sản
phẩm phụ thuộc lược đồ sản xuất nào đƣợc xử dụng. Với nguyên
vật liệu tham gia trong lƣợc đồ, số lƣợng dùng để tạo ra một sản
phẩm A theo lƣợc đồ này đƣợc gọi là đơn lượng. Để tính giá thành
sản phẩm, công ty phải tổ chức sản xuất theo lệnh sản xuất. Mỗi
lệnh sản xuất dùng một lƣợc đồ sản xuất duy nhất. Nguyên vật liệu
đƣợc xuất theo lệnh sản xuất (có thể xuất nhiều lần) và sau khi hoàn
tất lệnh sản xuất, nguyên vật liệu còn dƣ phải đƣợc nhập lại.
Lập mô hình thực thể kết hợp với
a. Danh sách thực thể: NgLieu (Nguyên Vật Liệu), LuocDoSX
(Lƣợc Đồ Sản Xuất), LenhSX (Lệnh Sản Xuất), PhNhap
(Phiếu Nhập), PhXuat (Phiếu Xuất)
b. Danh sách thuộc tính: MaVL (Mã Nguyên Vật Liệu), TenVL
(Tên Nguyên Vật Liệu), DonGia (Đơn Giá), MaLDSX (Mã
Lƣợc Đồ Sản Xuất), CLuong (Chất Lƣợng Sản Phẩm),
DonLuong (Đơn Lƣợng), LSXSo (Lệnh Sản Xuất Số),
NgaySX (Ngày Sản Xuất), PNSo (Phiếu Nhập Số), NgayN
(Ngày Nhập), LuongN (Lƣợng Nhập), PXSo (Phiếu Xuất
Số), NgayX (Ngày Xuất), LuongX (Lƣợng Xuất).
3. Khoa X tổ chức đào tạo một số chuyên ngành; chƣơng trình đào tạo
của mỗi ngành thay đổi theo quá trình phát triển (ví dụ: trong lúc
sinh viên K31 còn học theo chƣơng trình cũ, thì sinh viên K32 đã
đƣợc học theo chƣơng trình mới). Chƣơng trình đào tạo gồm một
danh sách các môn đƣợc tổ chức theo từng học kỳ sao cho các môn
tiên quyết phải đƣợc học trƣớc. Một môn có thể có nhiều môn tiên
![Page 230: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/230.jpg)
214 Giáo trình cơ sở dữ liệu
quyết và ngƣợc lại cũng có thể là môn tiên quyết của nhiều môn
khác. Mỗi môn học do một bộ môn chịu trách nhiệm quản lý.
Hãy lập mô hình thực thể kết hợp với các thực thể:
C_Nganh (Chuyên Ngành),
Mon (Môn),
CTD_Tao (Chƣơng Trình Đào Tạo)
và các thuộc tính: MaNganh (Mã Ngành), TenNganh (Tên Ngành),
MaMon (Mã Môn), TenMon (Tên Môn), MaBM (Mã Bộ Môn),
MaCTDT (Mã Chƣơng Trình Đào Tạo), KhoaAD (Khoá áp dụng).
4. Để quản lý việc tuyển sinh hàng năm, trƣờng đại học Tri Khánh
muốn xây dựng một cơ sở dữ liệu thỏa các yêu cầu sau:
Lƣu thông tin tuyển sinh gồm Ngành học, Chỉ tiêu;
Lƣu thông tin thí sinh gồm Họ Tên, Ngày sinh, Nơi sinh, Địa
chỉ, Khu vực, Đối tượng;
Lƣu thông tin đăng ký và kết quả thi gồm Ngành học, kết quả
thi của 3 môn;
Lƣu điểm chuẩn của mỗi ngành sau khi có kết quả chấm thi.
Thí sinh dự thi đƣợc cấp một số báo danh duy nhất, dự thi vào một
ngành duy nhất. Mỗi ngành thuộc về một Khoa và có mã ngành duy
nhất. Thí sinh thuộc khu vực nào sẽ đƣợc cộng thêm điểm cộng của
khu vực ấy vào tổng điểm thi. Thí sinh đƣợc xét đậu nếu tổng điểm
(cả điểm cộng) không bé hơn điểm chuẩn và không có môn nào bị
điểm không.
Chỉ với 2 thực thể Thí sinh và Ngành học, hãy:
a. Vẽ mô hình thực thể kết hợp, và đƣa ra lƣợc đồ cơ sở dữ
liệu quan hệ.
b. Với lƣợc đồ cơ sở dữ liệu ở trên:
i. Viết câu truy vấn liệt kê danh sách thí sinh đậu gồm
các thông tin: Số báo danh, Họ tên, Ngày sinh, Nơi
sinh, Địa chỉ, Ngành học, Điểm chuẩn, Tổng điểm
thi, Tổng điểm.
ii. Chuẩn hoá để đạt tối thiểu chuẩn 3
![Page 231: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/231.jpg)
Chƣơng 7: Mô hình thực thể kết hợp 215
5. Xét hệ thống thông tin của một cửa hàng cho thuê băng video, giả
sử, ta có mô hình thực thể kết hợp đƣợc cho nhƣ sau:
Ngƣời quản lý cửa hàng muốn biết những thông tin:
Tổng số cuốn băng có phim do các công ty ở TpHCM phát
hành.
Số lƣợt khách thuê phim do diễn viên xyz đóng vai chính trong
tháng 12/2007.
Địa chỉ của những khách hàng hiện còn thuê nhiều hơn 10 cuốn
băng quá 10 ngày kể từ ngày mƣợn.
Hãy:
Liệt kê các thuộc tính cần thiết,
Lập lƣợc đồ cơ sở dữ liệu và
Viết các câu truy vấn đáp ứng nhu cầu thông tin cho ngƣời quản
lý cửa hàng
6. Tổng công ty Đƣờng Sắt muốn xây dựng một trang web cho phép
hành khách đăng ký mua vé. Theo đó, hành khách phải cung cấp
các dữ liệu gồm họ tên, số CMND, số điện thoại liên hệ, nơi giao
vé, khoảng thời gian giao vé, loại vé, ga đi, ga đến, ngày đi, tàu.
Trang web phải cung cấp cho họ các dữ liệu liên quan gồm giá vé,
giờ đi, giờ đến. Dƣới góc độ hành khách ta thấy có các thực thể Vé,
Lộ trình, Tàu và Loại vé. Hãy lập mô hình ER biểu diễn quan niệm
dữ liệu dƣới góc độ hành khách.
![Page 232: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/232.jpg)
216 Giáo trình cơ sở dữ liệu
7. Một khách sạn muốn xây dựng một cơ sở dữ liệu đáp ứng công việc
nhận phòng, cung cấp dịch vụ và thanh toán, thoả các yêu cầu lƣu
trữ và các quy tắc quản lý sau:
Thuộc tính Viết tắt Thuộc tính Viết tắt
Mã loại phòng
Tiện nghi loại phòng
Giá thuê
Phòng số
Tình trạng phòng
Mã dịch vụ
Tên dịch vụ
Phí sử dụng dịch vụ
L
O
G
P
R
V
E
I
Phiếu nhận phòng số
Ngày nhận phòng
Ngày trả phòng
Họ tên khách hàng
Số CMND khách hàng
Số suất ăn
Số lần dùng dịch vụ
S
N
T
H
C
A
D
Tình trạng phòng: hoặc đang tạm ngƣng hoặc đang kinh doanh;
Các suất ăn có giá nhƣ nhau là 20000 đồng/ suất. Tiền thanh
toán của mỗi phiếu khi trả phòng gồm tiền thuê (= số ngày ở
nhân với giá thuê), tiền ăn (= số bữa ăn nhân với giá một suất
ăn) và tiền dịch vụ (= tổng của số lần dùng dịch vụ nhân với phí
sử dụng dịch vụ).
Với các thực thể Phòng, Dịch vụ và Phiếu nhận phòng, hãy:
a. Lập mô hình ER và phát sinh lƣợc đồ cơ sở dữ liệu
b. Với lƣợc đồ cơ sở dữ liệu này:
i. Chỉ ra các lƣợc đồ quan hệ vi phạm chuẩn 3
ii. Viết câu truy vấn tính tiền phải thanh toán của phiếu
nhận phòng số 123.
iii. Biết phòng có ngày trả = null là phòng đang đƣợc
thuê. Viết câu truy vấn liệt kê các phòng đang trống
(là những phòng đang kinh doanh và không đang
được thuê), thông tin gồm (PLOG)
8. Lập mô hình cơ sở dữ liệu mức quan niệm cho công ty Mỹ Gia
(chƣơng 1) theo đúng các bƣớc đƣợc học trong chƣơng này.
9. Lập mô hình cơ sở dữ liệu mức quan niệm cho trƣờng đại học Tri
Khánh (chƣơng 1) theo đúng các bƣớc đƣợc học trong chƣơng này.
![Page 233: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/233.jpg)
Chƣơng 7: Mô hình thực thể kết hợp 217
10. Trong ví dụ 4 chúng ta đã đƣa ra 2 mô hình dữ liệu mức quan niệm.
Chọn một mô hình gọi là M1, mô hình còn lại gọi là M2.
a. Với mỗi mô hình phát sinh các lƣợc đồ quan hệ mức logic;
b. Thêm các yếu tố vật lý cho mô hình M1, cài đặt nó;
c. Với cơ sở dữ liệu ở câu b, định nghĩa các khung nhìn (view)
cho mỗi lƣợc đồ logic của M2
![Page 234: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/234.jpg)
![Page 235: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/235.jpg)
TÀI LIỆU THAM KHẢO
[1] Thomas Connolly, Carolyn Begg, Anne Strachan. Database
Systems: A Practical Approach to Design, Implementation and
Management. Addison Wesley, 1996.
[2] Raghu Ramakrichnan, Johnannes Gehrke. Database Management
Systems. Mc Graw Hill, 2000.
[3] Peter Rob, Carlos Coronel. Database Systems. Thomson
LearningTM, 2000.
[4] R.A.Mata-Toledo, P.K.Cushman. Fundamentals of Relational
Databases. Schaum‟s outline, 2000.
[5] Nguyễn Bá Tƣờng. Cơ sở dữ liệu : lý thuyết và thực hành. Nhà
xuất bản Khoa học và Kỹ thuật, 2001.
[6] David Maier. The Theory of Relational Databases. Computer
Science Press, 1983.
[7] Jeffrey D.Ullman. Principle of Database and Knowledge Base
Systems. Computer Science Press, 1988.
![Page 236: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/236.jpg)
![Page 237: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/237.jpg)
Phụ lục XẾP LỊCH THỰC HÀNH
1. Đặc tả
Phòng Quản lý giảng đường – Thời khóa biểu của một trƣờng Đại học có
một bộ phận phụ trách việc xếp lịch thực hành môn Tin học đại cƣơng cho
các lớp năm thứ 1.
Phòng muốn xây dựng một phần mềm nhỏ thực hiện công việc này. Nhân
viên thiết kế cơ sở dữ liệu của phòng đƣợc yêu cầu xây dựng mô hình cơ sở
dữ liệu quan hệ từ những quy tắc quản lý do nhân viên quản lý dữ liệu đề
xuất nhƣ sau.
Quy tắc
1. Các lớp đã đƣợc tổ chức thành khối, mỗi khối có từ 3 đến 4 lớp;
2. Phòng máy đƣợc tổ chức gọn vừa đủ cho một lớp, tuy nhiên vẫn có
tình huống sĩ số của một lớp lớn hơn số máy của phòng. Không
đƣợc xếp một lớp vào một phòng mà số máy của phòng này ít hơn
sĩ số của lớp;
3. Các phòng máy của trƣờng đƣợc đặt ở nhiều địa điểm;
4. Lịch sử dụng phòng máy đƣợc chia theo ca: sáng 2 ca, chiều 2 ca,
tối 2 ca, kể cả thứ bảy, chủ nhật. Nhƣ vậy trong tuần có cả thảy 42
ca;
5. Mỗi lớp đƣợc thực tập mỗi tuần một buổi ở một phòng máy nhất
định;
6. Xếp các lớp cùng khối vào cùng ca và cùng địa điểm.
![Page 238: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/238.jpg)
222 Giáo trình cơ sở dữ liệu
Các thuộc tính
Thuộc tính Viết tắt
Khối lớp K
Lớp L
Sĩ số lớp S
Ca thực hành C
Phòng máy P
Địa điểm D
Số máy M
2. Thiết kế
Áp dụng lý thuyết thiết kế, nhân viên thiết kế xét lƣợc đồ quan hệ R =
<LKPSDCM, F> và thực hiện quá trình thiết kế qua các bƣớc sau đây.
Quyết định tập phụ thuộc hàm
Từ các quy tắc quản lý, nhân viên thiết kế quyết định tập phụ thuộc hàm
F = { L KPS,
K DC,
P DM,
CP L }
Xác định dạng chuẩn
1. Tìm tập khóa
L+ = LKPSDCM
(Khóa)
K+ = KDC P
+ = PDM C
+ = C
KP+ = KPDCM PC
+ = PCLKSDM
(Khóa)
2. Tìm các vi phạm (chỉ trong F)
Phụ thuộc hàm Thuộc tính không khóa Thuộc tính khóa Vi phạm
K DC D C chuẩn 3
P D D chuẩn 2
Vậy R ở dạng chuẩn 1
![Page 239: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/239.jpg)
223
Tìm phân rã bằng thuật toán tổng hợp
Thực hiện thuật toán
1. F đã tối tiểu;
2. Phát sinh lƣợc đồ cơ sở dữ liệu {(LKPS), (KDC), (PDM),
(CPL)};
3. Vì hai khóa thiết kế L và CP tƣơng đƣơng nhau, gộp 2 lƣợc đồ
con (LKPS) và (CPL), đƣợc lƣợc đồ con (LKSPC) đạt chuẩn 3
nhƣng không đạt chuẩn BC;
4. Vì có lƣợc đồ con chứa khóa của lƣợc đồ gốc, không bổ sung.
Lƣợc đồ kết quả {(LKSPC), (KDC), (PDM)} đạt chuẩn 3 với cơ sở dữ liệu
tƣơng ứng {r1(LKSPC), r2(KDC), r3(PDM)}
Kiểm tra
Kiểm tra lại các quy tắc chúng ta thấy còn có các vấn đề ở các quy tắc 2, 5
và 6.
1. Theo quy tắc 2, phòng thực hành phải đáp ứng đủ số máy. Với điều
này, chúng ta có ràng buộc toàn vẹn trên quan hệ r = r1 ⋈ r3 là r.S
r.M. Dễ dàng viết đƣợc câu truy vấn tìm ra các vi phạm ràng buộc
này, nếu có.
2. Theo quy tắc 5 ta có một địa điểm là địa điểm nơi lớp thực tập
(đƣợc thể hiện trong quan hệ r3), còn theo quy tắc 6, lớp còn có một
địa điểm khác nữa là địa điểm thực tập của khối của lớp này (đƣợc
thể hiện trong hai quan hệ r1 và r2). Hai địa điểm này phải là một.
Một lần nữa chúng ta sẽ mô tả điều này bởi một ràng buộc toàn vẹn
và dễ dàng cài đặt một thủ tục kiểm tra (có thể viết câu truy vấn tìm
những lớp mà địa điểm thực tập của nó khác với địa điểm thực tập
của khối cũng của lớp này)
Ngoài ra phụ thuộc hàm K C có trong lƣợc đồ con (LKSPC) làm nó chỉ
đạt chuẩn 3, trong lúc phụ thuộc hàm này cũng có trong lƣợc đồ con
(KDC). Có thể nhận ra thể hiện của chúng trong cơ sở dữ liệu này là đồng
nhất.
3. Bằng cách cài đặt ràng buộc tồn tại r1[KC] r2[KC] có thể xem
lƣợc đồ con (LKSPC) không có phụ thuộc hàm K C và lƣợc đồ
cơ sở dữ liệu của chúng ta bảo toàn thông tin đạt chuẩn BC và đặc
trƣng đầy đủ F. Ràng buộc tồn tại này có thể đƣợc cài đặt thành
![Page 240: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/240.jpg)
224 Giáo trình cơ sở dữ liệu
một ràng buộc tham chiếu (khóa ngoại) với KC là khóa79
của lƣợc
đồ con (KDC)
Nhƣ vậy nhà thiết kế đã đề xuất một mô hình cơ sở dữ liệu quan hệ gồm
một lƣợc đồ cơ sở dữ liệu bảo toàn thông tin, đạt chuẩn BC và đặc trưng
đầy đủ F cùng với 3 ràng buộc toàn vẹn ở trên.
Ngoài ra anh ta cũng thiết kế 3 khung nhìn cho ngƣời sử dụng
1. Làm việc với dữ liệu của phòng máy là khung nhìn v1(PDM)
2. Làm việc với dữ liệu của lớp là khung nhìn v2(LKS)
3. Làm việc với dữ liệu của lịch thực hành là khung nhìn v3(LPC)
3. Cài đặt và thử nghiệm
Quan hệ lớp (bao gồm cả lịch thực hành của lớp) r1
Thỏa ràng buộc khóa L và PC
L K S P C
l1 k1 5 p1 c2
l2 k1 7 p2 c2
l3 k2 6 p3 c1
l4 k2 7 p2 c1
l5 k3 5 p4 c2
l6 k3 6 p5 c2
Quan hệ phòng máy r3
Thỏa ràng buộc khóa P
P D M
p1 d1 6
p2 d1 8
p3 d1 6
p4 d2 6
p5 d2 6
79 thật ra là siêu khóa, vì hệ quản trị không phân biệt giữa khóa và siêu khóa
![Page 241: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/241.jpg)
225
Quan hệ lịch (của khối) r2
Thỏa ràng buộc khóa K, và ràng buộc tồn tại (đƣợc cài đặt bằng ràng buộc
tham chiếu để kiểm tra tự động bởi hệ quản trị)
K D C
k1 d1 c2
k2 d1 c1
k3 d2 c2
Tìm các vi phạm
1. Không xếp phòng máy cho lớp mà số máy (M) bé hơn sĩ số (S). Với
câu truy vấn SELECT r1.L FROM r3 INNER JOIN r1 ON r3.P =
r1.P WHERE M < S, chúng ta không tìm thấy vi phạm
2. Địa điểm của khối và địa điểm của lớp thuộc khối này là một. Với
câu truy vấn SELECT r1.L, r3.D FROM r3 INNER JOIN (r2
INNER JOIN r1 ON (r2.C = r1.C) AND (r2.K = r1.K)) ON r3.P =
r1.P WHERE r3.D<>[r2].[D], cũng không tìm thấy vi phạm
4. Làm việc với cơ sở dữ liệu
Trong 3 khung nhìn đƣợc thiết kế, hai khung nhìn v1 và v2 rất dễ làm việc.
Khung nhìn v1 (phòng máy)
P D M
p1 d1 6
p2 d1 8
p3 d1 6
p4 d2 6
p5 d2 6
Khung nhìn v2 (lớp)
L K S
l1 k1 5
l2 k1 7
l3 k2 6
l4 k2 7
l5 k3 5
l6 k3 6
![Page 242: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/242.jpg)
226 Giáo trình cơ sở dữ liệu
Tuy nhiên khung nhìn v3 (lịch thực hành) rất khó cho ngƣời sử dụng có thể
thực hiện các thao tác bảo đảm sự nhất quán dữ liệu:
L P C
l1 ? ?
l2 ? ?
l3 ? ?
l4 ? ?
l5 ? ?
l6 ? ?
5. Hỗ trợ lập trình
Rõ ràng ngƣời sử dụng rất cần sự hỗ trợ từ chƣơng trình. Họ muốn biết một
lớp nào đó nên xếp vào phòng nào để dữ liệu đƣợc nhất quán? Trƣớc hết
họ muốn xếp ca và địa điểm cho khối, dùng khung nhìn v31(KDC). Sau đó
là xếp phòng cho lớp, dùng khung nhìn v32(LP), hoặc v32(LKDCPSM), với
nhiều thông tin hơn.
Để hỗ trợ cho ngƣời sử dụng thực hiện công việc xếp khối, chƣơng trình
phải xây dựng quan hệ tƣơng thích giữa khối với ca và địa điểm. Điều này
đƣợc thực hiện thông qua sự tƣơng thích giữa lớp với khối và giữa lớp với
ca và địa điểm.
Xét ví dụ sau:
Ví dụ 0.1
Với dữ liệu thử nghiệm ở trên, sự tƣơng tích giữa lớp với khối là rõ
ràng, chúng ta xét sự tƣơng thích giữa lớp với ca (giả sử chỉ có 2
ca) và địa điểm nhƣ sau
D C L
d1 c1 l1
d1 c1 l2
d1 c1 l3
d1 c1 l4
d1 c2 l1
d1 c2 l2
d1 c2 l3
d1 c2 l4
![Page 243: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/243.jpg)
227
D C L
d2 c1 l5
d2 c1 l6
d2 c2 l5
d2 c2 l6
Gọi quan hệ này là r. Xét một khối chẳng hạn k1 có hai lớp l1 và l2,
đặt s(L) = { l1, l2}. Rõ ràng quan hệ tƣơng thích là kết quả của phép
chia r ÷ s dễ dàng đƣợc cài đặt bằng câu truy vấn.
Trở lại công việc lập trình, kết quả truy vấn, đƣợc gợi ý từ ví dụ trên, cho
ta quan hệ tƣơng thích giữa khối với ca và địa điểm.
D C K
d1 c1 k1
d1 c1 k2
d1 c2 k1
d1 c2 k2
d2 c1 k3
d2 c2 k3
Rõ ràng có thể xếp k3 vào d2 ca nào cũng đƣợc, còn k1 và k2 đƣợc xếp
vào d1 với ca khác nhau. Dữ liệu đang có là một kết quả hợp lệ
K D C
k1 d1 c2
k2 d1 c1
k3 d2 c2
Tiếp theo là xếp lớp vào phòng. Bằng truy vấn có thể hỗ trợ công việc này
từ sự tƣơng thích giữa lớp và phòng (sau khi xếp khối) đƣợc đƣa ra sau đây
(trong đó dữ liệu đƣợc nhóm theo địa điểm vì có thể xếp đồng thời ở các
địa điểm khác nhau)
D L C P
d1 l1 c2 p1
d1 l1 c2 p2
d1 l1 c2 p3
d1 l2 c2 p2
d1 l3 c1 p1
![Page 244: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/244.jpg)
228 Giáo trình cơ sở dữ liệu
D L C P
d1 l3 c1 p2
d1 l3 c1 p3
d1 l4 c1 p2
d2 l5 c2 p4
d2 l5 c2 p5
d2 l6 c2 p4
d2 l6 c2 p5
Ở địa điểm d1, xếp l2 vào p2 và l4 vào p2; địa điểm d2 xếp l5 vào p4.
Chƣơng trình tiếp tục hỗ trợ
D L C P
d1 l1 c2 p1
d1 l1 c2 p3
d1 l3 c1 p1
d1 l3 c1 p3
d2 l6 c2 p5
Xếp l1 vào p1 và l6 vào p5, hỗ trợ của chƣơng trình bây giờ là
D L C P
d1 l3 c1 p1
d1 l3 c1 p3
Cuối cùng xếp l3 vào p3. Cuối cùng xếp l6 vào p5, hoàn tất công việc sắp
xếp.
L K S P C
l1 k1 5 p1 c2
l2 k1 7 p2 c2
l3 k2 6 p3 c1
l4 k2 7 p2 c1
l5 k3 5 p4 c2
l6 k3 6 p5 c2
![Page 245: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/245.jpg)
229
6. Thiết kế lại
Sau khi thống nhất với nhân viên quản trị dữ liệu rằng công việc xếp lịch
có thể đƣợc thực hiện nhờ sự hỗ trợ của chƣơng trình, thậm chí tự động
hoàn toàn, nhân viên thiết kế bắt đầu xem xét lại các quy tắc quản lý.
Trƣớc hết với việc hỗ trợ xếp khối, quy tắc 6 thỏa mãn một phần. Sau đó
với sự hỗ trợ xếp phòng, quy tắc 2 thỏa mãn. Ngoài ra với sự hỗ trợ từ
chƣơng trình, quy tắc 6 cũng đƣợc thỏa mãn hoàn toàn, đồng thời bảo đảm
luôn không có xung đột phòng máy (phụ thuộc hàm CP L). Do đó tập
phụ thuộc hàm lúc này chỉ còn
F = { L KPCS,
P DM }
Khi ấy kết quả thiết kế lại cho chúng một lƣợc đồ cơ sở dữ liệu đơn giản
hơn
{(LKSPC), (PDM)}
7. Mô hình thực thể kết hợp
Chúng ta đã biết mô hình này xuất hiện sau giai đoạn phân tích và do đó có
trƣớc khi áp dụng lý thuyết thiết kế.
Trong ngữ cảnh bài toán xếp lịch thực hành ở đây, ta có mô hình (con) sau:
Ta quan sát thấy trong mô hình có các quy tắc 1, 3. Bằng cách đặc tả bản
số của L tham gia vào mối kết hợp r bằng 1, mô hình xuất hiện thêm quy
tắc 5. Quy tắc 4 chỉ nhằm mô tả thuộc tính ca với ngụ ý xem thuộc tính ca
là khóa. Chúng ta còn các quy tắc 2 và 6. Đến đây nếu nhân viên quản lý
L
L
S
C
C
P
P
M
D
K
K
r
![Page 246: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/246.jpg)
230 Giáo trình cơ sở dữ liệu
dữ liệu đồng ý các quy tắc này đƣợc cài đặt bởi chƣơng trình ứng dụng thì
nhân viên thiết kế sẽ phát sinh lƣợc đồ cơ sở dữ liệu {(LKSPC), (PDM)}.
Ngƣợc lại, anh ta buộc phải khảo sát lƣợc đồ quan hệ R = <LKPSDCM,
F>.
8. Kết luận
Đây là một bài toán nhỏ nhƣng không tầm thƣờng. Quá trình thực hiện
thiết kế cho thấy vai trò của lý thuyết trong giải quyết bài toán thực tế. Để
có đƣợc kỹ năng giải quyết vấn đề nhƣ thế này sinh viên phải thực hành
nhiều mới mong có đƣợc kỹ năng phối hợp các kiến thức đã học trong quá
trình thực hiện giải quyết một vấn đề nào đó.
Ngoài ra, khi thiết kế chúng ta nên hƣớng đến một khả năng mở rộng rất có
thể sẽ xảy ra trong tƣơng lai, đôi khi rất gần. Ở đây chúng ta đang xếp lịch
thực hành cho duy nhất môn Tin học đại cƣơng và cho các lớp năm 1.
Trong tƣơng lai gần, khả năng các lớp năm sau cũng cần phòng máy để
thực hành các môn khác là rất lớn.
Những trao đổi tiếp theo đây xem nhƣ bài tập. Sau khi trao đổi với nhân
viên quản trị dữ liệu và đƣợc xác nhận các lớp cùng khối sẽ học cùng
chƣơng trình đào tạo. Do đó, các lớp cùng khối cũng có nhu cầu thực hành
giống nhau. Cũng theo nhân viên quản trị dữ liệu, trong ngữ cảnh một môn
học (có giờ thực hành), tất cả các quy tắc xếp phòng máy như đã đề cập
trước đây đều đúng. Hãy xây dựng cơ sở dữ liệu đáp ứng không những yêu
cầu thực hành môn tin học đại cƣơng cho các lớp năm 1 mà còn đáp ứng
yêu cầu thực hành tất cả các môn có giờ thực hành và cho tất cả các lớp.
Nhớ bổ sung thêm các ràng buộc khác, chẳng hạn sự tương thích giữa
phòng máy và môn.
![Page 247: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/247.jpg)
CHỈ MỤC
Bài toán
chuẩn hoá .......................... 208
phân rã bảo toàn phụ thuộc 205
phân rã bảo toàn thông tin .. 83
phân rã thỏa tính kết đầy đủ 84
thành viên.......................... 157
tìm bao đóng của X ............ 161
tìm các tập phụ thuộc hàm
thành phần ..................... 191
tìm phủ tối tiểu .................. 161
tìm tập khoá ...................... 179
xác định dạng chuẩn lƣợc đồ
cơ sở dữ liệu .................. 191
xác định dạng chuẩn lƣợc đồ
quan hệ .......................... 188
Chuẩn hoá
các tiêu chuẩn .................... 208
lƣợc đồ đầy đủ ................... 213
tiếp cận phân rã ................ 208
tiếp cận tổng hợp ............... 211
Cơ sở dữ liệu ............... 11, 58, 66
Đặc trƣng
bảo mật dữ liệu .................... 12
chia sẻ dữ liệu ..................... 12
độc lập dữ liệu ..................... 12
toàn vẹn dữ liệu ................... 12
Đại số quan hệ ......................... 70
adom ................................... 75
các chiến lƣợc giải bài toán . 90
các hàm tổng ....................... 89
các phép toán tập hợp con.... 75
kiểm tra ràng buộc toàn vẹn . 95
phép chia ............................. 87
phép chiếu ........................... 79
phép chọn ............................ 78
phép kết một phía ................ 87
phép kết ngoài ..................... 86
phép kết theta ...................... 85
phép kết tự nhiên ................. 80
phép kết tƣơng đƣơng .......... 85
tính toán trên cùng một cột .. 89
tính toán trên cùng một dòng 89
tối ƣu biểu thức ................... 81
Dạng chuẩn
1NF ................................... 183
2NF ................................... 185
3NF ................................... 186
4NF ................................... 216
BCNF ................................ 188
phụ thuộc đa trị ................. 215
Độc lập dữ liệu ........................ 28
khung nhìn ........................ 140
logic .................................... 28
vật lý ................................... 29
Hệ quản trị cơ sở dữ liệu11, 14,
30
bộ quản lý cơ sở dữ liệu....... 33
các thành phần ..................... 32
giao dịch / trợ giúp quyết định
........................................ 16
một / nhiều ngƣời dùng........ 15
tập trung / phân tán .............. 15
Khung nhìn ........................... 140
an toàn dữ liệu ................... 140
độc lập dữ liệu ................... 140
Kỹ thuật tableaux .................. 170
giải bài toán bao đóng........ 172
giải bài toán thành viên ...... 171
kiểm tra tính bảo toàn thông tin
...................................... 204
![Page 248: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/248.jpg)
232 Giáo trình cơ sở dữ liệu
tính bao đóng dựa trên F‟ ... 207
Lƣợc đồ cơ sở dữ liệu ........ 58, 65
Lƣợc đồ con ...... Xem khung nhìn
Lƣợc đồ quan hệ
bản số .................................. 57
cấp....................................... 57
tân từ ................................... 65
thoả tập khoá ....................... 55
thoả tập phụ thuộc hàm ...... 156
Mô hình cơ sở dữ liệu quan hệ . 49
khoá .................................... 54
khoá ẩn ................................ 55
khoá chỉ định ....................... 55
khoá chính ........................... 55
khoá tƣờng minh.................. 55
lƣợc đồ quan hệ ............. 53, 55
quan hệ ................................ 53
ràng buộc toàn vẹn .............. 60
siêu khoá ............................. 54
Mô hình dữ liệu ....................... 19
lƣợc đồ ................................ 19
lƣợc đồ logic ....................... 20
lƣợc đồ ngoài ....................... 28
lƣợc đồ quan niệm ............... 26
mô hình hƣớng đối tƣợng .... 24
mô hình logic ...................... 19
mô hình mạng ...................... 21
mô hình mức quan niệm .... 252
mô hình phân cấp ................ 20
mô hình quan hệ .................. 22
mô hình thực thể kết hợp ..... 23
mức ngoài............................ 27
mức quan niệm .................... 26
mức trong ............................ 27
theo hƣớng cài đặt ............... 19
theo hƣớng quan niệm ......... 19
Mô hình thực thể kết hợp ....... 226
bản số của mối kết hợp ...... 232
mối kết hợp ....................... 230
ngữ cảnh và phụ thuộc hàm 239
quy tắc phát sinh mô hình quan
hệ .................................. 247
thực thể ............................. 226
thực thể cha ....................... 235
thực thể con ....................... 235
thực thể kết hợp ................. 234
thực thể yếu ....................... 233
Môi trƣờng cơ sở dữ liệu ......... 15
Ngôn ngữ cơ sở dữ liệu
định nghĩa lƣợc đồ con ........ 28
ngôn ngữ SQL ................... 105
Ngôn ngữ con dữ liệu
cài đặt đại số quan hệ ......... 131
điều khiển truy cập ............ 137
định nghĩa dữ liệu .............. 109
kiểm tra ràng buộc toàn vẹn
...................................... 136
thao tác dữ liệu .................. 123
truy vấn con ....................... 129
truy vấn dữ liệu ................. 124
Phân rã
bảo toàn phụ thuộc ............ 205
bảo toàn thông tin .............. 203
đặc trƣng đầy đủ ................ 193
ép thoả tập phụ thuộc hàm . 194
phụ thuộc hàm chiếu .......... 191
phụ thuộc hàm đƣợc bao .... 194
phụ thuộc hàm đƣợc in ...... 193
Phụ thuộc hàm ....................... 155
hệ quả ................................ 157
hệ tiên đề Armstrong ......... 158
khoá .................................. 179
Phƣơng pháp luận
mô hình mức quan niệm .... 252
Ràng buộc toàn vẹn
bối cảnh ............................... 60
khác trống............................ 61
khai báo ............................. 119
khoá .................................... 60
khoá ngoại ........................... 64
![Page 249: Thiet ke co so du lieu](https://reader030.vdocuments.pub/reader030/viewer/2022020103/58ee4b471a28ab03108b45f1/html5/thumbnails/249.jpg)
233
kiểm tra bằng đại số quan hệ 95
kiểm tra dùng ngôn ngữ hỏi136
liên bộ ................................. 63
liên quan hệ, liên bộ ............ 65
liên quan hệ, liên thuộc tính . 64
liên thuộc tính ..................... 62
miền giá trị .......................... 62
tầm ảnh hƣởng..................... 60
tồn tại .................................. 63
Tập phụ thuộc hàm ................ 157
bao đóngcủa X ................... 161
phủ .................................... 159
phụ thuộc hàm bắc cầu ...... 186
phụ thuộc hàm không dƣ thừa
...................................... 184
phủ tối tiểu ........................ 160
tìm tập khoá ...................... 179
Thuật toán
kiểm tra phân rã bảo toàn
thông tin ........................ 204
phân rã .............................. 208
tìm bao đóng của X ............ 161
tìm các tập phụ thuộc hàm
thành phần ..................... 192
tìm phủ tối tiểu .................. 163
tìm tập khoá ...................... 181
tính bao đóng dƣới F‟ ........ 206
tổng hợp ............................ 212
xác định dạng chuẩn lƣợc đồ
quan hệ .......................... 189
Thuộc tính
khoá .................................. 182
không khoá ........................ 182
miền giá trị .......................... 54
nguyên tố .......................... 182
phụ thuộc bắc cầu .............. 186
phụ thuộc đầy đủ ............... 184
Tiếp cận
dựa trên cơ sở dữ liệu .......... 11
dựa trên tập tin ...................... 5
Từ điển dữ liệu ........................ 11
Vai trò
lập trình viên ứng dụng ........ 17
ngƣời dùng cuối .................. 17
quản trị cơ sở dữ liệu ........... 17
quản trị dữ liệu .................... 16
thiết kế logic ........................ 17
thiết kế vật lý ....................... 17
View .................. Xem khung nhìn