GIÁO TRÌNH CƠ SỞ DỮ LIỆU - HUỲNH VĂN ĐỨC TRƯỜNG ĐH KINH TẾ TP.HCM

Page 1

OF

FI

CI AL

TRƢỜNG ĐẠI HỌC KINH TẾ TP.HCM KHOA TIN HỌC QUẢN LÝ

ƠN

GIÁO TRÌNH

DẠ

Y

KÈ M

QU Y

NH

CƠ SỞ DỮ LIỆU

Biên soạn: HUỲNH VĂN ĐỨC Bộ môn: HỆ THỐNG THÔNG TIN


Y

DẠ

KÈ M QU Y ƠN

NH

FI

OF

CI AL


CI AL

LỜI NÓI ĐẦU CHO LẦN XUẤT BẢN THỨ 2

FI

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.

OF

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.

QU Y

NH

ƠN

Đầ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ế.

DẠ

Y

KÈ M

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


Y

DẠ

KÈ M QU Y ƠN

NH

FI

OF

CI AL


CI AL

LỜI NÓI ĐẦU

FI

Đâ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.

ƠN

OF

Đâ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].

QU Y

NH

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.

KÈ M

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.

DẠ

Y

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ệ.


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

CI AL

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.

OF

FI

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.

NH

ƠN

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.

QU Y

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].

KÈ M

Để 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.

DẠ

Y

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


CI AL

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.

FI

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 hvduc0703@gmail.com.

DẠ

Y

KÈ M

QU Y

NH

ƠN

OF

Tp.Hồ Chí Minh, Ngày 06/06/2008 Ngƣời viết HUỲNH VĂN ĐỨC


Y

DẠ

KÈ M QU Y ƠN

NH

FI

OF

CI AL


CI AL

MỘT SỐ QUY ƢỚC KÝ HIỆU

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;

DẠ

Y

    

KÈ M

QU Y

NH

ƠN

OF

FI

 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 = XY;  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;


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

KÈ M

QU Y

NH

ƠN

OF

FI

CI AL

 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;

DẠ

Y

 𝜋𝑋 𝑟 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;


QU Y

NH

ƠN

OF

FI

CI AL

 𝑟 ⋊ 𝑠 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ã ρ;

KÈ M

 𝑇𝜌∗ 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;

DẠ

Y

∗  𝑇𝜌,𝑋 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.


Y

DẠ

KÈ M QU Y ƠN

NH

FI

OF

CI AL


CI AL

MỤC LỤC Chƣơng 1

TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU ................................... 1

Mở đầu ....................................................................................... 2

2.

Hệ thống dựa trên tập tin ............................................................. 4

2.1. 2.2.

Tiếp cận Hạn chế

3.

Tiếp cận cơ sở dữ liệu ................................................................. 8

3.1. 3.2. 3.3.

Tiếp cận Môi trường cơ sở dữ liệu Mô hình dữ liệu

4.

Tổng quan về hệ quản trị cơ sở dữ liệu ...................................... 23

4.1. 4.2.

Chức năng Thành phần

5.

Giới thiệu các case study ........................................................... 29

5.1. 5.2.

Công ty Mỹ Gia Trường đại học Tri Khánh

NH

ƠN

OF

FI

1.

8 11 14

24 25

29 33

MÔ HÌNH CƠ SỞ DỮ LIỆU QUAN HỆ ........................... 39

QU Y

Chƣơng 2

4 7

Mở đầu ..................................................................................... 40

2.

Khái niệm ................................................................................. 42

2.1. 2.2. 2.3.

Quan hệ và lược đồ quan hệ Khoá của lược đồ quan hệ Quan hệ toán học

3.

KÈ M

1.

42 43 45

Mô hình .................................................................................... 46

3.1. 3.2.

Cơ sở dữ liệu và lược đồ cơ sở dữ liệu Ràng buộc toàn vẹn

4.

Đại số quan hệ........................................................................... 55 Các ví dụ mở đầu Các phép toán tập hợp: hợp, giao, hiệu và bù Phép chọn Phép chiếu Phép kết Phép chia Tính toán

DẠ

Y

4.1. 4.2. 4.3. 4.4. 4.5. 4.6. 4.7.

46 47

55 59 61 62 63 69 70


Giáo trình cơ sở dữ liệu Dùng đại số quan hệ .................................................................. 71

5.1. 5.2. 5.3. 5.4.

Các chiến lược Tính tiền điện Công ty Mỹ Gia Kiểm tra ràng buộc toàn vẹn

CI AL

5.

71 72 74 75

Ngôn ngữ cơ sở dữ liệu SQL .............................................. 83

Chƣơng 3

Giới thiệu case study ................................................................. 84

2.

Ngôn ngữ con định nghĩa dữ liệu (DDL) ................................... 86

2.1. 2.2. 2.3. 2.4. 2.5. 2.6. 2.7. 2.8.

Kiểu dữ liệu Tạo cơ sở dữ liệu Đị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 Tạo bảng với các ràng buộc toàn vẹn Hủy bảng Định nghĩa lại bảng

3.

Ngôn ngữ con thao tác dữ liệu ................................................... 98

3.1. 3.2. 3.3. 3.4. 3.5.

Thêm xoá sửa Truy vấn dữ liệu Truy vấn con Cài đặt đại số quan hệ Dùng truy vấn kiểm tra ràng buộc toàn vẹn

4.

Ngôn ngữ con điều khiển truy cập (DCL) ................................ 109

4.1. 4.2. 4.3.

Cấp quyền cho người dùng khác Hủy quyền của người dùng khác View

QU Y

NH

ƠN

OF

FI

1.

87 89 89 90 94 96 97 97

98 99 103 104 108

110 111 112

PHỤ THUỘC HÀM ......................................................... 119

Chƣơng 4

Khái niệm ............................................................................... 122

1.1. 1.2. 1.3. 1.4.

Phụ thuộc hàm Tập phụ thuộc hàm Luật dẫn - Hệ tiên đề Armstrong Phủ của phụ thuộc hàm

2.

Tìm phủ tối tiểu ....................................................................... 127

2.1. 2.2.

Giải bài toán thành viên Giải bài toán tìm phủ tối tiểu

DẠ

Y

KÈ M

1.

122 123 124 125

127 128

3.

Khảo sát tình huống................................................................. 133

3.1. 3.2.

Tình huống Giải quyết

133 134


Kỹ thuật tableaux .................................................................... 134

4.1. 4.2.

Áp dụng giải bài toán thành viên Áp dụng giải bài toán bao đóng

Chƣơng 5

CI AL

4.

135 136

DẠNG CHUẨN ............................................................... 141

Bài toán tìm tất cả khoá ........................................................... 142

2.

Các dạng chuẩn ....................................................................... 145

2.1. 2.2. 2.3. 2.4. 2.5.

Dạng chuẩn 1 Dạng chuẩn 2 Dạng chuẩn 3 Dạng chuẩn BC (Boyce-Codd) Xác định dạng chuẩn

3.

Chiếu của tập phụ thuộc hàm................................................... 152

3.1. 3.2. 3.3. 3.4.

Khái niệm Tính chất đặc trưng đầy đủ F Tính chất ép thỏa F Vấn đề với dạng chuẩn BC

OF

ƠN

NH

Chƣơng 6

FI

1.

145 147 148 149 150

152 154 155 156

CHUẨN HOÁ LƢỢC ĐỒ QUAN HỆ ............................. 161

Kiểm tra các tiêu chuẩn ........................................................... 162

1.1. 1.2.

Kiểm tra tính bảo toàn thông tin Bảo toàn phụ thuộc

2.

Chuẩn hoá ............................................................................... 166

2.1. 2.2.

Tiếp cận phân rã Tiếp cận tổng hợp

3.

Dạng chuẩn 4 .......................................................................... 171

1.

167 169

Khái niệm ............................................................................... 179 Thực thể Thuộc tính Mối kết hợp Nhiều hơn về mối kết hợp Tìm phụ thuộc hàm từ mô hình E-R Các ký hiệu trong Power Designer Chuyển sang mô hình quan hệ

Y

1.1. 1.2. 1.3. 1.4. 1.5. 1.6. 1.7.

162 164

MÔ HÌNH THỰC THỂ KẾT HỢP .................................. 179

KÈ M

Chƣơng 7

QU Y

1.

180 181 183 185 188 192 197

Lập mô hình dữ liệu mức quan niệm ....................................... 201

2.1. 2.2. 2.3.

Khảo sát tình huống Tìm thực thể Tìm mối kết hợp

DẠ 2.

202 204 204


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

3.

Hƣớng dẫn lập mô hình ........................................................... 206

3.1. 3.2.

Xây dựng mô hình cục bộ mức quan niệm Xây dựng mô hình (toàn cục) mức quan niệm

CI AL

205

206 211

Phụ lục XẾP LỊCH THỰC HÀNH ........................................................ 221 Đặ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

DẠ

Y

KÈ M

QU Y

NH

ƠN

OF

FI

1.


Mục tiêu của chƣơng.

CI AL

OF

FI

Chƣơng 1 TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU

Trong chƣơng này chúng ta sẽ đƣợc giới thiệu một cách tổng quan về:

NH

 

KÈ M

 

QU Y

 

DẠ

Y

   

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.

ƠN


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

2

Mở đầu

CI AL

1.

ƠN

OF

FI

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.

QU Y

NH

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.

KÈ M

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

DẠ

Y

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.


Chƣơng 1: Tổng quan về cơ sở dữ liệu

3

QU Y

NH

ƠN

OF

FI

CI AL

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:

KÈ M

Ví dụ 1.2

DẠ

Y

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


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

4

CI AL

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.

2.

Hệ thống dựa trên tập tin2

ƠN

2.1. Tiếp cận

OF

FI

Đầ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.

QU Y

NH

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ó.

DẠ

Y

KÈ M

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.


Chƣơng 1: Tổng quan về cơ sở dữ liệu

5

CI AL

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ƣ sau 4:

OF

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

FI

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ó:

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ó:

ƠN

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à

NH

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)).

KÈ M

Họ tên Minh Lan Hùng Thảo

QU Y

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ệ số lương là quản lý 3 1 3 0 2 0 0 0

là mời giảng 0 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ó:

DẠ

Y

Chỉ mục giảng viên 1 1 2 3

4

Chỉ là gợi ý

chỉ mục môn 0 1 0 1

số lớp 1 1 1 2


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

6 1800, 15,

OF

FI

0,

1,

ƠN

0,

NH

450, 50, 5, 2, kỹ thuật bàn phím, Internet, 20, 4, Minh, 3, 1, 0, Lan, 3, 0, 0, 2, 0, 1, 1, 1, Hùng, 2, 0, 1, 0, 1, Thảo, 0, 0, 1, 1, 2

CI AL

Toàn bộ dữ liệu này đƣợc lƣu trong một tập tin với nội dung nhƣ sau 5

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).

Ví dụ 1.4

KÈ M

QU Y

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.

DẠ

Y

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.


Chƣơng 1: Tổng quan về cơ sở dữ liệu

7

OF

FI

CI AL

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).

2.2. Hạn chế Dữ liệu tách biệt và cô lập

NH

ƠN

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ề.

Trùng lắp

QU Y

Đ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.

KÈ M

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

DẠ

Y

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ủ.


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

8

CI AL

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

Tiếp cận cơ sở dữ liệu

NH

3.

ƠN

OF

FI

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.

QU Y

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ệu 6.

KÈ M

3.1. Tiếp cận

DẠ

Y

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.


Chƣơng 1: Tổng quan về cơ sở dữ liệu

9

CI AL

Đị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.

ƠN

OF

FI

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

QU Y

NH

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.

KÈ M

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.

DẠ

Y

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


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

10

CI AL

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ƣ

ƠN

OF

FI

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.

NH

Các thách thức

QU Y

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

Phức tạp; Chi phí cao; Không chuyên biệt; Dễ bị tấn công.

KÈ M

1. 2. 3. 4.

Các bài toán

Bảo đảm tính toàn vẹn; Bảo đảm tính bảo mật; Bảo đảm chia sẻ và điều khiển tƣơng tranh; Bảo đảm tính độc lập dữ liệu.

DẠ

Y

1. 2. 3. 4.


Chƣơng 1: Tổng quan về cơ sở dữ liệu

11

CI AL

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.

FI

Định nghĩa 1.2

OF

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.

ƠN

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.

QU Y

NH

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.

KÈ M

Phần cứng

DẠ

Y

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.


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

12

CI AL

Phần mềm

FI

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:

QU Y

NH

ƠN

OF

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

KÈ M

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

DẠ

Y

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.


Chƣơng 1: Tổng quan về cơ sở dữ liệu

13

CI AL

Chúng ta cần làm rõ các vai trò này.

OF

FI

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.

NH

ƠN

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.

QU Y

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.

KÈ M

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

DẠ

Y

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.


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

14

CI AL

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

FI

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

NH

3.3. Mô hình dữ liệu

ƠN

OF

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.

Định nghĩa 1.3

QU Y

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. 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ó:

KÈ M

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

9

Y

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.

DẠ

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.


Chƣơng 1: Tổng quan về cơ sở dữ liệu

15

CI AL

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.

FI

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.

Mô hình theo hƣớng cài đặt

NH

ƠN

OF

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.

Ví dụ 1.7

QU Y

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)

DẠ

Y

KÈ M

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:


phụ cấp quản lý 1800

thù lao mỗi tiết 50

hệ số lương 3

họ tên Hùng

hệ số lương 2

NH

ƠN

họ tên Lan

FI

hệ số lương 3

môn Internet

số tiết 20

QU Y

môn kỹ thuật bàn phím

môn Internet

hệ số mời 0.5

OF

họ tên Minh

lương cơ bản 450

CI AL

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

16

số tiết 20 số tiết 15

họ tên Thảo số lớp 2 số lớp 1

số lớp 1

KÈ M

môn kỹ thuật bàn phím

số tiết 15

số lớp 1

DẠ

Y

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à


Chƣơng 1: Tổng quan về cơ sở dữ liệu

17

CI AL

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.

OF

FI

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

hệ số lương 3

hệ số lương 3

KÈ M

họ tên Lan

QU Y

họ tên Minh

lương cơ bản 450

môn kỹ thuật bàn phím

thù lao mỗi tiết 50

hệ số mời 0.5

NH

phụ cấp quản lý 1800

ƠN

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:

họ tên Hùng

số tiết 15

hệ số lương 2 họ tên Thảo môn Internet

số tiết 20

DẠ

Y

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 đồ.


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

18

CI AL

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.

FI

Ví dụ 1.9

QL

Minh

G1 Lan G2 Hùng M1 Thảo

hệ số lương 3

id

mid

G1

Int

3 2

G1 BP G2 BP M1 Int

Mô hình theo hƣớng quan niệm

số lớp 1

mid BP

ƠN

họ tên

1 1 2

Int

số tiết kỹ thuật 15 bàn phím Internet 20 Môn

NH

id

OF

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:

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 đồ.

Ví dụ 1.10

QU Y

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.

KÈ M

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 id họ tên hệ số lƣơng

Giảng dạy

Môn Học mid số tiết

DẠ

Y

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


Chƣơng 1: Tổng quan về cơ sở dữ liệu

19

FI

CI AL

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)

OF

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.

ƠN

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.

NH

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.

QU Y

Chúng ta có lƣợc đồ sau:

Người L.Lương họ tên

KÈ M

Nhân Viên hệ số lƣơng lƣơng cơ bản Tính lƣơng()

GViên Cơ Hữu Tính lƣơng()

Môn Học tên môn số tiết

GViên Mời hệ số mời Tính lƣơng()

