即使您不希望對它執行數學運算,我也沒有看到將郵政編碼作爲數字存儲的問題。
在我們的企業數據倉庫中,我們是來自許多遺留系統的數據的接收者。結果,我們看到很多垃圾數據被使用。
以我們的情況爲例,我們有一個地理標識符是零填充的4位數字「數值」。該字段通常用於將表連接在一起。
我會採取兩種方法之一: 1)聲明列長度爲4的一個字符字段和添加約束LIKE '[09] [09] [09] [09]' 2)將其定義爲數字長度爲4,如果用戶需要,則只在「僅在顯示時顯示」格式。
方法數字1爲您節省了不斷格式化的麻煩,這沒什麼大不了的,但如果您經常過濾甚至索引/加入列,我會考慮說我們選擇了#2選項。
第三個原因是我的經驗是,當向數據庫添加約束或者他們是無知時,人們只是懶惰。我個人認爲這更懶惰。我發現確實存在的約束主要應用於原始捕獲數據的應用程序中的編輯,而這些編輯並不均勻應用。
因此,我們的數據倉庫最終收到各種各樣的變化,包括與零值不一致的預填充或值的正當性。
將某些東西定義爲INTEGER時,會自動獲得更高效的存儲空間,在列上編制索引時,以及編輯每個人都能理解的內容,並且更有可能通過各種功能的數據庫設計人員在傳統系統中一致地應用。
我對選項#1沒有任何問題,除了在索引中使用該字段以及我一度接受一個字段爲apha數字的方法之外,人們傾向於將更多的垃圾投入其中。
以我們的Peoplesoft員工標識爲例。有人決定在僱員面前添加一個「X」,填寫6個字符填入「數字」,以表明該員工是承包商。這違反了我個人的做法,不將單獨的信息組合成單個字段。這導致了各種系統中的各種不一致問題。如果這個字段是數字,沒有人會試圖這樣做。
評論?
是的。我確實花了更多的時間格式化鏈接,而不是編寫實際的問題 – 2009-04-14 14:20:11