一、实验目的
1、熟悉数据库应用系统需求分析;
2、熟悉数据库设计的基本方法;
3、掌握数据库和数据表的创建方法;
4、掌握视图的创建方法;
5、了解各种数据完整性约束;
6、对存储过程和触发器有一个完整的认识。
二、实验要求
给出网上书店管理系统的需求分析报告(见四),要求根据功能分析和数据分析设计概念模型,实现完整的数据库(包括:各种表,视图,必要的存储过程,触发器等)。
三、实验内容和步骤
1、需求分析:
一个书店中的书籍类别、数量是非常庞大的,虽然书籍的分类是非常规范,但仅仅局限于概念上的分类仍无法运用于实践当中,这就给管理人员带来了极大的工作量,因此就需要一个比较科学的管理办法来解决此问题——利用MySQL数据库来进行数据管理。
2、概要分析:
该系统主要分为两部分,一个为普通会员用户部分,亦即前台系统。另外一个是系统的管理员部分,即后台系统。网上书店前台系统部分主要是实现网上选书、购书、产生订单等功能的系统。后台实现书籍管理、用户管理、订单处理等功能。
3、开发技术:
Microsoft SQLServer 5.5.28
开发语言:SQL
开发技术:数据库开发技术
面向对象:需求者
4、系统主要功能
5、概念结构设计
系统共有6个实体:图书目录、图书库存、采购、客户、订单、发货、供应商
(1)图书目录的属性:书号、书名、作者、出版社、价格、关键字、本书的目录、封皮
(2)图书库存的属性:书号、存货量、供书商、丛书、库存存放位置
(3)采购的属性:书号、书名、出版社、供书商、数量、登记日期、顾客email
(4)客户的属性:网上ID、登录密码、名称、地址、帐户余额、信用等级
(5)订单的属性:订单号、订货日期、客户ID、书号、订书数量、金额、发货地址、发货情况
(6)供应商的属性:供应商编号、供应商基本信息、供应商供货信息、现有书目信息
6、逻辑结构设计
图书(书号,书名,出版社,价格,目录,封皮)
作者(作者名,书号,顺序号)
关键字(关键字,书号)
供应(书号,供书商)
丛书(书号,书名)
库存(书号,存货量,库存存放位置)
采购单(书号,数量,登记日期,顾客email)
客户(网上ID,登录密码,名称,地址,帐户余额,信用等级,信用额度)
订单(订单号,订货日期,客户ID,订单金额)
订单中的书(订单号,书号,数量)
发货(订单号,发货情况)
供应商(供应商编号,供应商基本信息)
供应商供货(供应商编号,供应商供货信息)
供应商现有书目(供应商编号,书号,数量)
7、细化表结构
(1)图书信息表book_info:
(2)作者信息表author_list:
(3)关键字表keywords_list:
(4)供应表provide_list:
(5)丛书情况表series_book:
(6)库存情况表reserve_info:
(7)采购表purchase_list:
(8)客户表customer_info:
(9)订单表order_list:
(10)订单中的书books_in_order:
(11)发货表delivery_info:
(12)供应商provider_list:
(13)供应商供货provider_supply:
(14)供应商现有书目provider_books:
8、创建数据库
9、创建数据表及必要的约束:
10、建立必要的视图:
11、创建必要的外键:
12、创建必要的触发器:
13、总结:
通过本次实验使我对数据库有了一个更加全面,更加深入的了解,也可以说是对本学期所学的数据库知识的一个总结,这次实验不像以前一样,只是对数据库某一部分知识的练习巩固,不仅仅是设计几张表,设计几个存储过程,触发器,而是对这些知识的一个整合,是一次综合的练习,使我对设计一个数据库的流程有了一个了解和掌握。
三、出现的问题及解决方案
问题:
ORDER BY关键字降序排序问题
SQL AND & OR 运算符与优先级问题
WHERE语句的特殊条件——例如is null、between and、like模糊查询等问题
Enum枚举类型的设定值问题
CHECK语句约束不起作用问题
解决方案:
参考《数据库系统概论课本》、菜鸟教程(https://www.runoob.com/sql)、CSDN博客和MySQL参考手册(https://dev.mysql.com/doc/)