2013-06-12 35 views
0

我有幾個表,例如:將同一個字段添加到多個表的最佳實踐是什麼?

news: 
id | title | description 
1 | This is first title of news | This is description 
2 | This is second title of news | This is second description 

blog: 
id | title | description 
1 | This is first title of blog | This is description 
2 | This is second title of blog | This is second description 

和另一多於10個表。

我需要添加一個字段「some_state」,它可以有兩個值:0或1

這樣我就可以通過兩種方式去:

1)添加該字段到每個表;

2)創建新表,例如:

tables_some_state: 
id | table_name | table_id | some_state 
1 | news | 1 | 0 
2 | news | 2 |1 
3 | blog | 1 | 1 
4 | blog | 2 | 1 
... 

,並使用左加入此表的每個表在我的疑問。

那麼,我的情況是什麼樣的最佳做法?

+2

一般來說*不好的做法是讓列中包含一個表名 - 當你考慮數據庫設計時,這應該會產生一個紅旗 – fspinnenhirn

+0

這只是一個例子。我的表格字段設置更復雜。我使用2個字段,而不是字段「table_name」,例如「組件」和「元素」,就像那樣。 – webprogrammer

回答

3

只要它是一對一的關係(它就在這裏),我會將它添加到表中。我認爲將這些東西放在一個單獨的表格中的目的是建立一個多對一的關係。

+0

是的,這種方式對我來說更簡單,因爲它會導致編輯最少的代碼行。 – webprogrammer

+0

我決定以這種方式走(案例1),所以我可以檢查接受這個答案。 – webprogrammer

2

讓他們都一個表,並給他們一個「類型」一欄,然後將一列添加到所有的人:

posts: 
id | type | title | description | status 
1 | news | This is the first title of news | This is the description | 0 
2 | blog | This is the first title of blog | This is the description | 1 
... 
+1

'Single Table Inheritance'是一個很棒的技巧,但它確實要求表格幾乎完全相同。這可能或不可能是OP的情況 - 我認爲沒有足夠的信息可以確定,例如,我們可能只會顯示這些字段的一個子集 - 特別是常見的字段。 –

+0

每個表的我的字段集不相同。是的,我只顯示了常見的。 – webprogrammer

1

我個人的看法是創建這些新表和鏈接列其他表格通過id。這將允許一些數據庫標準化/限制數據庫冗餘。以後你最終還可以添加更多的「狀態」。如果你使用的是InnoDB,你也可以添加一些外鍵。

+0

問題是他有經常性的ID,一個用於博客,一個用於新聞等。 – Skarlinski

+0

我在考慮真正創建一個「狀態」表。 IE table_state:|'StateID' |'State' |'Description' | – teynon

+0

哦,並在每個表中添加一列引用StateID?我知道了嗎? – Skarlinski

相關問題