2013-03-25 105 views
0

我们正在创建一个活动建设者,我正在努力处理一个不同类型父母的孩子。你如何处理有两个父母选择的孩子

我们有两个表类别和活动。 分类有一个ID和名称 活动有一个id和parentId的

活动的parentid可以是一个类或者ID或其他活动的ID。 一个类别具有活动,每个活动都可以有子活动。 分类只有顶级,所以没有分类或活动有子分类

现在我有两个问题 什么是设置表的最佳方式。 我想过将它们存储在单独的列中,与具有id和某种标志的字符串相同的列,具有id的列和具有父表的另一列。

我不认为这些都很好,想知道是什么。

另一个问题是我将如何拉这张桌子。我知道我可以做多种查找,但如果有一种方法可以在一个中完成,它就会流浪。

我们使用MSSQL 2012

编辑试图澄清,并添加更多信息

+0

你能给一点点的描述,像什么是[类型类别]什么是[活动类型],是什么名字的活动],什么是业务关系,如果你给一些示例数据,然后它将帮助人们帮助你定义模式。 – ljh 2013-03-25 19:02:03

回答

0

我不是在SQL“超载”的大风扇。换句话说,一列应该包含仅意味着一件事的数据。因此,我会建议以下数据结构。

分类=> ID |名称

活动=> Id |名称| CategoryId不为空| ParentActivityId null

这样,每个活动都与一个类别相关联,并且可能与父活动相关联。

至于“拉”?我假定你的意思是选择数据?

SELECT a.Name AS ActivityName, c.Name AS ParentName, c.Id AS ParentId 
FROM Category c 
JOIN Activity a 
ON c.Id = a.CategoryId 
WHERE a.ParentActivityId IS NULL 

UNION 

SELECT a.Name AS ActivityName, c.Name AS ParentName, c.Id AS ParentId 
FROM Activity c 
JOIN Activity a 
ON c.Id = a.ParentActivityId 
+0

我会试试这个,让你知道它是怎么回事。感谢您的帮助 – gorrilla10101 2013-03-25 20:35:09

+0

有没有办法让它返回没有任何活动的类别 – gorrilla10101 2013-03-25 20:40:11

+0

这似乎是我需要感谢的帮助 – gorrilla10101 2013-03-26 00:44:56

相关问题