У меня есть требование к базе данных, которое немного искажает стандартную систему выставления счетов, которую вы видели в большинстве представлений БД. Моя система выставления счетов имеет несколько «офисов», которые не связаны между собой. Таким образом, соответствующие номера счетов отличаются для каждого офиса. Фактический номер счета-фактуры явно отличается от первичного ключа.
Например, офисы A и B могут иметь разные счета # 1005.
Есть ли лучший способ хранения счетчика для другого стола?
create table Offices (
Id integer primary key,
InvoiceCounter integer not null,
Name varchar(32) not null
);
create table Invoices (
Id int primary key,
InvoiceNumber int not null,
Comment varchar(512) not null
-- other columns...
);
Это алгоритм, о котором я подумал при создании нового счета:
- Получить текущий счет InvoiceCounter для Office.
- Увеличьте на единицу и вставьте со счетом.
- Обновите Office, указав новый номер InvoiceCounter.
Имеет ли это смысл?