2010-12-21 88 views
0

想象一下,你有一個表 - 讓圖謀的例子,這是Orders - 其中有一個名爲type場,這可能是隻有幾個固定值之一(可以說01,爲QuotationOrder)。應該將定義的數字存儲在數據庫中的表中嗎?

如果所有的type可能值通過在數據庫中的另一個表來表示(只typeIDtypeName列?),並Orders作出引用新表?
或者將這些數字保持原樣並將它們記錄在數據庫之外是正常的嗎?

如果這是一個「取決於」的情況:兩種選擇的重要含義是什麼?

我已經在最近的大學分配中使用了第一個選項,但沒有真正考慮原因 - 現在回顧設計,我想知道這是否重要。
我從來沒有查詢過參考表作爲我的應用程序的一部分 - 因爲我沒有「需要」 - 這是否表明參考表是不需要的,或者這是我的應用程序中的一個缺陷,因爲它應該檢查參考表(做什麼的?)?

回答

3

我認爲最大的區別在於,當您在數據庫中包含「查找」數據的參考表(甚至是它們永遠不會被應用程序使用)時,它可以在其他開發者工作後在系統上。 「將文檔記錄在文檔中」的優點在於,將它保留在數據庫中會在應用程序中使用新值時強制更新引用表。隨着時間的推移,書面文檔往往會不同步。

還有一點就是保持基準數據的數據庫的情況下,當其他一些球隊需要連接到您的數據庫級應用程序(即對一些數據挖掘,報告等)可能會有所幫助。

+0

+1數據庫是存儲和引用數據的地方。一個枚舉也是一個很好的解決方案,但是當兩個+控制器(在MVC中)或兩個+大塊的中間件或任何其他數字的定義不同時,存儲數據(包括這種類型的引用數據)最終會招致災難。 – 2010-12-21 13:48:25

1

典型地,第二個表有typeIDtypeName,與作爲TYPEID主鍵,並在訂單表的外鍵。

這些可以稍後用於從客戶端進行過濾。

而且,稍後可能會有更多與實際類型相關的信息,然後可以將它們存儲在同一個表中。

1

如果它的值只對該表有意義,則表明該字段的枚舉類型。

如果這個值在多個表中有意義,我會像你一樣使用一個參考表。

相關問題