数据库课程设计——数据库设计部分

时间:2024.5.9

数据库应用课程设计—数据库设计部分

学号: 姓名:_____项目名称:___仓库管理系统______

1.创建数据库及数据表:建立Test数据库,存储仓库信息、仓库员工信息、货物信息、单位信息和货物存取信息,该数据库包含八张数据表,即仓库基本信息表“仓库”,仓库员工信息表“仓库员工”,货物基本信息表“货物”,单位基本信息表“单位”,货物入库信息表“入库”,货物出库信息表“出库”,货物库存信息表“库存”,仓库盘库信息表“盘库”。

1)各数据表的逻辑结构如下:

仓库员工(员工编号,姓名,性别,联系方式,职称,银行卡号,所属仓库编号),其中主码为员工编号;

仓库(仓库编号,仓库名称,管理员编号,管理员),其中主码为仓库编号,外码为管理员编号; 货物(货物编号,货物名称,所属单位),其中主码为货物编号;

单位(单位编号,单位名称,联系方式,地址),其中主码为单位编号;

库存(仓库编号,货物编号,数量),其中主码为(仓库编号,货物编号);

入库(入单号,仓库编号,货物编号,入库数量,入库时间),其中主码为入单号,外码为仓库编号和货物编号;

出库(出单号,仓库编号,货物编号,出库数量,出库时间),其中主码为出单号,外码为仓库编号和货物编号;

盘库(盘库号,仓库编号,盘库时间,记录是否有误),其中主码为盘库号,外码为仓库编号;

2)创建数据库及数据表的SQL语句如下:

create database Test

use Test;

createtable仓库员工

(员工编号char(10)primarykey,

姓名char(10)notnull,

性别char(10)notnull,

联系方式char(15)notnull,

职称char(10)notnull,

银行卡号char(20)notnull,

所属仓库编号char(10)

);

createtable仓库

(仓库编号char(10)primarykey,

仓库名称char(10)notnull,

管理员char(10)notnull,

管理员编号char(10)notnull,

foreignkey(管理员编号)references仓库员工(员工编号)

);

createtable货物

(货物编号char(10)primarykey,

名称char(10)notnull,

所属单位char(10)notnull

);

createtable单位

(单位编号char(10)primarykey,

单位名称char(20)notnull,

联系方式char(15)notnull,

地址char(40)notnull

);

createtable库存

(仓库编号char(10)notnull,

货物编号char(10)notnull,

数量intnotnull,

primarykey(仓库编号,货物编号)

);

createtable入库

(入单号char(20)primarykeynotnull,

仓库编号char(10)notnull,

货物编号char(10)notnull,

入库时间char(20)notnull,

入库数量intnotnull

);

createtable出库

(出单号char(20)primarykeynotnull,

仓库编号char(10)notnull,

货物编号char(10)notnull,

出库时间char(20)notnull,

出库数量intnotnull

);

createtable盘库

(盘库号char(20)primarykeynotnull,

仓库编号char(10)notnull,

盘库时间char(20)notnull,

记录是否有误char(10)notnull

);

3)输入数据到所创建的数据库表。具体数据如下:

①仓库员工表的数据:

员工编号姓名性别联系方式职称银行卡号所属仓库编号

1500001 张三男 12345678901管理员 622123xxxxxxxxxxxx 001 1500002 李四男 12345678902 管理员 622123xxxxxxxxxxxx 002 1500003 王红女 12345678903 管理员 622123xxxxxxxxxxxx 003 1500004 张军男 12345678904 普工 622123xxxxxxxxxxxx 001 1500005 林静女 12345678905 普工 622123xxxxxxxxxxxx 002

②仓库表的数据:

仓库编号仓库名称管理员编号管理员

001 cangku001 1500001 张三

002 cangku002 1500002 李四

003 cangku003 1500003 王红

③货物表的数据:

货物编号货物名称所属单位

h00001 杯子xx公司

h00002 筷子xx公司

④单位表的数据:

单位编号单位名称联系方式地址

d001 xx公司 137xxxxxxxx 福建省漳州市芗城区xx街道 ⑤库存表数据:

仓库编号货物编号数量

001 h00001 1000

001 h00002 1500

002 h00001 500

⑥入库表数据:

入单号仓库编号货物编号入库数量入库时间

r15110001 001 h00001 400 2015.11.20 10:21:10

⑦出库表数据:

出单号仓库编号货物编号出库数量出库时间

C15110001 001 h00001 100 2015.11.22 09:27:35

⑧盘库表数据:

盘库号仓库编号货物编号盘库数量盘库时间

P15110001 001 h00001 1250 2015.11.24 20:15:28

2.创建视图和存储过程,能够根据给定参数进行信息查询。

