Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 97 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
97
Dung lượng
0,98 MB
Nội dung
1 Cách đánh giá HỆ QUẢN TRỊ CSDL Thực hành: 30% Bài tập: 20% ThS Nguyễn Thị Thúy Loan Lý thuyết: 50% Nguyễn Thị Thúy Loan Tài liệu tham khảo [1] Bài giảng Giảng viên khoa Cơng nghệ Thơng tin [2] Giáo trình SQL Server 200, Nguyễn Thiên Bằng chủ biên, NXB Lao động – xã hội [3] Lập trình SQL bản, Đồn Thiện Ngân chủ biên, NXB Lao động – xã hội [4] Lập trình ứng dụng chuyên nghiệp SQL – Server 2000, Phạm Hữu Khang chủ biên, NXB Lao động – xã hội [5] http://ocw.mit.edu/OcwWeb/Electrical-Engineeringand-Computer-Science/index.htm/ Trang 2/12/2011 Nội dung Tổng quan SQL Server Các đối tượng sở liệu Lập trình với sở liệu Store Procedure (thủ tục) Trigger & Function Backup anh restore Nguyễn Thị Thúy Loan Trang 2/12/2011 NỘI DUNG Chương I TỔNG QUAN VỀ SQL SERVER SQL Server gì? Lịch sử phát triển Mơ hình Client/ Server Các thành phần SQL Server ThS Nguyễn Thị Thúy Loan Nguyễn Thị Thúy Loan Trang 2/12/2011 SQL Server gì? SQL Server gì? Phần mềm quản trị liệu đáng tin cậy, có tính mở cao Dễ dàng xây dựng CSDL quan hệ lớn Giải tình trạng va chạm user truy xuất liệu thời điểm Bảo đảm RBTV CSDL Bảo vệ an toàn liệu Truy vấn liệu nhanh Nguyễn Thị Thúy Loan Trang 2/12/2011 SQL Server gì? Các dịch vụ SQL Server Hệ quản trị CSDL theo mơ hình Client/ Server dễ dàng phát triển mơ hình phân tán MSSQL Server: Xử lý câu lệnh giao tác gởi từ client server SQL Server Agent: o Jobs: Các công việc lên kế hoạch để thực Được truy cập qua hai đường thi thời điểm định trước hay thực thi theo khoảng thời gian chu trình o Query Analyzer o Alerts: đưa kiện xảy như: lỗi hay o Enterprise Manager CSDL đạt tới giới hạn nhớ trống sẵn khơng cịn đủ Nguyễn Thị Thúy Loan Trang 2/12/2011 Nguyễn Thị Thúy Loan Các dịch vụ SQL Server Microsoft Distributed Transaction Trang 10 2/12/2011 NỘI DUNG SQL Server gì? Coordinator: Điều phối giao tác phân tán, Lịch sử phát triển quản lý giao tác, có trách nhiệm điều Mơ hình Client/ Server phối giao tác CSDL nhiều Các thành phần SQL Server server Nguyễn Thị Thúy Loan Trang 11 2/12/2011 Nguyễn Thị Thúy Loan Trang 12 2/12/2011 Lịch sử phát triển Lịch sử phát triển 1970 IBM đưa ngôn ngữ truy vấn SEQUEL Nhưng sau IBM đưa phiên OS/2 gọi OS/2 mở rộng, HĐH mạnh (Structured English Query Language) 1975 IBM Microsoft hợp tác xây dựng HĐH OS/2 dựa theo hệ điều hành MS DOS Microsoft Ngày 16/12/1987 HĐH OS/2 phiên 1.0 thức phát hành OS/2 phiên 1.0 tích hợp thêm phần CSDL SQL IBM (ngày HQTCSDL DB2) Microsoft hợp tác Sybase làm sản phẩm thuộc loại HQTCSDL Ashton-Tate vào năm 1988 phát triển môi trường OS/2 Nguyễn Thị Thúy Loan Trang 13 2/12/2011 Nguyễn Thị Thúy Loan Lịch sử phát triển Trang 14 2/12/2011 NỘI DUNG Sau Sybase phát triển sản phẩm môi trường UNIX đổi tên riêng DataServer mà ngày có tên khác Sybase Adaptive Server Microsoft định không phát triển HĐH OS/2 mà thay vào cho đời HĐH mạng máy SQL Server gì? Lịch sử phát triển Mơ hình Client/ Server Các thành phần SQL Server tính có tên NT Server SQL Server hoạt động độc lập môi trường Windows NT Server mà Nguyễn Thị Thúy Loan Trang 15 2/12/2011 Nguyễn Thị Thúy Loan Trang 16 2/12/2011 Mơ hình Client/Server Mơ hình Client/Server Vì phát triển mơ hình Client/Server o Giảm chi phí o Tốc độ nhanh o Tương thích cao Mơ hình Client/Sever: kiến trúc gồm thành phần máy Client máy Server, thành phần liên lạc với thông qua hệ thống mạng Nguyễn Thị Thúy Loan Trang 17 2/12/2011 Sử dụng giao tiếp lập trình ứng dụng để truy xuất liệu (APIApplication Programming Interfece) Thư viện mạng client sử dụng phương thức liên lạc bên mạng để giao tiếp với thư viện mạng server Thư viện mạng server nhận gói liệu trao chúng cho dịch vụ mở liệu Nguyễn Thị Thúy Loan Trang 18 2/12/2011 Mô hình Client/Server Mơ hình Client/Server Nhánh máy trạm (client) Đọc hiển thị liệu có bên CSDL, tính tốn liệu hiển thị hình ứng dụng, in liệu kết xuất Các ngôn ngữ sử dụng bên máy khách thường là: C++, C#, VB, Delphi… Các ứng dụng xây dựng bên nhánh máy trạm nên tránh việc đọc tòan liệu bảng mà lấy thông tin cần thiết xử lý Nhánh máy chủ (server) Các xử lý đảm bảo việc truy cập người dùng mạng bảo mật Các xử lý liên quan đến việc thực cập nhật liệu đồng thời lúc người dùng hành mạng Các xử lý lưu liệu (backup data) tự động để đảm bảo liệu không bị trường hợp có cố xấu tình cờ xảy Nguyễn Thị Thúy Loan Trang 19 2/12/2011 Nguyễn Thị Thúy Loan Trang 20 2/12/2011 NỘI DUNG Các thành phần SQL Server SQL Server gì? Client network Utility: Lịch sử phát triển công cụ dùng để thiết lập, Mơ hình Client/ Server tham khảo cấu hình Các thành phần SQL Server mạng: giao thức truyền cho client, đường dẫn tham khảo đến thư viện Nguyễn Thị Thúy Loan Trang 21 2/12/2011 Nguyễn Thị Thúy Loan Trang 22 2/12/2011 Các thành phần SQL Server Các thành phần SQL Server Enterprise Manager (EM): hình dùng Import and Export Data: công cụ hỗ trợ cho để quản trị SQL Server EM cung cấp cho người phép dễ dàng thực việc chuyển liệu từ quản trị chức để quản lý SQL giao diện đồ hoạ vào SQL Server SQL Server Query Analyzer: công cụ cung cấp o Quản trị database o Tạo database thành phần bên database SQL Server, trình soạn thảo thực thi câu lệnh SQL hay Stored Procedure o Đăng ký làm việc với SQL Server khác Nguyễn Thị Thúy Loan Trang 23 2/12/2011 Nguyễn Thị Thúy Loan Trang 24 2/12/2011 Các thành phần SQL Server Server Network Utility: công cụ dùng để thiết Chương II lập cấu hình cho server hiển thị CÁC ĐỐI TƯỢNG TRONG thông tin đường dẫn tham chiếu thư viện làm CƠ SỞ DỮ LIỆU việc Server Manager: dùng để khởi động, tạm ThS Nguyễn Thị Thúy Loan dừng, kết thúc phục vụ SQL Server Nguyễn Thị Thúy Loan Trang 25 2/12/2011 NỘI DUNG Cơ sở liệu SQL Server Bảng (Table) Cơ sở liệu SQL Server Bảng ảo (View) Mô hình quan hệ liệu Kiểu liệu người dùng định nghĩa Quy tắc kiểm tra miền giá trị liệu (rule) Giá trị mặc định Nguyễn Thị Thúy Loan Trang 27 2/12/2011 Nguyễn Thị Thúy Loan Trang 28 2/12/2011 Cơ sở liệu SQL Server Cơ sở liệu SQL Server Khi cài SQL Server xong, hệ thống tự động tạo vài CSDL mặc định: Master Model Tempdb Pubs Northwind Msdb Xem CSDL Query Analyzer:SP_helpdb Nguyễn Thị Thúy Loan Trang 29 2/12/2011 Các tập tin vật lý lưu trữ DL Nguyễn Thị Thúy Loan Trang 30 2/12/2011 Các tập tin vật lý lưu trữ DL Hai tập tin vật lý để lưu trữ liệu: o Lưu trữ liệu (data file) o Lưu trữ giao tác mà người dùng thực (transaction log file) Các tập tin CSDL SQL Server chia thành loại tập tin Nguyễn Thị Thúy Loan Trang 31 2/12/2011 Nguyễn Thị Thúy Loan Trang 32 2/12/2011 Các tập tin vật lý lưu trữ DL Tập tin liệu (Primary Data File) Phần mở rộng tập tin *.mdf Tạo sở liệu Các thuộc tính CSDL SQL Server Tên CSDL (Database name): dài tối đa 128 ký tự, SQL Server Tập tin thứ yếu (Secondary Data Files) (không Vị trí tập tin (File location): Thơng thường bắt buộc phải có tạo CSDL) Phần mở tập tin lưu C:\Program Files\Microsoft SQL Server\MSSQL\ Data rộng tập tin *.ndf Tập tin lưu trữ (Log Files) Phần mở rộng *.ldf Nguyễn Thị Thúy Loan Tên tập tin (File name): tên luận lý loại tập tin liệu tương ứng mà hệ thống SQL Server dùng để quản lý bên Trang 33 2/12/2011 Nguyễn Thị Thúy Loan Trang 34 2/12/2011 Tạo sở liệu Tạo sở liệu Kích thước ban đầu (Initial size): kích Ví dụ: tạo CSDL có tên QLBH với kích thước thước khởi tạo tập tin liệu CSDL ban đầu 50 MB, tự động tăng kích thước lên 10% liệu đầy, kích thước tăng trưởng tạo lập Tăng kích thước tập tin liệu (File growth) vết với kích thước ban đầu lúc khởi tạo 10MB, tự động tăng kích thước tập tin lên Kích thước tối đa tập tin liệu (Maximun MB liệu bị đầy, kích thước tăng trưởng tập tin không giới hạn file size) Nguyễn Thị Thúy Loan tập tin tối đa không 200MB Và tập tin lưu Trang 35 2/12/2011 Nguyễn Thị Thúy Loan Trang 36 2/12/2011 10 Tạo sở liệu Tạo sở liệu Cách 1: tạo Query Analyzer Cách 2: tạo Enterprise Manager CREATE DATABASE QLBH ON PRIMARY (NAME = QLBH, FILENAME= ‘C:\Program Files\Microsoft SQL Server\MSSQL.3\MSSQL\Data\ QLBH.mdf’, SIZE=50MB, MAXSIZE = 200MB, FILEGROWTH = 10%) LOG ON(NAME = QLBH_Log, FILENAME= ‘C:\Program Files\Microsoft SQL Server\MSSQL.3\MSSQL\Data\ QLBH_Log.ldf', SIZE=10MB, MAXSIZE = UNLIMITED, FILEGROWTH = 5MB) Nguyễn Thị Thúy Loan Trang 37 2/12/2011 Nguyễn Thị Thúy Loan Tạo sở liệu Trang 38 2/12/2011 NỘI DUNG Tên CSDL Cơ sở liệu SQL Server Bảng (Table) Bảng ảo (View) Mơ hình quan hệ liệu Kiểu liệu người dùng định nghĩa Quy tắc kiểm tra miền giá trị liệu (rule) Click Nguyễn Thị Thúy Loan Trang 39 Giá trị mặc định 2/12/2011 Nguyễn Thị Thúy Loan Trang 40 2/12/2011 83 Các thao tác trigger phổ biến Thêm mẫu tin Kiểm tra ràng buộc liệu o Khoá ngoại o Miền giá trị o Liên quan hệ o Liên thuộc tính bảng o Liên thuộc tính nhiều bảng khác Nguyễn Thị Thúy Loan Trang 329 2/12/2011 Thêm mẩu tin Trang 331 Xây dựng trigger bảng PX để kiểm tra ràng buộc toàn vẹn liệu người dùng thêm thông tin phiếu xuất hàng cho bảng hoá đơn đặt hàng trước Các ràng buộc tồn vẹn liệu bao gồm o Khoá ngoại: cần kiểm tra số đặt hàng phải tồn bảng đơn đặt hàng o Miền giá trị: cần kiểm tra ngày giao hàng phải sau ngày đặt hàng Nguyễn Thị Thúy Loan Trang 330 2/12/2011 Thêm mẩu tin create trigger tg_px_insert on px for insert As declare @Ngdat datetime, @ErrMsg varchar(200) Kiểm tra số hố đơn có bảng DDH không? IF NOT EXISTS(Select * From Inserted I, ddh 16:Tình trạng lỗi Where I.sodh= ddh.madh) 1: Mức độ lỗi Begin Rollback Tran Raiserror('Phieu dat hang khg ton tai', 16,1) Return End Nguyễn Thị Thúy Loan Thêm mẩu tin 2/12/2011 Tính ngày đặt hàng Select @Ngdat = Ngdat From ddh , Inserted I Where ddh.madh = I.sodh Kiểm tra ngày giao hàng phải sau ngày đặt hàng IF @Ngdat > (Select ngxuat From Inserted) Begin Set @ErrMsg = N'ngày giao hàng phải sau ngày:' + Convert(char(10), @ngdat, 103 ) Raiserror(@ErrMsg,16,1) Rollback tran End Nguyễn Thị Thúy Loan Trang 332 2/12/2011 84 Hủy bỏ mẩu tin Hủy bỏ mẩu tin Ví dụ: xoá số hoá đơn đặt hàng bảng CTDH cần phải kiểm tra RBTV liệu sau: o Kiểm tra xem đơn đặt hàng bị xoá xuất hàng chưa? Nếu xuất thơng báo khơng thể xố đơn đặt hàng o Ngược lại xố liệu liên quan bên bảng chi tiết đơn đặt hàng (CTDH) Nguyễn Thị Thúy Loan Trang 333 2/12/2011 Hủy bỏ mẩu tin Else Begin Xoá tự động chi tiết đơn đặt hàng liên quan Delete CTDH Where Madh In(Select Madh From DELETED) Set @Delete_Err = @@ERROR IF @Delete_Err Begin Set @ErrMsg = 'Lỗi vi phạm xóa bảng chi tiết đặt hàng' RaisError(@ErrMsg, 16, 1) Rollback Tran End End create trigger TG_DDH_delete on ddh for delete As declare @SoPX char(10), @ErrMsg char(200), @Delete_Err int Kiểm tra xem đơn hàng xuất chưa IF EXISTS (Select soPX From px, deleted d where px.sodh = d.madh) Begin Set @ErrMsg = 'Đơn đặt hàng nhập theo '+ 'số xuất hàng '+ @SoPX + '.Không thể huỷ được' RaisError(@ErrMsg,16,1) Rollback tran End Nguyễn Thị Thúy Loan Trang 334 2/12/2011 Sửa đổi mẩu tin Kiểm tra ràng buộc liệu o Khoá ngoại o Miền giá trị o Liên quan hệ o Liên thuộc tính bảng o Liên thuộc tính nhiều bảng khác Nguyễn Thị Thúy Loan Trang 336 2/12/2011 85 Update Update Hàm Update Ý nghĩa o Kiểm tra liệu cột bên bảng có bị thay đổi trigger sửa đổi liệu Cú pháp UPDATE (tên_cột) (biểu thức luận lý) o Tên_cột: tên cột mà muốn kiểm tra xem liệu có bị sửa đổi trigger không o Biểu thức luận lý: trả True giá trị liệu cột bị sửa đổi, ngược lại trả False giá trị liệu cột không bị sửa đổi Nguyễn Thị Thúy Loan Trang 337 2/12/2011 Nguyễn Thị Thúy Loan Trang 338 2/12/2011 Update Update Ví dụ: sửa đổi thơng tin số đặt hàng bên bảng DDH cần phải kiểm tra ràng buộc toàn vẹn liệu sau: Không cho phép sửa đổi liệu cột MaDH liệu ảnh hưởng đến nhiều bảng Sửa đổi giá trị cột ngày đặt hàng phải đảm bảo ln ln trước ngày xuất hàng số đặt hàng (nếu đơn đặt hàng có giao hàng) create trigger tg_ddh_update on ddh for update as declare @NgayXH datetime, @ErrMsg varchar(200) Khi sửa đổi cột MaDH IF Update(MaDH) Begin Rollback Tran Set @ErrMsg = 'Không thể thay đổi số đặt hàng’ RaisError(@ErrMsg, 16, 1) Return End Nguyễn Thị Thúy Loan Trang 339 2/12/2011 Nguyễn Thị Thúy Loan Trang 340 2/12/2011 86 Update Update Khi sửa đổi ngày đặt hàng IF Update(Ngdat) Begin Kiểm tra đơn đặt hàng xuất chưa IF EXISTS (Select SoPX From PX, deleted d where px.sodh=d.madh) Begin Tính ngày nhập hàng Select @NgayXH = Min(NgXuat) FromPX, DELETED D Where PX.sodh = D.MaDH kiểm tra giá trị ngày đặt hàng sau sửa đổi phải trước ngày giao hàng IF @NgayXH < (Select Ngdat From Inserted) Begin Rollback tran Set @ErrMsg = 'Ngày đặt hàng trước ngày:'+ Convert(char(10), @NgayXH, 103) RaisError(@ErrMsg, 16, 1) End end End Nguyễn Thị Thúy Loan Trang 341 2/12/2011 Nguyễn Thị Thúy Loan Trang 342 2/12/2011 Trigger cập nhật giá trị tự động Trigger cập nhật giá trị tự động Ví dụ: Dữ liệu bảng TONKHO tính tự động từ liệu bảng liên quan đến việc nhập hàng việc xuất hàng, cụ thể bảng: PNHAP, CTPNHAP, PXUAT, CTPXUAT Khi thêm thông tin chi tiết phiếu nhập hàng vào bảng CTNHAP, cần kiểm tra RBTV liệu o Kiểm tra số phiếu nhập phải có bảng PNHAP o Kiểm tra mã vật tư phải có danh sách chi tiết, danh sách mã vật tư phải có chi tiết đơn đặt hàng trước o Kiểm tra tổng số lượng nhập hàng cịn số lượng đặt hàng vật vật tư Nếu tất RBTV liệu hợp lệ tăng giá trị cột tổng số lượng nhập bảng TONKHO cột tổng trị giá bảng PNHAP Nguyễn Thị Thúy Loan Trang 343 2/12/2011 Nguyễn Thị Thúy Loan Trang 344 2/12/2011 87 Ví dụ Ví dụ Tạo trigger khơng cho phép xố vật tư mà có chi tiết hố đơn vật tư Nguyễn Thị Thúy Loan Trang 345 2/12/2011 create trigger T_Xoa_VT on vattu for delete as declare @mavt nvarchar(5) select @mavt = mavt from deleted if(select count(*) from CTHD where mavt=@mavt)>=1 begin print 'Khong the xoa vat tu nay' rollback transaction return end select * from vattu Ví dụ Ví dụ Tạo trigger khơng cho phép xoá lúc nhiều khách hàng Nguyễn Thị Thúy Loan Trang 347 2/12/2011 create trigger T_Xoa_KH on KH for delete as if((select count(*) from deleted)>1) begin print 'xoa mot nguoi cho mot lan xoa' rollback tran end select * from KH Nguyễn Thị Thúy Loan Trang 348 2/12/2011 88 Ví dụ Ví dụ Tạo trigger kiểm tra lớp phải có tối thiểu sinh viên Nguyễn Thị Thúy Loan Trang 349 2/12/2011 Hàm người dùng ĐN (user defined functions) Khái quát: UDFs chương trình đảm trách xử lý với đặc tính nhận tham số đầu vào trả giá trị kết xử lý tính tốn dựa tham số đầu vào nhận UDFs phân thành nhóm: o Hàm xác định (deterministic) o Hàm khơng xác định (non-deterministic) Nguyễn Thị Thúy Loan Trang 351 2/12/2011 create trigger lopsv on lop for delete, insert as if (select count(masv) from Inserted i, sv where i.malop = sv.malop) =0 begin rollback tran print 'toi thieu sv' end Nguyễn Thị Thúy Loan Trang 350 2/12/2011 Hàm người dùng ĐN Hàm xác định trả giá trị giá trị tham số truyền vào Hàm khơng xác định cho kết khác biệt thời điểm chúng gọi UDFs kết hợp đối tượng View Store Procedure Nguyễn Thị Thúy Loan Trang 352 2/12/2011 89 Hàm người dùng ĐN Hàm người dùng ĐN Khắc phục số hạn chế View Store Procedure o SP phần câu lệnh SELECT UDFs có o View khơng hỗ trợ đệ quy UDFs làm điều Nguyễn Thị Thúy Loan Trang 353 2/12/2011 Tạo UDF create function [Tên_Function](tham số) RETURNS kiểu_dữ_liệu_trả_về AS BEGIN Các lệnh Return END Nguyễn Thị Thúy Loan Trang 354 2/12/2011 Hàm người dùng ĐN Hàm người dùng ĐN Returns: thiết lập kiểu liệu trả UDFs Có cách thiết lập Trả giá trị kiểu vô hướng: chuỗi, giá trị logic kiểu số Trả bảng: trả hai loại bảng Inline table: khắc phục nhược điểm khơng có tham số VIEW Có nghĩa UDFs loại inline table giống VIEW có tham số Multistatement table: UDFs loại giống với Store Procedure Loại trả biến table Thực câu SELECT phức tạp, cho phép thực câu lệnh logic khác UPDATE, INSERT INTO… Nguyễn Thị Thúy Loan Trang 355 2/12/2011 Nguyễn Thị Thúy Loan Trang 356 2/12/2011 90 Ví dụ Ví dụ Tính tổng hai số a, b create function F_Tong(@a int, @b int) RETURNS int as BEGIN declare @kq int set @kq=@a+@b return @kq END Kiểm tra số chẵn hay lẻ create function Chan_Le(@n int) returns int as begin if (@n %2=0) return return end select dbo.Chan_le(6) Select dbo.F_tong(5,7) Nguyễn Thị Thúy Loan Trang 357 2/12/2011 Nguyễn Thị Thúy Loan Ví dụ tăng lên 5, ngược lại tổng a cộng b Trang 359 2/12/2011 Ví dụ Tính tổng hai số a, b Nếu a lớn tổng Nguyễn Thị Thúy Loan Trang 358 2/12/2011 create function Test_function(@a int, @b int) RETURNS int as BEGIN declare @kq int if @a>2 set @kq=@a+@b + else set @kq=@a+@b return @kq END Select dbo.Test_function(5,7) Nguyễn Thị Thúy Loan Trang 360 2/12/2011 91 Ví dụ Ví dụ Viết hàm kiểm tra n có phải nguyên tố hay không? Nguyễn Thị Thúy Loan Trang 361 2/12/2011 create function Ngto(@n int) returns int as begin if @n