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

levellee 2008-01-13 01:23:18


以上是表关系,

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

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

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

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

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

也就是A_Days 表里的 product_id record_id step_id

...全文
116 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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