У меня есть вопрос, на который можно ответить либо теоретически, либо эмпирически, в зависимости от того, было ли это полностью достигнуто ранее или нет.
У меня есть веб-приложение, которое я создаю, которое может содержать несколько клиентов, каждый из которых имеет свои собственные отдельные наборы данных. Одной из конкретных функций этого программного обеспечения является выставление счетов.
При этом каждый создаваемый вами счет будет увеличиваться на 1, поэтому обычно мы применяем поле AUTO_INCREMENT к идентификатору. Проблема, однако, возникает, когда мы начинаем вводить несколько функций клиента.
Позвольте мне продемонстрировать проблему на примере:
Клиент А совершает свою первую продажу и создает для нее счет, который автоматически имеет идентификатор 1. К моменту обработки продажи он совершил вторую продажу. Когда он создает свой второй счет, он замечает, что что-то не так с нумерацией счетов. Его второй счет теперь имеет идентификатор 3.
Причина этого в том, что клиент Б, недавно зарегистрировавшись в системе, создал свою первую продажу с идентификатором 2. Теперь у обоих клиентов неправильная нумерация счетов, и это очень быстро стало неработоспособным решением.
Мне пришлось добавить таблицу с именем invoice_client_increments, которая, по сути, является связующим звеном между счетом-фактурой и клиентом, в котором хранится новое приращение. Хотя это работает, работать с ним очень грязно.
При создании счета я должен извлечь последнюю запись invoice_client_increments для этого клиента и добавить к ней одну, вставить другую и связать ее со счетом. Если кто-то удаляет счет-фактуру, это приращение теряется, и оно не будет вести себя как обычно приращения, вместо этого оно перезапишет удаленный при создании счета-фактуры.
Есть ли лучший способ спроектировать базу данных для этого и более простой способ реализовать это в Laravel, или я делаю это так, как это уже должно быть сделано? Это может быть скорее вопрос наилучшей практики, а не «Как мне это сделать?»... Спасибо за ваше время :)