Java高手速成 | 数据库实训:图书馆管理系统建模

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

图书馆管理系统是常见的管理信息系统考虑到系统的推广性本系统采用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

邮箱

E-mail

书库编号

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>

邮箱

E-mail

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>

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== 编辑

▍图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;
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Java数据库