CSDL

Chia sẻ bởi Tống Thị Mộng Tuyền | Ngày 26/04/2019 | 477

Chia sẻ tài liệu: CSDL thuộc Công nghệ thông tin

Nội dung tài liệu:

1
BÀI GIẢNG MÔN HỌC
CƠ SỞ DỮ LIỆU
2
NỘI DUNG:
Chương I. MỘT SỐ KHÁI NIỆM CƠ BẢN
Chương II. MÔ HÌNH DỮ LIỆU QUAN HỆ
Chương III. NGÔN NGỮ ĐẠI SỐ QUAN HỆ
Chương IV. NGÔN NGỮ TRUY VẤN CSDL
Chương V. RÀNG BUỘC TOÀN VẸN
Chương VI. CHUẨN HÓA DỮ LIỆU
3
Chương 1. MỘT SỐ KHÁI NIỆM CƠ BẢN
NỘI DUNG:
1.1. CƠ SỞ DỮ LIỆU – HỆ QUẢN TRỊ CSDL
1.2. CÁC MÔ HÌNH DỮ LIỆU
4
1.1. CƠ SỞ DỮ LIỆU – HỆ QUẢN TRỊ CSDL (1)
CƠ SỞ DỮ LIỆU (Database):
Là một hệ thống thông tin (HTTT) có cấu trúc kết hợp với các phép toán phù hợp với cấu trúc đó, nhằm mục đích tổ chức, lưu trữ, khai thác và kiểm tra qui tắc quản lý một cách "Tốt nhất”, đảm bảo tính nhất quán và không trùng lắp cho nhiều người sử dụng một cách đồng thời với nhiều mục đích khác nhau.
Lưu ý:
Các tính chất: Hệ thống, có cấu trúc, nhiều người sử dụng, khai thác đồng thời, nhiều mục đích khác nhau.
Nội dung của môn CSDL sẽ làm rõ tính "Tốt nhất“.
5
1.1. CƠ SỞ DỮ LIỆU – HỆ QUẢN TRỊ CSDL (2)
Tính "Tốt nhất" cần làm rõ bởi các nội dung sau:
Tổ chức và lưu trữ "Tốt nhất”: HTTT dữ liệu dạng bảng -> gần gủi với người sử dụng (MH Quan Hệ - Chương II).
Khai thác "Tốt nhất": Tường minh và chặt chẻ bởi các phép toán Đại số Quan hệ (Ngôn ngữ Đại số Quan hệ, chương III). Trong sáng dễ diễn đạt và gần gũi với ngôn ngữ tự nhiên được xử lý khai thác bởi bởi ngôn ngữ SQL (Ngôn ngữ truy vấn DL, chương IV), đã được tối ưu hóa (Chương VII - TỐI ƯU HÓA CÂU HỎI)
6
1.1. CƠ SỞ DỮ LIỆU – HỆ QUẢN TRỊ CSDL (3)
Kiểm tra các qui tắc quản lý "Tốt nhất”: Dễ dàng kiểm tra các qui tắc dựa vào 3 yếu tố của RBTV (Bối cảnh, nội dung, tầm ảnh hưởng) (Chương V – Ràng buộc toàn vẹn).
Biểu diễn HTTT theo tiêu chuẩn đảm bảo tính nhất quán, không trùng lắp thông tin dựa vào việc chuẩn hóa dữ liệu (Chuẩn hóa dữ liệu, Chương VI).
7
1.1. CƠ SỞ DỮ LIỆU – HỆ QUẢN TRỊ CSDL (4)
Để đảm bảo HTTT cho nhiều người sử dụng với nhiều mục đích khác nhau khi chọn hệ quản trị CSDL cần quan tâm đến các vấn đề:
Tính chủ quyền bị vi phạm
Tính nhất quán của dữ liệu
Vấn đề bảo mật
Tính an toàn dữ liệu
Vấn đề tranh chấp dữ liệu
8
1.1. CƠ SỞ DỮ LIỆU – HỆ QUẢN TRỊ CSDL (5)
2. HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU (DataBase Management System - DBMS): Là hệ thống các chương trình quản trị CSDL, đồng thời là công cụ giao tiếp giữa người sử dụng hoặc các ứng dụng với CSDL.
Hệ quản trị CSDL cần có:
Từ điển dữ liệu (Data Dictionary)
Cơ chế giải quyết tranh chấp.
Cơ chế bảo mật dữ liệu.
Cơ chế tự động sao lưu (Backup) và phục hồi (Restore) dữ liệu khi có sự cố.
Ngôn ngữ giao tiếp người sử dụng (NSD) với CSDL.
Đảm bảo tính độc lập giữa dữ liệu và chương trình.
Có thể, cần có giao diện tốt với người dùng không chuyên.
9
1.2. CÁC MÔ HÌNH DỮ LIỆU
MÔ HÌNH MẠNG (Network Data Model)
MÔ HÌNH PHÂN CẤP (Hierachical Data Model)
MÔ HÌNH QUAN HỆ (Relational Data Model)
MÔ HÌNH THỰC THỂ KẾT HỢP (Entity-RelationShip)
MÔ HÌNH HƯỚNG ĐỐI TƯỢNG (Object Oriented Model)
10
Chương 2. MÔ HÌNH DỮ LIỆU QUAN HỆ
NỘI DUNG:
2.1. MỘT SỐ KHÁI NIỆM VÀ ĐỊNH NGHĨA
2.2. CÁC THAO TÁC CƠ BẢN TRÊN MỘT QUAN HỆ
11
2.1. MỘT SỐ KHÁI NIỆM VÀ ĐỊNH NGHĨA (1)
1. Quan Hệ: Là một đối tượng tồn tại trong thế giới thực được làm rõ bởi các giá trị có liên quan với nhau:
Ví dụ: 1 quan hệ sinh viên:
005, Trần Văn A, 06/10/1990, Nam, 10DTH01
-> Quan hệ sinh viên có mãsố sinh viên là 005, có tên là Trần Văn A, ngày sinh là 06/10/1990, phái Nam, thuộc lớp 10DTH01.
Những giá trị có quan hệ (liên quan ) Là:
(i) Lớp 10DTH01 có SV là Trần Văn A.
(ii) SV Trần Văn A có ngày sinh là 06/10/1990 và mã số để phân biệt với các SV khác là 005.
(iii) SV Trần Văn A là SV Nam.v.v…
12
2.1. MỘT SỐ KHÁI NIỆM VÀ ĐỊNH NGHĨA (2)
Tên gọi của các giá trị liên quan gọi là thuộc tính (mã số, tên, ngày sinh, phái, lớp)
Ví dụ 2: 1 quan hệ địa chỉ -> gồm các giá trị liên quan nào? thuộc tính nào?
2. Loại Quan Hệ: Tất cả các quan hệ có cùng tính chất mô tả (cùng tên gọi các thuộc tính liên quan). Tính chất mô tả gọi là thuộc tính của loại quan hệ.
=> Loại quan hệ là:
Danh sách các quan hệ.
Dữ liệu dạng bảng có dòng đầu là danh sách các thuộc tính, dòng thứ 2 là các quan hệ với các giá trị tương ứng với tên gọi các thuộc tính.
13
2.1. MỘT SỐ KHÁI NIỆM VÀ ĐỊNH NGHĨA (3)
Các thuộc tính (hay các tên gọi của các giá trị mô tả của quan hệ)

Dữ liệu dạng bảng:






