Должен ли я хранить весь текст в моей базе данных в верхнем или нижнем регистре? - PullRequest
3 голосов
/ 14 ноября 2008

Какой из них вы предпочитаете хранить текст в вашей базе данных? Оригинальный регистр данных или какая-то нормализация. Кроме того, я должен обеспечить это с помощью триггеров? или я должен предварительно обработать входные данные с кодом клиента?

Я спрашиваю вас, потому что я не уверен, есть ли какая-либо разница, кроме дополнительного времени обработки для отображения данных (например, использование заглавных букв).

Ответы [ 6 ]

12 голосов
/ 14 ноября 2008

Хранить в оригинальном футляре, если нет причин поступать иначе. Время, затрачиваемое на верхний или нижний регистр данных, вероятно, очень мало, и вы никогда не узнаете, когда вам понадобятся настоящие, оригинальные данные в будущем.

5 голосов
/ 14 ноября 2008

Это, очевидно, зависит от того, что вам нужно сделать с данными позже.

Но если вы спрашиваете, потому что вы заинтересованы в ускорении поиска позже (например, поиск по имени, городу и т. Д.), Вы можете захотеть создать разные индексы, чтобы они вместо этого использовались для поиска:

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 голосов
/ 15 ноября 2008

Хранить в том случае, если пользователь ввел.

Как пользователь, если мне нравится мое имя как cHriS, я ввожу его таким образом, и мне это нравится. Мне не нравится, когда приложение меняет его по каким-то техническим причинам

Если вы хотите оптимизировать поиск, используйте отдельные индексы, не меняйте данные.

3 голосов
/ 14 ноября 2008
  1. При отсутствии насущной необходимости чтобы ваши данные изменились, не изменить ваши данные.
  2. при отсутствии веская причина, чтобы ваш индексы базы данных чувствительны к регистру, используйте без учета регистра в вашей базе данных.
  3. Тратьте время на беспокойство о том, что видит и хочет пользователь. Это приведет вас к вашему ответу.
1 голос
/ 14 ноября 2008

Если вам нужно много искать в текстовом поле (strcol = "aBc"), вы можете подумать о нормализации. В некоторых системах БД, таких как postgres, индексы с оператором ILIKE не используются, хотя определенные индексы текстового поиска, вероятно, справляются с этим лучше.

1 голос
/ 14 ноября 2008

Я бы не беспокоился об этом, просто отформатируйте его так, как вам нужно, чтобы он использовался на выходе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...