实验4推荐文档.docx
- 文档编号:5750556
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:15
- 大小:88.67KB
实验4推荐文档.docx
《实验4推荐文档.docx》由会员分享,可在线阅读,更多相关《实验4推荐文档.docx(15页珍藏版)》请在冰豆网上搜索。
实验4推荐文档
实验四数据库设计
实验项目名称:
数据库设计
实验项目性质:
综合型
所属课程名称:
《数据库原理》
实验计划学时:
4
1、实验目的
学习数据库原理及应用目的就是能创建和管理一个真实的数据库,通过规划设计一个小型数据库系统。
让学生掌握数据库规划设计的基本技术,熟悉数据库的设计的基本方法和步骤,明白数据库设计各阶段的任务,加深对数据库系统概念和特点的理解。
2、实验内容和要求
根据你熟悉的实际情况,选一个小型的数据库应用项目,销售管理系统,进行系统分析和数据库设计。
要求:
1、规划设计一个小型系统的数据库,按照给定要求,对各设计阶段进行描述,要求给出数据库设计的E-R图,并将E-R图转换成相应的模型,编制SQL命令脚本。
2、要求:
数据库结构严谨、基本表及属性合理、各种约束条件正确。
3、涉及的内容或知识点:
数据库设计的需求分析、数据模型、关系规范化理论。
4、采用的方法和手段:
设计数据模型、进行关系规范化处理和用软件实现数据库的构建。
3、实验主要仪器设备和材料
1.计算机及操作系统:
PC机,Windowsxp;
2.数据库管理系统:
SQLserver2005;
4、实验设计
a)系统需求分析:
通过信息建模的方式
销售管理系统的实体有:
●客户属性有客户号,客户名称,客户电话,客户地址
●供应商属性有供应商号,供应商名称,供应商电话,供应商地址,供应商品类型
●商品属性有商品号,商品名称,商品数量,商品类型,商品单价
●订单属性有订单号,订购客户,订购商品,订购数量,订购总价
●商品类型属性有商品类型号,商品类型名
●信誉等级属性有客户号,信誉度
实体间的联系如下:
1.一个客户可以下多个订单,一个订单对应一个客户,所以,客户与订单之间是1对多的关系。
2.一个客户对应一个信誉等级,所以,客户与信誉等级之间是1对1的关系。
3.一个供应商可以提供多个商品,一个商品对应一个供应商,所以,供应商与商品之间的关系式1对多的关系。
4.一个商品类型包括多个商品,一个商品包含在一个商品类型里边,所以,商品类型与商品之间的关系式1对多的关系。
5.一个订单可以订购多个商品,一个商品可以被多个订单订购,所以,订单和商品之间的关系式多对多的关系。
6.一个供应商对应多个商品类型,一个商品类型对应多个供应商,所以,供应商和商品类型之间为多对多的关系。
b)下面给出销售管理系统的E-R图:
c)所需数据库表
创建customer表(客户表)
字段名
代码
类型
约束
客户号
Cno
Char(8)
主键
客户名称
Cname
Char(8)
非空
客户电话
Cphone
Char(11)
客户地址
Caddress
Char(40)
创建supplier表(供应商表)
字段名
代码
类型
约束
供应商号
Sno
Char(7)
主键
供应商名称
Sname
Char(8)
非空
供应商电话
Sphone
Char(11)
供应商地址
Saddress
Char(40)
供应商品类型
Gtype
Char(6)
外键
创建goods表(商品信息表)
字段名
代码
类型
约束
商品号
Gno
Char(10)
主键
商品名称
Gname
Char(20)
非空
商品数量
Gamount
Char(10)
商品类型
Gtype
Char(6)
外键
商品供应商
Sno
Char(7)
外键
商品单价
Gprice
Char(10)
创建orader表里(订单表)
字段名
代码
类型
约束
订单号
Ono
Char(8)
主键
订购商品
Gno
Char(10)
外键,非空
订购客户
Cno
Char(8)
外键,非空
订购数量
Oamount
Char(8)
非空
订购总价
Oprice
Char(10)
创建creditgrade表(信誉等级表)
字段名
代码
类型
约束
客户号
Cno
Char(8)
主键,与customer表中Cno外键关联,级联删除
信誉度
Credit
Char(4)
创建goodstype表(商品类型表)
字段名
代码
类型
约束
商品类型号
Gtype
Char(6)
主键
商品类型名
Gtypename
Char(20)
非空
d)创建数据库和表。
1、创建数据库代码:
CREATEDATABASESALES;
2、创建表
创建customer表:
USESALES
GO
CREATETABLEcustomer
(
Cnochar(8)PRIMARYKEY,
Cnamechar(8)UNIQUE,
Cphonechar(11),
Caddresschar(40)
);
查询视图SQL语句及执行结果截图
创建supplier表:
USESALES
GO
CREATETABLEsupplier
(
Snochar(7)PRIMARYKEY,
Snamechar(8)UNIQUE,
Sphonechar(11),
Saddresschar(40),
Gtypechar(6),
FOREIGNKEY(Gtype)REFERENCESgoodstype(Gtype)
);
查询视图SQL语句及执行结果截图
创建goods表:
USESALES
GO
CREATETABLEgoods
(
Gnochar(10)PRIMARYKEY,
Gnamechar(20)UNIQUE,
Gamountchar(10),
Gtypechar(6),
Snochar(7),
FOREIGNKEY(Gtype)REFERENCESgoodstype(Gtype),
FOREIGNKEY(Sno)REFERENCESsupplier(Sno)
);
查询视图SQL语句及执行结果截图
创建orader表里:
USESALES
GO
CREATETABLEorader
(
Onochar(8)PRIMARYKEY,
Gnochar(10)UNIQUE,
Cnochar(8)UNIQUE,
Oamountchar(6)UNIQUE,
FOREIGNKEY(Gno)REFERENCESgoods(Gno),
FOREIGNKEY(Cno)REFERENCEScustomer(Cno)
);
查询视图SQL语句及执行结果截图
创建creditgrade表:
USESALES
GO
CREATETABLEcreditgrade
(
Cnochar(8)PRIMARYKEY,
Creditchar(4),
FOREIGNKEY(Cno)REFERENCEScustomer(Cno)
ONDELETECASCADE
ONUPDATECASCADE
);
查询视图SQL语句及执行结果截图
创建goodstype表:
USESALES
GO
CREATETABLEgoodstype
(
Gtypechar(6)PRIMARYKEY,
Gtypenamechar(20)UNIQUE
);
查询视图SQL语句及执行结果截图
3、数据库关系模式图:
4、插入5组数据进各个表里边
插入customer表:
USESALES
GO
INSERTINTOcustomer
SELECT'20101101','小张','39343301','广州市'
UNIONALL
SELECT'20101102','小李','39342211','广州市'
UNIONALL
SELECT'20101103','小新','39341105','东莞市'
UNIONALL
SELECT'20101104','小红','39343310','深圳市'
UNIONALL
SELECT'20101105','小曾','39345566','广州市'
查询视图SQL语句及执行结果截图
插入supplier表:
USESALES
GO
INSERTINTOsupplier
SELECT'1111001','欧莱雅','66921234','北京市','00000'
UNIONALL
SELECT'1111002','红苹果','33942321','广州市','00004'
UNIONALL
SELECT'1111003','联想','42574321','东莞市','00002'
UNIONALL
SELECT'1111004','以纯','22008800','福州市','00003'
UNIONALL
SELECT'1111005','汇源','12005678','深圳市','00001'
查询视图SQL语句及执行结果截图
插入goods表:
USESALES
GO
INSERTINTOgoods
SELECT'000001100','爽肤水','333','00000','1111001','50'
UNIONALL
SELECT'000011100','椰汁','12450','00001','1111005','3'
UNIONALL
SELECT'000021100','手机','500','00002','1111003','700'
UNIONALL
SELECT'000031100','上衣','2000','00003','1111004','30'
UNIONALL
SELECT'000041100','床单','120','00004','1111002','40'
查询视图SQL语句及执行结果截图
插入orader表:
USESALES
GO
INSERTINTOorader
SELECT'2010101','000001100','20101101','110','5500'
UNIONALL
SELECT'2010102','000011100','20101102','2000','6000'
UNIONALL
SELECT'2010103','000021100','20101103','140','98000'
UNIONALL
SELECT'2010104','000031100','20101104','240','7200'
UNIONALL
SELECT'2010105','000041100','20101105','60','2400'
查询视图SQL语句及执行结果截图
插入creditgrade表:
USESALES
GO
INSERTINTOcreditgrade
SELECT'20101101','良好'
UNIONALL
SELECT'20101102','一般'
UNIONALL
SELECT'20101103','良好'
UNIONALL
SELECT'20101104','差'
UNIONALL
SELECT'20101105','一般'
查询视图SQL语句及执行结果截图
插入goodstype表:
USESALES
GO
INSERTINTOgoodstype
SELECT'00000','美容'
UNIONALL
SELECT'00001','食品'
UNIONALL
SELECT'00002','数码'
UNIONALL
SELECT'00003','服装'
UNIONALL
SELECT'00004','家居'
查询视图SQL语句及执行结果截图
5、创建视图:
(1)、创建一个包含广州客户信息的视图customer_guangzhou
创建视图的SQL语句:
USESALES
GO
CREATEVIEWcustomer_guangzhou
AS
SELECTCno,Cname,Cphone,Caddress
FROMcustomer
WHERECaddress='广州市'
查询视图SQL语句及执行结果截图
(2)、创建一个视图ordersum_goods,其中的内容是每种商品的名称和每种商品的订单金额的总和。
创建视图的SQL语句:
USESALES
GO
CREATEVIEWordersum_goods
AS
SELECTGname,Oprice
FROMgoods,orader
WHEREgoods.Gno=orader.Gno
查询视图SQL语句及执行结果截图
6、创建和执行存储过程
(1)、创建一个存储过程proc_hub,用来查看“hub”商品的所有订货情况
创建视图的SQL语句:
USESALES
GO
CREATEPROCEDUREproc_hub
@Gnochar(10)
AS
SELECTgoods.Gno,Gname,Oamount
FROMgoods,orader
WHEREgoods.Gno=orader.Gno
AND@Gno=goods.Gno
EXECproc_hub'000011100'
GO
查询视图SQL语句及执行结果截图
(2)、创建一个带参数的存储过程proc_gooods,参数为商品名称,通过该存储过程可查看任何指定商品订单信息。
创建视图的SQL语句:
USESALES
GO
CREATEPROCEDUREproc_goods
@gnamechar(20)
AS
SELECTGname,Oamount,Oprice
FROMgoods,orader
WHEREgoods.Gno=orader.Gno
AND@gname=goods.Gname
EXECproc_gooods'上衣'
GO
查询视图SQL语句及执行结果截图
5、遇到的问题与其解决方法
开始做需求分析和设计E-R图时花费点时间,不过还是找到各个图之间的关系。
因为一开始没注意,后边才发现需要添加商品的金额和订单的总额两个属性,又因为表已经创建好了,重新再创建过表花费时间较多,在已经了解如何添加属性的情况下,我通过数据库直接添加上去,并重新附上了代码。
订单总额可以通过商品金额乘以商品数量来计算的,不过因为做起来,数据量太大,怕修改错误,故先直接把订单的总额计算出来再入录数据库的orader表。
我发现商品的数量和订单的数量应该是有关系的,订单的数量应该不超过商品的数量,不过再数据库中不知怎么解决这一问题,后来,同学说这些可以通过程序语言来判断,故不做比较。
至于其他的一些数据库的创建,表格、视图、存储过程的创建,因为有前边3个实验的经验,没遇到太多的问题就得以解决了。
在整体上来说,本次的数据库实验并不算很好,不过,都是自己亲手做的,做的不好的,以后会慢慢改进。
6、思考题(要求完成2~3题,第1题没做)
2、数据库设计时应考虑哪些事项?
答:
1、数据库的用途及该用途将如何影响设计,应创建符合用途的数据库计划。
2、数据库规范化规则,防止数据库设计中出现错误。
3、对数据完整性的保护。
4、数据库和用户权限的安全要求。
5、应用程序的性能需求。
6、维护。
7、估计数据库大小。
3、试述数据库概念结构设计的重要性
答:
数据库概念设计师整个数据库设计的关键,将在需求分析阶段所得到的应用需求先抽象为概念结构,以此作为各种数据模型的基础,从而能更好地、更准确地用某个DBMS实现这些需求。
4、数据字典的内容和作用是什么?
答:
数据字典是系统中各类数据的最小单位,数据字典的内容包括数据项、数据结构、数据流、数据存储、处理过程5个部分。
其中,数据项是组成数据的最小单位,若干数据项可以组成一个数据结构。
数据字典是通过对数据项和数据结构的定义来描述数据流、数据存储的逻辑内容。
数据字典的作用:
数据字典是关于数据库中数据的一种描述,建立于需求分析的阶段,是下一步进行概念设计的基础,并在数据库设计过程中不断修改、充实和完善。
5、为什么要视图集成?
视图集成的方法是什么?
答:
在DBMS对DBS进行概念结构设计时一般采用自底向上的设计方法,把繁杂的大系统分解为子系统。
首先设计各子系统的局部视图,然后通过视图集成的方法,将各子系统有机融合起来,综合成一个系统的总视图,这样设计清晰有简到繁,由于数据库系统是从整体角度看待和描述数据的,因此数据不在面向某个应用而是整个系统,所以必须进行视图集成,使得数据库能被全系统的多个应用共享使用。
各子系统的分E-R图设计好以后,下一步就是要将所有的分E-R图综合成一个系统的总E-R图。
一般说,视图集成可以有两种方式:
●多个分E-R图一次集成。
●逐步集成,用累加的方式一次集成两个分E-R图。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 推荐 文档