1. Trang chủ
  2. » Luận Văn - Báo Cáo

ĐỀ TÀI :QUẢN LÝ MƯỢN SÁCH

21 1,5K 2

Đ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ông tin cơ bản

Định dạng
Số trang 21
Dung lượng 82,5 KB

Nội dung

ĐỀ TÀI :QUẢN LÝ MƯỢN SÁCH

Trang 1

TRƯỜNG ĐẠI HỌC SƯ PHẠM KĨ THUẬT HƯNG YÊN

KHOA CÔNG NGHỆ THÔNG TIN

-o0o -TIỂU LUẬN

MÔN : CƠ SỞ DỮ LIỆU NÂNG CAO

ĐỀ TÀI :QUẢN LÝ MƯỢN SÁCH

Giáo viên hướng dẫn : Trịnh Thị Nhị

Sinh viên thực hiện : Lớp: TK6LC1

Hưng Yên, Tháng 4 năm 2010

Trang 2

Cho CSDL của hệ thống quản lý mượn sách với các cấu trúc bảng sau: Bảng 1: Loaisach

STT Fieldname Data Type Fieldsize Note

Bảng 3: Docgiatra

STT Fieldname Data Type Fieldsize Note

Trang 3

1 Manxban Text 4 Khoá chính

Sử dụng ngôn ngữ T - SQL thực hiện các yêu cầu sau:

Câu 1:

1 Tạo CSDL trên với các ràng buộc toàn vẹn dựa vào thực tế

2 Nhập dữ liệu vào các bảng

Câu 2:

3 Thêm các rang buộc và xóa các rang buộc theo yêu cầu

4 Tạo một truy vấn TV1 để hiển thị danh sách độc giả mượn sách trong tháng 10 năm 98

bao gồm những thông tin: Hoten, ngaymuon, tensach, tentacgia

5 Tạo một truy vấn TV2 để hiển thị số lượng còn của mỗi loại sách của nhà xuất bản Kim đồng bao gồm những thông tin: tensach, nxban, soluongcon.

6 Tạo một truy vấn TV3 để hiển thị danh sách những độc giả mượn sách quá hạn bao

gồm những thông tin: Hoten, Ngaymuon, Ngayhen, songayqua (Số ngày quá hạn)

7 Tạo một truy vấn TV4 để hiển thị danh sách những độc giả mượn sách quá hạn bao

gồm những thông tin Hoten, sluong, mucquahan

Trong đó: Mucquahan là Mức 1 nếu songayqua<5

Mucquahan là Mức 2 nếu songayqua<10Mucquahan là Mức 3 nếu songayqua>=10

8 Tạo một truy vấn TV5 để hiển thị danh sách những độc giả trả sách đúng hạn hoặc

sớm hạn bao gồm những thông tin: Hoten, masach, tensach

9 Tạo một truy vấn TV6 để hiển thị những loại sách có số trang >100 và số lượng còn là

20 của nhà xuất bản giáo dục hoặc tên sách có chữ Tin học bao gồm Tensach, sotrang,

Trang 4

Câu 4:

Thiết lập chỉ mục và chỉ mục toàn văn trên bảng Docgiamuon Ứng dụng để tìm kiếm

theo chỉ mục mà mình vừa tạo ra

Yêu cầu cơ bản:

- Trên đây là các yêu cầu bắt buộc Sinh viên tạo CSDL với các ràng buộc toàn vẹn dựa vào thực tế

Sinh viên tự đưa ra thêm các câu hỏi thuộc các dạng (thuộc tập DDL, DML), Store

procedure, Trigger và thực hiện các câu hỏi đó

BÀI LÀM

/*Câu 1:

1 Tạo Database và tạo bảng*/

Tạo Database được lưu trong ổ F:

create database QLMUONSACH

on( name='QLMUONSACH_dat',

filename='F:\CaithienCSDL\QLMUONSACH_dat.mdf' )

Trang 5

log on (name='QLMUONSACH_log',

filename='F:\CaithienCSDL\QLMUONSACH_log.ldf' )

Tạo các bảng cần thiết

.Tạo bảng Nhà xuất bản

if exists (select * from sysobjects where name='Nhaxban')

drop table Nhaxban

create table Nhaxban

