数据库-课程设计

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

实验八数据库设计

一、题目

第1题:网上书店系统

基本要求:

1、系统用户由二类组成:管理员和客户;

2、管理员负责后台管理:

图书信息的维护(增、删、改),图书要进行分类管理;

客户信息的维护

订单的确认和删除

3、客户可以查询图书的基本信息,可以维护自己的信息,可以进行网上订书,可以查询订单处理的情况。

二、数据库设计要求

在数据库设计中应考虑如下因素:

(1)数据库的逻辑模型应能满足系统的基本需求;

(2)数据库的逻辑模型应符合关系数据的规范化要求;

(3)数据库表应具有基本的完整性约束;

数据库设计实验结果如下:(另附纸完成内容)

1、系统E-R模型

2、数据库表的基本结构(用表格方式表示,参照实验2中给出的表的基本结构说明)

3、视图、触发器、存储过程、事务等设计。(可根据需要设计)

4、数据表、视图等的实现即创建语句

三、解答

1、需求分析

(1)、系统用户由二类组成:管理员和客户;

(2)、管理员负责后台管理:

图书信息的维护(增、删、改),图书要进行分类管理; 客户信息的维护 订单的确认和删除

(3)、客户可以查询图书的基本信息,可以维护自己的信息,可以进行网上订书,可以查 询订单处理的情况。 2 概念设计,绘制ER 图

系统有五个实体:管理员、客户、书本、订单

客户的属性有:客户号,客户积分,个人资料,登入密码 书本的属性有:书的编号,书名,类别,出版社,价格 订单的属性有:订单的编号,书本数量,总价格

管理员的属性有:管理员号,登录密码

一位客户可以选择多本书,一本书可以被多个客户选择 一个客户可以创立多个订单,一个订单只能被一个客户创立

客户

订单书本

管理员

选择创建

M N

1

J

客户号

登入密码

书本号

个人资料

客户积分

价格出版社

类别

书名

订单号总价格

书本数量

登入密码

管理员号

3、逻辑设计,将ER图转换为关系模式等

客户(客户号,客户积分,个人资料,登入密码)

书本(书的编号,书名,类别,出版社,价格)

订单(订单的编号,书本数量,总价格)

选择(客户号,书本号)

创建(客户号,订单号)

管理员(管理员名,登入密码)

说明:以上各个关系模式的范式均达到3NF等级,实际上均达到了BCNF

为方便,用英语的简称为表名和列名取名,确定列的数据类型,以及必要的约束规则,给出如下数据库表的基本结构及说明:

(1)客户表Member:

(2)书本表Book:

(3)选书表Select:

(4)订单表Order

(5)管理员表admin

需要创建学号平均成绩视图以方便使用

4、物理设计

为Bname列添加索引,以便加快对书本的查询速度5、数据库实施:创建表等。

创建表:

客户表:

Create table Member

MNO char(7) primary key,

MINTEGRAL char(10),

MDATE char(200),

MPassword char(20),

}

书本表

Create table Book

{

BNO char(7) primary key,

BNAME varchar(20),

BCATEGORY char(20),

BPRESS char(20),

BPRICE SMAILLINT check(BPRICE>0),

}

选书表

Create table select

MNO char(7) ,

BNO char(10),

PRIMARY KEY (Mno,Bno),

FOREIGN KEY (Mno) REFERENCES Member(Mno), FOREIGN KEY (Bno) REFERENCES Book(Bno)

}

订单表

Create table order

ONO char(7) primary key,

ONUMBER SMILLINT CHECK(NUMBER>0)

OPRICE SMILLINT CHECK(OPRICE>0)

}

管理员表

CREATE TABLE Admin(

adminname varchar(20) PRIMARY KEY,

Apassword varchar(20) NOT NULL

)

为每个表添加一条示例数据( 注意添加的先后次序):

insert into member values (‘M088’,’20’,’神说世界需要和平’,'123456')

insert into book values (‘B001’,’钢铁是怎样练成的’,’小说’,’中国文学出版社’,’56’) insert into select values (‘M088’,‘B001’)

insert into order values (‘O002’,’3’,’99’)

insert into admin values (‘admin’,’123456’)

创建书本Bookname索引

Create index idxBname on Book(Bname)

创建必要的触发器

定义一个触发器,其基本功能是在select表中增加或修改一个选书记录时,检查该书的购买人数是否超过库存量,若超过库存量,则拒绝操作。

触发器代码:

CREATE TRIGGER trig1 ON SELECT

FOR INSERT,UPDATE

AS

IF(SELECT COUNT(*) FROM select WHERE BNO=(select BNO from INSERTED))>10

BEGIN

PRINT '该书已无库存'

ROLLBACK

END

相关文档
最新文档