1. CƠ SỞ DỮ LIỆU GV: ThS.VŨ VĂN ĐỊNH TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA CÔNG NGHỆ THÔNG TIN *************************
2.
3.
4.
5.
6.
7.
8.
9. Hình biểu diễn Sự phân mức một CSDL CSDL mức khái niệm Mức ngoài Mức trung gian Mức vật lý View ( khung nhìn) của một user là một tập hợp tất cả các dữ liệu mà user đó nhìn thấy, được phép truy cập vào. View 1 View 2 View k CSDL mức vật lý …… ………… . User 1 User 2 User k
10.
11.
12.
13.
14. - 3. Các thành phần trong hệ QT CSDL: Ngôn ngữ giao tiếp với người sử dụng: Gồm :ngôn ngữ mô tả , thao tác , truy vấn và quản lý dữ liệu. - Từ điển dữ liệu : là một CSDL của hệ QT CSDL sử dụng để lưu trữ cấu trúc CSDL, các thông tin bảo mật, bảo đảm an toàn dữ liệu và các cấu trúc ngoài - Các biện pháp bảo mật - Cơ chế giải quyết tranh chấp dữ liệu. Các biện pháp: + Cấp quyên ưu tiên cho NSD + Đánh dấu yêu cầu truy xuất, phân chia thời gian, người nào yêu cầu trước thì có quyền truy xuất trước.
15.
16.
17.
18.
19.
20. PHÒNG CÔNG VIỆC LÝ LỊCH NHÂN VIÊN Có Gồm Cùng làm quản lý 1-n n-1 1-n 1-1 Hình 3. Mô hình dữ liệu mạng ( Network Model)
21.
22. Ví dụ : TOÀN QUỐC HÀ NỘI HẢI PHÒNG NAM ĐỊNH … … NAM HỒNG CỔ LOA … BA ĐÌNH ĐÔNG ANH NK 1 HỘ 2 … NK 1 … HỘ 1
23.
24.
25. VD: Quan hệ : SINH_VIEN (Ma SV, Hoten, Nam sinh, DiaChi, Diem) t3 8 Tây Hồ 1985 Hoàng Hà 003 t2 10 Ba Đình 1980 Minh Tuấn 002 t1 9 Hoàn Kiếm 1986 Ngọc Anh 001 Điem Diachi Namsinh Hoten Mã SV
26.
27.
28.
29.
30.
31.
32.
33.
34. b.Khoá Khoá của một lược đồ quan hệ R là một siêu khoá của lược đồ này sao cho mọi tập con thực sự của nó không là siêu khoá. Như vậy, một khoá là một siêu khoá tối thiểu hiểu theo nghĩa, đó là một siêu khoá mà chúng ta không thể bỏ bớt thuộc tính nào ra khỏi nó mà vẫn giữ được tính chất xác định duy nhất cho mỗi bộ. VD: Xét quan hệ SINH_VIEN - Các siêu khoá : {Mã SV, Họ tên} hay {Mã SV, ngày sinh, điểm,},... - Khoá : {Mã SV}
35.
36. VD: Quan hệ KHOA - Quan hệ trên có 3 khoá dự tuyển là { Mã khoa }, { Tên khoa }, {Điện thoại }. Người ta thường chọn Mã khoa làm khoá chính. Như vậy, thuộc tính không khoá chỉ còn là : Địa chỉ và Chủ nhiệm khoa Nguyễn Anh A3 04.768343 CNTT SPCN Hoài Nam A4 04.768945 Văn SPV Nguyễn Anh A3 04.768459 Toán SPT Chủ nhiệm khoa Địa chỉ Điện thoại Tên khoa Mã khoa
37. c. Khoá ngoài : Một tập thuộc tính K là khoá ngoài của một quan hệ r nếu K không là khoá chính của quan hệ r nhưng lại là khoá chính của một quan hệ khác . VD: Có hai quan hệ: SINHVIEN (Mã SV, Tên SV,..., Mã lớp) LOP( Mã lớp, Tên lớp,...) Mã lớp là khoá ngoài của quan hệ SINHVIEN.
38. Bài 4. Đại số quan hệ I. Đại số quan hệ Đại số quan hệ là cơ sở của một ngôn ngữ bậc cao để thao tác trên các quan hệ. Đại số quan hệ gồm 8 phép toán cơ bản. Bằng các phép toán này, ta có thể trích dữ liệu từ một hay nhiều quan hệ để tạo ra các quan hệ mới.
39. II. Các phép toán lý thuyết tập hợp -Gọi r là quan hệ trên tập thuộc tính R={A1, ..,An}. Giả thiết rằng r là tập hữu hạn các bộ. - Khái niệm khả hợp : Hai lược đồ quan hệ R1 và R2 được goị là khả hợp nếu có cùng bậc n và DOM(Ai) = DOM(Bi) (1 i n) - Cho hai quan hệ R1=(A1,A2,..An) và R2=(B1,B2,..,Bn) là hai quan hệ khả hợp, ta có định nghĩa:
40. 1.Phép hợp Hợp của hai quan hệ r và s khả hợp, kí hiệu là r s là tập các bộ thuộc r hoặc s hoặc thuộc cả hai quan hệ. Biểu diễn hình thức: r s = { t/ t r hoặc t s hoặc t r và s } Ví dụ : r ( A B C) s ( A B C) r s = ( A B C) ___________ __________ _________________ a1 b1 c1 a1 b1 c1 a1 b1 c1 a2 b1 c2 a2 b2 c2 a2 b1 c2 a2 b2 c1 a2 b2 c2 a2 b2 c1
41. 2. Phép giao Giao của hai quan hệ r và s khả hợp, kí hiệu là r s là tập các bộ thuộc cả quan hệ r và s . Biểu diễn hình thức : r s = { t/ t r và t s } Ví dụ : Với hai quan hệ ở ví dụ trên, giao của chúng là: r s = ( A B C ) a1 b1 c1
42. 3. Phép trừ Hiệu của hai quan hệ r và s khả hợp, kí hiệu là r - s là tập các bộ thuộc r nhưng không thuộc s . Biểu diễn hình thức : r - s = { t/ t r và t s } Ví dụ : Cũng với ví dụ trên, hiệu của chúng là: r - s = ( A B C ) a2 b1 c2 a2 b2 c1 Chú ý : phép giao của hai quan hệ có thể biểu diễn qua phép trừ: r s = r- ( r - s )
43. 4. Tích Đề -Các - Gọi r là quan hệ xác định trên tập thuộc tính { A1, A2,..,An} và s là quan hệ xác định trên tập thuộc tính { B1, B2,..,Bm} . Tích Đề - Các r x s của r và s là tập ( n + m ) - bộ với n thành phần đầu có dạng một bộ thuộc r và m thành phần sau có dạng của một bộ thuộc s. - Biểu diễn hình thức : r x s = { t/ t có dạng (a1, a2, .., an, b1, b2,..,bm) trong đó ( a1, ..,an ) r và (b1,.. ,bm) s } - Ví dụ : r ( A B C) s ( D E F) r x s = ( A B C D E F) a1 b1 c1 d e f a1 b1 c1 d e f a2 b2 c2 d1 e1 f 1 a1 b1 c1 d1 e1 f1 a2 b2 c2 d e f a2 b2 c2 d1 e1 f1
44.
45. Ví dụ : Cho quan hệ SV ( Mã SV, Họ tên, Ngày sinh, điểm) như sau : Thì phép chiếu Mã Sv, Điểm (SV) sẽ cho ta một quan hệ mới chỉ gồm hai thuộc tính là Mã SV và Điểm . DIEM ( Mã SV, Điểm ) : 10 004 7 003 9 002 8 001 Điểm Mã SV 10 21/6/85 Hồng Vân 004 7 25/3/87 Xuân Mai 003 9 13/4/85 Ngọc Bích 002 8 23/4/86 Trần Anh 001 Điểm Ngày sinh Họ tên Mã SV
46.
47.
48. Gọi là một trong các phép so sánh . Phép kết nội được định nghĩa: Phép kết nối của quan hệ r đối với thuộc tính A với quan hệ s đối với thuộc tính B được định nghĩa qua. r s = { (t u ) | t r và u s và t[A] u[B] } A B
49.
50. Ví dụ : r ( A B C ) s( C D E ) r s = ( A B C C D E) a1 1 1 1 d1 e1 a1 1 1 1 d1 e1 a2 2 1 2 d2 e2 a2 2 1 1 d1 e1 a1 2 2 3 d3 e3 a2 2 1 2 d2 e2 a1 2 2 1 d1 e1 a1 2 2 2 d2 e2 B ≥ C
51.
52. 8. Phép chia Gọi r là quan hệ n- ngôi và s là quan hệ m ngôi ( n > m, s ). Phép chia r s là tập tất cả các ( n-m )- bộ t sao cho với mọi bộ u s thì bộ t u r. Ví dụ : r ( A B C D ) s ( C D) r s = ( A B) a b c d c d a b a b e f e f e d b c e f e d c d e d e f c a d e
53. Cơ sở dữ liệu minh hoạ Cho một cơ sở dữ liệu Thực tập gồm 3 quan hệ sau đây: SV( SV#, HT, NS, QUE, HL) DT(DT#, TDT, CN, KP) SD(SV#, DT#, NTT, KM, KQ) -Quan hệ SV chứa thông tin về các sinh viên trong một lớp của một trường đại học. Trong đó: SV# : mã số sinh viên HT : Họ và tên sinh viên NS : Năm sinh của sinh viên QUE: quê quán HL : Học lực thể hiện qua điểm trung bình
54. - Quan hệ DT chứa thông tin về đề tài nhà trường quản lý . Trong đó : DT# : mã số đề tài TDT : tên đề tài CN : họ và tên chủ nhiệm đề tài KP : Kinh phí cấp cho đề tài ( triệu đồng) - Quan hệ SD chứa thông tin về tình hình thực tập của các sinh viên theo các đề tài. Trong đó : NTT : nơi thực tập KM : khoảng cách từ nơi thực tập đến trường KQ : kết quả thực tập theo đề tài đã chọn . * Giả thiết là mỗi sinh viên có thể tham gia nhiều đề tài, mỗi đề tài sinh viên đó thực tập tại một địa điểm.
62. Nếu thực hiện phép gộp nhóm MA_PHONG COUNT MA_NV, AVERAGE LUONG (NHAN_VIEN) Thì quan hệ kết quả sẽ là : Nếu thực hiện phép gộp nhóm : COUNT MA_NV, AVERAGE LUONG (NHAN_VIEN) Thì quan hệ kết quả sẽ là :
63. Bài tập: Xét các CSDL gồm các lược đồ quan hệ được cho bởi các thể hiện của chúng như sau: NHAN_VIEN PHONG
65. Yêu cầu : 1. Tìm tên dự án có mã là D20 2.Cho biết tên các thành phố có dự án thực hiện. 3. Cho biết tên phòng thực hiện dự án có mã là D20 4. Cho biết tên và lương của những nhân viên thực hiện dự án D8 và làm việc trên 20 giờ 5. Cho biết họ tên và lương của những nhân viên thuộc phòng " Nghiên cứu & PT" 6. Đếm số nhân viên trong công ty và tính mức lương trung bình của các nhân viên. 7. Đếm số dự án mà công ty đã thực hiện
66.
67.
68.
69.
70.
71. Ví dụ : Tạo bảng SINH_VIEN có các thuộc tính: - mã sinh viên ( kiểu số có độ dài <5) - họ tên ( kiểu xâu kí tự có độ dài <25) - ngày sinh (kiểu date) - giới tính ( kiểu xâu có độ dài <3) - địa chỉ ( kiểu xâu có độ dài < 30 ) - điểm TB ( kiểu số thực có độ dài <4, trong đó có 2 chữ số sau phần thập phân)
75. Ví dụ : Tạo bảng SINH_VIEN có: - khoá chính là thuộc tính mã sinh viên ( kiểu số) - họ tên ( kiểu xâu kí tự có độ dài <=25) không được để trống, - ngày sinh (kiểu date) - giới tính ( kiểu xâu có độ dài <=3, mặc định là 'Nam') - mã lớp là một khoá ngoài, mã lớp thuộc bảng LOP. - điểm TB ( kiểu số thực có độ dài <=4)
76.
77.
78.
79.
80.
81.
82. Trong đó : - Từ khoá DISTINCT : để loại bỏ sự trùng lặp ( các bộ trùng lặp chỉ giữ lại một bộ) - < biểu thức cột> : là tên của một cột hoặc của biểu thức - < tên bảng > : là tên của một bảng trong CSDL hay một khung nhìn mà ta có thể truy cập vào - GROUP BY : dùng để gộp nhóm các bộ cùng giá trị tương ứng ở các cột xuất hiện trong ds tên cột. - HAVING: dùng để lọc các nhóm thoả điều kiện - ORDER BY : quy định thứ tự trong các cột trả ra gồm : ASC ( tăng dần) và DESC ( giảm dần). Mặc định là ASC
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100. 4. Tìm kiếm có sử dụng mệnh đề HAVING Mệnh đề HAVING thường sử dụng cùng mệnh đề GROUP BY . Sau HAVING là biểu thức điều kiện. Biểu thức này không tác động vào toàn bảng mà chỉ tác động vào từng nhóm các bản ghi đã chỉ ra tại mệnh đề GROUP BY VÍ DỤ : Tìm mã số những sinh viên thực hiện ít nhất 2 đề tài: SELECT SV# FROM SD GROUP BY SV# HAVING COUNT ( DT# ) >=2;
101.
102. Câu lệnh : SELECT TDT, CN, KP FROM DT, SD WHERE SD.DT# = DT.DT#; Chú ý : Trong câu truy vấn có hơn một bảng, nếu tên cột là không duy nhất thì bắt buộc phải viết tên cột dạng tường minh.
103.
104. Ví dụ 2: Tìm những sinh viên thực hiện ít nhất một đề tài nào đó: SELECT * FROM SV WHERE EXISTS ( SELECT * FROM SD WHERE SV.SV# = SD.SV#); SQL còn có thể tìm kiếm trên nhiều bảng nhờ mênh đề EXISTS ( tồn tại )
105.
106. Ví dụ 4 : Tìm tên sinh viên có điểm học lực cao hơn tất cả các sinh viên SELECT HT FROM SV WHERE HL >= ALL ( SELECT HL FROM SV ); Mệnh đề trên tương đương với : SELECT HT FROM SV WHERE HL = ( SELECT MAX (HL) FROM SV );
107. IV. CÁC MỆNH ĐỀ CẬP NHẬT DỮ LIỆU 1. Thêm một bộ : Dạng tổng quát : INSERT INTO Tên _ bảng ( ds_tên _cột) VALUES (các_ giá_trị ) [ câu hỏi con] Có thể bổ sung vào một tập các bản ghi là kết quả xử lý của một câu hỏi nào đó. VD: Chèn vào bảng SVG các sinh viên giỏi trong bảng SV. INSERT INTO SVG SELECT * FROM SV WHERE HL >= 8.0;
108. 2. Xoá bản ghi Có thể xoá một hay nhiều bản ghi thoả mãn một điều kiện nào đó. Dạng tổng quát: DELETE [tên_bảng] [ FROM { Tên_bảng / Tên_ view}] [ WHERE Biểu_ thức _điều _kiện] Ví dụ : Xoá những sinh viên có điểm HL kém (HL<=3.5): DELETE FROM SV WHERE HL<=3.5;
109. 3. Sửa đổi dữ liệu Sửa đổi các giá trị của các bản ghi theo một điều kiện nào đó: Dạng tổng quát : UPDATE [ tên_bảng] SET [ tên_cột = biểu_thức,...] FROM tên _ bảng WHERE Biểu _ thức _điều _kiện Ví dụ : Sửa điểm học lực của bạn Phan Ngọc Hà thành 8.5 UPDATE SV SET HL = 8.5 WHERE HT=‘ Phan Ngọc Hà’;
110. 4. Tạo chỉ mục. Việc tạo chỉ mục là tạo ra một bảng lưu trữ vị trí các bản ghi dựa trên giá trị tăng dần của một ( hay một số) cột nào đó. Việc này có tác dụng làm tăng tốc độ tìm kiếm thông tin trong CSDL. Dạng tổng quát : CREATE INDEX tên_bảng_chỉ_mục ON Tên_bảng ( tên _cột [ ASC | DESC ]); Bỏ chỉ mục thì sử dụng mệnh đề : DROP INDEX tên_chỉ_mục;
111. Ví dụ : Tạo chỉ mục CMHT trên cột Ho_ten của bảng sinh viên: CREATE INDEX CMHT ON SV ( HT ASC ); Ví dụ: Xoá chỉ mục CMHT ra khỏi bảng SV DROP INDEX CMHT;
112. 5. Tạo View của người sử dụng Tạo ra một khung nhìn của người sử dụng : Dạng tổng quát : CREATE VIEW Tên_View (Danh_ sách_ tên _cột) AS mệnh_đề_Select ; Ví dụ : Tạo View DSSVG gồm những sinh viên giỏi bao gồm thông tin về họ tên, ngày sinh, giới tính của các sinh viên từ bảng SV. CREATE VIEW DSSVG ( Hoten, NS, GT) AS SELECT HT , NS, GT FROM SV WHERE HL >= 8.0;
113. 6. SQL nhúng Có thể truy cập vào CSDL từ một ngôn ngữ lập trình bậc cao nếu có SQL "nhúng" trong ngôn ngữ này. Một ngôn ngữ trong đó các câu hỏi được SQL được nhúng vào gọi là ngôn ngữ chủ, còn các cấu trúc của SQL được phép trong ngôn ngữ này làm thành SQL nhúng - Sơ đồ xử lý các chương trình có nhúng câu lệnh SQL:
114. Ngôn ngữ chủ + SQL nhúng Tiền xử lý Ngôn ngữ chủ Các lời gọi hàm Biên dịch ngôn ngữ chủ Thư viện SQL Chương trình ngôn ngữ chủ +
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186. Bảng GD ở dạng chuẩn 1: TK WEP Hà VISUAL BASIC Hà NM CSDN Lan C Hà PASCAL Lan Mon_GD Ten_GV
187.
188.
189.
190. 3.4 Dạng chuẩn Boye-Codd ( BCNF) Lược đồ quan hệ R ở dạng chuẩn Boye-Codd ( BCNF) nếu với mọi : X A thoả trên R , A X thì X là một khoá của R. - VD : Trong ví dụ R(CSZ) nêu trên, rõ ràng R không ở BCNF mà là ở 3NF vì rằng Z C nhưng Z không phải là một khoá của R. - Định lý : Nếu một lược đồ quan hệ R với tập phụ thuộc hàm F là ở BCNF thì nó là ở 3NF. - Nhận xét : Trong CSDL, các lược đồ quan hệ ở dạng chuẩn 1, 2, 3 vẫn tồn tại sự dư thừa thông tin. Để tối thiểu sự dư thừa thông tin thì các bảng phải ở dạng chuẩn BCNF
191.
192.
193.
194. 4.3. Phép tách một lược đồ quan hệ thành 3NF Phép tách một lược đồ quan hệ R với tập pth F tối thiểu , không làm mất mát thông tin trên R, bảo toàn các pth sao cho mỗi lược đồ con đều ở 3NF: - B1 : Gom tất cả các thuộc tính của R không liên quan đên một pth nào của F, hoặc vế trái, hoặc vế phải , cho vào một lược đồ. - B2 : Nếu có một phụ thuộc hàm nào của F mà liên quan tới tất cả các thuộc tính của R thì kết quả ra chính là R. - B3 : Ngoài ra, phép tách đưa ra các lược đồ gồm các thuộc tính XA cho pth X A ; nếu X A1, X A2, ... , X An thì thay thế tập thuộc tính XA1A2...An cho XAi ( 1<= i<= n). Quá trình tiếp tục đến khi tất cả các lược đồ đều đã ở 3NF
195. Ví dụ : Cho lược đồ quan hệ R ( CTHRSG) với tập pth tối thiểu : C T , HR C , HT R , CS G và HS R. Thuật toán trên cho ta kết quả của phép tách là tập lược đồ gồm 5 lược đồ con ở 3NF là : R1 (CT) (ứng với pth C T) R2 (HRC) (ứng với pth HR C) R3 ( HTR) (ứng với pth HT R) R4 ( CSG) (ứng với pth CS G) R5 (HSR) (ứng với pth HS R)
196. 4.3. Phép tách một lược đồ quan hệ thành BCNF Phép tách một lược đồ quan hệ R với tập pth F, không làm mất mát thông tin sao cho mỗi lược đồ con đều ở BCNF. Phương pháp : Lặp liên tiếp. Tại mỗi bước phép tách p là bảo đảm không mất mát thông tin đối với F. -Bước đầu : p chỉ bao gồm R - Các bước tiếp : Nếu S là một lược đồ thuộc p, S chưa ở BCNF, chọn X A là pth thoả trên S, trong đó X không chứa khoá của S, A X. Thay thế S trong p bởi S1 và S2 với : S1 = XA, S2 = S - A Quá trình tiếp tục cho tới khi tất cả các lược đồ đều ở dạng chuẩn BCNF.
197. VD: Cho lược đồ R(CTHRSG) với tập pth : C T, HR C, HT R, CS G, HS R Khoá của R là HS. Ta lần lượt xét các pth vi phạm điều kiện BCNF. - Xét C T : vi phạm BCNF vì C không chứa khoá, dùng thuật toán trên để tách thành : R1 ( CT ) và R2( CHRSG). Sau đó cần tính F+ và chiếu xuống R1 và R2, kiểm tra ta thấy R1 đã ở BCNF, R2 thì chưa. Ta tách tiếp R2. Phép tách cuối cùng được : R1(CT), R2 ( CSG), R3 ( CHR), R4 ( HSR) Quá trình tách có thể được biểu diến qua sơ đồ :
198. R(CTHRSG) Khoá =HS R1(CT) Khoá =C R2(CHRSG) Khoá =HS R21(CSG) Khoá =CS R22(CHRS) Khoá =HS R221(HRC) Khoá =HR,HC R222(HSR) Khoá =HS C T, HR C, HT R, CS G, HS R HR C, HT R, CS G, HS R HR C, HC R, HS R HR C, HC R HS R CS G C T
199. BTVN: B1 . Cho lược đồ quan hệ R= <U , F> với tập thuộc tính U = ABCDEHG và tập phụ thuộc hàm F={DE G, E A, H C, CG H, DG EA, D B} a. Xác định khoá của lược đồ quan hệ trên. b. Xác định dạng chuẩn cao nhất của lược đồ quan hệ trên. B2 . Xác định dạng chuẩn cao nhất của lược đồ quan hệ với các thuộc tính ABCDEF và tập phụ thuộc hàm {AB C,C B,ABD E,F A} B3. Cho W= < R,F> R = { A, B, C, D} F= { B D, A C, C ABD}. Hỏi W có là 2NF, 3NF không ?
200. B4. Xác định dạng chuẩn cao nhất của lược đồ quan hệ sau: H=(U,F); U=ABCD; F={CD B,A C,B ACD} B5. Cho lược đồ R=(BOISQD) và F={S D,I B, IS Q,B O} a. Chứng tỏ rằng phép tách: R=(SD,IB, ISQ,BO) Là phép tách không mất mát thông tin. b. Chứng tỏ phép tách trên là ở dạng 3NF.