- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《数据库系统原理》课程设计报告
学号: 姓名: 班级:
1.需求分析(业务规则)
生产管理系统的业务规则如下:
(1)一件产品可以由多个零件组成,一个零件可以组装多件不同的产品。
(2)一件产品可以使用多种材料,一种材料可以用于多件不同的产品。
(3)一个零件可以消耗多种材料,一种材料可以用于多个不同的零件。
(4)一个仓库可以存放多种材料,一种材料可以存放在多个仓库中。
2.概念结构设计(E-R图)
(1)实体集:工程、零件、供应商。
(2)联系集:产品实体与零件实体之间是多对多联系“组装”,产品实体与材料实体之间是多对多联系“使用”, 零件实体与材料实体之间是多对多联系“消耗”,仓库实体与材料实体之间是一对多联系“存储”。
(3)局部E-R图
(4)全局E-R图
产品与材料之间的使用联系可由产品与零件之间的组装联系以及零件与材料之间的消耗联系推导出来,属于冗余联系,消除后得到全局E-R图。
3.逻辑结构设计(关系模式)
(1)实体集转换为关系模式
产品(产品号,产品名,价格)
零件(零件号,零件名,价格)
材料(材料号,材料名,价格)
仓库(仓库号,仓库名,地址)
(2)联系集转换为关系模式
组装(产品号,零件号,零件数)
消耗(零件号,材料号,消耗量)
存储(材料号,仓库号,存储量)
4.规范化设计(3NF)
上述7个关系中均不存在非主属性对候选码的部分函数依赖和传递函数依赖,因此均已达到3NF要求,不需要进一步分解。
5.创建数据库(SQL脚本)
CREATE DATABASE 生产管理
GO
USE 生产管理
CREATE TABLE 产品
( 产品号 INT,
产品名 CHAR(10),
价格 INT,
PRIMARY KEY(产品号)
)
CREATE TABLE 零件
( 零件号 INT,
零件名 CHAR(10),
价格 INT,
PRIMARY KEY(零件号)
)
CREATE TABLE 材料
( 材料号 INT,
材料名 CHAR(10),
价格 INT,
PRIMARY KEY(材料号)
)
CREATE TABLE 仓库
( 仓库号 INT,
仓库名 CHAR(10),
地址 CHAR(10),
PRIMARY KEY(仓库号)
)
CREATE TABLE 组装
( 产品号 INT,
零件号 INT,
零件数 INT,
PRIMARY KEY (产品号,零件号),
FOREIGN KEY (产品号) REFERENCES 产品(产品号),
FOREIGN KEY (零件号) REFERENCES 零件(零件号)
)
CREATE TABLE 消耗
( 零件号 INT,
材料号 INT,
消耗量 INT,
PRIMARY KEY (零件号,材料号),
FOREIGN KEY (零件号) REFERENCES 零件(零件号),
FOREIGN KEY (材料号) REFERENCES 材料(材料号)
)
CREATE TABLE 存储
( 材料号 INT,
仓库号 INT,
存储量 INT,
PRIMARY KEY (材料号,仓库号),
FOREIGN KEY (材料号) REFERENCES 材料(材料号),
FOREIGN KEY (仓库号) REFERENCES 仓库(仓库号)
)
GO
6.SQL编程
(1)存储过程
功能:根据指定仓库号和材料号查询指定仓库中指定材料的数量。
USE 生产管理
GO
CREATE PROCEDURE STORE @sid INT,@mid INT
AS
IF EXISTS(SELECT 仓库号 FROM 仓库 WHERE 仓库号=@sid) AND EXISTS(SELECT 材料号 FROM 材料 WHERE 材料号=@mid)
BEGIN
DECLARE @s INT
SELECT @s=存储量 FROM 存储 WHERE 仓库号=@sid AND 材料号=@mid
RETURN @s
END
ELSE
RETURN -1
GO
测试脚本:
USE 生产管理
GO
INSERT INTO 产品 VALUES(1,自行车,300)
INSERT INTO 零件 VALUES(1,链条,20)
INSERT INTO 材料 VALUES(1,钢,3000)
INSERT INTO 仓库 VALUES(1,原料库,一分厂)
INSERT INTO 组装 VALUES(1,1,1)
INSERT INTO 消耗 VALUES(1,
文档评论(0)