DẠ

Y

Quản Lý phụ cấp

Giảng Viên thù lao

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à


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

20

user 2

View 1

View 2

user n

View n

Conceptual schema

ƠN

Mức quan niệm

OF

FI

Mức ngoài

user 1

CI AL

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.

Internal schema

NH

Mức trong

QU Y

Database

KÈ M

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

DẠ

Y

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.


Chƣơng 1: Tổng quan về cơ sở dữ liệu Các thực thể, thuộc tính và các mối kết hợp 14; 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.

CI AL

   

21

OF

FI

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.

ƠN

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

Đị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ý.

QU Y

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

DẠ

Y

KÈ M

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,


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

22

CI AL

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:

OF

FI

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

ƠN

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ý.

NH

Độ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.

QU Y

Độ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 Họ

Tên

KÈ M

Mã NV

Tuổi

Lƣơng

Mã NV

Tên

Ngày sinh

Lƣơng

Đơn vị

Đơn vị

 Lƣợc đồ quan niệm: Họ

Tên

DẠ

Y

Mã NV

đặ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).


Chƣơng 1: Tổng quan về cơ sở dữ liệu

OF

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;

FI

 Lƣợc đồ trong:

CI AL

23

NH

ƠN

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ý.

Tổng quan về hệ quản trị cơ sở dữ liệu

4.

Định nghĩa 1.4

QU Y

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.

KÈ M

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. 2. 3. 4.

Tạo và bảo toàn cơ sở dữ liệu. Cho phép truy xuất cơ sở dữ liệu theo thẩm quyền. Phục hồi dữ liệu theo yêu cầu. Cập nhật dữ liệu.

DẠ

Y

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ả.


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

24

CI AL

4.1. Chức năng Hệ quản trị cơ sở dữ liệu có các chức năng sau 17:

FI

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.

OF

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.

ƠN

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.

NH

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 Y

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.

17

KÈ M

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.

DẠ

Y

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.


Chƣơng 1: Tổng quan về cơ sở dữ liệu

25

CI AL

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.

4.2. Thành phần Người dùng

Chƣơng trình UD

Truy vấn

Xử lý truy vấn

QU Y

Tiền xử lý DML

NH

DBMS

ƠN

Lập trình viên

Quản lý DB

Phƣơng thức truy xuất

Quản lý tập tin

KÈ M

Mã chƣơng trình

Y

Vùng đệm hệ thống

DẠ

OF

FI

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.

Cơ sở dữ liệu và tự điển dữ liệu

Quản trị cơ sở dữ liệu Lƣợc đồ cơ sở dữ liệu

Biên dịch DDL

Quản lý DD


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

26

CI AL

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;

FI

4. Mã đối tượng chương trình; 5. Quản lý cơ sở dữ liệu;

OF

6. Quản lý từ điển dữ liệu; 7. Quản lý tập tin. Xử lý truy vấn

ƠN

Mã chƣơng trình DM

Quản lý DD

QU Y

Xử lý lệnh

KÈ M

Kiểm tra toàn vẹn

NH

Kiểm soát đặc quyền

DẠ

Y

Quản lý dữ liệu

Tối ƣu truy vấn

Quản lý giao tác

Quản lý lịch

Quản lý vùng đệm

Quản lý phục hồi

Quản lý tập tin


Chƣơng 1: Tổng quan về cơ sở dữ liệu

27

CI AL

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;

FI

3. Xử lý lệnh; 4. Tối ưu truy vấn;

OF

5. Quản lý giao tác; 6. Quản lý lịch; 7. Quản lý phục hồi;

DẠ

Y

KÈ M

QU Y

NH

ƠN

8. Quản lý vùng đệm.


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

CI AL

28

TÓM TẮT

DẠ

Y

KÈ M

QU Y

NH

ƠN

OF

FI

 Để 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ẻ.


Chƣơng 1: Tổng quan về cơ sở dữ liệu

29

CI AL

5. Giới thiệu các case study

FI

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

OF

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.

ƠN

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

Nhân viên

QU Y

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. 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.

KÈ M

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ọ.

Y

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.

DẠ

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.


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

30

CI AL

Nhà cho thuê

FI

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).

OF

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à

NH

ƠN

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

QU Y

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.

Xem nhà

KÈ M

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. 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

DẠ

Y

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.


Chƣơng 1: Tổng quan về cơ sở dữ liệu

31

CI AL

Hợp đồng cho thuê

FI

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.

OF

Kiểm tra nhà

ƠN

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

Tạo và bảo tồn thông tin xem nhà do mình thực hiện; Báo cáo về những nhận xét của khách sau khi xem nhà; Tạo và bảo tồn thông tin kiểm tra do mình thực hiện; Tạo và bảo tồn thông tin quảng cáo do mình thực hiện; Xem danh sách về những nhà cho thuê do mình quản; Xem danh sách về những khách hàng do mình quản; 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

Tạo và bảo tồn thông tin về nhà và chủ nhà; Tạo và bảo tồn thông tin về khách hàng; Xem danh sách các quảng cáo theo nhà; Xem danh sách các quảng cáo theo báo; Xem nội dung các kiểm tra định kỳ; Xem danh sách nhà đang thuê theo từng chuyên viên;

KÈ M

1. 2. 3. 4. 5. 6.

QU Y

NH

1. 2. 3. 4. 5. 6. 7.

Quản lý và giám sát

DẠ

Y

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ý


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

32

DẠ

Y

KÈ M

QU Y

NH

ƠN

OF

FI

CI AL

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;


Chƣơng 1: Tổng quan về cơ sở dữ liệu

33

CI AL

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.

FI

Chuyên ngành đào tạo

OF

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.

ƠN

Khoa đào tạo

NH

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

KÈ M

QU Y

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

DẠ

Y

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.


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

34

CI AL

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.

FI

Sinh viên

ƠN

OF

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

Hoạt động

KÈ M

Sinh viên

QU Y

NH

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.

1. Xem chƣơng trình đào tạo; 2. Xem điểm; 3. Đăng ký lớp. Giảng viên

Nhập điểm; Xem danh sách lớp do mình phụ trách; Xem danh sách sinh viên thuộc lớp do mình phụ trách; Xem danh sách sinh viên do mình cố vấn; Báo cáo kết quả học của lớp do mình phụ trách; Báo cáo kết quả học của sinh viên do mình cố vấn.

DẠ

Y

1. 2. 3. 4. 5. 6.


Chƣơng 1: Tổng quan về cơ sở dữ liệu

35

CI AL

Bộ Môn

Phân công giảng viên phụ trách lớp; Xem danh sách giảng viên trong bộ môn; Xem danh sách môn thuộc bộ môn; Xem danh sách lớp của các giảng viên thuộc bộ môn; 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.

OF

FI

1. 2. 3. 4. 5.

Khoa

QU Y

NH

ƠN

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. 1. 2. 3. 4. 5.

KÈ M

Phòng đào tạo

Tạo và bảo tồn thông tin về sinh viên; Xếp lịch học cho các lớp; Xem danh sách toàn bộ lớp; Xem danh sách sinh viên theo lớp; Báo cáo kết quả đào tạo theo từng khoá.

Y

Phòng tổ chức

DẠ

1. 2. 3. 4.

Tạo và bảo tồn thông tin về khoa; Tạo và bảo tồn thông tin về giảng viên; Xem danh sách toàn bộ bộ môn; Xem danh sách giảng viên theo khoa, theo bộ môn.


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

36

CI AL

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;

FI

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;

OF

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;

ƠN

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.

NH

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ì?

Y

KÈ M

QU Y

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:

DẠ

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ệ;


Chƣơng 1: Tổng quan về cơ sở dữ liệu

37

CI AL

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.

ƠN

OF

FI

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? a. Mô hình mạng;

NH

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: b. Mô hình phân cấp; c. Mô hình quan hệ.

QU Y

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;

KÈ M

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ý.

Y

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?

DẠ

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


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

38

CI AL

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;

FI

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.

OF

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).

ƠN

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).

NH

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.

DẠ

Y

KÈ M

QU Y

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ể.


CI AL

FI

Chƣơng 2 MÔ HÌNH CƠ SỞ DỮ LIỆU QUAN HỆ Mục tiêu của chƣơng.

OF

Trong chƣơng này chúng ta sẽ học về:  

NH

ƠN

   

QU Y

   

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ệ.

DẠ

Y

KÈ M

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.


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

40

Mở đầu

CI AL

1.

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

OF

FI

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ụ.

Địa chỉ) Định mức (Từ 134 NTT 1 242/4 TBT 101 33 PH 151 201

NH

Khách hàng (Mã KH 01 02 03

ƠN

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: Đến 100 150 200 400

Giá) 80 100 150 200

QU Y

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ụ:

KÈ M

Chi tiết tiêu thụ

(Mã KH 01 01 02 02 02 02 03

Tiêu thụ 100 20 100 50 50 50 80

Giá 80 100 80 100 150 200 80

Thành tiền) 8000 2000 8000 5000 7500 10000 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.

DẠ

Y

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


Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ

41

CI AL

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ụ).

FI

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.

OF

Để 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

ƠN

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

QU Y

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).

KÈ M

Hàng hoá (Mã hàng H01 H02 H03 H04

DẠ

Y

Hoá đơn

20

Tên hàng Máy tính Đĩa Màn hình CPU

(Số hoá đơn D01 D02

Đơn vị tính Giá bán) Bộ 5600 10 đĩa 30 Chiếc 1250 Chiếc 3250

Ngày lập 12/11/06 14/12/06

Trị giá Thuế VAT) 5490 5% 12140 5%

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.


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

42

Khái niệm

2.1. Quan hệ và lƣợc đồ quan hệ

OF

2.

FI

CI AL

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

ƠN

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

Định nghĩa 2.1

QU Y

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(A i) = 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

KÈ M

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.

DẠ

Y

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) =


Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ

43 Atlanta};

CI AL

dom(TO) = {JFK, O’Hare, Los Angeles, Boston, 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

F c1 c2 c1 c1 c4

T c2 c1 c3 c4 c1

D d1 d2 d3 d4 d5

A) a1 a2 a3 a4 a5

ƠN

r (N n1 n2 n3 n4 n5

OF

FI

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

NH

2.2. Khoá của lƣợc đồ quan hệ

Định nghĩa 2.2

QU Y

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á Cho quan hệ r định nghĩa trên lược đồ quan hệ R, tập con K R được gọi

KÈ M

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.

DẠ

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


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

44

FI

CI AL

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.

OF

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.

ƠN

Đị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á

NH

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})

QU Y

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.

KÈ M

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

DẠ

Y

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.


Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ

45

CI AL

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

b

3

c

3

c

4

d

3

d

4

d

5

e

4

f

4

f

5

g

6

g f e d c b a

ƠN

Y

NH

X

1 2 3 4 5 6 7

QU Y

r

OF

FI

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 XY, 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 XY. Ta có dạng bảng của r:

KÈ M

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.

DẠ

Y

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ả.


3.

Mô hình

CI AL

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

46

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.

FI

3.1. Cơ sở dữ liệu và lƣợc đồ cơ sở dữ liệu Định nghĩa 2.4

OF

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) .

ƠN

Từ nay về sau nếu không sợ nhầm lẫn ta sẽ coi r i là quan hệ trên Ri. B b1 b2 b3 b4 b1 b1 b2 b3 b3 b5

C) c1 c2 c3 c4 c5 c6 c4 c1 c6 c7

r2 ( B D ) b1 d1 b2 d2 b3 d3 b4 d4 b5 d2

QU Y

r1 ( A a1 a1 a2 a2 a2 a3 a3 a4 a4 a4

NH

Ví dụ 2.7

KÈ M

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})

DẠ

Y

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ĩa 23. 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ụng 24. 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 24

Thƣờng đƣợc giữ trong các tài liệu phân tích thiết kế. Xem toán rời rạc.


Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ

47

CI AL

đỉ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

Địa chỉ Tiêu thụ) Định mức (Từ 134 NTT 120 1 242/4 TBT 250 101 33 PH 80 151 201

OF

Khách hàng (Mã KH 01 02 03

FI

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 Đến 100 150 200 400

Giá) 80 100 150 200

NH

ƠN

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ể.

Khái niệm

QU Y

3.2. Ràng buộc toàn vẹn

KÈ 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.

DẠ

Y

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.


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

48

CI AL

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)

FI

Mượn (Mã-DG, Mã-sách, Ngày-mượn ) 1. Chỉ lƣu một địa chỉ cho mỗi độc giả.

OF

Giả sử có 3 quy tắc:

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.

ƠN

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:

NH

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

QU Y

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:

Thêm

KÈ M

Quy tắc 2 3

r2 Sách Xoá

Sửa Số-bản

Thêm * *

r3 Mượn Xoá

Sửa Mã-DG Mã-sách

DẠ

Y

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 r 1, thật ra chỉ cần nhóm các dòng của r 3 theo mã độc giả thì mỗi nhóm có bản số không quá 3.


Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ

49

CI AL

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.

FI

Ví dụ 2.10

C) c1

ƠN

r1 (D d1 d2

OF

Giả sử bắt buộc phải lƣu địa chỉ của độc giả. Quan hệ r 1 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

NH

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

QU Y

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).

KÈ M

r2 (S s1 s2 s3

B) 1 12 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

DẠ

Y

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 s1 s2 s3 s4

B 3 4 6 3

M) 3 1 0 0

r3 ( D d1 d1 d3 d4

S s1 s2 s1 s1

N) n1 n1 n1 n2


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

50

CI AL

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

K t1 t2 t1

D) t2 t1 t3

OF

r (T 1 1 2

FI

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àng buộc trên nhiều quan hệ

ƠN

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

QU Y

NH

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 N) a b a

r2 ( S s1 s2 s3 s4 s5

KÈ M

r1 ( L l1 l2 l3

L) l1 l1 l2 l2 l3

r3 ( S s1 s2 s3

M m1 m2 m1

L) l3 l2 l2

r4 ( N a a b b

M) m1 m2 m2 m3

Y

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

DẠ

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


Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ

51

r2 ( S s1 s2 s3

B) 4 5 9

r3 ( S s1 s4 s2

D) d1 d3 d5

FI

r1 ( D C ) d1 c1 d2 c2 d3 c3

CI AL

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:

OF

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

(S s1 s2 s3 s4

B) 3 4 6 3

r3 ( D d1 d1 d3 d4

S s1 s2 s1 s1

NH

r2

ƠN

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ệ r 4(SM) lƣu số bản đang đƣợc mƣợn; cơ sở dữ liệu sau vi phạm quy tắc 3 N) n1 n1 n1 n2

r4 ( S s1 s2

M) 3 1

Ví dụ 2.17

QU Y

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

KÈ M

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 ) d1 c1 d2 c2 d3 c3

r2 ( S s1 s2 s3

B) 4 5 9

r3 ( S s1 s1 s2

D d1 d3 d3

N) n1 n1 n2

DẠ

Y

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


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

52

CI AL

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

OF

FI

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 Cho danh sách các thuộc tính

QU Y

NH

TKSO TKTEN CTSO NGAY_LAP NOI_DUNG VIET_CHO TKNO TKCO SO_TIEN

ƠN

Mô hình dữ liệu của cơ sở dữ liệu kế toán có thể đƣợc cho nhƣ sau : CHAR(5) CHAR(25) CHAR(8) DATE CHAR(50) CHAR(25) CHAR(5) CHAR(5) INT(20)

Danh sách các quan hệ cùng các lƣợc đồ quan hệ tƣơng ứng

KÈ M

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.

DẠ

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.


Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ

53

CI AL

(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)

Ta có thể rút ra các ràng buộc Khoá:

