Имам въпрос, на който може да се отговори теоретично или емпирично, в зависимост от това дали това е било напълно постигнато преди или не.
Имам уеб приложение, което изграждам, което може да приюти множество клиенти, всички които имат свои собствени разделени набори от данни. Една специфична функция на този софтуер е фактуриране.
С това всяка фактура, която създавате, ще се увеличава с 1, така че обикновено ще приложим поле AUTO_INCREMENT към идентификатора. Проблемът обаче идва, когато започнем да въвеждаме функционалността за множество клиенти.
Позволете ми да демонстрирам проблема чрез пример:
Клиент А прави първата си продажба и създава фактура за това, която автоматично има идентификатор 1. Докато продажбата е била обработена, той е направил втората си продажба. Когато създава втората си фактура, той забелязва, че нещо не е наред с номерирането на фактурата. Втората му фактура вече има ID 3.
Причината за това е, че клиент Б, който наскоро се е регистрирал в системата, е създал първата си продажба, която е имала идентификатор 2. Сега и двамата клиенти имат неправилно номериране на фактури и това много бързо се превърна в неработещо решение
Трябваше да добавя таблица, наречена invoice_client_increments, която по същество е опорна точка между фактурата и клиента, която съхранява новото увеличение. Въпреки че това работи, работата с него е много разхвърляна.
Когато създавам фактурата, трябва да изтегля последния запис invoice_client_increments за този клиент и да добавя един към него, да вмъкна друг и да го свържа с фактурата. Ако някой изтрие фактура, това увеличение се губи и то няма да се държи както обикновено, а вместо това ще презапише премахнато, когато е създадена фактура.
Има ли по-добър начин за проектиране на база данни, за да се приспособи към това, и по-лесен начин за внедряване на това в Laravel, или правя това, както вече трябва да се направи? Това може да е по-скоро въпрос на най-добра практика, отколкото "Как да направя това?"... Благодаря за отделеното време :)