繁体   English   中英

MySQL列JSON vs联接

[英]MySQL columns json vs joins

我被假期包裹库存项目的数据库设计所困扰,该项目包含一个用于存储包裹信息的主表packages

这是田野

  1. 身份PK
  2. package_name varchar
  3. 景点json eg-field:['super','funny'],
  4. includes json eg-field:['hello','cool']

一个包可能有很多吸引力和内含物,所以这就是为什么我选择一个json字段。

那么这是毁的方式还是将吸引力和内含物保留在具有外键关系的另一个表中?

如果我选择第二种方法(即吸引人和包含物的不同表),那么如何搜索具有特殊吸引人的包会认为搜索需要联接查询(使用联接搜索是一种不好的做法?。)。

但是在第一种方法中,我们可以应用json搜索(MySQL版本> 5.7支持json搜索)。

这取决于您预见该项目将变得多么复杂。 您可以使用现有的表配置并利用JSON搜索功能,但是随着表的增大,这将成为性能上越来越大的问题。 最好创建4个表,包,内含物,景点和关系。

配套

  • ID(整数)PK
  • 名称(varchar)

旅游景点

  • ID(整数)PK
  • 名称(varchar)

内含物

  • ID(整数)PK
  • 名称(varchar)

关系

  • ID(整数)PK
  • PID(int)FK-软件包
  • RID(int)包含或吸引的ID
  • 类型(varchar)表示包含或吸引

然后,您可以进行联接以选择类型的任意组合,并将任意数量的类型相互关联。

SELECT * FROM Packages p join Relation r ON p.ID = r.PID AND r.type = "Attraction" Left Join Attractions a ON a.ID = r.RID WHERE p.id = 1 /*specific package id*/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM