【发布时间】:2021-10-02 10:12:25
【问题描述】:
我想就这个在 JSON 或数据透视表之间选择的困境获得您的专家意见
假设我们这里有 2 张桌子
- 人
- 工作
一个人可能有多个工作,唉,一个工作可能有多个人订阅它。 最好的方法是什么?
方法一:JSON
我会在people 表中有jobs 列,其中包含该人的工作ID 的json 数组,例如:[1,2,4]
方法2:枢轴
我会创建带有job_id 和person_id 列的数据透视表job_person,好吧,你知道Laravel Eloquent 风格的多对多数据透视表
我进行了一些搜索,发现文章支持每种方法,有人说 JSON 更好,因为它更简单,其他人会说 Pivot 更好,因为关系数据库应该是这样工作的,等等。
但我想知道,在什么情况下我应该使用哪一个?如果只是像上述场景这样的简单案例,JSON会更好吗?
如果包含其他变量(例如附加数据透视列)怎么办
(也许每个枢轴还包含status 列,可以设置为active 或past_job)
或者,如果将来我们希望能够让所有有特定工作的人,在这种情况下,我认为 Pivot 会更可取。
如果另一个表不是jobs,而是books,并且一个人可以拥有大量books,那么我们可能只为一个人拥有数十甚至数百个数据透视记录?还有一百个人?
如果另一个表不是books,而是stocks,在这种情况下,一个人可能会多次订阅/取消订阅多个股票?
也许对于基本原则,每个人的优点/缺点是什么?
非常感谢
【问题讨论】:
标签: json database laravel database-design relationship