gpt4 book ai didi

php - MySQL 列 json 与连接

转载 作者:行者123 更新时间:2023-11-29 10:59:19 24 4
gpt4 key购买 nike

我陷入了假日套餐库存项目的数据库设计困境,该项目包含一个用于存储套餐信息的主表packages

这是字段

  1. id PK
  2. package_name varchar
  3. 景点 json eg-field: ['super','funny'],
  4. 包含 json 例如字段:['hello','cool']

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

那么这是一种诽谤方式还是将景点和包含内容保留在另一个具有外键关系的表中??。

如果我选择第二种方法(即不同的景点和包含内容表),那么搜索具有特定景点的套餐怎么样?认为搜索需要联接查询(使用联接搜索是一种不好的做法??。)。

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

最佳答案

这取决于您预见项目的复杂程度。您可以使用现有的表配置并利用 JSON 搜索功能,但是随着表变得越来越大,这将成为越来越大的性能问题。最好创建 4 个表,Packages、Inclusions、Attractions 和Relations。

套餐

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

景点

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

包含内容

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

关系

  • ID(整数)PK
  • PID(整数)FK - 包
  • RID(整数)包含或景点的 ID
  • type (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*/

关于php - MySQL 列 json 与连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42523840/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com