(Manxban char(4) primary key,Ten_xb nvarchar(30),diachi_nxb nvarchar(30)) Tạo bảng loại sach

If exists(select * from sysobjects where name=’loaisach’)

Drop table loaisach

go

create table Loaisach

(Masach char(4) primary key, Tensach nvarchar(20),Tentacgia

nvarchar(20),Namxb datetime CONSTRAINT c_nxb CHECK(Namxb

BETWEEN '01/01/1990' AND '01/01/2010'),Soluongco int constraint c_sl check(Soluongco between 0 and 999),Sotrang int constraint c_st check(Sotrang between 0 and 99999),Manxban char(4),

constraint fk_xb foreign key(Manxban) references Nhaxban(Manxban)

)

Tạo bảng Độc giả mượn

create table Docgiamuon

(

Madocgia char(4) ,

Hoten nvarchar(30), quequan nvarchar(30),Masach char(4), constraint fk_dg foreign key(Masach) references Loaisach(Masach),

Trang 6

Sluong int constraint c_soluong check(Sluong between 0 and 9),ngaymuon datetime CONSTRAINT c_ngaymuon CHECK(Ngaymuon BETWEEN

'01/01/1990' AND '01/01/2010'),ngayhen datetime CONSTRAINT c_ngayhen CHECK(ngayhen BETWEEN '01/01/1990' AND '01/01/2010'),constraint

pk_docgiamuon primary key(Madocgia,Masach,Ngaymuon)

)

Tạo bảng độc giả trả

create table Docgiatra

(

Madocgia char(4),Masach char(4),constraint fk_dgt foreign key(Masach)

references Loaisach(Masach),Ngaytra datetime constraint c_trasach

check(Ngaytra BETWEEN '01/01/1990' AND '01/01/2010'),constraint

pk_docgiatra primary key(Madocgia,masach,Ngaytra)

)

2 Nhập dữ liệu vào bảng

Nhập dữ liệu bảng Nhà xuất bản

Insert into Nhaxban values('nxb1','Nha xuat ban giao duc','ha noi')

Insert into Nhaxban values('nxb2','Nha xuat ban Da Nang','Da nang')

Insert into Nhaxban values('nxb3','Nha xuat ban Thanh Pho HCM','Thanh Pho HCM')

Insert into Nhaxban values('nxb4','Nha xuat ban Can tho','Can tho')

Câu 2:

1.Tạo một truy vấn TV1 để hiển thị danh sách độc giả mượn sách trong tháng 10 năm 98

bao gồm những thông tin: Hoten, ngaymuon, tensach, tentacgia.

Select Hoten,Ngaymuon,tensach,tentacgia

from loaisach as t1,docgiamuon as t2

where t1.masach=t2.masach and month(ngaymuon)=10 and year(ngaymuon)=1998

Trang 7

2. Tạo một truy vấn TV2 để hiển thị số lượng còn của mỗi loại sách của nhà xuất

bản Kim đồng bao gồm những thông tin: tensach, nxban, soluongcon

Select tensach,ten_xb,sum(soluongco-sluong) as soluongcon into TV2

from Nhaxban as t1,docgiamuon as t2,loaisach as t3

where t1.manxban=t3.manxban and t2.masach=t3.masach and ten_xb = 'kim dong'group by tensach,ten_xb

3 Tạo một truy vấn TV3 để hiển thị danh sách những độc giả mượn sách quá

hạn bao gồm những thông tin: Hoten, Ngaymuon, Ngayhen, songayqua (Số ngày quá hạn)

Select hoten,Ngaymuon,Ngayhen,sluong,(year(ngayhen)-year(ngaymuon))*365+(month(ngayhen)-month(ngaymuon))*30+(day(ngayhen)-day(ngaymuon)) as Songayquahan into TV3

from Docgiamuon

4 Tạo một truy vấn TV4 để hiển thị danh sách những độc

giả mượn sách quá hạn bao gồm những thông tin Hoten, sluong, mucquahan

Trong đó: Mucquahan là Mức 1 nếu songayqua<5

Mucquahan là Mức 2 nếu songayqua<10

Mucquahan là Mức 3 nếu songayqua>=10

Select hoten,Sluong,Songayquahan,'Mucquahan'=

case

when Songayquahan<5 then 'Muc 1'

when Songayquahan<10 then 'Muc 2'

