Порядок строк в таблице - PullRequest
0 голосов
/ 23 февраля 2012

У меня следующая проблема: я загружаю "dif" -таблицу только с удалениями и вставками.«Изменение» определяется удалением, за которым следует вставка.

В этой таблице нет первичного ключа и поля для упорядочения.Я хочу использовать Hibernate для загрузки этой таблицы.(SELECT obj FROM MyDifTable obj WHERE obj.group = groupId)

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

Мои вопросы:

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

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

С наилучшими пожеланиями, Кай

1 Ответ

3 голосов
/ 23 февраля 2012

Реляционные базы данных основаны на ветви теории множеств. Информация либо в базе данных (в наборе), либо отсутствует. Порядок не является концепцией в наборах, только присутствие является концепцией в наборах. Это означает, что вы должны явно моделировать порядок, если вам это нужно.

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

В нечетном случае вам нужен внутренний порядок, вы должны сделать это, сохраняя порядок вместе с данными в наборе; но чтобы обеспечить наличие предложения order by (авторы запросов могут его опустить), вам также может понадобиться добавить несколько хранимых процедур / представлений данных, чтобы гарантировать, что запрос всегда возвращается с правильным порядком. *

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

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