Использовать объект определенные префиксы и автонумерация для первичных ключей?

Вы должны иметь возможность изменять ориентацию визуализированного изображения / вида / объекта с помощью setLocalRotation.

Например, в моем проекте я использовал приведенный ниже код, который делает визуализированное изображение лицом прямо наружу от обнаруженного изображения.

Node cornerNode;
localPosition.set(-0.0f * image.getExtentX(), 0.1f, +0.5f * image.getExtentZ());
cornerNode = new Node();
cornerNode.setParent(this);
cornerNode.setLocalPosition(localPosition);
cornerNode.setLocalRotation(Quaternion.axisAngle(new Vector3(-1f, 0, 0), 90f));
cornerNode.setRenderable(testViewRenderable);
12
задан Nathan W 18 December 2009 в 01:29
поделиться

9 ответов

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

26
ответ дан 2 December 2019 в 03:19
поделиться

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

Я пришел к выводу, что необходимо в значительной степени всегда использовать суррогатные ключи. Если Вы используете естественные ключи, они могут измениться, и обновление основных / внешних ключей обычно не является хорошей идеей.

7
ответ дан 2 December 2019 в 03:19
поделиться

Я пошел бы для первого. Создание уникальных идентификаторов нужно оставить SQL-серверу, и Вам нельзя было создать уникальные идентификаторы автоволшебно ориентированным на многопотоковое исполнение способом, если они - строки. К моему пониманию необходимо ли было бы обработать это сами так или иначе?

Скорость является другим фактором. Контакт с международными значениями всегда будет быстрее, чем строки. Я сказал бы, что существуют другие преимущества перфекта вокруг индексации, которую могло уточнить намного больше человека здравого смысла SQL, чем я ;)

По моему опыту, наличие идентификаторов строки было сбоем.

4
ответ дан 2 December 2019 в 03:19
поделиться

Ну, я хочу сделать некоторые точки и предложения,

  • Рассмотрите наличие отдельной таблицы для Типа, скажите с идентификатором столбца и Desc, затем сделайте внешний ключ TypeId в этой таблице. Один шаг вперед для нормализации вещи. Но это не может желательный. Сделайте это, если Вы думаете, что это служит некоторой цели

  • Создание его, Строка действительно имеет смысл позже люди при размышлении о смещении к UUID. Вы не должны изменять тип данных затем

[Отредактированный]

Я соглашаюсь с Cletus здесь. Тот суррогатный ключ оказался выгодным в некоторых реальных проектах. Они позволяют изменение, и Вы знаете хорошо, что, изменение является единственной константой.

3
ответ дан 2 December 2019 в 03:19
поделиться

Я лично полагаю, что первый подход далек, намного лучше. Это позволяет программному обеспечению базы данных сделать простые целочисленные сравнения, чтобы найти и отсортировать по ключу, который улучшит операционную производительность таблицы (ВЫБИРАЕТ, сложные СОЕДИНЕНИЯ, ключом ИНДЕКСИРУЙТЕ поиски, и т.д.),

Конечно, я предполагаю, что так или иначе, Вы используете некоторый метод автопостепенного увеличения для создания идентификаторов - или последовательность, AUTO_INCREMENT или что-то подобное. Меня польза, и не создают тех, которые в коде Вашей программы, хорошо?

2
ответ дан 2 December 2019 в 03:19
поделиться

Я предпочитаю Пример 1 по причинам, которые Вы упомянули и единственный аргумент, что я могу думать для использования Примера 2, то, при попытке разместить идентификаторы строки от существующей базы данных (довольно распространенной) однако даже в том сценарии, я предпочитаю использовать следующий подход.

==AssetId(PK)==Type========DeprecatedId====
  12345        "Manhole"   "MH64247"
  155415       "Pit"       "P6487246"
1
ответ дан 2 December 2019 в 03:19
поделиться

Если Ваши активы уже имеют уникальные естественные идентификаторы (такие как сотрудники с их идентификаторами сотрудника), используйте их. Нет никакого смысла создающего другой уникальный идентификатор.

С другой стороны, если нет никакого естественного уникального идентификатора, используйте самый короткий, который Вы можете это гарантировать достаточным уникальным ключам для Вашего ожидаемого размера таблицы (таким как Ваше целое число). Это потребует меньшего дискового пространства и вероятно быстрее. И, кроме того, если Вы должны для использования основанного на операция со строками ключа позже, это - простое задание замены:

  • добавьте первичный ключ жала к таблице aктивов.
  • добавьте строковый внешний ключ к относящимся таблицам.
  • обновите строковые отношения с простой командой UPDATE с помощью целочисленных отношений.
  • добавьте ограничения внешнего ключа для столбцов жала.
  • удалите ограничения внешнего ключа для целочисленных столбцов.
  • удалите целочисленные столбцы в целом.

Некоторые из этих шагов могут быть проблематичными на определенном DBMS, возможно, требуя, чтобы таблица, unload/reload, удалила целочисленные столбцы первичного ключа, но та стратегия в основном, что требуется.

0
ответ дан 2 December 2019 в 03:19
поделиться

I would choose a numeric primary key for performance reasons. Integer comparisons are much cheaper than string comparisons, and it will occupy less space in the DB.

3
ответ дан 2 December 2019 в 03:19
поделиться

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

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

0
ответ дан 2 December 2019 в 03:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: