Khoá chính primary key, Khoá dựtuyển candidate key.12/12/1985Lê Phương Bắc200510033/3/1985Lê Phương Bắc200510022/2/1986Trần Mai Ly200510011/1/1985Nguyễn Hải Nam2005100012/12/1985Lê Ngọc
CƠ SỞ DỮ LIỆU QUAN HỆ Chương Relational Theory CƠ SỞ DỮ LIỆU QUAN HỆ Data Model DDL Algebra DML SQL NỘI DUNG Mơ hình liệu quan hệ MƠ HÌNH DỮ LIỆU QUAN HỆ Relational Database [Codd, 1970] Khái niệm Dữ liệu lưu trữ bảng hai chiều Khố quan hệ Mỗi bảng có tên Ràng buộc quan hệ Đại số quan hệ Ngôn ngữ vấn tin SQL Mỗi cột có tên bảng Mỗi giá trị cột thuộc miền Thứ tự hàng bảng không quan trọng Thứ tự cột bảng không quan trọng Mỗi giá trị cột nguyên tố Ví dụ: Quan hệ SV MSV HOTEN NS 20051000 Nguyễn Hải Nam 1/1/1985 20051001 Trần Mai Ly 2/2/1986 20051002 Lê Phương Bắc 3/3/1985 MƠ HÌNH DỮ LIỆU QUAN HỆ Thuật ngữ Người dùng Lý thuyết MƠ HÌNH DỮ LIỆU QUAN HỆ Miền (Domain): Tập giá trị nguyên tố Thuộc tính (Attribute): Một thuộc tính A gồm: tên thuộc tính Bảng Hàng Bản ghi Cột hay Trường Quan hệ Bộ Thuộc tính Tập giá trị hợp lệ Miền Số cột bảng Cấp Số hàng bảng Lực lượng miền trị, dom(A), hữu hạn vơ hạn, ||dom(A)|| ≥ Tích Đề-các: D1× D2 ×…×Dn = {(v1, v2,…,vn)| vi ∈ Di} Ví dụ: D1 = {0,1}; D2 = {a,b,c} D1 × D2 = {(0,a), (0,b), (0,c), (1,a), (1,b), (1,c)} D1 = {‘Lan’, ‘Mai’, ‘Cúc’}; D2 = {‘nam’, ‘nu’}; D3 = {19, 20} D1 × D2 × D3 = {(‘Lan’,’nam’,19), (‘Lan’, ‘nam’, 20), (‘Lan’,’nu’, 19),…… MƠ HÌNH DỮ LIỆU QUAN HỆ Quan hệ: MƠ HÌNH DỮ LIỆU QUAN HỆ Thể (trạng thái) Quan hệ U = {A1, A2, …, An } - tập hữu hạn thuộc tính, Quan hệ R tập thuộc tính U là: R ⊆ dom(A1) × dom(A2) ×…× dom(An) Kí hiệu: R(U) hay R(A1, A2, …, An) hay R trường hợp ngầm định quan hệ SV MSV HOTEN NS 20051000 Nguyễn Hải Nam 1/1/1985 20051001 Trần Mai Ly 2/2/1986 20051002 Lê Phương Bắc 3/3/1986 Ví dụ: Quan hệ SV(MSV, HOTEN, NS) - Tên quan hệ: SV - Tập thuộctính: {MSV, HOTEN, NS} - Miền trị: dom(MSV): char(7) dom(HOTEN): char(30) dom(NS): date Một quan hệ: t =, t ∈ SV Cơ sở liệu quan hệ tập quan hệ biến thiên theo thời gian MƠ HÌNH DỮ LIỆU QUAN HỆ KHỐ CỦA QUAN HỆ Khoá (key) Quy ước Tên quan hệ chữ in hoa, cuối bảng, R, S, T, Cho quan hệ R(U), K ⊆ U, K khố quan hệ R nếu: Các kí hiệu chữ thường, cuối bảng, u, v, t (i) với ∀t,s ∈ R, t ≠ s: t.K ≠ s.K Các thuộc tính kí hiệu chữ in hoa, đầu bảng, A, B, C, viết ABC thay cho {A, B, C} (ii) !∃ K’⊂ K mà K’ thoả (i) Tập thuộc tính kí hiệu chữ in hoa, cuối bảng, U, V, X, Y, Z, viết XY thay cho X∪ ∪Y Kí hiệu t.X hạn chế t tập thuộc tính X Nếu K thoả (i), K gọi siêu khoá (super key) Một quan hệ có hay nhiều khố Khố (primary key), Khố dự tuyển (candidate key) Quan hệ SV t =, t ∈ SV Khoá SV?? X = {MSV, HOTEN} t.X = Có thể bổ sung vào SV ??? KHOÁ CỦA QUAN HỆ HOTEN HOTEN NS 20051000 Nguyễn Hải Nam 1/1/1985 20051001 Trần Mai Ly 2/2/1986 20051002 Lê Phương Bắc 3/3/1985 20051003 Lê Phương Bắc 12/12/1985 20051002 Lê Ngọc Lam 12/12/1985 RÀNG BUỘC QUAN HỆ Ví dụ, cho quan hệ SVHT: MASV MASV HK Ràng buộc miền NS MAHP TENHP SOTC DIEM 20051000 Nguyễn Hải Nam 1-1-85 m1 Đại số 20051000 Nguyễn Hải Nam 1-1-85 m2 Giải tích 1 20051000 Nguyễn Hải Nam 1-1-85 m3 Giải tích 2 20051001 Trần Mai Ly 2-2-85 m1 Đại số 20051001 Trần Mai Ly 2-2-85 m2 Giải tích 1 Ràng buộc NULL Ràng buộc khoá Ràng buộc khố Có thể bổ sung vào SVHT t = Xác định khoá quan hệ SVHT Nếu giả thiết, mơn khác phải có tên khác ? Nếu giả thiết có hai môn giống tên ? ? Ràng buộc Ràng buộc tồn vẹn tham chiếu dựa khố ngoại lai (foreign key) Ràng buộc liệu Ví dụ sở liệu quan hệ Quan hệ KQHT Quan hệ SV MASV HOTEN NS 20051000 Nguyễn Hải Nam 1/1/1985 20051001 Trần Mai Ly 2/2/1986 20051002 Lê Phương Bắc 3/3/1985 Quan hệ HP Tình MASV MAHP DIEM 20051000 M1 20051000 M2 20051001 M2 20051001 M1 Ràng buộc miền Tình MAHP TENHP SOTC M1 Anh văn aa M2 Toán rời rạc M3 Cơ sở liệu Ràng buộc NULL MASV HOTEN Nguyễn Hải Nam MAHP TENHP SOTC 20051000 M1 Anh văn 20051001 M2 Toán rời rạc M3 Cơ sở liệu 20051002 Ràng buộc liệu Tình 2/2/1986 Lê Phương Bắc 3/3/1985 Ràng buộc liệu MAHP TENHP SOTC M1 Anh văn M1 Toán rời rạc Ràng buộc khố Khơng chấp nhận NS Cơ sở liệu • Tình Ràng buộc tồn vẹn tham chiếu HOTEN NS SV MASV KQHT 20051000 Nguyễn Hải Nam 1/1/1985 Khoá ngoại lai 20051001 Trần Mai Ly 2/2/1986 MASV MAHP DIEM 20051002 Lê Phương Bắc 3/3/1985 20051000 M1 20051000 M2 20051001 M2 20051001 M1 20051004 M4 Tình MAHP TENHP SOTC M1 Anh văn Ràng buộc khoá M2 Anh văn M3 Cơ sở liệu HP MAHP TENHP SOTC M1 Anh văn M2 Toán rời rạc M3 Cơ sở liệu ??? ĐẠI SỐ QUAN HỆ Thế “Đại số” ? Hệ toán học, bao gồm: ĐẠI SỐ QUAN HỆ Các phép toán quan hệ b Phép hợp Toán tử /Phép tốn (Operators) - kí pháp mơ tả thủ tục kết từ giá trị vào cho trước Phép giao Toán hạng (Operands) - biến/giá trị mà toán tử thao tác cho kết Tích đề Đại số quan hệ Hệ đại số, toán hạng quan hệ Toán tử thiết kế để thực thao tác thường gặp quan hệ CSDL Kết hệ đại số mà sử dụng ngôn ngữ vấn tin quan hệ ĐẠI SỐ QUAN HỆ Các phép tính quan hệ: Hợp, Giao, Hiệu, Tích Đề các, Chọn, Chiếu, Kết nối, Chia Các toán hạng: Các quan hệ Biểu thức quan hệ Toán tử: phép toán quan hệ Toán hạng: quan hệ Kết quả: quan hệ Phép hiệu Phép chọn Phép chiếu Phép kết nối Phép chia ***Phép đổi tên quan hệ/tên thuộc tính ĐẠI SỐ QUAN HỆ Phép hợp (Union) Cho hai quan hệ R(U), S(U) (R S tương thích) Phép hợp hai quan hệ R S quan hệ U: R ∪ S = {t | t ∈ R ∨ t ∈ S } Phép giao (Intersection) Cho hai quan hệ R(U), S(U) (R S tương thích) Phép giao hai quan hệ R S quan hệ U: R ∩ S = {t | t ∈ R ∧ t ∈ S } ĐẠI SỐ QUAN HỆ CÁC PHÉP TOÁN QUAN HỆ Phép trừ (Set difference) Phép chọn (Selection) Cho hai quan hệ R(U), S(U) (R S tương thích) Phép trừ quan hệ R cho quan hệ S quan hệ U: R − S = {t | t ∈ R ∧ t ∉ S } Cho quan hệ R(U), E biểu thức chọn U Phép chọn quan hệ R theo điều kiện E cho quan hệ U: σ E ( R ) = {t t ∈ R ∧ t ( E )} Tích đề (Catersian Product) t(E):bộ t thoả E Cho U = {A1,A2,…An}, V = {B1,B2,…Bm}; Quan hệ R(U), S(V) Phép chiếu (Projection) Tích đề hai quan hệ R S là: Cho quan hệ R(U), X ⊆ U Phép chiếu quan hệ R tập thuộc tính X quan hệ X: R× S = {t = (a1, a2, ,an ,b1,b2, ,bn ) | (a1, a2, ,an ) ∈ R, (b1,b2, ,bn ) ∈ S} CÁC PHÉP TOÁN QUAN HỆ X ( R ) = {t X t ∈ R } CÁC PHÉP TOÁN QUAN HỆ R1 = σ MASV ='20051000' ( SV ) R = ∏ MASV , HOTEN ( SV ) ∏ R3 = Quan hệ R2 MASV ∏ MASV , HOTEN (σ MASV = ' 20051000 ' ( SV HOTEN MASV HOTEN NS 20051000 Nguyễn Hải Nam MASV HOTEN NS 20051001 Trần Mai Ly 20051000 Nguyễn Hải Nam 1/1/1985 20051001 Trần Mai Ly 2/2/1986 20051002 Lê Phương Bắc 3/3/1985 MASV Quan hệ SV 20051002 Lê Phương Bắc 20051000 Nguyễn Hải Nam 1/1/1985 20051001 Trần Mai Ly 2/2/1986 20051002 Lê Phương Bắc 3/3/1985 Quan hệ R3 Quan hệ R1 HOTEN 20051000 Nguyễn Hải Nam NS 1/1/1985 Quan hệ SV MASV HOTEN 20051000 Nguyễn Hải Nam )) CÁC PHÉP TOÁN QUAN HỆ CÁC PHÉP TOÁN QUAN HỆ Phép kết nối (Join) PHÉP KẾT NỐI R4 = SV ⋈ KQHT MASV MAHP DIEM MASV HOTEN NS 20051000 M1 20051000 Nguyễn Hải Nam 1/1/1985 20051000 M2 20051001 Trần Mai Ly 2/2/1986 20051001 M2 20051002 Lê Phương Bắc 3/3/1985 Quan hệ R4 MASV HOTEN NS MAHP DIEM 20051000 Nguyễn Hải Nam 1/1/1985 M1 20051000 Nguyễn Hải Nam 1/1/1985 M2 20051001 Trần Mai Ly 2/2/1986 M2 Phép kết nối θ (Theta−Joins) Cho R(U), S(V) A ∈U, B ∈V, dom(A) dom (B) có kiểu so sánh θ - phép tính so sánh Phép kết nối θ hai quan hệ R S: R ⋈A θ B S = {| u ∈R, v ∈S, u.A θ v.B} Kí hiệu : tạo nhờ xếp v cạnh u Kết nối tự nhiên quan hệ R S, kí hiệu R⋈ S, kết nối hai thuộc tính tên, sau loại bớt thuộc tính tên, giữ lại đại diện R⋈ S quan hệ tập thuộc tính U ∪ V Một thuộc R⋈ S tạo nên u ∈R, v ∈S, gọi “bộ nối được” (joined tuple) CÁC PHÉP TOÁN QUAN HỆ R5 = σ MAHP ='M 2' ( SV MASV HOTEN NS 20051000 Nguyễn Hải Nam 1/1/1985 20051001 Trần Mai Ly 2/2/1986 20051002 Lê Phương Bắc 3/3/1985 CÁC PHÉP TOÁN QUAN HỆ ⋈ R = ∏ MASV , HOTEN , DIEM (σ MAHP = ' M ' ( SV ⋈ KQHT)) KQHT) MASV MAHP DIEM MASV 20051000 M1 20051000 M2 20051001 M2 NS MASV MAHP DIEM 20051000 Nguyễn Hải Nam 1/1/1985 20051000 M1 20051001 Trần Mai Ly 2/2/1986 20051000 M2 20051002 Lê Phương Bắc 3/3/1985 20051001 M2 Quan hệ R5 MASV HOTEN NS MAHP DIEM 20051000 Nguyễn Hải Nam 1/1/1985 M2 20051001 Trần Mai Ly 2/2/1986 M2 MASV HOTEN HOTEN DIEM 20051000 Nguyễn Hải Nam 20051001 Trần Mai Ly Quan hệ R6 CÁC PHÉP TOÁN QUAN HỆ CÁC PHÉP TOÁN QUAN HỆ R7 = ∏ NS (σ MASV ='20051002' ( SV )) Phép chia (Quotient) R8 = SV ⋈NS >NS R7 Phép chia quan hệ R cho S, kí hiệu R ÷ S, quan hệ X: Quan hệ R7 R ÷ S = {t.X | t ∈R: ∀v ∈ S, ∈ R} NS NS 20051000 Nguyễn Hải Nam 1/1/1985 3/3/1985 20051001 Trần Mai Ly 2/2/1986 20051002 Lê Phương Bắc 3/3/1985 MASV HOTEN MASV HOTEN SV.NS 20051001 Trần Mai Ly Cho R(U) S(V), θ ≠ V ⊂ U, X = U - V Quan hệ R8 R7.NS Thực phép tốn: Tính ∏ X (R ) Với t ∈∏ X (R ) , ∀v ∈S thỏa mãn ∈ R t ∈R ÷ S 2/2/1986 3/3/1985 CÁC PHÉP TỐN QUAN HỆ T=R÷S Phép đổi tên quan hệ Đổi tên quan hệ R thành quan hệ S(A1, A2, …, An) R ( HOTEN, Lan Mai Lan Lan Hue NGOAINGU) Pháp Anh Anh Nga Nga S (NGOAINGU) Anh Pháp Nga ρ S ( A1 , A , , An ) ( R ) Quan hệ kết có giống R, tên quan hệ S Có thể đổi tên thuộc tính Nếu đổi tên quan hệ: HOTEN Lan Quan hệ T HOTEN Mai Huệ Quan hệ R[HOTEN] Lan ρS (R) Tìm kiếm đại số quan hệ Tìm kiếm đại số quan hệ Biểu thức quan hệ Ví dụ Toán hạng quan hệ Cho CSDL gồm quan hệ chứa liệu sinh viên khoa Toán tử phép toán quan hệ Kết quan hệ SV (MASV, HOTEN, NS, GT, QUE, LOP) Thứ tự ưu tiên HP (MAHP, TENHP, SOTC) Phép tốn ( ) có thứ tự ưu tiên cao KQHT (MASV, MAHP, DIEM) Đối với phép toán ngôi, thứ tự ưu tiên từ trái sang phải Phép tốn ngơi có thứ tự ưu tiên cao phép tốn hai ngơi TÌM KIẾM BẰNG ĐẠI SỐ QUAN HỆ TÌM KIẾM BẰNG ĐẠI SỐ QUAN HỆ Ví dụ trạng thái CSDL Cho biết mã số họ tên sinh viên lớp ‘Toán 1’ Quan hệ SV MASV HOTEN NS GT QUE LOP 20051000 Nguyễn Hải Nam 1/1/1985 Nam Hà Nội Toán 20051001 Trần Mai Ly 2/2/1986 Nữ Hà Tây Toán 20051002 Lê Phương Bắc 3/3/1985 Nam Nam Hà Toán Quan hệ HP Quan hệ KQHT MASV MAHP TENHP SOTC M1 Cơ sở liệu M2 Toán rời rạc M3 Mạng MT MAHP DIEM 20051000 M1 20051001 M1 20051001 M2 20051001 M3 ∏ MASV , HOTEN (σ LOP ='Toan1' ( SV )) Cho biết mã số họ tên sinh viên lớp ‘Toán 1’, q Hà Nội VÍ DỤ VỀ TÌM KIẾM BẰNG ĐẠI SỐ QUAN HỆ Cho biết mã số họ tên sinh viên lớp ‘Tốn 1’ có điểm học phần ‘M1’ R = ∏ MASV , HOTEN (σ MAHP='M 1'∧ LOP='Toan1' (SV ⋈ KQHT)) Cho biết mã số họ tên sinh viên lớp ‘Toán 1’ khơng có điểm học phần ‘M1’ ∏ MASV , HOTEN (σ LOP ='Toan1' ( SV )) − R viết: R1 = ∏ MASV (σ LOP = 'Toan 1' ( SV )) − ∏ MASV (σ MAHP = ' M 1' ( KQHT )) R = ∏ MASV , HOTEN (σ LOP = 'Toan 1'( SV )) ANSWER = R1 >< R TÌM KIẾM BẰNG ĐẠI SỐ QUAN HỆ Cho biết mã số họ tên sinh viên lớp ‘Tốn 1’ có điểm học phần ‘Cơ sở liệu’ lớn R1 = SV >< KQHT >< HP ANSWER = ∏ MASV , HOTEN (σ LOP='Toan1'∧TENHP='Co so du lieu'∧ DIEM ≥4 ( R1)) Thay đổi thứ tự phép kết nối? Các cách biểu diễn khác? Cho biết mã số họ tên sinh viên lớp ‘Tốn 1’ có điểm học phần ‘M1’ lớn R1 = ∏ MASV , HOTEN (σ LOP ='Toan1' ( SV )) R = ∏ MASV (σ MAHP ='M 1'∧ DIEM ≥ (KQHT)) ANSWER = R1 >< R Các cách biểu diễn khác? TÌM KIẾM BẰNG ĐẠI SỐ QUAN HỆ Cho biết mã số sinh viên có điểm < hai học phần mã số M1 M2 ? Cách biểu diễn sau hay sai? ANSWER = ∏ MASV (σ DIEM < R2 Hoặc: ANSWER = R1 ∩ R2 TỐI ƯU HỐ BIỂU THỨC QUAN HỆ TÌM KIẾM BẰNG ĐẠI SỐ QUAN HỆ Cho biết danh sách mã số họ tên sinh viên lớp Toán Toán có điểm học phần CSDL < R1 = SV >< KQHT >< HP Tối ưu hóa phương pháp thay biểu thức quan hệ biểu thức tương đương đơn giản hơn, thời gian thực nhanh mà kết không đổi ANS = ∏ MASV , HOTEN (σ ( LOP='Toan1'∨ LOP='Toan2')∧ DIEM < KQHT )) ANSWER = R1 >< R2 nhớ Phép toán làm quan hệ nhỏ đi: chọn, trừ, giao, chiếu, chia Phép toán làm quan hệ lớn hơn: kết nối, hợp, tích Đề Cách biểu diễn khác? ……… TỐI ƯU HOÁ BIỂU THỨC QUAN HỆ Chiến lược tối ưu hoá Thực phép toán làm quan hệ nhỏ sớm tốt TỐI ƯU HOÁ BIỂU THỨC QUAN HỆ Biểu thức quan hệ biểu diễn câu hỏi là: ∏ MASV , HOTEN (σ E ( SV >< KQHT >< HP)) Thực phép toán làm quan hệ lớn sau tốt E = ( (LOP = ‘Toán 1’ ∨ LOP = ‘Toán 2’) ∧ DIEM < ∧ TENHP = ‘CSDL’) Ví dụ Cho biết danh sách mã số họ tên sinh viên lớp Tốn Tốn thi khơng đạt (điểm < 4) học phần CSDL = E1 ∧ E2 ∧ E3 Trong đó: E1 = (LOP = ‘Tốn 1’ ∨ LOP = ‘Toán 2’) E2 = (DIEM < 4) E3 = (TENHP = ‘CSDL’) TỐI ƯU HOÁ BIỂU THỨC QUAN HỆ Cây biểu thức quan hệ ∏ MASV , HOTEN (σ E ( SV >< KQHT >< HP)) Các nút toán tử ∏ MASV , HOTEN Các nút quan hệ Cây biểu thức σE ⋈ ⋈ SV HP KQHT Biểu thức quan hệ tối ưu? Phép toán quan hệ mở rộng Phép tốn tổng gộp (Aggregation Operators) SUM AVG Phép nhóm (Grouping Operator) γ A1 , A2 , , Ak ( R) MIN MAX COUNT Phân hoạch R thành nhóm Phép xếp (Sorting Operator) Tất nhóm có giá trị giống danh sách thuộc tính L= { A1, A2, …, Ak }(các thuộc tính gọi “thuộc tính nhóm” − grouping attribute) Phép kết nối ngồi (Outer Join) Đối với nhóm, tạo bởi: Phép nhóm (Grouping Operator) Giá trị thuộc tính nhóm nhóm Hàm tổng gộp, đựơc tính tốn thuộc tính tổng gộp − aggregated attribute (thuộc danh sách L) tất thuộc nhóm Phép nhóm (Grouping Operator) γ MASV, MAX(DIEM)→MaxDiem ( KQHT ) γ MASV, COUNT(MAHP)→SLHP ( KQHT ) γ LOP ,COUNT ( MASV )→ SSSVLOP , MIN ( NS )→ MinNS ( SV )