求助!!!数据库应用系统的设计与实现

shaobinl 2003-12-04 11:05:14
小弟初学数据库应用基础,对数据库一无所知,实在想不到设计什么单位或系统的数据库,可以写出五个表、各种属性及各表之间的联系。请各位略帮小忙。谢谢!!
目的:
熟练掌握数据库系统的设计方法
深入领会关系数据库设计理论
综合运用SQL语言实施数据库设计方案
内容:
设计选题的目的以及拟完成的功能
设计数据库结构(E_R图到满足3NF的关系数据库表结构)
所设计的数据库系统应包括基本表、视图、触发器、存储过程。
要求:
至少要有5张基本表、1个视图、1个触发器、1个存储过程
...全文
49 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
txlicenhe 2003-12-04
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2462/2462691.xml?temp=5.807132E-02
[交流]一个简单的考勤系统
zjcxc 2003-12-04
  • 打赏
  • 举报
回复
--下面是添加了表间关系的

--库存统计示例:

--数据测试环境
create table 物料明细表(物料ID varchar(6) primary key
,名称 varchar(8) not null
,规格 varchar(10)
,颜色 varchar(4)
,单位 varchar(4)
,所属类别 varchar(6))

create table 进仓主表 (进仓ID varchar(20) primary key
,供应商ID varchar(10)
,进仓日期 datetime
,原凭证号 varchar(10)
,入库类型 int)

create table 进仓明细表 (进仓ID varchar(20) not null
,物料ID varchar(6) not null
,数量 decimal(20,2))

alter table 进仓明细表 add constraint PK_进仓明细表 PRIMARY KEY CLUSTERED (进仓ID,物料ID)

create table 出仓主表 (出仓ID varchar(20) primary key
,部门ID varchar(10)
,领料日期 datetime
,领料单号 varchar(10)
,出库类型 varchar(1))

create table 出仓明细表 (出仓ID varchar(20) not null
,物料ID varchar(6) not null
,数量 decimal(20,2))
alter table 出仓明细表 add constraint PK_出仓明细表 PRIMARY KEY CLUSTERED (出仓ID,物料ID)
go

--添加表间关系
ALTER TABLE dbo.进仓明细表 ADD CONSTRAINT FK_进仓明细表_进仓主表 FOREIGN KEY
(进仓ID) REFERENCES dbo.进仓主表(进仓ID)
ON UPDATE CASCADE
ON DELETE CASCADE

ALTER TABLE dbo.进仓明细表 ADD CONSTRAINT FK_进仓明细表_物料明细表 FOREIGN KEY
(物料ID) REFERENCES dbo.物料明细表(物料ID)
ON UPDATE CASCADE
ON DELETE CASCADE

ALTER TABLE dbo.出仓明细表 ADD CONSTRAINT FK_出仓明细表_出仓主表 FOREIGN KEY
(出仓ID) REFERENCES dbo.出仓主表(出仓ID)
ON UPDATE CASCADE
ON DELETE CASCADE

ALTER TABLE dbo.出仓明细表 ADD CONSTRAINT FK_出仓明细表_物料明细表 FOREIGN KEY
(物料ID) REFERENCES dbo.物料明细表(物料ID)
ON UPDATE CASCADE
ON DELETE CASCADE

go
--为数据数据处理添加视图
create view qry进仓单
as
select b.物料ID,a.进仓日期,进仓数量=sum(b.数量)
from 进仓主表 a join 进仓明细表 b on a.进仓ID=b.进仓ID
group by b.物料ID,a.进仓日期

go
create view qry出仓单
as
select b.物料ID,出仓日期=a.领料日期,出仓数量=sum(b.数量)
from 出仓主表 a join 出仓明细表 b on a.出仓ID=b.出仓ID
group by b.物料ID,a.领料日期

go
create view qry进出记录
as
select 物料ID=isnull(a.物料ID,b.物料ID)
,a.进仓日期,进仓数量=sum(a.进仓数量)
,b.出仓日期,出仓数量=sum(b.出仓数量)
,日期=isnull(a.进仓日期,b.出仓日期)
from qry进仓单 a full join qry出仓单 b
on a.物料ID=b.物料ID and a.进仓日期=b.出仓日期
group by isnull(a.物料ID,b.物料ID),a.进仓日期,b.出仓日期,isnull(a.进仓日期,b.出仓日期)

go
--初始化数据
insert into 物料明细表
select 'A-001','皮纸','20×30×50','红','张','纸'
union all select 'B-002','磁铁','20×10×50','','块','五金'

insert into 进仓主表
select 'J-20031015-001','SA001','2003-10-15','123456',1
union all select 'J-20031015-002','SA002','2003-10-15','123457',1
union all select 'J-20031017-001','SA002','2003-10-17','123456',2

insert into 进仓明细表
select 'J-20031015-001','A-001',200
union all select 'J-20031015-002','B-002',99
union all select 'J-20031017-001','A-001',150.5

insert into 出仓主表
select 'C-20031015-001','Dept_P','2003-10-15','1111111','P'
union all select 'C-20031016-001','Dept_P','2003-10-16','1111112','P'

insert into 出仓明细表
select 'C-20031015-001','A-001',50
union all select 'C-20031016-001','A-001',50
go


