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

news2024/9/25 3:29:03

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/140519.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[JavaEE] volatile与wait和notify

专栏简介: JavaEE从入门到进阶 题目来源: leetcode,牛客,剑指offer. 创作目标: 记录学习JavaEE学习历程 希望在提升自己的同时,帮助他人,,与大家一起共同进步,互相成长. 学历代表过去,能力代表现在,学习能力代表未来! 目录 一.volatile 关键字. 1.volatile 能保证内存可见性…

12个爆款 Java 开源项目

1JavaGuidehttps://github.com/Snailclimb/JavaGuide Star 10503【Java学习面试指南】 一份涵盖大部分Java程序员所需要掌握的核心知识。2symphonyhttps://github.com/b3log/symphony Star 6664一款用 Java 实现的现代化社区&#xff08;论坛/BBS/社交网络/博客&#xff09;平台…

17-Golang中的包

Golang中的包基本介绍包的三大作用相关说明包的注意事项和细节说明基本介绍 1.在实际的开发中&#xff0c;我们往往需要在不同的文件中&#xff0c;去调用其他文件的定义的幻术&#xff0c;比如main.go中&#xff0c;去使用utils.go文件中的函数2.包的本质就是创建不同的文件夹…

vue简单的数据传输

很久没有水文了&#xff0c;最近又得了新冠才好&#xff0c;学习也没什么进度&#xff0c;先复习下之前的组件的数据传输吧&#xff01; props传值 这个很简单就是在组件标签上转递数据&#xff0c;值得注意的是如果不使用v-bind:&#xff08;&#xff1a;&#xff09;,转递的…

任务二:Web隐藏信息获取

任务二:Web隐藏信息获取 任务环境说明: 服务器场景名:web20200604服务器场景用户名:未知通过本地PC中渗透测试平台Kali使用Nmap扫描目标靶机HTTP服务子目录,将扫描子目录命令所需参数及第四条扫描结果关键目录以&符号拼接,作为Flag提交(例:-p 22&/root/); …

【信息学CSP-J近16年历年真题64题】真题练习与解析 第11题之纪念品

纪念品 描述 小伟突然获得一种超能力,他知道未来 T 天 N 种纪念品每天的价格。某个纪念品 的价格是指购买一个该纪念品所需的金币数量,以及卖出一个该纪念品换回的金币数量。 每天,小伟可以进行以下两种交易无限次: 任选一个纪念品,若手上有足够金币,以当日价格购买该…

Android---DrawerLayout + NavigationView

现在 Android Studio 已经直接提供左滑菜单功能&#xff0c;只需要在创建新项目时选择 Navigation Drawer Activity 就可以直接创建一个有左滑菜单功能的 APP。 目录 DrawerLayout NavigationView android:src 与 app:srcCompat fitsSystemWindows DrawerLayout …

数据报告重要的是业务看得懂

一、前言上篇文章我们从指标库的角度梳理了指标是如何计算出来的&#xff0c;确保业务人员有数可寻&#xff0c;但对于业务人员而言&#xff0c;并不是所有的指标都看得懂&#xff0c;也不是所有的指标都需要理解&#xff0c;笔者见过太多不知所云的数据报告&#xff0c;各种模…

Maven高级-分模块拆分

Maven高级 分模块开发与设计 聚合 继承 属性 版本管理 资源配置 多环境开发配置 跳过测试 私服 分模块开发与设计 拷贝原始项目中对应的相关内容到ssm_pojo模块中 ​ 实体类&#xff08;User&#xff09; ​ 配置文件&#xff08;无&#xff09; User.java package com.i…

S32K144-S32DS 导入/编译/烧录 遇到的问题

找到你开发套件软件安装包的路径&#xff0c;里面有四个例子&#xff0c;任选一个&#xff1b;不要忘记复制到工作区 问题一&#xff1a;修改电机库的路径 问题二&#xff1a;freemaster路径问题 编译还是报错&#xff0c;好像还必须安装FreeMaster 安装之后&#xff0c;还是这…

电子招标采购系统源码:构建高效智能数字化采购

过去几十年&#xff0c;公用事业行业发生了重大变化。能源需求的转变导致企业利润率的波动&#xff0c;但不是运营成本的波动。 许多公用事业公司通过后勤部门流程自动化来削减成本&#xff0c;比如招采流程自动化。 在招采活动中&#xff0c;人工招采会产生盲点。由于公共事业…

【MySQL】MySQL视图原理与实战(MySQL专栏启动)

&#x1f4eb;作者简介&#xff1a;小明java问道之路&#xff0c;专注于研究 Java/Liunx内核/C及汇编/计算机底层原理/源码&#xff0c;就职于大型金融公司后端高级工程师&#xff0c;擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。 &#x1f4…

ArcGIS基础实验操作100例--实验51CAD转要素类

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 高级编辑篇--实验51 CAD转要素类 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff08;1&#…

多线程之线程安全问题

1.线程安全示例 class Count{int a 0;public void add(){a;} } public class ThreadDemo8 {public static void main(String[] args) {Count count new Count();Thread t1 new Thread(()->{for (int i 0; i < 5_0000; i) {count.add();}});Thread t2 new Thread(()…

这款企业报表工具给你灵活的数据查询体验

随着对BI应用程度的加深&#xff0c;用户需要连接和管理的数据越来越多&#xff0c;也越来越复杂。电子表格软件支持丰富的数据源接入&#xff0c;但一般并不能直接使用接入的业务库直接进行数据分析。所以在报表开发前的取数过程&#xff0c;把需要的数据整合成一个数据集合&a…

Ajax技术

全局刷新和局部刷新 在B/S 结构的项目中&#xff0c; 浏览器端负责把用户的请求和参数通过网络发送给服务器,服务端负责接收请求&#xff0c;并将处理的结果返回给浏览器。浏览器端负责展示响应结果给用户。 全局刷新 整个浏览器被新的数据覆盖。在网络中传输大量的数据。浏…

经历了资本的狂热追捧之后,元宇宙开始进入到相对冷静的发展阶段里

经历了资本的狂热追捧之后&#xff0c;元宇宙开始进入到相对冷静的发展阶段里。在这样一个阶段&#xff0c;元宇宙不再被看成是一个万能的存在&#xff0c;不再被看成是一个无所不包的存在&#xff0c;而是变成了一个相对较为客观和理性的存在。看看Meta的表现&#xff0c;看看…

C#语言实例源码系列-游戏-实现俄罗斯方块

专栏分享点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册 &#x1f449;关于作者 众所周知&#xff0c;人生是一个漫长的流程&#xff0c;不断克服困难&#xff0c;不断反思前进的过程。在这个过程中…

css新特性:线性渐变详解(重复性线性渐变、径向渐变、重复性径向渐变的使用)

线性渐变线性渐变重复性线性渐变径向渐变重复性径向渐变的使用线性渐变 线性渐变是向下、向上、向左、向右、对角方向的颜色渐变。 其语法格式为&#xff1a; background-image: linear-gradient(side-or-corner|angle, linear-color-stop);参数说明如下&#xff1a; side-o…

C++——二叉树OJ

目录 1.根据二叉树创建字符串 2.二叉树的层序遍历 3.二叉树的层序遍历2 4.二叉树的最近公共祖先 5. 搜索二叉树与双向链表 6.从前序与中序遍历构建二叉树 1.根据二叉树创建字符串 按照前序遍历&#xff1a;根左右。 1(2(4()())())(3()()) 1.左右都为空&#xff0c;则可…