THỰC HÀNH CƠ SỞ DỮ LIỆU NÂNG CAO Lab 1: Stored-Procedure & Trigger & Function

12 829 0
THỰC HÀNH CƠ SỞ DỮ LIỆU NÂNG CAO  Lab 1: Stored-Procedure & Trigger & Function

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

THỰC HÀNH CƠ SỞ DỮ LIỆU NÂNG CAO Lab 1: Stored-Procedure & Trigger & Function I Mục đích: - Xây dựng Stored Procedure, Function Trigger để thực chức hệ thống - Sử dụng lệnh Transact-SQL, Cursor II Yêu cầu: - Sinh viên thực hành nghiêm túc - Làm nộp theo yêu cầu giáo viên III Nội dung thực hiện: A Stored-Procedure Định nghĩa: Một Stored procedure định nghĩa gồm thành phần sau: - Tên stored procedure - Các tham số - Thân stored procedure: bao gồm lệnh Transact-SQL dùng để thực thi procedure Một stored procedure tạo lệnh Create Procedure, thay đổi cách dùng lệnh Alter Procedure, xóa cách dùng lệnh Drop Procedure lập lệnh Transact – SQL Lệnh tạo Procedure: Lưu ý: o Trong SQL Server, ghi tắt số từ khóa mà tên có chiều dài ký tự Ví dụ: thay Create Procedure Create Proc; Có thể tạo, chỉnh sửa Store giao diện o Tên hàm, tên biến SQL Server không phân biệt hoa thường Khai báo biến gán giá trị cho biến: Biên dịch gọi thực thi stored-procedure: Thái Duy Quý – ITFac DLU – thaiduyquy@gmail.com THỰC HÀNH CƠ SỞ DỮ LIỆU NÂNG CAO Ví dụ: - Stored-procedure tính tổng số nguyên: - Stored procedure liệt kê thông tin đầu sách, thông tin tựa sách số lượng sách chưa mượn đầu sách cụ thể (ISBN) B Trigger Giới thiệu: Trigger trường hợp đặc biệt store procedure, có hiệu lực thay đổi liệu bảng liệu cụ thể, xử lý làm thay đổi liệu lệnh: insert, update, delete Trigger chứa lệnh truy vấn từ bảng khác bao gồm lệnh SQL phức tạp.Chúng ta xây dựng ví dụ đơn giản với bảng ví dụ liên quan đến lưu trữ, lấy liệu, cập nhật xóa mẫu tin Lệnh tạo Trigger: Ví dụ: Thái Duy Quý – ITFac DLU – thaiduyquy@gmail.com THỰC HÀNH CƠ SỞ DỮ LIỆU NÂNG CAO C Function Giới thiệu: Trong SQL Server ta viết hàm lấy giá trị trả Các dạng hàm viết sau : - Hàm trả giá trị vô hướng (scalar value) : varchar, int, … - Hàm trả giá trị bảng tạm (inline table-valued) : table Cú pháp: Ví dụ: - Viết hàm tính tuổi người có năm sinh @ns: - Viết hàm tạo bảng tạm từ câu truy vấn : Kiểm tra thử hàm: IV Luyện tập Mô tả CSDL Quản lý thư viện Một thư viện cần quản lý việc đăng ký, mượn trả sách bạn đọc thư viện Sau phần mô tả theo nghiệp vụ hàng ngày thư viện: Thủ thư gọi nội dung sách tựa sách Ví dụ: nội dung “Toán Cao Cấp A1”, truyện “Harry Porter tập 8”, … Mỗi tựa sách dịch thành nhiều ngôn ngữ khác dịch gọi đầu sách tựa sách Mỗi đầu sách có nhiều sao, gọi sách Thái Duy Quý – ITFac DLU – thaiduyquy@gmail.com THỰC HÀNH CƠ SỞ DỮ LIỆU NÂNG CAO Mỗi tựa sách có mã tựa sách để phân biệt với tựa sách khác Mã số đánh số tự động, 1, 2, 3, , … Mỗi tựa sách tác giả (tacgia) có tóm tắt nội dung (tomtat) sách (có thể câu hay vài trang) Khi bạn đọc muốn biết nội dung sách nào, thủ thư xem phần tóm tắt tựa sách trả lời bạn đọc Mỗi đầu sách có trạng thái (trangthai) cho biết đầu sách cho mượn hay không Để trở thành độc giả (DocGia) thư viện, bạn đọc phải đăng ký cung cấp thông tin cá nhân địa điện thoại Thủ thư cấp cho bạn đọc thẻ điện tử, có mã số thẻ mã số bạn đọc để phân biệt bạn đọc khác (Mã số đánh số tự động, 1, 2, 3, ,…) Thẻ có giá trị năm kể từ ngày đăng ký Một tháng trước ngày hết hạn thẻ, thủ thư thông báo cho bạn đọc biết để đến gia hạn thêm Một bạn đọc (gọi nguoilon) bảo lãnh cho người khác nhỏ 18 tuổi (gọi treem) để trở thành độc giả thư viện Do đó, thẻ trẻ em có giá trị thời hạn hiệu lực độc giả bảo lãnh cho trẻ em Thủ thư cần biết thơng tin trẻ em như: tên, ngày sinh Khi trẻ em đủ 18 tuối, bạn đọc (treem) hệ thống cập nhật thành độc giả (nguoilon) Một số giải thích 2.1 Đăng ký: Nếu bạn đọc muốn mượn sách, bạn đọc khác mượn, người đăng ký chờ Khi sách trả về, thủ thư phải thông báo đến bạn đọc đăng ký trước danh sách bạn đọc chờ mượn sách Thủ thư, thời điểm bất kỳ, xác định có bảo (cuonsach) ứng với đầu sách (dausach) mượn hay đăng ký 2.2 Mượn sách: Một sách mượn tối đa 14 ngày Nếu hạn, tuần sau kể từ ngày đến hạn trả sách (ngay_hethan) mà sách chưa trả, thủ thư gởi thơng báo nhắc nhở bạn đọc trả sách Khi mượn sách, bạn đọc đem sách đến quầy để gặp trực tiếp thủ thư Thủ thư sử dụng máy để đọc thẻ từ chương trình hiển thị thơng tin bạn đọc mang thẻ như: tên, địa chỉ, điện thoại, ngày hết hạn thẻ Nếu thẻ gần hết hạn hay hết hạn chương trình cảnh báo thẻ Bài tập Hệ quản trị CSDL Ngồi ra, chương trình cịn hiển thị thông tin việc mượn trả sách bạn đọc bao gồm: tựa sách (tuasach), ngày đến hạn phải trả sách (ngay_hethan) theo thứ tự sách mượn lâu trước Những sách hạn mượn hay gần đến hạn đánh dấu để làm bật thông tin cho thủ thư biết Nếu tất thông tin tài khoản bạn đọc hợp lệ, thủ thư cho mượn sách Thủ thư sử dụng máy quẹt gáy sách để đọc ISBN số thứ tự sách Chương trình xuất thông tin ISBN, tựa sách, thông tin tác giả Nếu sách mượn chương trình hiển thị thơng báo 2.3 Trả sách Khi sách trả, thủ thư kiểm tra máy đọc thơng tin gáy sách Thơng tin ISBN, tựa sách, tác giả Tiếp đến thông tin độc giả liên quan đến sách truy xuất hiển thị lên hình Thái Duy Quý – ITFac DLU – thaiduyquy@gmail.com THỰC HÀNH CƠ SỞ DỮ LIỆU NÂNG CAO Khi thực xong trình trả sách độc giả thủ thư xếp sách trở lại lên kệ sách thông tin mượn sách chuyển sang ghi nhận trình mượn sách Lúc thủ thư nhập vào ngày trả sách Ghi : thư viện có cho trả sách ngày không ? Dựa vào thông tin cập nhật tình trạng sách độc giả khác mượn sau sách ghi nhận trả 2.4 Phát sinh báo cáo thống kê: Thống kê tình hình mượn trả sách, xác suất trả sách thời gian mượn sách trung bình Cụ thể, thủ thư thường muốn biết thơng tin như: 1) Có phiếu mượn sách thư viện năm qua? 2) Tỷ lệ độc giả mượn sách? 3) Số lượng sách nhiều mà người mượn? 4) Tỷ lệ sách mượn lần năm ngối? 5) Tỷ lệ phiếu mượn trả sách hạn? 6) Thời gian trung bình mượn sách bao nhiêu? 7) Bạn đọc mượn sách nhiều lúc giờ? 2.5 Các quy định hệ thống QĐ-1: Mã tựa sách số thứ tự tựa sách có hệ thống Khi thêm phải kiểm tra có số thứ tự bị xóa bổ sung vào số thứ tự cịn trống này; khơng có (nghĩa số thứ tự liên tục với nhau) thêm với số thứ tự Trong trường hợp xóa khơng phải chỉnh sửa lại số thứ tự tựa sách phía sau QĐ-2: Tương tự mã sách, mã độc giả số thứ tự mã tựa sách QĐ-3: Mỗi độc giả người lớn bảo lãnh tối đa cho trẻ em QĐ-4: Một độc giả người lớn lúc mượn tối đa sách thuộc đầu sách khác QĐ-5: Một độc giả trẻ em lúc mượn sách QĐ-6: Nếu độc giả người lớn có bảo lãnh trẻ em số sách trẻ em mượn tính vào số lượng sách mượn độc giả người lớn QĐ-7: Nếu độc giả mượn đầu sách khơng cịn thư viện hệ thống chuyển qua bảng liệu đăng ký QĐ-8: Nếu độc giả trả sách thơng tin mượn chuyển sang q trình mượn Lược đồ sở liệu DocGia (ma_DocGia, ho, tenlot, ten, ngaysinh) Nguoilon (ma_DocGia, sonha, duong, quan, dienthoai, han_sd) Treem (ma_DocGia, ma_DocGia_nguoilon) Tuasach (ma_tuasach, tuasach, tacgia, tomtat) Dausach (isbn, ma_tuasach, ngonngu, bia, trangthai) Cuonsach (isbn, ma_cuonsach, tinhtrang) Thái Duy Quý – ITFac DLU – thaiduyquy@gmail.com THỰC HÀNH CƠ SỞ DỮ LIỆU NÂNG CAO DangKy (isbn, ma_DocGia, ngay_dk, ghichu) Muon (isbn, ma_cuonsach, ma_DocGia, ngay_muon, ngay_hethan) QuaTrinhMuon(isbn, ma_cuonsach, ngay_muon, ma_DocGia, ngay_hethan, ngay_tra, tien_muon, tien_datra, tien_datcoc, ghichu) Cơ sở liệu SQL Server Đề Án: V Bài tập Bài tập 1: - Mở SQL Server, tạo CSDL Thư viện Đề án mô tả phần luyện tập - Nhập số mẫu tin có tuân thủ số quy tắc nêu phần luyện tập Bài tập 2: Cài đặt Store – Procedure CSDL Quản lý thư viện theo mô tả sau: 2.1 Xem thông tin độc giả: Tên: sp_ThongtinDocGia Nội dung: Liệt kê thông tin độc giả tương ứng với mã độc giả Nếu độc giả người lớn hiển thị thơng tin độc giả + thông tin bảng người lớn Nếu độc giả trẻ em hiển thị thông tin độc giả + thông tin bảng trẻ em Thực hiện: [1] Kiểm tra độc giả thuộc loại người lớn hay trẻ em [2] Nếu người lớn thì: In thơng độc giả này, gồm có: thông tin độc giả + thông tin người lớn [3] Nếu trẻ em thì: In thơng tin liên quan đến độc giả này, gồm có: thơng tin độc giả + thông tin trẻ em Thái Duy Quý – ITFac DLU – thaiduyquy@gmail.com THỰC HÀNH CƠ SỞ DỮ LIỆU NÂNG CAO 2.2 Thông tin đầu sách: Tên: sp_ThongtinDausach Nội dung: Liệt kê thông tin đầu sách, thông tin tựa sách số lượng sách chưa mượn đầu sách cụ thể (ISBN) 2.3 Liệt kê độc giả người lớn mượn sách: Tên: sp_ThongtinNguoilonDangmuon Nội dung: Liệt kê thông tin tất độc giả mượn sách thư viện 2.4 Liệt kê độc giả người lớn mượn sách hạn: Tên: sp_ThongtinNguoilonQuahan Nội dung: Liệt kê thông tin tất độc giả mượn sách thư viện tình trạng mượn hạn 14 ngày 2.5 Liệt kê độc giả người lớn mượn sách có trẻ em mượn sách: Tên: sp_DocGiaCoTreEmMuon Nội dung: Liệt kê những độc giả tình trạng mượn sách trẻ em độc giả bảo lãnh tình trạng mượn sách 2.6 Cập nhật trạng thái đầu sách: Tên: sp_CapnhatTrangthaiDausach Nội dung: Cập nhật trạng thái đầu sách cụ thể tương ứng với isbn: đầu sách khơng cịn sách thư viện tình trạng ‘N’; đầu sách cịn sách trở lên tình trạng ‘Y’ Bước thực hiện: [1] Xác định số sách cịn thư viện đầu sách có isbn [2] Nếu khơng cịn nào: Cập nhật tình trạng đầu sách no [3] Nếu cịn thì: Cập nhật tình trạng đầu sách yes 2.7 Thêm tựa sách mới: Tên: sp_ThemTuaSach Nội dung: Thêm tựa sách vào hệ thống với điều kiện thuộc tính tựa sách, tác giả, tóm tắt phải khác với bảng tựa sách có.Và phải bảo đảm quy định QĐ-1 tuân thủ Bước thực hiện: [1] Xác định mã tựa sách cấp cho tựa sách thỏa quy định QĐ-1 [2] Kiểm tra có thuộc tính tựa sách, tác giả, tóm tắt khác với bảng tựa sách có [3] Nếu thỏa điều kiện thì: Thêm vào tựa sách [4] Nếu khơng thỏa điều kiện thì: [4.1] Thơng báo lỗi [4.2] Chấm dứt stored procedure 2.8 Thêm sách mới: Tên: sp_ThemCuonSach Thái Duy Quý – ITFac DLU – thaiduyquy@gmail.com THỰC HÀNH CƠ SỞ DỮ LIỆU NÂNG CAO Nội dung: Thêm sách vào hệ thống với điều kiện phải bảo đảm quy định QĐ-2 tuân thủ Và phải cập nhật trạng thái đầu sách Bước thực hiện: [1] Kiểm tra mã isbn khơng tồn thơng báo & return [2] Xác định mã sách cấp cho sách thỏa quy định QĐ-2 [3] Thêm sách với mã sách xác định tình trạng yes [4] Thay đổi trạng thái đầu sách yes 2.9 Thêm độc giả người lớn: Tên: sp_ThemNguoilon Nội dung: thêm thông tin vào bảng liệu người lớn bảng liệu độc giả hệ thống Bước thực hiện: [1] Xác định mã độc giả cấp cho độc giả người lớn thỏa quy định QĐ-1 [2] Thêm liệu vào bảng độc giả [3] Kiểm tra tuổi độc giả có đủ 18 tuổi [4] Nếu khơng đủ tuổi : [4.1] Thông báo lỗi [4.2] Chấm dứt stored procedure [5] Nếu đủ tuổi thì: Thêm liệu vào bảng người lớn 2.10 Thêm độc giả trẻ em: Tên: sp_ThemTreEm Nội dung: thêm thông tin vào bảng liệu trẻ em bảng liệu độc giả hệ thống Bước thực hiện: [1] Xác định mã độc giả cấp cho độc giả trẻ em thỏa quy định QĐ-1 [2] Thêm liệu vào bảng độc giả [3] Đếm số trẻ em độc giả người lớn bảo lãnh trẻ em [4] Kiểm tra, không thỏa quy định QĐ-3 thì: [4.1] Thơng báo lỗi [4.2] Chấm dứt stored procedure [5] Nếu thỏa quy định QĐ-3 thì: Thêm liệu vào bảng trẻ em 2.11 Xóa độc giả: Tên: sp_XoaDocGia Nội dung: xóa tồn thơng tin liên quan đến độc giả gồm có: q trình mượn, đăng ký, mượn, độc giả, người lớn (nếu độc giả người lớn), trẻ em (nếu độc giả trẻ em hay độc giả người lớn có bảo lãnh trẻ em) Chỉ thực xóa độc giả khơng mượn sách Bước thực hiện: [1] Kiểm tra xem độc giả có tồn hay khơng ? Thái Duy Quý – ITFac DLU – thaiduyquy@gmail.com THỰC HÀNH CƠ SỞ DỮ LIỆU NÂNG CAO [1.1]Nếu độc giả không tồn : Thông báo “Không tồn độc giả” [1.2]Kết thúc procedure [2] Kiểm tra độc giả có mượn sách hay khơng ? [1.1]Nếu độc giả có mượn sách thì: Thơng báo “Khơng thể xóa độc giả được” [1.2]Kết thúc procedure [3] Kiểm tra xem độc giả độc giả người lớn hay trẻ em [3.1] Nếu độc giả người lớn: [3.1.1] Kiểm tra xem độc giả có bảo lãnh trẻ em nao hay khơng? [3.1.2] Nếu độc giả khơng bảo lảnh trẻ em xóa độc giả Lưu ý : thứ tự xóa bảng phải tuân thủ ràng buộc khóa ngoại Ta phải xóa bảng nguoilon / treem, bảng QuaTrinhMuon, bảng DangKy sau xóa bảng DocGia [3.1.2.1] Xóa bảng NguoiLon, bảng QuaTrinhMuon, bảng DangKy [3.1.2.2] Sau xóa bảng DocGia [3.1.3] Nếu độc giả có bảo lãnh trẻ em : [3.1.3.1] Tìm trẻ em mà độc giả bảo lãnh xóa trẻ em [3.1.3.2] Xóa bảng NguoiLon, bảng QuaTrinhMuon, bảng DangKy [3.1.3.3] Sau xóa bảng DocGia [3.2] Nếu độc giả trẻ em xóa bảng treem, bảng QuaTrinhMuon, bảng DangKy [3.2.1] Xóa bảng TreEm, bảng QuaTrinhMuon, bảng DangKy [3.2.2] Sau xóa bảng DocGia Ghi chú: Nếu rong lúc tạo khóa ngoại, có sử dụng delete cascade thi ta cần xóa bảng DocGia bảng NguoiLon hay TreEm tồn liệu liên quan đến độc giả bảng khác tự động xóa Trong hướng dẫn này, khơng cài delete cascade ! 2.12 Mượn sách: Tên: sp_MuonSach Nội dung: Kiểm tra sách loại có mượn độc giả hay khơng Thì kiểm tra xem sách thư viện chưa mượn khơng Nếu thực việc mượn Cịn khơng thực việc đăng ký Phải ý đảm bảo kiểm tra số lượng sách mượn độc giả Nếu độc giả người lớn phải thỏa quy định QĐ-4; độc giả trẻ em phải quy định QĐ-5.Và đặc biệt độc giả người lớn phải bảo đảm QĐ-6 phải tuân thủ Bước thực hiện: [1] Kiểm tra độc giả có mượn sách loại khơng? Nếu có : [1.1] Thơng báo lỗi [1.2] Return [2] Nếu không: Kiểm tra số lượng sách độc giả mượn: Thái Duy Quý – ITFac DLU – thaiduyquy@gmail.com THỰC HÀNH CƠ SỞ DỮ LIỆU NÂNG CAO [2.1] Kiểm tra độc giả người lớn hay trẻ em? Nếu người lớn: tính tổng số sách độc giả mượn trẻ em độc giả bảo lãnh mượn(nếu có) Nếu = thì: Báo lỗi & return [2.2] Nếu trẻ em: Tính số sách trẻ em mượn: [2.2.1] Nếu =30 60 =100 =150 tổng tiền thưởng = 1600 ($) Viết hàm trả tổng số dự án theo phòng ban Viết hàm trả kết bảng (Table), viết hai cách: Inline Table-Valued Functions Multistatement Table-Valued Thông tin gồm: MaNV, HoTen, NgaySinh, NguoiThan, TongLuongTB Bài tập 4: Viết trigger theo mô tả sau CSDL Đề án: 11 Thái Duy Quý – ITFac DLU – thaiduyquy@gmail.com THỰC HÀNH CƠ SỞ DỮ LIỆU NÂNG CAO Tạo triggers bảng nhân viên cho thao tác UPDATE Khi có thao tác UPDATE xảy field TENNV thơng báo cho người dùng ‘Khơng cập nhật’ hủy thao tác Thêm cột ToTal_Time vào bảng nhân viên Viết trigger cho thao tác insert, update, delete bảng PhanCong Khi có mẫu tin thêm vào, hay cập nhật, hay xóa ToTal_Time tính lại tương ứng cho nhân viên phân công Lưu ý, giả sử ban đầu ToTal_Time = ToTal_Time tổng thời gian phân công cho nhân viên dự án Tạo trigger cho thao tác insert, update bảng Nhanvien để kiểm tra ràng buộc liên thuộc tính ngày sinh Hire_date, ngày sinh ln ln < Hire_date – 40 (40 giá trị datepart ‘ yy’) Tạo trigger để kiểm tra thao tác insert bảng THANNHAN cho số lượng thân nhân thêm vào tương ứng với nhân viên không người Bài tập 5: Giả sử sở liệu quản lý sinh viên sau: SinhVien (MSSV, HoSV, TenSV, Phai, NgaySinh, DiaChi, DienThoai, MaLop, DiemTB) Lop (MaLop, TenLop, MaKhoa, GVCN, MaLT) Diem (MSSV, MaMH, LanThi, Diem) Monhoc (MaMH, TenMH, TinChi) Tạo trigger sau: Khi thêm bảng SinhVien: Nếu mã lớp không tồn bên bảng lop, mã sv để trống bị trùng khơng cho thêm vào Khi thêm vào bảng Lop: Hai kí tự đầu mã lớp CD, hai kí tự sau ‘TH’ “KT’ Ngược lại không cho thêm vào Khi thêm vào bảng KetQua: Kiểm tra tồn MSSV, MaMH, cập nhật DiemTB cho bảng SinhVien Khi thêm vào bảng MonHoc: tinchi phải >=2

Ngày đăng: 15/09/2019, 08:43

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan