1、2.数据构造:3.数据存储名字:分类汇总表阐明:存储产品各类信息构造: Cno(编号) ProductStyle(产品类型) ProductName(产品名称) Higest_Price(最高价) Lowest_Price(最低价) Bulk_Price(大宗价) Ave_Price(平均价)五数据库实现1.数据库表定义每日农产品价格管理系统create database 每日农产品价格管理系统供应商表(Supplier)字段名字段类型长度主键字段值约束相应中文名SupIDvarchar10PNot null供应商编号SupNameVarchar25供应商名称Suparea50供应商地址Sup
2、StyleInt供应商类型SupPhone20Not null 联系方式SupPW16供应商密码create table Supplier(SupID varchar(10) not null primary key,SupName varchar(25) not null,SupArea varchar(50) not null,SupStyle int not null,SupPhone varchar(20) not null,SupPW Varchar(16) not null,)农产品信息表(ProductInfo)ProductID农产品编号ProductStyle农产品类别Pro
3、ductName产品名称ProductOrigin产地ProductPriceMoney产品价格DistID销售商编号create table ProductInfoProductID varchar(10) not null primary key,ProductStyle varchar(10) not null,ProductName varchar(50) not null,ProductOrigin varchar(20) not null,ProductPrice money not null,SupID varchar(10) not null foreign key refer
4、ences Supplier(SupID),DistID varchar(10) not null foreign key references Distributer(DistID),顾客表(UserInfo)UserID顾客编号UserName顾客名称UserPW顾客密码UserStyle顾客类型UserPhoneUserArea顾客地址create table UserInfoUserID varchar(10) not null primary key,UserName varchar(25) not null,UserPW varchar(16) not null,UserStyle
5、 int not null,UserPhone varchar(20) not null,UserArea varchar(50) not null,销售商表(Distributer)DistName销售商名称Distarea销售商地址DistStyle销售商类型DistPhoneDistPWNot Null销售商密码create table DistributerDistID varchar(10) not null primary key,DistName varchar(25) not null,Distarea varchar(50) not null,DistStyle int no
6、t null,DistPhone varchar(20) not null,DistPW varchar(16) not null,分类汇总表(C_Summery)C_No分类汇总编号商品类型商品名称Higest_Price最高价Lowest_Price最低价Bulk_Price大宗价Ave_Price平均价create table C_SummeryC_No varchar(10) not null primary key,Higest_Price money not null,Lowest_Price money not null,Bulk_Price money not null,Ave
7、_Price money not null,ProductID varchar(10) not null foreign key references ProductInfo(ProductID),2.数据库关系图3. 触发器编写1、CREATE TRIGGER UserInfo_delete1 ON UserInfo for DeleteAS begin delete Distributer from Distributer dt,deleted d where dt.DistID=d.UserIDEND GO/*在顾客表中删除顾客同步将销售商表中相应信息删除掉*/2、CREATE TRIG
8、GER UserInfo_delete delete Supplier from Supplier sp,deleted d where sp.SupID=d.UserIDEndGo/*在顾客表中删除顾客同步将供应商表中相应信息删除掉*/3、CREATE TRIGGER UserInfo_insertfor insertAS declare UserID varchar(10), UserName Varchar(25), UserPW Varchar(16), UserStyle Int, UserPhone Varchar(20), UserArea Varchar(50) select
9、UserID=UserID, UserName=UserName, UserPW=UserPW, UserStyle=UserStyle, UserPhone=UserPhone, UserArea=UserArea from inserted where UserStyle=001or UserStyle=002begin insert into Supplier(SupID,SupName,SupPW,SupPhone,SupStyle,SupArea) values(UserID,UserName,UserPW,UserPhone,UserStyle,UserArea)/*当在顾客表中插
10、入信息中“顾客类型”为“001”或“002”时,在供应商表中插入相似信息*/4、CREATE TRIGGER UserInfo_insert1 From inserted where UserStyle=003004 insert into Distributer(DistID,DistName,DistPW,DistPhone,DistStyle,DistArea)/*当在顾客表中插入信息中“顾客类型”为“003”或“004”时,在销售商表中插入相似信息*/5、CREATE TRIGGER UserInfo_update ON UserInfofor UPDATEif Update(User
11、ID) BEGIN Update Supplier set SupID=i.UserID from Supplier sp,deleted d,inserted i/*在顾客表更新顾客信息时将供应商表中相应信息进行同步更新*/6、CREATE TRIGGER UserInfo_update1 Update Distributer set DistID=i.UserID from Distributer dt,deleted d,inserted i where dt.DistID=i.UserID/*在顾客表更新顾客信息时将销售商表中相应信息进行同步更新*/7、CREATE TRIGGER P
12、roduct_delete ON ProductInfo delete C_Summery from C_Summery cs,deleted d where cs.ProductName=d.ProductName/*在顾客表删除农产品信息时将汇总表中相应信息进行删除*/8、CREATE TRIGGER Product_update ON ProductInfofor update update C_Summery set ProductName=i.ProductName from C_Summery cs,deleted d,inserted i/*在顾客表更新农产品信息时将汇总表中相应
13、信息进行同步更新*/4. 存储过程概述:如下所有存储过程:插入:表达插入一条新记录(如果记录已经存在,则插入失败)。修改:表达修改一条记录(如果记录存在则修改,否则不能修改)删除:表达删除一条记录(如果记录存在则删除,否则不能删除在此,我没有考虑到级联关系,感觉删除这个过程用触发器做比较好,因而,删除应由触发器实现。)。查询:表达查询记录(依照查询条件,显示相应查询成果)供应商表存储过程:1插入 (如果该记录号已经存在,则不能再插入)If exists(select name from sysobjects where name =add_SupplierDrop procedure add_
14、Suppliercreate procedure add_SupplierSupID varchar(10),SupName varchar(25),Suparea varchar(50),SupStyle int,SupPhone varchar(20),SupPW varchar(16)AsBegin transactionInsert into Supplier values (SupID,SupName,Suparea,SupStyle,SupPhone,SupPW)If(error!=0)BeginRollback transactionElse Commit transaction
15、测试执行上述存储过程Use 每日农产品价格管理Exec add_Supplier SupID=5,SupName=2,Suparea=3,SupStyle=12,SupPhone=4 ,SupPW=1232修改(依照记录号进行修改,如果记录号不存在则不能修改。修改时,每个字段都不能为空,否则修改不了)edit_SupplierDrop procedure edit_Supplier ;Create procedure edit_SupplierUpdate Supplier set SupName=SupName,Suparea=Suparea,SupStyle=SupStyle,SupPho
16、ne =SupPhone,SupPW=SupPW where SupID=SupID ;调用修改存储过程:use 每日农产品价格管理Exec edit_Supplier SupID=aa,SupStyle=10,SupPhone=123654,SupPW=1113.删除(我只是做了个简朴对单个表记录进行删除)del_SupplierDrop procedure del_Supplier ;Create procedure del_SupplierSupID varchar(10)Delete from Supplier where SupID=SupID If(error!调用删除存储过程:E
17、xec del_Supplier SupID=4. 查询 (依照查询条件,显示成果。条件可以是各种字段)select_SupplierDrop procedure select_Supplier goCreate procedure select_SupplierDeclare where varchar(100)Declare sql varchar(150)SET where=ERROR=0If(SupIDset where=where+ and +SupID=+SupIDif(SupNameSupName=+SupNameif(SupareaSuparea=+Supareaif(SupS
18、tyleSupStyle=+CONVERT(VARCHAR(10),SupStyle)if(SupPhoneSupPhone=+SupPhoneif(SupPWSupPW=+SupPWset sql=Select * from Supplier where +wherePRINT +sqlENDbegin transactionexec (sql) If(error0)调用查询存储过程:Exec select_Supplier SupID=,SupStyle=12,SupPhone=(表达详细值。也可觉得空,表达该字段没有规定)农产品信息表存储过程(ProductInfo)1插入(如果该记录号已经存在,则不能再插入)add_ProductInfoDrop procedure add_ProductInfo ;Create procedure add_ProductInfoProductID varchar(10),ProductStyle varchar(10),ProductName varchar(50),ProductOrigin varchar(20),ProductPrice Money,DistID varchar(10)Begin transacti