父母子女关系的方法

时间:2014-08-27 09:08:29

标签: sql-server sql-server-2008 relational-database

我的数据库中有以下实体:

  1. 文件夹
  2. 项目
  3. 项目仅与一个组相关。但是,组可以属于文件夹或集合,而文件夹或集合又可以属于文件夹或集合。 像这样的东西

    Item1->组别1

    Group1-> Folder1-> FOLDER2 Group2-> Set1-> Folder3

    我正在尝试将其映射到SQL Server中的关系数据库。

    这就是我当前的映射方式

    每个单独的表格  1.文件夹  2.设置  3.小组  4.项目

    项目表将ParentId作为组ID

    但是我还有一个Table ParentChildMapping,它将具有

    ChildID ParentID(它们中的任何一个都可以映射到FolderID,SetID或GroupID中的任何一个)

    这是一个好方法还是有更好的方法?

    谢谢,

1 个答案:

答案 0 :(得分:0)

您应该考虑文件夹/集合/组的实体子类型方法,并使用递归的一对多关系来记录实体超类型级别的父/子关系。

这看起来像这样:

Table: Container (super-type)
- ContainerID PK
- ParentContainerID NULL FK (to self)

Table: Folder (subtype)
- ContainerID PK FK
- (other folder columns)

Table: Set (subtype)
- ContainerID PK FK
- (other set columns)

Table: Group (subtype)
- ContainerID PK FK
- (other group columns)

Table: Item
- ItemID
- (other item columns)
- ContainerID (FK to GROUP)