else 'Muc 3'

end

into TV4

from dbo.TV3

5 Tạo một truy vấn TV5 để hiển thị danh sách những độc giả trả sách

đúng hạn hoặc sớm hạn bao gồm những thông tin: Hoten, masach, tensach

Select hoten,t1.masach,tensach

Trang 8

from loaisach as t1, docgiamuon as t2,docgiatra as t3

where t1.masach=t2.masach and t1.masach=t3.masach and

t2.madocgia=t3.madocgia and ngayhen>=(select ngaytra from docgiatra)

6 Tạo một truy vấn TV6 để hiển thị những loại sách có số trang >100 và số

lượng còn là 20 của nhà xuất bản giáo dục hoặc tên sách có chữ Tin học bao gồm

Tensach, sotrang, ten_xb, tentacgia

select Tensach,sotrang,ten_xb,tentacgia

from Nhaxban as t1,loaisach as t2

where t1.manxban=t2.manxban and sotrang>100 and(soluongco=20 or tensach like'%tin hoc%' )

7. Hiển thị thông tin của độc giả mượn nhiều sách nhất

select

t1.hoten,t1.quequan,t1.sluong,t1.ngayhen,t1.madocgia,t1.ngaymuon,count(t1.masach) as slsach

from docgiamuon as t1

group by t1.hoten,t1.quequan,t1.sluong,t1.ngayhen,t1.madocgia,t1.ngaymuonhaving count (t1.masach)>=all(select count(masach) from loaisach)

Câu 3: Tạo ra các view (tối thiểu 3 view) So sánh bảng và view

Thực hiện tất cả các thao tác có thể có trên view

-VIEW : hien thi thong tin doc gia muon sach thang 6 nam 2001

where month(ngaymuon)=6 and year(ngaymuon)=2001

select * from Docgiamuon_theongay

Trang 9

View:hien thi thong tin loai sach co doc gia muon nhieu nhat

create view tt_sach

having count(t2.masach)>=all(select count(masach) from loaisach)

hien thi thong tin cua doc gia co ten la Lan muon sach cua nha xuat ban Giao duc hoac muon ngay '23/5/2002'

create view docgia_xb

as

select hoten,quequan,sluong,ten_xb,ngaymuon

from docgiamuon as t1,nhaxban as t2,loaisach as t3

where t1.masach=t3.masach and t2.manxban=t3.manxban and hoten='%lan' and

ngaymuon='23/5/2002'

So sánh bảng và View

* Định nghĩa:

- Các bảng là các đối tượng của CSDL,nó chứa tất cả các dữ liệu có mặt trong một

CSDL Một CSDL được cấu thành từ nhiều bảng, mỗi bảng chứa tập hợp các dữ liệucó liên quan với nhau

- View là một cách thức để xem các dữ liệu từ một hay nhiều bảng trong CSDL View là một bảng ảo, bảng ảo được tạo ra như một tập con của các cột hay các hàng từ một hay nhiều bảng khác nhau Đồng thời nó cũng bao gồm tất cả các hàng và các cột.Tuy nhiên, một view không tồn tại như một tập hợp của các giá trị dữ liệu lưu trữ trong cơ sở dữ liệu.Các dòng và các cột đến từ các bảng tham chiếu trong chuỗi truy vấn Dữ liệu được hiển thị trực tiếp từ bảng ngay tại thời gian thục thi

Giống nhau: Khi dữ liệu hiển thị thì đều hiển thị dạng bảng.Bảng và View đều có thể được xây dựng dựa vào các bảng,view khác

Trang 10

Khác nhau:

+Bảng: Thao tác trực tiếp với cơ sở dữ liệu

+ View: Khi thao tác thì không có ảnh hưởng gì đến cơ sở dữ liệu

- View chỉ có thể được tạo trong CSDL hiện tại

- Những giá trị mặc định, những qui tắc và bẫy lỗi không thể được liên kết với view Còn bảng thì hoàn toàn có các khả năng đó

- Các bảng tạm thời không thể tham gia vào view

- Khai báo view được lưu giữ ngay cả khi các bảng liên quan bị loại bỏ

- Các câu truy vấn khai báo view không thể bao gồm các mệnh đề ORDER BY, COMPUTE, COMPUTE BY hoặc từ khoá INTO

