美文网首页
多态关联和反向引用

多态关联和反向引用

作者: 賈小強 | 来源:发表于2019-03-24 23:06 被阅读0次

    简书 賈小強
    转载请注明原创出处,谢谢!

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


    继承与多态.png

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


    父表与子表.png

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


    多继承.png

    如图中说明的当一张表继承了另外多张表,那么需要多列外键,那么如果希望只用一个外键会怎么样呢?
    答案是并不行,SQL不支持声明一个指向多张表的外键,但是有一个折中的方法,也就是不用外键,而通过通过增加一个类型列采用多态关联的形式

    多态关联.png
    但多态关联的并不是个好办法,查询的时候和对应表进行关联并带上类型,查询并不方便,实际上多态关联是一个反向引用,可以变成如下形式
    反向引用.png
    通过将表关系改成上面这种形式查询和修改将变的更加容易

    Happy learning !!

    相关文章

      网友评论

          本文标题:多态关联和反向引用

          本文链接:https://www.haomeiwen.com/subject/qnopvqtx.html