這個發想是起因於在某篇文章讀到一句話?
對於單據流水號若是不連續的狀態,則有可能被認為逃稅?
姑且不對上面那句話的真實性如何,站在設計的角度來看,其實也有幾項優點
1.不用在設計多餘的程式去追蹤哪個使用者操作,且是在甚麼時候
2.保留完整單據資料以利查核
通常對於單據總是會有所謂修改跟刪除的概念,可是就我經驗這對系統來說是個大災難….因此衍伸的還必須有稽核,開關帳等機制..
最簡單的作法就是不要刪除跟更新….不過通常使用者不這樣想…
因此可以考慮的還有退單等機制可以考慮…
不過因為需要把更動到舊有的程式,所以必須採用更彈性的做法
一般情況而言我們也許都直接對資料表做存取,可是這樣會演變成比較僵硬的情況,
為了應付保存完整單據的情況,又不想對舊有系統做太多更動,我們可以此用圖二的情況,
加入的一個代理者,也就是資料庫的View,其優點有:
1.只採用需要用到的欄位,減少對欄位的疑惑
2.可以加入權限控管機制
接下來我們就講到為何要採用View了,若要保存完整單據,只需要把原先刪除的機制變更成只是在資料表產生駐記,證明這筆資料是被刪除的,但是實際上並沒有被刪除,若是採用這樣的機制,只需要在原先的資料表多一個true or false的欄位,
可是因為原先對這資料表的存取程式是必會影響到報表計算等其他影響,勢必變成每個
SQL都得更改,若加入VIEW的代理,我們只需要更改VIEW的SQL組合,並且讓每個原先存取的每個程式都指定VIEW就可了,減少了許多更改的動作