2010-10-13 54 views
0

數據如出生月份,日期和年份,用戶的年齡,性別/性別等。這些應作爲文本還是以ID爲基礎存儲在數據庫中?基於ID的意味着它們將具有查找值。用法是例如:用戶註冊將記錄年齡,用戶配置文件將有一個尋求合作伙伴的年齡等,所以年齡和其他數據可以在多個地方使用。在後端將有分析推動我使用查找表甚至像性別只有2-3值的小事情。用於基本用戶輸入的查找表?

回答

0

您將要引用數據類型或數據庫具有avilable。對於mysql:http://dev.mysql.com/doc/refman/5.0/en/data-types.html

請勿使用您提到的任何字段作爲主鍵。創建'id'列或使用用戶的用戶名。

這裏是田野數據庫:

  • 生日=日期
  • 年齡= TINYINT(從技術上講,你不需要這個,因爲你總是可以判斷它基於他們的生日和當前日期這取決於你在做什麼)
  • 性別=枚舉
+0

我不是指類型。我的意思是價值觀。年齡從1到120.所有這些值 - >我們是否將這些數據作爲文本字段數據存儲在數據庫中,還是應該是像Age_id,Age這樣的查找表,其中每行是從1到120之間的一個數字,因此我們可以使用FK參考它。我問,因爲我有一個完整的分析組件需要設計出來,因此跨表格映射數據和維護標準值對整個系統非常重要。就像我已經看到的那樣,出生年份在所有可能的年份都有查找表。與此同時,我看到很多人把它作爲日期/文本存儲起來。 – Karem 2010-10-13 19:17:53

+0

@Karem我認爲我的答案和他的基本相同。對於你提到的領域,你需要找到適合你想存儲的數據類型。日期字段可以在一個字段中保存月份,日期和年份,然後如果您只需要一個月份,則可以使用數據庫功能將其分割出來。年齡可以從出生日期開始計算,因此存儲是多餘的。 – 2010-10-13 21:30:43

0

我不會跟你提到的領域查找表打擾。出生月份,日期,年份都可以封裝在單個日期字段(帶日期類型,而不是文本)中,然後在需要時與數據庫功能分開。年齡只是一個數字,這是你所有的ID字段將是,所以沒有太多的意見,除非你想實際限制年齡範圍,在這種情況下,你可以使用檢查約束,而不是查找,如果你需要限制到實際範圍(年齡> = 1,年齡< = 20)。性別/性別是我可能考慮查找的唯一一個,但由於可能的價值非常少,因此檢查約束就足夠了。

哦,我不知道你在用什麼分析方法,但是任何值得分析的分析軟件都可以自行生成字段域(表格字段中的唯一值列表),特別是對於你提到的字段。如果你正在構建你自己的分析(不確定,根據你對另一個海報解決方案的評論),你可以很容易地進行查詢來做你正在談論的內容。