1、企业仓库管理系统 数据库设计,2,问题描述,某企业为实现现代化管理准备开发一套仓库管理系统,实现如下功能: 1、材料情况登记(每一材料入库前的详细情况登记) 2、材料库存信息登记 3、材料入库信息登记 4、材料出库信息登记 5、仓库信息登记 现要求对“企业仓库管理系统”进行数据库的设计并实现,数据库保存在D:project目录下,文件增长率为20% 。,3,问题分析-1,材料信息表material :,4,问题分析-2,材料库存信息表Material_kc:,5,问题分析-3,材料入库信息表Material_rk_1:,6,问题分析-4,材料入库信息表Material_rk_2:,7,问题分析
2、-5,材料出库信息表Material_ck_1:,8,问题分析-6,材料出库信息表Material_ck_2:,9,问题分析-7,仓库信息表Store:,10,难点分析-1,设计ER图、建库、建表、加约束、建关系部分,建库语句: CREATE DATABASE project DBON(NAME=,FILENAME=,SIZE=,FILEGROWTH= )LOG ON(.),建表语句: CREATE TABLE 表名(Material_no IDENTITY(1,1),Material_name CHAR(8) NOT NULL, ),11,难点分析-2,设计ER图、建库、建表、加约束、建关系
3、部分,建约束语句: ALTER TABLE materialADD CONSTRAINT PK_ deptID PRIMARY KEY(deptID),CONSTRAINT DF_ Material_price default(“0”) for Material_price,主键约束,默认约束,12,子查询: SELECT FROM WHERE Material_name =(SELECT FROM ) SQL编程: DECLARE Material_name char(6) SELECT Material_name = Material_name from where (Material_n
4、o =XX) 视图: CREATE VIEW view_userInfo AS -SQL语句 GO,难点分析-4,声明变量,插入测试数据、常规业务模拟、创建索引视图部分,给变量赋值的两种方法:SELECT或SET,测试视图: SELECT FROM view_userInfo ,13,创建存储过程: CREATE PROCEDURE proc_takeproductID char(8),type char(4) , AS SQL语句 GO,难点分析-6,存储过程部分1:,存储过程的参数,14,阶段划分,第一阶段(45分钟)利用PowerDesigner设计E-R图 第二阶段( 60分钟)利用S
5、QL语句实现建库、建表、加约束、建关系 第三阶段(45分钟)利用SQL语句插入测试数据、模拟常规业务操作 第四阶段(60分钟)利用SQL语句创建索引和视图、创建触发器 第五阶段(60分钟)利用SQL语句创建存储过程并测试 第六阶段(30分钟)利用SQL语句创建产品流通事务并测试 第七阶段(30分钟)利用SQL语句创建系统维护帐号并授权,15,第一阶段,第一阶段(45分钟)利用PowerDesigner设计E-R图 要求学生自己动手操作,老师解答难点,16,阶段检查,针对第一阶段抽查学生的操作结果 老师给出点评或集中演示难点部分,17,第二阶段,第二阶段(60分钟)利用SQL语句实现建库、建表、
6、加约束、建关系 要求学生自己动手编写SQL语句,老师解答学生提出的问题,18,阶段检查,针对第二阶段抽查学生的编码结果 老师给出点评或集中演示难点部分,19,第二阶段标准代码演示-1,建库,IF exists(SELECT * FROM sysdatabases WHERE name=projectDB)DROP DATABASE projectDB GO CREATE DATABASE projectDB ON(NAME=projectDB_data,FILENAME=d:projectprojectDB_data.mdf,SIZE=1mb,FILEGROWTH=15%)LOG ON( ,检
7、验数据库是否存在,如果为真,删除此数据库,创建建库projectDB,20,第二阶段标准代码演示-2,建表:,USE projectDB GO CREATE TABLE material 材料信息表 (Material_no INT IDENTITY(1,1),Material_name VARCHAR(20) NOT NULL,Material_xh VARCHAR(6) NOT NULL,Material_manufacture VARCHAR(20) ) GO,21,第三阶段,第三阶段(45分钟):利用SQL语句实现插入测试数据、常规业务操作 要求学生自己动手操作,教师解答学员提出的问题
8、,22,阶段检查,针对第三阶段抽查学生的编码结果 抽查学生编写的完整代码,要求学生上台讲解,并演示运行结果 教师给出点评,23,第三阶段标准代码演示-1,部门A和部门B信息登记:,SET NOCOUNT ON -不显示受影响的条数信息 INSERT INTO material(Material_name,Material_xh, Material_manufacture,Product_dw,Material_price)VALUES(铁皮,A4,杭州钢铁厂,平方米,60) INSERT INTO material(Material_name,Material_xh, Material_man
9、ufacture,Product_dw,Material_price)VALUES(铁皮,A5,杭州钢铁厂,平方米,80) SELECT * FROM material GO,24,第四阶段,第四阶段(60分钟):利用SQL语句创建索引和视图 要求学生自己动手操作,教师解答学员提出的问题,25,阶段检查,针对第四阶段抽查学员的编码结果 抽查学生编写的完整代码,要求学生上台讲解,并演示运行结果 教师给出点评,26,第四阶段标准代码演示-1,创建视图:,.创建视图:查询各表要求字段全为中文字段名。 create VIEW view_material -材料信息表信息表视图(其他表同理)AS sel
10、ect Material_no as 材料, Material_name as 材料名称, Material_xh as 型号规格, Material_manufacture as 生产厂家, Product_dw as 生产单位, Material_priceas 参考价格 from material GO,27,第五阶段,第五阶段(60分钟):利用SQL语句创建存储过程并测试 要求学生自己动手操作,教师解答学员提出的问题,28,阶段检查,针对第五阶段抽查学生的编码结果 抽查学生编写的完整代码,要求学生上台讲解,并演示运行结果 教师给出点评,29,第五阶段标准代码演示-1,产品入库存储过程,
11、CREATE PROCEDURE proc_takematerial Name char(19).ASprint 入库正进行,请稍后if ()beginend GO,30,第六阶段,第六阶段(30分钟):利用SQL语句创建转帐事务的存储过程并测试 要求学生自己动手操作,教师解答学员提出的问题,31,阶段检查,针对第六阶段抽查学员的编码结果 抽查学生编写的完整代码,要求学生上台讲解,并演示运行结果 教师给出点评,32,第六阶段标准代码演示-1,出入库事务的存储过程,create procedure proc_material ASbegin tranprint 开始,请稍后.if (errors
12、0)beginprint 失败!rollback tranendelsebeginprint 成功!commit tranend GO,33,第七阶段,第七阶段(30分钟):利用SQL语句创建系统维护帐号并授权 要求学生自己动手操作,教师解答学员提出的问题,34,阶段检查,针对第七阶段抽查学员的编码结果 抽查学生编写的完整代码,要求学生上台讲解,并演示运行结果 教师给出点评,35,第七阶段标准代码演示-1,添加系统维护帐号sysAdmin,并授权,-1.添加SQL登录帐号 If not exists(SELECT * FROM master.dbo.syslogins WHERE loginn
13、ame=sysAdmin)beginEXEC sp_addlogin sysAdmin, 1234 -添加SQL登录帐号EXEC sp_defaultdb sysAdmin , projectDB -修改登录的默认数据库为bankDBendgo -2.创建数据库用户 EXEC sp_grantdbaccess sysAdmin, sysAdminDBUserGO,-3.-给数据库用户授权 -为sysAdminDBUser分配对象权限(增删改查的权限)GRANT SELECT,insert,update,delete,select ON material TO sysAdminDBUser GRANT SELECT,insert,update,delete,select ON Material_kc TO sysAdminDBUser GRANT SELECT,insert,update,delete,select ON Material_rk_1 TO sysAdminDBUser GO,36,总结,巩固的知识点: SQL语句:建库、建表、加约束、建关系 常用的约束类型:主键、外键、非空、默认值、检查约束 高级查询:内部连接、子查询、索引、视图触发器:插入触发器的使用 存储过程:带参数的存储过程、带返回值的存储过程 事务:显示事务的应用 安全帐号:创建登录帐号、数据库用户、授权,