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