posts - 40,  comments - 4,  trackbacks - 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_<表名>_<主表名>_<外鍵標識>
          posted on 2007-04-09 16:46 larryjava 閱讀(168) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 稷山县| 林芝县| 石楼县| 棋牌| 鱼台县| 岚皋县| 墨脱县| 白水县| 佛冈县| 濮阳市| 长子县| 逊克县| 合阳县| 昌邑市| 厦门市| 府谷县| 胶南市| 昌吉市| 广州市| 基隆市| 盐源县| 卢湾区| 凤凰县| 布尔津县| 乐陵市| 昌宁县| 灵武市| 香港 | 上栗县| 庆云县| 盈江县| 兰坪| 如皋市| 连城县| 龙门县| 化州市| 桂阳县| 横峰县| 高青县| 象山县| 行唐县|