我正在尝试在 SQL Server 2008 中构建父子关系,但无法使其正常工作。
有 Presets(根级节点),然后有 PresetItems(子节点)。
一个 Preset 只能包含 PresetItems,但 PresetItems 可以包含其他 PresetItems 作为子节点。
可以构建许多 Presets,它们包含的 PresetItems 不同。
PresetItems 可以在许多不同的 Preset 中重复使用,以构建不同的 Preset 配置。
其使用方式是动态创建报告。预设是报告的名称。PresetItems 是报告的各个部分。这些部分(PresetItem)就像报告的一部分,例如“Year to Date Graph”。此 PresetItem 将包含文本说明,然后可以添加另一个包含图形的 PresetItem 作为此 PresetItem 部分的子项。
这个过程一直持续到报告的所有部分都组装完毕。
这是一个插图:
Client "A" Report (Preset 1)
-- Overview (PresetItem 1) - contains boilerplate and maybe some dynamic data
-- YTD Report (PresetItem 2) - contains boilerplate
-- YTD Graph (PresetItem 3) - contains a graph created dynamically from SQL Server data
-- Core References (PresetItem 4) - contains a table of dynamic data
-- Summary (PresetItem 5) - contains boilerplate
Client "B" Report (Preset 2)
-- Overview (PresetItem 1) - contains boilerplate and maybe some dynamic data
-- Monthly Balance Sheet (PresetItem 8) - contains dynamic data
-- YTD Report (PresetItem 2) - contains boilerplate
-- YTD Graph (PresetItem 3) - contains a graph created dynamically from SQL Server data
-- Summary (PresetItem 5) - contains boilerplate
... ETC ...
您会注意到一些 PresetItem 可以组合成许多不同的报告或预设。
这是我构建数据库表的方式,但我无法创建父子关系,因为多对多表中有两个主键。
Preset Table
-- Id (key)
-- Name
PresetItem Table
-- Id (key)
-- Name
-- Description
-- DataResource
-- (other columns)
PresetPresetItem (many-to-many table)
-- PresetId (key)
-- PresetItemId (key)
-- ParentId
-- SortOrder
我是否在正确的轨道上获得我正在寻找的结果?我无法在 PresetPresetItem 表中创建 PresetItemId 和 ParentId 之间的父子关系,因为它抱怨我遗漏了另一个主键 (PresetId)。
我确实明白它为什么会这样,但我现在不知道如何解决它。如果我对这一切都错了,请告诉我。
任何帮助表示赞赏。
谢谢。