GWe*_*Wed 4 mysql innodb database-design unique-constraint
我有两个 SQL 表:用户和客户。
users 表中的每一行在clients 表中都有一组clients,由users 表id
字段和clients 表user_id
字段链接。
用户表有一个username
唯一的字段。
客户表有一个user_id
字段 ANDclientname
字段,它们一起是唯一的(即clientnames
可以存在多次,但必须有不同的user_ids
)
我的问题是:如何添加强制username
用户表中的clientname
字段和客户表中的字段之间的唯一性的规则?甚至有可能吗?
即 nousername
可以与 a 相同clientname
,noclientname
可以与 a 相同username
。
你可以有第三个表来存储两者。像这样的东西:
unique_ids ---------- 标识符(唯一) used_where(使用标识符的表的名称/ID) 用户 ----- 用户名(FK 到 unique_ids.identifier) 客户 ------- 客户端名称(FK 到 unique_ids.identifier)
这样,两个表共享一个公共表,其中包含需要唯一的值,并且可以在该共享表中轻松实施唯一性约束。您还需要一个简单的插入触发器(在两个表上),该触发器将检查该used_where
字段以确保其他表尚未使用该标识符(因为如果我了解您的要求,则username
必须是唯一的,users
但clientname
不需要在clients
) 中是独一无二的。
如果您不想引入新结构并修改现有结构,您可以尝试使用 on-insert 触发器 onclients
并users
检查以确保新记录不包含现有用户名/客户名。