设某商业集团公司数据库中有三个实体集.一是"仓库"实体集,属性有仓库号,仓库

设某商业集团公司数据库中有三个实体集.一是"仓库"实体集,属性有仓库号,仓库,第1张

仓库商品间存存储联系每仓库存储若干种商品每种商品存储若干仓库每仓库每存储种商品相应存储期及存储量;商店与商品间存着销售联系每商店销售若干种商品每种商品若干商店销售每商店销售种商品月份月销售量、单价三属性;仓库、商店、商品间存着供应联系月份月供应量两属性!

三、1select   from 职工 where 工资 < avg(工资)

    2select  from 职工 order by 工资 asc

    3select   from 职工 order by  工资 compute avg(工资) by 仓库号

    4insert into 仓库 values ('WH6','长沙',1000)

    5update 职工 set 工资 = 工资+200 where 职工号= 'E006'

    6select a名字,a仓库号,b城市 from 职工 a join 仓库 b on a仓库号=b仓库号

    7select 名字 from 职工 where 仓库号 in (select 仓库号 from 仓库, where 城市='北京')

    8delete  from 供应商 where 地址 like '%长春%'

    9 drop table 职工

    10alter table 职工 add const gz check(工资 between 1500 and 5000)

四、1create database library

on primary --默认就属于Primary 主文件组,可省略

(

/--数据文件的具体描述--/

Name='library_data', --主数据库的物理名称

Filename='d:\data\library_datamdf' ,--主数据库的物理名称

size=5MB , --主数据库的初始大小

Maxsize=20Mb,  --主数据库文件增长最大文件增长

Filegrowth =10%

)

Log on

(

/--日志文件具体描述同上--/

name='library_log',

Filename='e:\data\library_logldf',

Size=2MB,

MaxSize=10MB,

FIleGrowth=1MB

)

五、1create table 职工表(

        职工编号 char(10)primary key,

        姓名 char(30),

       性别 char(2) check  (性别='男' or 性别='女'),

       出生日期  smalldatetime check ( 出生日期 > '1960-01-01'),

       部门编号 char(10) FOREIGN KEY REFERENCES  部门表(部门编号)

2 (1)alter table 部门表 add 部门经理 char(10)

  (2)select from 图书表 where 出版社编号 = (select 出版社编号 from 出版社 where 出版社名称 = '清华大学出版社出版' )

 (3)select 图书编号,书名 from 图书表 where 书名 like '%数据库%'

 (4) select from 职工表 where 性别='女' and 部门编号 in  (select 部门编号 from 部门表 where 部门名称 = ‘文科图书室’ ) order by 出生日期 desc

(5) select 图书的编号,名称 from 图书表 where  出版社编号 in  (select 出版社编号 from 出版社表 where 出版社名称 = '机械工业出版社' ) and 部门编号 in (select 部门编号 from 部门表 where 部门名称 = '理科图书室' )

(6) select   from 职工表 order by 部门编号,性别  compute count() by 部门编号,性别

(7) select 部门编号,count() as 管理图书数目 from 图书表 group by  部门编号 having count() >1000

(9) select 图书编号,书名 from 图书表 where 部门编号 in (select 部门编号 from 职工表 where 姓名 like '%张%' )

(10) select a书名,a作者,a出版社编号,b出版社名称,b地址 into 新表 from 图书表 a join 出版社表 b on a出版社编号= b出版社编号

BCNF范式在3NF基础上消除对主码子集的依赖。

以仓库管理关系表为例:仓库号,存储物品号,管理员号,数量。首先该表满足第三范式,也就是说一个管理员只在一个仓库工作,一个仓库能够存储多种物品。表中存在有如下依赖关系:

(仓库号,存储物品号)——>(管理员号,数量)

(管理员号,存储物品号)——>(仓库号,数量)

由以上依赖关系可以得知(仓库号,存储物品号)和(管理员号,存储物品号)为表关系中的候选码。

表中唯一非关键字段为数量,它是符合第三范式的。但是,由于存在如下决定关系:

(仓库号)——>(管理员号)

(管理员号)——>(仓库号)

即存在关键字段决定关键字段的情况,因此其不符合BCNF。

解决方法:把仓库管理关系表分解为两个关系表仓库管理表(仓库号,管理员号)和仓库表(仓库号,存储物品号,数量),这样这个数据库表是符合BCNF的,并消除了删除异常、插入异常和更新异常。

扩展资料:

巴斯-科德范式(BCNF)是第三范式(3NF)的一个子集,即满足巴斯-科德范式(BCNF)必须满足第三范式(3NF)。通常情况下,巴斯-科德范式被认为没有新的设计规范加入,只是对第二范式与第三范式中设计规范要求更强,因而被认为是修正第三范式。

也就是说,它事实上是对第三范式的修正,使数据库冗余度更小。这也是BCNF不被称为第四范式的原因。某些书上,根据范式要求的递增性将其称之为第四范式是不规范,也是更让人不容易理解的地方。而真正的第四范式,则是在设计规范中添加了对多值及依赖的要求。

参考资料来源:百度百科-数据库范式

职工表:职工号、姓名、年龄,仓库号

仓库表:仓库号、仓库名、地址

货物表:货物号、货物名、单价

库存表:库存号、货物号、仓库号

职工表主键是职工号,外键是仓库号,跟仓库表关联

仓库表主键是仓库号

货物表主键是货物号

库存表主键是库存号,外键是仓库号、货物号(跟仓库表、货物表关联)

数据库原理及应用课程设计

一、课程设计的目的

《数据库原理及应用》课程设计是计算机科学与技术专业集中实践性环节之一,是学习完《数据库原理及应用》课程后进行的一次全面的综合练习。本课程设计主要在于加深学生对数据库基础理论和基本知识的理解,掌握数据库应用系统设计开发的基本方法,达到进一步使学生综合运用所学知识和增强实际动手能力的目的。

二、课程设计的任务与要求

要求学生根据自身对题目的理解情况,从给定的设计题目中选择一个,以MS SQL Server作为后台数据库平台,以PowerBuilder作为前台开发工具,完成一个小型数据库应用系统的系统的分析、设计和开发。

三、课程设计说明书

仓储管理系统

对于一个以生产或经营产品为主要业务的单位来说,仓库管理系统至关重要。高效方便的仓库管理系统,可以为生产经营提供坚强的后盾和有力的支持。效率低下甚至是混乱不堪的仓库管理系统,无疑会成为企业健康发展的拖累甚至是枷锁。使企业发展动力不足。本次数据库设计实现了仓库管理的高效化、电子化。通过本系统可以方便地实现仓库管理中的货物登记、出库入库等 *** 作,使仓库管理井井有条。

1系统需求分析

11系统功能需求分析

仓库管理系统主要实现对库存商品的管理,对商品出库、入库的管理,和对仓库管理系统维护的功能。具体要实现的功能包括:

1)库存商品管理

