數據庫設計:表的設計命名的十個注意點

原文連接:http://www.cnblogs.com/netsql/archive/2010/05/04/1727323.htmlhtml

1.表名通常以【模塊名稱_具體表名】來實現,同一個模塊的前綴是同樣的。(Oracle大小寫敏感,在SQL中能夠不用"_",由於能夠用大小寫一塊兒的寫法。這也是能夠的)程序員

2.表名稱不該該取得太長(通常不超過三個英文單詞,不推薦使用中文拼音,總的長度不要超過30個字符)。表名使用英文的緣由,有些項目有英文版的須要,或者這個項目是給外國作的時候,使用英文是基本的要求,應該說這是一個習慣問題,多學一點英文也不是壞事
 
3.不使用tab或tb做爲表前綴(原本就是一個表,爲何還要說明)。
 
4.一些做爲多對多鏈接的表,可使用兩個表的前綴做爲表名:如:用戶登陸表User_Login,用戶分組表User_GroupInfo,這兩個表創建多對多關係的表名爲:User_Group_Relation(關係統一用Relation)。注意一點,主鍵在作其餘表的外鍵時,或者在被其餘表引用時,字段說明和字段名儘可能保持一致,好比發帖表BBS_Topic裏的用戶字段寫成UI_ID,這樣跟用戶信息表User_Info的主鍵UI_ID保持一致,看起來舒服,對應關係很明確,也不容易錯,先後不一致時容易使人費解。
  
5.當系統中有一些少許的,重複出現的值時,使用字典表來節約存儲空間和優化查詢。如地區、系統中用戶類型的代號等。這類值不會在程序的運行期變化,可是須要存儲在數據庫中。通常數據庫中,都有一個數據字典表,用來保存系統所用到的基礎數據,大型的字段表如省份城市區域的字典表,統一以Dictionary_做爲前綴。
     
6. 與字段有關,默認的一些特殊字段, 不少表中,
  好比一些業務處理表中,除了添加生成的自動編號ID(通常做爲主鍵用),該記錄建立的時間CreateDate(建立時間),該記錄的建立人CreatBy(注意這裏,沒UI_ID(用戶信息表User_Info的主鍵UI_ID),由於還有修改人),最後修改人LastEditBy,最後修改時間LastEditDate。(這些能夠直接使用中文字符,而不使用編碼,提升查詢的效率)
  同時有的時候須要注意,刪除的時候並不真的刪除該記錄,而是添加一個標識位,好比XX_DeleteStaus刪除狀態。1是有效的,0則是無效的。
 
7.在命名錶時,用單數形式表示名稱。例如,使用 Employee,而不是 Employees。
 
8.數據庫中應創建這樣一個表,就是數據庫自己的字段信息,表的說明,也就是數據庫設計文檔的一個表,方便查詢使用,有什麼不明的能夠直接從數據庫查詢,數據庫文檔丟失,註釋丟失,均可以從新起做用。
 
9.每一個表都應該有一個主鍵,這個主鍵最好是數字,並且是遞增的,有不少表的主鍵用32位字符編碼,這樣作的目的更多的是從安全考慮的。由於字符多時索引時效率低,而使用自增列也不是不多,好比添加主表和從表操做時,主表的主鍵是從表的外鍵,這個時候還有取返回值,而後再添加,不能夠同時添加。主鍵能夠用自定義的規則,大部分用MAX(ID)的作法,也能夠自定義一個序列表,有點像序列,或者用時間的年月日秒具體到毫秒。關於列的命名,建議對數據類型也作一些規範,由於很容易肯定,只有四種主要類型:數字,字符,時間,邏輯值,這些在類型上和長度上均可以定好規範,統一塊兒來。
     
10.操做日誌表,登陸日誌表,這是數據庫中必備的兩個表,這個記錄也須要作進一步的保存。這個有兩種情形,一是具體到單個字段的操做日誌,二是整個表的操做日誌。

常見的幾個表具體說明:操做日誌表Sys_OperateLog、登陸日誌表Sys_LoginLog、sql

           系統字典表Sys_Dictionary、系統字典表類型Sys_DicType數據庫

 