输入货物名称,可以查询该货物所对应的货物的编号、名称、所属单位、所在仓库编号和对应的数量。

1) 创建视图

use Test

createview货物_库存

as

select货物.货物编号,名称,所属单位,仓库编号,数量

from货物,库存

where货物.货物编号=库存.货物编号

withcheckoption;

2) 测试视图:查看视图内容

select*from货物_库存;

3) 创建存储过程

use Test

createprocedure货物_info2 @name varchar(40)

as

select*from货物_库存where名称=@name;

4) 测试存储过程:给出所要查询的货物名称,执行存储过程

测试1:exec货物_info2 '杯子';

执行结果如下:

货物编号名称所属单位仓库编号数量

h00001 杯子xx公司001 1000

h00001 杯子xx公司 002 500

测试2:exec货物_info2 '筷子';

执行结果如下:

货物编号名称所属单位仓库编号数量

h00002 筷子xx公司001 1500

3.为Test数据库的货物表创建一个存储过程insert_货物信息。该存储过程的功能是向货物表添加一条记录,该记录各字段的值是在执行存储过程时给出的相应参数值。

1)创建一个带有三个输入参数的存储过程insert_货物信息

use Test;

createprocedure [insert_货物信息]

(@货物编号[char](10),

@名称[char](10),

@所属单位[char](10))

asinsertinto货物(货物编号,名称,所属单位)

values

(@货物编号,@名称,@所属单位)

go

2)测试存储过程,有2种方法

第1种方法

use Test;

exec insert_货物信息'h00003','圆珠笔','xx公司'

go

测试结果如下:

(所影响的行数为 1 行)

打开货物表,发现新增加了一个条记录('h00003','圆珠笔','xx公司')

第2种方法

use Test;

exec insert_货物信息

@货物编号='h00004',

@名称='铅笔',

@所属单位='xx公司'

Go

测试结果如下:

(所影响的行数为 1 行)

打开货物表,发现新增加了一个条记录('h00004','铅笔','xx公司')

4.使用T-SQL创建触发器监视属性值的修改。

在货物表建立触发器,监视名称属性列是否有被修改, 如果是,给出提示,并将修改前后的数据保存到另外的表中。

1) 先创建一个新表货物_log

use Test

createtable货物_log

(货物编号char(10),

名称char(10));

go

2) 在货物表上创建一个触发器,监视名称属性列是否有被修改, 如果名称属性列被修改,则给出提示,并将修改前后的数据保存到另外的表货物_log中。

createtrigger货物s_log

on货物

forupdate

as

ifupdate(名称)

begin

print('名称被修改了!')

/*保存旧的信息*/

insertinto货物_log

(货物编号,名称)

select

货物编号,名称

from deleted

/*保存新的信息*/

insertinto货物_log

(货物编号,名称)

select

货物编号,名称

from inserted

end

go

3)测试触发器。

①对货物表的名称属性列进行修改,在查询分析器上输入以下代码:

update货物set名称='橡皮擦'where货物编号='h00004';

测试结果如下:

名称被修改了!

(1 行受影响)

(1 行受影响)

(1 行受影响)

即在结果栏中看到该代码执行后影响的行数为3,分别是更新了货物表中的一行,向新表货物_log中插入了2行。

②对货物表的所属单位属性列进行修改,在查询分析器上输入以下代码:

update货物set所属单位='xx有限公司'where货物编号='h00004';

测试结果如下:

(1 行受影响)

即在结果栏中看到该代码执行后影响的行数为1行,这1行仅是更新了货物表中的数据,因为没有更新到名称属性列的数据,因此,并没有向新表货物_log插入任何数据。

5.创建DELETED触发器。

1)在仓库员工表中增加一列:statu,类型为:bit。仓库员工表的结构如下:

仓库员工表中的数据如下:

2)在仓库员工表中建立触发器:当从表中删除课程信息时,检查statu属性的状态,如果为‘True’则不允许删除,否则可以删除。

1)创建触发器

use Test

createtrigger Delete_仓库员工

on仓库员工

fordelete

as

declare @status bit

select @status=statu from deleted

if @status=1

begin

raiserror('该员工信息不允许删除!',16,1)

rollbacktransaction

end

else

raiserror('成功删除!',16,1)

go

2)测试触发器:

a)先删除statu值为“False”的员工信息,语句如下:

数据库课程设计数据库设计部分

数据库课程设计数据库设计部分

delete仓库员工where员工编号='1500004'

根据设计要求,该记录应该可以符合成功删除要求,其返回结果如下:

消息50000,级别16,状态1,过程Delete_仓库员工,第13 行

成功删除!

(1 行受影响)

b)再删除statu值为“True”的员工信息,语句如下:

delete仓库员工where员工编号='1500005'