QU Y

1. TKSO là khoá của TK

NH

ƠN

OF

FI

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.

2. CTSO là khoá của CHTU

3. CTSO,TKNO,TKCO là khoá của CTCT Khoá ngoại:

KÈ M

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

Y

7. t  CTCT, t.TKNO  t.TKCO

DẠ

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:


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

54

(t1.[TKNO]  t2.[TKNO])  (t1.[TKNO]  t2.[TKNO])

CI AL

 t  CHTU,  t1, t2  {t‟  CTCT | t‟.[CTSO] = t.[CTSO]},

Ví dụ 2.19 Xét cơ sở dữ liệu nhân viên với các lƣợc đồ quan hệ:

FI

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).

ƠN

OF

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).

QU Y

NH

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

KÈ M

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:

DẠ

Y

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


Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ

55

CI AL

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ị.

ƠN

OF

FI

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ệ

QU Y

NH

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

KÈ M

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

DẠ

Y

Khách hàng (Mã KH 01 02 03

Hãy phát sinh bảng

Địa chỉ Tiêu thụ) 134 NTT 120 242/4 TBT 250 33 PH 80

Định mức

(Từ 1 101 151 201

Đến 100 150 200 400

Giá) 80 100 150 200


Giáo trình cơ sở dữ liệu Tiêu thụ thực 100 20 100 50 50 50 80

Giá Thành tiền) 80 8000 100 2000 80 8000 100 5000 150 7500 200 10000 80 6400

CI AL

Chi tiết tiêu thụ (Mã KH 01 01 02 02 02 02 03

FI

56

OF

Ở đâ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:

NH

Địa chỉ Tiêu thụ 134 NTT 120 134 NTT 120 134 NTT 120 134 NTT 120 242/4 TBT 250 242/4 TBT 250 242/4 TBT 250 242/4 TBT 250 33 PH 80 33 PH 80 33 PH 80 33 PH 80

QU Y

r1 (Mã KH 01 01 01 01 02 02 02 02 03 03 03 03

ƠN

Tích Khách hàng với Định mức

Từ 1 101 151 201 1 101 151 201 1 101 151 201

Đến 100 150 200 400 100 150 200 400 100 150 200 400

Giá) 80 100 150 200 80 100 150 200 80 100 150 200

KÈ M

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ó

DẠ

Y

r2 (Mã KH 01 01 02 02 02 02 03

Địa chỉ Tiêu thụ 134 NTT 120 134 NTT 120 242/4 TBT 250 242/4 TBT 250 242/4 TBT 250 242/4 TBT 250 33 PH 80

Từ 1 101 1 101 151 201 1

Đến 100 150 100 150 200 400 100

Giá) 80 100 80 100 150 200 80


Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ

57

Giá Thành tiền) 80 8000 100 2000 80 8000 100 5000 150 7500 200 10000 80 6400

FI

Tiêu thụ thực 100 20 100 50 50 50 80

OF

Chi tiết tiêu thụ (Mã KH 01 01 02 02 02 02 03

CI AL

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

ƠN

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.

NH

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

QU 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)

KÈ M

 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)

DẠ

Y

 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)


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

58

CI AL

 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

FI

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ả.

OF

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

ƠN

 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

QU Y

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

KÈ M

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à

Y

 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

DẠ

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


Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ

59

FI

CI AL

 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)

OF

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.

ƠN

 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.

QU Y

NH

 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.

KÈ M

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.

Y

4.2. Các phép toán tập hợp: hợp, giao, hiệu và bù

DẠ

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ị.


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

60

CI AL

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.

FI

Định nghĩa 2.6

OF

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 B b1 b2 b1

C) c1 c1 c2

s (A a1 a2 a2

B b2 b2 b2

NH

r (A a1 a1 a2

ƠN

Cho hai quan hệ r,s trên lƣợc đồ quan hệ R = (ABC) :

C) c1 c1 c2

Kết quả r  s, r  s và r\s nhƣ sau : B b2

rs(A a1 a1 a2 a2 a2

C) c1

QU Y

rs ( A a1

B b1 b2 b1 b2 b2

C) c1 c1 c2 c1 c2

r\s ( A a1 a2

B C) b1 c1 b1 c2

Coi dom(A)={a1, a2 }; dom(B)={b1, b2, b3} và dom(C)={c1, c2} thì : B b1 b1 b2 b2 b3 b3 b1 b1 b2 b2 b3 b3

DẠ

Y

KÈ M

dom(R) (A a1 a1 a1 a1 a1 a1 a2 a2 a2 a2 a2 a2

C) c1 c2 c1 c2 c1 c2 c1 c2 c1 c2 c1 c2

dom(R)\r

(A a1 a1 a1 a1 a2 a2 a2 a2 a2

B b1 b2 b3 b3 b1 b2 b2 b3 b3

C) c2 c2 c1 c2 c1 c1 c2 c1 c2


Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ

61

C) c1 c2 c1 c2 c1 c2 c1 c2

adom(R)\r

(A a1 a1 a2 a2 a2

B b1 b2 b1 b2 b2

C) c2 c2 c1 c1 c2

FI

B b1 b1 b2 b2 b1 b1 b2 b2

OF

adom(R) (A a1 a1 a1 a1 a2 a2 a2 a2

CI AL

Bằng cách tính adom(A) = {a1, a2 }; adom(B) = {b1, b2 } và adom(C) = {c1, c2} ta có:

Định nghĩa 2.7

ƠN

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).

NH

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: B b1 b2 b2

C) c1 c1 c2

QU Y

r (A a1 a1 a2

s (A a1 a2 a1

B b1 b2 b2

C) c1 c1 c2

KÈ M

Kết quả r  s sau đây vi phạm khoá AB: rs (A a1 a1 a2 a2 a1

B b1 b2 b2 b2 b2

C) c1 c1 c2 c1 c2

Y

4.3. Phép chọn

DẠ

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.


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

62

CI AL

Đị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) = {tr | p(t)}

FI

Ví dụ 2.24 F c1 c2 c1 c2 c4

T c2 c1 c3 c4 c1

F c2 c2

T c1 c4

D d1 d2 d3 d4 d5

4.4. Phép chiếu Định nghĩa 2.9

D d2 d4

QU Y

F=c2(r) (N n2 n4

NH

với p = (F=c2) ta có

A) a1 a2 a3 a4 a5

ƠN

r (N n1 n2 n3 n4 n5

OF

Cho quan hệ

A) a2 a4

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:

KÈ M

X(r) = r[X] = {t.X, tr}

Ví dụ 2.25

DẠ

Y

Lấy r ở ví dụ trên, với X=DA, ta có: DA(r) (D d1 d2 d3 d4 d5

A) a1 a2 a3 a4 a5


Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ

63

CI AL

4.5. Phép kết

OF

FI

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 XY. 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

ƠN

Cho r1(R1), r2(R2), coi S=R1R2, 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: Ví dụ 2.26

NH

r1 ⋈ r2 (R) = {t(R)| t1r1 và t2r2, t.R1=t1, t.R2=t2 } Cho hai quan hệ r, s trên hai lƣợc đồ quan hệ R = (AC), S = (BC):

DẠ

Y

KÈ M

ta có :

28

C) c1 c2 c1 c2 c3 r⋈s (A a1 a1 a1 a1 a2 a2 a2 a2 a3

QU Y

r (A a1 a1 a2 a2 a3

B b1 b3 b2 b3 b1 b3 b2 b3 b1

s (B b1 b1 b2 b3 b3 C) c1 c1 c2 c2 c1 c1 c2 c2 c3

C) c3 c1 c2 c1 c2

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.


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

64 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.

CI AL

Quy ƣớc. Nếu S =  thì r1 ⋈ r2 là tích Descartes thông thƣờng.

FI

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.

OF

Tính chất 2: Một số tính chất khác 1. Cho r(R), s(S) và AR ta có 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).

ƠN

A=a(r ⋈ s) = A=a(r) ⋈ s.

NH

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

DẠ

Y

KÈ M

Biểu thức sau là đúng

QU Y

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.

T N<n ⋈

m(OSN) s(STAB)


Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ

65

CI AL

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

FI

OF

s(STAB)

m(OSN)

ƠN

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

Định nghĩa 2.11

QU Y

NH

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‟ ?. Phân rã là bảo toàn thông tin (Lossless Join decomposition) nếu mọi r(R) ta có r = r’.

KÈ M

Ví dụ 2.28

DẠ

Y

Cho r trên R=(ABC) :

29

r

(A a1 a1 a2

B b1 b2 b1

C) c1 c1 c1

Đố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.


Coi ={(AC),(BC)} và phân rã r theo , ta đƣợc : r1 (A a1 a2

C) c1 c1

r2 (B b1 b2

C) c1 c1

(A a1 a1 a2 a2

B b1 b2 b1 b2

C) c1 c1 c1 c1

OF

r‟

FI

Bây giờ ta kết chúng lại thành r‟= r1 ⋈ r2, ta có:

CI AL

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

66

quan sát thấy r  r’ do đó  là một phân rã không bảo toàn thông tin.

ƠN

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 đủ

Định nghĩa 2.12

QU Y

NH

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 r i(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 ? 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

KÈ M

Cho hai quan hệ r1 , r2 trên hai lƣợc đồ quan hệ R1 =AC và R2 =BC : r1 (A a1 a1

Y

Ta có

DẠ

Bây giờ

C) c1 c2

r2 (B b1

r = r1⋈ r2 ( A a1

B b1

r‟1 =r[R1] (A a1

C) c1

r‟2 =r[R2] (B b1

C) c1

C) c1

C) c1


Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ quan sát thấy r1  r‟1.

CI AL

67

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

FI

Khác với phép kết tự nhiên buộc phải thoả hai điều kiệ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 :

OF

1. Chỉ trên các thuộc tính cùng tên

ƠN

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 B) 1 2 1 2

QU Y

r1 (A a1 a2 a3 a1

NH

Cho hai quan hệ r1 , r2 trên hai lƣợc đồ quan hệ R1 = AB và R2 = CD : r2 (C 1 2 3

D) d1 d3 d1

kết quả thực hiện phép kết tƣơng đƣơng với B = C nhƣ sau

KÈ M

r = r1 ⋈[B=C] r2 ( A a1 a2 a3 a1

B 1 2 1 2

C 1 2 1 2

D) d1 d3 d1 d3

Phép kết theta

Y

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.

DẠ

Ví dụ 2.31 Thực hiện phép kết theta với A<C trên r 1 , r2


r2 (C 1 2 3

r = r1 ⋈[A<C] r2 ( A 1 1 2 1 1

B b1 b1 b2 b2 b2

C 2 3 3 2 3

Phép kết ngoài

D) d3 d1 d1 d3 d1

D) d1 d3 d1

FI

B) b1 b2 b1 b2

OF

r1 (A 1 2 3 1

CI AL

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

68

ƠN

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

NH

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) B b1 b2 b1 b1 b2

C null 1 1 2 null

D) null d1 d1 d3 null

r = r1 ⋉ 𝐴>𝐶 r2 ( A 2 3 3 null

B b2 b1 b1 null

C 1 1 2 3

D) d1 d1 d3 d1

r = r1 × 𝐴>𝐶 r2 ( A 1 2 3 3 1 null

B C D) b1 null null b2 1 d1 b1 1 d1 b1 2 d3 b2 null null null 3 d1

DẠ

Y

KÈ M

QU Y

r = r1 ⋊ 𝐴>𝐶 r2 ( A 1 2 3 3 1


Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ Phép kết một phía

CI AL

69

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

FI

Vẫn hai quan hệ r1 , r2 đƣợc cho ở các ví dụ trên, ta có:

OF

r = r1 ⊳[A > C] r2 ( A B ) 2 b2 3 b1 3 b1

ƠN

r = r1 ⊲[A > C] r2 ( C D ) 1 d1 2 d3

4.6. Phép chia

NH

Định nghĩa 2.13

Cho r(R), s(S) với SR. Coi R’=R\S. Phép chia r cho s ký hiệu là rs cho ta quan hệ: Ví dụ 2.34

QU Y

r‟(R‟) = {t |  tss,  tr  r với tr (R‟) = t và t r (S) = ts }

KÈ M

Cho r trên R=(ABC) và s trên S=(C) nhƣ sau:

DẠ

Y

ta có

r (A a1 a1 a1 a1 a1 a1 a2 a2

B b1 b2 b1 b2 b2 b1 b1 b1

C) c1 c2 c3 c1 c3 c2 c1 c3

s (C) c1 c2

r‟= rs ( 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í


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

70

Ví dụ 2.35

FI

Xét yêu cầu chọn những sinh viên biết tiếng Anh và Pháp.

CI AL

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).

OF

 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

Ơ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 r (A a1 a2 a3

B 1 2 2

C) 3 4 3

NH

Với

QU Y

Ta có r[A, S = B + C]

KÈ M

Trên cùng một cột

(A S) a1 4 a2 6 a3 5

Để 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:

Y

Sum (tính tổng) Avg (tính trung bình) Max (tính giá trị lớn nhất) …

DẠ

   

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ạ


Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ

71

CI AL

Ví dụ 2.37 Với

Ta có

5.

S) 6 7

M] ( A M ) a1 3 a2 4

NH

AGM = max(B) (r)[A,

S] ( A a1 a2

ƠN

AGS = sum(B) (r)[A,

OF

FI

r (A B) a1 1 a1 3 a2 1 a2 2 a1 2 a2 4

Dùng đại số quan hệ

QU Y

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

KÈ M

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ƣờng 30 và chúng ta cần một số chiến lƣợc giải quyết vấn đề thuộc loại này31. 1. Phân rã thành các câu hỏi con;

Y

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

DẠ

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ệ.


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

72

CI AL

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ệ

OF

a. Xác định lƣợc đồ kết quả;

FI

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): 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);

ƠN

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.

5.2. Tính tiền điện

NH

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ặp 32.

QU Y

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ũ:

Giải:

I ) 120 250 80

s1 (U 1 101 151 201

D 100 150 200 400

G) 80 100 150 200

KÈ M

s0 (M 01 02 03

 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).

DẠ

Y

 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)


Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ  Xác định điều kiện chọn. Không có

CI AL

73

Nhƣ vậy sau 3 bƣớc, chúng ta có kết quả tập hợp dữ liệu: U 1 101 1 101 151 201 1

D 100 150 100 150 200 400 100

G) 80 100 80 100 150 200 80

FI

I 120 120 250 250 250 250 80

OF

r = s0⋈(I  U)s1 (M 01 01 02 02 02 02 03

Tính toán dòng. Thêm thuộc tính T = GN và N = min(I, D) – U + 1:

QU Y

NH

ƠN

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:

KÈ M

(MGS = sum(T) s )[M, S] (M 01 02 03

S) 10000 30500 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)

Y

(MGS = sum(T) ((s0⋈(I  U)s1) [M, N = if(I<D, I, D) – U + 1, G, T = G*N]) )[M, S]

DẠ

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]


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

74

CI AL

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

(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)

NH

ƠN

OF

FI

Chi nhánh

Giải: Một số câu phức tạp.

QU Y

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)

KÈ M

 Với (a) dữ liệu lấy từ Chi nhánh  Với (b) dữ liệu lấy từ Nhà cho thuê 𝐶𝑕𝑖 𝑛𝑕á𝑛𝑕 𝑇ỉ𝑛𝑕 − 𝑇𝑕à𝑛𝑕 ∪ 𝑁𝑕à 𝑐𝑕𝑜 𝑡𝑕𝑢ê 𝑇ỉ𝑛𝑕 − 𝑇𝑕à𝑛𝑕

Y

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à