Danh sách các quan hệ cùng loại, được gọi là loại quan hệ Sinh Viên
14
2.1. MỘT SỐ KHÁI NIỆM VÀ ĐỊNH NGHĨA (4)
Loại quan hệ thường được biểu diễn dưới dạng lược đồ quan hệ (lđ qh). Ví dụ: lđ qh SinhVien(MãSố, Tên, Ngàysinh, Phái, Lớp) đây là dạng viết tắt của loại quan hệ sinh viên (hay dữ liệu dạng bảng là danh sách các sinh viên).
=> dữ liệu dạng bảng là loại quan hệ (hay danh sách các quan hệ) là dạng viết dầy đủ của lđ qh ký hiệu T(quanhệ). Ví dụ TSinhVien:
15
2.1. MỘT SỐ KHÁI NIỆM VÀ ĐỊNH NGHĨA (5)
3. Thuộc tính: Tính chất để mô tả loại quan hệ hay tên gọi các giá trị mô tả các quan hệ cùng loại.
Ví dụ: MãSố, Tên, Ngàysinh, Phái, Lớp.
Mỗi một quan hệ được mô tả bởi các giá trị có liên quan tương ứng với tên gọi của các giá trị (Thuộc tính) đó, được gọi là một bộ (hay một thể hiện của một loại quan hệ tức một quan hệ).
Ví dụ:
1 bộ q1->(005, Trần Văn A, 06/10/1990, Nam, 10DTH01)
1 bộ q2->(006, Trần Văn B, 06/10/1990, Nam, 10DTH01)
16
2.1. MỘT SỐ KHÁI NIỆM VÀ ĐỊNH NGHĨA (6)
Thuộc tính được đặc trưng bởi 3 yếu tố:
a. Tên gọi.
b. Kiểu giá trị.
c. Miền giá trị.
17
2.1. MỘT SỐ KHÁI NIỆM VÀ ĐỊNH NGHĨA (7)
4. Siêu khóa & Khóa (của một loại quan hệ):
Siêu Khóa: Tập thuộc tính mà giá trị của nó dùng để phân biệt quan hệ này với quan hệ khác trong cùng một loại quan hệ.
=> *Hai quan hệ (2 bộ) có cùng giá trị của khóa thì hai quan hệ đó là một (trùng nhau) nghĩa là các giá trị trên các thuộc tính khác cũng giống nhau.
*Mỗi một quan hệ trên một loại quan hệ chỉ được thể hiện một lần nghĩa là bộ giá trị của siêu khóa không được trùng nhau trong T quan hệ.
Khóa: Siêu khóa bé nhất hay Tập thuộc tính bé nhất mà giá trị của nó dùng để phân biệt quan hệ này với quan hệ khác trong cùng một loại quan hệ.
18
2.1. MỘT SỐ KHÁI NIỆM VÀ ĐỊNH NGHĨA (8)
Các ví dụ về khóa:
Ví dụ1: TKB(Thứ, Ca, Phòng, Sốtiết, Lớp, Mãmôn, MãGV). Xác định khóa?
Ví dụ 2: BànThắng(MãcầuThủ, MãTrận, Phút).
Xác định khóa?
Ví dụ 3: HônThú(SốHT, CMND_Ch, LầnCh, CMND_Vo, LầnVo, NgayKetHon).
Tìm các khóa khác với khóa: SốHT.
Ví dụ 4: SV tự đưa các lđ quan hệ và xác định khóa?
Ví dụ 5: Quản lý siêu thị cần các lđ quan hệ?
19
2.1. MỘT SỐ KHÁI NIỆM VÀ ĐỊNH NGHĨA (9)
Những điều lưu ý về khóa:
* Khóa không do chủ quan của người cài đặt mà do qui tắc quản lý quyết định.
* Không phải tất cả các thuộc tính có tên Mã số là tham gia vào khóa mà chỉ có thể là khóa ngoại (hay khóa của một loại quan hệ khác).
* Bất cứ loại quan hệ nào cũng có ít nhất là 1 khóa.
* Khóa của loại quan hệ là tập thuộc tính còn khóa của 1 quan hệ là tập các giá trị thể hiện của quan hệ đó trên tập thuộc tính khóa.
* Cách tìm khóa dựa vào: Qui tắc quản lý (tân từ), dựa vào 2 bộ với các giá trị không thể trùng nhau (vì trùng nhau buộc các giá trị khác phải trùng nhau tức 2 bộ là một )
20
2.2. CÁC THAO TÁC CƠ BẢN TRÊN MỘT LĐ QUAN HỆ (1)
Lệnh tạo lđ quan hệ R(A1, A2,... An):
CREATE TABLE (
[],
[],

[] )
Ví dụ: CREATE TABLE NHANVIEN (
HOTENNV NVARCHAR(50) NOT NULL,
MANV CHAR(9) PRIMARY KEY,
NS SMALLDATETIME,
DCHI NVARCHAR(50),
GT CHAR(3) CHECK (GT IN (‘Nam’, ‘Nu’)),
PHG INT )
21
2.2. CÁC THAO TÁC CƠ BẢN TRÊN MỘT LĐ QUAN HỆ (2)
Lệnh sửa bảng:
Thay đổi cấu trúc bảng.
Thay đổi RBTV.
Thêm cột:
ALTER TABLE ADD COLUMN
[]
Xóa cột:
ALTER TABLE DROP COLUMN

Mở rộng cột:
ALTER TABLE ALTER COLUMN

22
2.2. CÁC THAO TÁC CƠ BẢN TRÊN MỘT LĐ QUAN HỆ (3)
Thêm RBTV:
ALTER TABLE ADD
CONSTRAINT ,
CONSTRAINT ,
….
Xóa RBTV:
ALTER TABLE DROP

Lệnh xóa bảng:
DROP TABLE
23
2.2. CÁC THAO TÁC CƠ BẢN TRÊN MỘT LĐ QUAN HỆ (4)
Ví dụ - Thay đổi cấu trúc bảng:
ALTER TABLE NHANVIEN ADD
NGHENGHIEP CHAR(20)
ALTER TABLE NHANVIEN DROP COLUMN NGHENGHIEP
ALTER TABLE NHANVIEN ALTER COLUMN
NGHENGHIEP CHAR(50)
Ví dụ - Xóa bảng:
DROP TABLE NHANVIEN
Ví dụ - Thay đổi RBTV:
24
CREATE TABLE PHONGBAN (
TENPB NVARCHAR(20),
MAPHG INT NOT NULL,
TRPHG CHAR(9),
NG_NHANCHUC DATETIME)
ALTER TABLE PHONGBAN ADD
CONSTRAINT PB_MAPHG_PK PRIMARY KEY (MAPHG),
CONSTRAINT PB_TRPHG FOREIGN KEY (TRPHG)
REFERENCES NHANVIEN(MANV),
CONSTRAINT PB_NGNHANCHUC_DF DEFAULT (GETDATE())
FOR (NG_NHANCHUC),
CONSTRAINT PB_TENPB_UNI UNIQUE (TENPB)
25
2.2. CÁC THAO TÁC CƠ BẢN TRÊN MỘT LĐ QUAN HỆ (5)
Thêm bộ giá trị mới vào quan hệ R (A1, A2,... An):
INSERT (R; v1,v2,..., vn)
Ví dụ: ?

Sửa giá trị các bộ của quan hệ R:
UPDATE (R; A1=e1, A2=e2,..., An=en; điều kiện sửa)
Ví dụ: ?

