【发布时间】:2023-03-12 01:54:01
【问题描述】:
我正在尝试实现一个具有类似于下面的表结构的数据库,其中 2 个表是一个表的子类型。
一个动物有一个主键,狗和猫有一个外键引用动物的animal_id。
animal(animal_id, bornAt)
dog(animal_id, barkSound)
cat(animal_id, meowSound)
值得注意的是,狗和猫是不相交的,所以它们不可能在animal中引用相同的animal_id。
有没有办法使用 SQL 代码来确定动物的类型,给定 animal_id?例如,如果有一条 animal_id 为 4 的狗(不知道 animal_id 为 4 的事实是狗),我想从 animal 和 dog 表中通过 join 检索数据。
【问题讨论】:
-
两个左连接怎么样,每个子类型表上一个。
-
@Shadow 两个左连接可以工作,因为它会检查两个子类型的 id。如果我要使用该实现,我将不得不将 dog 和 cat 的 id 更改为 dog_id 和 cat_id,并检查不为 null 的列。
标签: mysql sql database-design class-table-inheritance