DẠ

 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; 𝑋𝑒𝑚 𝑛𝑕à ⋈ 𝐾𝑕á𝑐𝑕 𝑕à𝑛𝑔 𝐻ọ, 𝑇ê𝑛, 𝑁𝑕ậ𝑛 𝑥é𝑡


Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ

75

CI AL

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;

với

OF

𝑟1 ⋃ 𝑟2

FI

 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;

ƠN

𝑟1 = 𝑋𝑒𝑚 𝑛𝑕à 𝑀ã 𝑁𝑕à, 𝑀ã 𝐾𝐻, 𝑁𝑕ậ𝑛 𝑥é𝑡 𝑟2 = 𝜍𝑀ã 𝑁𝑕à∉𝑟 𝑁𝑕à 𝑐𝑕𝑜 𝑡𝑕𝑢ê 𝑀ã 𝑁𝑕à, 𝑀ã 𝐾𝐻, 𝑁𝑕ậ𝑛 𝑥é𝑡 𝑟 = 𝑁𝑕à 𝑐𝑕𝑜 𝑡𝑕𝑢ê 𝑀ã 𝑁𝑕à

NH

 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

QU Y

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: ∀𝑡 ∈ 𝑟, 𝑃 𝑡 ↔ ∃𝑡 ∈ 𝑟, 𝑃 𝑡 ↔ 𝑡 ∈ 𝑟, 𝑃 𝑡

=∅

KÈ M

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

DẠ

Y

Kiểm tra ràng buộc tồn tại. ∀𝑡 ∈ 𝑟, ∃𝑡 ′ ∈ 𝑠, 𝑡 ′ . 𝐴 = 𝑡. 𝐴

Giải:

Ta thấy ngay biểu thức đại số


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

76

CI AL

𝑟 𝐴 ⊂𝑠 𝐴 ↔ 𝑟 𝐴 −𝑠 𝐴 =∅ ↔ 𝜍𝐴∉𝑠 𝐴 𝑟 = ∅

∀𝑡 ∈ 𝑟, ∃𝑡 ′ ∈ 𝑠, 𝑡 ′ . 𝐴 = 𝑡. 𝐴

OF

↔ ∃𝑡 ∈ 𝑟, ∀𝑡 ′ ∈ 𝑠, 𝑡 ′ . 𝐴 ≠ 𝑡. 𝐴 ↔ ∃𝑡 ∈ 𝑟, ∃𝑡 ′ ∈ 𝑠, 𝑡 ′ . 𝐴 = 𝑡. 𝐴 ↔ 𝑡 ∈ 𝑟|𝑡. 𝐴 ∉ 𝑡 ′ . 𝐴|𝑡′ ∈ 𝑠 = ∅

FI

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:

ƠN

𝜍𝐴∉𝑠 𝐴 𝑟 = ∅

NH

𝜍𝑠.𝐴=𝑁𝑈𝐿𝐿 𝑟 ⋊ 𝑠 = ∅

Chúng ta cần một số kết quả để tiện sử dụng sau này. Tổng quát

QU Y

∀𝑥 ∈ 𝑟, 𝑝 𝑥 ↔ 𝜍𝑝 𝑟 = ∅ ∃𝑥 ∈ 𝑟, 𝑝 𝑥 ↔ 𝜍𝑝 𝑟 ≠ ∅

∀𝑥 ∈ 𝑟, ∃𝑦 ∈ 𝑠, 𝑝 𝑥, 𝑦 ↔ 𝑟 − 𝑟 ⋈𝑝 𝑠 𝑅 = ∅ ∃𝑥 ∈ 𝑟, ∀𝑦 ∈ 𝑠, 𝑝 𝑥, 𝑦 ↔ 𝑟 − 𝑟 ⋈𝑝 𝑠 𝑅 ≠ ∅

KÈ M

Ràng buộc tồn tại

𝑟 𝐴 ⊂𝑠 𝐴

↔ 𝑟 𝐴 −𝑠 𝐴 =∅ ↔ 𝜍𝐴∉𝑠 𝐴 𝑟 = ∅ ↔ 𝜍𝑠.𝐴=𝑁𝑈𝐿𝐿 𝑟 ⋊ 𝑠 = ∅

Ví dụ 2.39

DẠ

Y

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

∀𝑝 ∈ 𝑟, ∃𝑛 ∈ 𝑠, 𝑛. 𝐵, 𝑝. 𝐴 = 𝑛. 𝐴


Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ

77

𝑟 𝐴 − 𝜍𝐵 𝑠 𝐴

=∅

hoặc

FI

𝜍𝑠.𝐴=𝑁𝑈𝐿𝐿 𝑟 ⋊ 𝜍𝐵 𝑠 = ∅

CI AL

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:

Cho hai quan hệ A 1 3 5

s

B 1 2 4

ƠN

r

OF

Ví dụ 2.40

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.

NH

Giải:

Câu trả lời tƣơng đƣơng với mệnh đề sau

∃𝑥 ∈ 𝑟, ∀𝑦 ∈ 𝑠, 𝑥. 𝐴 > 𝑦. 𝐵

QU Y

Suy ra câu đại số quan hệ là 𝑟 − 𝑟 ⋈𝑟.𝐴≤𝑠.𝐵 𝑠 𝑅 = 1,3,5 − 1,3 = 5 ≠ ∅ đúng.

DẠ

Y

KÈ M

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


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

CI AL

78

TÓM TẮT

DẠ

Y

KÈ M

QU Y

NH

ƠN

OF

FI

 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.


Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ BÀI TẬP 1. Quan hệ sau lƣu dữ liệu của nhân viên (NV): Nhân Viên

CI AL

79

Mã NV

Họ

Tên

HSL

Chức vụ

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

2.5

NViên

Tiếp Thị

N024

Nguyễn Tuấn

2.7

NViên

Kinh Doanh

OF

FI

Phòng

ƠN

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?

NH

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

Số Điện Thoại

Tên Phòng

P01

Tiếp Thị

8423121

N126

P02

Kinh Doanh

8423241

N143

Nhân Viên

QU Y

Mã PG

Mã TP

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

2.5

NViên

P01

N024

Nguyễn Tuấn

2.7

NViên

P02

DẠ

Y

KÈ M

Mã NV

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.


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

80

CI AL

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;

FI

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;

OF

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:

NH

ƠN

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àyThanh-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ệ: A a b a c

B

C

QU Y

r

1 1 1 2

a b c d

s

A

B

C

a a

1 3

a d

KÈ M

Xác định quan hệ kết quả từ các biểu thức sau:

Y

a. 𝜍𝐴=𝑎 𝑟 b. 𝜋𝐴,𝐵 𝑟 c. 𝑟⋃𝑠 d. 𝑟 × 𝑠 e. 𝑟 − 𝑠 5. Cho r(A) = {a, b} và s(B) = {1, 2, 3}. Tính 𝑟 × 𝑠.

DẠ

6. Cho r(A, B) = {(a, 1), (b, 2)}, s(B, C) = {(1, x), (1, y), (3, z)}. Tính a. 𝑟 ⋈ 𝑠 b. 𝑟 ⋊ 𝑠 c. 𝑟 ⊳ 𝑠


Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ

81

CI AL

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ệ

Khách-Sạn (Mã-KS, Tên-KS, Địa-Chỉ-KS) 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)

FI

a. b. c. d.

OF

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;

ƠN

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.

NH

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:

QU Y

Nhật Ký 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

KÈ M

CT Gốc

Sổ Cái TK

Ngày

Tiền Có

Mua hàng

14/05/08

0

30000 156

PN01

DU

CT Gốc

Y

Tiền Nợ

156

Mua hàng

14/05/08

30000

0 111

PN01

DẠ

111

Nội Dung

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ý.


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

82

CI AL

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:

FI

a. ∀𝑥 ∈ 𝑟, 𝑃(𝑥) b. ∀𝑥 ∈ 𝑟, ∃𝑦 ∈ 𝑠, 𝑃(𝑥, 𝑦)

OF

c. ∃𝑥 ∈ 𝑟, ∀𝑦 ∈ 𝑠, 𝑃(𝑥, 𝑦) d. Phép chia 𝑟 ÷ 𝑠

ƠN

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.

NH

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.

DẠ

Y

KÈ M

QU Y

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.


CI AL FI

Chƣơng 3 Ngôn ngữ cơ sở dữ liệu SQL Mục tiêu của chƣơng.

NH

ƠN

OF

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.

QU Y

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).

KÈ M

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.

Y

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

DẠ

Thƣờng thì DML và QL đƣợc nhập lại thành một và gọi chung là DML. 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. 35


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

84

Giới thiệu case study

ƠN

1.

OF

FI

CI AL

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.

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:

NH

 Bảng hàng hoá lƣu danh mục hàng hoá:

QU Y

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.

KÈ M

 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:

DẠ

Y

TON (

36

MA_HANG CHAR(10), NGAY_KK DATE, L_TON INT)

Gồm các kiểu dữ liệu, các ràng buộc toàn vẹn, các chỉ mục, …


Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL

85

CI AL

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:

OF

FI

PHIEU_NHAP ( PN_SO CHAR(10), NGAY_NHAP DATE)

Trong đó PN_SO là khoá chính; NGAY_NHAP khác rỗng;

NH

CT_NHAP ( PN_SO CHAR(10), MA_HANG CHAR(10), L_NHAP INT)

ƠN

 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:

QU Y

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;

KÈ M

 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:

Y

CT_BAN ( HD_SO CHAR(10), MA_HANG CHAR(10), L_BAN INT)

DẠ

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.


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

86

CI AL

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”.

Ngôn ngữ con định nghĩa dữ liệu (DDL)

NH

2.

ƠN

OF

FI

Ta có lƣợc đồ cơ sở dữ liệu mức logic dƣới dạng đồ thị trực quan nhƣ sau:

QU Y

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).

KÈ M

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

Y

DOMAIN TABLE VIEW INDEX SCHEMA

CREATE √ √ √ √ √

DDL ALTER √ √

DROP √ √ √ √ √

DẠ

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.


Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL

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ả

CI AL

87

CHAR, VARCHAR

Dãy nhị phân

BIT, BIT VARRYING

Số chính xác

NUMERIC, DEC, INT, SMALLINT

Số gần đúng

FLOAT, REAL, DOUBLE

Ngày giờ

DATE, TIME, TIMESTAMP

Khoảng

INTERVAL

ƠN

OF

FI

Xâu ký tự

NH

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ự

QU Y

CHAR CHAR (<length>) VARCHAR VARCHAR (<length>) Kiểu dãy nhị phân

KÈ M

BIT BIT (<length>) BIT VARYING BIT VARYING (<length>)

Kiểu số chính xác

NUMERIC

DẠ

Y

NUMERIC (<precision>) NUMERIC (<precision, scale>) DEC DEC (<precision>)


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

88

CI AL

DEC (<precision, scale>) INT SMALLINT Kiểu số gần đúng

FI

FLOAT FLOAT (<precision>)

OF

REAL DOUBLE Kiểu ngày tháng

Kiểu khoảng

QU Y

NH

ƠN

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 INTERVAL <start> TO <end>

KÈ M

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:

Y

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.

DẠ

    


Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL

89

CI AL

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

FI

CREATE SCHEMA <tên lƣợc đồ> [AUTHORIZATION <tên ngƣời dùng>]

OF

DROP SCHEMA <tên lƣợc đồ> [RESTRICT | CASCADE] CREATE DATABASE <tên cơ sở dữ liệu> [AUTHORIZATION <tên ngƣời dùng>] Tạo lƣợc đồ cơ sở dữ liệu QLTK: CREATE DATABASE qltk

NH

2.3. Định nghĩa miền giá trị

ƠN

Ví dụ 3.1

Về mặt toán học

𝐷 = 𝑥 ∈ 𝑇 𝑝(𝑥)

QU Y

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

KÈ M

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>)

DẠ

Y

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]


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

90

CI AL

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)

FI

Ví dụ 3.3

Tạo kiểu số lượng cho các thuộc tính L_NHAP, L_BAN, L_TON:

OF

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:

ƠN

CREATE DOMAIN ID_type AS CHAR(10)

2.4. Tạo bảng (quan hệ và lƣợc đồ quan hệ)

NH

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

QU Y

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

KÈ M

Tạo bảng hàng hoá:

DẠ

Y

CREATE TABLE HANG_HOA ( MA_HANG ID_type, TEN_HANG CHAR(20), DV_TINH CHAR(20), GIA INT)


Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL

91

CI AL

Tạo bảng tồn kho: CREATE TABLE TON ( MA_HANG ID_type, NGAY_KK DATE, L_TON sl_type)

OF

FI

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ệ. 

ƠN

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:

NH

HANG_HOA (MA_HANG CHAR(10), TEN_HANG CHAR(20), DV_TINH CHAR(20), GIA INT)

QU Y

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:

DẠ

Y

KÈ M

37

Cú pháp phụ thuộc vào hệ quản trị nào đƣợc chọn.


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

92

OF

FI

CI AL

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.

ƠN

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:

NH

QU Y

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.

KÈ M

Ta có lƣợc đồ trực quan:

DẠ

Y

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:


Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL

93

CI AL

Định nghĩa bảng ở mức tối thiểu: create table CT_NHAP ( ID_TYPE

not null,

MA_HG

ID_TYPE

not null,

LNHAP

SL_TYPE

not null,

FI

PN_SO

OF

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á:

ƠN

alter table CT_NHAP

add constraint FK_CT_NHAP_CT_NHAP2_HANGHOA foreign key (MA_HG) Định nghĩa các chỉ mục:

NH

references HANGHOA (MA_HG) on update cascade create index NHAP_FK on CT_NHAP (PN_SO ASC)

QU Y

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:

KÈ M

create trigger TI_NHAP on CT_NHAP for insert as begin declare @numrows int, @numnull int select @numrows = @@rowcount

DẠ

Y

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


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

94 return error: rollback transaction end

FI

CI AL

end

create trigger TU_NHAP on CT_NHAP for update as begin select @numrows = @@rowcount if update(PN_SO)begin if (select count(*) from

ƠN

if @numrows = 0 return

OF

declare @numrows int, @numnull int,

PHNHAP t1, inserted t2

goto error end return

QU Y

error:

NH

where t1.PN_SO = t2.PN_SO) != @numrows

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.

KÈ M

2.5. Khai báo các ràng buộc toàn vẹn Các ràng buộc gồm:

Khác rỗng Miền giá trị Khoá chính Khoá Khoá ngoại Quy tắc quản lý

DẠ

Y

1. 2. 3. 4. 5. 6.


Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL

95

CI AL

Cú pháp

Thêm miền giá trị, khoá chính, khoá ứng viên, khoá ngoại và quy tắc quản lý

FI

ALTER TABLE <tên bảng> ADD CONSTRAINT <tên ràng buộc> CHECK (<biểu thức điều kiện>)

OF

ALTER TABLE <tên bảng> ADD CONSTRAINT <tên ràng buộc> PRIMARY KEY (<danh sách thuộc tính>)

ƠN

ALTER TABLE <tên bảng> ADD CONSTRAINT <tên ràng buộc> UNIQUE (<danh sách thuộc tính>)

QU Y

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á

KÈ M

ALTER TABLE HANG_HOA ADD CONSTRAINT HH_PK PRIMARY KEY (MA_HANG) ALTER TABLE HANG_HOA ALTER COLUMN TEN_HANG NOT NULL

Y

ALTER TABLE HANG_HOA ADD CONSTRAINT C_GIA CHECK (GIA>0)

DẠ

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)


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

96

Ví dụ 3.8

OF

FI

CREATE ASSERTION siSo CHECK (NOT EXISTS ( SELECT classID FROM student GROUP BY classID HAVING COUNT(*) > 50))

