导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

请教一个小小的数据库设计,各位来看看图

levellee 2008-01-13 01:23:18


以上是表关系,

A_Product 是产品
A_Record 是工序
A_Step 是工步

/* 例如 一个产品有分几道工序加工,工序又分几步做完,所以叫工步*/

A_days 是每个员工每天所做相关产品 的产量\质量

现在我把这个表的关系弄成这样,

但是在输入员工绩效的时候, 还可以输入不属于这个产品的工序和工步..怎么限制呢?

也就是A_Days 表里的 product_id record_id step_id

...全文
75 点赞 收藏 15
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
levellee 2008-01-13
明白了
回复
tim_spac 2008-01-13
在日表里有step_id通过A_Step,A_Record,A_Product表的外键->主键关联就能查到每条记录对应的产品
回复
levellee 2008-01-13
看不懂.不好意思,我再查查资料.水平有限.
回复
tim_spac 2008-01-13
在ASP应用中,你可以先将A_Product,A_Record,A_Step的相关信息从库里读出了,用javascript数组动态更新下拉列表的方式让用户选择。
回复
tim_spac 2008-01-13
select Product_Name, Record_Name, Step_Name, d.*
from A_Days d
join A_Step s on s.Step_ID = d.Step_ID
join A_Record r on r.Record_ID = s.Record_ID
join A_Product p on p.Product_ID=r.Product_ID

即可
回复
levellee 2008-01-13
这样的话,要做一个选择
选择产品
1.APPLEA9
出现APPLEA9的工序
||||||||||
再选择
2.粘接
|||||||||||
出现粘接的工步
再选择
3.工步

然后输入生成量什么滴,

这个用ASP实现.

但是在表里一样没记录,这笔资料属于哪个产品.
按ID肯定不现实.
回复
tim_spac 2008-01-13
例如
product:
1, 桌子
2, 椅子

record:
1, 1 /*FKto桌子/, 安装
2, 1 /*FKto桌子/, 油漆
3, 1 /*FKto桌子/, 包装
4, 2 /*FKto椅子/, 安装
5, 2 /*FKto椅子/, 油漆
6, 2 /*FKto椅子/, 装箱

step:
1, 2 /*FKtoRecord.2*/, 打磨
2, 2 /*FKtoRecord.2*/, 上油漆
3, 5 /*FKtoRecord.5*/, 打磨
4, 5 /*FKtoRecord.5*/, 上清漆
...
回复
tim_spac 2008-01-13
我理解这种情况是相同名称的工序,工步;在表里应该是不同的记录(不同的id).
回复
levellee 2008-01-13

Time Space

我也想到这点,

如果输入资料的时候,就麻烦了.

因为NOKIA apple 两个产品.

会有同样的工序,工步

这个怎么处理?
回复
tim_spac 2008-01-13
因为每个工步所隶属的工序、产品信息在A_Step、A_Record表里已经指定了。
回复
tim_spac 2008-01-13
A_Product -- 是产品
(Product_ID int pkey, Product_Name)

A_Record -- 是工序
(Record_ID int pkey, Product_ID int fkey, Record_Name)

A_Step -- 是工步
(Step_ID int pkey, Record_ID int fkey, Step_Name)

A_Days(
ID int pkey
,Step_ID int fkey -- 仅保留这个外键
,otherAttrib)

在应用中选产品、工序、工步
回复
levellee 2008-01-13
是外键.
但是

这三个字段product_id record_id step_id
例子 APPLE 粘接 点胶

输入 NOKIA 也可以输入 粘接 点胶

回复
-狙击手- 2008-01-13
A_days表的三个字段全是外键就行了呀



create table a_days
(
product_id int REFERENCES product(product_id),
record_id int REFERENCES record(record_id),
step_id int REFERENCES step(step_id)


)
回复
levellee 2008-01-13
这种也不行


回复
levellee 2008-01-13
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告