標題:數據庫設計規范
版本:V2.0
修訂文檔歷史記錄:
---日期--|---版本--|--說明----
2003.6.5 V1.0 文檔初搞
2003.6.17 V2.0 對1.0 的內容重新整理
數據庫設計規范
1 目的
規范數據庫設計。
2 概述
從數據庫的設計原則 設計文檔幾方面論述數據庫設計的規范思想及命名規則。
3 數據庫應用結構
根據對一般業務系統的分析,將數據庫和程序系統統一進行整體描述,展示數據庫的
表之間以及與程序模塊間的關系。
3.1 數據表和程序模塊的分類
根據“處理特點”,將數據表和程序模塊進行分類如下:
數據表分類:業務數據表、基本編碼表、輔助編碼表、系統信息表、累計數據表、結
算數據表、決策數據表。
程序模塊分類:初始化、業務處理、完整性檢測與修正、結算處理、統計處理。
3.1.1 數據表分類說明
業務數據表:記錄業務發生的過程和結果。如,合同、出倉單、申請單、憑證。
基本編碼表:描述業務實體的基本信息和編碼。如,產品、客戶、供應商、雇員。
輔助編碼表:描述屬性的列表值。如,合同類型、職稱、民族、付款方式。
系統信息表:存放與系統操作、業務控制有關的參數。如,用戶信息、權限、用戶配
置信息、成本核算方式。
累計數據表:存放業務的當前值和累計值。如,當前庫存、當前存款、累計銷售、累
計支出、應收賬款。
結算數據表:存放各個時期末的結存數。如,月末庫存、月末銀行存款、應收賬款月
結。
決策數據表:存放各個時期內發生的統計值。如,月銷售統計、月回款統計、出入庫
統計。
3.1.2 程序模塊分類說明
初始化:系統運行前對系統進行數據的初始化。如,庫存初始化。
業務處理:業務過程的控制和結果記錄。如,合同錄入、費用審批、出入庫。
完整性檢測與修正:對累計數據表進行檢查并自動修正。如對當前庫存、當前存款、
累計銷售的檢查和重新計算。
結算處理:計算并記錄各個時期末的結存數。庫存月結、應收賬款月結。
統計處理:計算并記錄各個時期內發生的統計數。如,統計月銷售、統計月回款、統
計出入庫。
3.2 數據表間的關系
業務數據表<-->基本編碼表 主-外鍵關系。如,合同表<-->客戶編碼表;
業務數據表<-->輔助編碼表 主-外鍵關系。如,合同表<-->付款方式;
業務數據表、累計數據表、結算數據表:累計數據表=結算數據表(上期末) + 業務數
據表(本期內發生)。如當前庫存=上月末庫存數+(本月入庫數-本月出庫數);
決策數據表<-->業務數據表 決策數據表的數據是由業務數據表中數據導出(統計)的;
3.3 數據表與程序模塊間的關系
由一個例子(倉庫管理)來說明數據表與程序模塊之間的關系:
. 系統使用前,由初始化模塊對庫存數(累計數據表)和上月末庫存數(結存數據表)進
行初始化;
. 當有入庫業務發生時,由入庫模塊(業務處理)將入庫單錄入并保存到入庫單明細帳(
業務數據表)中,同時將入庫數累加到庫存數(累計數據表)中;
. 定期或不定期,庫存數核算模塊(檢查完整性檢測與修正)根據上月末的庫存數(結存
數據表)、本月已發生數(業務數據表)檢查當前的庫存數(累計數據表)是否符合,不符合
則給出提示,可手工或自動進行更正(當前庫存數=上月末庫存數+本月入庫數-本月出庫數
);
. 每月初,進行上月的月結處理。月結模塊(結算處理)根據上月初的庫存數(結存數據
表)、上月發生數(業務數據表)計算出上月末的庫存數(累計數據表)。公式為:上月末庫
存數=上月初庫存數+上月入庫數-上月出庫數;
. 每個月月結后,庫存業務月統計模塊(統計處理)統計上月的各種庫存商品的入庫和
出庫數,便于查詢和生成報表,也作為決策支持的數據基礎。
3.4 數據表命名時對數據表分類的考慮
. 業務數據表:t_d_<系統標識>_<表標識>。如銷售系統的合同表 t_d_SH_Contract
或 t_d_SH_合同;
. 基本編碼表:t_b_[<系統標識>]_<表標識>。如客戶編碼表t_b_Customer 或 t_b_客
戶;
. 輔助編碼表:t_a_[<系統標識>]_<表標識>。如合同類別t_a_ContType 或 t_a_合同
類別;
. 系統信息表:t_s_[<系統標識>]_<表標識>。如用戶表t_s_User 或 t_s_用戶;
. 累計數據表:t_t_<系統標識>_<表標識>。如當前庫存表t_t_SO_Stock 或 t_t_SO_
庫存;
. 結算數據表:t_c_<系統標識>_<表標識>。如庫存月結表t_c_SO_StockMonth 或
t_c_SO_庫存月結;
. 決策數據表:t_w_<系統標識>_<表標識>。如月銷售統計表t_w_SH_SellMonth 或
t_w_SH_月銷售統計;
注:[]內的內容表示可選。如“t_s_[<系統標識>]_<表標識>”表示t_s_SH_User 和
t_s_User 都是符合規則的。
4 數據庫結構原則
規定除數據庫設計所遵循的范式外的一些適用原則,在遵循數據庫設計范式的基礎上
,合理地劃分表,添加狀態和控制字段等。
4.1 輔助編碼表
為了使輔助編碼表能起到預期的效能,又不因過多的輔助編碼表難以管理,故對輔助
編碼表的使用作如下規定:
1. 當某輔助編碼表的編碼允許用戶添加時,應設計成“獨立”的數據表;否則,將不
允許用戶添加編碼的各輔助編碼表合并成一個“通用”的輔助編碼表。
2. “獨立”的輔助編碼表與主表的列采用主-外約束保證列數據完整性。
3. “通用”的輔助編碼表與各主表間沒有約束關系,主表列的數據完整性由列說明的
“域”來保證。
4. “通用”的輔助編碼表除編碼和名稱列外,還有一個標識列,用來標識合并前的各
碼表,該標識列+編碼列作為該表的主鍵。
5. 對于“獨立”的輔助編碼表,用戶只可添加新的編碼和改變名稱,并且不能改變一
個編碼所代表的意義;對于“通用”的輔助編碼表,原則上不允許用戶修改,或只有限地
允許修改名稱。
4.2 基本編碼表
1. 基本編碼表可以有如下的標識列:內編碼、外編碼、助記碼、簡稱、全稱。內編碼
(唯一編碼)作為主鍵有程序自動生成,用戶不可見;外編碼(唯一編碼)由用戶按某種
規則自行定義,用戶可見;助記碼為拼音縮,方便錄入,不唯一,重碼時由列表選擇;簡
稱用于列表顯示和報表,以便縮短行寬。以上的列在實現時可視情況和習慣加以刪減。
2. 當碼表的列較多且也行較多時,可將上述的標識列和常用的信息存于一個表,將其
它的信息另表存儲。
4.3 業務數據表
1. 設有‘錄入人’和‘錄入日期’列,由系統自動記錄。
2. 記錄單據的表中設置“自動單據號”,由兩個字符開始以區分單據類型,后跟一數
字序列表示序號。‘自動單據號’由系統自動生成,作為主表的主鍵,不允許用戶修改。
當有對應的紙質單據時,設置“單據號”用于記錄紙質單據的單據號。
3. 明細表中設有行序號,自動記錄行的錄入順序。
4. 設置“存檔標記”列,用于抽取數據到決策數據庫時的更新標記。插入新行或修改
已有行時設置該標記;數據抽取后清除該標記。
5. 對于用于查詢過濾條件的列,不可為空,以免行“丟失”。
6. 對于數值列,不可為空,“0”作為默認值。
7. 對于必要的“冗余”列,如客戶名稱,應有相應的程序保持各“冗余”列的同一性
,以免出現異議。
8. 設置“過程狀態”列和“記錄狀態”列。過程狀態列用于記錄如創建、審核、記賬
、沖紅等狀態;記錄狀態用于記錄如有效、刪除等狀態。
5 數據庫命名原則
5.1 表名
. 業務數據表:t_d_<系統標識>_<表標識>。
. 基本編碼表:t_b_[<系統標識>]_<表標識>。
. 輔助編碼表:t_a_[<系統標識>]_<表標識>。
. 系統信息表:t_s_[<系統標識>]_<表標識>。
. 累計數據表:t_t_<系統標識>_<表標識>。
. 結算數據表:t_c_<系統標識>_<表標識>。
. 決策數據表:t_w_<系統標識>_<表標識>。
5.2 視圖
v_<視圖類型>_[<系統標識>]_<視圖標識>。視圖類型參見《表的分類》。
5.3 存儲過程
p_[<系統標識>]_<存儲過程標識>
5.4 函數
f_[<系統標識>]_<函數標識>
5.5 觸發器
tr_<表名>_<i,u,d的任意組合> (after)
ti_<表名>_<i,u,d的任意組合> (instead)
5.6 自定義數據類型
ud_<自定義數據類型標識>_<數據類型>
5.7 Default
df_<Default標識>
5.8 Rule
ru_<Rule標識>
5.9 主鍵
pk_<表名>_<主鍵標識>
5.10 外鍵
fk_<表名>_<主表名>_<外鍵標識>
附:
為了描述第一部分清楚,請下載瀏覽 《數據表分類描述圖》
visio格式
http://218.242.185.84/bbs/update/20036/20221827CSDN.vsd
圖片格式
http://218.242.185.84/bbs/update/20036/20222035CSDN.jpg