Лучший способ сохранить упорядоченный список в базе данных при сохранении порядка - PullRequest
66 голосов
/ 01 декабря 2008

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

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

Очевидным способом было бы просто вставить некоторый OrderField, где я бы назначил число 0 для N, и отсортировать его таким образом.

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

(я использую C # 3,5 с NHibernate и SQL Server 2005)

Спасибо

Ответы [ 12 ]

0 голосов
/ 01 декабря 2008

Ну, я бы сказал, короткий ответ:

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

0 голосов
/ 01 декабря 2008

Я бы порекомендовал оставить пробелы в номере заказа, поэтому вместо 1,2,3 и т. Д. Используйте 10,20,30 ... Если вам нужно просто вставить еще один элемент, вы можете поставить его на 15, скорее чем переупорядочить все в этой точке.

...