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

简介: 图书馆管理系统是常见的管理信息系统,考虑到系统的推广性,本系统采用SQL SERVER2000作为数据库。并且采用PowerDesigner进行数据建模,从而自动生成sql脚本。

image.png

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图

image.png


▍图12.13 图书馆管理系统各实体之间的ER图

3. 基于powerdesigner的CDM数据库模型

据库逻辑结构图如下图,该图显示了各实体的属性及各实体之间的关系。

image.png


▍图12.13 数据库逻辑结构图

02、数据字典

1. 图书管理系统数据库表格清单

image.png

2. 图书管理系统数据库表格列清单

image.png


image.png


image.png

3. 表格书库

表格书库的卡片

image.png


实体书库的属性的清单

image.png

4. 表格借还书

表格借还书的卡片

image.png


实体借还书的属性的清单

image.png

5. 表格出版社

表格出版社的卡片

image.png


实体出版社的属性的清单

image.png

6. 表格图书

表格图书的卡片

image.png


实体图书的属性的清单

image.png


  1. 表格管理员

表格管理员的卡片

image.png


实体管理员的属性的清单

image.png

8. 表格读者

表格读者的卡片

image.png


实体读者的属性的清单

image.png


image.png


▍图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;
目录
相关文章
|
4天前
|
Java
学院管理系统【JSP+Servlet+JavaBean】(Java课设)
学院管理系统【JSP+Servlet+JavaBean】(Java课设)
15 3
学院管理系统【JSP+Servlet+JavaBean】(Java课设)
|
4天前
|
Java
学校教师管理系统【JSP+Servlet+JavaBean】(Java课设)
学校教师管理系统【JSP+Servlet+JavaBean】(Java课设)
12 2
|
23小时前
|
监控 前端开发 Java
Java公立医院绩效考核管理系统 医院绩效考核系统的优势有哪些? 
医院绩效管理系统解决方案紧扣新医改形势下医院绩效管理的要求,以“工作量为基础的考核方案”为核心思想,结合患者满意度、服务质量、技术难度、工作效率、医德医风等管理发展目标的考核体系,形成医院的内部绩效考核与分配机制,通过信息化手段为绩效考评管理人员实施医院绩效考评工作提供了有效工具,扩展了信息管理范围,增加了信息分析的广度与深度。这不仅使绩效评价工作更加科学化、规范化和自动化,而且从根本上改变了绩效评估工作方式,实现了绩效评价数据网络化采集,评价结果透明化管理,奖金分配数据自动化生成,极大地提高了绩效评估的全面性、准确性、时效性、公正性。从而推进医院绩效管理的专业化、规范化和精细化管理,充分发挥
13 0
|
2天前
|
存储 机器学习/深度学习 人工智能
新一代数据库技术:融合AI的智能数据管理系统
传统数据库管理系统在数据存储和查询方面已经取得了巨大的成就,但随着数据量的不断增长和应用场景的多样化,传统数据库已经难以满足日益增长的需求。本文将介绍一种新一代数据库技术,即融合了人工智能技术的智能数据管理系统。通过结合AI的强大能力,这种系统能够实现更高效的数据管理、更智能的数据分析和更精准的数据预测,为用户带来全新的数据管理体验。
|
4天前
|
Java
学校人员管理系统【JSP+Servlet+JavaBean】(Java课设)
学校人员管理系统【JSP+Servlet+JavaBean】(Java课设)
9 2
|
3天前
|
Java
个人信息管理系统【JSP+Servlet+JavaBean】(Java课设)
个人信息管理系统【JSP+Servlet+JavaBean】(Java课设)
9 0
|
4天前
|
SQL Java 关系型数据库
零基础轻松入门Java数据库连接(JDBC)
零基础轻松入门Java数据库连接(JDBC)
9 0
|
4天前
|
Java 关系型数据库 MySQL
【JAVA进阶篇教学】第八篇:Java链接MySql数据库异常
【JAVA进阶篇教学】第八篇:Java链接MySql数据库异常
|
4天前
|
SQL Java 关系型数据库
【JAVA基础篇教学】第十六篇:Java连接和操作MySQL数据库
【JAVA基础篇教学】第十六篇:Java连接和操作MySQL数据库
|
4天前
|
Oracle 关系型数据库 Java
java操作多数据源将oracle数据同步达梦数据库
java操作多数据源将oracle数据同步达梦数据库