Mysql 多级唯一索引(数据库)
假设我们有3个表(分层) 表AMysql 多级唯一索引(数据库),mysql,database,database-design,erd,Mysql,Database,Database Design,Erd,假设我们有3个表(分层) 表A id, name, .... 表B id, a_id, name 表C id, b_id, name 我想在表C上创建唯一的索引(a_id,name),而不是(b_id,name),不需要冗余,并在每个表中插入a_id 您的需求与关系数据库的设计原则相冲突 我假设从C到A的索引应该反映从C到B,然后从B到A的关系的传递闭包。现在,如果C本身包含到A的链接,如果B记录B将其关联从a1更改为a2会发生什么?相应的C记录不会注意到这一点,因此事实上,从它们到a1的
id, name, ....
表B
id, a_id, name
表C
id, b_id, name
我想在表C上创建唯一的索引(a_id,name),而不是(b_id,name),不需要冗余,并在每个表中插入a_id 您的需求与关系数据库的设计原则相冲突 我假设从C到A的索引应该反映从C到B,然后从B到A的关系的传递闭包。现在,如果C本身包含到A的链接,如果B记录B将其关联从a1更改为a2会发生什么?相应的C记录不会注意到这一点,因此事实上,从它们到a1的链接将有自己的含义,而不是与b的含义相连
因此,除非有语义上的原因将C单独链接到a,并将链接存储在C中,否则您必须从C转到be才能找到B的当前状态。索引不能跨越两个表。
table A (id, name, ....)
^
|
table B (id, a_id, name)
^
|
table C (id, b_id, name)