2008-11-14 37 views
3

你更喜歡在數據庫中存儲文本的哪一個?數據的原始外殼,或者某種標準化。另外,我應該用觸發器強制執行此操作嗎?還是應該使用客戶端代碼預處理輸入數據?我應該用大寫還是小寫將所有文本存儲在數據庫中?

我問你,因爲我不確定是否有任何區別,除了額外的處理時間來顯示數據(例如名稱的大寫)。

+1

你知不知道把人們的名字換回「標題大小寫」有多困難? – BoltBait 2008-11-14 19:59:24

回答

12

存放在原始的情況下,除非有其他理由否則。大寫或小寫數據花費的時間可能非常短,並且您永遠不知道您何時需要將真實的原始數據恢復。

1

我不擔心它,只是格式化它,你需要如何使用它的輸出。

1

如果您需要進行大量文本字段搜索(strcol =「aBc」),則可以考慮進行標準化。在一些像postgres這樣的數據庫系統中,索引不會與ILIKE運算符一起使用,儘管文本搜索特定的索引可能會更好地處理這個問題。

3
  1. 在沒有迫切需要 有你的數據變化,不 改變你的數據。
  2. 如果沒有 這個令人信服的理由讓您的數據庫索引區分大小寫,請在數據庫中使用大小寫不敏感的 。
  3. 花時間擔心用戶看到和想要什麼。這會引導你回答你的問題。
5

這顯然取決於你以後需要做什麼。

但是,如果因爲您有興趣加快查找速度(例如按名稱,城市等進行搜索),您可能需要創建不同的索引,以便將其用於查找:

create table case_test (
    id integer, 
    name varchar2(30)); 

create index ucasename on case_test(upper(name)); 

這樣的樣品的查詢將使用的選擇標準不區分大小寫的索引,但與外殼作爲輸入返回原來的名字:在用戶輸入的實際案例

select * from case_test where upper(name) like 'TUCK%'; 
3

商店。作爲一個用戶,如果我喜歡我的名字作爲cHriS,我就這樣輸入它,我喜歡這種方式。 我不喜歡的應用程序更改它只是對一些技術原因

如果要優化搜索,使用單獨的索引,不改變數據。

相關問題