使用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