操做日誌表Sys_OperateLog
中文名 字段名 註釋
操做日誌編號 OL_ID 索引列,日誌的編號
操做類型 OL_Type 是添加,修改,刪除,查詢等類容(可放在通用字典表)
操做模塊 OL_Module 操做模塊,好比新聞模塊,關聯的是菜單表編號
操做內容 OL_Content 操做了什麼內容,越具體越好(修改前、修改後)
操做人 UI_ID 用戶的信息
操做時間 OL_AddDate 日誌記錄建立時間
操做IP OL_IP 操做人的IP地址
備註信息 OL_Remarks 備註信息,一些其餘的須要說明的信息

 這樣的一個操做日誌比較籠統,不是能具體到具體的字段值更新,若是要具體到某個具體值的更新,則須要設計新的數據庫瀏覽器

通常狀況下須要這樣幾個表,系統中可能已經有了,可是咱們拿到咱們本身的數據庫中來,一個是數據庫列表的表(就是數據庫中有幾個表)(編號,建立時間,建立人,修改時間,修改人,表名,註釋,是否刪除),而後就是數據庫表下面的字段類型(編號,建立時間,建立人,修改時間,修改人,字段名,字段類型,字段精度,字段說明,字段註釋,表的編號),也就是字段列表,這時的日誌操做表能夠這樣設計(編號,表名,被修改的字段名,修改前值,修改後值,操做人,操做時間,相關模塊,操做IP) 這種能記錄修改記錄,可是添加和刪除時記錄就不是很方便控制了。安全

 

登陸日誌表Sys_LoginLog
中文名 字段名 註釋
登陸日誌編號 LL_ID 登陸的日誌編號
登陸人 UI_ID 登陸人
登陸時間 LL_AddDate 登陸時間
登陸IP LL_IP 登陸的IP地址
登陸狀態 LL_Status 登陸是否成功的標識位
登陸瀏覽器 LL_Browser 登陸瀏覽器
登陸分辨率 LL_Resolution 登陸的屏幕分辨率

還有一個就是數據字典表,我看過不少的數據庫設計,類型表一個接一個,沒有放在一塊兒,還有的乾脆寫在註釋裏,有的根本就沒有,這樣某個程序員走了,這個字段就沒人知道了,即便沒走,本身也有可能時間長了忘掉,因此,見一個基礎數據字典表的做用很是重要,其餘的好比地區表(Sys_DicArea),漢語拼音表(Sys_DicCharacter)(用來漢字和拼音的轉換)由於數據量較大,單獨建表。這裏介紹通用的數據字典表。數據庫設計

 

系統字典表Sys_Dictionary
中文名 字段名 註釋
字典編號 SD_ID 字典的編號,能夠直接使用此主鍵編碼(注意刪除時的關聯關係)
字典類型 DY_ID 字典類型的ID,須要創建字典類型表,由於放的是全部的字典表
字典編碼 SD_Code 字典編碼,支持本身編碼(同一類型是惟一的,通常是整數型
字典中文名稱 SD_Name 字典中文名稱(好比男女,好比狀態,能夠放在字典表裏,做爲查看依據)
字典備註 SD_Remarks 字典備註,字典須要一些備註信息
建立人    
建立日期    
修改人    
修改日期    

 

系統字典表類型Sys_DicType
中文名 字段名 註釋
字典類型編號 DT_ID 字典的自動索引號
字典類型名稱 DT_Name 字典類型的中文名稱
字典的備註說明 DT_Remarks 字典使用的備註說明
字典狀態 DT_Status 字典是否刪除,不在使用

 

最後補充一些內容,通常設計數據庫是這個樣子的,可是不排除有些特殊的情形,爲了數據的保密性,數據庫的表名和字段名都是一些看似毫無心義的字符數字,好比Table1,Col1,可是有一個表是說明表,或者有對應的數據庫文檔設計。優化

 

補充:一些列說明了單位類型,能夠在設計數據庫的時候代表,好比HeightIncm, WeightInKg.這樣一目瞭然。編碼

相關文章
相關標籤/搜索