【发布时间】:2015-04-15 06:33:23
【问题描述】:
我有三张桌子。
User
Project
WorkFlow
在工作流 ProjectId 中,UserId 不应一起重复。那是我的 要求。我的意思是这种组合永远不应该重复。
并且 ProjectId 应该存在于 Project 表和 UserId 中 应该存在于 User 表中。
这是要求。
我尝试过的步骤:
我将ProjectId, UserId 设为workFlow 中的复合键。但是不能维护外键,因为单个表中没有两列。
如何解决这个问题。
我也愿意改变我的设计,因为这是我发展的初始阶段。
主要要求是
一个表存储项目(项目表)相关信息和 另一个(工作流)保存项目分配到的记录 哪个用户。
【问题讨论】:
-
您还可以使用 UNIQUE KEY CONSTRAINT 或 UNIQUE(集群或非集群)索引来强制非 PK 列的唯一性?
-
@StuartLC 那么可以删除复合键并使这两列成为唯一键吗?
-
是的,就像下面@Roger 的回答 (+1),尽管建议您将 UKC 命名为。
-
@StuartLC,我都是手写的,所以尽量简短。在实际实践中,一些 CASE 工具通常非常有用,还有一些约束重命名脚本。
标签: sql sql-server database relational-database