2015-06-30 2 views
1

Я создал базу данных со следующими заголовками столбцов, ID, POI, filename. Я считаю, что должен установить первичный ключ. На данный момент это ID. Тем не менее, клиент может решить изменить порядок своей базы данных, например переместить идентификатор 20 на номер 2. Но поскольку это первичный ключ, его нельзя дублировать. Я попытался добавить дополнительный столбец, я сделал это автоматическое увеличение, а затем сделаю столбец идентификатора основным ключом, однако мне говорят, что столбец автоматического увеличения также должен быть основным ключом. Следовательно, как вы можете создать базу данных, которая позволит перемещать строки?Структурирование базы данных MySQL

+4

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

ответ

3

ID не следует изменять. Когда-либо. Он идентифицирует данные.

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

Похоже, что клиент запрашивает ручное упорядочивание/сортировку. Это отдельная концепция, чем идентификатор, и должна быть отдельной колонкой. Что-то вроде SortOrder возможно. Порядок сортировки не нужен, чтобы быть уникальным и действительно может быть любым целочисленным значением. Поэтому просто пусть это будет именно тот ... целочисленный столбец.

Для случаев использования и деловых операций, в которых применяется порядок сортировки вручную, ORDER BY эта колонка.