我正在尝试设计一个数据库,其中有一个注释表,项目表和属性表。每个项目可以有一个或多个注释和相同的属性逻辑,但不允许对属性和项目使用相同的注释。
表名:评论
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可以是项目和财产。如果不允许重复评论,我该怎么做?
答案 0 :(得分:0)
为什么为Comments创建三个单独的表,只创建一个Table作为Comments 以下列:
commentID PK NOT NULL,
commentBody NOT NULL,
类型,(无论是属性还是项目)
projectID FK NOT NULL,
propertyID FK NOT NULL
然后您可以使用存储过程填充它们。
答案 1 :(得分:0)
我最终选择了基于数据库设计最佳实践的连接表。
更新 - 要求稍有变化,关系应该是一对多。因此,项目可能有一个或多个注释,项目不能共享相同的注释。