2015-11-13 8 views
0

Я хотел бы создать суррогатный ключ для таблицы улья, но тот, который может быть реплицирован каждый раз, когда данные были помещены в таблицу. Другие таблицы будут ссылаться на эту таблицу через ключ суррогата, и таблица может быть восстановлена, чтобы добавить больше строк, и эта связь не будет нарушена. Моя мысль состоит в том, чтобы в принципе иметь составной ключ всех столбцов в таблице.Суррогатный ключ из всех столбцов хэш

Является ли целесообразным объединить все мои столбцы и взять хеш-память md5 этой строки, чтобы использовать ее в качестве простого подхода к этой строке?

Проблемы, которые я вижу с этим решением являются:

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

заметки по данным:

  • Данные разделяются по дням, и каждый день около 100 тыс. Строк для .
  • Есть случаи, когда две строки имеют одинаковые данные и это нормально, если они в конечном итоге имеют тот же ключ.

ответ

0

Вы сами ответили на свой вопрос:

Там нет реальной гарантии того, что хэш-значения являются уникальными (хотя с моими номерами, столкновения очень маловероятно)

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

Вам нужно вернуться и спросить себя, ПОЧЕМУ вы хотите этот суррогатный ключ. Если он используется только для уникального идентификатора, то используйте уникальный тип идентификатора вашей базы данных и сделайте с ним.

Если есть потребность в бизнесе (необходимо повторить SK < - зачем?), Тогда вернитесь к этой причине и попробуйте и предложите более простое решение для этого.

(Мы попытались хэш для обнаружения изменений типа2 - это не сработали, и мы вернулись в колонну по сравнении столбцов)

Это касается меня:

Есть случаи, что два ряда имеет точный одни и те же данные, и это нормально, если они в конечном итоге с тем же ключом

Если у вас есть 2 записей в базе данных, которые точно так же, то вам не хватает данных: даже последовательность или метка времени, то, что могут быть использованы для отличительное св`ойство вида т. е. ваши записи. Если у вас нет естественного ключа, вы, вероятно, чего-то не замечаете.