CI AL

ALTER TABLE TON ADD CONSTRAINT TON_HH_FK FOREIGN KEY (MA_HANG) REFERENCES HANG_HOA(MA_HANG)

ƠN

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

NH

1. Tạo bảng với ràng buộc khoá chính và khác rỗng

QU Y

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

KÈ M

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))

DẠ

Y

ở đâ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.


Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL

97

CI AL

3. Tạo bảng với ràng buộc khoá ngoại

OF

FI

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))

Cú pháp DROP TABLE <tên bảng>

ƠN

2.7. Hủy bảng

Ví dụ 3.10 Xoá bảng CT_BAN

NH

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ó)

QU Y

DROP TABLE CT_BAN

2.8. Định nghĩa lại bảng

KÈ M

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>

DẠ

Y

ALTER TABLE <tên bảng> ADD CONSTRAINT <tên> <loại> <tham số>

buộc>

ALTER TABLE <tên bảng> DROP CONSTRAINT <tên ràng


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

98

CI AL

Ví dụ 3.11 Xoá cột L_BAN khỏi bảng CT_BAN ALTER TABLE CT_BAN DROP COLUMN L_BAN

FI

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

Ngôn ngữ con thao tác dữ liệu

3.

OF

ALTER TABLE CT_BAN ADD L_BAN INT CHECK (L_BAN IS NOT NULL)

ƠN

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

NH

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)

QU Y

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>

KÈ M

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’

DẠ

Y

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’


Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL

99

CI AL

3.2. Truy vấn dữ liệu

FI

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.

OF

Tập hợp dữ liệu

ƠN

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

QU Y

NH

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.

KÈ M

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:

DẠ

Y

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.


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

100

FI

CI AL

 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)

OF

Ta có kết quả câu truy vấn

Phân tích ví dụ này chúng ta thấy:

NH

Ơ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’

QU 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.

KÈ M

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Ạ

Y

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.


Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL Ví dụ 3.14

HD_SO

MA_HANG

L_BAN

HD01

H01

15

HD01

H02

HD02

H01

HD02

H03

HD02

H05

HD03

H04

11

H05

8

HD03

22

OF

14 7

13

ƠN

CT_BAN

FI

Xét quan hệ chi tiết bán

CI AL

101

NH

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: HD_SO

L_BAN

nhóm 1

HD01 HD01 HD02 HD02 HD02 HD03 HD03

15 22 14 7 13 11 8

QU Y

CT_BAN

nhóm 2

KÈ M

nhóm 3

Y

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

DẠ

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.


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

102

FI

CI AL

SUM MAX MIN LAST FIRST COUNT AVG

OF

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:

ƠN

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

Ví dụ 3.15

QU Y

NH

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> Dùng dữ liệu ở ví dụ trên, ta có kết quả thực hiện câu truy vấn

KÈ M

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

DẠ

Y

là quan hệ sau (chƣa có tên)

41

HD_SO

SL_MAX

CNT

HD01

22

2

HD02

14

2

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.


Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL

103

CI AL

3.3. Truy vấn con

FI

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 con 42. 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.

OF

So sánh trong điều kiện chọn

Ơ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: 𝑟=∅

NH

𝑟≠∅ 𝑥∈𝑟

𝑥∉𝑟

Với SQL ta có

QU Y

𝑟 ≠ ∅ ⇔ 𝐸𝑋𝐼𝑆𝑇𝑆(𝑟) 𝑥 ∈ 𝑟 ⇔ 𝑥 𝐼𝑁 𝑟

Phép toán thành viên có thể mở rộng thành phép so sánh bằng

KÈ M

𝑥 ∈ 𝑟 ⇔ 𝑥 =𝐴𝑁𝑌 𝑟 𝑥 ∉ 𝑟 ⇔ 𝑥 ≠𝐴𝐿𝐿 𝑟

Giờ đây chúng ta có thể đặt các biểu thức so sánh ở phép chọn: 𝑥 𝜃𝐴𝑁𝑌 𝑟 𝑥 𝜃𝐴𝐿𝐿 𝑟

DẠ

Y

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.


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

104

CI AL

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:

OF

FI

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

ƠN

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

NH

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:

QU Y

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ó:

KÈ M

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) )

Y

3.4. Cài đặt đại số quan hệ

DẠ

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.


Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL

105

CI AL

Phép Hợp SELECT … UNION [ALL] SELECT … Ví dụ 3.18

FI

Tạo sổ cái từ sổ nhật ký

OF

SELECT Chung_Tu, TK_No AS TK, TK_Co AS DU, Tien AS T_No, 0 AS T_Co FROM Nhat_Ky

UNION

ƠN

SELECT Chung_Tu, TK_Co AS TK, TK_No AS DU, 0 AS T_No, Tien AS T_Co FROM Nhat_Ky

NH

Phép giao

Ví dụ 3.19 Cho quan hệ

QU Y

SELECT … WHERE <thuộc tính định danh> IN (SELECT <thuộc tính định danh> …)

KÈ M

r = Trình độ ngoại ngữ (MaNV 01 01 02 02 02 03 04

NNgu) Anh Nga Anh Hoa Pháp Anh Hoa

Tìm ra những nhân viên biết 2 ngoại ngữ Anh và Hoa.

Y

Giải:

DẠ

Ta có câu truy vấn: SELECT MaNV FROM r


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

106

CI AL

WHERE NNgu = ‘Anh’ AND MaNV IN (SELECT MaNV FROM r WHERE NNgu = ‘Hoa’) Phép hiệu

FI

SELECT … WHERE <thuộc tính định danh> NOT IN (SELECT <thuộc tính định danh> …)

OF

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

NH

ƠN

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

1.

QU Y

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): 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] q0 = r[A] q1 = q0s q2 = (q1 – r)[A] q3 = q0 – q2

Y

KÈ M

Viết lại

DẠ

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


Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL

107

CI AL

q2: SELECT DISTINCT q1.A FROM q1 WHERE q1.A&q1.B NOT IN (SELECT r.A&r.B FROM r)

FI

q3: SELECT q0.A FROM q0 WHERE q0.A NOT IN (SELECT q2.A FROM q2)

OF

Nếu cần có thể tích hợp thành một câu truy vấn duy nhất

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

QU Y

2.

NH

ƠN

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 )

𝑟𝑥 = 𝜍𝐵=𝑥 𝑟 𝐴

Cuối cùng

r ÷ s=

𝑟𝑥 =

𝑥∈𝑠

𝑥∈𝑠

KÈ M

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ó:

DẠ

Y

3.

𝜍𝐵=𝑥 𝑟 𝐴


FI

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)

CI AL

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

108

)

OF

Ví dụ 3.21

ƠN

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.

)

QU Y

NH

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

KÈ M

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.

DẠ

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


Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL

109

FI

CI AL

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.

OF

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

ƠN

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 Bằng cách viết lại

NH

Count(r) = Count(r[A]) q1 = r[c = Count(A)]

QU Y

q2 = (r[A])[c = Count(A)] q = q1.c = q2.c(q1q2)

4.

Ngôn ngữ con điều khiển truy cập (DCL)

KÈ M

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:

DẠ

Y

 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.


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

110

CI AL

 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

Cú pháp

OF

4.1. Cấp quyền cho ngƣời dùng khác

FI

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.

ƠN

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]

NH

Ví dụ 3.23

 Cấp quyền SELECT và UPDATE (studentName) trên bảng student cho admin

QU Y

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

KÈ M

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

DẠ

Y

GRANT SELECT ON class TO PUBLIC


Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL

111

CI AL

4.2. Hủy quyền của ngƣời dùng khác Cú pháp

OF

FI

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

1. A cấp quyền cho B

NH

GRANT INSERT ON student TO B WITH GRANT OPTON

ƠN

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.

B có quyền INSERT nhƣ A

QU Y

2. B cấp quyền cho C

GRANT INSERT ON student TO C WITH GRANT OPTON B có quyền INSERT nhƣ B

KÈ M

3. E cấp quyền cho C GRANT INSERT ON student TO C WITH GRANT OPTON

Y

C có quyền INSERT nhƣ A và E (hai giấy phép)

DẠ

4. C cấp quyền cho D GRANT INSERT ON student TO D


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

112

CI AL

D có quyền INSERT do C cấp 5. A hủy quyền của B REVOKE INSERT ON student CASCADE

OF

FI

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

ƠN

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

NH

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.

QU Y

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

KÈ M

Để cho phép cập nhật cơ sở dữ liệu qua view, các view phải thoả:

DẠ

Y

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


Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL

113

CI AL

Ví dụ 3.25

OF

View này không thể cập nhật vì có tính toán

FI

CREATE VIEW siSo (classID, className, siSo) AS SELECT class. classID, className, COUNT(*) FROM student, class WHERE student.classID, class.classID GROUP BY classID, className

Ơ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

NH

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

QU Y

Với view sau:

KÈ M

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’

DẠ

Y

INSERT INTO class3(studentID, classID) VALUES (‘S121’, ‘C2’)


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

CI AL

114

TÓM TẮT

DẠ

Y

KÈ M

QU Y

NH

ƠN

OF

FI

 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.


Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL

115

CI AL

BÀI TẬP Cơ sở dữ liệu sau dùng cho các câu từ 1 đến 3.

Địa chỉ

KH01

Nguyễn A

134 NTT

KH02

Trần B

242/4 TBT

KH03

Phạm C

33 PH

Mã DM D1 D2

KÈ M

Giá

100

80

101

150

100

151

200

150

400

200

D4

201

Kỳ

Mã KH

Tiêu thụ

0804

KH01

150

0804

KH02

240

0804

KH03

110

0805

KH01

120

0805

KH02

250

0805

KH03

80

QU Y

Tiêu thụ

Đến

1

NH

D3

Từ

FI

Tên KH

OF

Định mức

Mã KH

ƠN

Khách hàng

DẠ

Y

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)


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

116

CI AL

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:

OF

b. Tính tiền điện kỳ 0806 cho tất cả khách hàng.

FI

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; 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ànhphố)

ƠN

Phòng (Số-Phòng, Mã-KS, Loại-Phòng, Giá) Khách-Hàng (Mã-KH, Tên-KH, Địa-Chỉ-KH)

NH

Đặ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)

QU Y

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.

KÈ M

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.

Y

9. Danh sách tất cả hoá đơn trong ngày hôm nay, thông tin gồm TỉnhThành-phố, Mã-KS, Ngày-hoá-đơn, Số-Phòng, Loại-phòng, Giá, SốTiền.

DẠ

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.


Chƣơng 3: Ngôn ngữ cơ sở dữ liệu SQL

117 Mã số câu lạc bộ Địa chỉ câu lạc bộ

INT(3) TEXT

DOI : CLB_MA DOI_MA LT PHAI

INT(3) KEY INT(2) KEY CHAR(2) CHAR(3)

Mã số câu lạc bộ Mã số đội Lứa tuổi của đội Phái tính

TD :

INT(3) KEY INT(3) CHAR(6) DATE

Mã số trận đấu Mã số phòng Giờ thi đấu Ngày thi đấu

OF

ƠN

INT(3) INT(2) INT(3)

NH

DOI_TD : TD_MA DOI_MA CLB_MA

FI

CLB : CLB_MA CLB_DC

TD_MA PHG_MA TD_GIO TD_NGAY

KEY

CI AL

Lƣợc đồ cơ sở dữ liệu (Thể Thao Đội) sau dùng cho các câu từ 11 đến 18.

Mã số trận đấu Mã số đội 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 Mã số phòng Địa chỉ phòng Tổng số sân của phòng

LUA_TUOI : LT CHAR(2) KEY LT_TGTD) INT(2)

Lứa tuổi Thời gian thi đấu

QU Y

PHONG : PHG_MA INT(3) KEY PHG_DC CHAR(50) PHG_TSS INT(2)

KÈ M

VDV :

DẠ

Y

VDV_MA VDV_TEN VDV_DC CLB_MA LT PHAI

INT(3) KEY CHAR(25) CHAR(50) INT(3) CHAR(2) CHAR(3)

VDV_DOI : VDV_MA INT(3) DOI_MA INT(2)

Mã số vận động viên Tên vận động viên Địa chỉ vận động viên Mã số câu lạc bộ Lứa tuổi vận động viên Phái tính Mã số vận động viên Mã số đội

Một vận động viên có thể đăng ký vào nhiều đội


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

118

DẠ

Y

KÈ M

QU Y

NH

ƠN

OF

FI

CI AL

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.


CI AL FI

Chƣơng 4 PHỤ THUỘC HÀM Mục tiêu của chƣơng.

OF

Trong chƣơng này chúng ta sẽ học về:        

NH

ƠN

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.

QU Y

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ính 44, 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

KÈ M

Cho quan hệ

44

DẠ

Y

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.


(A 1 1 2 2 3 4 5

B -2 -2 3 3 2 -2 1

C 4 4 9 9 4 4 1

D) 0 0 1 1 2 3 4

FI

r

CI AL

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

120

Ví dụ 4.2

Y

KÈ M

Cho quan hệ

NH

( 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.

QU Y

r

ƠN

OF

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 a a b b c d

B u u v v w u

C x x y y x x

D) 1 2 1 3 2 1

DẠ

Quan sát thấy

45

SELECT A, B, B*B AS C, A – 1 AS D FROM r (xem chƣơng 3)


Chƣơng 4: Phụ thuộc hàm

121

CI AL

 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ó

ƠN

OF

FI

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 r 3:

QU Y

NH

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.

KÈ M

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.

DẠ

Y

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.


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

122

Khái niệm

CI AL

1.

FI

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ì.

OF

1.1. Phụ thuộc hàm Định nghĩa 4.1

ƠN

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 ∀𝑡 ∈ 𝑟 ∀𝑡 ′ ∈ 𝑟 (𝑡. 𝑋 = 𝑡 ′ . 𝑋 ⟹ 𝑡. 𝑌 = 𝑡 ′ . 𝑌)

NH

Để 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)

(A a1 a1 a2 a3

QU Y

r

B b1 b1 b1 b2

C c1 c1 c3 c1

D) d1 d2 d2 d1

KÈ M

Để kiểm tra r có thỏa phụ thuộc hàm AB 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:

DẠ

Y

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.


Chƣơng 4: Phụ thuộc hàm

123

CI AL

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

OF

FI

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

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. Cho quan hệ r(ABCDE)

NH

Ví dụ 4.4

(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

KÈ M

Xét quan hệ

QU Y

r

[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 }.

DẠ

Y

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 XY, với X và Y là các tập con của R.


Giáo trình cơ sở dữ liệu (S 1 1 2 2 2

N 12 12 14 14 15

K a a a b b

D aa cc bb bb bb

H x y x y x

T xx yy zz yy xx

L 4 3 2 4 1

G) 12 11 11 12 12

FI

r

CI AL

124

OF

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

ƠN

Cho tập phụ thuộc hàm F. Phụ thuộc hàm f = XY đượ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).

NH

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

Bộ luật dẫn

QU Y

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.

DẠ

Y

KÈ M

F1. Tính phản xạ XX F2. Tính thêm vào Nếu XY thì XZY F3. Tính hội Nếu XY và XZ thì XYZ F4. Tính phân rã Nếu XYZ thì XY và XZ F5. Tính bắc cầu Nếu XY và YZ thì XZ F6. Tính bắc cầu giả Nếu XY và YZW thì XZW


Chƣơng 4: Phụ thuộc hàm

125

CI AL

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

FI

Tập gồm ba luật dẫn {F1, F2, F6} được gọi là hệ tiên đề Armstrong

OF

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

ƠN

