学校教材订购系统 数据库设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据库设计
1 引言
1.1预期的读者
学校教材发行人员、书库采购人员、教职工等。

学校教材订购系统采用的是当前流行的中小企业级数据库MySQL ,使用的版本是5.1.40。

设计的数据库全局数据库名为 textbook ,开发用的表空间名为 textbook 。

1.2目的和作用
将业务分析,系统设计中对信息的描述进一步分析并加以总计,抽象出数据库表。

对数据表做进一步分析,确定表之间的关系并最终形成数据库物理模型,以便开发人员建立物理数据库。

2数据库设计
2.1概念结构设计
概念设计以反映现实世界中的实体、属性和它们之间的关系等的原始数据形式。

图1是系统E - R 图。

教师和学生
提交
购书单
审核
教材发行人员
领书
书库
脱销教材
缺书单
领书单
返给开发票和登记
书库采购人员
属于
发放
进书通知单
领取
发给
入库
教材
n
n
n
1
n
1
n
1
1
采购
1
1
m
1
1
1
1
m
p
p
m
1
m
m
n
图1
2.2逻辑结构设计
数据库的逻辑结构设计是将各局部的E - R 图进行分解、合并后重新组织起来形成数据库全局逻辑结构,最后生成5张数据库表:
arrival_book :新书通知表,可以进行教材入库统计和生成新书通知,和textbook 表是多对 一关联。

book_order:订单表,和textbook表是多对一关联。

book_receipt:领书单表,由已付款订单生成,和book_order表是一对一关联。

lack_book:缺书通知表,和textbook表是多对一关联。

textbook:教材数据表,包括教材的一些基本信息。

arrival_book
属性名含义数据类型可否为空完整性约束
id 入库单编号int(11) 否PRIMARY KEY textbookId 入库教材编号int(11) 否FOREIGN KEY amount 入库教材数量int(11) 否
arrivalDate 入库日期varchar(20) 否
book_order
属性名含义数据类型可否为空完整性约束
id 采购单编号int(11) 否PRIMARY KEY textbookId 采购教材编号int(11) 否FOREIGN KEY purchaser 采购人varchar(20) 否
amount 采购教材数量int(11) 否
orderDate 采购日期varchar(20) 否
book_receipt
属性名含义数据类型可否为空完整性约束
id 领书单编号int(11) 否PRIMARY KEY bookOrderId 采购单编号int(11) 否FOREIGN KEY receiptNo 发票编号char(12) 否UNIQUE KEY paid 付款decimal(10,2) 否
lack_book
属性名含义数据类型可否为空完整性约束
id 缺书编号int(11) 否PRIMARY KEY textbookId 缺书教材编号int(11) 否FOREIGN KEY amount 缺书数量int(11) 否
lackDate 缺书日期varchar(20) 否
textbook
属性名含义数据类型可否为空完整性约束
id 教材编号int(11) 否PRIMARY KEY title 教材名称varchar(40) 否
tb_desc 教材描述varchar(400) 否
price 教材价格decimal(10,2) 否
amount 教材数量int(11) 否
2.3物理结构设计
信息存储结构的设计在系统的设计中至关重要,要考虑到数据冗余、系统执行效率、信息控制以及维护等方面的要求。

信息的管理离不开数据库的支持,我们小组采用的是MySQL 数据库管理系统。

数据库的物理设计主要是对数据在内存中的安排,包括对索引区、缓冲区的设计;对使用的外存设备及外存空间的组织,包括索引区、数据块的组织与划分;设置访问数据的方式方法。

需在非系统卷(操作系统所在卷以外的其他L卷)上安装 MySQL 程序及数据库文件。

内存是影响MySQL系统性能的一个重要因素,在MySQ数据库安装时进行内存设置。

2.4数据库表的创建语句
arrival_book表创建语句:
CREATE TABLE `arrival_book` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`textbookId` int(11) NOT NULL,
`amount` int(11) NOT NULL,
`arrivalDate` varchar(20) NOT NULL,
PRIMARY KEY (`id`),
KEY `textbookId` (`textbookId`),
CONSTRAINT `arrival_book_ibfk_1` FOREIGN KEY (`textbookId`) REFERENCES `textbook` (`id`)
)
book_order表创建语句:
CREATE TABLE `book_order` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`textbookId` int(11) NOT NULL,
`purchaser` varchar(20) NOT NULL,
`amount` int(11) NOT NULL,
`orderDate` varchar(20) NOT NULL,
PRIMARY KEY (`id`),
KEY `textbookId` (`textbookId`),
CONSTRAINT `book_order_ibfk_1` FOREIGN KEY (`textbookId`) REFERENCES `textbook` (`id`)
)
book_receipt表创建语句:
CREATE TABLE `book_receipt` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`bookOrderId` int(11) NOT NULL,
`receiptNo` char(12) NOT NULL,
`paid` decimal(10,2) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `receiptNo` (`receiptNo`),
KEY `bookOrderId` (`bookOrderId`),
CONSTRAINT `book_receipt_ibfk_1` FOREIGN KEY (`bookOrderId`) REFERENCES `book_order` (`id`)
)
lack_book表创建语句:
CREATE TABLE `lack_book` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`textbookId` int(11) NOT NULL,
`amount` int(11) NOT NULL,
`lackDate` varchar(20) NOT NULL,
PRIMARY KEY (`id`),
KEY `textbookId` (`textbookId`),
CONSTRAINT `lack_book_ibfk_1` FOREIGN KEY (`textbookId`) REFERENCES `textbook` (`id`)
)
textbook表创建语句:
CREATE TABLE `textbook` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(40) NOT NULL,
`tb_desc` varchar(400) DEFAULT NULL,
`price` decimal(10,2) NOT NULL,
`amount` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `title` (`title`)
)。

相关文档
最新文档