我們在設(shè)計(jì)數(shù)據(jù)庫的時(shí)候,是否會(huì)突破常規(guī),找到最適合自己需求的設(shè)計(jì)方案,下面來舉個(gè)例子:

 

   常用的鄰接表設(shè)計(jì),都會(huì)添加 一個(gè) parent_id 字段,比如區(qū)域表(國、省、市、區(qū)):

CREATE TABLE Area ([id] [int]  NOT NULL,[name] [nvarchar]  (50) NULL,[parent_id] [int]  NULL,[type] [int]  NULL );

 

name:地域的名稱, parent_id 是父ID,省的父ID是國,市的父ID 為省,以此類推。

type 是區(qū)域的階級: 1:國,2:省,3:市,4:區(qū)

在層級比較確定的情況下,這么設(shè)計(jì)表格沒有什么問題,調(diào)用起來也很方便。

 

但是使用這種鄰接表設(shè)計(jì)方式,并不能滿足所有的需求,當(dāng)我們不確定層級的情況下,假設(shè)我有下面一個(gè)評論結(jié)構(gòu):

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開發(fā),動(dòng)畫培訓(xùn)

 

    用鄰接表記錄這個(gè)評論的數(shù)據(jù)(comments 表):

 

網(wǎng)友評論

  • comment_idparent_idauthorcomment
    10小明我不大認(rèn)同這個(gè)觀點(diǎn)
    21小張我也不認(rèn)同