Kiểm tra F ⊨ AEDI, với F = { A  D, AB  E, BI  E, CD  I, E  C }. Giải:

(F2); (F2); (F5); (F3); (F5); (F3).

QU Y

NH

Ta có: AD ⊨ AED EE ⊨ AEE { AEE, EC} ⊨ AEC {AED, AEC} ⊨ AECD { AECD, CDI} ⊨ AEI {AED, AEI} ⊨ AEDI Vậy F ⊨ AEDI, 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+.

KÈ M

Rõ ràng F  F+.

1.4. Phủ của phụ thuộc hàm

DẠ

Y

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 XZYZ và lần 2 đƣợc XYZ; với F4 để chứng minh XY trƣớc hết ta dùng F1 cho Y rồi dùng F2 đƣợc YZY và cuối cùng dùng F5.


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

126

CI AL

Đị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.

FI

Ví dụ 4.7

OF

Cho F={AB, BC, AC, ABC, ABC } và G={AB, BC}. Ta có G là một phủ của F, hơn nữa G đơn giản hơn F.

ƠN

Việc tìm ra những phủ đơn giản hơn rõ ràng là có ý nghĩa. Giả sử XY là thành viên của F+ thì XAY cũng vậy, nhƣng một phủ nên chứa XY hơn chứa XAY. Định nghĩa 4.5

NH

Cho lược đồ <R, F>. Ta nói X  Y là phụ thuộc hàm đầy đủ dưới F, nếu XY 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+.

Định nghĩa 4.6

QU Y

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 XY 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 XY là phụ thuộc hàm đầy đủ dƣới F, thì X là khoá trong r[XY]. Tập phụ thuộc hàm F được gọi là tối tiểu nếu thoả:

KÈ M

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:

DẠ

Y

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 = {AB, AC, BA, BC, CA} không tối tiểu nhƣng có phủ G = { AB, AC, BA, CA } thì phủ tối tiểu.


Chƣơng 4: Phụ thuộc hàm

127

2.

CI AL

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 {AB, BC, CA} 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.

Tìm phủ tối tiểu

Định nghĩa 4.8

OF

2.1. Giải bài toán thành viên

FI

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.

ƠN

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 XY.

Thuật toán 1: Closure(X, F)

NH

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+.

Ra : X+ Các bước : 1. X+ = X 2. do

QU Y

Vào : Tập các phụ thuộc hàm F và tập thuộc tính X  R.

KÈ M

2.1 T = X+ 2.2 foreach (L → R)  F do if (L  X+) X+ = X+  R

while (T != X+)

Y

3. return X+

DẠ

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)+.


Giải:

AEDCI

OF

AEDC

*

ƠN

AD AB  E BI  E CD  I EC

AE *

FI

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

CI AL

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

128

*

NH

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ó (XY)  F+  Y  X+ Ví dụ 4.10

QU Y

Cho F = {AD, ABE, BIE, CDI, EC }, ta có (AE  DI)  F+ vì DI  (AE)+.

2.2. Giải bài toán tìm phủ tối tiểu

KÈ M

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

DẠ

Y

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


Chƣơng 4: Phụ thuộc hàm

129

CI AL

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

Giải:

OF

F = { ABCDE, GABD, ABCG, CDG }

FI

Làm phụ thuộc hàm ABCDE trở nên đầy đủ với

A+ = A B+ = B C+ = C D+ = D AB+ = AB AC+ = AC AD+ = AD BC+ = BC BD+ = BD CD+ = CDGABE ABC+ = ABCGDE ABD+ = ABD ACD+ = ACDGBE BCD+ = BCDGAE

KÈ M

QU Y

1 2 3 4 5 6 7 8 9 10 11 12 13 14

NH

ƠN

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 đủ ABCDE bởi một trong hai phụ thuộc hàm đầy đủ ABCE hoặc CDE

* * * *

DẠ

Y

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 Loại AB Loại ABC Loại ABD

BCD+ = BCDGAE CD+ = CDGABE D+ = D C+ = C

* *


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

130

ABC+ = ABCGDE BC+ = BC AC+ = AC AB+ = AB

*

FI

Loại D Loại DA Loại DB Loại DC

CI AL

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

Ví dụ 4.13

ƠN

F = { ABC, CDE, EC, DAEG, ABGD, DGAB }

OF

Cho

Giải: Loại CDE khỏi F,

NH

Kiểm tra tính dƣ thừa của phụ thuộc hàm CDE.

QU Y

F = { ABC, EC, DAEG, ABGD, DGAB }

KÈ M

Tính bao đóng với F mới: CD+ = CDAEGB. Vậy CDE 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.

Y

Các bước :

DẠ

1. G =  2. foreach (X  Y)  F do foreach A  Y do G = G  {X  A}


Chƣơng 4: Phụ thuộc hàm

OF

FI

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)

CI AL

131

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: CA, ACDB, BEC, CEAG }

ƠN

F = { ABC, BCD, DEG, CGBD,

NH

Giải: Thực hiện thuật toán ta có: Bƣớc 2 (phân rã):

KÈ M

QU Y

G = { AB  C, BC  D, D  E, BE  C, CG  D, CE  G }

C  A, ACD  B, D  G, CG  B, CE  A,

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

DẠ

Y

Vế trái AB BC ACD

Loại A B B C A AC

Bao đóng B+ = B A+ = A C+ = CA B+ = B CD+ = CDABEG D+ = D

Chọn

*


BE CG CE

C+ = CA E+ = E B+ = B G+ = G C+ = CA E+ = E C+ = CA

*

FI

AD B E C G C E

CI AL

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

132

C  A, CD  B, D  G, CG  B, CE  G }

ƠN

G = { AB  C, BC  D, D  E, BE  C, CG  D,

OF

Thay ACD  B bởi CD  B và CE  A bởi C  A (đã có trong F):

NH

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 đó)

D

KÈ M

B

Vế trái AB BE BC CG CD CG D CE

G

Bao đóng AB+ = AB BE+ = BE BC+ = BCA CG+  CGABD CD+  CDAEGB

QU Y

Vế phải C

D+ = DE CE+ = CEA

DẠ

Y

Kết quả sau bƣớc 4 là một phủ tối tiểu của F G = { AB  C, BC  D, D  G, CG  B,

C  A, D  E, BE  C, CE  G }

Loại

* *


Chƣơng 4: Phụ thuộc hàm

Khảo sát tình huống

CI AL

3.

133

OF

FI

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.

ƠN

3.1. Tình huống

Quan hệ sau lƣu lịch mổ của bệnh nhân:

NH

Lịch mổ Tên bác sĩ

MãBN

TênBN

Ngày

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

Giờ

KÈ M

QU Y

MãNV

Phòng

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).

DẠ

Y

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.


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

134

CI AL

3.2. Giải quyết

Tên bác sĩ

D1011

Nguyễn A

D1024

Phạm B

D1032

Trần C

Bệnh nhân

OF

MãNV

MãBN

TênBN

B100

Lê V Lý S

NH

B105

ƠN

Bác sĩ

FI

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ó:

B110

Lê X

QU Y

Trần X

Giờ

MãNV

MãBN

Ngày

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

KÈ M

Lịch mổ

B108

Phòng

DẠ

Y

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ứ


Chƣơng 4: Phụ thuộc hàm

135

CI AL

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 C b1 b4 a3

D) b2 a4 a4

FI

B a2 a2 b6

OF

T(A a1 b3 a1

B a2 a2 b6

C b1 b1 a3

D) b2 a4 a4

NH

T(A a1 b3 a1

ƠN

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:

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: B a2 a2 b6

C b1 b1 a3

QU Y

T(A a1 b3 a1

D) a4 a4 a4

KÈ M

Đế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

DẠ

Y

Để 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


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

136

CI AL

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}.

T*B

(A a1 b1

B a2 a2

C a3 b2

D a4 b3

E) a5 b4

B a2 a2

C a3 a3

D a4 a4

E) a5 b4

OF

Tính

TB (A a1 b1

ƠN

Ta có

FI

Giải:

Kiểm tra cột D và kết luận B  D là thành viên của F+

Để tính X+, ta thực hiện

QU Y

1. Xây dựng TX 2. Tính T*X

NH

4.2. Áp dụng giải bài toán bao đóng

3. Tập hợp các cột toàn a Ví dụ 4.17 Giải: Giải:

KÈ M

Tính B+, với F = {B C, C D} và R = {ABCDE}.

DẠ

Y

Thực hiện giống ví dụ trên, ta có B+=BCD


Chƣơng 4: Phụ thuộc hàm

CI AL

137

TÓM TẮT     

OF

FI

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.

ƠN

 

DẠ

Y

KÈ M

QU Y

NH


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

138

CI AL

BÀI TẬP

A

B

C

1

4

2

3

5

6

3

4

6

7

3

8

9

1

0

OF

r

FI

1. Cho quan hệ:

ƠN

r thoả phụ thuộc hàm nào sau đây: A  B, A  C, AB  C, BC  A

NH

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á;

QU Y

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ỏ {XYW, Y  Z, WZ  P, WP  QR, Q  X} ⊨ XYP.

KÈ M

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 }

Y

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 }

DẠ

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.


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.

NH

ƠN

OF

FI

CI AL

SốBHXH 1135 1057

KÈ M

1068

QU Y

Hợp đồng

1135

Số HĐ

Giờ

Tên NV

MãKS

TênKS

C1024

16

Lê V

K25

Rex

C1024

24

Lý S

K25

Rex

C1025

28

Trần X

K04

Royal

C1025

15

Lê V

K04

Royal

DẠ

Y

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


Y

DẠ

KÈ M QU Y ƠN

NH

FI

OF

CI AL


CI AL FI

Chƣơng 5 DẠNG CHUẨN Mục tiêu của chƣơng.

OF

Trong chƣơng này chúng ta sẽ học về:          

NH

ƠN

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.

QU Y

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.

KÈ M

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

Y

Cho quan hệ

r (A a1 a1 a2

B b1 b2 b3

C c1 c2 c1

D) d1 d1 d2

DẠ

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


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

142

CI AL

= {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

OF

FI

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:

ƠN

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.

NH

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.

QU Y

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>.

1.

KÈ M

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.

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).

DẠ

Y

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,


Chƣơng 5: Dạng chuẩn

143

CI AL

Cho <R, F>, ta có các nhận xét sau:

OF

FI

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

Giải: Gọi K là tập các khoá ta có:

ƠN

Tìm tất cả các khoá của <R, F> với R=(DSMG) và F={MD, DM, DSG, MSG}.

QU Y

NH

 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}

KÈ M

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á:

DẠ

Y

 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}


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

144

CI AL

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.

ƠN

OF

FI

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:

KÈ M

QU Y

NH

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 :

Y

1. Xây dựng cây theo các nguyên tắc đã nêu

DẠ

2. Tập hợp các khoá trên cây vào K 3. RETURN(K)


Chƣơng 5: Dạng chuẩn

145

CI AL

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

FI

Cho lƣợc đồ <R, F> với R = (ABC) và F = { AB  C, C  A, A  B } ta có

A

B

OF

 ABC

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}

ƠN

 ABC A

NH

Ví dụ 5.8

C

Xét lƣợc đồ quan hệ R = (DSMG) với F = { M  D, D  M, DS  G, MS  G }.

SM

2.

QU Y

S MD

SD

Các dạng chuẩn

KÈ M

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

DẠ

Y

Thuộc tính A được gọi là nguyên tố nếu vdom(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


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

146

CI AL

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

FI

Định nghĩa 5.1

OF

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

ƠN

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 1 53 vì miền giá trị của các thuộc tính đƣợc coi là nguyên tố. Quan hệ KH

( MãKH k02 …

NH

Ví dụ 5.10 TênKH Lan

SốĐT) {08123456, 0912999999}

KÈ M

QU Y

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.

DẠ

Y

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.


Chƣơng 5: Dạng chuẩn

147

CI AL

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

OF

FI

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

ƠN

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

Định nghĩa 5.2

QU Y

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.

KÈ M

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

Y

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Ạ

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.


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

148

CI AL

Ví dụ 5.15

Cho quan hệ r định nghĩa trên lƣợc đồ <(ABCD), {AB  C, CD, DC}>: B b1 b2 b3

C c1 c2 c1

D) d1 d2 d1

FI

r (A a1 a1 a2

OF

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.

ƠN

2.3. Dạng chuẩn 3

NH

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

Định nghĩa 5.3

QU Y

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).).

KÈ M

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.

DẠ

Y

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á.


Chƣơng 5: Dạng chuẩn

149

CI AL

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.

FI

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

B b1 b2 b1

C) c1 c2 c1

ƠN

r (A a1 a1 a2

OF

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á.

NH

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)

QU Y

Đâ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.

KÈ M

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

Y

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.

DẠ

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ó:


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

150

CI AL

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

FI

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

OF

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 BC 54.

2.5. Xác định dạng chuẩn

NH

Ơ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>:

Ví dụ 5.22

QU Y

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.

Giải:

KÈ M

Xác định dạng chuẩn của lƣợc đồ <R, F> = <(ABCD), {AB  C, C  D, D  C}>.

DẠ

Y

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).


Chƣơng 5: Dạng chuẩn

151

Tìm tập khoá; Liệt kê các vi phạm của F; Xác định vế trái thuộc khóa; Xác định các thuộc tính không khóa; Kết luận dạng chuẩn.

FI

1. 2. 3. 4. 5.

CI AL

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:

X+

X⊊K

A∊Y

Vi phạm

ƠN

XY

OF

Sử dụng bảng dạng sau để trình bày quá trình xác định dạng chuẩn

Ví dụ 5.23

NH

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+

CD DC

CD CD

X⊊K

QU Y

XY

A∊Y

Vi phạm

D C

Chuẩn 3 Chuẩn 3

Vậy <R, F> đạt chuẩn 2.

KÈ M

Ví dụ 5.24

Xác định dạng chuẩn của lƣợc đồ <R, F> = <(ABC), {A  B, B  C}>. Giải:

DẠ

Y

Biết khóa duy nhất là A. Lập bảng XY

X+

BC

BC

Vậy <R, F> đạt chuẩn 2.

X⊊K

A∊Y

Vi phạm

C

Chuẩn 3


Ví dụ 5.25

CI AL

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

152

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

AB BC

ABC AD BC

A∊Y

Vi phạm

B C

Chuẩn 2 Chuẩn 3

Vậy <R, F> đạt chuẩn 1.

Chiếu của tập phụ thuộc hàm

ƠN

3.

FI

X+

OF

X⊊K

XY

NH

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

Định nghĩa 5.5

QU Y

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.

KÈ M

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 𝜋𝑆 𝑋 = 𝜋𝑆 𝐹, 𝑋 = 𝑋 → 𝐴: 𝐴 ∈ 𝑆

DẠ

Y

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ó: 𝜋𝑆 𝐹 =

𝜋𝑆 𝑋 𝑋∈𝑆𝐹


Chƣơng 5: Dạng chuẩn 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)

FI

4. Rút gọn, hay tìm phủ tối tiểu, nếu cần.

CI AL

153

Ví dụ 5.26

OF

Cho F = {AB  CD, C  D, D  C}, tính ABC(F) và CD(F). Giải:

ƠN

 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

NH

Cho F = {A  C, B  D, CD  H}, tính ABH(F) Giải:

Ví dụ 5.28

QU Y

 Tính ABHF = {A, B, AB};  Tính A+ = AC, B+ = BD, AB+ = R;  Suy ra ABH(F) = {AB H}

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}. Tính

KÈ M

Giải:

ABC(F) = {AB C} CD(F) = {C  D, D  C},

DẠ

Y

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.


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

154

