【发布时间】:2017-02-09 23:31:06
【问题描述】:
假设我有两个表 - User 和 Post
我引入了一个自定义的 Join 表 Vote,以便在 User 和 Post 之间建立多对多的关系。
表格具有以下结构:
- 用户(UseId,姓名)
- 发布(PostId、UserId、内容)
- 投票(Id、UserId、PostId、Value)
注意事项:
- 每个表的强调列是
PK。 -
Post 中的
UserId是一个FK到User 表。 -
Vote 表中的
UserId和PostId列是FK相应的表。 -
Value、Content、Name等其他列都是 varchar。
考虑到上面的设计是合适的(如果不合适,欢迎提出建议:).....
我想要的是:
- 如果Post表中的一行被删除,Vote中的相关行也应该被删除。
- 如果User表中的一行被删除,Vote中的相关行也应该被删除。
- 如果User表中的一行被删除,Post中相关行的
UserId列应设置为NULL。
我可以在没有Cyclic-Redundancy 的情况下建立这种关系吗?如果是,如何?
更新:
如果您也遇到过多个级联路径,请查看这个很棒的 answer:
【问题讨论】:
标签: sql-server foreign-keys entity-relationship jointable table-relationships