ERP表結構的設計--第9篇
用日志記錄“開源軟件”的誕生
赤龍 ERP 開源地址:
點亮星標,感謝支持,與開發者交流 kzca2000
碼雲:https://gitee.com/redragon/redragon-erp
GitHub:https://github.com/redragon1985/redragon-erp
赤龍ERP官網:https://www.redragon-erp.com

前言
上一篇文章說了ERP信息化系統設計,數據庫結構只是一筆帶過,今天重點說說我在【赤龍ERP】的表結構里面的都做了哪些特殊的設計,並且為什么這么設計。
ID與編碼
我在每一個表幾乎無一例外的都增加了兩個默認的字段,即ID和Code。這兩個字段看似都是可標識數據的唯一性字段,但為什么要設計兩個呢?它們當然各有用途。
(1)ID是一個表的主鍵,一般都是自增的,主要用於排序、定位、查詢,由於它是數字所以更清晰、速度更快。
(2)Code是唯一鍵,類型多是字符。可用UUID或雪花算法等生成。當然在有具體業務場景的情況下,可以由用戶輸入或按邏輯生成。除了可以具備強語義外,還優先用於外鍵的關聯。
這里做個特殊說明:為什么要用Code做外鍵,ID也可以做外鍵啊。外鍵要具備兩個最大的特點:唯一,不可變。ID由於多是自增或由數據庫的特質生成,所以不能保證在數據遷移時絕對不變。所以使用Code更安全可靠一些。
組織機構
這個字段名為:org_code,表示組織機構。那什么是組織機構呢?簡單說就是獨立的公司或主體。作用主要是用於數據隔離,由於沒有必要為不同公司建立不同的數據表,所以用一個字段將不同公司的數據隔離開。有點像財務的賬套的概念。
操作記錄
在每個表都會增加四個字段,用來記錄誰在什么時間做了數據操作。分別為:
(1)CREATED_DATE(創建時間)
(2)LAST_UPDATED_DATE(最后修改時間)
(3)CREATED_BY(創建人)
(4)LAST_UPDATED_BY(最后修改人)
創建人和創建時間,在數據新增的時候設置;最后修改人和最后修改時間,在數據更新的時候設置
數據權限
信息化系統都需要數據權限的控制,即什么人可以操作哪些數據。一般企業級信息化,數據權限的邏輯都是在組織架構的層面進行控制的。一般包括:自己操作自己的數據、不同級別部門內的數據可共享、整個公司的數據共享。
為了解決上述的數據權限控制的需要,所以增加一個字段DEPARTMENT_CODE(部門編碼)。這個字段只會記錄創建當前數據的人所屬的部門,即這條數據的所屬部門。代碼層面再結合數據權限,即可實現數據權限的管控。
版本與日志表
在需要記錄數據版本的表中增加VERSION(版本號),常見的業務場景就是“變更功能”。下面舉個例子,比如:采購訂單變更。當我們創建了一個采購訂單,並且審批通過后,這個數據本質是不能修改的,但出現需要修改的時候,我們就需要用上采購訂單變更功能。當訂單變更時,需要做的就是版本號+1,並且在日志表生成歷史數據。
自定義字段
自定義字段的作用是讓用戶可以根據自己的業務需要增加一個表的字段並保存數據。做法是需要在一個表中增加attribute字段,多數情況下會預留多個attribute字段,字段名attribute1、attribute2、attribute3以此類推。然后再通過可配置的功能來設置attribute字段和字段中文名的對應關系即可。
帶你了解不一樣的【赤龍ERP】:https://www.redragon-erp.com(赤龍官網查看更多功能)