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;
目录
相关文章
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
Java 关系型数据库 MySQL
Java汽车租赁系统源码(含数据库脚本)
Java汽车租赁系统源码(含数据库脚本)
717 4
|
NoSQL Java API
在Java环境下如何进行Redis数据库的操作
总的来说,使用Jedis在Java环境下进行Redis数据库的操作,是一种简单而高效的方法。只需要几行代码,就可以实现复杂的数据操作。同时,Jedis的API设计得非常直观,即使是初学者,也可以快速上手。
514 94
|
前端开发 Java 关系型数据库
基于ssm的考研图书电子商务平台,附源码+数据库+论文
考研图书电子商务平台是一个基于Java的B/S架构系统,适用于Windows环境。该平台设有管理员和用户权限,管理员可管理商品、用户、留言板及订单,用户可管理收货地址、订单、收藏及购买商品。技术框架包括前端Vue+HTML+JavaScript+CSS+LayUI,后端SSM,数据库为MySQL。项目包含17个数据库表,支持Maven构建。提供演示视频和详细文档,支持免费远程调试安装,确保顺利运行。
275 13
基于ssm的考研图书电子商务平台,附源码+数据库+论文
|
前端开发 JavaScript Java
[Java计算机毕设]基于ssm的OA办公管理系统的设计与实现,附源码+数据库+论文+开题,包安装调试
OA办公管理系统是一款基于Java和SSM框架开发的B/S架构应用,适用于Windows系统。项目包含管理员、项目管理人员和普通用户三种角色,分别负责系统管理、请假审批、图书借阅等日常办公事务。系统使用Vue、HTML、JavaScript、CSS和LayUI构建前端,后端采用SSM框架,数据库为MySQL,共24张表。提供完整演示视频和详细文档截图,支持远程安装调试,确保顺利运行。
565 17
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
2639 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
人工智能 JavaScript 关系型数据库
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
579 14
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
|
人工智能 JavaScript 安全
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
930 13
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
|
SQL Java 关系型数据库
使用 JDBC 实现 Java 数据库操作
JDBC(Java Database Connectivity)是 Java 提供的数据库访问技术,允许通过 SQL 语句与数据库交互。本文详细介绍了 JDBC 的使用方法,包括环境准备、编程步骤和完整示例。
1337 7
|
SQL Java 数据库连接
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
2071 6