Xóa các bộ của quan hệ R:
DELETE (R; điều kiện xóa)
Ví dụ: ?
26
Chương 3. NGÔN NGỮ ĐẠI SỐ QUAN HỆ
NỘI DUNG:
3.1 CÁC PHÉP TOÁN TẬP HỢP TRÊN CÁC QUAN HỆ
3.2 CÁC PHÉP TOÁN QUAN HỆ
3.3 CÁC PHÉP TOÁN KẾT ĐẶC BIỆT
3.4 CÁC VÍ DỤ MINH HỌA
27
3.1 CÁC PHÉP TOÁN TẬP HỢP TRÊN CÁC QUAN HỆ (1)
1. Phép hợp nhất 2 quan hệ (UNION):
Cho R(U) và S(U) là 2 lđ quan hệ. Phép hợp của 2 lđ quan hệ R và S, ký hiệu: R  S, là một lđ quan hệ Q được định nghĩa:
Q = R  S đn (i) Q+ = U;
 (ii) TQ = { t: t  TR  t  TS }
2. Phép trừ 2 quan hệ (MINUS):
Cho R(U) và S(U) là 2 lđ quan hệ. Phép hiệu của 2 lđ quan hệ R và S, ký hiệu: R S, là một lđ quan hệ Q được định nghĩa:
Q = R S đn (i) Q+ = U;
 (ii) TQ = { t: t  TR  t  TS }
28
3.1 CÁC PHÉP TOÁN TẬP HỢP TRÊN CÁC QUAN HỆ (2)
3. Phép lấy phần chung của 2 quan hệ (INTERSECTION):
Cho R(U) và S(U) là 2 lđ quan hệ. Phần chung (Phép giao) của 2 lđ quan hệ R và S, ký hiệu: R  S, là một lđ quan hệ Q được định nghĩa:
Q = R  S đn (i) Q+ = U;
 (ii) TQ = { t: t  TR  t  TS }
4. Phép tích Đề các (Des CARTESIAN):
Cho R(A1, A2,..., An) và S(B1, B2,..., Bn) là 2 lđ quan hệ.
Tích Đề các của 2 lđ quan hệ R và S, ký hiệu: R x S, là một quan hệ Q được định nghĩa:
Q = R x S đn (i) Q+ = {A1, A2,..., An, B1, B2,..., Bn};
 (ii) TQ = { t =(u,v): u  TR  v  TS }
29
3.1 CÁC PHÉP TOÁN TẬP HỢP TRÊN CÁC QUAN HỆ (3)
5. Phép lấy phần bù của 1 quan hệ (COMPLEMENT):
Cho R (A1, A2,..., An) là một lđ quan hệ. Ai có miền giá trị là Dom(Ai) với i = 1, 2,..., n. Phần bù của R, ký hiệu:R hoặc , là một lđ quan hệ Q được định nghĩa:
Q = R đn (i) Q+ = {A1, A2,..., An};
 (ii) TQ = { t =(v1, v2,..., vn): vi  Dom(Ai)  t  TR }

6. Phép chia 2 quan hệ (DIVISION):
Không làm mất tính tổng quát, giả sử R (A,B) và S(B) là 2 lđ quan hệ. Thuơng của 2 lđ quan hệ R và S, ký hiệu: R S, là một lđ quan hệ Q được định nghĩa:
Q = R  S đn (i) Q+ ={A};
 (ii) TQ = { t = r.A: r  TR  u  TS  (t,u)  TR}
Tức là: Q x S  R
30
3.1 CÁC PHÉP TOÁN TẬP HỢP TRÊN CÁC QUAN HỆ (3)
Cách viết khác:
Thứ tự thực hiện:
31
3.1 CÁC PHÉP TOÁN TẬP HỢP TRÊN CÁC QUAN HỆ (3)
Ví dụ về phép chia:
R=PHANCONG
S=DEAN
Q= PHANCONG/DEAN
Kết quả Q
Cho biết nhân viên làm việc cho tất cả các đề án? (được phân công tham gia tất cả các đề án)
Hoặc viết Q= PHANCONG ÷ DEAN
32
KETQUATHI[Mahv,Mamh] / MONHOC[Mamh]
Q=KETQUA/MONHOC
* Viết cách khác:
33
3.2 CÁC PHÉP TOÁN QUAN HỆ (1)
1. Phép chiếu (PROJECTION):
Cho R(U) là một lđ quan hệ và K  U.
Phép chiếu quan hệ R trên tập thuộc tính K, ký hiệu: R[K] hoặc K(R) là một lđ quan hệ Q được định nghĩa:
Q = K(R) đn (i) Q+ = K;
 (ii) TQ = { t = r.K, r  TR }
Nói đơn giản, là một quan hệ mới lấy từ R sau khi đã loại bỏ đi các cột không cần giữ lại, và loại bỏ các dòng giống nhau.
34
3.2 CÁC PHÉP TOÁN QUAN HỆ (2)
2. Phép chọn (SELECTION):
Phép chọn các bộ của quan hệ R thỏa điều kiện e đã cho, ký hiệu là R: (e), hoặc (e)(R) được định nghĩa:
Q =  (e) (R) đn (i) Q+ = R;
 (ii) TQ = { r  TR: e(r) = true }
35
3.2 CÁC PHÉP TOÁN QUAN HỆ (3)
3. Phép thêta kết ( - JOIN):
Ở đây  là một trong các phép so sánh: >, >=, <, <=, =
Cho R (U) và S (V) là các lđ quan hệ được định nghĩa trên tập thuộc tính U ={A1, A2,..., An} và V = {B1, B2,..., Bn}.
A  U, B  V là 2 thuộc tính của 2 lđ quan hệ.
Phép  - kết giữa quan hệ R và S, ký hiệu là R S, được định nghĩa:

Q= R S đn (i) Q+ = U  V;
 (ii) TQ = { t = (u, v): u  TR  v  TS  u.A  v.B}.

Hay R S = (R x S): (R.A  S.B)
36
3.2 CÁC PHÉP TOÁN QUAN HỆ (4)
Các trường hợp đặc biệt:
Nếu  là phép so sánh bằng nhau (=) thì phép kết được gọi là phép kết bằng nhau, hay phép kết tương đương (EQUI-JOIN).
Nếu  là phép so sánh bằng nhau (=) và 2 thuộc tính A, B có tên giống nhau thì gọi đó là phép kết tự nhiên (NATURAL JOIN), và ký hiệu là R S.
Ví dụ: "Cho tên phòng ban cùng danh sách tên các nhân viên”:
PhongBan(MAPB, TenPB),
NhanVien(MNV,TenNV, DC, ĐT,MAPB)
PhongBan NhanVien [TenPB, TenNV]
37
3.3 CÁC PHÉP TOÁN KẾT ĐẶC BIỆT (1)
Phép kết đặc biệt xảy ra khi  là phép so sánh bằng nhau (=), A là khóa chính của R và B là khóa ngoại của S khi tham chiếu tới quan hệ R. Giả sử thể hiện của 2 quan hệ như sau:




