.NET+SQL Server2000图书管理系统 第2页
.NET+SQL Server2000图书管理系统 第2页
四.数据库设计
4.1数据库的需求分析:
本系统使用SQL SERVER2000作为应用程序的数据库。考虑到系统的实际需求,系统至少需要四张数据库表,具体如下:
1.图书信息数据表(BOOKINFO):用于图书馆的所有已录入的书目信息,这是本系统最为关键的数据部分,包括图书号、图书名、图书作者、出版时间、索取号、价格和图书条码。
2. 名字:密码 别名: 描述:用户和管理员进入管理系统的条件. 定义:1{数字或字符}8. 位置: 管理员信息 用户信息 名字:管理员号 别名: 描述:管理员在图书馆中的惟一的标识. 定义:1{数字}5. 位置: 管理员信息 名字:借阅号 别名: 描述:用户在图书馆中借还书的惟一的标识. 定义:1{数字}8. 位置: 借阅信息 名字:用户号 别名: 描述: 此用户在图书馆中的惟一的标识. 定义:1{数字}8. 位置: 用户信息 借阅信息 名字:图书号 别名: 描述: 此书在图书馆中的惟一的标识. 定义:1{数字}8. 位置: 图书信息 借阅信息
用户信息表(USER):用户ID、用户名、密码、地址、E-MAIL、电话。
3.借阅信息表(LENDINFO):ID、用户ID、图书ID、借阅时间、归还时间、归还与否。
4.管理员信息表(MANGER):管理员ID、密码。
数字字典
名字:图书信息 别名: 描述:描述图书馆所有已录入的书目信息及该书的库存情况. 定义:图书号+图书名+图书作者+出版时间+索取号+价格+图书条码。 位置:事务 名字:管理员信息 别名: 描述:描述管理员身份和密码. 定义:管理员ID+密码。 位置:事务
4.2概念设计
4.3逻辑设计
BOOKINFO
USERS
MANGER
LENDINFO
4.4物理设计
对数据库建立索引,索引语句在SQL语句中。
Create unique index book_id ON bookinfo(bookid)
Create unique index user_id ON user(userid)
Create unique index lend_id ON lendinfo(lendid)
4.5 SQL语句的实现
创建数据库名为library
CREATE DATABASE LIBRARY
创建员工基本信息
CREATE TABLE BookInfo
( bookid int(4) NOT NULL UNIQUE ,
bookname varchar(100) ,
pubname varchar(100) ,
bookauthor varchar(50) ,
series varchar(50) ,
ISBN varchar(50) ,
SearchNO varchar(50) ,
PubDate smalldatetime(4) ,
Price float(8) ,
Barcode varchar(50)
);
CREATE TABLE LendInfo
(
LendID int(4) NOT NULL UNIQUE ,
BookID int(4) NOT NULL UNIQUE ,
UserID varchar(50) NOT NULL UNIQUE ,
LendDate smalldatetime(4) ,
ReturnDate smalldatetime(4) ,
IsBack int(4)
);
CREATE TABLE manage
(
manageid int(4) NOT NULL UNIQUE,
Pass char(10)
) ;
CREATE TABLE users
(
userid int(4) NOT NULL UNIQUE ,
username char(10) ,
pass char(10) ,
email char(50) ,
phone char(10) ,
address varchar(50) ,
BookNum int(4)
);
4.6 创建视图
创建关于书名的视图,因为查询时需要绑定。
Create view book_name
As
Select bookid,pubname,bookauthor,bookname,searchNO
FROM BOOKINFO
WHERE bookname=’ASP程序设计’;
创建关于用户名的视图,因为查询时需要绑定。
Create view user_name
As
Select userid,username,phone,address,email
FROM users
WHERE username=’
4.7 创建存储过程
创建建表的存储过程
USE LIBRARY
GO
CREATE PROCEDURE createtables
AS
CREATE TABLE BookInfo
( bookid int(4) NOT NULL UNIQUE ,
bookname varchar(100) ,
pubname varchar(100) ,
bookauthor varchar(50) ,
series varchar(50) ,
ISBN varchar(50) ,
SearchNO varchar(50) ,
PubDate smalldatetime(4) ,
Price float(8) ,
Barcode varchar(50)
);
CREATE TABLE LendInfo
(
LendID int(4) NOT NULL UNIQUE ,
BookID int(4) NOT NULL UNIQUE ,
UserID varchar(50) NOT NULL UNIQUE ,
LendDate smalldatetime(4) ,
ReturnDate smalldatetime(4) ,
IsBack int(4)
);
CREATE TABLE manage
(
manageid int(4) NOT NULL UNIQUE,
Pass char(10)
) ;
CREATE TABLE users
(
userid int(4) NOT NULL UNIQUE ,
username char(10) ,
pass char(10) ,
email char(50) ,
phone char(10) ,
address varchar(50) ,
BookNum int(4)
);
GO
4.8 创建触发器
创建关于书号和用户号的触发器,分别在BOOKINFO .USERS中修改bookid和userid时,在LENDINFO中也会有相应的修改。
CREATE TRIGGER BookidChange
ON BOOKINFO
AFTER UPDATE
AS
IF UPDATE(bookid)
BEGIN
DECLARE @book_id as int
DECLARE @old_book_id as int
SELECT @ book_id=bookid inserted
SELECT @ old_book_id =bookid deleted
Update LENDINFO
SET LENDINFO.bookid=@ book_id
WHERE LENDINFO. bookid =@ old_book_id
END
CREATE TRIGGER UserIdChanges
ON USERS
AFTER UPDATE
AS
IF UPDATE(userid)
BEGIN
DECLARE @user_id as int
DECLARE @old_user_id as int
SELECT @ user_id =userid inserted
SELECT @ old_user_id = userid deleted
Update LENDINFO
SET LENDINFO. userid =@ user_id
WHERE LENDINFO. userid =@ old_user_id
END
五、 使用ER/STUDIO完成数据库设计