<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Hopes

    Start Here..

     

    數據庫字典表設計

    數據庫字典表設計

     

    http://junjunbest.iteye.com/blog/395421

     

    ================================================================================================================================

     

    字典表設計及應用舉例      為了響應志峰兄弟的需求,今天抽了點時間寫點關于字典表設計的東西,順便結合一個小的應用對設計做個用例體驗。
    咱先來看看什么叫字典。
         時間緊張,先略了,以后再談呵呵
    字典存在的必要性及他的好處。
         同上^_^
    字典設計思路。
         字典信息在系統中充當基礎參數的角色,基本上有些重要的基本信息是要在系統在為正式業務服務之前就由系統管理員維護進去的,有的字典信息是在使用過程中由系統管理員或者其他用戶維護進去的。

         也就是說,我們有“維護字典信息”的需求,那么我們在設計字典信息表結構的時候就要考慮到這個需求。
         在維護的時候,我們肯定希望能對字典信息分文別類的進行維護,這樣我們需要設計一個字典類類別表(Dic_Type),結構如下:
         ID(字典類型ID) 
      Name(字典類型名稱)

         具體表數據特征請看下面的例子。
         有了類別表后,我們還需要一個存放每個類別的字典信息的具體數據表(Dic_Data):\

         ATID(自動增長的ID,沒有實際作用) 
      TypeID(字典信息歸屬的字典類別ID)
      ID(字典信息ID,在程序中使用的字典ID就是這個)
      Name(字典信息內容)

         這樣,在我們的業務信息表中,存放的和字典相關的字段的值就是Dic_Data中的ID的值,那么就涉及到在界面上顯示信息的問題,如果不做處理,顯示出來的肯定就是原始的字典信息的ID,肯定不是用戶希望得到的,基于這個需求,
      我們為每個類型的字典信息做一個視圖(具體方法見后面的例子),
      將信息表與對應的視圖做關聯查詢就可以得到字典信息ID對應的真正內容。

    應用舉例。
         假定做一個學生信息管理系統
         字典類型表設計如下(Dic_Type):
         ID Name
         1  Sex
         2  ...

         字典內容表設計如下(Dic_Data):
         ATID TypeID ID Name
         1    1      1   男
         2    1      2   女
         3    2      1   ...
         4    2      2   ...
         5    2      3   ...
         6    2      4   ...
        ...  ...    ...  ...

         性別類型字典的視圖(VW_Sex):
         select ID,Name from Dic_Data where TypeID=1

         假設學生信息表如下T_Student:
         ID Name  ... Sex
         1  采采  ...  1
         2  花花  ...  2
         3  剛剛  ...  1

         取學生列表信息可通過如下方法實現:
         select T_Student.ID as StudentID,T_Student.Name as StudentName,VW_Sex.Name as SexName
         from T_Student left join VW_Sex on T_Student.Sex=VW_Sex.ID

         結果如下:
         StudentID  StudentName  SexName
         1              a            男
         2              b            女
         3              c            女

     

    時間倉促,寫的粗糙了點,還請見諒,有時間再補充。。。

    綠色通道:好文要頂關注我收藏該文與我聯系

     

    ================================================================================================================================

     

    我們現在在進行數據庫字典表設計時,有二種方式,其一是傳統的方式,每個字典表都有ID、Name兩字段。第二種方式是將所有字典表的數據放在同一張表中,結構如下:

    TypeTable(typeID,typeName)【主表,用來記錄字典表表名信息】;DataTable(typeID,DataId,DataName)【從表,記錄所有字典表數據信息】

    如性別、婚姻狀態,在TypeTable中是兩條記錄,{02,性別},{06,婚姻狀態};而在DataTable中各有三條記錄{02,0,女 / 02,1,男 / 02,9,其它},{06,0,未婚 / 06,1,已婚 / 06,9,離異}

    另有一張病人列表patient(patientID,SexID,MarryStatusID…)

    現在需要查詢病人信息,sql語句如下:

    Select b.DataName as SexName,c.DataName as MarryStatusName

    from patient a left join DataTable b on b.DataId=a.SexID and b.typeID=’02’

    left join DataTable c on c.DataId=a.MarryStatusId and b.typeID=’06’


    在數據庫中執行該Sql語句,由于DataTable約1000條左右的數據量,相對第一種方式必將對數據庫有一定的影響。

    (當然在實際業務中可能類似的字典表約達5-10個,patient的數據量約500w條)


    但不知道在一個系統中所有字典表獲取數據都采用這種方式對數據庫性能到底影響到什么程度,約降低百分之幾的性能?會有其它隱患沒?

    ================================================================================================================================

    樓上的可能沒明白樓主的意思。

    不是指學歷表和國籍表數據量大,而是指人員表所具有的屬性可能太多(這里不一定指人員表,也可能是其它的實體,即隨著系統的復雜程度增加,實體的屬性增加)。這里以人員為例,說了國籍和學歷兩個屬性,如果人員還有職位,那么必然多出職位表,如果還有其它...

    那即,當取得一條實例的完全數據時,那將進行幾十個表的join,樓主考濾的應該是這個問題。

    person_info(person_id,name,country_id,education_id,position_id,....) 
    country(country_id,name,...) 
    position(position_id,name,...) 
    education(education_id,name,....) 
    ...


    所以樓主采用了另一種設計方式: 
    所有屬性類(屬性本身也是實體,只不過是主表的某個屬性)放置在一個表中,用屬性名和屬性值來區別。 
    persion_info(persion_id,name,...) 
    1 aaa 
    2 bbb 
    attributes(attributes_id,persion_id,attributes_name,attributes_value) 
    1 1 country china 
    2 1 education 小學 
    3 1 position 公司總裁 
    4 2 country usa 
    5 2 education 碩士 
    6 2 postion DBA 

    posted on 2012-08-06 10:35 ** 閱讀(15099) 評論(3)  編輯  收藏

    評論

    # re: 數據庫字典表設計 2014-10-11 17:26 asd

    you is 逗比?  回復  更多評論   

    # re: 數據庫字典表設計 2014-12-11 13:30 dee

    @asd
    哈哈 你在自黑嗎 英文不會說就不要說 說錯了丟人噠  回復  更多評論   

    # re: 數據庫字典表設計 2016-04-27 16:06 dsfasf

    asdasdas  回復  更多評論   


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


    網站導航:
     

    導航

    統計

    公告

    你好!

    常用鏈接

    留言簿(2)

    隨筆檔案

    文章分類

    文章檔案

    新聞檔案

    相冊

    收藏夾

    C#學習

    友情鏈接

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产精品网站在线观看免费传媒| 亚洲精品天堂在线观看| 精品亚洲一区二区三区在线观看| 国产男女性潮高清免费网站| 午夜dj在线观看免费视频| 国产免费毛不卡片| 国产h视频在线观看免费| 国产免费女女脚奴视频网| 免费A级毛片无码A∨免费| 久久九九AV免费精品| 99久热只有精品视频免费看 | 亚洲无码在线播放| 国产亚洲色视频在线| 亚洲一区二区三区自拍公司| 亚洲色偷偷狠狠综合网| 在线日韩日本国产亚洲| 亚洲日韩激情无码一区| 亚洲av不卡一区二区三区| 亚洲精品视频在线| 亚洲熟妇无码久久精品| 亚洲youjizz| 亚洲性无码AV中文字幕| 色偷偷亚洲男人天堂| 丰满少妇作爱视频免费观看| 国产精品九九久久免费视频 | 亚洲国产成人AV在线播放| 亚洲国产成人久久综合| 极品美女一级毛片免费| 国产精品福利在线观看免费不卡| 国产色无码精品视频免费| 在线看片免费人成视久网| 久久精品网站免费观看| 国产一区二区三区在线免费| 国产a v无码专区亚洲av| 亚洲成AV人片在| 亚洲一区二区三区在线| 国产精品亚洲专区无码牛牛| 一区二区在线免费视频| 日韩精品久久久久久免费| 色妞WWW精品免费视频| 免费成人黄色大片|