我们在设计数据库的时候,是否会突破常规,找到最适合自己需求的设计方案,下面来举个例子:
常用的邻接表设计,都会添加 一个 parent_id 字段,比如区域表(国、省、市、区):
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 是区域的阶级: 1:国,2:省,3:市,4:区
在层级比较确定的情况下,这么设计表格没有什么问题,调用起来也很方便。
但是使用这种邻接表设计方式,并不能满足所有的需求,当我们不确定层级的情况下,假设我有下面一个评论结构:
用邻接表记录这个评论的数据(comments 表):
comment_id | parent_id | author | comment |
1 | 0 | 小明 | 我不大认同这个观点 |
2 | 1 | 小张 | 我也不认同 |