多对多关系但不允许重复记录
Many-to-Many relationship but not allow to repeat a record
我正在尝试设计一个数据库,其中包含评论 table、项目 table 和 属性 table。每个项目可以有一个或多个评论和相同的属性逻辑,但不允许属性和项目有相同的评论。
Table 姓名:评论
commentID PK NOT NULL,
commentBody NOT NULL
Table 名称:项目
projectID PK NOT NULL,
项目名称不为空,
项目类型不为空,
项目状态不为空,
...更多
Table 姓名:属性
属性ID PK 不为空,
属性名称不为空,
属性大小不为空,
属性楼主NOT NULL,
...更多
Table 姓名:属性评论
属性评论 ID PK 不为空,
commentsID FK NOT NULL,
属性ID FK 不为空
Table 名称:项目评论
projectCommentsID PK NOT NULL,
commentsID FK NOT NULL,
projectID FK NOT NULL
因此,通过这种方法,您可以重复评论,假设 commentID 1 可以用于项目和 属性。我该怎么做才能不允许重复评论?
为什么要为评论创建三个单独的表,只创建一个 Table 作为评论
以下列:
commentID PK NOT NULL,
评论正文不为空,
类型,(无论是 属性 还是项目)
projectID FK NOT NULL,
属性ID FK 不为空
然后您可以使用存储过程填充它们。
根据数据库设计最佳实践,我最终选择了连接 table。
Update - 需求稍微改变了一点,关系应该是一对多的。所以一个项目可能有一个或多个笔记,项目不能共享相同的笔记。
我正在尝试设计一个数据库,其中包含评论 table、项目 table 和 属性 table。每个项目可以有一个或多个评论和相同的属性逻辑,但不允许属性和项目有相同的评论。
Table 姓名:评论
commentID PK NOT NULL,
commentBody NOT NULL
Table 名称:项目
projectID PK NOT NULL,
项目名称不为空,
项目类型不为空,
项目状态不为空,
...更多
Table 姓名:属性
属性ID PK 不为空,
属性名称不为空,
属性大小不为空,
属性楼主NOT NULL,
...更多
Table 姓名:属性评论
属性评论 ID PK 不为空,
commentsID FK NOT NULL,
属性ID FK 不为空
Table 名称:项目评论
projectCommentsID PK NOT NULL,
commentsID FK NOT NULL,
projectID FK NOT NULL
因此,通过这种方法,您可以重复评论,假设 commentID 1 可以用于项目和 属性。我该怎么做才能不允许重复评论?
为什么要为评论创建三个单独的表,只创建一个 Table 作为评论 以下列:
commentID PK NOT NULL,
评论正文不为空,
类型,(无论是 属性 还是项目)
projectID FK NOT NULL,
属性ID FK 不为空
然后您可以使用存储过程填充它们。
根据数据库设计最佳实践,我最终选择了连接 table。
Update - 需求稍微改变了一点,关系应该是一对多的。所以一个项目可能有一个或多个笔记,项目不能共享相同的笔记。