SQL:如何实现通用类别?
我需要在SQL中实现以下分类:SQL:如何实现通用类别?,sql,database,sql-server-2008,database-design,select,Sql,Database,Sql Server 2008,Database Design,Select,我需要在SQL中实现以下分类: 组可以包含多个测试或多个(子)组 测试可以分为多个组 (子)组可以位于多个(父)组中 。。。这意味着2 x M:N关系。下表可以存储组树: 测试表 测试id(主键),测试名称 分组表 组id(主键),组名称 在组表中测试 测试id(fk)、组id(fk) 组关系表 父组id(fk)、子组id(fk) 但是: 如何在组中列出所有测试?这听起来非常困难,因为组中可能包含测试或带有其他测试的子组 或者如何修改表以使这种选择成为可能?我可以在GROUP\U表中创建额
- 组可以包含多个测试或多个(子)组
- 测试可以分为多个组
- (子)组可以位于多个(父)组中
测试id(主键),测试名称 分组表
组id(主键),组名称 在组表中测试 测试id(fk)、组id(fk) 组关系表
父组id(fk)、子组id(fk) 但是:
- 如何在组中列出所有测试?这听起来非常困难,因为组中可能包含测试或带有其他测试的子组李>
- 或者如何修改表以使这种选择成为可能?我可以在GROUP\U表中创建额外的子\U计数列。它将由触发器自动填充。但即使这样,对我来说也很难
;with cte as (
select group_id
from GROUP_TABLE
where group_id = 1
union all
select child_group_id
from GROUP_RELATIONS_TABLE
inner join cte on cte.group_id = GROUP_RELATIONS_TABLE.parent_group_id
)
select t.*
from cte
inner join TEST_IN_GROUP_TABLE tg on tg.group_id = cte.group_id
inner join TEST_TABLE t on t.test_id = tg.test_id
数据库可能位于MS SQL Server 2008 R2上。(我还在做逻辑模型,稍后我会做物理模型)。然后设计就好了。测试组和1-M:M-1桥接表是正确的,分层表组关系也是正确的。