猿记录

一个记录、分享的博客

您的位置:主页 > 技术专栏 >

thinkjs 多对对关联模型下

2018-09-03 15:29:55 作者:yxl 次阅读 技术专栏

在数据库设计特别是关系型数据库设计中,我们的各个表之间都会存在各种关联关系。在传统行业中,使用人数有限且可控的情况下,我们可以使用外键来进行关联,降低开发成本,借助数据库产品自身的触发器可以实现表与关联表之间的数据一致性和更新。

但是在 web 开发中,却不太适合使用外键。因为在并发量比较大的情况下,数据库很容易成为性能瓶颈,受IO能力限制,且不能轻易地水平扩展,并且程序中会有诸多限制。所以在 web 开发中,对于各个数据表之间的关联关系一般都在应用中实现。

1、多对多

想象一下,每个学生可以加入很多社团,而社团同样由很多学生组成。社团与学生的关系,就是一个多对多的关系。这种情况下,两张表已经无法完成这个关联关系了,需要增加一个中间表来处理关联关系

 get relation() {

            return {

                cate: {

                    type: think.Model.BELONG_TO, //通过主表  article 的外键 cate_id 来(一对一(属于))来查询另外一种表的数据

                },

                // 多对多

                tag: {

                    type: think.Model.MANY_TO_MANY,

                    model: 'tag',

                    rModel: 'relationship',

                    rfKey: 'tag_id',

                    key: 'id',

                    fKey: 'article_id',

                  },

            };

        }

如果进行,删除和查询,都会相互影响到

 //删除触发 多对多模型 把关联的relationship 表对应的数据也删除 

 let articleAffect = await article.where({ id: ['in', articleIds] }).delete();


凡本站注明“本站”或“投稿”的所有文章,版权均属于本站或投稿人,未经本站授权不得转载、摘编或利用其它方式使用上述作品。

编辑:yxl 关键词: thinkjs
0

网友评论