CI AL

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

OF

FI

1. Một phụ thuộc hàm f = XY đượ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 = XY đượ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.

ƠN

Đị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.

NH

Ví dụ 5.29

QU Y

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 :

KÈ M

F = { B1B2A, D1D2B1, B1C1, B2C2, D2A, AB1C2D2,

D1D2B2, D1A, AB2C1D1}

Xét lƣợc đồ cơ sở dữ liệu :

DẠ

Y

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.


Chƣơng 5: Dạng chuẩn

155

CI AL

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

OF

FI

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 R j. Định nghĩa 5.9

ƠN

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. Cho lƣợc đồ cơ sở dữ liệu

NH

Ví dụ 5.31

QU Y

D = { <ABC, {A  BC, C  A}>, <BCD, {CD}>, <DE, {DE}>}

KÈ M

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}

DẠ

Y

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ả.


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} B b1 b1 b3 b4 b1

C) c1 c2 c5 c2 c4

r2 ( B b1 b2 b3 b4 b5

C c1 c2 c3 c1 c2

D) d1 d2 d3 d1 d2

r3 (D d1 d2 d3

E) e1 e2 e1

FI

(A a1 a2 a3 a4 a5

OF

r1

CI AL

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

156

Ta thấy F bị ép thoả trong D với các lƣợc đồ thành phần

ƠN

D = {<ABC, {A  BC, C  A}>, <BCD, {CD}>, <DE, {DE}>} 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.

NH

Ví dụ 5.33

QU Y

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, {CD, DC}>} đạ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

KÈ M

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

DẠ

Y

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.


Chƣơng 5: Dạng chuẩn

CI AL

157

TÓM TẮT

DẠ

Y

KÈ M

QU Y

NH

ƠN

OF

FI

 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).


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 };

FI

b. R = ABCDEF; F = { A  B, C  DF, AC  E, D  F };

CI AL

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

158

OF

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}> a. D = {AC, AB} với F = {A  C, B  C}

ƠN

3. Xác định dạng chuẩn của các lƣợc đồ cơ sở dữ liệu D sau

NH

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}

QU Y

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.

KÈ M

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>}

DẠ

Y

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}


Chƣơng 5: Dạng chuẩn

159

CI AL

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.

OF

FI

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.

Hợp đồng Số HĐ

Giờ

1135 1057 1068 1135

C1024 C1024 C1025 C1025

16 24 28 15

Tên NV

MãKS

TênKS

Lê V Lý S Trần X Lê V

K25 K25 K04 K04

Rex Rex Royal Royal

NH

SốBHXH

ƠN

6. Cho quan hệ:

KÈ M

Lịch mổ

QU Y

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ệ:

Tên bác sĩ

MãBN TênBN Ngày

Giờ

Phòng

D1011 D1011 D1024 D1024 D1032 D1032

Nguyễn A Nguyễn A Phạm B Phạm B Trần C Trần C

B100 B105 B108 B108 B105 B110

10:00 12:00 10:00 14:00 16:30 18:00

P15 P15 P10 P10 P15 P13

DẠ

Y

MãNV

Lê V Lý S Trần X Trần X Lý S Lê X

12/5/08 12/5/08 12/5/08 14/5/08 14/5/08 15/5/08


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

160

CI AL

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.

DẠ

Y

KÈ M

QU Y

NH

ƠN

OF

FI

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”


CI AL

FI

Chƣơng 6 CHUẨN HOÁ LƢỢC ĐỒ QUAN HỆ Mục tiêu của chƣơng.

OF

Trong chƣơng này chúng ta sẽ học về: 

ƠN

NH

 

  

QU Y

  

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.

KÈ M

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.

Y

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:

DẠ

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.


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

162

CI AL

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.

1.

FI

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.

Kiểm tra các tiêu chuẩn

NH

ƠN

OF

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

QU Y

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.

KÈ M

Đị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.

DẠ

Y

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.


Chƣơng 6: Chuẩn hoá lƣợc đồ quan hệ

163

CI AL

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:

FI

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.

OF

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.

ƠN

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

NH

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:

QU Y

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.

KÈ M

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

DẠ

Y

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ừ.


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

164

CI AL

2. Tính T*

3. Kiểm tra xem có dòng nào toàn a không Ví dụ 6.3

FI

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:

B a2 a2 b5

C b1 a3 b6

D) b2 b4 a4

T* (A a1 b3 a1

B a2 a2 b5

C a3 a3 b6

D) a4 b4 a4

NH

Tính T *:

ƠN

T (A a1 b3 a1

OF

Lập bảng T 

QU Y

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

KÈ M

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: 𝐹 ′ =∪ 𝐹𝑖

DẠ

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 𝑋𝐹′ .


Chƣơng 6: Chuẩn hoá lƣợc đồ quan hệ

165

CI AL

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ã 

FI

Ra : X+F‟ Các bước :

OF

1. do

ƠN

Y=X foreach Ri   do X = X  (X  Ri)+F  Ri while (Y != X) 2. return(X)

NH

Ví dụ 6.4

Cho F = {A  B, B  C, C  D, D  A} và  ={(AB), (BC), (CD)}. Tính D+F‟. Giải:

KÈ M

QU Y

 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

Y

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)}.

DẠ

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.


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.

FI

Vậy F bị ép thoả trong , tức  bảo toàn phụ thuộc hàm F.

CI AL

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

166

 Tính T *, X(R), nhưng không thay đổi các dòng của T(R)

OF

 Quan sát các cột toàn a, X+F‟ = {Aj | t(Aj) = a} Ví dụ 6.6

ƠN

Cho F = {AD  C, CD  A, B  D} và phân rã  ={(ABC), (CD)}. Tính AB+F‟. Giải:

NH

Lập bảng

QU Y

T,[AB](R) ( A B C a a a b2 b3 a a a b4 Đƣờng đứt nét phân biệt các dòng của T với t. Tính:

T*,[AB](R) ( A a b2 a

2.

C a a a

D) b1 a b1

KÈ M

Suy ra CB+F‟ = ABC

B a b3 a

D) b1 a b5

Chuẩn hoá

Y

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:

DẠ

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)


Chƣơng 6: Chuẩn hoá lƣợc đồ quan hệ

167

CI AL

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).

FI

Ví dụ 6.7

OF

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:

ƠN

Tập các khoá chỉ định cũng chính là tập tất cả các khoá.

NH

 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)}.

KÈ M

(PDM)

QU Y

(FROPADTLCSM ) PD  M

T  LCS (FROPADT)

(TLCS) LC  S (TLC)

DẠ

Y

(LCS)

(FROPADTLCS)

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ã ρ FROPADTLCSM là viết tắt của FLIGHT, FROM, TO, DEPARTS, ARRIVES, DURATION, PLANE-TYPE, FIRST-CLASS, COACH, TOTAL-SEATS, #MEALS 60


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

CI AL

168 Nhận xét

OF

FI

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

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

NH

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:

QU Y

Chọn các phụ thuộc hàm bắc cầu thứ tự là K  D, H  NK và M  T ta có R(HNKDMTSG) KD

KÈ M

R1(KD)

R2(HNKMTSG) H  NK

R21(HNK)

R22(HMTSG) R221(MT)

MT R222(HMSG)

DẠ

Y

Đƣợ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á.


Chƣơng 6: Chuẩn hoá lƣợc đồ quan hệ

169

CI AL

2.2. Tiếp cận tổng hợp

FI

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

OF

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)}.

ƠN

Chúng ta dùng định lý 1 để bảo đảm tính bảo toàn thông tin. Ví dụ 6.10

QU Y

NH

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.

KÈ M

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

DẠ

Y

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.


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

170

CI AL

Giải:

FI

 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.

OF

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:

ƠN

F đƣợc đặc trƣng đầy đủ; Đạt tối thiểu chuẩn 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; Bảo toàn thông tin.

NH

1. 2. 3. 4.

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.

QU Y

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 :

DẠ

Y

KÈ M

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.


Chƣơng 6: Chuẩn hoá lƣợc đồ quan hệ

171

CI AL

Ví dụ 6.13

Ví dụ 6.14

OF

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

FI

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:

ƠN

Cho lƣợc đồ <(GHCDAB), F = {GH  AD, AG  B, CD  GH, C  A, BH  C}>. Áp dụng thuật toán:

NH

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

QU Y

Ví dụ 6.15

Cho lƣợc đồ <(ABCDE), {A  B, B  A, AC  D, BC  E}>.

3.

KÈ M

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

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.

Y

Ví dụ 6.16

DẠ

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)


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

172

M a b a

L) x x x

FI

r (S 1 2 1

CI AL

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

OF

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.

NH

ƠN

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.

Định nghĩa 6.2

QU Y

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ị) 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)

KÈ M

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>.

DẠ

Y

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.


Chƣơng 6: Chuẩn hoá lƣợc đồ quan hệ

173

CI AL

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.

FI

Ví dụ 6.17

OF

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

DẠ

Y

KÈ M

QU Y

NH

ƠN

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.


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

CI AL

174

TÓM TẮT

DẠ

Y

KÈ M

QU Y

NH

ƠN

OF

FI

 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.


Chƣơng 6: Chuẩn hoá lƣợc đồ quan hệ

175

CI AL

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 }

FI

b. R = (ABCDE, {AB, AC}); F = { AB  CDE, AC  BDE, B  CE, C  BD }

OF

c. R = (ABCDE,{A}); F = { A  BCDE, CD  E, EC  B }

ƠN

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 }

NH

b. R = ABCDE; F = { A  B, B  AE, AC  D } c. R = AB1B2C1C2DEI1I2I3J;

QU Y

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:

KÈ M

a. R = ABCD; F = { ABC, AD, BDC } b. R = (Store, Department, Item, Manager); F = { SID, SDM }

DẠ

Y

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 = { AC, DC, BDA } b. R = ({Flight, frOm, To, Depart, Arrives, dUration, Plane type, first cLass, Coach, total Seats, #Meal}, {F, OTD,


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

176

CI AL

OTA}); F = { PLCS, DUM, AUM, LCS, LSC, CSL }

FI

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 }.

OF

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.

ƠN

6. Cho lƣợc đồ <R, F>, R = ABCDE và F = { ABC, CE, EC, CD, ABE } a. Xác định dạng chuẩn của <R, F>;

NH

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 }.

QU Y

7. Cho lƣợc đồ R = {Broker, Office, Investor, Stock, Quantity, Dividend} = BOISQD và tập phụ thuộc hàm F = {SD, IB, ISQ, BO }. 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;

KÈ M

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}

Y

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.

DẠ

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 đủ.


Chƣơng 6: Chuẩn hoá lƣợc đồ quan hệ

177

CI AL

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).

FI

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.

ƠN

OF

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 đủ

NH

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)

QU Y

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.

KÈ M

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

Y

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.

DẠ

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ị.


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

DẠ

Y

KÈ M

QU Y

NH

ƠN

OF

FI

CI AL

178


CI AL FI

Chƣơng 7 MÔ HÌNH THỰC THỂ KẾT HỢP Mục tiêu của chƣơng.

QU Y

NH

ƠN

OF

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 Relationship 63, viết tắt là ER).

Khái niệm

KÈ M

1.

DẠ

Y

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


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

180

CI AL

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.

FI

Ví dụ 7.1

ƠN

OF

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 …

NH

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

QU Y

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 …

KÈ M

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

DẠ

Y

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


Chƣơng 7: Mô hình thực thể kết hợp

181

CI AL

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”.

OF

FI

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

ƠN

Ký hiệu thực thể Nhân viên, Chi nhánh và thực thể yếu Người thân Nhân Viên

Chi nhánh

NH

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.

QU Y

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.

KÈ M

1.2. Thuộc tính

DẠ

Y

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


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

182

Họ Tên

CI AL

Ví dụ 7.5 Ngày Sinh

Địa chỉ

FI

Sinh Viên

OF

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.

ƠN

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

Ngày Sinh

QU Y

Họ Tên

NH

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ó:

Sinh Viên

Địa chỉ

Thành Phố Quận Số Nhà

KÈ M

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.

DẠ

Y

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


Chƣơng 7: Mô hình thực thể kết hợp

183

CI AL

Ví dụ 7.7 Họ Tên

Ngày Sinh

Mã SV

FI

Sinh Viên

OF

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.

ƠN

Ví dụ 7.8 Họ Tên

NH

Ngày Sinh

Mã SV

Địa chỉ

QU Y

Sinh Viên

Tuổi

1.3. Mối kết hợp

Y

KÈ M

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

DẠ

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.


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

184

Giảng Viên

Dạy

Thành Phố

Kề với

Nhân Viên

Lập

CI AL

Ví dụ 7.9

OF

FI

Môn

ƠN

Khách Hàng

Hóa Đơn

Ví dụ 7.10

[1:1]

KÈ M

Giảng Viên

QU Y

NH

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.

[0:6]

Giảng Viên

DẠ

Y

Nhân Viên

[0:n]

[4:30]

Thuộc

Khoa

[1:2]

Dạy

Môn

[1:n]

Lập [1:1] Hóa Đơn

Khách Hàng


Chƣơng 7: Mô hình thực thể kết hợp

185

CI AL

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ất 68.

Ví dụ 7.11 Giảng Viên

Thuộc

Khoa

[4:30]

ƠN

[1:1]

OF

FI

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.

NH

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ƣợng 69.

1.4. Nhiều hơn về mối kết hợp Thực thể yếu (thực thể phụ thuộc)

QU Y

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

KÈ M

 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.

Y

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

DẠ

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áo trình cơ sở dữ liệu

186

Câu Lạc Bộ

CI AL

Ví dụ 7.12

Đội

Lập

FI

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

ƠN

OF

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.

NH

Ví dụ 7.13 Giảng Viên

Môn

QU Y

Dạy

Lớp

KÈ M

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

DẠ

Y

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.


Chƣơng 7: Mô hình thực thể kết hợp

187

FI

CI AL

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.

OF

Ví dụ 7.14 Một phân hoạch thực thể sinh viên

Tại Chức

Bằng 2

QU Y

Chính Quy

Ví dụ 7.15

G

NH

G

ƠN

Sinh Viên

KÈ M

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ý.

DẠ

Y

Giảng Viên

Nhân Viên

Gs Quản Lý


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

188

CI AL

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.

FI

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

OF

Ví dụ 7.16 Thực thể Sinh viên với khoá chính Mã SV

ƠN

Sinh viên

NH

Mã SV Họ tên Ngày sinh Giới tính Xác định phụ thuộc hàm S  HNG Ví dụ 7.17

QU Y

Phụ thuộc hàm cảm sinh từ mối kết hợp 1-n Mối kết hợp 1-n giữa hai thực thể Sinh viên và Lớp Sinh viên SV

0:n

Lớp Mã Lớp …

KÈ M

Mã …

1:1

Xác định phụ thuộc hàm SL 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á

DẠ

Y

Hoá đơn Mã …

SV

1:n

Số lƣợNg

Xác định phụ thuộc hàm SLN

0:n

Hàng hoá Mã Lớp …


Chƣơng 7: Mô hình thực thể kết hợp

189

CI AL

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

FI

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.

OF

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

NH

ƠN

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.

Trên lƣợc đồ

QU Y

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ônlớ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. 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.

KÈ M

Ví dụ 7.21

Y

Xét hai kết hợp Nợ và Có giữa Nhật ký và Tài khoản nhƣ sau

71

DẠ

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.


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

Nhật ký

0:n

Tài khoản

Nợ NK …

TK …

ID Có 0:n

Số

FI

1:1

CI AL

190

OF

Ở đâ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

Ví dụ 7.22 Trong ngữ cảnh ghi nợ cho tài khoản:

