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