每日农产品价格行情管理系统文档格式.docx
《每日农产品价格行情管理系统文档格式.docx》由会员分享,可在线阅读,更多相关《每日农产品价格行情管理系统文档格式.docx(33页珍藏版)》请在冰豆网上搜索。
1.
数据项
数据结构:
2.数据结构:
3.数据存储
五.数据库实现
1.数据库表定义
每日农产品价格管理系统
createdatabase每日农产品价格管理系统
供应商表(Supplier)
字段名
字段类型
长度
主键
字段值约束
对应中文名
SupID
varchar
10
P
Notnull
供应商编号
SupName
Varchar
25
供应商名称
Suparea
50
供应商地址
SupStyle
Int
供应商类型
SupPhone
20
Notnull
联系方式
SupPW
16
供应商密码
createtableSupplier
(
SupIDvarchar(10)notnullprimarykey,
SupNamevarchar(25)notnull,
SupAreavarchar(50)notnull,
SupStyleintnotnull,
SupPhonevarchar(20)notnull,
SupPWVarchar(16)notnull,
)
农产品信息表(ProductInfo)
ProductID
农产品编号
ProductStyle
农产品类别
ProductName
产品名称
ProductOrigin
产地
ProductPrice
Money
产品价格
DistID
销售商编号
createtableProductInfo
ProductIDvarchar(10)notnullprimarykey,
ProductStylevarchar(10)notnull,
ProductNamevarchar(50)notnull,
ProductOriginvarchar(20)notnull,
ProductPricemoneynotnull,
SupIDvarchar(10)notnullforeignkeyreferencesSupplier(SupID),
DistIDvarchar(10)notnullforeignkeyreferencesDistributer(DistID),
用户表(UserInfo)
UserID
用户编号
UserName
用户名称
UserPW
用户密码
UserStyle
用户类型
UserPhone
UserArea
用户地址
createtableUserInfo
UserIDvarchar(10)notnullprimarykey,
UserNamevarchar(25)notnull,
UserPWvarchar(16)notnull,
UserStyleintnotnull,
UserPhonevarchar(20)notnull,
UserAreavarchar(50)notnull,
销售商表(Distributer)
DistName
销售商名称
Distarea
销售商地址
DistStyle
销售商类型
DistPhone
DistPW
NotNull
销售商密码
createtableDistributer
DistIDvarchar(10)notnullprimarykey,
DistNamevarchar(25)notnull,
Distareavarchar(50)notnull,
DistStyleintnotnull,
DistPhonevarchar(20)notnull,
DistPWvarchar(16)notnull,
分类汇总表(C_Summery)
C_No
分类汇总编号
商品类型
商品名称
Higest_Price
最高价
Lowest_Price
最低价
Bulk_Price
大宗价
Ave_Price
平均价
createtableC_Summery
C_Novarchar(10)notnullprimarykey,
Higest_Pricemoneynotnull,
Lowest_Pricemoneynotnull,
Bulk_Pricemoneynotnull,
Ave_Pricemoneynotnull,
ProductIDvarchar(10)notnullforeignkeyreferencesProductInfo(ProductID),
2.数据库关系图
3.触发器的编写
1、CREATETRIGGERUserInfo_delete1
ONUserInfo
forDelete
ASbegin
deleteDistributer
fromDistributerdt,deletedd
wheredt.DistID=d.UserID
END
GO
/*在用户表中删除用户的同时将销售商表中对应的信息删除掉*/
2、CREATETRIGGERUserInfo_delete
deleteSupplier
fromSuppliersp,deletedd
wheresp.SupID=d.UserID
End
Go
/*在用户表中删除用户的同时将供应商表中的对应的信息删除掉*/
3、CREATETRIGGERUserInfo_insert
forinsert
AS
declare@UserIDvarchar(10),
@UserNameVarchar(25),
@UserPWVarchar(16),
@UserStyleInt,
@UserPhoneVarchar(20),
@UserAreaVarchar(50)
select@UserID=UserID,
@UserName=UserName,
@UserPW=UserPW,
@UserStyle=UserStyle,
@UserPhone=UserPhone,
@UserArea=UserArea
frominsertedwhereUserStyle='
001'
orUserStyle='
002'
begin
insertintoSupplier(SupID,SupName,SupPW,SupPhone,SupStyle,SupArea)
values(@UserID,@UserName,@UserPW,@UserPhone,@UserStyle,@UserArea)
/*当在用户表中插入的信息中“用户类型”为“001”或“002”时,在供应商表中插入相同的信息*/
4、CREATETRIGGERUserInfo_insert1
FrominsertedwhereUserStyle='
003'
004'
insertintoDistributer(DistID,DistName,DistPW,DistPhone,DistStyle,DistArea)
/*当在用户表中插入的信息中“用户类型”为“003”或“004”时,在销售商表中插入相同的信息*/
5、CREATETRIGGERUserInfo_update
ONUserInfo
forUPDATE
ifUpdate(UserID)
BEGIN
UpdateSupplier
setSupID=i.UserID
fromSuppliersp,deletedd,insertedi
/*在用户表更新用户信息时将供应商表中相应的信息进行同步更新*/
6、CREATETRIGGERUserInfo_update1
UpdateDistributer
setDistID=i.UserID
fromDistributerdt,deletedd,insertedi
wheredt.DistID=i.UserID
/*在用户表更新用户信息时将销售商表中相应的信息进行同步更新*/
7、CREATETRIGGERProduct_delete
ONProductInfo
deleteC_Summery
fromC_Summerycs,deletedd
wherecs.ProductName=d.ProductName
/*在用户表删除农产品信息时将汇总表中相应的信息进行删除*/
8、CREATETRIGGERProduct_update
ONProductInfo
forupdate
updateC_Summery
setProductName=i.ProductName
fromC_Summerycs,deletedd,insertedi
/*在用户表更新农产品信息时将汇总表中相应的信息进行同步更新*/
4.存储过程
概述:
以下所有的存储过程:
插入:
表示插入一条新记录(如果记录已经存在,则插入失败)。
修改:
表示修改一条记录(如果记录存在则修改,否则不能修改)
删除:
表示删除一条记录(如果记录存在则删除,否则不能删除在此,我没有考虑到级联关系,感觉删除这个过程用触发器做比较好,因此,删除应由触发器实现。
)。
查询:
表示查询记录(根据查询条件,显示相应的查询结果)
供应商表的存储过程:
1.插入(如果该记录号已经存在,则不能再插入)
Ifexists(selectnamefromsysobjectswherename='
add_Supplier'
Dropprocedureadd_Supplier
createprocedureadd_Supplier
@SupIDvarchar(10),
@SupNamevarchar(25),
@Supareavarchar(50),
@SupStyleint,
@SupPhonevarchar(20),
@SupPWvarchar(16)
As
Begintransaction
InsertintoSuppliervalues(@SupID,@SupName,@Suparea,@SupStyle,@SupPhone,@SupPW)
If(@@error!
=0)
Begin
Rollbacktransaction
Else
Committransaction
测试执行上述存储过程
Use每日农产品价格管理
Execadd_Supplier@SupID='
5'
@SupName='
2'
@Suparea='
3'
@SupStyle=12,@SupPhone='
4'
@SupPW='
123'
2.修改(根据记录号进行修改,如果记录号不存在则不能修改。
修改时,每个字段都不能为空,不然修改不了)
edit_Supplier'
Dropprocedureedit_Supplier;
Createprocedureedit_Supplier
UpdateSuppliersetSupName=@SupName,Suparea=@Suparea,SupStyle=@SupStyle,SupPhone=@SupPhone,SupPW=@SupPWwhereSupID=@SupID;
调用修改存储过程:
use每日农产品价格管理
Execedit_Supplier@SupID='
aa'
@SupStyle=10,@SupPhone='
123654'
@SupPW='
111'
3.删除(我只是做了个简单的对单个表的记录进行删除)
del_Supplier'
Dropproceduredel_Supplier;
Createproceduredel_Supplier
@SupIDvarchar(10)
DeletefromSupplierwhereSupID=@SupID
If(@@error!
调用删除存储过程:
Execdel_Supplier@SupID='
4.查询(根据查询条件,显示结果。
条件可以是多个字段的)
select_Supplier'
Dropprocedureselect_Supplier
go
Createprocedureselect_Supplier
Declare@wherevarchar(100)
Declare@sqlvarchar(150)
SET@where='
@@ERROR=0'
If(@SupID<
>
'
set@where=@where+'
and'
+'
SupID='
+@SupID
if(@SupName<
SupName='
+@SupName
if(@Suparea<
Suparea='
+@Suparea
if(@SupStyle<
SupStyle='
+CONVERT(VARCHAR(10),@SupStyle)
if(@SupPhone<
SupPhone='
+@SupPhone
if(@SupPW<
SupPW='
+@SupPW
set@sql='
Select*fromSupplierwhere'
+@where
PRINT'
+@sql
END
begintransaction
exec(@sql)
If(@@error<
0)
调用查询存储过程:
Execselect_Supplier@SupID='
@SupStyle='
12'
@SupPhone='
(×
×
表示具体值。
也可以为空,表示该字段没有要求)
农产品信息表的存储过程(ProductInfo)
1.插入(如果该记录号已经存在,则不能再插入)
add_ProductInfo'
Dropprocedureadd_ProductInfo;
Createprocedureadd_ProductInfo
@ProductIDvarchar(10),
@ProductStylevarchar(10),
@ProductNamevarchar(50),
@ProductOriginvarchar(20),
@ProductPriceMoney,
@DistIDvarchar(10)
InsertintoProductInfovalues(@ProductID,@ProductStyle,@ProductName,@ProductOrigin,@ProductPrice,@SupID,@DistID)
Rollba