1. Phép kết trong (INNER JOIN). Thực chất là phép kết bằng nhau, hay phép kết tương đương EQUI-JOIN. ký hiệu phép toán này bằng dấu sao (*).
Kết quả của phép kết trong giữa R và S: (R*S): Q(A, X, B, Y)
(1, x1, 1, y1)
(2, x2, 2, y2)
R(A, X)
(1, x1)
(2, x2)
(3, x3)
S (B, Y)
(1, y1)
(2, y2)
(4, y4)
38
3.3 CÁC PHÉP TOÁN KẾT ĐẶC BIỆT (2)
2. Phép kết vế trái (LEFT JOIN):
Phép kết vế trái giữa R và S, ký hiệu R S, là 1 quan hệ Q định nghĩa trên tập thuộc tính U  V, mà
TQ = {t = (u, v): u  TR  v  TS  u.A = v.B, hoặc
t = (u, Null): u  TR   v  TS s/c u.A = v.B}
Kết quả phép kết vế trái giữa R và S là:
Q(A, X, B, Y)
(1, x1, 1, y1)
(2, x2, 2, y2)
(3, x3, Null, Null) (1)
Suy ra, có thể dễ dàng tìm được các bộ của R mà không có bộ giá trị tương ứng trong quan hệ S.
39
3.3 CÁC PHÉP TOÁN KẾT ĐẶC BIỆT (4)
3. Phép kết vế phải (RIGHT JOIN):
Phép kết vế phải giữa R và S, ký hiệu R S, là 1 quan hệ Q định nghĩa trên tập thuộc tính U  V, mà
TQ = {t = (u, v): u  TR  v  TS  u.A = v.B, hoặc
t = (Null, v): v  TS  u  TR s/c u.A = v.B}
Kết quả phép kết vế phải giữa R và S là:
Q(A, X, B, Y)
(1, x1, 1, y1)
(2, x2, 2, y2)
(Null, Null, 4, y4) (2)
Suy ra, có thể dễ dàng tìm được các bộ của S mà không có bộ giá trị tương ứng trong quan hệ R.
40
3.3 CÁC PHÉP TOÁN KẾT ĐẶC BIỆT (5)
4. Phép kết ngoài (OUTER JOIN):
Phép kết ngoài giữa R và S là 1 quan hệ Q định nghĩa trên tập thuộc tính U  V, mà
TQ = {t = (u, v): u  TR  v  TS  u.A = v.B, hoặc
t = (u, Null): u  TR  v  TS s/c u.A = v.B, hoặc
t = (Null, v): v  TS  u  TR s/c u.A = v.B}
Kết quả phép kết ngoài giữa R và S là:
Q(A, X, B, Y)
(1, x1, 1, y1)
(2, x2, 2, y2)
(3, x3, Null, Null) (1)
(Null, Null, 4, y4) (2)
41
Cho biết họ tên nhân viên và tên phòng ban mà họ phụ trách nếu có
Quan hệ: NHANVIEN, PHONGBAN
Thuộc tinh: TENNV, TENPH
KQ  HONV,TENNV, TENPHG (R1)
42
Hàm tính toán trên 1 nhóm và tính toán trên nhiều nhóm
(gom nhóm – group by)
Các hàm tính toán gồm 5 hàm: avg(giá-trị), min(giá-trị), max(giá-trị), sum(giá-trị), count(giá-trị).

Phép toán gom nhóm: (Group by)


E là biểu thức đại số quan hệ
Gi là thuộc tính gom nhóm (nếu không có Gi nào=> không chia nhóm (1 nhóm), ngược lại (nhiều nhóm) => hàm F sẽ tính toán trên từng nhóm nhỏ được chia bởi tập thuộc tính này)
Fi là hàm tính toán
Ai là tên thuộc tính
43
Điểm thi cao nhất, thấp nhất, trung bình của môn CSDL ?


Điểm thi cao nhất, thấp nhất, trung bình của từng môn ?
44
Ví dụ
ℑSUM(C)(R)
AℑSUM(C)(R)
45
Tính số lượng nhân viên và lương trung bình của cả công ty
ℑCOUNT(), AVERAGE(LUONG)(NHANVIEN)
46
Tính số lượng nhân viên và lương trung bình của từng phòng ban
MAPGHℑCOUNT(), AVERAGE(LUONG)(NHANVIEN)
47
3.4 Phép gán
Được sử dụng để nhận lấy kết quả trả về của một phép toán
Thường là kết quả trung gian trong chuỗi các phép toán
Ký hiệu 

Ví dụ
B1

B2
S  P (R)
KQ  A1, A2, …, Ak (S)
48
3.5 Phép đổi tên
Được dùng để đổi tên
Quan hệ



Thuộc tính
S(R): (đọc là rho) Đổi tên quan hệ R thành S
Xét quan hệ R(B, C, D)
X, C, D (R): Đổi tên thuộc tính B thành X
Đổi tên quan hệ R thành S và thuộc tính B thành X
S(X,C,D)(R)
49
Cho biết họ và tên nhân viên làm việc ở phòng số 4
Quan hệ: NHANVIEN
Thuộc tính: HONV, TENNV
Điều kiện: PHG=4

C1:

C2:
HONV, TENNV (PHG=4 (NHANVIEN))
NV_P4  PHG=4 (NHANVIEN)
KQ  HONV, TENNV (NV_P4)
KQ(HO, TEN)  HONV, TENNV (NV_P4)
KQ(HO, TEN) (HONV, TENNV (NV_P4))
50
Thứ tự các ký hiệu biểu diễn trong ngôn ngữ ĐSQH:
Các thuộc tính(Các thuộc tính cần gom nhómCác hàm tính toán(Điều kiện(E)))
(Các thuộc tính cần gom nhómCác hàm tính toán((E):điều kiện))[Các thuộc tính]
Hoặc:
51
3.6 CÁC VÍ DỤ MINH HỌA (1)
Viết các biểu thức quan hệ để trả lời cho các câu hỏi sau:
1) "Cho danh sách nhân viên làm cùng phòng với Watson”.
(Employee: (Name = ‘Watson’))[Deptno] Employee
2) "Cho tên của người lãnh đạo Smith”.
((((Employee: (Name=‘Smith’))[Deptno] Department) [Mgr]) Employee) [Name]
3) "Cho danh sách nhân viên có lương trên 4000”.
EMPLOYEE: (SALARY > 4000)
52
Chương IV. NGÔN NGỮ TRUY VẤN CSDL
NỘI DUNG:
4.1 Câu truy vấn tổng quát
4.2 Truy vấn đơn giản
4.3 Phép kết
4.4 Đặt bí danh, sử dụng *, distinct
4.5 Các toán tử
4.6 Câu truy vấn con (subquery)
4.7 Phép chia
4.8 Hàm tính toán, gom nhóm
53
4.1 Câu truy vấn tổng quát (1)
SELECT [DISTINCT] *|tên_cột | hàm
FROM bảng
[WHERE điều_kiện]
[GROUP BY tên_cột]
[HAVING điều_kiện]
[ORDER BY tên_cột ASC | DESC]
54
4.2 Truy vấn đơn giản (1)
SELECT
Tương đương phép chiếu của ĐSQH
Liệt kê các thuộc tính cần hiển thị trong kết quả
WHERE
Tương ứng với điều kiện chọn trong ĐSQH
Điều kiện liên quan tới thuộc tính, sử dụng các phép nối luận lý AND, OR, NOT, các phép toán so sánh, BETWEEN
FROM
Liệt kê các quan hệ cần thiết, các phép kết
55
4.2 Truy vấn đơn giản (2)
Tìm masp, tensp do "Trung Quoc” sản xuất có giá từ 20000 đến 30000.
Select masp,tensp
From SANPHAM
Where nuocsx = ‘Trung Quoc’
and gia between 20000 and 30000
56
4.3 Phép kết (1)
Inner Join, Left Join, Right Join, Full Join
Ví dụ:
In ra danh sách các khách hàng (MAKH, HOTEN) đã mua hàng trong ngày 1/1/2007.
select KHACHHANG.makh, hoten
from KHACHHANG inner join HOADON on KHACHHANG.makh=HOADON.makh
where nghd=`1/1/2007`
57
4.3 Phép kết (2)
Ví dụ: In ra danh sách tất cả các hóa đơn và họ tên của khách hàng mua hóa đơn đó (nếu có).
Select sohd, hoten
From HOADON left join KHACHHANG on HOADON.makh=KHACHHANG.makh