按照触发器的设计要求,该记录不能删除,执行此语句后的服务器返回以下信:

消息50000,级别16,状态1,过程Delete_仓库员工,第9 行

该员工信息不允许删除!

消息3609,级别16,状态1,第18 行

事务在触发器中结束。批处理已中止。

6.创建带返回值的存储过程进行查询

1)创建存储过程。创建一个带有1个输入参数、2个返回值的存储过程search_货物,其功能是:接受外部传入的货物编号,在数据表货物中查找货物信息,然后输出货物的名称、所属单位。

use Test

createprocedure search_名称

(@货物编号s char(10),

@名称s char(10)output,

@所属单位s char(10)output)

as

select @名称s=名称,

@所属单位s=所属单位

from货物

where货物编号=@货物编号s

2)测试该存储过程,

use Test

declare @名称s char(10)

declare @所属单位s char(10)

exec search_名称'h00002',@名称s output,@所属单位s output

print'货物名称:'+rtrim(@名称s)+';所属单位:'+rtrim(@所属单位s)

go

运行结果如下:

货物名称:筷子;所属单位:xx公司

7.使用T-SQL创建带有输入参数,并使用集聚函数的存储过程进行查询。

创建存储过程,分别查询存储n种货物的仓库名单,要求显示仓库编号、仓库名称。其中n作为输入参数在执行系统存储过程时给出。

1)创建存储过程

use Test

createprocedure P_仓库

@num int

as

print'存储'+convert(varchar(5),@num)+'种货物的仓库名称及编号:'

select仓库名=(select仓库名称from仓库where仓库编号=库存.仓库编号),编号=仓库编号 from库存groupby仓库编号havingcount(*)=@num

2)测试存储过程

exec P_仓库@num=1

执行结果如下:

存储1种货物的仓库名称及编号:

(1 行受影响)

数据库课程设计数据库设计部分

exec P_仓库@num=2

执行结果如下:

存储2种货物的仓库名称及编号:

(1 行受影响)

数据库课程设计数据库设计部分


第二篇:数据库设计心得体会


数据库设计心得体会

跟老板做了两个算是比较大的项目,数据库主体都是我设计的。第一个感觉很失败;第二个现在正在用,虽然总结了第一个的教训,但感觉还是有些遗憾。把这过程中的一些心得记在这里,以便日后用到时来查阅。若以后还有机会再设计数据库——现在倒还有些期待,呵呵,再有新的体会,也全部补充到这里。

1.尽量使用数据冗余。

随着磁盘容量的大幅飙升,这一点已经不会产生什么问题。当然冗余归冗余,不能把数据的关联弄的乱七八糟的。

本科数据库课程中学的知识直接拿来,在实际中会出大问题。满足三级范式的数据库结构会让你面对大量的连表查询,应用程序中会用到大量的数据库访问,既繁琐(烦死你)又使程序运行速度减慢。

2.尽量不要使用varchar(max)类型

这一点主要是用动软代码生成器自动生成代码时,如果varchar的最大长度指定为max,在自动生成代码时,它无法生成这一最大长度,需要手动补进去。

现在感觉用个varchar(1000)就够了。

3.使用预留字段。

数据库表(尤其是动态表格),在你把所有字段都设计好了之后,再添加几个备注字段和预留字段。

之前我觉得这样做没多大意义,因为预留字段的列名是没有实际意义的。这样程序中使用的时候就会让人费解。但现在觉得还是有必要的,很有必要的,即便在用到时需要自己十分清楚之前预留的无意义字段现在表示什么意义。不过我的第二个数据库中还是没采用,这也是遗憾之处啊。

个人感觉用note1、note2、r1(r表示reserve)、r2、r3,2个备注字段和3个预留字段就足够了,再多的话就不容易记住哪个字段具体表示什么意义了,容易晕。类型就都用varchar(200)吧。

数据库设计心得体会(2):

在我看来,数据库课程设计主要的目标是利用课程中学到的数据库知识和技术较好的开发设计出数据库应用系统,去解决各行各业信息化处理的要求。通过这次的课程设计,可以巩固我们对数据库基本原理和基础理论的理解,掌握数据库应用系统设计开发的基本方法,进一步提高我们综合运用所学知识的能力。

当我们这组决定做大学生就业咨询系统时,我们并没有着手写程序。而是大家一起商量这个系统概述、系统目标、系统需求、业务流程分析、数据流程分析和数据词典。当这些都准备好了之后,我们进行模块的分工。每个人都有自己的模块设计,而且写出来的代码要求可以实现相应模块的功能,得到理想的效果。当每个人都把自己的分工做好了,最后会由一个人把这些全部组合搭建在一起。我们使用的是html和php相互嵌套使用,当一个系统做好了之后,我会好好地把程序都看一遍,理会其中的奥秘。

