前言引言1、編寫目的 本文檔是項目方案的重要組成部分,編寫數(shù)據(jù)庫設(shè)計文檔的目的是:明確數(shù)據(jù)庫的表名、字段名等數(shù)據(jù)信息,用來指導(dǎo)后期的數(shù)據(jù)庫腳本開發(fā)、本文檔遵循《數(shù)據(jù)庫設(shè)計和開發(fā)規(guī)范》。使用對象是需求人員、系統(tǒng)設(shè)計人員、開發(fā)人員、測試人員。 2、術(shù)語表 定義文檔中涉及的重要術(shù)語,為使用者在閱讀時提供必要的參考信息。 術(shù)語表 3、參考資料 參考資料 數(shù)據(jù)庫環(huán)境說明數(shù)據(jù)庫環(huán)境說明 備注:在實際開發(fā)中可能需要DBA配合 數(shù)據(jù)庫名門規(guī)則提示:如果本數(shù)據(jù)庫的命名規(guī)則與實際不一致,請做出解釋。 1、基本命名原則 ?規(guī)范:字母全部小寫原則 所有數(shù)據(jù)庫對象命名字母全部小寫,統(tǒng)一大小寫有助于在多數(shù)據(jù)庫間轉(zhuǎn)移。 ?規(guī)范:字符范圍原則 只能使用英文字母、下劃線、數(shù)字進(jìn)行命名,且首位字符必須是英文字母。 ?規(guī)范:分段命名原則 命名中多個單詞間采用下劃線分割,以便閱讀同時方便某些工具對數(shù)據(jù)庫對象的映射。例如:user_name。 ?規(guī)范:不要用保留詞 數(shù)據(jù)庫對象命名不能直接使用數(shù)據(jù)庫保留關(guān)鍵字,但分段中可以使用。如user不能用于表名、列名等,但是user_name可以用于列名,user_info也可以用于表名。 ?規(guī)范:同義性原則 對于同一含義盡量使用相同的單詞命名,不管使用英文單詞、英文縮寫還是拼音首字母,以免引起誤解。如telphone的A表中表示固定電話號碼,在B表中就不應(yīng)該用于表示移動電話號碼。盡量避免同一單詞表示多種含義的情況。 ?規(guī)范:命名方式一致原則在一個系統(tǒng)、一個項目中盡量采用一致的命名方式,都采用英文單詞或者拼音首字母。尤其要避免在一個對象命名中同時采用英文單詞和拼音首字母。如確實需要在一個項目中采用兩種命名方式,考慮系統(tǒng)功能設(shè)計相關(guān)表(開發(fā))使用英文單詞命名,業(yè)務(wù)相關(guān)的表(實施)使用拼音首字母。 2、命名前綴規(guī)范 ?規(guī)范:以下對象命名采用固定前綴進(jìn)行命名,前綴表示數(shù)據(jù)庫對象的類型,前綴代碼規(guī)范如下: 命名前綴規(guī)范 3、表和列規(guī)范 3.1 表規(guī)范 ?規(guī)范:表名采用多段式命名,各單詞間用下劃線分隔; ?規(guī)范:表名只允許用英文字母、下劃線、數(shù)字進(jìn)行命名,不允許用中文或者其他符號; ?規(guī)范:表名全部字母小寫; ?規(guī)范:根據(jù)歷史習(xí)慣各系統(tǒng)常用表類前綴作如下約定: 表規(guī)范 ?建議:表名也用于相關(guān)索引、分區(qū)、分區(qū)表空間、約束、主鍵等命名,因此為了避免相關(guān)對象命名長度超過限制,建議表名長度不要超過20。 3.2 列規(guī)范 ?建議:列名只允許用英文字母、下劃線、數(shù)字進(jìn)行命名,不允許用中文或者其他符號。 ?規(guī)范:列名字母全部小寫。 ?規(guī)范:列名采用多段式命名時,各單詞間用下劃線分隔; ?規(guī)范:日期類型字段推薦以“_date”結(jié)尾的名字命名,時間類型的字段推薦以“_time”結(jié)尾的名字命名。 3.3 常用字段規(guī)范 常用字段規(guī)范 4、物理表設(shè)計4.1 用戶信息表 用戶信息表 MySQL腳本: create table sys_user( id varchar(32) not null comment '主鍵id' primary key, user_name varchar(30) not null comment '用戶名', mobile int(11) null comment '手機號碼', password varchar(30) null comment '密碼', status char(2) default '0' null comment '狀態(tài)(0-可用,1-不可用,2-刪除)', create_time timestamp default CURRENT_TIMESTAMP null comment '創(chuàng)建時間', update_time timestamp default CURRENT_TIMESTAMP null on update CURRENT_TIMESTAMP comment '更新時間') comment '用戶信息表'; |
|