图书馆管理系统是常见的管理信息系统,考虑到系统的推广性,本系统采用SQLSERVER2000作为数据库。并且采用PowerDesigner进行数据建模,从而自动生成sql脚本。
01
数据库概念设计
1.数据库表设计
读者表reader:读者编号(reader_id),读者姓名(reader_name),性别(sex),年龄(age),班级(class),最大借书量(maxborrowed)借书总量(amount)和权限(right)。
书籍类型表booktype:书籍类型编号(type_id),书籍类型名称(type_name)。
用户权限表right:权限(right)。
2.图书管理系统实体之间的E-R图
▍图12.13图书馆管理系统各实体之间的ER图
3.基于powerdesigner的CDM数据库模型
据库逻辑结构图如下图,该图显示了各实体的属性及各实体之间的关系。
▍图12.13数据库逻辑结构图
02
数据字典
1.图书管理系统数据库表格清单
名称
代码
书库
Stack
借还书
BorrowBook
出版社
Publish
图书
Book
管理员
Adminster
读者
Reader
2.图书管理系统数据库表格列清单
读者号
ReaderID
姓名
性别
ReaderName
Sex
年龄
Age
班级
Class
读者密码
ReaderPassword
最大借书量
Maxborrowed
索书号
BookID
出版社名称
PublishName
书库编号
StackID
ISBN
书名
Title
作者
Author
定价
Price
关键词
Bookconcern
AddTime
图书总量
Amount
在库数量
Remain
借出日期
BorrowTime
应还日期
SReturntime
还书日期
RReturntime
地址
Address
Phone
书库名称
StackName
书库位置
StackLocation
管理员账号
AdminID
管理员姓名
AdminName
Phonenumber
AdminPassword
3.表格书库
表格书库的卡片
数据库管理系统
SybaseSQLAnywhere11
实体书库的属性的清单
数据类型
强制性的
继承的框
Characters(2)
TRUE
Variablecharacters(10)
Variablecharacters(20)
4.表格借还书
表格借还书的卡片
实体借还书的属性的清单
Characters(10)
FALSE
Date
5.表格出版社
表格出版社的卡片
实体出版社的属性的清单
Variablecharacters(40)
Variablecharacters(15)
Variablecharacters(30)
6.表格图书
表格图书的卡片
实体图书的属性的清单
TURE
Money(5,2)
Integer
7.表格管理员
表格管理员的卡片
实体管理员的属性的清单
Characters(8)
Variablecharacters(11)
8.表格读者
表格读者的卡片
实体读者的属性的清单
Variablecharacters(8)
03
数据库物理设计
▍图12.14数据库物理设计
04
数据库物理代码
/*==============================================================*/
/*DBMSname:SybaseSQLAnywhere11*/
/*Createdon:2012/12/2322:45:05*/
role='FK_BOOK_RELATIONS_PUBLISH')then
altertableBook
deleteforeignkeyFK_BOOK_RELATIONS_PUBLISH
endif;
ifexists(select1fromsys.sysforeignkeywhererole='FK_BOOK_RELATIONS_STACK')then
deleteforeignkeyFK_BOOK_RELATIONS_STACK
ifexists(select1fromsys.sysforeignkeywhererole='FK_BORROWB_RELATIONS_READER')then
altertable"BorrowBook"
deleteforeignkey"FK_BORROWB_RELATIONS_READER"
ifexists(select1fromsys.sysforeignkeywhererole='FK_BORROWB_RELATIONS_BOOK')then
deleteforeignkey"FK_BORROWB_RELATIONS_BOOK"
ifexists(
select1fromsys.systable
wheretable_name='Adminster'
andtable_typein('BASE','GBLTEMP')
)then
droptableAdminster
wheretable_name='Book'
droptableBook
wheretable_name='BorrowBook'
droptable"BorrowBook"
wheretable_name='Publish'
droptablePublish
wheretable_name='Reader'
droptableReader
wheretable_name='Stack'
droptableStack
/*Table:Adminster*/
createtableAdminster
(
AdminIDchar(8)notnull,
AdminNamevarchar(8)notnull,
Phonenumbervarchar(11)notnull,
AdminPasswordvarchar(20)notnull,
constraintPK_ADMINSTERprimarykey(AdminID)
);
/*Table:Book*/
createtableBook
BookIDchar(10)notnull,
PublishNamevarchar(40)null,
StackIDchar(2)null,
ISBNvarchar(20)notnull,
Titlevarchar(40)notnull,
Authorvarchar(20)null,
Pricenumeric(5,2)notnull,
"Bookconcern"varchar(40)null,
AddTimedatenotnull,
Amountintegernotnull,
Remainintegernotnull,
constraintPK_BOOKprimarykey(BookID)
/*Table:"BorrowBook"*/
createtable"BorrowBook"
ReaderIDchar(10)null,
BookIDchar(10)null,
BorrowTimedatenull,
SReturntimedatenull,
RReturntimedatenull
/*Table:Publish*/
createtablePublish
PublishNamevarchar(40)notnull,
Addressvarchar(40)notnull,
Phonevarchar(15)notnull,
"E-mail"varchar(30)notnull,
constraintPK_PUBLISHprimarykey(PublishName)
/*Table:Reader*/
createtableReader
ReaderIDchar(10)notnull,
ReaderNamevarchar(8)notnull,
Sexchar(2)null,
Ageintegernull,
Classvarchar(10)notnull,
ReaderPasswordvarchar(20)notnull,
Maxborrowedintegernotnull,
constraintPK_READERprimarykey(ReaderID)
/*Table:Stack*/
createtableStack
StackIDchar(2)notnull,
StackNamevarchar(10)notnull,
StackLocationvarchar(20)notnull,
constraintPK_STACKprimarykey(StackID)
addconstraintFK_BOOK_RELATIONS_PUBLISHforeignkey(PublishName)
referencesPublish(PublishName)
onupdaterestrict
ondeleterestrict;
addconstraintFK_BOOK_RELATIONS_STACKforeignkey(StackID)
referencesStack(StackID)
addconstraint"FK_BORROWB_RELATIONS_READER"foreignkey(ReaderID)
referencesReader(ReaderID)
addconstraint"FK_BORROWB_RELATIONS_BOOK"foreignkey(BookID)