我們在設(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ū)域的階級(jí): 1:國,2:省,3:市,4:區(qū)
在層級(jí)比較確定的情況下,這么設(shè)計(jì)表格沒有什么問題,調(diào)用起來也很方便。
但是使用這種鄰接表設(shè)計(jì)方式,并不能滿足所有的需求,當(dāng)我們不確定層級(jí)的情況下,假設(shè)我有下面一個(gè)評論結(jié)構(gòu):
用鄰接表記錄這個(gè)評論的數(shù)據(jù)(comments 表):
comment_id | parent_id | author | comment |
1 | 0 | 小明 | 我不大認(rèn)同這個(gè)觀點(diǎn) |
2 | 1 | 小張 | 我也不認(rèn)同 |