--得到要求的结果
--进出记录表
select a.*
,进仓日期=convert(varchar(10),b.进仓日期,120),b.进仓数量
,出仓日期=convert(varchar(10),b.出仓日期,120),b.出仓数量
,当前库存=isnull((select sum(进仓数量) from qry进仓单 where 物料ID=a.物料ID and 进仓日期<=b.日期),0)
-isnull((select sum(出仓数量) from qry出仓单 where 物料ID=a.物料ID and 出仓日期<=b.日期),0)
from 物料明细表 a left join qry进出记录 b on a.物料ID=b.物料ID
order by a.物料ID,b.日期

--当前库存表
select a.*,b.当前库存
from 物料明细表 a left join (
select 物料ID,当前库存=isnull(sum(进仓数量),0)-isnull(sum(出仓数量),0) from qry进出记录 group by 物料ID
)b on a.物料ID=b.物料ID
order by a.物料ID

go
--删除测试环境
drop view qry进仓单,qry出仓单,qry进出记录
drop table 进仓明细表,出仓明细表,物料明细表,进仓主表,出仓主表

zjcxc 2003-12-04
  • 打赏
  • 举报
回复
--库存统计示例:

--数据测试环境
create table 物料明细表(物料ID varchar(6),名称 varchar(8),规格 varchar(10),颜色 varchar(4),单位 varchar(4),所属类别 varchar(6))
insert into 物料明细表
select 'A-001','皮纸','20×30×50','红','张','纸'
union all select 'B-002','磁铁','20×10×50','','块','五金'

create table 进仓主表 (进仓ID varchar(20),供应商ID varchar(10),进仓日期 datetime,原凭证号 varchar(10),入库类型 int)
insert into 进仓主表
select 'J-20031015-001','SA001','2003-10-15','123456',1
union all select 'J-20031015-002','SA002','2003-10-15','123457',1
union all select 'J-20031017-001','SA002','2003-10-17','123456',2

create table 进仓明细表 (进仓ID varchar(20),物料ID varchar(6),数量 decimal(20,2))
insert into 进仓明细表
select 'J-20031015-001','A-001',200
union all select 'J-20031015-002','B-002',99
union all select 'J-20031017-001','A-001',150.5

create table 出仓主表 (出仓ID varchar(20),部门ID varchar(10),领料日期 datetime,领料单号 varchar(10),出库类型 varchar(1))
insert into 出仓主表
select 'C-20031015-001','Dept_P','2003-10-15','1111111','P'
union all select 'C-20031016-001','Dept_P','2003-10-16','1111112','P'

create table 出仓明细表 (出仓ID varchar(20),物料ID varchar(6),数量 decimal(20,2))
insert into 出仓明细表
select 'C-20031015-001','A-001',50
union all select 'C-20031016-001','A-001',50
go

--为数据数据处理添加视图
create view qry进仓单
as
select b.物料ID,a.进仓日期,进仓数量=sum(b.数量)
from 进仓主表 a join 进仓明细表 b on a.进仓ID=b.进仓ID
group by b.物料ID,a.进仓日期

go
create view qry出仓单
as
select b.物料ID,出仓日期=a.领料日期,出仓数量=sum(b.数量)
from 出仓主表 a join 出仓明细表 b on a.出仓ID=b.出仓ID
group by b.物料ID,a.领料日期

go
create view qry进出记录
as
select 物料ID=isnull(a.物料ID,b.物料ID)
,a.进仓日期,进仓数量=sum(a.进仓数量)
,b.出仓日期,出仓数量=sum(b.出仓数量)
,日期=isnull(a.进仓日期,b.出仓日期)
from qry进仓单 a full join qry出仓单 b
on a.物料ID=b.物料ID and a.进仓日期=b.出仓日期
group by isnull(a.物料ID,b.物料ID),a.进仓日期,b.出仓日期,isnull(a.进仓日期,b.出仓日期)

go

--得到要求的结果
--进出记录表
select a.*
,进仓日期=convert(varchar(10),b.进仓日期,120),b.进仓数量
,出仓日期=convert(varchar(10),b.出仓日期,120),b.出仓数量
,当前库存=isnull((select sum(进仓数量) from qry进仓单 where 物料ID=a.物料ID and 进仓日期<=b.日期),0)
-isnull((select sum(出仓数量) from qry出仓单 where 物料ID=a.物料ID and 出仓日期<=b.日期),0)
from 物料明细表 a left join qry进出记录 b on a.物料ID=b.物料ID
order by a.物料ID,b.日期

--当前库存表
select a.*,b.当前库存
from 物料明细表 a left join (
select 物料ID,当前库存=isnull(sum(进仓数量),0)-isnull(sum(出仓数量),0) from qry进出记录 group by 物料ID
)b on a.物料ID=b.物料ID
order by a.物料ID

go
--删除测试环境
drop table 物料明细表,进仓主表,进仓明细表,出仓主表,出仓明细表
drop view qry进仓单,qry出仓单,qry进出记录

victorycyz 2003-12-04
  • 打赏
  • 举报
回复
先找本书阅读。
txlicenhe 2003-12-04
  • 打赏
  • 举报
回复
一个ERP的例子
www.my-erp.com
shuiniu 2003-12-04
  • 打赏
  • 举报
回复
完成这个设计,至少要有比较全面的了解!!

11,849

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 非技术版
社区管理员
  • 非技术版社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