- Khi xoá view thì không ảnh hưởng gì đến CSDL

Câu 4: Thiết lập chỉ mục và chỉ mục toàn văn trên bảng Dogiamuon Ứng dụng để tìm

kiếm theo chỉ mục mà mình vừa tạo ra

alter table Docgiamuon

drop index sinhvien.id_madocgia

create index id_docgiamuon on Docgiamuon(madocgia)

timkiem theo chi muc

select * from Docgiamuon where madocgia='dg1'

Tạo thêm một chỉ mục khac trong bảng Đocgiamuon

Create NONCLUSTERED index id_thu

ON docgiamuon(masach)

Xem bản ghi trong bảng Docgiamuon

SELECT * FROM DOCHIAMUON

Sử dụng chỉ mục toàn văn

Các câu truy vấn toàn văn có thể được đưa ra trên các bảng mà ở đó các chỉ mục toàn văn

đã được định nghĩa Các câu truy vấn toàn văn sử dụng các từ khoá CONTAINS và PREETEXT Ta thực hiện các câu truy vấn toàn văn trên bảng docgiamuon

Select madocgia,hoten,masach,sluong

From docgiamuon

Trang 11

Where CONTAINS(quequan,’”hung yen” or “hai duong”’)

Câu 5:

Đề xuất các chức năng của hệ thống, viết các Store procedure đáp ứng các chức năng đó. 1 thu tuc nhap nha xuat ban

if exists(select * from sysobjects where name='p_nhapnxb')

drop proc p_nhapnxb

insert into Nhaxban values(@manxban,@ten_xb,@diachi_nxb)

print 'ma nha xuat ban:'+@manxban+'da duoc nhap thanh cong'

go

Thực thi thủ tục trên

Exec p_nhapnxb ‘nxb6’,’linh tinh’,’bat ki’

2 Nhap du lieu bang loai sach

if exists(select * from sysobjects where name='p_nhaploaisach')

drop proc p_nhaploaisach

go

create proc p_nhaploaisach

@masach char(4),@tensach nvarchar(30),@tentacgia nvarchar(30),@Namxb

datetime,@soluongco int,@Sotrang int,@manxban char(4)

end

3 Nhap du lieu bang docgiamuon

if exists(select * from sysobjects where name='p_nhapdocgiamuon')

drop proc p_nhapdocgiamuon

go

create proc p_nhapdocgiamuon

@madocgia char(4),@hoten nvarchar(30),@quequan nvarchar(30),@masach

char(4),@sluong int,@ngaymuon datetime,@ngayhen datetime

as

if exists(select masach from loaisach where masach=@masach)

begin

if (@ngaymuon<@ngayhen)

Trang 12

begin

insert into docgiamuon

values(@madocgia,@hoten,@quequan,@masach,@sluong,@ngaymuon,@ngayhen) print 'nhap thanh cong'

Tao thu tuc nhap du lieu bang tra sach

if exists(select * from sysobjects where name='p_nhaptrasach')

drop proc p_nhaptrasach

go

create proc p_nhaptrasach

(@madocgia char(4),@masach char(4),@ngaytra datetime)

print 'Ma sach khong dung'

Câu 6: Đưa ra các yếu tố của RBTV, thiết lập các trigger thực hiện các ràng buộc toàn

vẹn đó

1 Thuc hien viec xoa nha xuat ban thi xoa cac thong tin lien quan

if exists(select * from sysobjects where name='tg_del_nxb')

drop trigger tg_del_nxb

Trang 13

tạo thủ tục để kiểm tra trigger trên

create proc xoaxb(@manxban varchar(10))

as

alter table loaisach nocheck constraint all

delete from nhaxban where manxban=@manxban

alter table loaisach check constraint all

thực thi khi xóa sinh viên có masv 'sv21'

exec xoaxb 'xb2'

Trigger:Khi chen loai sach thi manxban phai ton tai trong bang nhaxban

if exists(select * from sysobjects where name='tg_i_loaisach')

drop trigger tg_i_loaisach

Trang 14

if not exists(select t1.manxban from nhaxban as t1,inserted as t2 where t1.manxban=t2.manxban)

begin

print'ma nha xuat ban khong dung ban hay nhap lai'

rollback tran

end

Trigger:xoa loai sach thi phai xoa cac thong tin lien quan

