企业仓库管理系统数据库设计2问题描述某企业为实现现代化管理准备开发一套仓库管理系统,实现如下功能:1、材料情况登记(每一材料入库前的详细情况登记)2、材料库存信息登记3、材料入库信息登记4、材料出库信息登记5、仓库信息登记现要求对“企业仓库管理系统”进行数据库的设计并实现,数据库保存在D:\project目录下,文件增长率为20%。3问题分析-1材料信息表material:列名数据类型可否为空说明Material_noVarchar(6)Notnull材料号(主键),自动产生,可修改Material_nameVarchar(20)Notnull材料名称Material_xhVarchar(6)null型号规格Material_manufactureVarchar(20)Null生产厂家Product_dwVarchar(8)Notnull单位(米、只、个)Material_priceMoneyNull参考价格(默认0)4问题分析-2材料库存信息表Material_kc:列名数据类型可否为空说明Material_idVarchar(6)NotNull材料号(主键,外键)Kc_balancefloatNull期初余额Kc_amoutfloatNull现有库存Kc_pcfloatNull盘库数量Kc_pcykfloatNull盘库盈亏(=盘库数量-现有库存)Kc_pctimeDatetimeNull盘库时间(盘库时系统自动产生,不能修改)Stor_noVarchar(2)Notnull仓库号(外键)Amout_onloadfloatNull在途数量,默认为05问题分析-3材料入库信息表Material_rk_1:列名数据类型可否为空说明Cgdd_noVarchar(7)Not采购订单号(外键),自动产生入库单号Materialrkd_noVarchar(7)Not入库单号(主键)可修改SpeopleVarchar(10)Null送货人Rk_indateDatetimeNull入库日期(自动产生可修改)Stor_noVarchar(2)Not仓库号Audit_noVarchar(6)Null审核人号Has_Auditedbitnull审核否,默认为未审核Rk_demoTextnull备注信息Make_manVarchar(6)Not制单人6问题分析-4材料入库信息表Material_rk_2:列名数据类型可否为空说明Materialrkd_noVarchar(7)Notnull入库单号(主键一,外键),可修改,但要保证一次入库单业务中的入库单号是一致的Material_idVarchar(6)Notnull材料号(主键二、外键)Rk_amoutfloatNotNull入库数量7问题分析-5材料出库信息表Material_ck_1:列名数据类型可否为空说明Materialckd_noVarchar(7)Not出库单号(主键),自动产生,可修改GetpeopleVarchar(10)Null提货人ck_dateDatetimeNull出库时间(系统自动入)ck_amoutfloatNull出库数量user_deptVarchar(20)Null使用部门Cgpeople_noVarchar(6)Not仓库管理员号audit_noVarchar(6)Null审核人号,引用emp_noHas_AuditedbitNull是否审核,默认未审核Ck_memoTextNull备注信息8问题分析-6材料出库信息表Material_ck_2:列名数据类型可否为空说明Materialckd_noVarchar(7)Notnull出库单号(主键一,外键),自动产生,可修改,但要保证一次出库单业务中的出库单号是一致的Material_idVarchar(6)Notnull材料号(主键二、外键)ck_amoutfloatNull出库数量9问题分析-7仓库信息表Store:列名数据类型可否为空说明Stor_noVarchar(2)Notnull仓库号(主键)Stor_nameVarchar(20)NOTNull仓库名Manager_noVarchar(6)NOTNull负责人号,引用自yg表中的”emp_no”Stor_totalIntNull仓位数Stor_areaFloatNull面积(平方米)10难点分析-1设计ER图、建库、建表、加约束、建关系部分建库语句:CREATEDATABASEprojectDBON(NAME=‘…',FILENAME=…',SIZE=…,FILEGROWTH=…)LOGON(….)建表语句:CREATETABLE表名(Material_noIDENTITY(1,1),Material_nameCHAR(8)NOTNULL,…..)11难点分析-2设计ER图、建库、建表、加约束、建关系部分建约束语句:ALTERTABLEmaterialADDCONSTRAINTPK_deptIDPRIMARYKEY(deptID),CONSTRAINTDF_Material_pricedefault(“0”)forMaterial_price…..主键约束默认约束12子查询:SELECT....FROM…WHEREMaterial_name=(SELECT…FROM…)SQL编程:DECLARE@Material_namechar(6)SELECT@Material_name=Material_namefrom..where(Material_no=‘XX')视图:CREATEVIEWview_userInfoAS…--SQL语句GO难点分析-4声明变量插入测试数据、常规业务模拟、创建索引视图部分给变量赋值的两种方法:SELECT或SET测试视图:SELECT..FROMview_userInfo…13创建存储过程:CREATEPROCEDUREproc_takeproduct@IDchar(8),@typechar(4),AS…..—SQL语句GO难点分析-6存储过程部分1:存储过程的参数14阶段划分第一阶段(45分钟)利用PowerDesigner设计E-R图第二阶段(60分钟)利用SQL语句实现建库、建表、加约束、建关系第三阶段(45分钟)利用SQL语句插入测试数据、模拟常规业务操作第四阶段(60分钟)利用SQL语句创建索引和视图、创建触发器第五阶段(60分钟)利用SQL语句创建存储过程并测试第六阶段(30分钟)利用SQL语句创建产品流通事务并测试第七阶段(30分钟)利用SQL语句创建系统维护帐号并授权15第一阶段第一阶段(45分钟)利用PowerDesigner设计E-R图要求学生自己动手操作,老师解答难点16阶段检查针对第一阶段抽查学生的操作结果老师给出点评或集中演示难点部分17第二阶段第二阶段(60分钟)利用SQL语句实现建库、建表、加约束、建关系要求学生自己动手编写SQL语句,老师解答学生提出的问题18阶段检查针对第二阶段抽查学生的编码结果老师给出点评或集中演示难点部分19第二阶段标准代码演示-1建库IFexists(SELECT*FROMsysdatabasesWHEREname=‘projectDB')DROPDATABASEprojectDBGOCREATEDATABASEprojectDBON(NAME=‘projectDB_data',FILENAME='d:\project\projectDB_data.mdf',SIZE=1mb,FILEGROWTH=15%)LOGON(…..检验数据库是否存在,如果为真,删除此数据库创建建库projectDB20第二阶段标准代码演示-2建表:USEprojectDBGOCREATETABLEmaterial--材料信息表(Material_noINTIDENTITY(1,1),Material_nameVARCHAR(20)NOTNULL,Material_xhVARCHAR(6)NOTNULL,Material_manufactureVARCHAR(20)……)GO21第三阶段第三阶段(45分钟):利用SQL语句实现插入测试数据、常规业务操作要求学生自己动手操作,教师解答学员提出的问题22阶段检查针对第三阶段抽查学生的编码结果抽查学生编写的完整代码,要求学生上台讲解,并演示运行结果教师给出点评23第三阶段标准代码演示-1部门A和部门B信息登记:SETNOCOUNTON--不显示受影响的条数信息INSERTINTOmaterial(Material_name,Material_xh,Material_manufacture,Product_dw,Material_price)VALUES(‘铁皮’,‘A4’,‘杭州钢铁厂’,‘平方米’,‘60’)INSERTINTOmaterial(Material_name,Material_xh,Material_manufacture,Product_dw,Material_price)VALUES(‘铁皮’,‘A5’,‘杭州钢铁厂’,‘平方米’,‘80’)SELECT*FROMmaterialGO24第四阶段第四阶段(60分钟):利用SQL语句创建索引和视图要求学生自己动手操作,教师解答学员提出的问题25阶段检查针对第四阶段抽查学员的编码结果抽查学生编写的完整代码,要求学生上台讲解,并演示运行结果教师给出点评26第四阶段标准代码演示-1创建视图:.创建视图:查询各表要求字段全为中文字段名。createVIEWview_material--材料信息表信息表视图(其他表同理)ASselectMaterial_noas材料,Material_nameas材料名称,Material_xhas型号规格,Material_manufactureas生产厂家,Product_dwas生产单位,Material_priceas参考价格frommaterialGO27第五阶段第五阶段(60分钟):利用SQL语句创建存储过程并测试要求学生自己动手操作,教师解答学员提出的问题28阶段检查针对第五阶段抽查学生的编码结果抽查学生编写的完整代码,要求学生上台讲解,并演示运行结果教师给出点评29第五阶段标准代码演示-1产品入库存储过程CREATEPROCEDUREproc_takematerial@Namechar(19)…….ASprint'入库正进行,请稍后......'if(…..)begin……end………GO30第六阶段第六阶段(30分钟):利用SQL语句创建转帐事务的存储过程并测试要求学生自己动手操作,教师解答学员提出的问题31阶段检查针对第六阶段抽查学员的编码结果抽查学生编写的完整代码,要求学生上台讲解,并演示运行结果教师给出点评32第六阶段标准代码演示-1出入库事务的存储过程createprocedureproc_material……..ASbegintranprint'开始,请稍后......'…….if(@errors0)beginprint'失败!'rollbacktranendelsebeginprint'成功!'committranendGO33第七阶段第七阶段(30分钟):利用SQL语句创建系统维护帐号并授权要求学生自己动手操作,教师解答学员提出的问题34阶段检查针对第七阶段抽查学员的编码结果抽查学生编写的完整代码,要求学生上台讲解,并演示运行结果教师给出点评35第七阶段标准代码演示-1添加系统维护帐号sysAdmin,并授权--1.添加SQL登录帐号Ifnotexists(SELECT*FROMmaster.dbo.sysloginsWHEREloginname='sysAdmin')beginEXECsp_addlogin'sysAdmin','1234'--添加SQL登录帐号EXECsp_defaultdb'sysAdm