首页 新闻 搜索 专区 学院

主表和主表的扩展表关系处理以及如何执行搜索

-1
悬赏园豆:50 [待解决问题]

背景

  文章表(Article) 有字段如下

  Id , Title , Author , Description , Content , SortId

  1 , "文章标题" , "文章简介" , "文章内容" , 10

  然后有个新需求 , 需要为文章增加 英文标题 

 

常规做法为

  在文章表中新建字段 EnTitle ,

  Id , Title , Author , Description , Content , SortId , EnTitle

  1 , "文章标题" , "文章简介" , "文章内容" , 10 , "I'm Article EnTitle"

 

  但是这种做法比较粗暴, 假设后面还要增加  "文章来源" , "引用地址" 等等  , 这个时候要再去加字段涉及到的修改就比较麻烦 . 说白了还是扩展性不高

 

于是出现了如下解决方案

  新增一张表为 文章扩展信息表 (ArticleMate) , 表结构如下

  Id , ArticleId , Field , Value

此时如果再发生需要增加字段即为

  在 文章扩展表中增加一条数据 (以EnTItle举例)

  1 , 1 , "EnTitle" , "I'm Article EnTitle"

 

  这样设计扩展性是高了许多 , 但是有个疑问 , 如果当 ArticleMate中的EnTitle 也需要参与到搜索条件中来的话 , 此时应该怎么操作呢 ?

  

  需要一个思路来解决这个问题 , 望各位大佬不吝赐教 . 小弟谢过了

kaolasz的主页 kaolasz | 初学一级 | 园豆:51
提问于:2020-06-25 17:14
< >
分享
所有回答(5)
0

按照你这个思路做下去,很快你就会做一个谷歌搜索引擎了。

爱编程的大叔 | 园豆:30657 (高人七级) | 2020-06-26 09:22
0

秀儿

RookieBoy666 | 园豆:154 (初学一级) | 2020-06-27 00:14
0

用join啊。

select * from article join ArticleMate where ArticleMate.Field  = 'EnTItle' and Value = 'xxxx'

建议不要这样搞吧,文章有哪些属性应该是相对不太变化的吧,建议修改文章表结构。

会长 | 园豆:8070 (大侠五级) | 2020-06-28 09:32
0

文章的基本属性基本不会太多,不会太多的就直接文章表里加,涉及到到跟文章一对多相关的信息,再加表

风行天下12 | 园豆:3295 (老鸟四级) | 2020-07-01 12:20
0

关系型数据对这种场景的解决就是很蹩脚的,你既想要扩展方便,又想要查询舒服,鱼和熊掌怎么兼得,无论怎么设计在关系型数据库中都会有一两缺点,所以我推荐你讲数据整合后存入es,查询都走es,关系型数据库只存储和简单的查询。

8号位 | 园豆:232 (菜鸟二级) | 2020-07-19 21:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册