if exists(select * from sysobjects where name='tg_del_loaisach')

drop trigger tg_del_loaisach

trigger:nhap ngay tra phai lon hon hoac bang ngay muon sach

if exists(select * from sysobjects where name='tg_iu_trasach')

drop trigger tg_iu_trasach

go

create trigger tg_iu_trasach

on docgiatra

Trang 15

declare @ngaymuon datetime

declare @ngaytra datetime

select @ngaymuon=ngaymuon from docgiamuon

select @ngaytra=ngaytra from docgiatra where ngaytra in(select ngaytra from inserted)

from docgiatra as t1,inserted as t2,deleted as t3

where t1.madocgia=t3.madocgia and t1.masach=t3.masach

Trang 16

print'Ma doc gia khong dung'

rollback tran

end

end

Tao trigger: khi xoa thong tin bang doc gia muon thi phai xoa cac thong tin lien quan

if exists(select * from sysobjects where name='tg_d_docgiamuon')

drop trigger tg_d_docgiamuon

Câu 7: Tạo ra các user (tối thiểu là 5 user), tạo ra các Role (tối thiểu là 3 role) Thực hiện

gán các user vào các role Sau đó , thực hiện phân quyền cho các user và các role (sử dụng tất cả các quyền)

/*Moi quan he user va role: User nam trong ROLE cho ne can phai xoa USER truoc khi xoa ROLE

nhung can kiem tra xem USER co duoc anh xa den DATABASE nao khac ngoai

DATABASE mac dinh ung

voi USER luc duoc tao hay khong, neu co thi ta cung can phai huy viec anh xa nay di sau

do neu can moi xoa

Trang 17

duoc cac LOGIN*/

If exists(select name from sysobjects where name='Xemthanhviencuarole') drop proc Xemthanhviencuarole

from sysusers t1,sysusers t2,sysmembers t3

where t1.uid=t3.groupuid and t1.issqlrole=1 and t1.name=@role_name and t2.uid=t3.memberuid

order by 1

end

Goi thu tuc de xem co bao nhieu thanh vien trong ROLE

Exec Xemthanhviencuarole 'role1'

Xoa cac role cu (trong database hien hanh)

If exists(select name from sysobjects where name='Xoa_Role1')

drop proc Xoa_Role1

go

Thu tuc xoa role va cac user ben trong no

Cach 1: Dung bien dem va lay tung dong du lieu mot

create proc Xoa_Role1 @role_name sysname

Trang 18

user con dang nam trong role

Declare @sothanhvien int

select @sothanhvien=COUNT(*) from sysusers t1, sysusers t2,sysmembers t3

where t1.uid=t3.groupuid and t1.issqlrole=1 and t1.name=@role_name and

Declare @value sysname

Set @value =(select top 1 t2.name

from sysusers t1,sysusers t2,sysmembers t3

where t1.uid=t3.groupuid and t1.issqlrole=1 and t1.name=@role_name and t2.uid=t3.memberuid)

Exec sp_dropprolemember @role_name,@value

Set @i=@i+1

end

end

print 'Toi se xoa'+@role_name

Sau khi Role da rong ta co the xoa role

Exec sp_dropprole @role_name

end

go

CACH 2: DUNG CURSER

Create proc Xoa_Role @role_name sysname

Trang 19

where t1.uid=t3.groupuid and t1.issqlrole=1 and t1.name=@role_name and

from sysusers t1,sysusers t2,sysmembers t3

where t1.uid=t3.groupuid and t1.issqlrole=t3.memberuid

declare @value sysname

Deallocate x

end

print 'Toi se xoa' +@role_name

Sau khi role da rong ta co the xoa role

Exec sp_droprole @role_name

kiem tra xem trong role da co user nao voi bi danh tuong ung hay chua

if not exists(select name from sysusers where name=@bi_danh)

Ngày đăng: 10/04/2014, 15:22

HÌNH ẢNH LIÊN QUAN

Bảng 1: Docgiamuon - ĐỀ TÀI :QUẢN LÝ MƯỢN SÁCH
Bảng 1 Docgiamuon (Trang 2)
Bảng 4: : Nhaxban - ĐỀ TÀI :QUẢN LÝ MƯỢN SÁCH
Bảng 4 : Nhaxban (Trang 2)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w