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

levellee 2008-01-13 01:23:18


以上是表关系,

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

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

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

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

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

也就是A_Days 表里的 product_id record_id step_id

...全文
105 15 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
最近在研究如何用 易语言 连接oracle数据库,搜集了网上很多源码和请教了一些人都没能测试成功。 经过不懈努力,我终于测通了!哈哈哈哈~ 不过,我想吐槽的是: 在搜集资料过程中,发现很多人都说易语言很难连上oracle,讲真,我也觉得官方不够给力! oracle作为全球第一大数据库厂商,为什么出易语言的官方支持库来适配呢? 虽然说可以通过调用windows的odbc来连,但这对不懂的人来说是很困难的一件事! 所以,真心希望官方能开发出oracle的支持库!!! 在测试过程中,我总结了以下几个需要注意的点: 1、无论你的电脑是32位还是64位,都必须安装32位的oracle客户端。安装类型可以是:管理员、运行时。 2、从oracle 11g以后,oracle官方不再提供32位的客户端安装介质。目前最新的oracle客户端为win32_11gR2_client.zip,可直接从官网下载。 3、选择DRIVER连接时,需要先在$ORACLE_HOME/network/admin/tnsnames.ora文件中的定义的一个连接名,测试成功后再将连接名配置在SERVER(连接服务名)中。 4、选择DSN连接时,需要先在OS系统数据源(32位)中配置好数据源,测试成功后再将数据源名称配置在DSN(数据源)中。 只要你按照以上几点来,就肯定可以用易语言连接oracle,并执行简单查询。 我自己的测试代码已分享出来了,需要oracle客户端的朋友可以去官方下载,也可以私信我。 好了,第一次参加这么盛大的活动,小小意思,请各位看官指点,谢谢!

34,575

社区成员

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

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