情况如下:
[工作]属于[工作类别],[工作类别]属于[工业]
所以,我的初步设计是这样的: Job有一个fk可以找到工作类别,而一个工作类别有一个fk可以引用Industry。 但问题是,当我想知道工作属于哪个行业时,我需要找到工作类别,并根据工作类别ID,回顾行业表。所以,我在考虑进行去规范化。
但我有两种方法可以这样做,我认为哪种方法更好。首先,记录所有内容,包括工作类别,行业在同一个地方(工作表)。
另一种方法是Job仍然引用Job Category,但Job Category有一个存储行业信息的字段。
您认为哪种方法更好?谢谢。
答案 0 :(得分:2)
你的第二种方法很好。您描述的问题,即为某个特定工作获得行业,实际上不是问题。请参阅以下结构:
Table jobs
ID PK
REF_CATEGORY FK
Table jobcategories
ID PK
REF_INDUSTRY FK
Table industries
ID PK
现在,为了一个特定的工作获得行业:
SELECT j.ID, i.ID
FROM jobs j
JOIN jobcategories c ON j.REF_CATEGORY = c.ID
JOIN industries i ON c.REF_INDUSTRY = i.ID
有时候非正规化有很好的理由,但在这种情况下你不应该。如果将JOB,JOBCATEGORY和INDUSTRY放在一个表中,您就有可能拥有属于多个行业的工作类别,从而打破了您的1-n关系。
答案 1 :(得分:1)