2011-08-19 33 views
2

我工作的一個項目,該數據庫具有包含存儲的ID從多個表它是不好的做法,多個ID存儲到一個表列

例如一個TYPE_ID場幾桌:

id | table_type | table id 
============================== 
1 ADDRESS  1 
2 ADDRESS  2 
3 CITY   1 
4 CITY   2 
4 ADDRESS  3 
5 COUNTRY  1 

table_id字段保存無論是從地址表中的ID,或城市表,或國家表

我只是想知道,如果這是很好的設計。或者我應該儘可能避免這種情況?

該表格用於抓取用戶輸入的所有位置。

+2

http://stackoverflow.com/questions/922184/why-can-you-not-have-a-foreign-key-in-a-polymorphic-association/922341#922341 –

+4

** YES!** it甚至違反了數據庫設計的**第一範式**!列值應該是**原子** - 一個單一的值 –

回答

3

答案是:

這取決於。

如果你給的例子表被命名爲Location和你使用它來實現類型繼承,其中AddressCityCountry是特定類型的Location,那麼這種設計可以正常工作。在這種情況下,您的主鍵將位於Location表中,並且其他每個表都將有一個到Location的外鍵。如果這不是你如何使用它,那麼這不是一個正確的規範化數據庫設計。

0

這似乎是一個令人困惑的設計。如果表AddressCityCountry各自都有自己的id字段,則引用它們的表格應分別使用列名稱,如Address_idCity_idCountry_id

您目前的設計嘗試過於通用。這會在以後引起麻煩。

0

看,t如果你可以用你的值做鑰匙。

在這種情況下,您可以組合table_typetable id的主鍵/唯一鍵。

雖然如果table_type只能是幾個值之一,也許可以將類型保存爲enum

+1

我會盡量避免用「Look」開始回覆。不是想在這裏當警察,而是以一種相當激進的語氣開始迴應,無論這是否意圖。 –

相關問題