我有一個數據庫要求,這是您在大多數數據庫介紹中看到的標準開票系統的輕微改動。我的發票系統有多個不相關的「辦公室」。因此,各個發票號碼根據辦公室而不同。實際的發票號碼明顯不同於主鍵。在哪裏存儲另一個表格列的計數器?
例如,辦公室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。
- 遞增1並插入發票。
- 用新的InvoiceCounter號碼更新Office。
這是否有意義?
是否在多個主管局重複使用#1005要求?爲什麼不直接將Office.Id放入Invoice表中並依賴Invoice表上的標識列? –
@NathanSkerl - 我應該提到,每個辦公室的現有數據庫也有一個導入。發票顯然是打印的,因此如果客戶用#1005打電話打印發票,則A中對1005的引用必須完好。 – TheCloudlessSky