2010-03-24 37 views
0

大多數網站將日期(例如出生日期)信息捕獲爲單個實體(即通過日曆控件),或者作爲單獨的字段(日期,月份,年份)捕獲。用戶界面中的日期表示

  1. 將它們顯示爲單獨的字段有什麼好處嗎?
  2. 它們在數據庫中表示爲DATE數據類型還是單獨的字段。

我只是想了解代表日期字段的優點&缺點。

回答

2

千萬不要把日期分解成單獨的數據庫字段。它是一個事情:一個日期。它在數據庫中作爲單個日期字段。

您不會將金額分成美元和美分的單獨數據庫字段。你會怎麼做數學?你必須重新構建件的數量。

您不會將其他數字分解爲獨立數據庫字段中的單個數字。你會怎麼做數學?你必須重新構建件的數量。

日期也是如此。你很少需要這些作品。當你這樣做時,簡單的功能將提供件。你更經常需要整個日期來進行數學運算。

此外,日期片段(特別是月份和日期)具有如此複雜的關係(每月28到31天,基於看似隨機的規則),您永遠不想嘗試在自己的應用程序軟件中進行數據運算。使用庫。使用數據庫庫。

UI顯示可能有單獨的字段,以使用戶「更容易」。 [就我個人而言,我發現很多領域都是視覺混亂。]但數據庫不應該有單獨的領域。

+0

我確實認同變得難以管理的驗證部分,如果他們單獨管理 – Sam 2010-03-24 17:23:06

+1

@Samuel:不是「硬」:「不可能」。日期計算真的很難正確。試圖在數據庫數據方法之外進行日期計算非常難以得到正確的結果,我寧願將其稱爲「不可能的」。 – 2010-03-24 17:56:09

2

這取決於你打算如何使用數據。如果您只是簡單地顯示它,或者需要從日期中計算出某個人的年齡,請將其存儲在一個日期字段中。如果您需要查看5月份的生日,那麼單獨的字段可能會更好。如果您需要同時執行這兩種操作,則可以通過兩種方式進行存儲,儘管計算的字段最多可以避免必須不斷刪除部分日期的代價。

+0

即使我必須在5月份查找所有的出生日期,如果在組合日期字段上執行查詢,是不是可能的? – Sam 2010-03-24 17:21:50

+0

感謝您對我的評論 – Sam 2010-03-24 17:47:16

+0

的輸入哦,是的,這是可能的,但如果你經常這樣做,你必須使用日期函數來找到它,如果你有一個單獨的計算字段,你只需要在當時使用日期函數插入或更新,而不是每次查詢。 – HLGEM 2010-03-24 17:56:06

1

如果您將其作爲單獨的字段進行編碼,則更容易對頁面進行編碼。但將它們作爲一個單一的實體來做它絕對會更好 - 更好的用戶體驗。

您可以在數據庫中使用任一表示法。我個人可能會將它們合併到一個日期中,以便所有相關數據儘可能以小單元封裝。

任何你需要檢查的東西(比如上面的生日例子)都可以很容易地作爲一個日期字段存儲。

相關問題