角色表
RoleID Desc
1 primary
2 secondary
3 alternate
用户
UserID Name
1 ann
2 saylor
3 jim
4 ken
5 kathy
路线表
RouteID Name
1 x
2 y
RouteRoleUser表
RouteID RoleID UserID
1 primary ann
1 secondary saylor
1 alternate jim
1 alternate ken
1 alternate kathy
我有一个显示以下内容的网格:
Route | Primary Pumper | Secondary Pumper | Alternate Pumpers (comma separated)
x ann saylor jim, ken, kathy
我的要求是:
如何从RouteRoleUser表中的db设计角度获取需求限制?目前,如果我将Route,Role和User作为候选键,则不会 阻止任何人为路线添加两个主要用户。
有更好的方法吗?
答案 0 :(得分:1)
对于“任何路由可以有 N 个(类型)用户”规则,您可以使用INSTEAD OF INSERT触发器进行验证并阻止插入。我个人在应用程序或存储过程级别处理这种类型的逻辑。
对于“路径的所有用户都是唯一的”,您可以在RouteID,UserID上使用UNIQUE约束来强制执行此操作。