thiet ke co so du lieu

249
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

Upload: truong-dai-hoc-cong-nghiep-quang-ninh

Post on 12-Apr-2017

157 views

Category:

Design


11 download

TRANSCRIPT

Page 1: Thiet ke co so du lieu

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
Page 3: Thiet ke co so du lieu

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
Page 5: Thiet ke co so du lieu

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

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

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

[email protected].

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
Page 9: Thiet ke co so du lieu

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

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

𝑟 ⋊ 𝑠 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
Page 13: Thiet ke co so du lieu

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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
Page 157: Thiet ke co so du lieu

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

178 Giáo trình cơ sở dữ liệu

Page 195: Thiet ke co so du lieu

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

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

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

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

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

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

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

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

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

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

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

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ợ

Nợ

Page 207: Thiet ke co so du lieu

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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
Page 235: Thiet ke co so du lieu

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
Page 237: Thiet ke co so du lieu

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

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

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

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

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

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

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

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

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

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

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

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

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