作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
问题陈述 - [企业] 1---* [分支机构] 一个企业必须有一个或多个分支机构。只有一个分支可以是主分支。
我脑子里有两个设计
#1 的问题 - 为了对 IsMainBranch 施加约束,我必须使用触发器,后者可能会不同步。
#2 的问题 - 访问 EF 中的数据有点复杂。
#3 的问题 - 不要认为它是一个好的设计。
我正在使用 EF 4.1 作为 ORM,不想让事情变得复杂,我应该选择哪种设计。请建议是否有更好/替代的方法。
最佳答案
对于 SQL Server 2008+,您可以使用 filtered indexes
在您的 Branch
表中,只有一个标记 IsMainBranch
。然后创建一个唯一的过滤索引:这将只允许一行,其中 IsMainBranch= 1
每个业务。
分支表:
id (PK)
BusinessID (FK)
Name
...
IsMainBranch
然后
CREATE UNIQUE INDEX IX_MainBranch
ON Branch(BusinessID)
WHERE IsMainBranch = 1;
这给出了
MainBranchID
)另见:
关于数据库设计 : Could I make a column in a table only allows one 'true' for some specific rows and others false for same specific rows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8698449/
我是一名优秀的程序员,十分优秀!