【问题标题】:Linked tables vs json objects链接表与 json 对象
【发布时间】:2020-07-30 22:29:30
【问题描述】:

所以问题是在 mysql 数据库中使用链接表与 json 对象进行多对多关系更好,例如,您有一个像这样的user

 id
 name
 email

event 表:

 id
 name
 description

问题是向user 表添加一个额外的文本字段是否更好,其中text 列存储一个json 对象,您将event ids 放在这样的位置

user表:

id
name
email
json

json 对象看起来像这样

{
   {event_id: 1},
   {event_id: 2},
   etc
}

或者有一个链接表与

id
event_id
user_id

假设您有一个多对多关系,其中一个用户可以注册多个事件,一个事件可以有多个用户。您还想计算有多少用户属于 1 个事件,并且还想询问在 laravel 中执行此操作时哪个最适合用于查询和性能。

【问题讨论】:

  • 无变体 - 仅链接表。
  • 肯定链接表比 JSON 字段更好(如果我们谈论的是关系数据库)。许多数据库不支持对 JSON 字段进行本地索引,因此当您有大量数据时,您的查询会非常慢。

标签: mysql json laravel


【解决方案1】:

您的链接表包含所有信息

SELECT COUNT(*) FROM linked_table GROUP BY event_id WHERE event_id = 10

所以您现在拥有属于一个事件的用户数。

即使使用 mysql 8,您也必须投入更多的工作和代码来获取信息。

编辑:

除了 json 比逗号分隔的字段 Is storing a delimited list in a database column really that bad? 略好

【讨论】:

    猜你喜欢
    • 2019-02-22
    • 1970-01-01
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多