五、逻辑设计5.1ER图5.2关系模型供应商(供应商编号,名称,地址,联系电话)产品(产品编号,产品名称,产品类别,售价,出厂价,存货量)供应(供应商编号,产品编号)订购(产品编号,订单编号,数量)客户(客户编号,姓名,通信地址,电话)订单(订单编号,日期,客户编号,雇员编号)雇员(雇员编号,姓名,联系电话,工资)供应商供应产品订购订单管理雇员下发客户名称地址联系电话客户编号姓名通信地址电话产品编号供应商编号产品编号产品名称产品类型产品编号订单编号订单编号雇员编号姓名联系电话供应商编号售价出厂价存货量数量日期雇员编号工资客户编号注:有下划线的表示该属性为主码。六、物理设计6.1表汇总表名功能说明表Suppliers供应商表,存储供应商的编号等信息表Product产品表,存储产品的编号、数量等信息表SP供应商产品供应表,存储供应商所供应的产品对应信息表Orders订单表,存储订单的编号、日期等信息表PO产品订购表,存储产品订购的对应信息表Employee雇员表,存储雇员的编号等信息表Customer客户表,存储客户的编号等信息6.2表[1]:[Suppliers表](供应商表)表名Suppliers(供应商表)数据库用户Sa主键Snumber其他排序字段无索引字段无序号字段名称数据类型(精度范围)允许为空Y/N唯一Y/N区别度默认值约束条件/说明1Snumberchar(12)NY高无主键/供应商号2Snamechar(30)NN中无供应商名称3Saddresschar(30)YN中无供应商地址4StelnumintYN高无供应商电话sql脚本--建立供应商表createtableSuppliers--供应商表(Snumberchar(12)primarykey,--供应商编号,主码Snamechar(30)notnull,--姓名Saddresschar(30),--地址Stelnumint--电话);6.3表[2]:[Product表](产品表)表名Product(产品表)数据库用户sa主键Pnumber其他排序字段无索引字段无序号字段名称数据类型(精度范围)允许为空Y/N唯一Y/N区别度默认值约束条件/说明1Pnumberchar(12)NY高无主键/产品编号2Pnamechar(30)NY高无产品名称3Pcategorychar(15)YN低无产品类别4PpriceintYN中无产品售价5Pex_pricerealYN中无产品出厂价6PinventoryrealYN中无产品库存量sql脚本--建立产品表createtableProduct--产品表(Pnumberchar(12)primarykey,--产品编号,主码Pnamechar(30)notnull,--产品名称Pcategorychar(15),--产品类别--Ppriceint,--售价--Pex_pricereal,--出厂价--Pinventoryreal--存货量--);6.4表[3]:[SP表](供应商产品供应表)表名SP(供应商产品供应表)数据库用户sa主键Snumber,Pnumber其他排序字段无索引字段无序号字段名称数据类型(精度范围)允许为空Y/N唯一Y/N区别度默认值约束条件/说明1Snumberchar(12)NY高无主键/供应商号2Pnumberchar(12)NY高无主键/产品编号sql脚本--建立供应商产品供应表createtableSP--供应商供应产品表--(Snumberchar(12),--供应商编号,外码Pnumberchar(12),--产品编号,外码primarykey(Snumber,Pnumber),--联合主码foreignkey(Pnumber)referencesProduct(Pnumber)ondeletecascadeonupdatecascade,foreignkey(Snumber)referencesSuppliers(Snumber)ondeletecascadeonupdatecascade);6.5表[4]:[Orders表](订单表)表名Orders(订单表)数据库用户sa主键Onumber其他排序字段无索引字段无序号字段名称数据类型(精度范围)允许为空Y/N唯一Y/N区别度默认值约束条件/说明1Onumberchar(12)NY高无主键/订单号2OdatedateNN低无订单日期3Enumberchar(12)YN中无雇员号4Cnumberchar(12)NN高无客户号sql脚本--建立订单表createtableOrders--订单表(Onumberchar(12)primarykey,--编号,主码Odatedate,--日期Enumberchar(12),--设置雇员号,外码Cnumberchar(12),--设置客户号,外码foreignkey(Cnumber)referencesCustomer(Cnumber)ondeletecascadeonupdatecascade,foreignkey(Enumber)referencesEmployee(Enumber)ondeletecascadeonupdatecascade);6.6表[5]:[PO表](产品订购表)表名PO(产品订购表)数据库用户sa主键Pnumber,Onumber其他排序字段无索引字段无序号字段名称数据类型(精度范围)允许为空Y/N唯一Y/N区别度默认值约束条件/说明1Pnumberchar(12)NY高无主键/产品号2Onumberchar(12)NY高无主键/订单号3QuantityintNN低无订购产品数量sql脚本--建立产品订购表createtablePO--产品订购表(Pnumberchar(12),--产品编号Onumberchar(12),--订单编号Quantityint,--产品数量primarykey(Pnumber,Onumber),--联合主码foreignkey(Pnumber)referencesProduct(Pnumber)--外码ondeletecascadeonupdatecascade,foreignkey(Onumber)referencesOrders(Onumber)--外码ondeletecascadeonupdatecascade);6.7表[6]:[Employee表](雇员表)表名Employee(雇员表)数据库用户sa主键Enumber其他排序字段无索引字段无序号字段名称数据类型(精度范围)允许为空Y/N唯一Y/N区别度默认值约束条件/说明1Enumberchar(12)NY高无主键/雇员号2Enamechar(10)NN中无雇员名称3EtelnumintNY高无雇员电话4EwagesrealNN低无雇员薪资sql脚本--建立雇员表createtableEmployee--雇员表(Enumberchar(12)primarykey,--编号Enamechar(10),--名字Etelnumint,--电话Ewagesreal--工资);6.8表[7]:[Customer表](客户表)表名Customer(客户表)数据库用户sa主键Cnumber其他排序字段无索引字段无序号字段名称数据类型(精度范围)允许为空Y/N唯一Y/N区别度默认值约束条件/说明1Cnumberchar(12)NY高无主键/客户表2Cnamechar(10)NN中无客户名称3Caddresschar(30)YN中无客户地址4CtelnumintYY高无客户电话sql脚本--建立客户表createtableCustomer--客户表(Cnumberchar(12)primarykey,--编号Cnamechar(10),--姓名Caddresschar(30),--地址Ctelnumint--电话);6.9视图的设计1、建立一张雇员信息的视图目的:屏蔽雇员的工资信息。功能:能够向管理员提供简明,直接的雇员信息展示。意义:有利于数据库安全的维护,防止任意修改数据库中的雇员信息。createviewview_Employee--建立Employee视图,屏蔽工资属性asselectEnumber,Ename,EtelnumfromEmployeewithcheckoption;2、建立一张产品信息的视图目的:屏蔽产品的出厂价信息。功能:能够向管理员提供简明,直接的产品信息展示。意义:有利于数据库安全的维护,防止任意修改数据库中的产品信息。createviewview_Producte--建立Product视图,屏蔽出厂价属性asselectPnumber,Pname,Pcategory,Pprice,Pinventoryfromview_Productewithcheckoption;6.10存储过程的设计1、查询订单数量功能:查询订单的数量目的:存储查询订单数量的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤createprocedureprocedure_SearchOrdersNum--查询订单的存储过程AsselectCOUNT(*)'订单总数'--查询订单数量fromOrders;2、查询客户的订单信息功能:查询客户的订单信息目的:存储查询客户的订单信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤createprocedureprocedure_CustomerOrders--查询某个客户订单信息@Cnamechar(10)asselectOnumber,Odate,EnumberfromOrders,CustomerwhereCnamelike@CnameandCustomer.CnumberlikeOrders.Cnumber;3、查询订单最多的客户信息功能:查询订单最多的客户信息目的:存储查询订单最多的客户信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤createprocedureprocedure_SearchMaxOrders--查询订单最多的客户信息asselectCnumber,Cname,Caddress,CtelnumfromOrders,CustomerwhereOrders.Cnunmer=Customer.CnunmergroupbyCnumberhavingMAX(Cnumber);4、查询客户信息功能:查询客户信息目的:存储查询客户信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤createprocedureprocedure_SearchCustomer--查询某客户信息@Cnamechar(10)asselect*fromCustomerwhereCname=@Cname;5、查询雇员信息功能:查询雇员信息目的:存储查询雇员信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤createprocedureprocedure_SearchEmployee--查询某雇员信息@Enamechar(10)asselect*fromEmployeewhereEname=@Ename;6、查询某订单对应的产品信息功能:查询某订单对应的产品信息目的:存储查询某订单对应的产品信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤createprocedureprocedure_SearchPO--查询某订单的产品信息@Onumberchar(12)asselectOnumber,Product.Pnumber,Pname,Pcategory,Pprice,Pex_price,PinventoryfromProduct,POwhereOnumber=@OnumberandPO.Pnumber=Product.Pnumber;7、查询产品信息功能:查询产品信息目的:存储查询产品信息的操作意义:下次重复同样的动作时,可直接执行存储过