Chương 0 TỔNG QUAN VỀ CSDL
Chương TỔNG QUAN VỀ CSDL Phạm Thị Thu Thúy Khoa CNTT, Đại học Nha Trang thuthuypht@gmail.com Nội dung chương • Mơ hình d liệu quan hệ • Thi t k CSDL quan hệ • Hệ quản trị c sở d liệu • Khái niệm • Lịch s phát tri n • Chức Mơ hình liệu quan hệ • C sở d liệu quan hệ Relational Database Entitites Student Id Attribute Takes Name Suburb 1108 Robert Kew SID SNO 3936 Glen Bundoora 1108 21 Bundoora 1108 23 Balwyn 8507 23 8507 29 8507 8452 Norman Mary Subject No Name Dept 21 Systems CSCE 23 Database CSCE Mô hình liệu quan hệ • Các khái niệm: Entities Tables Attributes Fields Mơ hình liệu quan hệ - Các khái niệm • Thu c tính: • đ c tr ng c a đ i t ng • đ c phân biệt qua tên g i • thu c m t kdl định (s , chu i, ngày tháng, lơgic, hình ảnh…) • m i thu c tính ch n lấy giá trị m t t p c a ki u d liệu t p h p g i mi n giá trị c a thu c tính Mơ hình liệu quan hệ - Các khái niệm (tt) •L c đ quan hệ • t p tất thu c tính cần quản lý c a m t đ i t ng v i nh ng m i liên hệ gi a chúng • Ví d : ta có LĐQH sinh viên (đ t tên SV) v i thu c tính nh sau: SV(maSoSV, mucHbg) hoTenSV, ngaySinh, diemTB, Mơ hình liệu quan hệ - Các khái niệm (tt) • Nhi u l c đ quan hệ n m m t hệ th ng quản lý đ c g i m t l c đ CSDL • Ví d l c đ CSDL đ quản lý m c a sinh viên có th g m nh ng l c đ quan hệ sau: SV(maSV, hotenSV, ngaySinh, maLop, tinh, hocBong) Lop(maLop, tenLop, siSo, maKhoa) Khoa(maKhoa, tenKhoa, soCB) MonHoc(maMH, tenMH, soTiet) KetQua(maSV, maMH, diemThi) Mơ hình liệu quan hệ - Các khái niệm (tt) • Định nghƿa quan hệ (relation): • S th c a l c đ quan hệ m t th i m đ c g i quan hệ Mơ hình liệu quan hệ - Các khái niệm (tt) • Primary keys (các khóa chính) • y u t ch y u cho CSDL QH • làm cho dịng Mơ hình liệu quan hệ - Các khái niệm (tt) • Foreign keys (các khóa ngoại) • m t ho c nhi u c t tham chi u đ n khóa c a bảng khác CÁC B̉NG TRUNG GIAN INSERTED VÀ DELETED Inserted Chứa c thêm m i hành đ ng INSERT/UPDATE Có hai loại trigger Cấu trúc bảng giống v i bảng thực đ c cập nhật d li u d li u đ Deleted Chứa d li u bị xố hành đ ng DELETE/UPDATE Có hai loại trigger Cấu trúc bảng giống v i bảng thực đ c cập nhật d li u Hành đ ng update SQL Server Xoá dòng d li u cũ Thêm vào dòng d li u m i v i thông tin cập nhật 49 LÀM VI C V I TRIGGER 50 ṬO M I TRIGGER Trigger có th đ c tạo câu l nh SQL Server Management Studio Trong hai tr ờng h p, câu l nh CREATE TRIGGER đ c s d ng đ tạo trigger TRIGGER Tên_Trigger ON Tên_bảng { [ INSTEAD OF ] | [ FOR | AFTER ] } { [ INSERT [, UPDATE [,DELETE ] ] ] } AS CREATE [DECLARE Biến_cục_bộ] Các_lệnh 51 MÔ T̉ Tên bảng INSTEAD OF: định trigger loại instead of trigger Tên bảng mà trigger tạo m i liên kết M i bảng có quy n tạo m t instead of trigger cho m t hành đ ng cập nhật FOR AFTER Nếu tạo trigger thông th ờng INSERT, UPDATE, DELETE Hành đ ng cập nhật d li u tác đ ng vào bảng đ kích hoạt trigger 52 XĨA TRIGGER Cú pháp DROP TRIGGERTên_trigger 53 S A N I DUNG TRIGGER S a n i dung ALTER TRIGGER Tên_Trigger ON Tên_bảng FOR INSERT [, UPDATE [,DELETE ]] AS [DECLAREBiến_cục_bộ] Các_lệnh 54 TRIGGER L NG NHAU Trigger có th lồng Hành đ ng cập nhật Trigger Cập nhật bảng khác Trigger bảng t ơng ứng Instead Of trigger không phát sinh lại bảng mà liên kết Cập nhật Instead of Trigger Gọi câu l nh cập nhật xuống bảng Instead of trigger Số cấp lồng tối đa 32 cấp S d ng biến @@NestedLevel Cấu hình cho phép trigger lồng EXEC sp_configure 'nested triggers', [0 | 1] 55 TRIGGER - KI M TRA RÀNG BU C D LI U 56 KHI THÊM M I M U TIN Th ờng dùng đ ki m tra Khóa ngoại, Mi n giá trị, Liên thu c tính m t bảng Liên thu c tính c a nhi u bảng khác loại đầu tiên, dùng trigger muốn cung cấp báo l i c th tiếng Vi t Nếu khai báo ràng bu c constraint Các cấu trúc l nh th ờng dùng ki m tra If Else If Exists Raiserror Rollback Tran 57 KHI H Y B M U TIN T ơng tự, ki m tra ràng bu c nh INSERT Nên ki m tra ràng bu c khố ngoại trigger Thơng th ờng ràng bu c dẫn đến vi c phải cập nhật m t số d li u bảng khác Chú ý: SQL Server 2000 có thu c tính CASCADE DELETE 58 KHI S A Đ I M U TIN T ơng tự, ki m tra ràng bu c nh INSERT trigger Ràng bu c khoá ngoại có th s d ng CASCADE UPDATE đ thực hi n tự đ ng Xác định c t đ c cập nhật If Update(Tên_cột) Xử lý 59 TRIGGER C P NH T GIÁ TṚ T Đ NG Sau ki m tra ràng bu c trigger có th Rollback d li u khơng h p l Thực hi n tiếp hành đ ng cập nhật bảng khác đ đảm bảo toàn vẹn d li u: Cập nhật giá trị tự đ ng Vd: Insert CTGiaoHang Cập nhật bảng TONKHO Các hành đ ng cập nhật th ờng thực hi n H y bỏ d li u quan h khố ngoại Tính lại c t 'tính tốn' bảng liên quan Vị trí thực hi n Trong trigger ki m tra ràng bu c định nghĩa Sau ki m tra d li u h p l (thoả mãn ràng bu c) 60 INSTEAD OF TRIGGER Bảng ảo thơng th ờng có th đ c cập nhật nh ng có nhi u gi i hạn Group By, Order By, Distinct Ràng bu c khoá ngoại Thiếu c t NOT NULL bảng Trigger Instead of Xảy tr c SQL Server ki m tra ràng bu c Thay đổi hành đ ng cập nhật vào bảng ảo hành đ ng thích h p bảng gốc 61 VÍ D Tạo bảng ảo sau Select D.SoDH, NgayDH, MaNhaCC, V.MaVTu, TenVTu, SoLuong, DonGia From CTDONDH CT, DONDH D, VATTU V Where CT.SoDH = D.SoDH And CT.MaVTu = V.MaVTu CREATE TRIGGER tg_vw_CTDONDH_BI INSTEAD OF INSERT ON vw_CTDONDH AS Nếu ch a có đơn đặt hàng, thêm đơn đặt hàng vào DONDH Insert Into DONDH Select SoDH, NgayDH, MaNhaCC From Inserted Where SoDH Not In (Select SoDH From DonDH) Nếu ch a có vật t , thêm vật t vào bảng VATTU Insert Into VATTU(MaVTu, TenVTu) Select MaVTu, TenVTu From Inserted Where MaVTu Not In (Select MaVTu From VATTU) Thêm chi tiết đặt hàng vào CTDONDH Insert Into CTDONDH Select SoDH, MaVTu, SoLuong, DonGia From Inserted 62 END GOOD LUCK! Phạm Thị Thu Thúy Khoa CNTT, Đại học Nha Trang thuthuypht@gmail.com ... 500 Anh v? ?n 31/12/ 200 9 1 10 Lê V? ?n Minh P Hệ th ng thông tin 500 C++ 31 /01 / 201 0 1 90 Trần V? ?n Ban P Tài 5 20 1 50 H Minh Nh t P Ti p thị 4 50 Anh v? ?n 31/12/ 200 9 1 50 H Minh Nh t P Ti p thị 4 50 Java... Đáp: {maNV, tenKH} maNV tenNV donVi luong tenKH Anh v? ?n ngayKTKH 100 Nguyễn V? ?n An P Ti p thị 4 80 100 Nguyễn V? ?n An P Ti p thị 4 80 1 40 Trần Thị Mỹ P K toán 5 50 Lu t thu 15 /04 / 201 0 1 10 Lê V? ?n Minh... P Ti p thị 4 50 Java 10/ 01/ 201 0 NC thị tr 31/12/ 200 9 ng 10/ 03/ 201 0 Sự bất thường bảng này? Thêm v? ?o – thêm v? ?o nhân viên mà không tham gia lớp Xoá – xoá bỏ nhân viên 1 40, ta thông tin lớp Luật