Маршруты с 16-битными гидами кажутся сумасшедшими? - PullRequest
2 голосов
/ 02 ноября 2010

Я только что посмотрел на мою схему базы данных от моего администратора базы данных и использовал 16-битные уникальные идентификаторы в качестве первичного ключа.У меня вопрос, как я использовал это в маршрутизации для MVC.

Что-то вроде http://www.app.com/project/21212/product/212121

Это корпоративное приложение среднего размера, зачем вам нужен GUID для наших таблиц?

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

Так что я думаю, что мои вопросы:

Зачем нам нужны 16-битовые направляющие для нашего первичного ключа?

Как я могу использовать это в маршруте.Маршрут не должен содержать идентификаторы базы данных.

Ответы [ 3 ]

1 голос
/ 02 ноября 2010

В части вопроса БД

Решение о том, какие ключи БД вы собираетесь использовать, должно быть полностью независимым от ваших маршрутов MVC. Администраторы баз данных могут использовать любое значение, которое они считают подходящим для вашего приложения, не беспокоясь о том, как вы собираетесь создавать свои маршруты. Я не мог сказать, имеют ли они смысл для вашего домена или нет.

По части маршрута / URL-адреса

В зависимости от того, что вы пытаетесь сделать, добавление GUID к маршруту может быть не лучшей идеей для маршрута / URL. Авторы «ASP.NET MVC в действии» (стр. 95) дают несколько хороших рекомендаций о том, каким должен быть URL:

  • Просто и чисто
  • * 1016 взломать *
  • Разрешить конфликт между параметрами URL
  • Short
  • Старайтесь не раскрывать идентификаторы базы данных, где это возможно
  • Попробуйте добавить ненужную информацию

Если у вас есть GUID в качестве идентификаторов базы данных, посмотрите, можете ли вы использовать другое значение для составления маршрута к каждому ресурсу / записи. Например, название продукта плюс последние 4 цифры идентификатора базы данных или другое уникальное и удобное для пользователя (см. Руководство) значение, которое вы можете найти на основе информации, к которой вы пытаетесь получить доступ.

1 голос
/ 02 ноября 2010

Давайте посмотрим на эту страницу в качестве примера.Я думаю, что мы все можем согласиться с тем, что StackOverflow является успешным приложением MVC ...

/3739090/marshruty-s-16-bitnymi-gidami-kazhutsya-sumasshedshimi

Что это за "4079861"?Идентификатор базы данных?

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

/3739090/marshruty-s-16-bitnymi-gidami-kazhutsya-sumasshedshimi

/3739090/marshruty-s-16-bitnymi-gidami-kazhutsya-sumasshedshimiFoo

Итак, краткий ответ: даНа маршрутах, вероятно, будет большой уродливый Гуид.Поговорите с вашим администратором базы данных, если у вас есть проблемы с этим.

0 голосов
/ 04 ноября 2010

Вы должны спросить себя: Есть ли другой способ уникальной идентификации моего [вставить имя] ?

@ Марк приводит пример StackOverflow. Приятно то, что это число, даже если оно длинное. Числа лучше, чем GUID.

Возможны следующие варианты:

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

То, что вы в конечном итоге будете использовать, будет полностью зависеть от вашей ситуации и требований.

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