Есть ли четко определенная разница между «нормализацией» и «канонизацией» данных? - PullRequest
1 голос
/ 21 марта 2019

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

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

В случае JSON:

  • свойства объекта будут помещены в стандартпорядок (возможно, в алфавитном порядке)
  • лишние пробелы будут удалены
  • с отступом либо стандартизированы, либо удалены
  • данные могут даже быть смоделированы в совершенно новом синтаксисе, чтобы обеспечитьвыше

Правильно ли мое определение, и термины взаимозаменяемы?Или существует четко определенная и специфическая разница между канонизацией и нормализацией входных данных?

1 Ответ

2 голосов
/ 22 марта 2019

«Канонизировать» и «нормализовать» (из «канонического (форма)» и «нормальная форма») - это два связанных общих математических термина, которые также имеют конкретное применение в определенных контекстах в некотором точном значении, данном там. Целесообразно обозначить конкретный процесс одним из этих терминов, если применяется общее значение.

Ваши характеристики этих конкретных целей нечеткие. Формальные значения для общих и частных случаев более полезны.

Иногда, учитывая кучу вещей, мы разделяем их (все) на (непересекающиеся) группы, или классы эквивалентности, на группы, которые мы считаем в определенном смысле похожими или одинаковыми, или эквивалентными. Члены группы / класса одинаковы / эквивалентны в соответствии с некоторым конкретным отношением эквивалентности .

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

Нормальная форма может быть канонической или просто одним из нескольких выдающихся членов.

Канонизировать / нормализовать - это найти или использовать каноническую / нормальную форму вещи.

Каноническая форма .

Различие между "канонической" и "нормальной" формами варьируется в зависимости от подполя. В большинстве полей каноническая форма определяет уникальное представление для каждого объекта, в то время как нормальная форма просто определяет его форму без требования уникальности.

Применение определения к вашему примеру: есть ли у вас набор значений, которые вы разделяете, и выбираете ли вы какой-либо член (ы) для каждого класса вместо других членов этого класса? Ну, у вас есть значения JSON, и если вы не смоделируете их заново, вы разбиваете их по элементам того же класса, на которые они отображаются в функции. Таким образом, вы можете разумно назвать результирующие значения JSON каноническими формами входных данных. Если вы охарактеризовали повторное моделирование как применимое ко всем входным данным, то вы также можете разумно назвать форму после повторного моделирования этих канонических значений каноническими формами измененных входных значений. Но если нет, то люди, вероятно, не будут жаловаться на то, что вы называете перемоделированные значения каноническими формами входных значений, даже если технически это не так.

...