Предоставление пользователям уникальных идентификаторов в форме auto_increment - PullRequest
0 голосов
/ 25 сентября 2011

Позвольте мне объяснить, возьмите систему инвентаризации.У вас есть предметы, и у вас есть комнаты.Если у меня есть таблица для предметов, это означает, что все данные вставляются в одну и ту же таблицу.Следовательно, первичный ключ (item_id) имеет значение auto_incremented 1. Таким образом, «Джон» регистрируется через две недели, и его первый идентификатор элемента может быть 210. Как я могу дать каждому пользователю свой собственный «id»?Не прибегая к созданию собственной таблицы, которая могла бы запутаться, если бы у меня было 1000 пользователей.

| item_id | item_name | user_id |
|    1    |  sofa     |    1    |
|    2    |  ps3      |    1    |
|    3    |  ipad     |    1    |
|    4    |  laptop   |    2    |

Пример URL:

http://domain.com/item/view/1

Джон получит URL http://domain.com/item/view/210 для своегопервый пункт.

Если это кому-то поможет, вот что я в итоге сделал.

Создайте таблицу сопоставления.В моем случае "users_items" с item_id и user_id и удалите первичный ключ.

SELECT case when item_id IS NULL then isnull(max(item_id)+1) else max(item_id) +1 end as item_id 
    FROM users_items WHERE user_id = $user+id;

Ответы [ 2 ]

1 голос
/ 25 сентября 2011

Если речь идет только о местах, где идентификатор элемента виден пользователю, почему бы не сохранить первый item_id для каждого пользователя в некотором столбце, а затем просто добавить желаемый идентификатор (например, из URL) к этому номеру? Например, в таблице пользователей для пользователя с id = 2 значение этого столбца будет равно 4, а когда он откроет url / item / view /% X, система добавит (% x-1) к 4 и получит реальный item_id.

1 голос
/ 25 сентября 2011

Возможно, создайте дополнительный столбец item_code, который вы можете заполнить чем-то вроде

SELECT ISNULL(MAX(item_code) + 1) FROM item
WHERE user_id = 2

Учитывая, что item_id является суррогатным ключом, не должно иметь значения, какое это значение, пользователь не беспокоится об этом, ноКод товара может быть кодом для отображения пользователем.

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