是否可以仅使用2个表实现任意关系?

xpo*_*ort 0 sql sql-server sql-server-2008

我不知道下面我的想法是否适用:

我有2个表,即A和B.

表A中的每一行可以与表B的零行或多行相关联.表B中的每一行也可以与表A的零行或多行相关联.

表A包含(以及其他)2列AId(作为主键)和BId(作为外键).表B还包含(其中)2列BId(作为主键)和AId(作为外键).

还为DB和模型类中的每个外键关系设置级联删除规则.这意味着删除一行A也将删除与之关联的行B 删除一行B将删除与之关联的行.

这种情况几乎可以实现吗?

Ste*_*n H 7

不,如果您遵循正常形式则不行.

多对多关系是需要交叉表的标志.

更多信息:

所以这是一个例子.问题标记.标签可以包含多个问题,而问题可以包含多个标签.这是一个多对多的现实.您可以在Question实体的Tag列中放入多个tagIds条目.但是你这样做会失去很多.

您将不具备完整性,因为无论标记表和问号标记列中是否存在标记都非常难以维护.

这也违反了普通形式,因为单个列不能有多个值.

您也无法轻松加入该列,因为它中包含多个值.