【发布时间】:2011-03-23 22:46:15
【问题描述】:
我使用的是 SQlServer 2008,下面显示了一些数据表的摘录:
用户
标识(PK)
用户项目
用户 ID (PK) ItemId (PK) - (2列的复合键) ...
用户项目投票
用户 ID (PK) 项目 ID (PK) VoterId (PK) - (3 列的复合键)
我定义了以下关系:
- User.Id -> UserItems.UserId
- (UserItems.UserId, UserItems.ItemId) -> (UserItemVotes.UserId, UserItemVotes.ItemId)
- UserId.Id -> UserItemVotes.VoterId
现在,我在打开级联删除时遇到了问题。添加第三个关系时,我收到错误“...可能导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他外键约束。” 我真的不想这样做,理想情况下,如果用户被删除,我想删除他们的用户项和/或他们的投票。
这是一个糟糕的设计吗?或者有没有办法从 SQL Server 获得我想要的行为?
【问题讨论】:
标签: sql-server database-design