查看数据库中商品的名称、编号、单价等信息。

2)商品出库、入库管理

入库、出库单纪录本次入库、出库的货物名称、数量,入库、出库的时间、商品单价以及总价,入库、出库的经手人等。

3)商品的查询

输入商品的编号或者商品的名称查询信息

4)用户管理

用户可以修改登录密码

1 2数据需求分析

1员工(ID ,姓名,密码,权限)

2商品(商品名,商品编号,所属类,单价)

3出货表(商品名,商品编号,数量,总价,经手人)

4入货表(商品名,商品编号,数量,总价,经手人)

5查询(商品名,商品编号,数量,单价)

根据上面的关系我们需要的数据基本上就上面所列出的数据。

2 系统总体设计

1)库存商品管理

查看数据库中商品的名称、编号、单价等信息。

2)商品出库、入库管理

入库、出库单纪录本次入库、出库的货物名称、数量,入库、出库的时间、商品单价以及总价,入库、出库的经手人等。

3)商品的查询

输入商品的编号或者商品的名称查询信息

4)用户管理

用户可以修改登录密码

21系统总体结构设计

221 E-R图

222 关系模式

1员工(ID ,姓名,密码,权限)

2商品(商品名,商品编号,所属类,单价)

3出货表(商品名,商品编号,数量,总价,经手人)

4入货表(商品名,商品编号,数量,总价,经手人)

5查询(商品名,商品编号,数量,单价)

223 数据表

“员工信息表”“商品信息表”“出货单”“进货单”的主键分别是:ID、商品编号、商品编号、商品编号。

员工信息表

商品信息表

出货单

进货单

3.系统实施

工作界面PB90,以下是我制作过程和运行中的一些截图:

首先建立PB与SQL的数据链接:如果链接不成功,返回对以话框“数据库连接错误,经检查后再试!”

然后点Preview选项会d出如下窗口:

一、 工作界面截图:

分别建有:workspace、application、windows、dw_、da_等。

工作时检测连接数据库是否正常的程序代码:

// Profile q

SQLCADBMS = "ODBC"

