Для индексирования данных важным моментом является понимание чувствительности
атрибутов к регистру.
Ключевой операцией для использования индекса является обращение к искомому значению в глобал или локаль, и поиск выполняет непосредственно СУБД, поскольку значения индексов в MUMPS хранятся сортированно.
В обычных случаях используются значения атрибутов как есть. При этом, для того, чтобы найти необходимую запись в индексе, нужно чтобы она существовала в точности в том же виде. Если мы не предпринимаем никаких дополнительных мер, то такой индекс будет чувствителен к регистру. Или, иными словами, сравнение будет выполняться "как есть".
При необходимости искать по индексу нечувствительно к регистру мы должны оба значения - и искомое, и записанное в индексе, привести к единым соглашениям по регистру символов.
Традиционно, большинство систем баз данных использует приведение строк к верхнему регистру, но это необязательное правило.
Одна из проблем, вытекающих из построения регистронезависимого поиска - это то, что после приведения к единому регистру несколько различных значений могут стать равны, например:
Чувствительность к регистру является, вообще говоря, частным примером общей нормировки значений. При внесении данных в базу данных могут нормироваться как сами значения атрибутов, так и их индексные значения. Вот несколько распространенных примеров нормирования значений атрибутов:
Разработчик должен самостоятельно решить, на каком из этапов должна производиться нормировка значений - при изменении значения атрибута или при вычислении индексного значения. Очевидно, что применение нормировки, если она использовалась хотя бы раз, далее всегда необходимо при обращении к индексу.
В случае применения нормированных значений индексов для уникального индекса разработчик должен принять соответствующие меры для разрешения конфликта - что является для базы данных уникальным - оригинальное значение атрибута или его нормированное представление. В такой ситуации традиционным выбором разработчиков является опора на оригинальное значение, и ведение в индексных записях в действительности неуникальных записей, и обеспечение уникальности не структурно, а алгоритмически. В любом случае, у разработчиков обычно есть выбор, что является более важным критерием - ведение уникальности собственно индекса или уникальности значений записей при сохранении нормированности.
Подробнее о книге "MUMPS СУБД"
Ключевой операцией для использования индекса является обращение к искомому значению в глобал или локаль, и поиск выполняет непосредственно СУБД, поскольку значения индексов в MUMPS хранятся сортированно.
В обычных случаях используются значения атрибутов как есть. При этом, для того, чтобы найти необходимую запись в индексе, нужно чтобы она существовала в точности в том же виде. Если мы не предпринимаем никаких дополнительных мер, то такой индекс будет чувствителен к регистру. Или, иными словами, сравнение будет выполняться "как есть".
При необходимости искать по индексу нечувствительно к регистру мы должны оба значения - и искомое, и записанное в индексе, привести к единым соглашениям по регистру символов.
Традиционно, большинство систем баз данных использует приведение строк к верхнему регистру, но это необязательное правило.
Одна из проблем, вытекающих из построения регистронезависимого поиска - это то, что после приведения к единому регистру несколько различных значений могут стать равны, например:
Исходное Нормированное Шар ШАР шар ШАР ШАР ШАРи, в этом случае, при необходимости использовать такой индекс для поиска чувствительно к регистру, необходимо применять дополнительную операцию фильтрации. В ней нужно проверить равенство искомого атрибута атрибуту найденной записи.
Чувствительность к регистру является, вообще говоря, частным примером общей нормировки значений. При внесении данных в базу данных могут нормироваться как сами значения атрибутов, так и их индексные значения. Вот несколько распространенных примеров нормирования значений атрибутов:
- Приведение к единому регистру
- Отбрасывание лидирующих и завершающих пробельных символов
- Замена последовательности пробельных символов на один пробел
- Удаление непечатных символов
- Капитализация названий
Разработчик должен самостоятельно решить, на каком из этапов должна производиться нормировка значений - при изменении значения атрибута или при вычислении индексного значения. Очевидно, что применение нормировки, если она использовалась хотя бы раз, далее всегда необходимо при обращении к индексу.
В случае применения нормированных значений индексов для уникального индекса разработчик должен принять соответствующие меры для разрешения конфликта - что является для базы данных уникальным - оригинальное значение атрибута или его нормированное представление. В такой ситуации традиционным выбором разработчиков является опора на оригинальное значение, и ведение в индексных записях в действительности неуникальных записей, и обеспечение уникальности не структурно, а алгоритмически. В любом случае, у разработчиков обычно есть выбор, что является более важным критерием - ведение уникальности собственно индекса или уникальности значений записей при сохранении нормированности.
Подробнее о книге "MUMPS СУБД"
Комментариев нет:
Отправить комментарий