Можно ли использовать Hex в качестве идентификаторов базы данных? - PullRequest
3 голосов
/ 16 марта 2011

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

, например: 0x1D283F

Мне нужно будет дублировать данные вБаза данных MySQL.Я никогда не использовал Hex в качестве идентификаторов, поэтому я понятия не имею, хорошая ли это идея или плохая, или не имеет значения в любом случае.Я предполагаю, что Auto Increment здесь не сработает, что заставляет меня думать, что это плохая идея.

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

Ответы [ 3 ]

7 голосов
/ 16 марта 2011

Прежде всего, является ли число «шестнадцатеричным» или «десятичным», это просто вопрос внешнего представления, оно не меняет формат хранения. Использование строк чисел в качестве индексов базы данных, очевидно, неэффективно и может препятствовать определенным возможностям и оптимизации БД.

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

3 голосов
/ 16 марта 2011

Вообще говоря, вы хотите, чтобы ваши первичные ключи были бессмысленными и (очевидно) уникальными. Шестнадцатеричный код - это всего лишь один из способов представления числа - снизу это целое число. Итак, я бы преобразовал в int перед сохранением в БД.

Большой вопрос - вы уверены, что они уникальны? Если нет, вы не можете использовать их в качестве основного ключа ....

2 голосов
/ 16 марта 2011

Это плохая идея. ВЫБОР будет быстрее с целочисленными клавишами. В некоторых случаях могут быть преимущества использования строковых ключей, но использование числовых значений, хранящихся в виде строк в качестве ключей, просто глупо.

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