2012-03-06 32 views
0

,我有兩個類型的工作職位 - 公司就業崗位和項目就業崗位。下面的是輸入欄(在前端)每個:優選的數據庫設計的就業崗位

*company* 
- company name 
- company location 
- company description 

*project* 
- project name 
- project location 
- project description 
- project type 

會得到更好的數據庫設計的過程是什麼 - 一個表,保持所有領域的獨立 -

`job_post` 
- company_name 
- company_location 
- company_description 
- project_name 
- project_description 
- project_type 
- project_location 

一表結合字段 -

`job_post` 
- name 
- location 
- description 
- project_type 
- is_company (i.e., whether a company (True) or project (False) 

還是兩張表或其他?爲什麼這種方式比其他方式更可取?

回答

2

你已經確定你的OP 3個主要對象;工作,項目和公司。每個對象都將有自己的屬性,其中沒有將關聯到其他對象,所以我會建議一些類似於(示範只):

job 
    id 
    name 

company 
    id 
    name 

project 
    id 
    name 

link_job_company_project 
    job_id 
    company_id 
    project_id 

這種類型的模式將允許您添加對象在不影響其他對象的情況下,通過鏈接表把它們全部結合到一個'工作崗位'中。

5

取決於很多因素,包括這項工作的最大尺寸,我甚至會進一步規範數據比2個單獨的表,也許有公司名稱表,等等...在更快的查詢連接多個表的結果而不是一個長長的永無止境的充滿你所有信息的桌子。如果你想爲項目添加更多的領域而不是公司?

總之,我肯定會使用多個表。

+0

+1是的。通常應該將事情分解成最小的部分以獲得最大的靈活性。 – 2012-03-06 04:34:38

1

這無疑得到了與存儲在表中的數據量有關。在抽象視圖中,一張表看起來非常簡單。但是,正如Ryan所說,如果明天需求發生變化,以及爲一種類型的公司或項目添加更多列,那麼該怎麼辦?如果您預測未來將在表中存儲大量數據,即使我希望使用2個表,這將避免對大量數據進行不必要的過濾,這是性能開銷。