數據庫操作綜合

 使用SQL Server 2008 R2數據庫管理系統實現圖書館管理系統

--1、需求分析
--某圖書管理系統的主要功能是圖書管理和信息查詢。
--對於初次借書的讀者,系統根據身份證號作爲唯一標識,
--並與讀者基本信息(姓名、單位、地址等)一起寫入讀者文件。
--系統的圖書管理功能分爲三個方面:購入新書、讀者借書、讀者還書。 
--(1)購入新書時直接將圖書信息(包括圖書條形碼、國際標準書號、
--中圖分類號、書名、價格和購書日期)寫入圖書文件(每一本書爲一條記錄,
--即2本“數據庫理論與技術”就是2條記錄)。
--(2)讀者借書時需填寫借書單。借書單內容包括身份證號和所借圖書條形碼。
--系統首先檢查該身份證號是否有效,若無效,則拒絕借書;若有效,
--則進一步檢查該讀者已借圖書是否超過最大限制數(假設每位讀者能同時借閱的書不超過5本),
--若已達到最大限制數,則拒絕借書;否則允許借書,
--同時將身份證號圖書條形碼和借閱日期等信息寫入借書文件中。
--(3)讀者還書時需填寫還書單。系統根據身份證號和圖書條形碼,
--從借書文件中讀出與該圖書相關的借閱記錄,標明還書日期,再寫回到借書文件中。
--若還書超期,則按每天0.10元進行罰款,並將罰款記錄寫入罰款文件中。



--創建數據庫library

USE master--使用系統
GO
CREATE DATABASE library --創建數據庫

ON PRIMARY	--主文件
(
	NAME='library_data', --文件名
	FILENAME='D:\SQLProject\LibraryDB\library_data.mdf',--路徑
	SIZE=5MB,--初始大小
	MAXSIZE=100MB,--最大容量
	FILEGROWTH=10%--增長速度
)

LOG ON--日誌文件
(
	NAME='library_log',
	FILENAME='D:\SQLProject\LibraryDB\library_log.ldf',
	SIZE=10MB,
	FILEGROWTH=0
)
GO


--創建library數據庫表
--1
--讀者表(*讀者身份證號*,姓名,性別,單位,地址,已借書量)
--完整性約束:check已借書量值,小於0爲非法
use library
go

create table Reader
(
	RCreadit_ID char(18) not null primary key,
	Rname varchar(20) not null,
	Rsex char(2) not null,
	Rdepart varchar(40) not null,
	Raddr varchar(100) not null, 
	Rlendnum numeric(5,0) not null check(Rlendnum>=0)
)
go


--2
--創建圖書表(*圖書條形碼*,*國際標準書號,中圖分類號,書名,價格)
--完整性約束:check書價格,小於或等於0爲非法
use library
go

create table Book
(
	Bbarcode char(6) not null primary key,
	BISBN char(13) not null,
	BCLC char(3) not null,
	Bname varchar(20) not null,
	Bprice numeric(5,0) not null check(Bprice>0)
)
go

--3
--創建管理員表(*職工號*,姓名,性別,郵箱)
use library
go

create table BAdmin
(
	BAdmin_ID char(11) not null primary key,
	BAname varchar(20) not null,
	BAsex char(2) not null,
	BAemail varchar(25) not null
)
go

--4
--創建借閱關係表(*讀者身份證號*,*圖書條形碼*,借出日期,歸還日期,罰金)
--完整性約束:check罰金金額,小於0爲非法
use library
go

create table Lendout
(
	RCreadit_ID char(18) not null foreign key(RCreadit_ID) references Reader(RCreadit_ID),
	Bbarcode char(6) not null foreign key(Bbarcode) references Book(Bbarcode),
	Llenddate date not null,
	Lreturndate date not null,
	Lfine numeric(5,0) not null	check(Lfine>=0)
)
go
--主鍵碼
alter table Lendout
add constraint Lendout_PK primary key(RCreadit_ID,Bbarcode)
go

--5
--創建管理關係表(*職工號*,*圖書條形碼*,庫存餘量)
use library
go

create table Manage
(
	BAdmin_ID char(11) not null foreign key(BAdmin_ID) references BAdmin(BAdmin_ID),
	Bbarcode char(6) not null foreign key(Bbarcode) references Book(Bbarcode),
	Mremain_num int not null check(Mremain_num>=0),
	constraint Manage_PK primary key(BAdmin_ID,Bbarcode)
)
go

--6創建購置關係表(*出版社名*,*國際標準書號*,購置數量,購入日期)
use library
go

create table Purchase
(
	Publishing_Company varchar(50) not null,
	BISBN char(13) not null,
	Purchase_Num numeric(5,0) not null check(Purchase_Num>0),
	Purchase_date datetime not null,
	constraint Purchase_PK primary key(Publishing_Company,BISBN)
)
go


--7創建提供商關係表(*國際標準書號*,出版社明,地址)
use library
go

create table Provider
(
	BISBN char(13) not null primary key,
	Publishing_Company varchar(50) not null,
	Paddr varchar(100) not null,
)
go


--創建數據庫視圖
--1創建Redaer_Book視圖,用於產生每個讀者的借書信息
use library
go

create view Redaer_Book(RCreadit_ID,Rname,Rsex,Bbarcode,Bname,Bprice,Rlendnum)
as select R.RCreadit_ID,R.Rname,R.Rsex,B.Bbarcode,B.Bname,B.Bprice,R.Rlendnum
from Reader R,Book B,Lendout L
where R.RCreadit_ID=L.RCreadit_ID and  L.Bbarcode=B.Bbarcode
go

--2
--創建讀者罰單信息視圖
use library
go

create view Reader_Fine(RCreadit_ID,Rname,Rsex,Bname,Bprice,Lfine)
as select R.RCreadit_ID,R.Rname,R.Rsex,B.Bname,B.Bprice,L.Lfine
from Reader R,Book B,Lendout L
where R.RCreadit_ID=L.RCreadit_ID and L.Bbarcode=B.Bbarcode
go

--3創建視圖,產生讀者借書信息
use library
go
create view Reader_Lendout(RCreadit_ID,Rname,Rsex,Rlendnum,Llenddate,Lreturndate)
as select R.RCreadit_ID,R.Rname,R.Rsex,R.Rlendnum,L.Llenddate,L.Lreturndate
from Reader R,Lendout L
where R.RCreadit_ID=L.RCreadit_ID
go


執行結果



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章