多对多关系,但不允许重复记录

时间:2015-10-28 03:49:37

标签: sql-server database many-to-many foreign-key-relationship

我正在尝试设计一个数据库,其中有一个注释表,项目表和属性表。每个项目可以有一个或多个注释和相同的属性逻辑,但不允许对属性和项目使用相同的注释。

表名:评论
commentID PK NOT NULL,
commentBody NOT NULL

表名:项目
projectID PK NOT NULL,
projectName NOT NULL,
projectType NOT NULL,
projectStatus NOT NULL,
...更多

表名:财产
propertyID PK NOT NULL,
propertyName NOT NULL,
propertySize NOT NULL,
propertyLandlord NOT NULL,
...更多

表名:PropertyComments
propertyCommentsID PK NOT NULL,
commentsID FK NOT NULL,
propertyID FK NOT NULL

表名:ProjectComments
projectCommentsID PK NOT NULL,
commentsID FK NOT NULL,
projectID FK NOT NULL

所以,通过这种方法你可以重复一个评论,让我们说评论ID 1可以是项目和财产。如果不允许重复评论,我该怎么做?

2 个答案:

答案 0 :(得分:0)

为什么为Comments创建三个单独的表,只创建一个Table作为Comments 以下列:

commentID PK NOT NULL,

commentBody NOT NULL,

类型,(无论是属性还是项目)

projectID FK NOT NULL,

propertyID FK NOT NULL

然后您可以使用存储过程填充它们。

答案 1 :(得分:0)

我最终选择了基于数据库设计最佳实践的连接表。
更新 - 要求稍有变化,关系应该是一对多。因此,项目可能有一个或多个注释,项目不能共享相同的注释。

相关问题