图书馆管理系统是常见的管理信息系统,考虑到系统的推广性,本系统采用SQL SERVER2000作为数据库。并且采用PowerDesigner进行数据建模,从而自动生成sql脚本。
01、数据库概念设计
**1. **数据库表设计
- 管理员表admin:管理员编号(admin_id),管理员姓名(admin_name),密码(admin_password),登录次数(logins),最后一次登录时间(lastlogin)和权限(right)。
- 读者表reader:读者编号(reader_id),读者姓名(reader_name),性别(sex),年龄(age),班级(class),最大借书量(maxborrowed)借书总量(amount)和权限(right)。
- 书籍表books:书籍编号(book_id),书名(title),作者(author),出版社(book concert),价格(price),出版时间(time),在库总量(amount),剩余量(remain)。
- 借阅信息表(borrow_information):书籍编号(book_id),读者编号(reader_id),借书时间(borrow_time),到期时间(end_time),归还时间(return_time)。
- 预订信息表:读者编号(reader_id),书籍编号(book_id),预订时间(reservation_time),取消预订时间(reservationcanceltime)。
- 书籍类型表booktype:书籍类型编号(type_id),书籍类型名称(type_name)。
- 用户权限表right:权限(right)。
**2. **图书管理系统实体之间的E-R图
▍图12.13 图书馆管理系统各实体之间的ER图
**3. **基于powerdesigner的CDM数据库模型
据库逻辑结构图如下图,该图显示了各实体的属性及各实体之间的关系。
▍图12.13 数据库逻辑结构图
02、数据字典
**1. **图书管理系统数据库表格清单
名称
代码
书库
Stack
借还书
Borrow Book
出版社
Publish
图书
Book
管理员
Adminster
读者
Reader
**2. **图书管理系统数据库表格列清单
名称
代码
读者号
ReaderID
姓名
性别
ReaderName
Sex
年龄
Age
班级
Class
管理员
Adminster
读者密码
ReaderPassword
最大借书量
Maxborrowed
索书号
BookID
出版社名称
PublishName
书库编号
StackID
ISBN
ISBN
书名
Title
作者
Author
定价
Price
关键词
Book concern
入库时间
AddTime
图书总量
Amount
在库数量
Remain
读者号
ReaderID
索书号
BookID
借出日期
BorrowTime
应还日期
SReturntime
还书日期
RReturntime
出版社名称
PublishName
地址
Address
电话
Phone
邮箱
书库编号
StackID
书库名称
StackName
书库位置
StackLocation
管理员账号
AdminID
管理员姓名
AdminName
联系电话
Phonenumber
登录密码
AdminPassword
**3. **表格书库
- 表格书库的卡片
名称
书库
代码
Stack
数据库管理系统
Sybase SQL Anywhere 11
- 实体书库的属性的清单
名称
代码
数据类型
强制性的
继承的框
书库编号
StackID
Characters (2)
TRUE
<None>书库名称
StackName
Variable characters (10)
TRUE
<None>书库位置
StackLocation
Variable characters (20)
TRUE
<None>**4. **表格借还书
- 表格借还书的卡片
名称
借还书
代码
Borrow Book
数据库管理系统
Sybase SQL Anywhere 11
- 实体借还书的属性的清单
名称
代码
数据类型
强制性的
继承的框
读者号
ReaderID
Characters (10)
FALSE
<None>索书号
BookID
Characters (10)
FALSE
<None>借出日期
BorrowTime
Date
FALSE
<None>应还日期
BorrowTime
Date
FALSE
<None>还书日期
RReturntime
Date
FALSE
<None>**5. **表格出版社
- 表格出版社的卡片
名称
出版社
代码
Publish
数据库管理系统
Sybase SQL Anywhere 11
- 实体出版社的属性的清单
名称
代码
数据类型
强制性的
继承的框
出版社名称
PublishName
Variable characters (40)
TRUE
<None>地址
Address
Variable characters (40)
TRUE
<None>电话
Phone
Variable characters (15)
TRUE
<None>邮箱
Variable characters (30)
TRUE
<None>**6. **表格图书
- 表格图书的卡片
名称
图书
代码
Book
数据库管理系统
Sybase SQL Anywhere 11
- 实体图书的属性的清单
名称
代码
数据类型
强制性的
继承的框
索书号
BookID
Characters (10)
TRUE
<None>出版社名称
PublishName
Variable characters (40)
FALSE
<None>书库编号
StackID
Characters (2)
FALSE
<None>ISBN
ISBN
Variable characters (20)
TRUE
<None>书名
Title
Variable characters (40)
TURE
<None>作者
Author
Variable characters (20)
FALSE
<None>定价
Price
Money (5,2)
TRUE
<None>关键词
Book concern
Variable characters (40)
FALSE
<None>入库时间
AddTime
Date
TURE
<None>图书总量
Amount
Integer
TURE
<None>在库数量
Remain
Integer
TURE
<None>**7. **表格管理员
- 表格管理员的卡片
名称
管理员
代码
Adminster
数据库管理系统
Sybase SQL Anywhere 11
- 实体管理员的属性的清单
名称
代码
数据类型
强制性的
继承的框
管理员账号
AdminID
Characters (8)
TRUE
<None>管理员姓名
AdminName
Variable characters (10)
TRUE
<None>联系电话
Phonenumber
Variable characters (11)
TRUE
<None>登录密码
AdminPassword
Variable characters (20)
TRUE
<None>**8. **表格读者
- 表格读者的卡片
名称
读者
代码
Reader
数据库管理系统
Sybase SQL Anywhere 11
- 实体读者的属性的清单
名称
代码
数据类型
强制性的
继承的框
读者号
ReaderID
Characters (10)
TRUE
<None>姓名
ReaderName
Variable characters (8)
TRUE
<None>性别
Sex
Characters (2)
FALSE
<None>年龄
Age
Integer
FALSE
<None>班级
Class
Variable characters (10)
TRUE
<None>读者密码
ReaderPassword
Variable characters (20)
TRUE
<None>最大借书量
Maxborrowed
Integer
TRUE
<None>
编辑
▍图12.14数据库物理设计
04、数据库物理代码
role='FK_BOOK_RELATIONS_PUBLISH') then
alter table Book
delete foreign key FK_BOOK_RELATIONS_PUBLISH
end if;
if exists(select 1 from sys.sysforeignkey where role='FK_BOOK_RELATIONS_STACK') then
alter table Book
delete foreign key FK_BOOK_RELATIONS_STACK
end if;
if exists(select 1 from sys.sysforeignkey where role='FK_BORROW B_RELATIONS_READER') then
alter table "Borrow Book"
delete foreign key "FK_BORROW B_RELATIONS_READER"
end if;
if exists(select 1 from sys.sysforeignkey where role='FK_BORROW B_RELATIONS_BOOK') then
alter table "Borrow Book"
delete foreign key "FK_BORROW B_RELATIONS_BOOK"
end if;
if exists(
select 1 from sys.systable
where table_name='Adminster'
and table_type in ('BASE', 'GBL TEMP')
) then
drop table Adminster
end if;
if exists(
select 1 from sys.systable
where table_name='Book'
and table_type in ('BASE', 'GBL TEMP')
) then
drop table Book
end if;
if exists(
select 1 from sys.systable
where table_name='Borrow Book'
and table_type in ('BASE', 'GBL TEMP')
) then
drop table "Borrow Book"
end if;
if exists(
select 1 from sys.systable
where table_name='Publish'
and table_type in ('BASE', 'GBL TEMP')
) then
drop table Publish
end if;
if exists(
select 1 from sys.systable
where table_name='Reader'
and table_type in ('BASE', 'GBL TEMP')
) then
drop table Reader
end if;
if exists(
select 1 from sys.systable
where table_name='Stack'
and table_type in ('BASE', 'GBL TEMP')
) then
drop table Stack
end if;
/*==============================================================*/
/* Table: Adminster */
/*==============================================================*/
create table Adminster
(
AdminID char(8) not null,
AdminName varchar(8) not null,
Phonenumber varchar(11) not null,
AdminPassword varchar(20) not null,
constraint PK_ADMINSTER primary key (AdminID)
);
/*==============================================================*/
/* Table: Book */
/*==============================================================*/
create table Book
(
BookID char(10) not null,
PublishName varchar(40) null,
StackID char(2) null,
ISBN varchar(20) not null,
Title varchar(40) not null,
Author varchar(20) null,
Price numeric(5,2) not null,
"Book concern" varchar(40) null,
AddTime date not null,
Amount integer not null,
Remain integer not null,
constraint PK_BOOK primary key (BookID)
);
/*==============================================================*/
/* Table: "Borrow Book" */
/*==============================================================*/
create table "Borrow Book"
(
ReaderID char(10) null,
BookID char(10) null,
BorrowTime date null,
SReturntime date null,
RReturntime date null
);
/*==============================================================*/
/* Table: Publish */
/*==============================================================*/
create table Publish
(
PublishName varchar(40) not null,
Address varchar(40) not null,
Phone varchar(15) not null,
"E-mail" varchar(30) not null,
constraint PK_PUBLISH primary key (PublishName)
);
/*==============================================================*/
/* Table: Reader */
/*==============================================================*/
create table Reader
(
ReaderID char(10) not null,
ReaderName varchar(8) not null,
Sex char(2) null,
Age integer null,
Class varchar(10) not null,
ReaderPassword varchar(20) not null,
Maxborrowed integer not null,
constraint PK_READER primary key (ReaderID)
);
/*==============================================================*/
/* Table: Stack */
/*==============================================================*/
create table Stack
(
StackID char(2) not null,
StackName varchar(10) not null,
StackLocation varchar(20) not null,
constraint PK_STACK primary key (StackID)
);
alter table Book
add constraint FK_BOOK_RELATIONS_PUBLISH foreign key (PublishName)
references Publish (PublishName)
on update restrict
on delete restrict;
alter table Book
add constraint FK_BOOK_RELATIONS_STACK foreign key (StackID)
references Stack (StackID)
on update restrict
on delete restrict;
alter table "Borrow Book"
add constraint "FK_BORROW B_RELATIONS_READER" foreign key (ReaderID)
references Reader (ReaderID)
on update restrict
on delete restrict;
alter table "Borrow Book"
add constraint "FK_BORROW B_RELATIONS_BOOK" foreign key (BookID)
references Book (BookID)
on update restrict
on delete restrict;
版权归原作者 TiAmo zhang 所有, 如有侵权,请联系我们删除。