Mysql SQL-DBDL如何约束超类参与子类?

Mysql SQL-DBDL如何约束超类参与子类?,mysql,sql,database-design,relational-database,constraints,Mysql,Sql,Database Design,Relational Database,Constraints,我一直在寻找一种方法来约束一个超类的记录参与到它的一个子类记录中,我相信它被称为参与{强制或}。我找到了一些关于如何使用约束检查但仅限于约束多重性的示例 虽然我可以使用将要使用数据库的应用程序逻辑来保护这一点,但我更喜欢使用数据库定义语言设置约束 有可能吗 下面我上传了一张图片,上面有我试图实现的目标的插图,正如您在message表中看到的,有一条消息与UserMessage和GroupMessage都不匹配 如果没有延迟外键(MySQL不支持延迟外键),则无法以声明方式完成此操作 更多信息,以

我一直在寻找一种方法来约束一个超类的记录参与到它的一个子类记录中,我相信它被称为参与{强制或}。我找到了一些关于如何使用约束检查但仅限于约束多重性的示例

虽然我可以使用将要使用数据库的应用程序逻辑来保护这一点,但我更喜欢使用数据库定义语言设置约束

有可能吗

下面我上传了一张图片,上面有我试图实现的目标的插图,正如您在message表中看到的,有一条消息与UserMessage和GroupMessage都不匹配

如果没有延迟外键(MySQL不支持延迟外键),则无法以声明方式完成此操作


更多信息,以及。

换句话说,我必须依赖我的应用程序逻辑,对吗?谢谢。@twimB是的,如果你继续使用MySQL。@twimB顺便说一句,我用了更广义的术语“应用程序逻辑”,包括触发器和存储过程。