2012-03-05 4 views
0

Мне нужно сделать таблицу для хранения данных по порядку игр в категории. Я планировал только иметь Game_ID, Category_ID и Order как 3 поля, но я не уверен, как идти в поле Order.Порядок заказа в категории

Я решил, что у меня просто появятся игры с самым низким номером в поле «Заказ» вверху, которое будет работать нормально, за исключением того, что может быть беспорядочным, когда я хочу переупорядочить. Если у меня 50 игр, и я решил перетасовать несколько, мне нужно будет выполнить обновление SQL в каждой строке этой категории, чтобы обновить заказ.

Это лучший подход или его можно упростить?

ответ

1

Если производительность не является проблемой (и, честно говоря, обычно это не так), я обычно просто обновляю каждый элемент в наборе.

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

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

+0

Нет причин использовать целое поле для поля заказа. Кроме того, убедитесь, что у вас есть уникальный индекс на '(CATEGORY_ID, GAME_ORDER)' - именование столбца после того, как зарезервированное слово во всех РСУБД кажется плохой идеей. –

Смежные вопросы