Cuốn Cơ sở dữ liệu này tóm tắt lại cho người học những kiến thức lý thuyết như mô hình thực thể - liên hệ, mô hình cơ sở dữ liệu quan hệ, ngôn ngữ cơ sở dữ liệu SQL, thiết kế cơ sở dữ liệu. Sau mỗi phần tóm tắt lý thuyết sẽ là phần bài tập kèm theo lời giải tóm tắt để giúp các bạn sinh viên có thể nắm bắt và rèn luyện kỹ năng làm bài tập được tốt hơn. Mời các bạn cùng tham khảo.
Trang 1Mục lục
Chương 1 MÔ HÌNH THỰC THỂ - LIÊN HỆ
A TÓM TẮT LÝ THUYẾT 6
1.1 Các khái niệm và kiến thức cơ bản 6
1.1.1 Khái niệm cơ sở dữ liệu 6
1.1.2 Hệ cơ sở dữ liệu 6
1.1.3 Các mức trừu tƣợng trong cơ sở dữ liệu 6
1.1.4 Lƣợc đồ (Scheme) và Thể hiện (Instance) 6
1.2 Mô hình thực thể liên hệ (Entity- Relationship model) 7
1.2.1 Thực thể 7
1.2.2 Tập thực thể 7
1.2.3 Thuộc tính và khoá 7
1.2.4 Phân cấp ISA (là một) 7
1.2.5 Mối liên hệ 7
1.2.6 Thuộc tính khoá vay mƣợn 8
1.2.7 Sơ đồ thực thể liên hệ 8
1.2.8 Tính chất hàm của mối liên hệ 8
1.2.9 Biểu diễn tính chất hàm trong các sơ đồ thực thể - liên hệ 9
B BÀI TẬP 12
Chương 2 MÔ HÌNH CƠ SỞ DỮ LIỆU QUAN HỆ A TÓM TẮT LÝ THUYẾT 21
2.1 Các khái niệm cơ bản 21
2.1.1 Mô hình cơ sở dữ liệu (Relation model) 21
2.1.2 Các khái niệm quan hệ 21
2.2 Biến đổi sơ đồ thực thể - liên hệ sang mô hình quan hệ 21
2.2.1 Biến đổi các tập thực thể 22
2.2.2 Biến đổi mối liên hệ 22
2.3 Khoá của các quan hệ 22
2.4 Quan hệ có khoá chung 23
2.5 Một số phép toán đại số quan hệ 24
Trang 22.5.1 Phép hợp 24
2.5.2 Phép giao 24
2.5.3 Phép trừ 24
2.5.4 Phép tích Đề - Các 24
2.5.5 Phép chiếu (Projection ) 25
2.5.6 Phép chọn (Selection ) 25
2.5.7 Phép kết nối (Join) 25
2.6 Đại số quan hệ - một ngôn ngữ vấn tin 25
2.7 Tối ưu hoá các biểu thức đại số quan hệ 27
2.7.1 Các chiến lược tối ưu tổng quát 27
2.7.2 Biểu thức tương đương 27
2.7.3 Các phép biến đổi tương đương của đại số quan hệ 28
B BÀI TẬP 37
Chương 3 NGÔN NGỮ CƠ SỞ DỮ LIỆU SQL A TÓM TẮT LÝ THUYẾT 57
3.1 Tạo bảng 57
3.1.1 Mệnh đề tạo cấu trúc của bảng có dạng tổng quát như sau: 57
3.1.2 Vào dữ liệu cho bảng 57
3.2 Khối SELECT 58
3.2.1 Tìm kiếm theo câu hỏi đơn giản (tìm kiếm trên một bảng) 59
3.2.2 Tìm kiếm với câu hỏi phức tạp 65
3.3 Các mệnh đề cập nhật dữ liệu 70
3.3.1 Thêm bản ghi vào cuối bảng 70
3.3.2 Xóa bảng 70
3.4 Tạo view của người sử dụng 72
3.5 Các mệnh đề về an toàn dữ liệu 72
3.5.1 Trao quyền truy nhập 72
3.5.2 Huỷ bỏ quyền truy nhập 72
B BÀI TẬP 73
Trang 3Chương 4 THIẾT KẾ CƠ SỞ DỮ LIỆU
A TÓM TẮT LÝ THUYẾT 99
4.1 Phụ thuộc hàm 99
4.1.1 Khái niệm phụ thuộc hàm 99
4.1.2 Hệ tiên đề cho phụ thuộc hàm 100
4.1.3 Bao đóng của tập thuộc tính 100
4.1.4 Khóa của lƣợc đồ quan hệ 102
4.1.5 Phủ của tập các phụ thuộc hàm 104
4.2 Phép tách các lƣợc đồ quan hệ 106
4.2.1 Khái niệm phép tách một lƣợc đồ quan hệ 106
4.2.2 Phép tách kết nối không mất thông tin 106
4.2.3 Phép tách bảo toàn phụ thuộc hàm 109
4.3 Chuẩn hoá lƣợc đồ quan hệ 110
4.3.1 Khái niệm lƣợc đồ đƣợc chuẩn hoá và chuẩn hoá lƣợc đồ quan hệ 110
4.3.2 Dạng chuẩn thứ nhất (First Normal Form, viết tắt là 1NF) 110
4.3.3 Dạng chuẩn thứ hai (Second Normal Form, viết tắt là 2NF) 111
4.3.4 Dạng chuẩn thứ ba (Third Normal Form, viết tắt là 3NF) 111
4.3.2 Dạng chuẩn Boye-Codd (BCNF) 114
B BÀI TẬP 117
4.1 Bài tập về phụ thuộc hàm 117
4.2 Bài tập về phép tách lƣợc đồ quan hệ 194
4.3 Bài tập về chuẩn hóa sơ đồ quan hệ 203
4.4 Bài tập tổng hợp 213
Trang 4Chương 1
MÔ HÌNH THỰC THỂ - LIÊN HỆ
A TÓM TẮT LÝ THUYẾT
1.1 Các khái niệm và kiến thức cơ bản
1.1.1 Khái niệm cơ sở dữ liệu
Cơ sở dữ liệu là tập hợp các thông tin có quan hệ với nhau được lưu trữ trong
máy tính theo một quy định nhất định nhằm phục vụ cho một mục đích nào đó
1.1.2 Hệ cơ sở dữ liệu
Hệ cơ sở dữ liệu là một hệ thống gồm bốn thành phần:
- Cơ sở dữ liệu hợp nhất;
- Những người sử dụng;
- Hệ quản trị cơ sở dữ liệu;
- Các thiết bị nhớ ngoài được sử dụng để lưu trữ cơ sở dữ liệu
1.1.3 Các mức trừu tượng trong cơ sở dữ liệu
1) Mức cơ sở dữ liệu vật lý
Là tập hợp các tệp dữ liệu, các chỉ mục hoặc những cấu trúc lưu trữ khác như
heap, bảng băm (hash table), … dùng để truy xuất dữ liệu; nó mô tả dữ liệu được
lưu trữ một cách thực sự như thế nào trên các thiết bị nhớ ngoài
2) Mức cơ sở dữ liệu khái niệm
Là các mô tả những dữ liệu nào được lưu trữ trong cơ sở dữ liệu và các mối
quan hệ nào tồn tại giữa các dữ liệu này
3) Mức cơ sở dữ liệu khung nhìn
Là cách nhìn của người sử dụng đối với cơ sở dữ liệu, là một đối tượng
tưởng tượng được xây dựng từ cơ sở dữ liệu khái niệm nhưng thực sự không tồn tại
trong cơ sở dữ liệu đó
1.1.4 Lược đồ (Scheme) và Thể hiện (Instance)
1) Lược đồ (Schem ) là bộ khung hay cấu trúc của cơ sở dữ liệu
2) Thể hiện (Instance) là dữ liệu hiện có trong cơ sở dữ liệu
Trang 51.2 Mô hình thực thể liên hệ (Entity- Relationship model)
Là mô hình cho phép sử dụng các tên để mô tả dữ liệu - các tập thực thể thông
qua các thuộc tính và mối liên hệ giữa các tập thực thể Nó được dùng làm công cụ
thiết kế lược đồ cơ sở dữ liệu khái niệm
Các đặc tính của tập thực thể gọi là các thuộc tính Mỗi thuộc tính của tập thực
thể được đặt bởi một tên và lấy giá trị trên một miền dành cho thuộc tính đó
2) Khóa
Một hoặc một tập các thuộc tính dùng để xác định một cách duy nhất mỗi
thực thể trong một tập thực thể gọi là khóa đối với tập thực thể đó
1.2.4 Phân cấp ISA (là một)
A ISA B (A là một B) nếu tập thực thể A là một loại B đặc biệt hoặc tương
đương tập thực thể B là sự tổng quát hóa của tập thực thể A Mục đích chính của
việc khai báo mối liên hệ ISA giữa các tập thực thể A và B là A có thể kế thừa các
thuộc tính của B, nhưng A có thể có thêm những thuộc tính khác mà B không có
1.2.5 Mối liên hệ
Mối liên hệ (Relationship) R giữa các tập thực thể E1, E2, E3, , EK là một
danh sách có thứ tự R(E1, E2, E3, , EK) của các tập thực thể đó Nó là tập hợp các
bộ thực thể (e1, e2, e3, , ek) với ei Ei và e1, e2, e3, , ek có quan hệ R với nhau
(Một tập thực thể đặc biệt có thể xuất hiện nhiều lần trong danh sách)
Trang 61.2.6 Thuộc tính khoá vay mượn
Là khoá của tập thực thể A được sử dụng làm các thuộc tính của tập thực thể
B; nhờ đó mà với mỗi thực thể a trong A ta xác định được các thực thể b trong B có
quan hệ với a
1.2.7 Sơ đồ thực thể liên hệ
Quy ước:
1) Các hình chữ nhật biểu diễn các tập thực thể, bên trong ghi tên tập thực thể
2) Các hình dạng tròn biểu diễn các thuộc tính, bên trong ghi tên thuộc tính
Chúng được nối với các tập thực thể bằng các cạnh (vô hướng) Các thuộc tính là
các thành phần của một khóa cho một tập thực thể được gạch dưới Trường hợp đặc
biệt nếu một tập thực thể chỉ có một thuộc tính thì có thể gọi tập thực thể đó bằng
tên thuộc tính của nó Khi đó tập thực thể sẽ được biểu diễn là một hình dạng tròn
chứ không phải là hình chữ nhật và nó được nối với các mối liên hệ mà tập đó hàm
chứa
3) Các hình thoi biểu diễn các mối liên hệ, bên trong ghi tên mối liên hệ
Chúng được nối với các các tập thành viên tham gia vào mối liên hệ đó bởi các cạnh
vô hướng hoặc có hướng (các cung)
1.2.8 Tính chất hàm của mối liên hệ
1) Mối liên hệ một – một
Một mối liên hệ R giữa các tập thực thể E1 và E2 được gọi là mối liên hệ một -
một (one to one ralationship) nếu trong mối liên hệ đó mỗi thực thể của tập thực thể
E1 chỉ tương ứng với nhiều nhất với một thực thể của tập thực thể E2 và mỗi thực thể
của tập thực thể E2 chỉ tương ứng nhiều nhất với một thực thể của tập thực thể E1
2) Mối liên hệ nhiều – một
Một mối liên hệ R giữa các tập thực thể E1 và E2 được gọi là mối liên hệ
nhiều – một (many - one relationship) nếu trong mối liên hệ đó mỗi thực thể của tập
thực thể E1 có thể tương ứng với nhiều nhất một thực thể trong tập thực thể E2 và
mỗi thực thể trong tập thực thể E2 có thể tương ứng với không hoặc một hoặc nhiều
thực thể trong tập thực thể E1
Trang 7Khái niệm mối liên hệ nhiều – một tổng quát hóa trong trường hợp mối liên
hệ giữa ba tập thực thể trở lên như sau:
Mối liên hệ R giữa các tập thực thể E1, E2, , Ek, Ek+1 (k > 1) được gọi là mối
liên hệ nhiều – một giữa các tập thực thể E1, E2, ., Ek và tập thực thể Ek+1; nếu
trong mối liên hệ đó, mỗi bộ các thực thể (e1, e2, , ek) với ei Ei và i = 1, , k của
các tập thực thể E1, E2, , Ek có thể tương ứng với nhiều nhất một thực thể của tập
thực thể Ek+1 và mỗi thực thể của tập thực thể Ek+1 có thể tương ứng với không hoặc
một hoặc nhiều các bộ thực thể (e1, e2, , ek) với ei Ei và i = 1, , k của các tập
thực thể E1, E2, , Ek
3) Mối liên hệ nhiều – nhiều
Mối liên hệ R giữa các tập thực thể E1 và E2 được gọi là mối liên hệ nhiều – nhiều (many - many ralationship) nếu trong mối liên hệ đó mỗi thực thể
trong tập thực thể E1 có thể tương ứng với không hoặc một hoặc nhiều thực thể
trong tập thực thể E2 và mỗi thực thể trong tập thực thể E2 có thể tương ứng với
không hoặc một hoặc nhiều thực thể trong tập thực thể E1
Khái niệm mối liên hệ nhiều – nhiều tổng quát hóa trong trường hợp mối
liên hệ giữa ba tập thực thể trở lên như sau:
Mối liên hệ R giữa các tập thực thể E1, E2, , Ek, Ek+1 (k > 1) được gọi là mối
liên hệ nhiều – nhiều giữa các tập thực thể E1, E2, ., Ek và tập thực thể Ek+1;nếu
trong mối liên hệ đó, mỗi bộ các thực thể (e1, e2, , ek) với eiEi và i = 1, , k của
các tập thực thể E1, E2, , Ek có thể tương ứng với không hoặc một hoặc nhiều thực
thể của tập thực thể Ek+1 và mỗi thực thể của tập thực thể Ek+1 có thể tương ứng với
không hoặc một hoặc nhiều các bộ thực thể (e1, e2, , ek) với ei Ei và i = 1, , k
của các tập thực thể E1, E2, , Ek
1.2.9 Biểu diễn tính chất hàm trong các sơ đồ thực thể - liên hệ
- Nếu mối liên hệ R giữa các tập thực thể A và B là nhiều – một thì đặt một
cung vô hướng từ mối liên hệ R đến tập thực thể A (bên nhiều) và một cung có
hướng từ mối liên hệ R đến tập thực thể B (bên một)
Trong trường hợp tổng quát có một mối liên hệ R giữa nhiều hơn một tập
thực thể và thuộc loại nhiều - một vào một tập thực thể A nào đó thì vẽ một cung có
Trang 8hướng từ mối liên hệ R đến tập thực thể A và các cung vô hướng từ mối liên hệ R
đến các tập thực thể khác
- Nếu R là mối liên hệ một – một giữa các tập thực thể A và B thì vẽ một
cung có hướng từ mối liên hệ R đến tập thực thể A và một cung có hướng khác từ
mối liên hệ R đến tập thực thể B Ngoại lệ, nếu A ISA B thì chỉ vẽ một cung có
hướng từ mối liên hệ ISA đến tập thực thể B còn từ mối liên hệ ISA đến tập thực thể
A là một cung vô hướng
- Nếu mối liên hệ R là nhiều - nhiều giữa các tập thực thể thì ta vẽ các cung
vô hướng từ mối liên hệ R tất cả các tập thực thể tham gia vào mối liên hệ
Ví dụ:
Một cửa hàng mua bán vật tư xây dựng muốn quản lý công việc kinh doanh
của mình bằng máy tính và có ý định thiết kế một hệ thống cơ sở dữ liệu lưu trữ các
thông tin cần thiết cho hoạt động kinh doanh Nhân viên quản trị cơ sở dữ liệu hệ
thống là SVA - một sinh viên khoa CNTT trường ĐHSPKT Nam Định và làm việc
cho cửa hàng đã phân tích và triển khai một sơ đồ thực thể – liên hệ như sau:
Cơ sở dữ liệu nhằm phục vụ cho việc quản lý nhập hàng từ các nhà cung cấp
và bán hàng cho khách hàng
Để quản lý được việc nhập hàng từ các nhà cung cấp thì cơ sở dữ liệu nhằm
phục vụ cho việc trả lời các câu hỏi chính:
- “Cửa hàng nhập các mặt hàng nào của các nhà cung cấp hàng nào, theo các
lần cung cấp nào, vào ngày nào, với số lượng và đơn giá là bao nhiêu ?”
Vì vậy, SVA quyết định trong cơ sở dữ liệu có một tập thực thể NCC (các
nhà cung cấp) gồm các thuộc tính Mancc (Mã - số hiệu nhà cung cấp - khoá),
tenNcc (họ tên nhà cung cấp), DCNCC (địa chỉ nhà cung cấp)
Một vấn đề quan trọng liên quan đến các nhà cung cấp là các mặt hàng họ
cung cấp, do đó SVA đã đưa ra một tập thực thể MATH (các mặt hàng) gồm các
thuộc tính MaMh (Mã - số hiệu mặt hàng - khoá), TenMh (tên mặt hàng), DVT
(đơn vị tính)
Cửa hàng nhập các mặt hàng thông qua các hoá đơn nhập hàng từ các nhà
cung cấp Mỗi hoá đơn nhập hàng (HDNH) gồm: số hiệu hoá đơn nhập hàng
(ShHDN), ngày nhập hàng (NgayN), thông tin về nhà cung cấp hàng và một danh
Trang 9sách các mặt hàng, số lƣợng, đơn giá của từng mặt hàng mà cửa hàng yêu cầu,
thành tiền, tổng số tiền Thành tiền, tổng số tiền là các thuộc tính tính toán nên ta có
thể bỏ đi Các thuộc tính của tập thực thể HDNH là ShHDN, NgayN Vì các nhà
cung cấp khác nhau vẫn có thể có cách ghi ShHDN giống nhau nên tập thực thể
HDNH phải vay mƣợn thuộc tính Mancc để kết hợp với ShHDN làm khóa Nội
dung thực sự của HDNH đƣợc biểu diễn qua mối liên hệ nhiều - một CTHDNH
(chi tiết hoá đơn nhập hàng) giữa các tập thực thể: HDNH, MATH ( các mặt hàng),
SLN (số lƣợng nhập) chỉ có một thuộc tính SLN – khoá, DGN (đơn giá nhập) chỉ có
một thuộc tính DGN – khoá đến NCC (các nhà cung cấp hàng)
Để quản lý đƣợc việc bán hàng cho các khách hàng thì cơ sở dữ liệu nhằm
phục vụ cho việc trả lời các câu hỏi chính:
- “Cửa hàng bán các mặt hàng nào cho các khách hàng nào, vào các lần bán
hàng nào, vào ngày nào với số lƣợng và đơn giá là bao nhiêu ?”
Nhƣ vậy, ta thấy ngay một tập thực thể quan trọng khác là KHH (các khách
hàng) với các thuộc tính MaKh (mã - số hiệu khách hàng - khóa), TenKh (tên khách
hàng), DcKh (địa chỉ khách hàng), GT (giới tính)
Các khách mua hàng thông qua các hoá đơn bán hàng của cửa hàng cho các
khách hàng Mỗi hoá đơn bán hàng (HDBH) gồm: số hiệu hoá đơn bán hàng
(ShHDB), ngày bán hàng (NgayB), thông tin về các khách hàng và một danh sách
các mặt hàng, số lƣợng, đơn giá của từng mặt hàng mà khách hàng yêu cầu, thành
tiền, tổng số tiền Thành tiền, tổng số tiền là các thuộc tính tính toán nên ta có thể
bỏ đi Các thuộc tính của tập HDBH là ShHDB - khoá, NgayB (vì trong một cửa
hàng thì chỉ quy định một cách ghi ShHDB Nội dung thực sự của HDBH đƣợc biểu
diễn qua mối liên hệ nhiều - một CTHDBH (chi tiết hoá đơn bán hàng) giữa các tập
thực thể: HDBH, MATH ( các mặt hàng), SLB (số lƣợng bán) chỉ có một thuộc tính
SLB – khoá, DGB (đơn giá bán) chỉ có một thuộc tính DGB – khoá đến KhHang
(các khách hàng)
Trang 10Từ đó, ta có sơ đồ thực thể liên hệ nhƣ hình vẽ sau:
Hình 1.1 Sơ đồ thực thể - liên hệ của CSDL mua bán vật tư
B BÀI TẬP
1.1 Hãy sử dụng mô hình thực thể - liên hệ để mô tả dữ liệu cho hệ thống quản lý
điểm của một lớp, sau đó vẽ sơ đồ thực thể - liên hệ cho cơ sở dữ liệu đó
Giải tóm tắt:
Cơ sở dữ liệu nhằm phục vụ cho việc trả lời câu hỏi chính “sinh viên nào học
môn học nào và điểm của họ ra sao , môn học đó học ở kỳ nào?” Nên trong cơ sở
dữ liệu có các tập thực thể:
- SVgồm các thuộc tính: Masv (khóa), Hoten, Ns, Gt, Qq
- Monhoc gồm các thuộc tính: Mamh (khóa), tenmon, Sht
- Hocky chỉ có một thuộc tính: Hocky (khóa)
- Diem chỉ có một thuộc tính: Diem (khóa)
và các mối liên hê:
- Sv_Mh_Diem(SV, Monhoc, Diem) với ý nghĩa “sinh viên nào học môn học
nào và điểm của họ ở môn học đó ra sao” Đây là mối liên hệ nhiều - một, từ SV,
Trang 11- Mh_Ky(Monhoc, hocky) với ý nghĩa “môn hoc nào đƣợc bố trí học ở học
kỳ nào” Đây là mối liên hệ nhiều - một từ Monhoc đến Hocky
Từ đó ta có sơ đồ thực thể liên hệ:
Hình 1.2 Sơ đồ thực thể liên hệ của CSDL quản lý điểm
1.2 Hãy sử dụng mô hình thực thể - liên hệ để mô tả dữ liệu cho hệ thống quản lý
tiền quỹ của một lớp, sau đó vẽ sơ đồ thực thể - liên hệ cho cơ sở dữ liệu đó
Giải tóm tắt:
Cơ sở dữ liệu nhằm phục vụ cho việc trả lời câu hỏi chính “ sinh viên nào
Chi hay đóng khoản tiền gì vào ngày nào với số tiền là bao nhiêu?” Nên trong cơ
sở dữ liệu có các tập thực thể:
- SVgồm các thuộc tính: Masv (khóa), Hoten
- KhoanTC - khoản thu chi chỉ có một thuộc tính: KhoanTc (khóa)
- ThuChi - thu hay chi chỉ có một thuộc tính: Thuchi (khóa)
- Ngay - ngày thu hay chi chỉ có một thuộc tính: ngay (khóa)
- Sotien - số tiền thu hay chi chỉ có một thuộc tính: Sotien (khóa)
Ở đây, Ta có thể chỉ ra mối liên hệ tổng quát Soquy(SV, KhoanTC, ThuChi,
Ngay, Sotien ) với ý nghĩa “sinh viên nào Chi hay đóng khoản tiền gì, vào
ngày nào với số tiền là bao nhiêu” Ta có sơ đồ thực thể liên hệ:
SHT
Trang 12Hình 1.3 Sơ đồ thực thể liên hệ của CSDL quản lý quỹ
1.3 Hãy sử dụng mô hình thực thể - liên hệ để mô tả dữ liệu cho hệ thống quản lý
vi phạm luật giao thông của một tỉnh, sau đó vẽ sơ đồ thực thể - liên hệ cho cơ
sở dữ liệu
Giải tóm tắt:
Cơ sở dữ liệu nhằm phục vụ cho việc trả lời câu hỏi chính “ai điều khiển
phương tiện gì, phương tiện đó của ai, vi phạm lỗi gì, ở đâu, vào thời gian nào, bị
phạt bao nhiêu tiền, ai là người xử phạt ?” Nên trong cơ sở dữ liệu có các tập thực
- PT – phương tiện gồm các thuộc tính: Sbdk – số biển đăng ký (khóa), Loai
– loại phương tiện, Mac – mác của phương tiện, nuoc – nước sản xuất
- LoiVp – lỗi vi phạm chỉ có một thuộc tính: LoiVp(khóa)
- Diadiem – Địa điểm vi phạm chỉ có một thuộc tính: Diadiem(khóa)
- ThoiGian – ngày, giờ vi phạm chỉ có một thuộc tính: Thoigian(khóa)
- Sotien - số tiền bị phạt chỉ có một thuộc tính: Sotien(khóa)
+ NgXL – người xử lý gồm các thuộc tính: MaNXL – số hiệu người xử lý
(khóa), hoten, Capbac – cấp bậc, Chucvu – Chức vụ
Ở đây, Ta có thể chỉ ra một mối liên hệ Vipham(Nvp, PT, LoiVP, Thoigian,
Diadiem, Sotien, NgXL) với ý nghĩa “người nào sử dụng phương tiện nào, vi phạm
lỗi gì; ở đâu, vào thời gian nào, bị phạt bao nhiêu tiền và ai là người xử phạt” Mối
liên hệ này thuộc loại nhiều – nhiều giữa các tập thực thể Một mối liên hệ khác là
Trang 13SoHuu(ChuPT, PT) với ý nghĩa “ai là chủ phương tiện vi phạm” Đây cũng là mối
liên hệ nhiều nhiều giữa ChuPt và PT
Ta có sơ đồ thực thể liên hệ
Hình 1.4 Sơ đồ thực thể liên hệ của CSDL quản lý vi phạm luật giao thông
1.4 Hãy sử dụng mô hình thực thể - liên hệ để mô tả dữ liệu cho hệ thống quản lý
điện của một tổ kinh doanh điện trong một năm, sau đó vẽ sơ đồ thực thể - liên
hệ cho cơ sở dữ liệu đó
Giải tóm tắt:
Mô hình thực thể liên hệ mô tả dữ liệu của hệ thống quản lý điện của một tổ kinh
doanh diện trong một năm
Cơ sở dữ liệu nhằm phục vụ cho việc trả lời câu hỏi chính “Chủ hộ nào có
hợp đồng thuê điện nào và hàng tháng có lượng điện tiêu thụ là bao nhiêu và phải
trả là bao nhiêu tiền mỗi tháng ?” Nên trong cơ sở dữ liệu có các tập thực thể:
- Chuho – Chủ hộ gồm các thuộc tính: MaCh (khóa), Hoten, Gt, Diachi
- Congto – công tơ gồm các thuộc tính: ShCT (khóa), nuocSX, Vitri ( nơi
treo công tơ, chisodau (chỉ số công tơ ban đầu)
- Hopdong - hợp đồng gồm các thuộc tính: Shd (số hợp đồng - khoá),
Ngayhd (ngày hợp đồng), ngkyhd (người ký hợp đồng)
- Thangsd – tháng sử dụng điện chỉ có một thuộc tính: Thang (khóa)
ThoiGian ChuPT
SoHuu
PT
Scmtvp
Diachivp Hotenvp
NgXL
Chucvu MaNXL
hoten Capbac Sotien
Trang 14- Ngayghi - ngày ghi số chỉ có một thuộc tính: ngayghi (khóa)
- ChisoCT – chỉ số công tơ chỉ có một thuộc tính: ChisoCT (khóa)
Ở đây, Ta có thể chỉ ra các mối liên hệ :
- CH_HD(Chuho, hopdong) là mối liên hệ một - một giữa hai thực thể
Chuho, hopdong với ý nghĩa “chủ hộ nào có hợp đồng mua điện nào”
- HD_CT(hopdong, congto) là mối liên hệ một - một giữa hai thực thể
hopdong và cong to với ý nghĩa “hợp đồng mua điện nào được cấp công tơ nào”
- Sudungdien(Congto, Thangsd, ChisoCT) là mối liên hệ nhiều - một từ
congto, thangsd đến ChisoCT với ý nghĩa “công tơ nào, trong tháng nào có chỉ số
công tơ trong tháng là bao nhiêu ”
- GhiCT(Congto, Thangsd, Ngayghi) là mối liên hệ nhiều - một từ congto,
thangsd đến Ngayghi với ý nghĩa “công tơ nào, trong tháng nào có ngày ghi chỉ số
công tơ là ngày nào”
Và ta có sơ đồ thực thể liên hệ:
Hình 1.5 Sơ đồ thực thể liên hệ của CSDL quản lý điện
1.5 Hãy sử dụng mô hình thực thể - liên hệ để mô tả dữ liệu cho hệ thống quản lý
nước của một công ty nước trong một năm, sau đó vẽ sơ đồ thực thể - liên hệ
cho cơ sở dữ liệu đó
CH_HD
Thangsd Chisodau
Sudungdien
Trang 15Hướng dẫn:
Hoàn toàn tương tự như bài 1.4
1.6 Hãy sử dụng mô hình thực thể - liên hệ để mô tả dữ liệu cho hệ thống quản lý
việc cho thuê truyện của một cửa hiệu cho thuê truyện, sau đó vẽ sơ đồ thực thể
- liên hệ cho cơ sở dữ liệu đó
Giải tóm tắt:
Cơ sở dữ liệu nhằm phục vụ cho việc trả lời câu hỏi chính “người nào mượn
quyển truyện nào, trong thời gian nào và phải trả số tiền là bao nhiêu?” Nên trong
cơ sở dữ liệu có các tập thực thể:
+ Docgia – đọc giả gồm các thuộc tính: Madg (khóa), Hoten, Gt, Diachi, sdt
- số điện thoại
+ Truyen – gồm các thuộc tính: MaTr (khóa), TenTr – tên truyện, TacGia –
tên tác giả, NXB –nhà xuất bản, Vitri – nơi để truyện
+ Thoigian - gồm các thuộc tính: NgayM – ngày mượn, NgayHT – ngày hẹn
trả, NgayTr – ngày trả Cả ba thuộc tính này mới làm thành khóa của thực thể thời
gian
DonGia – Giá tiền thuê mỗi cuốn truyện, một ngày chỉ có một thuộc tính
DonGia(khóa)
Ở đây, Ta có thể chỉ ra mối liên hệ Thuetruyen(Docgia, Truyen, Thoigian)
với ý nghĩa “người nào thuê cuốn truyện nào, vào thời gian nào” và một mối liên
hệ khác GiaThue(Truyen, DonGia) với ý nghĩa “cuốn truyện này có đơn giá thuê là
bao nhiêu” Trong trường hợp này, cùng một cuốn truyện giá thuê các lần khác nhau
phải là giống nhau.Mối liên hệ này thuộc loại nhiều – một từ Truyen đến Dongia
Ta có sơ đồ thực thể liên hệ
Trang 16Hình 1.6 Sơ đồ thực thể liên hệ của CSDL quản lý thuê truyện
1.7 Hãy sử dụng mô hình thực thể - liên hệ để mô tả dữ liệu cho hệ thống quản lý
tín dụng của một quỹ tín dụng, sau đó vẽ sơ đồ thực thể - liên hệ cho cơ sở dữ
liệu
Hướng dẫn
Cơ sở dữ liệu nhằm phục vụ cho việc trả lời câu hỏi chính “Khách hàng nào có
khế ước vay nào”
1.8 Hãy sử dụng mô hình thực thể - liên hệ để mô tả dữ liệu cho hệ thống quản lý
lương của phòng tài vụ của một trường đại học, sau đó vẽ sơ đồ thực thể - liên
hệ cho cơ sở dữ liệu
Giải tóm tắt:
Cơ sở dữ liệu nhằm phục vụ cho việc trả lời câu hỏi chính “người nào ở đơn
vị nào, hàng tháng được lĩnh tiền lương là bao nhiêu” Nên trong cơ sở dữ liệu có
các tập thực thể:
+ Nhanvien – nhân viên gồm các thuộc tính: MaNv (khóa), Hoten, Gt,
Diachi
+ Donvi – đơn vị công tác gồm các thuộc tính: Madv (khóa), TenDv, Vitri
+ Chucvu – chức vụ gồm các thuộc tính: MaCv (khóa), Chvu, HsPc – hệ số
Vitri Thoigian
Trang 17+ NgayLL – ngày, tháng, năm lên lương hoặc vượt khung lần cuối chỉ gồm
có một thuộc tính NgayLL (khóa)
+ XLthidua – xếp loại thi đua chỉ gồm có một thuộc tính XLthidua (khóa)
+ Tháng chỉ có một thuộc tính: thang(khóa)
Ta có thể chỉ ra các mối liên hệ
+ Lamviec(Nhanvien, Donvi) với ý nghĩa “người nào làm việc ở đơn vị nào”
là một mối liên hệ nhiều - một từ Nhanvien đến Donvi
+ Quanly(Nhanvien, Chucvu) với ý nghĩa “nhân viên nào giữ chức vụ quản
lý cao nhất là gì” là một mối liên hệ nhiều - một từ Nhanvien đến Chucvu
+ Luong(Nhanvien, HsL, NgayLL) với ý nghĩa “người nào hiện có hệ số
lương bằng bao nhiêu và ngày lên lương lần cuối là ngày nào” là một mối liên hệ
nhiều - một từ cặp HsL, Nhanvien đến NgayLL
+ Thidua(Nhanvien, thang, XLthidua) với ý nghĩa “người nào trong tháng
nào được xếp loại thi đua nào” là một mối liên hệ nhiều - một từ cặp Nhanvien,
thang
Donvi
Vitri HsL
Luong
NgayLL
Trang 181.9 Hãy sử dụng mô hình thực thể - liên hệ để mô tả dữ liệu cho hệ thống quản lý
mua bán xe máy của một cửa hàng kinh doanh xe máy, sau đó vẽ sơ đồ thực thể -
liên hệ cho cơ sở dữ liệu
Hướng dẫn:
Tương tự như ví dụ quản lý kinh doanh vật tư xây dựng của một cửa hàng
1.10 Hãy sử dụng mô hình thực thể - liên hệ để mô tả dữ liệu cho hệ thống quản lý
ký túc xá của một trường đại học, sau đó vẽ sơ đồ thực thể - liên hệ cho cơ sở dữ
liệu
Hướng dẫn:
Cơ sở dữ liệu nhằm phục vụ cho việc trả lời câu hỏi chính “ sinh viên nào ở
phòng nào, phòng có bao nhiêu chỗ ở, hiện tại đã sử dụng bao nhiêu chỗ, ai là
trưởng phòng, lượng điện, nước tiêu thụ hàng tháng là bao nhiêu, số tiền phải trả
hàng tháng của mỗi phòng?”
Trang 19Chương 2
MÔ HÌNH CƠ SỞ DỮ LIỆU QUAN HỆ
A TÓM TẮT LÝ THUYẾT
2.1 Các khái niệm cơ bản
2.1.1 Mô hình cơ sở dữ liệu ( Relation model)
Là mô hình cho phép sử dụng các tên để mô tả dữ liệu - các bảng dữ liệu và
tập các phép toán của tập hợp và ánh xạ để thao tác với dữ liệu
2.1.2 Các khái niệm quan hệ
- Quan hệ (Relation) là một tập con của tích Đề - Các của một hoặc nhiều miền
- Quan hệ là tập các ánh xạ từ tên các thuộc tính đến các giá trị trong miền
của thuộc tính
Như vậy, có thể hình dung quan hệ là một bảng dữ liệu nó bao gồm các dòng
và các cột Trong đó: mỗi bảng, mỗi cột được đặt bởi một tên; mỗi cột lấy giá trị
trên một miền; mỗi dòng là một bộ các giá trị và mỗi giá trị thuộc về một cột
Nhưng quan hệ khác với bảng dữ liệu thông thường là trong quan hệ không cho
phép hai dòng trùng nhau
2.2 Biến đổi sơ đồ thực thể - liên hệ sang mô hình quan hệ
- Tập các lược đồ quan hệ dùng để biểu diễn thông tin gọi là lược đồ cơ sở dữ
liệu quan hệ (Relational Database sheme) và cùng với những giá trị hiện hành của
các quan hệ tương ứng tạo ra cơ sở dữ liệu quan hệ
- Khi thiết kế có thể tự do tạo ra các quan hệ với tập thuộc tính nào đó như một
lược đồ quan hệ Tuy nhiên có một khuôn mẫu điển hình bằng cách chuyển đổi các
sơ đồ thực thể - liên hệ sang các lược đồ cơ sở dữ liệu quan hệ Dữ liệu của sơ đồ
thực thể - liên hệ được biểu diễn bởi hai loại quan hệ: quan hệ biểu diễn cho tập
thực thể và quan hệ biểu diễn cho mối liên hệ
Trang 202.2.1 Biến đổi các tập thực thể
Một tập thực thể E có thể được biểu diễn bởi một quan hệ có cùng tên là E
mà lược đồ quan hệ của nó chứa tất cả các thuộc tính của tập thực thể đó Mỗi bộ
của quan hệ biểu diễn một thực thể trong thể hiện hiện hành của E
2.2.2 Biến đổi mối liên hệ
- Mối liên hệ R giữa các tập thực thể E1, E2, , Ek được biểu diễn bởi một quan
hệ có tên là R và có lược đồ quan hệ chứa các thuộc tính trong các khoá của mỗi tập
E1, E2, , Ek Có thể đặt lại tên cho các thuộc tính (nếu cần) để tránh trùng tên ngay
cả khi hai thực thể này chỉ là một Một bộ t trong quan hệ này biểu diễn cho một
danh sách các thực thể e1, e2, , ek trong đó ei là một thực thể của tập thực thể Ei
Nghĩa là ei là một thực thể duy nhất của tập thực thể Ei mà giá trị của thuộc tính
khoá của Ei có trong thành phần của bộ t ở những thuộc tính này Sự có mặt của bộ t
trong quan hệ chỉ ra rằng danh sách các thực thể (e1, e2, , ek) là phần tử hiện hành
của mối liên hệ R
2.3 Khoá của các quan hệ
- Cho quan hệ R(A1, A2, ,An); K { A1, A2, , An } K là khoá của R
khi và chỉ khi K thoả mãn các tính chất sau đây:
1) Với bất kỳ 2 bộ t1, t2 R đều tồn tại một thuộc tính AK sao cho
t1[A] t2[A]
t1[K] t2[K]
2) Không có tập con thực sự nào của K có tính chất 1
Do vậy mỗi giá trị của khoá K là duy nhất
- Nếu K chỉ có tính chất 1 Thì K được gọi là khoá bao hàm – siêu khoá (Super key)
- Khoá phụ thuộc vào lược đồ quan hệ; không phụ thuộc vào thể hiện của
quan hệ
- Một quan hệ có thể có nhiều khoá
- Khoá được thực hiện bởi người thiết kế cơ sở dữ liệu sau khi đã xem xét và
cân nhắc kỹ lưỡng các dữ liệu và những ràng buộc mà dữ liệu phải tuân theo
Trang 21- Khi một quan hệ có nhiều khoá, ta nên chọn một khoá xem như là một khoá
duy nhất, khoá đó gọi là khoá chính (Primary key) Tập các khoá có trong quan hệ
gọi là các khoá dự kiến (dự tuyển - Candidate key)
- Nếu các khoá được chọn cho các tập thực thể là khoá nhỏ nhất (nghĩa là
không có tập con nào của nó có thể làm khoá) thì ta có thể xác định khoá của quan
hệ theo các quy tắc sau:
+ Nếu một quan hệ xuất phát từ một tập thực thể thì khoá của tập thực thể sẽ
là khoá của quan hệ
+ Nếu một quan hệ xuất phát từ một mối liên hệ nhiều – nhiều thì khoá của
quan hệ thường là tập tất cả các thuộc tính của quan hệ
+ Nếu một quan hệ xuất phát từ mối liên hệ một - một giữa các tập thực thể
E và F thì cả khoá của E và khoá của F đều là khoá của quan hệ
+ Nếu một quan hệ xuất phát từ mối liên hệ loại nhiều - một giữa E1, E2, ,
Ek-1 đến Ek thì hợp các khoá của E1, E2, , Ek-1 sẽ là khoá của quan hệ
2.4 Quan hệ có khoá chung
Khi hai quan hệ có chung một khoá dự tuyển (dự kiến) ta có thể gộp hai lược
đồ quan hệ này thành một lược đồ quan hệ có các thuộc tính là khóa chung của hai
lược đồ quan hệ và các thuộc tính còn lại là các thuộc tính khác khóa chung ở cả hai
lược đồ
Ví dụ:
Chuyển sơ đồ thực thể liên hệ của cơ sở dữ liệu mua bán vật tư (hình 1.1) sang
lược đồ cơ sở dữ liệu quan hệ
- Các lược đồ quan hệ biểu diễn cho các tập thực thể:
- Các lược đồ quan hệ biểu diễn cho các mối liên hệ:
+ CTHDNH(SHHDN, MaNCC, MaMH, SLN, DGN, MaNCC)
Trang 22+ CTHDNH(SHHDB, MaMH, SLB, DGB, MaKH)
Chuyến sơ đồ thực thể liên hệ của cơ sở dữ liệu mua bán vật tư (hình 1b) sang
lược đồ cơ sở dữ liệu quan hệ hoàn toàn tương tự
2.5 Một số phép toán đại số quan hệ
Hai quan hệ R và S gọi là khả hợp nếu chúng cùng ngôi và sau khi biến đổi
(bằng cách đặt lại tên các thuộc tính; đặt một thứ tự cố định cho các thuộc tính trước
khi thực hiện các phép toán) thì chúng có cùng lược đồ
2.5.1 Phép hợp
Hợp của hai quan hệ R và S khả hợp là một quan hệ, ký hiệu là RS bao
gồm tất cả các bộ t sao cho t thuộc R hoặc t thuộc S
Biểu diễn hình thức:
R S = { t / t R hoặc t S }
2.5.2 Phép giao
Giao của hai quan hệ R và S khả hợp là một quan hệ, ký hiệu là R S bao
gồm tất cả các bộ t sao cho t thuộc R và t thuộc S
Biểu diễn hình thức:
R S = t / tR và t S
2.5.3 Phép trừ
Hiệu của hai quan hệ R và S khả hợp là một quan hệ ký hiệu là R- S bao gồm
tất cả các bộ t sao cho t thuộc R nhưng t không thuộc S
Biểu diễn hình thức:
R - S = t / tR và t S
2.5.4 Phép tích Đề - Các
R là quan hệ n ngôi và S là quan hệ m ngôi Tích Đề - Các của hai quan hệ R
và S ký hiệu là RS là một quan hệ (n+m) ngôi gồm tất cả các bộ của R ghép với
các bộ của S
Biểu diễn hình thức có dạng
Trang 23RS = {t / t có dạng ( a1, a2, , an, b1, b2, , bm ), trong đó ( a1, , an) R và
(b1, , bm ) S}
2.5.5 Phép chiếu ( Projection )
Cho quan hệ R(A1, A2, , An), X { A1, A2, , An } Phép chiếu quan hệ R
trên tập thuộc tính X là một quan hệ trên tập thuộc tính X, ký hiệu là
X (R) gồm các bộ t của R chỉ giữ lại các thành phần thuộc X
Biểu diễn hình thức là:
X (R) = t[X] t R
2.5.6 Phép chọn ( Selection )
Cho quan hệ R(A1, A2, , An), F(t) là giá trị của biểu thức logic F đối với bộ
t Phép chọn quan hệ R với đối với điều kiện F là một quan hệ ký hiệu là F(R) bao
gồm tất cả các bộ của R thoả mãn điều kiện F
Biểu diễn hình thức là:
F(R) = t R F (t) = đúng
2.5.7 Phép kết nối (Join)
Gọi là một trong các phép so sánh { =, >, >=, <, <=, <>}
Phép kết nối của quan hệ R đối với thuộc tính A và quan hệ S đối với thuộc
tính B là một quan hệ được ký hiệu là R S gồm những bộ t của tích Đề - các
R S sao cho t[A] t[B]
Biểu diễn hình thức là:
R S = { t t R S và t[A] t[B] } = A B (RS)
Trường hợp đặc biệt:
- Nếu là phép toán = thì ta có phép kết nối bằng;
- Nếu phép kết nối bằng trên hai thuộc tính cùng tên và kết quả kết nối ta bỏ
đi một thuộc tính cùng tên đó thì ta có phép kết nối tự nhiên và ký hiệu là * .
2.6 Đại số quan hệ - một ngôn ngữ vấn tin
Các phép toán đại số quan hệ có thể dùng để tìm kiếm thông tin trên các quan
hệ
A B
A B
Trang 24Ví dụ:
Cho ba quan hệ:
S (SNO, SNAME, SEX, STATUS, CITY ): Các nhà cung cấp;
P ( PNO, PNAME, COLOR, WEIGHT) : Các mặt hàng;
SP ( SNO, PNO, QTY, SDATE , PRICE ): Các mặt hàng đã cung cấp
Trong đó: SNO - Số hiệu nhà cung cấp; SNAME -Tên nhà cung cấp; SEX - Giới
tính; STATUS - Tình trạng; CITY- Địa chỉ nhà cung cấp; PNO - Số hiệu mặt
hàng; PNAME - Tên mặt hàng; COLOR- Màu sắc; WEIGHT - Trọng lƣợng;
PRICE -Đơn giá mặt hàng; QTY- Số lƣợng; SDATE - Ngày nhập hàng
1- Tìm số hiệu của những nhà cung cấp đã cung cấp mặt hàng có số hiệu mặt
SNO(PNO=‟P1 (SP)) SNO(PNO=‟P2 (SP))
4 - Tìm số hiệu các nhà cung cấp không cung ứng mặt hàng nào
SNO(S)) - SNO(SP)
5 - Tìm số hiệu các nhà cung cấp không cung cấp mặt hàng có số hiệu là P1
SNO(S)) - SNO(PNO=‟P1(SP))
6 - Tìm số hiệu của những nhà cung cấp đã cung cấp ít nhất là một mặt hàng
màu đỏ
SNO(COLOR= RED (P*SP))
7 - Tìm số hiệu của những nhà cung cấp đã cung cấp mặt hàng màu đỏ,
nhƣng không cung cấp mặt hàng màu xanh
SNO(COLOR= RED (P*SP)) - SNO(COLOR= BLUE (P*SP))
8 - Cho biết tên các nhà cung cấp đã cung cấp mặt hàng có số hiệu mặt hàng
là P1 nhƣng họ không có địa chỉ ở NAM DINH
Trang 25SNANE(PNO= P1 (S* SP)) - SNANE (ADD= NAM DINHPNO= P1 (S* SP)
9 - Tìm số hiệu, tên của những nhà cung cấp đã cung cấp các mặt hàng màu đỏ
SNO, SNAME(COLOR= RED(P*SP*S))
10 - Tìm số hiệu, tên của những nhà cung cấp đã cung cấp các mặt hàng màu
đỏ và màu xanh
SNO, SNAME(COLOR= RED(P*SP*S)) SNO, SNAME(COLOR= Blue(P*SP*S))
11 - Đưa ra số hiệu nhà cung cấp, tên nhà cung cấp, số hiệu mặt hàng, tên
mặt hàng, màu mặt hàng, số lượng, đơn giá mà các nhà cung cấp đã cung cấp một
mặt hàng trong mỗi lần có màu đỏ hoặc xanh
SNO, SNAME, PNO, PNAME, COLOR, QTY, PRICE((COLOR= RED) (COLOR= Blue)(P*SP*S))
2.7 Tối ưu hoá các biểu thức đại số quan hệ
2.7.1 Các chiến lược tối ưu tổng quát
1) Thực hiện phép chọn và phép chiếu sớm như có thể
2) Tổ hợp những phép chọn xác định với phép tích Đề - Các thành phép
3) Tổ hợp dãy các phép toán một ngôi (phép chọn và phép chiếu)
Một dãy các phép toán một ngôi (phép chọn hoặc phép chiếu) mà kết quả của
chúng chỉ phụ thuộc vào các bộ của một quan hệ độc lập thì có thể nhóm các phép
toán đó lại
4) Tìm các biểu thức con chung trong một biểu thức
Biểu thức con chung là biểu thức xuất hiện nhiều hơn một lần trong một
biểu thức đại số quan hệ
5) Xử lý các tệp trước khi thực hiện các phép toán
6) Ước lượng chi phí và lựa chọn thứ tự thực hiện các phép toán
2.7.2 Biểu thức tương đương
Hai biểu thức đại số quan hệ E1 và E2 được gọi là tương đương (equivalent),
viết tắt là E1 E2 nếu thay thế cùng một quan hệ cho tên các lược đồ tương ứng ở
hai biểu thức cho ra cùng một kết quả
Trang 262.7.3 Các phép biến đổi tương đương của đại số quan hệ
1) Các phép biến đổi tương đương
Trang 27( )
11 - Phép kết nối kề với phép chiếu
- XR SX R S; nếu Attr(FR) X (Attr(FR) là các
thuộc tính trong R của phép kết nối và X Attr(R)
- X1X2R SX1 R X2(S);
nếu Attr(F) X1 X2 và X1 Attr(R) và X2 Attr(S) (Attr(F) là các
thuộc tính trong R và S của phép kết nối)
14 - Phép kết nối đi sau phép hợp
Trang 282) Cây toán tử của biểu thức đại số quan hệ
Cây toán tử (operator tree) là dạng biểu diễn trực quan cho các biểu thức đại
số quan hệ; giúp dễ dàng theo dõi các phép biến đổi trên các biểu thức đó
Trong cây toán tử:
- Các nút lá biểu diễn cho các quan hệ;
- Mỗi nút trung gian (nút trong) biểu diễn cho một phép toán (một ngôi
hoặc hai ngôi);
- Nút gốc biểu diễn cho phép toán phải thực hiện cuối cùng
Một cây đi từ ngọn đến gốc xác định thứ tự bộ phận mà trong đó các phép toán
phải được thực hiện để cho ra kết quả truy vấn
Ví dụ: Cây toán tử biểu diễn cho truy vấn có biểu thức đại số quan hệ tương ứng là
PNAME(CITY=„Nam Định‟ QTY >25 (S*SP*P))
Hình 2.1 Cây toán tử biểu diễn biểu thức đái số quan hệ
3) Phương pháp tối ưu hóa các biểu thức đại số quan hệ
Để tối ưu hóa các biểu thức đại số quan hệ bằng cách áp dụng các phép biến
đổi tương đương; ta có các chiến thuật tối ưu hóa sau:
1- Sử dụng tính lũy đẳng của phép chọn và phép chiếu để tạo ra các phép
chọn và phép chiếu tương đương đối với mỗi quan hệ toán hạng
2- Sử dụng các phép biến đổi tương đương và đẩy các phép chọn và phép
chiếu xuống phía dưới cây nếu có thể được
Trang 29Các chiến thuật trên được xuất phát từ việc khảo sát các phép toán hai ngôi và
đặc biệt là các phép kết nối và phép tích Đề- Các là các phép toán tốn kém thời gian
nhất trong các hệ cơ sở dữ liệu; do đó cần phải giảm kích thước của các toán hạng
(ở đây là các quan hệ) của các phép toán hai ngôi trước khi thực hiện chúng
Cần chú ý khi một phép chiếu di chuyển xuống dưới qua một phép kết nối thì
các thuộc tính trong điều kiện kết nối phải có trong các thuộc tính chiếu của phép
Trang 30Hình 2.2 Quá trình biến đổi cây toán tử để tối ưu hóa biểu thức đại số quan
Trang 314) Cây toán tử và xác định biểu thức con chung
Một vấn đề quan trọng trong việc áp dụng các phép biến đổi tương đương
cho một biểu thức đại số quan hệ là tìm ra các biểu thức con chung của nó, nghĩa là
các biểu thức xuất hiện nhiều lần trong các truy vấn Rõ ràng là sẽ tiết kiệm thời
gian thực hiện của truy vấn nếu các biểu thức con chung chỉ được thực hiện một lần
Một phương pháp để nhận biết ra chúng là việc biến đổi cây toán tử bằng cách:
trước tiên gộp các nút lá giống nhau của cây (nghĩa là các quan hệ toán hạng giống
nhau); sau đó gộp các nút nhánh khác của cây tương ứng với cùng các phép toán và
có cùng các toán hạng
Ví dụ:
Với biểu thức đại số quan hệ
SNAME( PRICE > 10 QTY > 25(S*SP) - SNAME( PRICE <10 QTY > 25(S*SP)
Áp dụng các phép biến đổi tương đương và tìm biểu thức con chung
Trang 32*
SNAME PRICE < 10
PRICE < 10
Trang 33_
SNAME
PRICE > 10
SNAME
Trang 34Hình 2.3 Quá trình biến đổi cây toán tử để tối ưu hóa biểu thức đại số quan hệvà tìm biểu thức con chung
Trang 35Gộp (2) và (4) vì có chung khoá MaMh ta có lƣợc đồ quan hệ (2a):
- Monhoc(MaMh, tenmon , SHT, Hocky) (2a)
2) Từ sơ đồ hình1.2, ta có lƣợc đồ cơ sở dữ liệu quan hệ:
- SV(Masv, Hoten)
- Soquy(Masv, KhoanTC, ThuChi, Ngay, Sotien )
3) Từ sơ đồ hình 1.3, ta có lƣợc đồ cơ sở dữ liệu quan hệ:
- Nvp(Scmtvp, Hotenvp, Gt vp, tuoivp, Diachivp)
- ChuPT(Scmt, Hoten, Gt, tuoi, Diachi)
- PT (Sbdk, Loai, Mac, nuoc)
- NgXL(MaNXL, hoten, Capbac, Chucvu)
- SoHuu(Scmtvp, Scmt)
- ViPham(Scmt, Sbdk, LoiVp, Diadiem, ThoiGian, Sotien, MaNXL)
4) Từ sơ đồ hình 1.4, ta có lƣợc đồ cơ sở dữ liệu quan hệ:
- Chuho(MaCh, Hoten, Gt, Diachi) (1)
- Congto(ShCT, nuocSX, Vitri, Chisodau) (2)
- Hopdong(SHD, NgKyHD, NgayHd) (3)
- CH_HD(MaCH, SHD) có hai khoá MaCh và SHD (4)
- HD_CT(SHD, ShCT) có hai khoá SHD và ShCT (5)
- Sudungdien(ShCT, ThangSd, ChisoCT) (6)
- GhiCT(ShCT, ThangSd, NgayGhi) (7)
Gộp (1), (4), (3), (5) và (2) vì có chung khoá; ta có lƣợc đồ quan hệ (4a):
Trang 36Hopdong(SHD, NgKyHD, NgayHd, MaCh, Hoten, Gt, Diachi, ShCT,
nuocSX, Vitri, Chisodau) – có 3 khoá Ta có thể chọn SHD là khoá chính
Gộp (6) và (7) ta có lược đồ quan hệ (6a):
Sudungdien(ShCT, ThangSd, ChisoCT, Ngayghi)
5) Hoàn toàn tương tự như 4)
6) Từ sơ đồ hình 1.6, ta có lược đồ cơ sở dữ liệu quan hệ:
- Docgia(Madg, Hoten, Gt, Diachi, sdt) (1)
- Truyen(MaTr, TenTr, TacGia, NXB, Vitri ) (2)
- Thoigian(NgayM, NgayHT, NgayTr) (3)
- Thuetruyen(Madg, MaTr, NgayM, NgayHT, NgayTr) (4)
- GiaThue(MaTr, DonGia) (5)
Gộp (2) và (5) ; ta có Lược đồ quan hệ (2a) :
Truyen(MaTr, TenTr, TacGia, NXB, Vitri, DonGia) (2)
7) Tương tự như ví dụ trong phần tóm tắt lý thuyết
8) Từ sơ đồ hình 1.8, ta có lược đồ cơ sở dữ liệu quan hệ:
- Nhanvien(MaNv, Hoten, Gt, Diachi) (1)
- Donvi(Madv, TenDv, Vitri) (2)
Trang 372.2 Thực hiện các phép toán và các biểu thức đại số quan hệ
1) Cho hai quan hệ R và S: