我有以下三个表
Deliveries
DeliveryID A1
-----------|----|
1 | 01 |
2 | 01 |
3 | 02 |
JobLinks
LinkID DeliveryID A1 JobID
------|------------|-----|------|
1 | Null | 01 | 1 |
2 | 3 | Null| 2 |
Jobs
JobID
-------|
1 |
2 |
因此,获得的知识是,Job 1用于交付1和2,而Job 2用于交付3。
一个证明这一点的查询,
SELECT Deliveries.DeliveryID,
Jobs.JobID
FROM Deliveries
JOIN JobLinks
ON JobLinks.DeliveryID = Deliveries.DeliveryID
OR JobLinks.A1 = Deliveries.A1
JOIN Jobs
ON Jobs.JobID = JobLinks.JobID
这将返回每个交付及其相关的作业
DeliveryID JobID
-----------|-----|
1 | 1 |
2 | 1 |
3 | 2 |
我看到的问题是Deliveries.A1不是Unique字段。在创建交付记录后,可以更改它。这意味着每当更改此字段时,我可能必须更新JobLinks表。这对我来说似乎是一个糟糕的设计。我如何设计这些关系以避免这种情况?
答案 0 :(得分:1)
只需使用和ID
自动数字
A1_ID A1_meta
1 01
2 02
然后Deliveries
和JobLinks
会将A1_ID
称为外键
因此,您只能在一个地方更改A1_meta
答案 1 :(得分:-1)
抱歉,我不知道你的需求是什么,但这绝对是糟糕的设计。