Select sohd, hoten
From HOADON, KHACHHANG
Where HOADON.makh = KHACHHANG.makh
58
4.4 Đặt bí danh, sử dụng *, distinct
Đặt bí danh (Alias) cho thuộc tính và quan hệ:
Tên_cũ AS Tên_mới
Select manv, hoten as [ho va ten] From NHANVIEN
Liệt kê tất cả các thuộc tính của quan hệ:
Select * from Nhanvien
Select NHANVIEN.* from NHANVIEN
Distinct: trùng chỉ lấy một lần
Select distinct nuocsx from SANPHAM
Sắp xếp kết quả hiển thị: Order by
Select * from SANPHAM order by nuocsx, gia DESC
59
4.5 Toán tử truy vấn (1)
Toán tử so sánh: =, >,<,>=,<=,<>
Toán tử logic: AND, OR, NOT
Phép toán: +, -,*, /
BETWEEN …. AND
IS NULL, IS NOT NULL
LIKE (_ %)
IN, NOT IN
EXISTS, NOT EXISTS
SOME, ALL
60
4.5 Toán tử truy vấn (2)
IS NULL, IS NOT NULL
Select sohd from HOADON where makh is Null
Select * from HOADON where makh is Not Null
Toán tử so sánh, phép toán
Select gia*1.1 as [gia ban] from SANPHAM where nuocsx <> ’Viet Nam’
Select * from SANPHAM where (gia between 20000 and 30000) OR (nuocsx=‘Viet Nam’)
Toán tử IN, NOT IN
Select * from SANPHAM where masp NOT IN (‘BB01’,’BB02’,’BB03’)
61
4.5 Toán tử so sánh (3)
Toán tử LIKE
So sánh chuỗi tương đối
Cú pháp: s LIKE p, p có thể chứa % hoặc _
%: thay thế một chuỗi ký tự bất kỳ
_: thay thế một ký tự bất kỳ
Ví dụ: Select masp,tensp from SANPHAM where masp like `B%01‘
62
4.6 Câu truy vấn con (1)
In hoặc Exists
Ví dụ: Tìm các số hóa đơn mua cùng lúc 2 sản phẩm có mã số "BB01” và "BB02”.
Select distinct sohd
From CTHD where masp = `BB01` and sohd IN
(select distinct sohd from CTHD
Where masp = `BB02`)

Select distinct A.sohd
From CTHD A
Where A.masp = `BB01` and
EXISTS (select * from CTHD B
where B.masp = `BB02‘ and A.sohd = B.sohd)
63
4.6 Câu truy vấn con (2)
Not In hoặc Not Exists
Ví dụ: Tìm các số hóa đơn có mua sản phẩm mã số ‘BB01’ nhưng không mua sản phẩm mã số ‘BB02’.
Select distinct sohd
From CTHD
Where masp = `BB01` and sohd NOT IN (select distinct sohd from CTHD where masp = `BB02`)

