我将如何在SQL中设计此表?

时间:2011-01-10 23:04:14

标签: sql sql-server sql-server-2005 sql-server-2008

我有一个父级主表,它足够通用,可以保存子项的公共信息。由于孩子们大不相同,我们为他们创建了单独的表。所以我有这样的事情:

tblMaster
--------
MasterID int
Name varchar(50) --Common to all children and there are a bunch of fields like this
ChildType int -- Type of Child either ChildOne or ChildTwo
ChildID int -- need to store ChildOneID or ChildTwoID depending on type of Child, so that i can refer to children

tblChild1
--------
ChildOneID int IDENTITY

tblChild2
---------
ChildTwoID int IDENTITY

我是否应该根据ChildID列在主文件中ChildOneIDChildTwoID添加ChildType?我有很多孩子,我已经简化了这个问题。

另一种方法是在主服务器中添加ChildOneIDChildTwoID作为列,但由于我有多个列,我将有很多空列

编辑:感谢任何帮助

3 个答案:

答案 0 :(得分:1)

我会将标识放在master的id中,然后在相应的子表中使用相同的id,如下所示。

tblMaster

ID int Identity
名称varchar(50) - 对所有孩子都很常见,并且有很多像这样的字段 ChildType int - ChildOne或ChildTwo的子类型

tblChild1

ID int

tblChild2

ID int

答案 1 :(得分:1)

你能拥有吗?

tblMaster
--------
MasterID int
Name varchar(50) --Common to all children and there are a bunch of fields like this

tblChild1
--------
ChildOneID int IDENTITY
MasterID int

tblChild2
---------
ChildTwoID int IDENTITY
MasterID int

假设每个孩子都有一个父母,否则设置一个联接表。如果它有很多很多。

答案 2 :(得分:0)