资源描述:
《数据库原理实践报告参考格式》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数据库原理实践报告学生学号:学生姓名:学生所在班级:指导教师:2011至2012年第一学期l实践任务一、编程练习假设有职工工资表:R(职工号,姓名,基本工资,附加工资,房租,水电,应发工资,税款,实发工资)缴纳个人所得税的规定如下:个人收入>5000,税率20%个人收入>2000,税率10%个人收入>800,税率5%个人收入<800,免税工资的计算方法:(1)应发工资=基本工资+附加工资(2)采取分段计算税款的算法,超出5000部分收20%,2000~5000之间部分收10%,以此类推。(3)实发工资=应发工资-税款试
2、编写一个简单SQL脚本程序,创建工资表并完成计算实发工资的任务。二、案例设计自主选择一种系统,完成需求分析、概念设计、逻辑结构设计、规范化(3NF)及数据库的创建。1.需求分析(业务规则)生产管理系统的业务规则如下:(1)一件产品可以由多个零件组成,一个零件可以组装多件不同的产品。(2)一件产品可以使用多种材料,一种材料可以用于多件不同的产品。(3)一个零件可以消耗多种材料,一种材料可以用于多个不同的零件。(4)一个仓库可以存放多种材料,一种材料可以存放在多个仓库中。2.概念结构设计(E-R图)(1)实体集:工程、零件
3、、供应商。(2)联系集:产品实体与零件实体之间是多对多联系“组装”,产品实体与材料实体之间是多对多联系“使用”,零件实体与材料实体之间是多对多联系“消耗”,仓库实体与材料实体之间是一对多联系“存储”。(3)局部E-R图产品产品号产品名价格零件零件号零件名价格材料材料号材料名价格仓库仓库号仓库名地址产品零件材料组装mn消耗mn产品材料仓库使用mn存储mn(4)全局E-R图产品与材料之间的使用联系可由产品与零件之间的组装联系以及零件与材料之间的消耗联系推导出来,属于冗余联系,消除后得到全局E-R图。产品零件组装mn材料仓库
4、存储mn存储量零件数消耗mn消耗量3.逻辑结构设计(关系模式)(1)实体集转换为关系模式产品(产品号,产品名,价格)零件(零件号,零件名,价格)材料(材料号,材料名,价格)仓库(仓库号,仓库名,地址)(2)联系集转换为关系模式组装(产品号,零件号,零件数)消耗(零件号,材料号,消耗量)存储(材料号,仓库号,存储量)4.规范化设计(3NF)上述7个关系中均不存在非主属性对候选码的部分函数依赖和传递函数依赖,因此均已达到3NF要求,不需要进一步分解。5.创建数据库(SQL脚本)CREATEDATABASE生产管理GOUSE
5、生产管理CREATETABLE产品(产品号INT,产品名CHAR(10),价格INT,PRIMARYKEY(产品号))CREATETABLE零件(零件号INT,零件名CHAR(10),价格INT,PRIMARYKEY(零件号))CREATETABLE材料(材料号INT,材料名CHAR(10),价格INT,PRIMARYKEY(材料号))CREATETABLE仓库(仓库号INT,仓库名CHAR(10),地址CHAR(10),PRIMARYKEY(仓库号))CREATETABLE组装(产品号INT,零件号INT,零件数IN
6、T,PRIMARYKEY(产品号,零件号),FOREIGNKEY(产品号)REFERENCES产品(产品号),FOREIGNKEY(零件号)REFERENCES零件(零件号))CREATETABLE消耗(零件号INT,材料号INT,消耗量INT,PRIMARYKEY(零件号,材料号),FOREIGNKEY(零件号)REFERENCES零件(零件号),FOREIGNKEY(材料号)REFERENCES材料(材料号))CREATETABLE存储(材料号INT,仓库号INT,存储量INT,PRIMARYKEY(材料号,仓库号
7、),FOREIGNKEY(材料号)REFERENCES材料(材料号),FOREIGNKEY(仓库号)REFERENCES仓库(仓库号))GO6.SQL编程说明:根据所选系统,设计功能,分别用存储过程、触发器和游标完成。(1)存储过程功能:根据指定仓库号和材料号查询指定仓库中指定材料的数量。USE生产管理GOCREATEPROCEDURESTORE@sidINT,@midINTASIFEXISTS(SELECT仓库号FROM仓库WHERE仓库号=@sid)ANDEXISTS(SELECT材料号FROM材料WHERE材料号
8、=@mid)BEGINDECLARE@sINTSELECT@s=存储量FROM存储WHERE仓库号=@sidAND材料号=@midRETURN@sENDELSERETURN-1GO测试脚本:USE生产管理GOINSERTINTO产品VALUES(1,'自行车',300)INSERTINTO零件VALUES(1,'链条',20)IN