Select distinct A.sohd
From CTHD A
Where A.masp = `BB01` and
NOT EXITST (select * from CTHD B
where B.masp = `BB02‘ and A.sohd=B.sohd)
64
4.7 Phép chia
Sử dụng NOT EXISTS
Ví dụ: Tìm số hóa đơn đã mua tất cả những sản phẩm do "Trung Quoc” sản xuất.

Select sohd from HOADON where not exists (select * from SANPHAM
where nuocsx = ‘Trung Quoc’ and not exists
(select * from CTHD where HOADON.sohd = CTHD.sohd and CTHD.masp = SANPHAM.masp))
65
4.8 Các hàm tính toán và gom nhóm (1)
4.8.1 Các hàm tính toán cơ bản:
COUNT: Đếm số bộ dữ liệu của thuộc tính
MIN: Tính giá trị nhỏ nhất
MAX: Tính giá trị lớn nhất
AVG: Tính giá trị trung bình
SUM: Tính tổng giá trị các bộ dữ liệu
66
67
Ví dụ
Tính lương thấp nhất, cao nhất, trung bình và tổng lương của tất cả các nhân viên.
Có tất cả bao nhiêu nhân viên?
Bao nhiêu nhân viên có người quản lý?
Bao nhiêu phòng ban có nhân viên trực thuộc?
Tính lương trung bình của các nhân viên.
Tính lương trung bình của các nhân viên theo từng phòng ban.
68
Ví dụ
Tính lương thấp nhất, cao nhất, trung bình và tổng lương của tất cả các nhân viên.

SELECT min(luong) as thapnhat,
max(luong) as caonhat,
avg(luong) as trungbinh,
sum(luong) as tongluong
FROM NhanVien
69
Ví dụ
2. Có tất cả bao nhiêu nhân viên?
SELECT count(*) FROM NhanVien
3. Bao nhiêu nhân viên có người quản lý?
SELECT count(*) FROM NhanVien WHERE manql is not null
SELECT count(Manql) FROM NhanVien
4. Bao nhiêu phòng ban có nhân viên trực thuộc
SELECT count(distinct phong) FROM NhanVien
70
4.8 Các hàm tính toán và gom nhóm (2)
4.8.2 Gom nhóm: mệnh đề GROUP BY
Sử dụng hàm gom nhóm trên các bộ trong quan hệ.
Mỗi nhóm bộ bao gồm tập hợp các bộ có cùng giá trị trên các thuộc tính gom nhóm.
Hàm gom nhóm áp dụng trên mỗi bộ độc lập nhau.
SQL có mệnh đề GROUP BY để chỉ ra các thuộc tính gom nhóm, các thuộc tính này phải xuất hiện trong mệnh đề SELECT.
71
Ví dụ
5. Tính lương trung bình của các nhân viên
SELECT avg(LUONG) as LUONGTB
FROM NhanVien

6. Tính lương trung bình của các nhân viên theo từng phòng ban.
SELECT phong, avg(LUONG) as LUONGTB
FROM NhanVien
GROUP BY phong
72
4.8 Các hàm tính toán và gom nhóm (3)
4.8.3 Điều kiện sau gom nhóm: mệnh đề HAVING
Lọc kết quả theo điều kiện, sau khi đã gom nhóm
Điều kiện ở HAVING được thực hiện sau khi gom nhóm, các điều kiện có liên quan đến thuộc tính Group By.
Ví dụ: Tìm phòng có số lượng nhân viên "Nữ” trên 5 người.
SELECT Phong
FROM NhanVien
WHERE Phai = ‘Nữ’
GROUP BY Phong
HAVING count(manv) > 5
73
Chương V. RÀNG BUỘC TOÀN VẸN
5.1 Giới thiệu ràng buộc toàn vẹn (RBTV)
5.2 Các đặc trưng của một RBTV
5.3 Phân loại RBTV
5.3 Bảng tầm ảnh hưởng tổng hợp
74
5.1 Giới thiệu ràng buộc toàn vẹn (RBTV)
Ràng buộc toàn vẹn là các quy định, điều kiện từ ứng dụng thực tế, các điều kiện này là bất biến.

Vì thế phải luôn đảm bảo cơ sở dữ liệu thỏa ràng buộc toàn vẹn sau mỗi thao tác làm thay đổi tình trạng của cơ sở dữ liệu.
75
5.2 Các đặc trưng của một RBTV
5.2.1 Nội dung
5.2.2 Bối cảnh
5.2.3 Bảng tầm ảnh hưởng
76
5.2.1 Nội dung
Mô tả chặt chẽ ý nghĩa của ràng buộc toàn vẹn.
Nội dung được phát biểu bằng ngôn ngữ tự nhiên hoặc bằng ngôn ngữ hình thức (ngôn ngữ tân từ, đại số quan hệ, mã giả,…)
Ngôn ngữ tự nhiên: dễ hiểu nhưng không chặt chẽ, logic.
Ngôn ngữ hình thức: chặt chẽ, cô đọng.
77
5.2.2 Bối cảnh
Là tập các loại quan hệ khi thao tác trên những loại quan hệ đó có khả năng làm cho ràng buộc bị vi phạm.
Đó là những loại quan hệ có thể vi phạm ràng buộc toàn vẹn khi thực hiện các thao tác thêm, xóa, sửa.
78
5.2.3 Bảng tầm ảnh hưởng (1)
Nhằm xác định khi nào tiến hành kiểm tra ràng buộc toàn vẹn. Thao tác nào thực hiện có thể làm vi phạm ràng buộc toàn vẹn.
Phạm vi ảnh hưởng của một ràng buộc toàn vẹn được biểu diễn bằng một bảng 2 chiều gọi là Bảng tầm ảnh hưởng.
79
5.2.3 Bảng tầm ảnh hưởng (2)
Một số quy định
Những thuộc tính khóa (những thuộc tính nằm trong khóa chính của quan hệ) không được phép sửa giá trị.
Thao tác thêm và xóa xét trên một bộ của quan hệ. Thao tác sửa xét sửa từng thuộc tính trên bộ của quan hệ.
Trước khi xét thao tác thực hiện có thể làm vi phạm ràng buộc hay không thì CSDL phải thỏa ràng buộc toàn vẹn trước.
80
5.2.3 Bảng tầm ảnh hưởng (3)
Bảng tầm ảnh hưởng của một ràng buộc






+ : thực hiện thao tác có thể làm vi phạm RBTV
- : thực hiện thao tác không thể làm vi phạm RBTV
+(A): có thể làm vi phạm RBTV khi sửa trên thuộc tính A
-(*) : không vi phạm RBTV do thao tác không thực hiện được
81
5.3 Phân loại RBTV
5.3.1 RBTV có bối cảnh trên 1 loại quan hệ
5.3.2 RBTV có bối cảnh trên nhiều loại quan hệ
82
5.3.1 RBTV có bối cảnh trên 1 loại quan hệ
5.3.1.1 RBTV miền giá trị
5.3.1.2 RBTV liên thuộc tính
5.3.1.3 RBTV liên bộ
83
Lược đồ CSDL quản lý giáo vụ
HOCVIEN (MAHV, HO, TEN, NGSINH, GIOITINH, NOISINH, MALOP)
LOP (MALOP, TENLOP, TRGLOP, SISO, MAGVCN)
KHOA (MAKHOA, TENKHOA, NGTLAP, TRGKHOA)
MONHOC (MAMH, TENMH, TCLT, TCTH, MAKHOA)
DIEUKIEN (MAMH, MAMH_TRUOC)
GIAOVIEN(MAGV, HOTEN, HOCVI, HOCHAM, GIOITINH, NGSINH, NGVL, HESO, MUCLUONG, MAKHOA)
GIANGDAY(MALOP, MAMH, MAGV, HOCKY, NAM, TUNGAY, DENNGAY)
KETQUATHI (MAHV, MAMH, LANTHI, NGTHI, DIEM, KQUA)
84
5.3.1.1 Ràng buộc miền giá trị
Là tập giá trị mà một thuộc tính có thể nhận.
R1: Giới tính của học viên chỉ là Nam hoặc Nữ
Nội dung:
hv  HOCVIEN: hv.Gioitinh  {‘Nam’,’Nữ’}
Bối cảnh: loại quan hệ HOCVIEN
Bảng tầm ảnh hưởng:
85
5.3.1.2 Ràng buộc liên thuộc tính
Là ràng buộc giữa các thuộc tính với nhau trên 1 bộ của quan hệ
R2: Ngày bắt đầu (TUNGAY) giảng dạy một môn học cho một lớp luôn nhỏ hơn ngày kết thúc (DENNGAY)
Nội dung:
gd  GIANGDAY: gd.TUNGAY < gd.DENNGAY
Bối cảnh: GIANGDAY
Bảng tầm ảnh hưởng:
86
5.3.1.3 Ràng buộc liên bộ (1)
Là ràng buộc giữa các bộ trên cùng một quan hệ (có thể liên quan đến nhiều thuộc tính).
R3: Tất cả các học viên phải có mã số phân biệt với nhau
Nội dung:
h1,h2 HOCVIEN: Nếu h1h2 thì h1.Mahvh2.Mahv
Bối cảnh: quan hệ HOCVIEN
Bảng tầm ảnh hưởng:
87
5.3.1.3 Ràng buộc liên bộ (2)
R4: Các giáo viên có cùng học vị, cùng hệ số lương thì mức lương sẽ bằng nhau
Nội dung:
gv1,gv2 GIAOVIEN:
Nếu (gv1.Hocvi=gv2.Hocvi)(gv1.Heso=gv2.Heso) thì gv1.Mucluong=gv2.Mucluong
Bối cảnh: quan hệ GIAOVIEN
Bảng tầm ảnh hưởng:
88
5.3.2 RBTV có bối cảnh nhiều loại quan hệ
5.3.2.1 RBTV tham chiếu (khóa ngoại, phụ thuộc tồn tại)
5.3.2.2 RBTV liên thuộc tính
5.3.2.3 RBTV do thuộc tính tổng hợp
5.3.2.4 RBTV do chu trình trong lược đồ biểu diễn quan hệ
89
5.3.2.1 Ràng buộc tham chiếu (1)
Là ràng buộc quy định giá trị thuộc tính trong một bộ của loại quan hệ R (tập thuộc tính này gọi là khóa ngoại), phải phụ thuộc vào sự tồn tại của một bộ trong quan hệ S (tập thuộc tính này là khóa chính trong quan hệ S).
RBTV tham chiếu còn gọi là ràng buộc phụ thuộc tồn tại hay ràng buộc khóa ngoại.
90
3.2.1 Ràng buộc tham chiếu (2)
R5: Học viên thi một môn học nào đó thì môn học đó phải có trong danh sách các môn học
Nội dung:
k  KETQUATHI, m  MONHOC: k.Mamh = m.Mamh
Hoặc: KETQUATHI[Mamh]  MONHOC[Mamh]
Bối cảnh: loại quan hệ KETQUATHI, MONHOC
Bảng tầm ảnh hưởng:
91
5.3.2.2 Ràng buộc liên thuộc tính (1)
Là ràng buộc giữa các thuộc tính trên những loại quan hệ khác nhau
R6: Ngày giáo viên giảng dạy một môn học phải lớn hơn hoặc bằng ngày giáo viên đó vào làm.
Nội dung: gd  GIANGDAY
Nếu gv  GIAOVIEN: gd.Magv = gv.Magv
thì gv.NGVL  gd.TUNGAY
Bối cảnh: GIANGDAY, GIAOVIEN
Bảng tầm ảnh hưởng:
92
5.3.2.2 Ràng buộc liên thuộc tính (2)
R7: Ngày thi một môn học phải lớn hơn ngày kết thúc học môn học đó.
Nội dung:
kq  KETQUATHI
Nếu gd GIANGDAY, hv HOCVIEN: (gd.Malop=hv.Malop)(kq.Mamh=gd.Mamh)
thì
gd.Denngay < kq.Ngthi

Bối cảnh: GIANGDAY, HOCVIEN, KETQUATHI
93
5.3.2.2 Ràng buộc liên thuộc tính (3)
Bảng tầm ảnh hưởng:
94
5.3.2.3 RBTV do thuộc tính tổng hợp (1)
Là ràng buộc giữa các thuộc tính, các bộ trên những loại quan hệ khác nhau.
Thuộc tính tổng hợp là thuộc tính được tính toán từ giá trị của các thuộc tính khác, các bộ khác.
Ví dụ: SANPHAM(Masp, Tensp, Nuocsx, Gia)
KHACHHANG(Makh, Hoten, Doanhso)
HOADON(Sohd, Nghd, Makh, Trigia)
CTHD(Sohd, Masp, Soluong, Gia)

Trị giá của một hóa đơn bằng tổng thành tiền của các chi tiết thuộc hóa đơn đó.
95
5.3.2.3 RBTV do thuộc tính tổng hợp (2)
Doanh số của một khách hàng bằng tổng trị giá các hóa đơn mà khách hàng đó đã mua:
Nội dung:
kh  KHACHHANG,
kh.Doanhso = (hd  HOADON: hd.Makh=kh.Makh)(hd.Trigia)
Bối cảnh: KHACHHANG, HOADON
Bảng tầm ảnh hưởng:
96
5.3.2.3 RBTV do thuộc tính tổng hợp (3)
R8: Sĩ số của một lớp là số lượng học viên thuộc lớp đó
Nội dung:
l  LOP,
l.Siso = Count(hv  HOCVIEN: hv.Malop = l.Malop)(*)
Bối cảnh: quan hệ LOP, HOCVIEN
Bảng tầm ảnh hưởng:
97
5.3.2.4 Do hiện diện của chu trình (1)
Biểu diễn lược đồ quan hệ dưới dạng đồ thị:
Loại quan hệ được biểu diễn bằng nút tròn rỗng to.
Thuộc tính được biểu diễn bằng nút tròn đặc nhỏ.
Tất cả các nút đều được chỉ rõ bằng tên của quan hệ hoặc thuộc tính. Thuộc tính thuộc một loại quan hệ được biểu diễn bởi một cung nối giữa nút tròn to và nút tròn nhỏ.
Nếu đồ thị biểu diễn xuất hiện một đường khép kín.
=> Lược đồ CSDL có sự hiện diện của chu trình.
98
5.3.2.4 Do hiện diện của chu trình (2)
99
5.3.2.4 Do hiện diện của chu trình (3)
X = GIANGDAY[Magv, Mamh]
Y = (GIAOVIEN ⋈ MONHOC) [Magv,Mamh]
Ý nghĩa:
X: giáo viên và những môn học đã được phân công cho giáo viên đó giảng dạy
Y: giáo viên và những môn học thuộc khoa giáo viên đó phụ trách
Mối quan hệ giữa X và Y trong các ràng buộc sau:
100
5.3.2.4 Do hiện diện của chu trình (4)
Xảy ra một trong ba ràng buộc sau:
Ràng buộc 1: giáo viên chỉ được phân công giảng dạy những môn thuộc khoa giáo viên đó phụ trách X  Y
Ràng buộc 2: giáo viên phải được phân công giảng dạy tất cả những môn thuộc khoa giáo viên đó phụ trách X = Y
Ràng buộc 3: có thể phân công giáo viên giảng dạy bất kỳ môn học nào X  Y
101
5.3.2.4 Do hiện diện của chu trình (4)
R9: giáo viên chỉ được phân công giảng dạy những môn thuộc khoa giáo viên đó phụ trách X  Y
102
5.3.3 Phụ thuộc hàm (functional dependency)
5.3.4 Thuật toán tìm khóa
103
Giới thiệu phụ thuộc hàm
Xét loại quan hệ:
SINHVIEN(MSSV, HOTEN, NTNS, PHAI)
MSSV xác định HOTEN, hay HOTEN phụ thuộc vào MSSV
MSSV xác định NTNS, PHAI, hay NTNS, PHAI phụ thuộc vào MSSV.
Ký hiệu:
MSSV  HOTEN
MSSV  NTNS
MSSV  PHAI
104
5.3.3 Phụ thuộc hàm (1)
Cho lđ quan hệ Q(A, B, C). Phụ thuộc hàm A xác định B. Ký hiệu A  B nếu:
q1,q2Q: Nếu q1.A = q2.A thì q1.B = q2.B
A  B được gọi là phụ thuộc hàm hiển nhiên nếu B  A
A  B được gọi là phụ thuộc hàm nguyên tố nếu A’  A, A’  A sao cho A’ B
105
Ràng buộc khóa cũng là một phụ thuộc hàm
Mamh  Tenmh, Tclt, Tcth, Makhoa
R4: Các giáo viên có cùng học vị, cùng hệ số lương thì mức lương sẽ bằng nhau. Ràng buộc này có thể biểu diễn bằng phụ thuộc hàm như sau:
Hocvi, Heso  Mucluong
5.3.3 Phụ thuộc hàm (2)
106
Cho R(U) với X, Y, Z, W  U. PTH có các tính chất sau:
Tính phản xạ:
Nếu Y  X thì X  Y
Tính tăng trưởng:
Nếu X  Y thì XZ  YZ
Tính bắc cầu:
Nếu X  Y và Y  Z thì X  Z
Phụ thuộc hàm (3)
107
Từ hệ tiên đề Amstrong, ta có các tính chất sau:
Tính phân rã:
Nếu X  YZ thì X  Y và X  Z
Tính kết hợp:
Nếu X  Y và X  Z thì X  YZ
Tính tựa bắc cầu:
Nếu X  Y và YZ  W thì XZ  W
Phụ thuộc hàm (4)
108
Cho LĐQH R(A,B,C,D,G,H) và tập PTH
F = {AB  C, BD, CDE, CEGH,GA}
Chứng tỏ AB  E được suy diễn từ F.
Ví dụ:
109
(1) AB  C (gt)
(2) AB  AB (Tính phản xạ)
(3) AB  B (phân rã (2))
(4) B  D (gt)
(5) AB  D (bắc cầu 3+4)
(6) AB  CD (hợp 1+5)
(7) CD  E (gt)
(8) AB  E (bắc cầu 6+7)
Giải:
110
Cho Q(A1, A2,…, An), Q+ = {A1, A2,…, An}
Bao đóng của tập phụ thuộc hàm F, ký hiệu F+ là tập tất cả các PTH được suy diễn từ F.
Bao đóng của tập thuộc tính X đối với tập phụ thuộc hàm F, ký hiệu X+F là tập tất cả các thuộc tính A có thể suy dẫn từ X nhờ tập bao đóng của các phụ thuộc hàm F+
X+F = {A  Q+  X  A  F+}
Bao đóng (Closure)
111
5.3.4 Thuật toán tìm khóa (1)
5.3.4.1 Thuật toán tìm bao đóng (Closure) của tập thuộc tính:
1. X0 = X
2. Xi+1 = Xi  A sao cho  (Y  Z )  F,
mà A  Z và Y  Xi
3. Cho đến khi Xi+1 = Xi
(Vì X= X0  X1  X2  …  U, mà U hữu hạn cho nên sẽ tồn tại 1 chỉ số i nào đó mà Xi+1 = Xi)
 Khi đó X+F = Xi
112
Ví dụ:
Cho R(U) với U = {A,B,C,D,E,G,H}
F = {B  A, DA  CE, D  H,
GH  C, AC  D}
Tính X+F, với:
X = {BD}
X = {AC}
5.3.4 Thuật toán tìm khóa (2)
113
5.3.4.2 Định nghĩa khóa:
R là lược đồ quan hệ định nghĩa trên tập các thuộc tính U = { A1, A2,..., An }, với tập các phụ thuộc hàm F = { f1, f2,..., fm } xác định trên R.
K  U là khóa của R nếu thỏa mãn hai điều kiện sau đây: 
K  U. (K là siêu khóa)
 K’  K mà K’  U. (Siêu khóa nhỏ nhất)
5.3.4 Thuật toán tìm khóa (3)
114
5.3.4.3: Bài toán tìm khóa:
A gọi là thuộc tính nguồn nếu A không xuất hiện ở vế phải của bất kỳ Pth không hiển nhiên nào của F. Tập các thuộc tính nguồn ký hiệu là N.
A gọi là thuộc tính đích nếu A không phải thuộc tính nguồn và A không xuất hiện ở vế trái của bất kỳ PTH không hiển nhiên nào của F. Ký hiệu là D.
5.3.4 Thuật toán tìm khóa (4)
115
Tập hợp các thuộc tính không phải nguồn và không phải đích gọi là tập trung gian. Ký hiệu là L
Các tập hợp N, D, L rời nhau từng đôi một và N  D  L = R+
Nhận xét
Nếu K là khóa của R thì K chứa tất cả các thuộc tính nguồn và không chứa bất kỳ thuộc tính đích nào.
5.3.4 Thuật toán tìm khóa (5)
116
B1: Xây dựng 2v tập con của L: L1, L2, … bằng phương pháp đường chạy nhị phân.
B2: Xây dựng tập K chứa các siêu khóa
K = 
 Li, Xi = N  Li
Tính Xi+F. Nếu Xi+F = R+ thì K = K  Xi
B3: Loại bỏ dần các siêu khóa lớn.
5.3.4 Thuật toán tìm khóa (6)
117
Ví dụ:
Cho R(ABCDEG) với tập Pth
F = { AE  C, CG  A, BD  G, GA  E }
Xác định tất cả các khóa của R.
Ta có:
N = { B, D }
D = 
L = { A, C, E, G }
 Xây dựng tập thuộc tính Li bằng phương pháp đường chạy nhị phân.
5.3.4 Thuật toán tìm khóa (7)
119
5.4. Bảng tầm ảnh hưởng tổng hợp (1)
Bảng tầm ảnh hưởng tổng hợp của m ràng buộc trên n quan hệ bối cảnh:
120
5.4. Bảng tầm ảnh hưởng tổng hợp (1)
121
Chương VI. CHUẨN HÓA DỮ LIỆU
6.1. Đặt vấn đề
6.2. Dạng chuẩn 1
6.3. Dạng chuẩn 2
6.4. Dạng chuẩn 3
6.5. Dạng chuẩn Boyce-Codd
6.6. Chuẩn hóa lược đồ CSDL bằng phương pháp phân rã
6.7. Ví dụ
122
6.1. Đặt vấn đề (1)
Xét lđ quan hệ
ĐẶT_HÀNG (SốĐH, NgàyĐH, MãKH, MãHH, SốLượng )




Với tập Pth F = {SốĐH  NgàyĐH, MãKH; SốĐH, MãHH  SốLượng}
=> Có Trùng lắp thông tin.
123
Sự trùng lắp thông tin dẫn đến:
Tăng chí phí lưu trữ
Tăng chi phí kiểm tra RBTV
Thiếu nhất quán
Vi phạm tính toàn vẹn của dữ liệu
6.1. Đặt vấn đề (2)
124
Tổ chức lại thành 2 loại quan hệ như sau:
ĐẶT_HÀNG (SốĐH, NgàyĐH, MãKH)
Với F1 = {SốĐH  NgàyĐH, MãKH}
CHITIẾT_ĐH (SốĐH, MãHH, SốLượng)
Với F2 = {SốĐH, MãHH  SốLượng}
=> Không còn xảy ra tình trạng trùng lắp thông tin.
6.1. Đặt vấn đề (3)
125
Để có thể đánh giá một cách cụ thể chất lượng thiết kế của một lược đồ CSDL, lúc đầu E.F.Codd (tác giả của mô hình dữ liệu quan hệ) đưa ra 3 dạng chuẩn và sau đó R.F.Boyce và E.F.Codd cải tiến dạng chuẩn 3 gọi là dạng chuẩn Boyce-Codd (BC).
Các dạng chuẩn được định nghĩa dựa trên khái niệm phụ thuộc hàm.
6.1. Đặt vấn đề (4)
126
Mục đích của quá trình chuẩn hóa:
Để biểu diễn được mọi quan hệ trong CSDL
Tránh sai sót khi thêm, xóa, sửa dữ liệu
Tránh phải xây dựng lại cấu trúc của các loại quan hệ khi cần đến các kiểu dữ liệu mới
6.1. Đặt vấn đề (5)
127
6.2. DẠNG CHUẨN 1 (1)
Thuộc tính đơn: Giả sử có lược đồ quan hệ Q. Một thuộc tính A của Q gọi là thuộc tính đơn nếu mỗi một thể hiện (dòng) thuộc tính A chỉ có một giá trị.
Ví dụ 1: Môn không là thuộc tính đơn
CHUYÊN_MÔN (MÃGV, MÔN )
128
Định nghĩa:
Một lược đồ quan hệ Q được gọi là ở dạng chuẩn 1 nếu mọi thuộc tính của Q đều là thuộc tính đơn.
Ví dụ:
Quan hệ CHUYÊN_MÔN (MÃGV, MÔN )
không đạt dạng chuẩn 1
Khắc phục: CHUYÊN_MÔN (MÃGV, MÔN)
6.2. DẠNG CHUẨN 1 (2)
129
CHUYÊN_MÔN (MÃGV, MÔN) đạt dạng chuẩn 1:
6.2. DẠNG CHUẨN 1 (3)
130
6.3. DẠNG CHUẨN 2 (1)
Phụ thuộc đầy đủ:
Giả sử có 1 lược đồ quan hệ Q và tập phụ thuộc hàm F. Thuộc tính A được gọi là phụ thuộc đầy đủ vào 1 tập thuộc tính X nếu:
A  X+F
X  A là phụ thuộc hàm nguyên tố
(không tồn tại X’  X, mà X’  A)
131
Định nghĩa:
Một lược đồ quan hệ Q được gọi là ở dạng chuẩn 2 nếu:
Q ở dạng chuẩn 1.
Mọi thuộc tính không khóa của Q đều phụ thuộc đầy đủ vào các khóa của Q.
6.3. DẠNG CHUẨN 2 (2)
132
Ví dụ: Loại quan hệ ĐẶT_HÀNG (SốĐH, MãHH, NgàyĐH, MãKH, SốLượng)
Với tập Pth F = {SốĐH  NgàyĐH, MãKH;
SốĐH, MãHH  SốLượng}
 Không đạt dạng chuẩn 2
Khắc phục: Tách thành 2 quan hệ:
ĐẶT_HÀNG (SốĐH, NgàyĐH, MãKH)
Với F1 = {SốĐH  NgàyĐH, MãKH}
CHITIẾT_ĐH (SốĐH, MãHH, SốLượng)
Với F2 = {SốĐH, MãHH  SốLượng}
6.3. DẠNG CHUẨN 2 (3)
133
Nhận xét:
Nếu lược đồ quan hệ Q chỉ có 1 khóa K và K chỉ có 1 thuộc tính thì Q ở dạng chuẩn 2.
Một lược đồ quan hệ Q ở dạng chuẩn 2 vẫn có thể chứa đựng sự trùng lắp thông tin.
6.3. DẠNG CHUẨN 2 (4)
134
6.4. DẠNG CHUẨN
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...

Người chia sẻ: Tống Thị Mộng Tuyền
Dung lượng: | Lượt tài: 8
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)