SQLCAAutoCommit = False

SQLCADBParm = "ConnectString='DSN=仓库;UID=;PWD='"

connect;

open(w_enter)

二、 运行结果的截图:

这个是我运行后的第一个用户界面,在界面中输入管理员ID和密码。我的管理员ID 和密码分别为 1,123点击确定进入menu下一界面。

若ID和密码分别输入1,1234,则跳出以下界面:

确定按钮所对应的代码如下:

//定义两个变量

string password,userid

password=sle_2text

//检索用户名和密码记录

SELECT "员工信息表" "ID",

"员工信息表""密码"

INTO :userid,

:password

FROM "员工信息表"

WHERE "员工信息表""ID" =:sle_1text and "员工信息表""密码" =:sle_2text;

//判断用户输入的用户名是否正确

if sqlcasqlcode<>0 then

messagebox("错误!","ID或密码错误,请重新输入!",exclamation!,ok!,2)

else

messagebox("通过验证!","ID和密码正确,欢迎您使用本系统!",Information!,ok!,2)

open(w_main)

close(w_enter)

end if

取消按钮所对应的代码如下:

close(parent)

//关闭登录窗口

三、 menu界面的截图:

在本界面中我们通过点击菜单栏上的不同管理按钮来实现管理和 *** 作的功能。

进货—进货单

出货—出货单

库存—蔬菜类

—水产类

—肉类

系统维护—修改密码

查询

四、 进货的截图如下:

在本界面中, *** 作员可以输入进货信息

五、 进货的截图如下:

在本界面中, *** 作员可以输入出货信息

六、本界面是实现用户更改自己的密码的界面

用户在登陆后根据上面的提示可以更改自己的密码。

程序代码如下:

string oldid

string oldp

string newp1

string newp2

oldid=trim(sle_1text)

oldp=trim(sle_2text)

newp1=trim(sle_3text)

newp2=trim(sle_4text)

if len(oldp)=0 or isnull(oldp) then

oldp=space(10)

end if

if len(newp1)=0 or isnull(newp1) then

newp1=space(10)

end if

if len(newp2)=0 or isnull(newp2) then

newp2=space(10)

end if

select "operator""password"

into :oldp

from "operator"

where "operator""password"=:oldp;

if sqlcasqlcode<>0 then

messagebox("提示","原密码不正确!")

sle_2text=""

sle_2setfocus()

return

end if

if newp1<>newp2 then

messagebox("提示","两次新密码输入不同!")

sle_4text=""

sle_4setfocus()

return

end if

Update "operator"

set "password"=:newp1

where "operator""operator_id"=:oldid;

if sqlcasqlcode<>0 then

rollback;

messagebox("提示","密码更正错误! 请重设!")

return

end if

gs_password=newp1

commit;

messagebox("提示","密码修改成功!")

七、本 *** 作可以看仓库里的商品并可对其进行插入和删除

八、从仓库查询所需要的商品

4 系统评价

系统的功能基本上已经实现,但是还是不够完善。但是在使用的时候还是能给用户带来一定的方便的。仓库的进货和出货在本系统中能直观的以表格形式反映出来,便于 *** 作员的使用和决策者的管理。

41 系统特色

本系统要求用户进行验证之后才能进入相应的界面。有利于保护数据库的安全,不被非法登陆使用。对于仓库内货物的进出管理要求严格,即进出货时必须填写相应的进出货单据。便于企业管理查看账目,保障了企业的稳定运行。通过本系统可以方便地实现仓库管理中的货物登记、出库入库等 *** 作,使仓库管理井井有条。在查看数据库时可以方便的删除数据库中冗余的信息和添加新的信息。

42 系统不足及改进

这个系统基本上实现了一些简单的对系统所涉及表的更新、增加和删除的功能。也实现对用户登陆的安全上有了一定的限制,只有在正确输入ID和密码的时候才能进入系统。远没有达到大型公司的仓储物资管理的要求,所创建的数据库框架比较简单,各表之间的联系也过于简单,没有添加外键相互约束,用POWER BUILDER做出来的系统过于简单、单调,需要进一步深入的调整优化,将各表之间的关系紧密联系起来,相互制约,保证数据库中数据的添加、删除、更新,安全有序。 *** 作窗口还需要进一步的进行美化,使用户在使用中更赏心悦目。

5 课程设计心得

