课程论文格式规范Word格式文档下载.docx
《课程论文格式规范Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《课程论文格式规范Word格式文档下载.docx(65页珍藏版)》请在冰豆网上搜索。
要用历史数据分析养猪场的情况更是耗时耗力的工作。
设计一个对养猪场数据存储和处理的数据库可以明显的提高数据管理效率,分析发展情况,节省人力物力,提高效率。
该数据库主要包括对养猪场的饲料购买使用,肉猪的信息动态记录,销售信息记录处理。
1.需求分析
主要包括内容:
处理对象及组织;
信息处理及系统功能;
数据库系统性能需要,数据库系统开发环境需求等。
在阐述信息及其处理过程时,要辅助业务流程图、数据流程图及数据字典。
对上述三个问题可以以附录的形式详细罗列,但正文中必须指明做了哪些业务流程图、数据流程图和数据字典的规模。
顶层数据流程图:
第一层数据流程图
第二层数据流程图;
1)饲料管理数据流程图
2)肉猪管理数据流程图
3)销售管理数据流程图
2.数据库结构设计
2.1概念设计
阐述概念设计目标、任务和方法,重点介绍概念设计的内容。
概念设计目标:
根据需求分析得出的养猪场饲养销售管理数据流程图,抽象出实体分析其属性,画出局部E-R图和全局E-R图。
2.1.1分E-R图建立
阐述分E-R图建立的思想(以中层数据为切入点,按照分层次/分模块思想),用E-R模式描述。
(1)实体
数据字典见附录1
(2)分E-R图
2.1.2全局/整体E-R图
阐述全局E-R图建立的步骤,重点阐述消除冲突、冗余等过程。
如果E-R图规模较大,可以以附录形式列出。
根据数据流程图,将实体
2.2逻辑设计
阐述逻辑设计阶段目标、任务和方法,重点介绍逻辑设计的主要内容。
2.2.1建立关系模式
阐述将E-R模型转换为关系模式的基本原则和转换结果,关系模式表示形式为
供应商(供应商编号,供应商名称,供应商电话,供应商地址)
收购商(收购商编号,收购商名称,收购商电话,收购商地址)
饲料库存单(饲料编号,饲料名称,饲料库存量)
订料单(订料编号,饲料订购日期,供应商编号)
订料详单(订料编号,饲料编号,订购量)
退料单(订料编号,饲料编号,订购量)
饲料配方单(肉猪种类,饲料编号,肉猪年龄,每天饲喂量)
饲料价格信息(饲料编号,饲料价格)
取料记录(饲料编号,取料日期,取料量)
肉猪信息(肉猪编号,肉猪种类,肉猪出生日期)
肉猪价格信息(肉猪种类,肉猪价格)
出售记录(销售编号,肉猪编号,肉猪重量)
销售单(销售编号,销售日期,销售头数,销售总重,销售额,收购商编号)
2.2.2关系模式规范化处理
根据F,分析每一个关系模式是否满足3NF,对不满足3NF的关系模式要进行规范化处理。
2.2.3用户子模式建立
根据需求分析,研究建立满足不同需求的用户子模式,子模式表示形式为:
子模式名(属性列表)
可出售肉猪情况(猪编号,猪的种类)
肉猪用料信息(肉猪编号,用料编号,用料量)
存料信息(饲料编号,重量,供应商,时间)
猪成长天数(肉猪编号,种类,成长天数)
2.2.4关系模式逻辑结构定义
对每个关系模式要以表格形式描述其具体内容。
若涉及的关系模式较多,可以在正文中先用表格反映关系模式名称、含义和备注(备注指明关系模式附录编号)
养猪场饲养管理关系模式汇总
编号
关系名称
模式说明
T-1
Supplier(详见附录2-1)
(详见附录2-1)
T-2
Buyer(详见附录2-2)
(详见附录2-2)
T-3
Feed(详见附录2-3)
(详见附录2-3)
T-4
FeedF(详见附录2-4)(不再使用)
(详见附录2-4)
T-5
FeedFD(详见附录2-5)
(详见附录2-5)
T-6
FeedRF(详见附录2-6)
(详见附录1-6)
T-7
Formula(详见附录2-7)
(详见附录2-7)
T-8
FPriceInfor(详见附录2-8)
(详见附录2-8)
T-9
FeedUse(详见附录2-9)
(详见附录2-9)
T-10
Pig(详见附录2-10)
(详见附录2-10)
T-11
PPriceInfor(详见附录2-11)
(详见附录2-11)
T-12
SaleForm(详见附录2-12)
(详见附录2-12)
T-13
DeliveryForm(详见附录2-13)
(详见附录2-13)
猪场饲养销售管理系统关系外模式汇总
序号
视图名称
作用
备注(如有其他说明请写在备注栏)
1
V_PigCSale
可出售的肉猪的情况
包括猪的编号,种类
2
V_PigCSCount
可出售肉猪各种类的头数
肉猪种类,头数
3
V_PigFeed
肉猪用料信息
肉猪编号,用料编号,用料量,(每天)
5
V_PigAge
猪的成长天数
肉猪编号,种类,成长天数
系统功能模块
3.数据库物理设计
主要包括数据存储位置、存储格式;
索引及索引类型。
如果建立的索引较多,最好以表格形式列出。
主要包括:
索引名称、索引类型和用途。
4.数据库实施与测试
4.1数据库实施
4.1.1数据库及数据库对象建立
数据库、基本表、视图、索引、触发器以及存储过程;
对于具体的DDL语句以及相关代码,请以附录形式列出。
/*1建立数据库*/
createdatabasePigFactory
/*2建立供应商信息表*/
usePigFactory
createtableSupplier
(
SupNumbervarchar(10)primarykey,
SupNamevarchar(40),
SupPhonevarchar(20),
SupAddressvarchar(40)
)
/*3建立收购商信息表*/
createtableBuyer
BuyNumbervarchar(10)primarykey,
BuyNamevarchar(40),
BuyPhonevarchar(20),
BuyAddressvarchar(40)
/*4肉猪价格信息表*/
createtablePPriceInfor
PigVarvarchar(40)primarykey,
PPricefloatcheck(PPrice>
0),
/*5建立肉猪信息表*/
createtablePig
PigNumvarchar(10)primarykey,
PigVarvarchar(40),
PigBirthDate,
foreignkey(PigVar)referencesPPriceInfor,
/*6饲料存储信息*/
createtableFeed
(
FeedNumvarchar(5)primarykey,
FeedNamevarchar(40),
FeedWeightfloatcheck(FeedWeight>
0)
)
/*7饲料配方单*/
createtableFormula
FeedNumvarchar(5),
PigAgeintcheck(PigAge>
DayFeedfloatcheck(DayFeed>
primarykey(PigVar,FeedNum,PigAge),
foreignkey(PigVar)referencesPPriceInfor(PigVar),
foreignkey(FeedNum)referencesFeed(FeedNum)
/*9订料详单订料单号不作为外键*/
go
createtableFeedFD
FeedNumvarchar(5)referencesFeed(FeedNum),
FeedBWfloatcheck(FeedBW>
=0),
SupNumbervarchar(10)referencesSupplier(SupNumber),
FeedODdate
primarykey(FeedNum,FeedOD,SupNumber)
/*10退料祥单*/
createtableFeedRD
FeedODdate,
/*11取料记录*/
createtableFeedUse
FTDateDate,
FeedWfloatcheck(FeedW>
primarykey(FTDate,FeedNum),
/*12销售记录*/
createtableDeliveryForm
DFNumvarchar(5)primarykey,
DFDateDate,
DFGintcheck(DFG>
DFWeightfloatcheck(DFWeight>
PigPricefloatcheck(PigPrice>
BuyNumbervarchar(10)referencesBuyer(BuyNumber)
)
/*13出售记录*/
createtableSaleForm
DFNumvarchar(5)referencesDeliveryForm(DFNum),
PigWeightfloatcheck(PigWeight>
0)
/*创建试图*/
/*1可出栏的肉猪信息*/
GO
createviewV_PigCSale
as
selectPigNum,PigVar
fromPig
where(PigVar='
长白'
andDatediff(DAY,PigBirth,Getdate())>
=160)
or(PigVar='
皮特兰'
andDatediff(DAY,PigBirth,Getdate())>
=150)
(出栏要求:
长白成长天数大于等于160天,皮特兰成长天数大于等于150天,这个用于出售时方便的找到可出售的肉猪)
(后来发现这个可以优化,可以用下面的肉猪成长天数信息试图来生成)
/*2肉猪成长天数信息*/
createviewV_PigAge
as
selectPigNum,PigVar,Datediff(DAY,PigBirth,Getdate())PigAge
/*3可出栏肉猪各种类的头数*/
createviewV_PigCSCount
selectPigVar,COUNT(*)count
fromV_PigCSale
groupbyPigVar
长白成长天数大于等于160天,皮特兰成长天数大于等于150天,用于对收购商的订单进行分析,看是否能接收这个订单)
/*存储过程*/
/*1死亡或出栏处理(后面的触发器来实现出售处理)*/
go
createprocP_PigOut
@numbervarchar(10)
as
delete
fromPig
wherePigNum=@number
/*2小猪入栏*/
createprocP_PigIn
@numbervarchar(10),@varvarchar(40),@birthdate
insert
intoPig
values(@number,@var,@birth)
/*3每只猪当天饲料使用*/
createprocP_Feeduse
declare@pignumbervarchar(10),@pigvarvarchar(40),@pigageint,@dayfeed1float,@dayfeed2float,@dayfeed3float
declarec1cursorforselectPigNum,PigVar,PigAgefromV_PigAge
openc1
fetchc1into@pignumber,@pigvar,@pigage
while(@@FETCH_STATUS=0)
begin
if@pigagebetween0and30
set@pigage=30
elseif@pigagebetween31and60
set@pigage=60
elseif@pigagebetween61and90
set@pigage=90
elseif@pigagebetween91and120
set@pigage=120
elseif@pigagebetween121and140
set@pigage=140
elseif@pigage>
140
set@pigage=160
set@dayfeed1=(selectDayFeed
fromFormula
wherePigVar=@pigvarandPigAge=@pigageandFeedNum='
1'
set@dayfeed2=(selectDayFeed
2'
set@dayfeed3=(selectDayFeed
3'
select@pignumber猪编号,@dayfeed1玉米,@dayfeed2麸皮,@dayfeed3饲料
fetchc1into@pignumber,@pigvar,@pigage
end
closec1
deallocatec1
/*4三种饲料每天用料总量*/
createprocP_Feed
declare@pignumbervarchar(10),@pigvarvarchar(40),@pigageint,@dayfeed1float=0,@dayfeed2float=0,@dayfeed3float=0
declareccursorforselectPigNum,PigVar,PigAgefromV_PigAge
openc
fetchcinto@pignumber,@pigvar,@pigage
set@dayfeed1=@dayfeed1+(selectDayFeed
set@dayfeed2=@dayfeed2+(selectDayFeed
set@dayfeed3=@dayfeed3+(selectDayFeed
fetchcinto@pignumber,@pigvar,@pigage
select@dayfeed1玉米,@dayfeed2麸皮,@dayfeed3饲料
closec
deallocatec
/*5得出销售的一条元组(如果要引进新的猪的种类,这个管理系统可以优化,以下的查询可以通过肉猪信息和出售记录连接来计算
这个功能可以有好多种算法*/
createprocP_Sale@salenumbervarchar(5),@supplynumbervarchar(10)
declare@weightCBfloat,@weightPTLfloat,@countint,@pricePTLfloat,@priceCBfloat
set@count=(selectcount(*)
fromSaleForm
whereDFNum=@salenumber)
set@weightCB=(selectsum(SaleForm.PigWeight)
fromPig,SaleForm
wherePig.PigNum=SaleForm.PigNumandDFNum=@salenumberandPig.PigVar='
set@weightPTL=(selectsum(SaleForm.PigWeight)
)
set@priceCB=(selectPPrice
fromPPriceInfor
wherePigVar='
set@pricePTL=(selectPPrice
insert
intoDeliveryForm
values(@salenumber,Getdate(),@count,@weightCB+@weightPTL,@weightCB*@priceCB+@weightPTL*@pricePTL,@supplynumber)
*触发器*/
/*1,肉猪出栏*/
createtriggert1onSaleForm
afterinsert
declare@numbervarchar(10),@dfnnumbervarchar(10),@pigweightfloat
select@number=PigNum,@dfnnumber=DFNum,@pigweight=PigWeightfrominserted
delete
(当在出售记录中添加一条元组即一头猪被出售,此时肉猪信息中删除该猪相对应的信息)
所以要先出售,根据可出售的肉猪情况和订单情况(没有给出工作人员自己看)出售情况如下:
向出售单里插入要出售的肉猪信息:
intoSaleForm(PigNum,DFNum,PigWeight)
values('
1007'
'
s002'
250)
1008'
256)
1009'
310)
4.1.2数据入库
供应商信息表
收购商信息表
肉猪价格信息表
肉猪信息表
饲料存储信息
饲料配方单
订料详单订料单号不作为外键
退料祥单
取料记录
销售记录
出售记录
4.2数据库测试
主要内容是对建立的数据库及数据库对象进行测试
具体要求:
(1)要设计好测试数据
(2)对测试的结果要以图片形式,同时注意图片的格式
(3)对测试结果进行分析,是否满足设计要求