多态关联和反向引用

在面向对象中通过继承,子类具有了父类的东西,可以通过父类型的引用指向子类型的对象,这种能力被成为多态,如下图
继承与多态.png

而在关系型数据库中实际上也有继承,比如在一对多关系中,一的一方提供主键被称为父表,而多的一方用将父表的主键作为了外键被称为子表,由于这种引用关系,子表实际上具有了父表的东西,虽然只是引用形式的,如下图
父表与子表.png

如果按照面向对象的说法,也就说B表继承了A表,那么这里引出另一个问题,也就是面向对象中的多继承问题,假设B表同时继承了A表和C表,如下图
多继承.png

如图中说明的当一张表继承了另外多张表,那么需要多列外键,那么如果希望只用一个外键会怎么样呢?
答案是并不行,SQL不支持声明一个指向多张表的外键,但是有一个折中的方法,也就是不用外键,而通过通过增加一个类型列采用多态关联的形式
多态关联.png
但多态关联的并不是个好办法,查询的时候和对应表进行关联并带上类型,查询并不方便,实际上多态关联是一个反向引用,可以变成如下形式
反向引用.png
通过将表关系改成上面这种形式查询和修改将变的更加容易

Happy learning !!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值