这次课程设计的主要目的是掌握数据库应用系统分析设计的基本方法,基本掌握PowerBuilder,进一步提高分析解决问题的综合能力。通过这次课程设计,我基本掌握了以上要求。但只有两周的课程设计时间,时间比较仓促,所以开发的系统不是很完善,有一些功能未实现,但是仓库管理的基本功能均已实现。以前对数据库的很多知识认识都不深刻,做过这次课程设计之后,我对数据库的知识有了一个比较系统的了解;比如:对表内一些字段的约束,关系等的运用已经比较熟练。这个课程设计使我巩固了数据库的知识。

对于PowerBuilder也有了一定的了解,由于用的不多,所以运用的不是很熟练。刚开始的时候,对于PowerBuilder的语法,用法等一系列知识都不熟悉。当我基本完成此系统开发的时候,我发现其实也没有那么难,在未做之前我还害怕做不出来。经过对这个系统的开发,在开发过程中遇到但也解决了很多问题,所以说我们不能惧怕有困难而不去接触认识它,我们要知难而上,只有这样我们才能成长,才能有所发展。

这认为最难的一部分是用户查看数据库时通过插入删除按钮对数据库的更改,因为我们在文本框中输入的数字是被默认为字符型的,我在其中使用了integer(string)这个函数把字符型的进行了转换,但是在使用的过程中并不能像我所想像的那样有用。因为时间有限,所以这个问题还没有完全的解决。

通过这次数据库课程设计加深我对数据库基础理论和基本知识的理解,掌握数据库应用系统设计开发的基本方法,达到进一步使我综合运用所学知识和增强实际动手能力的目的。

我会继续学习数据库的知识,学习PowerBuilder的知识,只有通过不断的学习充实自己,才能让自己有所得。只有了知识的积淀,才能为自己的发展铺平道路!

可以参考一下啊,最终还是要自己做的吧。。仅供参考。

都不难啊。。。 24 25 有问题,没有金额信息

--从职工关系中检索所有的工资

SELECT DISTINCT SALARY FROM employee_table

--检索仓库中的所有元祖

SELECT FROM warehouse_table

--检索工资多于1230的职工号

SELECT WAREHOUSEID FROM employee_table WHERE SALARY > 1230

--检索哪些仓库的工资多于1210的职工

SELECT DISTINCT WAREHOUSEID FROM employee_table WHERE SALARY > 1210

--找出工资多于1230的职工号和他们所在的城市

SELECT bWAREHOUSEID, aCITY

FROM warehouse_table a, employee_table b

WHERE aWAREHOUSEID = bWAREHOUSEID AND bSALARY > 1230

--给出 在仓库WH1或WH2工作并且工资少于1250的 职工号

