请教数据库表设计问题 谢谢!

  • 似水
    请教:
    我有个数据库存放N个英文句子, 每个英文句子全部由N个英语生词组成, 数据库结构如下

    ID 句子
    1 字1 字2 字3
    2 字4 字5 字6字7



    但是, 我要通过英汉字典查询后得到每个生词的解释, 然后展现如下生词和解释混合的句子

    ID 句子
    1 字1(解释1) 字2(解释2) 字3(解释3)
    2 字4(解释4)字5(解释5) 字6(解释6)字7(解释7)




    但是上面的查询实现很复杂.

    于是我更改了数据表把每个句子分割成单词, 每个单词单独做为一个字段:

    ID 单字
    1.1 字1
    1.2 字2
    1.3 字3
    2.1 字4
    2.2 字5
    2.3 字6
    2.4 字7
    … …

    上述数据表查询很方便, 但是要展现成上述生词和解释混合的句子的表格类型却很麻烦.


    请问没有更灵活的数据表设计, 让我既能够每个句子方便展现 有能够方便查询句子中每个生词的解释并标注在句子中??


    谢谢!!
  • L
    Laputa
    是不是逻辑都必须在SQL里实现? 站董定制版
  • 似水
    回复2#Laputa


    葡萄哥 尽量在Sql里实现 不要动用function
  • t
    txkingzjg
    for xml path?好像是这个,你可以研究下
    https://www.cnblogs.com/doubleliang/archive/2011/07/06/2098775.html
  • 似水
    回复4#txkingzjg

    for xml path? 请问这是啥意思?
  • l
    liuzhedash
    这个看起来非常适合用非关系型数据库处理,可以看下mongodb
  • L
    Laputa
    什么数据库? 站董定制版
  • t
    txkingzjg
    回复5#似水


    更新了个链接,你自己看下
  • L
    Laputa
    回复6#liuzhedash

    他这个应用,最好的方式就是体外拼查询结果。一个查询出来…数据冗余或是join效率都挺难的。 站董定制版
  • 似水
    回复9#Laputa


    葡萄哥 现在数据库还没选型, 请问那种数据库能天然支持这种数据结构需求, 我尝试过ACCESS, MySQL, couchDB, 但都很麻烦
  • 似水
    回复8#txkingzjg

    谢谢思路, 但是没彻底解决我的问题 但还是感谢
  • L
    Laputa
    回复10#似水

    不要过度依赖某种数据库特性 站董定制版
  • 似水
    回复12#Laputa


    恩, 我试过用json和数组作为字段, 但是还是很麻烦, 求方便的方案 谢谢
  • P
    Pyrrhus
    用mongoDB,

    每一句一个节点,每一个单词分成一个叶子,单词解释可以直接挂在叶子上。

    查询时根据需求,遴选出相应深度的内容。
  • P
    Pyrrhus
    mangoDB有类SQL查询语句,应该可以满足你的需求
  • n
    numbernine
    mango的查询写起来没有SQL舒服。
  • z
    znm
    解释哪里来的啊 iOS fly ~
  • 同心牵手
    group_contact?
  • s
    songco
    一个句子和字对应表

    一个字和解释对应表(字的解释一样的话)


    查询时排下序就是句子 iOS fly ~
  • M
    Motorcure
    为什么不考虑在应用层通过分词实现?英语分词的成熟度已经相当高了,哪怕是专业领域词汇也有相应的分词库,分词切片->翻译API->切片拼装,都不需要在持久层做这些操作,灵活性也大一些
  • f
    flyingforce
    上面很多人说了,你这样的需求不适合全在持久层完成,勉强也许能做出来,但是很难不出问题,将来维护也会是个事情。

    或者就考虑业务层拼装,或者考虑store procedure,相对来说弄的人比较多,问题好解决一点 iOS fly ~