Sql server 多对多关系,但不允许重复记录
我正在尝试设计一个数据库,其中有一个注释表、项目表和属性表。每个项目可以有一个或多个注释和相同的属性逻辑,但不允许对属性和项目有相同的注释。Sql server 多对多关系,但不允许重复记录,sql-server,database,many-to-many,foreign-key-relationship,Sql Server,Database,Many To Many,Foreign Key Relationship,我正在尝试设计一个数据库,其中有一个注释表、项目表和属性表。每个项目可以有一个或多个注释和相同的属性逻辑,但不允许对属性和项目有相同的注释。 表名:注释 commentID PK不为空, commentBody不为空 表名:项目 projectID PK不为空, 项目名称不为空, 项目类型不为空, 项目状态不为空, …更多 表名称:属性 propertyID主键不为空, propertyName不为空, propertySize不为空, PropertyLandOrd不为空, …更多 表名
表名:注释
commentID PK不为空,
commentBody不为空
表名:项目
projectID PK不为空,
项目名称不为空,
项目类型不为空,
项目状态不为空,
…更多
表名称:属性
propertyID主键不为空,
propertyName不为空,
propertySize不为空,
PropertyLandOrd不为空,
…更多
表名:PropertyComments
propertyCommentsID主键不为空,
commentsID FK不为空,
属性ID FK不为空
表名:ProjectComments
projectCommentsID PK不为空,
commentsID FK不为空,
projectID FK不为空
所以,使用这种方法,您可以重复一条注释,假设CommentID1可以用于项目和属性。我该怎么做才能不允许重复注释?为什么要为注释创建三个单独的表,只创建一个表作为注释 包含以下列: commentID PK不为空 注释体不为空 类型(无论是财产还是项目) projectd FK不为空 propertyID FK不为空
然后可以使用存储过程填充它们。我最终选择了基于数据库设计最佳实践的联接表
更新-需求有点变化,关系应该是一对多。因此,一个项目可能有一个或多个注释,这些项目不能共享相同的注释。NitheshKHP-使用这种方法,我将在propertyID列或projectID列中具有空值。e、 g.1;'评论在这里';项目104; 无效的我想Null FK对性能不好。请用“-”或类似的字符替换Null。