SELECT WAREHOUSEID FROM employee_table WHERE WAREHOUSEID IN ('WH1', 'WH2' AND SALARY < 1250

7找出工作面积大于 400的 仓库的职工号以及这些职工工作所在的城市

SELECT bWAREHOUSEID, aCITY

FROM warehouse_table a, employee_table b

WHERE aAREA > 400 AND aWAREHOUSEID = bWAREHOUSEID

8--哪些城市至少有一个仓库的职工的工资为1250

SELECT aCITY,

FROM warehouse_table a, employee_table b

WHERE aWAREHOUSEID = bWAREHOUSEID AND bSALARY > 1250

GROUP BY aCITY HAVING COUNT(bSALARY) > 0

9--查询所有职工的工资多于1210的 仓库信息

SELECT aCITY,

FROM warehouse_table a, employee_table b

WHERE aWAREHOUSEID = bWAREHOUSEID AND bSALARY < 1210

GROUP BY aCITY HAVING COUNT(bSALARY) = 0

10--找出和E4赚同样工资的所有职工

SELECT WAREHOUSEID FROM employee_table WHERE SALARY = (SELECT SALARY FROM employee_table WHERE WAREHOUSEID = 'E4'

11--检索工资在1220到1240范围的职工信息

SELECT FROM employee_table WHERE SALARY BETWEEN 1220 AND 1240

-12-找出不在北京的全部供应商的信息

SELECT FROM supplier_table WHERE LOCATION <> '北京'

13--按职工工资的 升序检索全部职工信息

SELECT FROM employee_table ORDER BY SALARY

14--先按仓库号排序,再按工资排序并输出全部职工信息

SELECT FROM employee_table ORDER BY WAREHOUSEID, SALARY

15-找出供应商所在地的数目

SELECT COUNT(DISTINCT LOCATION) FROM supplier_table

16-求支付的工资总数

SELECT SUM(SALARY) FROM employee_table

17--求北京和上海的仓库职工的工资总和(不懂::)

SELECT SUM(aSALARY)

from employee_table a, warehouse_table b

WHERE aWAREHOUSEID = bWAREHOUSEID AND bCITY IN ('北京', '上海')

18--求所有职工的工资多于1210的仓库的平均面积

SELECT WAREHOUSEID, AVG(AREA)

FROM warehouse_table

WHERE WAREHOUSEID IN (SELECT WAREHOUSEID FROM employee_table WHERE SALARY < 1210

GROUP BY WAREHOUSEID HAVING COUNT(SALARY) = 0)

GROUP BY WAREHOUSEID

19--求在WH2仓库工作的职工的最高工资

SELECT MAX(SALARY) from employee_table WHERE WAREHOUSEID = 'WH2'

20--求每个仓库的职工的平均工资

SELECT WAREHOUSEID, AVG(SALARY) from employee_table GROUP BY WAREHOUSEID

21--求至少有两个职工的每个仓库的平均工资

SELECT WAREHOUSEID, AVG(SALARY) from employee_table

WHERE WAREHOUSEID IN (SELECT WAREHOUSEID FROM employee_table GROUP BY WAREHOUSEID HAVING COUNT(WAREHOUSEID) >=2)

GROUP BY WAREHOUSEID

22--找出尚未确定供应商的订购单

SELECT 订单号 from order_table where 供应商号 IS NULL

23-找出已经确定供应商的订购单

SELECT 订单号 from order_table where 供应商号 IS not NULL

24--根据雇员关系列出上一级经理及其所领导的职员的清单

---no 雇员关系

25--列出每个职员经手的具有最高金额订单信息

no 金额

26--检索那些还没有职工的仓库信息

SELECT

from warehouse_table

where WAREHOUSEID not in (select distinct WAREHOUSEID from employee_table)

27--检索那些仓库至少已经有一个职工的仓库的信息

SELECT a

FROM warehouse_table a, employee_table b

WHERE aWAREHOUSEID = bWAREHOUSEID

28--检索有职工的工资>=WH1中任何一个职工工资的仓库号

SELECT WAREHOUSEID from employee_table

WHERE SALARY < (SELECT MAX(SALARY) FROM employee_table WHERE WAREHOUSEID = 'WH1')

HAVING COUNT(WAREHOUSEID) = 0

29--检索有职工的工资>=WH1中所有职工工资的仓库号

SELECT WAREHOUSEID

from employee_table

WHERE EXISTS SALARY > (select MAX(SALARY) FROM employee_table WHERE WAREHOUSEID = 'WH1')

1 查询所有商品的商品名、单价、数量;

Select商品名,单价,数量

From 商品 ----------、 改为, 号即可

2 查询北京的仓库信息;

1种方法Select from 仓库 where 仓库名=’北京’

2种方法Select仓库号,仓库名,地址,面积

From 仓库

Where 仓库名=’北京’

(哪个对) -------------都对

3 查询面积不低于100的仓库号及地址;

Select仓库号,地址

from 仓库

where面积>=100 ------------ok

4 检索进货超过60天的商品情况;

-----------这个不对得改

select from 商品 where datediff(day,进货日期,getdate())>=60

5 核算所有商品的总价,并填入总价字段;

-----select sum(总价) as 总价 from 商品

6 按总价降序查询商品名、单价、数量和总价;

Select 商品名,单价,数量,总价 from 商品 order by 总价DESC

---------0k

7 查询北京仓库中的商品信息;

--这句也不对

select from 商品 where 仓库号=(select 仓库号 from 仓库 where 仓库名=‘北京’)

8 删除2006年1月1日之前进货的商品记录;

---------这句也不对

Delete from 商品 where 进货日期<’2006-1-1’

9 查询电视机的商品信息并将查询结果存入表TV中;

select into TV from 商品 where 商品名='电视机'

10 查询面积最大的仓库名及其中存放商品的名称和进货日期。

select 商品名称,进货日期,仓库名 from 商品 left join 仓库 on 商品仓库号=仓库仓库号 where 仓库号=(select top 1 仓库号 from 仓库 order by max(仓库面积)desc)

--------------注意 我期中的 括号和逗号 有的是中文 会报错

以上就是关于设某商业集团公司数据库中有三个实体集.一是"仓库"实体集,属性有仓库号,仓库全部的内容,包括:设某商业集团公司数据库中有三个实体集.一是"仓库"实体集,属性有仓库号,仓库、SOL数据库题目、请问数据库设计中BCNF范式是什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9367440.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存