Mysql 透视表上的外键和约束、删除级联

Mysql 透视表上的外键和约束、删除级联,mysql,database,database-design,innodb,Mysql,Database,Database Design,Innodb,我已经设计了我的数据库结构,如下所示,以支持创建多个商店和分配给这些商店的用户。我的表使用InnoDB存储引擎 [user] user_id [user_profile] user_profile_id user_id [user_to_shop] PIVOT user_id shop_id [shop] shop_id [shop_profile] shop_profile_id shop_id [category_to_shop] PIVOT

我已经设计了我的数据库结构,如下所示,以支持创建多个商店和分配给这些商店的用户。我的表使用InnoDB存储引擎

[user]  
user_id 

[user_profile]  
user_profile_id  
user_id

[user_to_shop] PIVOT 
user_id  
shop_id

[shop]  
shop_id

[shop_profile]  
shop_profile_id  
shop_id  

[category_to_shop] PIVOT  
category_id  
shop_id

[category]  
category_id

[category_description]  
category_description_id  
category_id 

[product_to_category] PIVOT  
product_id
category_id

[product_to_shop] PIVOT
product_id
shop_id

[product]
product_id

...  
...
我想要实现的是在删除用户(用户id)时删除所有相关记录(类别记录、店铺记录等)

我已经为每个实体创建了约束。因此,当我删除一个用户_id(1)时,引擎还负责删除用户_配置文件(用户_id(1))


但是我应该如何处理透视表呢?如何在这些表上声明约束或外键以完成作业并确保安全?

创建删除链:将FK约束添加到透视表([C])或[D],这取决于C,如下所示)

操作顺序

Delete(A) -> Delete(C) -> Delete(D)
Delete(B) -> Delete(C) -> Delete(D)

所以在每种情况下,流程都是这样的:删除(实体)然后删除(枢轴)?你能用问题的实体显示你的流程吗?流程是从被删除的内容开始的-比如说X,然后是被称为外来的X-比如说Y,然后是被称为外来的Y等等。。。
[A]
idA
dataA

[B]
idB
dataB

[C]
idC
idA
FOREIGN KEY (idA) REFERENCES A(idA)
ON DELETE CASCADE
idB
FOREIGN KEY (idB) REFERENCES B(idB)
ON DELETE CASCADE

[D]
idD
idC
FOREIGN KEY (idC) REFERENCES C(idC)
ON DELETE CASCADE
Delete(A) -> Delete(C) -> Delete(D)
Delete(B) -> Delete(C) -> Delete(D)