Dan*_*Dan 4 sql-server database-design
我正在使用SQlServer 2008,下面显示了一些数据表的摘录:
Id(PK)
UserId(PK)ItemId(PK) - (2列的复合键)...
UserId(PK)ItemId(PK)VoterId(PK) - (3列的复合键)
我定义了以下关系:
现在,我在打开级联删除时遇到问题.添加第三个关系时,我收到错误"...可能导致循环或多个级联路径.指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束." 我真的不想这样做,理想情况下,如果用户被删除,我想删除他们的用户项和/或他们的投票.
这是一个糟糕的设计吗?或者有没有办法从SQL Server获得我想要的行为?
小智 12
批准的答案不是一个好的答案.所描述的场景设计并不差,依靠数据库完成其工作也不是"冒险".
原始问题描述了一个完全有效的场景,并且设计经过深思熟虑.显然,删除用户应删除用户的项目(及其上的任何投票),并删除用户对任何项目(甚至是属于其他用户的项目)的投票.删除用户记录时,要求数据库执行此级联删除是合理的.
问题是SQL Server无法处理它.它的级联删除的实现是不足的.
| 归档时间: |
|
| 查看次数: |
799 次 |
| 最近记录: |