九、总结
关于数据库课程设计,总的来说,受益匪浅。此次课程设计主要是通过运用所学的数据库系统理论的相关知识来设计工厂数据库管理系统,模拟工厂的生产过程。在课程设计的前几天我还停留在只熟悉基本表的建立,基本查询的层次上,对于存储过程、触发器一片模糊,通过这些天的课程设计让我对建表、创建视图、建存储过程、查询语句、插入语句、更新数据以及数据库安全性等内容有了更深的理解。在解决课程设计遇到的各种问题的过程中,学到了解决问题的方法,比如说在删除数据和更新数据时,由于外键约束的存在,经常会出现错误,这时要注意各个表建立的顺序。一般先建立主键表,再建立外建表。另外每个细节需要注意,不能马虎,不然就会出现或大或小的问题。
29
参考文献
[1]王珊,萨师煊.数据库系统概论[M].北京:高等教育出版社,2006.
30
附录:源代码
创建表代码: 工厂表
create table factory (
factory_name varchar(20)primary key not null, factory_manager varchar(8), )
车间表
create table workshop (
workshop_no char(4) primary key not null, workshop_manager varchar(8), workshop_add varchar(30), workshop_tel char(11),
factory_name varchar(20)not null,
foreign key (factory_name) references factory(factory_name) )
职工表
create table worker (
worker_no varchar(8) primary key not null, worker_name varchar(8),
worker_sex char(2)CHECK(worker_sex in('男','女')),
worker_age smallint check(worker_age>=18 and worker_age<=65), worker_profession varchar(20), workshop_no char(4)not null,
foreign key (workshop_no)references workshop(workshop_no)
仓库表
create table storehouse (
storehouse_no char(4) primary key, storehouse_manager char(8), storehouse_tel char(12), factory_name varchar(20),
inventory_capacity int check(inventory_capacity>=0and inventory_capacity<=100), foreign key (factory_name)references factory(factory_name) );
产品表
31
create table product (
product_no char(6) primary key, product_name varchar(20), product_price numeric(8,1), product_quality int,
workshop_no char(4) not null, storehouse_no char(4)not null,
foreign key (workshop_no)references workshop(workshop_no), foreign key (storehouse_no)references storehouse(storehouse_no) )
零件表
create table element (
element_no char(6) primary key, element_weight numeric(8,1), element_quality int,
element_price numeric(8,1), storehouse_no char(4)not null,
foreign key (storehouse_no)references storehouse(storehouse_no) )
零件生产表
create table element_production (
workshop_no char(4) not null, element_no char(6) not null, element_date date,
primary key(workshop_no,element_no),
foreign key (workshop_no)references workshop(workshop_no), foreign key (element_no)references element(element_no) )
组装表
create table install (
product_no char(6)not null, element_no char(6)not null,
primary key(product_no,element_no),
foreign key(product_no)references product(product_no), foreign key(element_no)references element(element_no) )
32
视图:
创建不同仓库的容量视图 create view v_storehouse as
select storehouse_no,inventory_capacity from storehouse;
创建不同工种的职工人数视图 create view count_worker as
select worker_profession,COUNT(*)as number from worker group by worker_profession
.创建不同年龄的职工人数视图 create view V_worker as
select worker_age,COUNT(*)as number from worker group by worker_age
创建查询仓库不同产品质量<=1视图 create view v_p as
select storehouse_no,product_name,COUNT (*)as number from product where product_quality<=1 group by storehouse_no,product_name
创建产品的相关信息视图 create view V_product as
select product_no,workshop_no,product_price from product
产品入库存储过程 create proc proc_product @product_no char(6), @product_name char(20), @product_price numeric(8, 1), @product_quality int, @workshop_no char(4), @storehouse_no char(4) AS BEGIN
if @product_quality<=3 begin insert into product values(@product_no,@product_name,@product_price,@product_quality,@workshop_no,@storehouse_no);
33