2014-01-13 23 views
1

這可能是一個基本的數據庫問題,但我更習慣於使用對象而不是表格。假設我有一個物體'流派'的對象'電影'。流派應該使用枚舉類型進行限制(例如,唯一有效的流派是恐怖,動作,喜劇,戲劇)。這應該如何轉換爲數據庫模式?數據庫模式中的枚舉類型

  • 我可以在Movies表中放置'genre'列,並依靠檢查輸入來確保'流派'賦值有效嗎?
  • 或者,我可以包含具有預填充行的流派表,然後在Movies表中包含具有到流派表的外鍵的列?

我傾向於第一種選擇,但有缺陷/等。我不考慮?

回答

1

這是一個有益的啓發:你把從客戶端代碼相同的所有值?

  • 如果這樣做,那麼只需使用查找表。即使您現在不設想添加新值,但需求會隨着時間的推移而變化,並且查找表將允許您在不更改客戶端代碼的情況下執行此操作。你的情況似乎屬於這一類。
  • 如果你不這樣做,那麼枚舉可能更合適 - 無論如何,關於每個不同值的「知識」都包含在客戶代碼中,所以沒有什麼用處可以存儲在數據庫中。

灰色地帶是如果你做一點點的兩個。例如。您需要以特殊方式處理值,但仍然會有一些額外的字段(與每個值關聯),您可以對其進行統一處理(例如,僅將其顯示給用戶)。或者您需要以特殊方式處理某些值。在這些情況下,我會傾向於查找表。


或刪除或修改舊值。