NK …

1:1 ID

Nợ

NH

Nhật ký

ƠN

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ó

0:n

Tài khoản TK Số …

Nhân bản thực thể Ví dụ 7.23 Nhân bản tài khoản Nhật ký

QU Y

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.

KÈ M

1:1

NK …

ID

0:n

Tài khoản Nợ TK Nợ …

Ta có Nhật ký → Tài khoản Nợ. Chuyên biệt hoá thực thể

Y

Ví dụ 7.24

DẠ

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.


Chƣơng 7: Mô hình thực thể kết hợp Giải

CI AL

191

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.

Phòng

NV

Mã PG …

OF

Mã …

0:n

FI

1:1

Nhân viên

Trong ngữ cảnh toàn bộ trưởng phòng: Ta có N  P, P  T, T  N đúng.

QU Y

NH

ƠN

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ếp 73. 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 a b c d

P) 1 1 2 2

pb (P 1 2

T) u v

tp (T u v

N) a b

KÈ M

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.

DẠ

Y

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.


1:1

Nhân viên Mã …

0:n

NV

Phòng Mã …

1:1 Trưởng phòng

ƠN

OF

NV Thường

PG

FI

1:1 G

CI AL

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

192

1.6. Các ký hiệu trong Power Designer

NH

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ị

QU Y

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ả).

DẠ

Y

KÈ M

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


Chƣơng 7: Mô hình thực thể kết hợp

193

CI AL

Thực thể yếu

FI

Ta có ký hiệu thể hiện sự phụ thuộc, nhƣ sau

OF

Mối quan hệ (relationship)

Mối kết hợp (association)

NH

ƠN

Dùng để đặc tả mối kết hợp không quá 2 ngôi và không có thuộc tính 75. Hình sau minh họa mối kết hợp 1 ngôi và 2 ngôi:

DẠ

Y

KÈ M

QU Y

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


NH

ƠN

OF

FI

Nếu cần thiết chuyển thành thực thể (thực thể kết hợp) ta có

CI AL

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

194

QU Y

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.

KÈ M

Thực thể cha và thực thể con

DẠ

Y

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.


Chƣơng 7: Mô hình thực thể kết hợp Nhan Vien

FI

Inheritance_1

CI AL

195

Quan Tri

OF

Giang Vien

ƠN

Inheritance_2

GV Moi

NH

GV Co Huu

Ví dụ minh họa

QU Y

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.

KÈ M

 Đại học X có nhiều khoa, mỗi khoa tổ chức đào tạo một số ngành

DẠ

Y

 Để 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.


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

196

OF

FI

CI AL

 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

ƠN

 Mỗi năm khoa đều mở ra một số lớp cho mỗi ngành

KÈ M

QU Y

NH

 Và phân công giảng dạy phù hợp với mục tiêu đào tạo

DẠ

Y

Ta có mô hình dữ liệu mức quan niệm nhƣ sau


Chƣơng 7: Mô hình thực thể kết hợp

NH

ƠN

OF

FI

CI AL

197

1.7. Chuyển sang mô hình quan hệ

Quy tắc

QU Y

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ệ.

KÈ M

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

DẠ

Y

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.


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

198

CI AL

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:

FI

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;

OF

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.

ƠN

5. Với các kết hợp 2 ngôi:

NH

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;

QU Y

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.

KÈ M

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

DẠ

Y

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.


Chƣơng 7: Mô hình thực thể kết hợp

199

NH

ƠN

OF

FI

CI AL

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.

QU Y

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)

KÈ M

Dùng quy tắc 5:

 Bổ sung P vào nv(NP) và ràng buộc khoá ngoại

Y

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.

DẠ

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].


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

200

CI AL

Ví dụ 7.26

QU Y

NH

ƠN

OF

FI

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È M

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:

DẠ

Y

 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:


Chƣơng 7: Mô hình thực thể kết hợp

201

CI AL

 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:

FI

 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

OF

{k(K), gv(GK), m(MNK), tq(MNM‟N‟), n(NK), l(LN), gm(GMN), pc(GMNL)}

Lập mô hình dữ liệu mức quan niệm

ƠN

2.

Phƣơng pháp luận

NH

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ế.

QU Y

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;

KÈ M

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.

DẠ

Y

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á


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

202

CI AL

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.

FI

4. Xây dựng các biểu đồ thể hiện của bảng (Table Instance Charts)

b. Công cụ: dùng mẫu; c. Mục tiêu: sẵn sàng cho cài đặt.

ƠN

5. Cài đặt

OF

a. Phương pháp: quan sát tập dữ liệu và thử đặt chúng vào bảng;

NH

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.

QU Y

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

KÈ M

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.

Y

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.

DẠ

Đầ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.


Chƣơng 7: Mô hình thực thể kết hợp

203

CI AL

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.

OF

FI

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.

b

17

NH

a

ƠN

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:

14

22

12

19

QU Y

8

2

KÈ M

3

6

x

7

u

13

40

Y DẠ

c

v 20

40

14 2

14

14

111

14 511

331

y

911

14 156

632


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

204

CI AL

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.

FI

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ệu 77. Ở đây, chúng ta có hai chức năng: lập hoá đơn và ghi sổ nhật ký kế toán.

OF

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.

2.3. Tìm mối kết hợp

NH

ƠN

Chúng ta thu đƣợc danh sách các thực thể

DẠ

Y

KÈ M

QU Y

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.


Chƣơng 7: Mô hình thực thể kết hợp

205

OF

FI

CI AL

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.

Ơ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

NH

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.

DẠ

Y

KÈ M

QU Y

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


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

206

3.

FI

CI AL

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

Hướng dẫn lập mô hình

OF

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:

QU Y

NH

ƠN

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

KÈ 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

DẠ

Y

b. Báo cáo về những nhận xét của khách sau khi xem nhà


Chƣơng 7: Mô hình thực thể kết hợp

207

CI AL

c. Tạo và bảo tồn thông tin kiểm tra do mình thực hiện

OF

FI

d. Tạo và bảo tồn thông tin quảng cáo do mình thực hiện

NH

Ơ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

DẠ

Y

KÈ M

QU Y

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.


Xác định thuộc tính cho mỗi thực thể và mỗi mối kết hợp

CI AL

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

208

OF

FI

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.

ƠN

Trích các thông tin liên quan từ các tài liệu đặc tả:

DẠ

Y

KÈ M

QU Y

NH

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à.


Chƣơng 7: Mô hình thực thể kết hợp

209

ƠN

OF

FI

CI AL

Mô hình dữ liệu mức quan niệm:

Các ràng buộc:

Từ góc nhìn của Giám sát Tìm thực thể và mối kết hợp

QU Y

Tạo và bảo tồn thông tin về nhà và chủ nhà Tạo và bảo tồn thông tin về khách hàng Xem danh sách các quảng cáo theo nhà Xem danh sách các quảng cáo theo báo Xem nội dung các kiểm tra định kỳ Xem danh sách nhà đang thuê theo từng chuyên viên

DẠ

Y

KÈ M

a. b. c. d. e. f.

NH

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.


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

210

ƠN

OF

FI

CI AL

Xác định thuộc tính và vẽ mô hình

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:

DẠ

Y

KÈ M

QU Y

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.


Chƣơng 7: Mô hình thực thể kết hợp

211

Xây dựng mô hình (toàn cục) mức quan niệm

QU Y

NH

ƠN

OF

FI

CI AL

3.2.

DẠ

Y

KÈ 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.


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

CI AL

212

TÓM TẮT

DẠ

Y

KÈ M

QU Y

NH

ƠN

OF

FI

 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.


Chƣơng 7: Mô hình thực thể kết hợp

213

CI AL

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.

OF

FI

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).

NH

ƠN

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.

QU Y

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)

KÈ M

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).

DẠ

Y

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


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

214

Hãy lập mô hình thực thể kết hợp với các thực thể:

FI

 C_Nganh (Chuyên Ngành),  Mon (Môn),  CTD_Tao (Chƣơng Trình Đào Tạo)

CI AL

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ý.

OF

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:

NH

ƠN

 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.

QU Y

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:

KÈ M

a. Vẽ mô hình thực thể kết hợp, và đƣa ra lƣợc đồ cơ sở dữ liệu quan hệ.

DẠ

Y

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


Chƣơng 7: Mô hình thực thể kết hợp

215

ƠN

OF

FI

CI AL

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:

Hãy:

QU Y

NH

 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.

KÈ M

 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

DẠ

Y

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.


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

216

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

ƠN

OF

FI

Thuộc tính

CI AL

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:

NH

 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ụ).

QU Y

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

KÈ M

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)

DẠ

Y

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.


Chƣơng 7: Mô hình thực thể kết hợp

217

CI AL

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ó;

DẠ

Y

KÈ M

QU Y

NH

ƠN

OF

FI

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


Y

DẠ

KÈ M QU Y ƠN

NH

FI

OF

CI AL


CI AL

TÀI LIỆU THAM KHẢO

FI

[1] Thomas Connolly, Carolyn Begg, Anne Strachan. Database Systems: A Practical Approach to Design, Implementation and Management. Addison Wesley, 1996.

OF

[2] Raghu Ramakrichnan, Johnannes Gehrke. Database Management Systems. Mc Graw Hill, 2000. [3] Peter Rob, Carlos Coronel. Database Systems. Thomson LearningTM, 2000.

ƠN

[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.

NH

[6] David Maier. The Theory of Relational Databases. Computer Science Press, 1983.

DẠ

Y

KÈ M

QU Y

[7] Jeffrey D.Ullman. Principle of Database and Knowledge Base Systems. Computer Science Press, 1988.


Y

DẠ

KÈ M QU Y ƠN

NH

FI

OF

CI AL


CI AL OF

FI

Phụ lục XẾP LỊCH THỰC HÀNH

Đặc tả

1.

ƠN

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.

NH

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;

QU Y

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;

KÈ 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;

DẠ

Y

6. Xếp các lớp cùng khối vào cùng ca và cùng địa điểm.


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

222

Khối lớp Lớp Sĩ số lớp Ca thực hành Phòng máy Địa điểm Số máy

K L S C P D M

Thiết kế

FI

Viết tắt

OF

2.

Thuộc tính

CI AL

Các thuộc tính

ƠN

Á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

NH

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

QU Y

F = { L  KPS, K  DC, P  DM, CP  L }

Xác định dạng chuẩn 1. Tìm tập khóa

K+ = KDC

P+ = PDM

KP+ = KPDCM

PC+ = PCLKSDM (Khóa)

KÈ M

L+ = LKPSDCM (Khóa)

C+ = C

Y

2. Tìm các vi phạm (chỉ trong F)

DẠ

Phụ thuộc hàm K  DC PD

Thuộc tính không khóa D D

Vậy R ở dạng chuẩn 1

Thuộc tính khóa C

Vi phạm chuẩn 3 chuẩn 2


223

CI AL

Tìm phân rã bằng thuật toán tổng hợp Thực hiện thuật toán

OF

FI

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)}

ƠN

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.

KÈ M

QU Y

NH

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.

DẠ

Y

3. Bằng cách cài đặt ràng buộc tồn tại r 1[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


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

224

CI AL

một ràng buộc tham chiếu (khóa ngoại) với KC là khóa 79 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.

FI

Ngoài ra anh ta cũng thiết kế 3 khung nhìn cho ngƣời sử dụng

3.

Cài đặt và thử nghiệm

ƠN

OF

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)

Quan hệ lớp (bao gồm cả lịch thực hành của lớp) r1

K k1 k1 k2 k2 k3 k3

S 5 7 6 7 5 6

P p1 p2 p3 p2 p4 p5

P p1 p2 p3 p4 p5

D d1 d1 d1 d2 d2

M 6 8 6 6 6

QU Y

L l1 l2 l3 l4 l5 l6

NH

Thỏa ràng buộc khóa L và PC

C c2 c2 c1 c1 c2 c2

Quan hệ phòng máy r3

DẠ

Y

KÈ M

Thỏa ràng buộc khóa P

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


225

CI AL

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ị) D d1 d1 d2

C c2 c1 c2

OF

Tìm các vi phạm

FI

K k1 k2 k3

NH

ƠN

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

Làm việc với cơ sở dữ liệu

4.

Trong 3 khung nhìn đƣợc thiết kế, hai khung nhìn v1 và v2 rất dễ làm việc.

KÈ M

QU Y

Khung nhìn v1 (phòng máy) P p1 p2 p3 p4 p5

D d1 d1 d1 d2 d2

M 6 8 6 6 6

L l1 l2 l3 l4 l5 l6

K k1 k1 k2 k2 k3 k3

S 5 7 6 7 5 6

DẠ

Y

Khung nhìn v2 (lớp)


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

226

CI AL

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:

l3 l4 l5 l6

5.

? ? ? ? ?

? ? ? ? ?

Hỗ trợ lập trình

OF

l2

FI

L P C l1 ? ?

NH

ƠN

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.

Xét ví dụ sau: Ví dụ 0.1

QU Y

Để 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.

DẠ

Y

KÈ M

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 d1 d1 d1 d1 d1 d1 d1 d1

C c1 c1 c1 c1 c2 c2 c2 c2

L l1 l2 l3 l4 l1 l2 l3 l4


227 C c1 c1 c2 c2

L l5 l6 l5 l6

CI AL

D d2 d2 d2 d2

OF

FI

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. K k1 k2 k1 k2 k3 k3

ƠN

C c1 c1 c2 c2 c1 c2

NH

D d1 d1 d1 d1 d2 d2

QU Y

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 k1 k2 k3

D d1 d1 d2

C c2 c1 c2

DẠ

Y

KÈ M

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 d1 d1 d1 d1 d1

L l1 l1 l1 l2 l3

C c2 c2 c2 c2 c1

P p1 p2 p3 p2 p1


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

228 P p2 p3 p2 p4 p5 p4 p5

CI AL

C c1 c1 c1 c2 c2 c2 c2

FI

L l3 l3 l4 l5 l5 l6 l6

OF

D d1 d1 d1 d2 d2 d2 d2

Ở đị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ợ C c2 c2 c1 c1 c2

P p1 p3 p1 p3 p5

ƠN

L l1 l1 l3 l3 l6

NH

D d1 d1 d1 d1 d2

Xếp l1 vào p1 và l6 vào p5, hỗ trợ của chƣơng trình bây giờ là

QU Y

D L C P d1 l3 c1 p1 d1 l3 c1 p3

DẠ

Y

KÈ M

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 l1 l2 l3 l4 l5 l6

K k1 k1 k2 k2 k3 k3

S 5 7 6 7 5 6

P p1 p2 p3 p2 p4 p5

C c2 c2 c1 c1 c2 c2


229

CI AL

Thiết kế lại

6.

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ý.

OF

FI

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 }

ƠN

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

NH

{(LKSPC), (PDM)}

Mô hình thực thể kết hợp

7.

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ế.

QU Y

Trong ngữ cảnh bài toán xếp lịch thực hành ở đây, ta có mô hình (con) sau: K

KÈ M

K

L

C C

r

Y

L S

P P M D

DẠ

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ý


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

230

8.

CI AL

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>.

Kết luận

OF

FI

Đâ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 đó.

ƠN

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.

DẠ

Y

KÈ M

QU Y

NH

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.


CI AL

CHỈ MỤC

ƠN

OF

FI

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

DẠ

Y

KÈ M

QU Y

NH

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


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

232

DẠ

Y

KÈ M

ƠN

OF

FI

CI AL

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

NH

QU Y

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


233

ƠN

OF

FI

CI AL

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

DẠ

Y

KÈ M

QU Y

NH

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


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.