我所负责的是数据库的备份和还原还有一些界面的实现。还记得自己刚接触html的时候,觉得很感兴趣,所以有一段时间几乎到了痴迷的程度。然而php是我刚接触不久的一种编程语言。不过觉得它的功能真的很强大,可以开发出很多大型的系统。但是在做备份和还原的时候,要考虑的东西还是很多的。当我遇到错误的时候,感到很受打击。值得欣慰的是,在同学的帮助和大量参考书的查阅下,我把自己的模块做好了。这就是我收获最大的地方。而且,我明白了遇到困难永不放弃的重要性,我知道了团队合作的重要性,我领悟了只有坚持不懈才会取得胜利。

知识的获得是无止境的,只要你想学,只要你行动,没有什么会难倒我们的。回首这一个多星期的课程设计,我很欣慰。因为我有了动力,有了勇气。

谢谢老师对我们的不懈帮助,谢谢学校给了我们这一次实践的机会,也谢谢组员们的关怀。这些美好的回忆美好的东西将永远伴随着我。

更多相关推荐:
数据库课程设计总结与体会

课程设计总结与体会529940对实验过程中用到的软件、实现技术的评价以及对于实验过程遇到的一些问题做的总结:本次实验我们是在windows操作系统平台下完成的,应用了数据库建表,触发,删除插入。。。。;powe…

数据库课程设计心得体会

《数据库原理与应用》课程设计个人总结题目机票预订系统专业班级计0903学号20xx07010319姓名王龙飞指导老师强新建完成时间20xx.1.12课程设计心得体会及总结两个星期的时间非常快就过去了,这两个星期…

数据库课程设计个人总结

一个月的时间非常快就过去了,这一个月我不敢说自己有多大的进步,获得了多少知识,但起码是了解了项目开发的部分过程。虽说上过数据库相关的课程,但是没有亲身经历过相关的设计工作细节。这次课程设计给我提供了一个很好的机…

数据库课程设计心得

数据库课程设计心得体会数据库课程设计大赛的尘嚣渐渐远去,怀着对这次大赛的些许不舍,怀着对当初课程设计开始时候的豪情万丈的决心的留恋,怀着通过这次课程设计积累的信心与斗志,我开始写这篇文章,为自己的足迹留下哪怕是…

数据库课程设计实践报告

中南大学本科生课程设计(实践)任务书、设计报告(SQL数据库程序设计)题目学生姓名指导教师学院专业班级学生学号网吧会员管理系统戴云波杨红雨艺术学院美术09041904090421计算机基础教学实验中心20xx年…

数据库课程设计个人总结

在开学的第一周,我参加了院里组织的数据库课程设计,这项任务是分组分工完成的,我们组有五名成员,分别是我们班学号的后五位同学,很荣幸地我被推荐为我们组的组长,在组长的“英明”指导下,全体组员团结奋斗,使得任务完成…

数据库课程设计感想

课程设计感想学号:051409266姓名:詹林林作为工程管理专业的学生,我们专业在大一时的时候学过简单的微机原理和C语言编程。大二开始接触,和了解Access开发平台的时间并不长,这学期在老师和同学的帮助下完成…

数据库课程设计报告

数据库课程设计设计题目数据库创建和修改表专业物联网工程班级20xx级设计人林升学号20xx01052143山东科技大学20xx年7月3日课程设计任务书一课程设计题目创建和修改表的定义二课程设计主要参考资料1数据...

数据库课程设计报告

20xx级数据库课程设计任务书设计目的数据库课程设计是在学生系统地学习了数据库系统原理课程后按照关系型数据库的基本远离综合运用所学的知识设计开发一个小型的数据库管理信息系统通过对一个实际问题的分析设计与实现将原...

SQLServer数据库课程设计报告

武汉工业学院数据库系统课程设计说明书设计题目选课管理系统姓名学院专业学号指导教师20xx年6月8日一读书笔记1SQL数据库的实际应用SQL包括了所有对数据库的操作主要是由4个部分组成1数据定义这一部分又称为SQ...

学生成绩管理系统 数据库课程设计报告

学生成绩管理系统数据库课程设计报告目录1、开发背景...22、系统描述...23、数据分析...23.1、数据流图...23.2、数据字典...24、概念模型设计...24.1E-R图...25.逻辑模型设计及…

数据库课程设计报告090247

北京广播电视大学数据库应用课程设计报告书题目:出版社图书管理系统姓名:学号:班级:09春计算机分校:通州电大指导教师:设计日期:20##年7月北京广播电视大学课程设计任务书题目出版社图书管理系统专业、班级09春…

数据库课程设计总结(20篇)