Xây dựng cơ sở dữ liệu chạy trên máy chủ SQL Server 2000 cho thư viện sách, báo, tạp chí

20 824 2
Xây dựng cơ sở dữ liệu chạy trên máy chủ SQL Server 2000 cho thư viện sách, báo, tạp chí

Đ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

Tài liệu tham khảo công nghệ thông tin Xây dựng cơ sở dữ liệu chạy trên máy chủ SQL Server 2000 cho thư viện sách, báo, tạp chí

Tải xuống tệp đính kèm gốc Tên đề tài: Xây dựng sở liệu chạy máy chủ SQL Sever 2000 cho thư viện sách, báo, tạp chí Bài làm: Cơ sở liệu ứng dụng nhiều hệ thống, từ phần mềm quản lý, phần mềm kế toán, website,… Với nhiệm vụ lớn lao nhà sản xuất xây dựng nhiều hệ quản trị sở liệu khác nhau, hệ quản trị CSDL có đặc điểm khác (orale, Ms SQL Sever, My SQL,…), tùi theo nhu cầu công việc mà nhà sử dụng, sử dụng sở liệu khác Thư viện sách nơi quản lý đầu sách, quản lý độc giả, quản lý thông tin mượn trả sách Để đáp ứng nhu cầu việc phát triển công nghệ thông tin để ứng dụng công nghệ thông tin vào sống, để thay đổi việc quản lý củ ngày xưa, quản lý giấy tờ, việc quản lý máy vi tính tiết kiệm nhiều tiền của thư viện đó, việc tìm sách list danh sách đầu sách, việc ngồi trước máy vi tính gõ thơng tin đầu sách tìm sách cần Với việc ứng dụng nên chúng em chọn đề tài quản lý thư viện để làm đề tài tập lớn mơn hệ quản trị CSDL, kiến thức cịn cỏi, chưa sâu vào thực tế, nên chắn tập lớn bọn em cịn nhiều sai sót mặt Chân thành cám ơn thầy giáo Trịnh Viết Cường người dẫn cho chúng em mơn học này, kính chúc thầy mạnh khỏe thành công sống I- Tạo bảng (table) Một CSDL có bảng nhiều bảng, CSDL có nhiều bảng liên kết với thơng qua khóa, với việc liên kết dễ tạo thừa thiếu liệu, cụ thể với sở liệu chúng em nhà xuất xuất nhiều sách, sách chưa sản xuất nhiều nhà xuất lần “In”, (có thể lần tái khác nhà xuất khác in), sách nhiều tác giả viết, tác giả viết nhiều quyên sách,… Quay lại với việc xây dựng sở liệu chúng em, chúng em xây dựng bảng để chứa trường thông tin khác phục vụ cho việc quản lý thư viện Và tất nhiên xây dựng bảng phải xây dựng nơi chứa sở liệu đó, ta gọi Database, tạo database câu lệnh: Create database qltv on primary(name=qltv_data, filename=’ Đường dẫn sở liệu\ qltv_data.mdf’, size=4mb, maxsize=20mb, filegrowth=2mb) Log On (name=qltv_log,filename=’ Đường dẫn sở liệu\qltv_log.ldf’ Size=2mb, Maxsize=10mb, Filegrouwth=1mb) Go Các bảng sở liệu: Qltv_sach: Create table qltv_sach (masach int primary key, Tensach nchar(50) not null, Matheloai tinyint not null, Matacgia tinyint not null, Manxb tinyint not null, Namxuatban datetime , Sotrang int, Giatien char(10), Số tiền không sách sách tặng Soquyentrongkho tinyint not null, Ngonngu char, Ngaynhap char) Qltv_nhaxb: Create table qltv_nhaxb (manxb tinyint primarykey, Tennxb nchar(50) not null, Mota nvarchar(100)); Qltv_docgia: Create table qltv_docgia (Madocgia int primarykey, Hovaten nchar(50) not null, Maloaidocgia tinyint not null, Diachi nvarchar(80), Ngaysinh datetime not null, Gioitinh nchar(5) not null, Noicongtac nvarchar(80), Hinhanh text) Qltv_loaidocgia: Create table qltv_loaidocgia (Maloaidocgia tinyint primary key, Tenloaidocgia nchar(50) not null, Mota nvarchar(100)) Qltv_phieumuonsach: Create table qltv_phieudangky (maphieu int primary key, Mathemuon int not null, Ngaymuon datetime not null, Ngaytra datetime not null, Masach int not null) Qltv_theloaisach: Create table qltv_theloaisach (Matheloai tinyint primarykey, Tentheloai nchar(50) not null, Mota nchar(50)) Qltv_thethuvien: Create table qltv_thethuvien (Mathemuon int primary key, Madocgia int not null, Ngaylapthe datetime not null, Ngayhethan datetime not null) Qltv_tacgia: Create table qltv_tacgia (matacgia tinyint primary key, Tentacgia nchar(50) not null, Mota nvarchar(80)) II- Phân người, nhóm người tác động lên sở liệu Một sở liệu muốn an tồn, đảm bảo tính tồn vẹn CSDL, phải phân người, nhóm người dùng, người làm CSDL, khơng phải tất người ghi, xóa, sửa chữa CSDL đó, nên phân người dùng nhóm người dùng CSDL đó: Qltv_root: có quyền csdl ta đặt thuộc tính role db_owner tài khoản có quyền csdl này, bao gồm quyền phát biểu: create table, create view, create SP, create default , create rule,… Và quyền đối tượng Exec sp_addrolemember ‘db_owner’,’qltv_root’ Ta tạo quyền chế độ người dùng, ta dùng quyền Administrator đăng nhập vào windows để đăng nhập vào CSDL, người người cài hệ quản trị CSDL người có quyền CSDL Qltv_admin: tài khoản ta tạo nhằm làm tài khoản người quản lý thư viện sách, có tất quyền đối tượng xem, xóa, sửa tất bảng CSDL qltv, khơng có số quyền backup, restore,… CSDL Grant all on qltv_loaidocgia to qltv_admin Grant all on qltv_nhaxb to qltv_admin Grant all on qltv_phieumuonsach to qltv_admin Grant all on qltv_sach to qltv_admin Grant all on qltv_sachmuon to qltv_admin Grant all on qltv_tacgia to qltv_admin Grant all on qltv_theloaisach to qltv_admin Grant all on qltv_thethuvien to qltv_admin Tất nhiên ta cấp quyền cách dung giao diện đồ họa cách bấm chuột phải vào bảng cần cấp quyền chọn properties > permissions cấp quyền đối tượng tưng ứng Tùi theo nhu cầu cơng việc ta tạo nhóm người dùng khơng phải người dùng có quyền qltv_admin, gán cho người quản lý thư viện thành viên nhóm Qltv_mem : Những người dùng nhóm người dùng có quyền xem số column số bảng, nhóm người dùng độc giả bình thường lên để tra xem có sách hay khơng, nên nhóm độc giả có quyền xem số bảng bảng sách, tác giả, nhà xuất bản, bảng sách khơng phép xem giá tiền bảng Ta cấp quyền cho người dùng qltv_mem dễ dàng giao diện đồ họa câu lệnh Grant select(masach ,tensach, matheloai, matacgia, manxb, namxuatban, sotrang, tinhtrang, ngonngu) on qltv_sach to qltv_mem Grant select on qltv_nhaxb to qltv_mem Grant select on qltv_tacgia to qltv_mem Grant select on qltv_theloaisach to qltv_mem Tất nhiên có nhiều cách để đến kết ví dụ cấp qua role, cấp qua views,… III- TRIGGER Để đảm bảo tồn vẹn sở liệu này, ví dụ ta nhập sách mã tác giả sách khơng tồn bảng mã tác giả,… Ta cho mượn sách mà sách khơng tồn bảng sách,… Bây ta cụ thể đến trigger Bảng qltv_sach Ta tạo trigger có nhiệm vụ kiểm soát việc nhập sách vào kho, nhập sách vào kho mà chưa tồn nhà xuất bản, tác giả, thể loại sách bảng qltv_nhaxb, qltv_tacgia, qltv_theloaisach trigger làm nhiệm vụ xóa dòng vừa nhập câu lệnh Rollback transaction, in dòng chử tương ứng câu lệnh print Câu lệnh tổng quát Qltv_sach VS qltv_nhaxb create trigger insert_sach_nhaxb Tên trigger on qltv_sach tác động lên qltv_sach for insert Với thuộc tính insert as if(select count(*) from inserted,qltv_nhaxb where inserted.manxb=qltv_nhaxb.manxb)=0 Nếu manxb bảng inserted( bảng inserted bảng mà ta chèn thuộc tính bảng qltv_sach tạo ra) mà khơng manxb bảng qltv_nhaxb làm câu lệnh bên begin print 'Khong ton tai nha xuat ban nay' In dòng thong báo rollback transaction Xóa dịng vừa insert vào End Qltv_sach VS qltv_tacgia create trigger insert_sach_tacgia on qltv_sach for insert as if(select count(*) from inserted,qltv_tacgia where inserted.matacgia=qltv_qltv_tacgia.matacgia)=0 begin print 'Khong ton tai tac gia nay' rollback transaction End Qltv_sach VS qltv_theloaisach create trigger insert_sach_theloaisach on dbo.qltv_sach for insert as if(select count(*) from inserted,qltv_theloaisach where inserted.matheloai=qltv_theloaisach.matheloai)=0 begin print 'Khong ton tai the loai sach nay' rollback transaction end Tạo trigger có nhiệm vụ nhập năm xuất sách lớn năm Nếu nhập năm xuất lớn năm xóa dòng vừa nhập vào Câu lệnh sau: create trigger insert_sach_namxuatban on qltv_sach for insert as declare @nxb datetime select @nxb=namxuatban from inserted if(year(@nxb)>=year(getdate())) begin print 'Nam xuat ban bat buoc phai nho hon hoac bang nam hien tai' rollback transaction end Ta để chế độ mặc định cho ngày nhập bảng sách cách lấy ngày hệ thống Câu lệnh sau: CREATE DEFAULT ngaynhap AS getdate() Bây chế độ mặc định nằm qltv>defaults Nhấp vào default ta vừa tạo chọn properties> bind columns add cột qltv_sach.ngaynhap vào Vậy ta nhập sách vào kho, column ta không cần nhập mà lấy ngày hệ thống Bảng qltv_nhaxb Tạo trigger có nhiệm vụ xóa tất thuộc tính bảng qlvt_sach mà có manxb trùng với manxb bảng qltv_nhaxb ta xóa bảng qltv_nhaxb Câu lênh sau: create trigger delete_manhaxb on qltv_nhaxb for delete as begin delete qltv_sach from deleted where qltv_sach.manxb=deleted.manxb print 'Da xoa tuong ung cac thuoc tinh bang sach ma co ma nha xuat ban tuong ung' end Tạo trigger có tác dụng thay đổi thuộc tính mã nhà xuất bảng qltv_nhaxb mã nhà xuất tương ứng bảng qltv_sach thay đổi theo Câu lệnh: CREATE TRIGGER update_manhaxuatban ON qltv_nhaxb FOR UPDATE AS IF(@@ROWCOUNT=0) BEGIN PRINT 'Bang nha xuat ban khong có du lieu’ RETURN END IF UPDATE(manxb) BEGIN UPDATE t1 SET t1.manxb=t3.manxb FROM qltv_sach t1, DELETED t2, INSERTED t3 WHERE t1.manxb=t2.manxb PRINT 'Dong thoi sua doi o bang qltv_sach' END Bảng qltv_theloaisach Tạo trigger có nhiệm vụ xóa tất thuộc tính bảng qlvt_sach mà có matheloai trùng với matheloai bảng qltv_theloaisach ta xóa bảng qltv_theloaisach create trigger delete_matheloai on qltv_theloasach for delete as begin delete qltv_sach from deleted where qltv_sach.matheloai=deleted.matheloai print 'Da xoa tuong ung cac thuoc tinh bang sach ma co ma nha the loai tuong ung' end Tạo trigger có tác dụng thay đổi thuộc tính mã thể loại bảng qltv_theloaisach mã thể loại sách tương ứng bảng qltv_sach thay đổi theo Câu lệnh: CREATE TRIGGER update_matheloaisach ON qltv_theloaisach FOR UPDATE AS IF(@@ROWCOUNT=0) BEGIN PRINT 'Bang ma the loai sach khong có du lieu’ RETURN END IF UPDATE(matheloai) BEGIN UPDATE t1 SET t1.matheloai=t3.matheloai FROM qltv_sach t1, DELETED t2, INSERTED t3 WHERE t1.matheloai=t2.matheloai PRINT 'Dong thoi sua doi o bang qltv_sach' END Bảng qltv_tacgia Tạo trigger có nhiệm vụ xóa tất thuộc tính bảng qlvt_sach mà có matacgia trùng với matacgia bảng qltv_tacgia ta xóa bảng qltv_tacgia create trigger delete_matacgia on qltv_tacgia for delete as begin delete qltv_sach from deleted where qltv_sach.matacgia=deleted.matacgia print 'Da xoa tuong ung cac thuoc tinh bang sach ma co ma tac gia tuong ung' end Tạo trigger có tác dụng thay đổi thuộc tính mã tác giả bảng qltv_tacgia mã thể loại sách tương ứng bảng qltv_sach thay đổi theo Câu lệnh: CREATE TRIGGER update_matacgia ON qltv_tacgia FOR UPDATE AS IF(@@ROWCOUNT=0) BEGIN PRINT 'Bang tac gia khong co du lieu’ RETURN END IF UPDATE(matacgia) BEGIN UPDATE t1 SET t1.matacgia=t3.matacgia FROM qltv_sach t1, DELETED t2, INSERTED t3 WHERE t1.matacgia=t2.matacgia PRINT 'Dong thoi sua doi o bang qltv_sach' END Bảng qltv_docgia Tạo trigger có nhiệm vụ kiểm sốt việc nhập liệu vào bảng qltv_docgia nhập độc giả mà loại độc giả khơng tồn bảng qltv_loaidocgia in câu thơng báo xóa bạn vừa nhập Câu lệnh sau: create trigger insert_docgia_maloaidocgia on qltv_docgia for insert as if(select count(*) from inserted,qltv_loaidocgia where inserted.maloaidocgia=qltv_loaidocgia.maloaidocgia)=0 begin print 'Khong ton tai loai doc gia o bang qltv_maloaidocgia' rollback transaction end Một người phải từ tuổi trở lên làm thẻ thư viện nên ta tạo trigger bảo đảm người có số tuổi lớn Nên bảng ngày sinh phải có số tuổi ngày/tháng/năm trừ ngày/tháng/năm sinh người phải lớn ta cho đủ tuổi làm thẻ thư viện Giả sử năm có 365 ngày Câu lệnh sau: CREATE trigger insert_docgia_ngaysinh on qltv_docgia for insert as declare @ns datetime select @ns=ngaysinh from inserted if(datediff(dd,@ns,getdate()))

Ngày đăng: 23/11/2012, 11:34

Từ khóa liên quan

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

  • Đang cập nhật ...

Tài liệu liên quan