0

情况如下:

[职位]属于一个[职位类别],其中[职位类别]属于一个[行业]

所以,我最初的设计是这样的:一个 Job 有一个 fk 来找到 Job Category,一个 Job Category 有一个 fk 来引用 Industry。但问题是当我想知道这个职位属于哪个行业时,我需要找到职位类别,并根据职位类别id,回顾行业表。所以,我正在考虑进行非规范化。

但是我有两种方法可以做到这一点,我在想哪种方法更好。首先,在同一个地方(工作表)记录所有的东西,包括工作类别、行业。

另一种做法是Job仍然引用Job Category,但是Job Category有一个字段来存储行业信息。

您认为哪种方法更好?谢谢你。

4

2 回答 2

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 关系。

于 2010-07-13T08:17:06.470 回答
1

但这种参照关系一直存在。如果您仅将行业表和工作类别表用于工作详细信息,那么您可以考虑去规范化。但如果这些表也连接到其他一些数据/表,则应审查规范化方案。不应该孤立地进行去规范化。而且,我认为在 RDBMS 上连接三个表的开销并不高。

于 2010-07-13T08:44:04.713 回答