Laravel 多对多关系:枢轴 VS JSON
Laravel Many to Many Relationship : Pivot VS JSON
我想听听您对这个在 JSON 或 Pivot Table
之间选择的困境的专家意见
假设我们这里有 2 table
- 人
- 职位
一个人可能有多个工作,唉,一个工作可能有多个人订阅。
最好的方法是什么?
方法一:JSON
我会在 people
table 中有 jobs
列,其中包含 json 那个人的工作 ID 数组,例如:[1,2,4]
方法二:旋转
我会用 job_id
和 person_id
列创建枢轴 table job_person
,好吧,你知道 Laravel Eloquent 样式很多许多枢轴 table
我做了一些搜索,我发现文章支持每种方法,有些人说 JSON 更好,因为它更简单,其他人会说 Pivot 更好,因为关系数据库应该如何工作,等等.
但是我想知道,在什么情况下应该使用哪一个?就像上面的情况一样只是简单的情况,JSON 会更好吗?
如果包含其他变量(如其他数据透视列)怎么办
(也许每个枢轴还包含 status
列,可以设置为 active
或 past_job
)
或者,如果将来我们希望能够让所有从事特定工作的人都参与进来,我认为在这种情况下,Pivot 会更可取。
如果不是 jobs
,另一个 table 会是 books
并且一个人可以有大量的 books
,那么我们可能有几十个,甚至仅一个人的一百个枢轴记录?而且还会有一百个人?
如果不是 books
,另一个 table 是 stocks
,在这种情况下,一个人可能会多次认购/取消认购多只股票?
也许就基本原则而言,每个人的 advantages/disadvantages 是多少?
非常感谢
我宁愿不选择JSON,因为选择它没有任何好处,你会牺牲很多数据库特性,查询数据困难和缓慢。
What if there are other variables included like additional pivot
columns (Maybe each pivot also contain status column that can be set
to active or past_job)
Job 和 Person 不相互依赖,因此您需要在它们之间创建一个关联 table,例如“PersonJob”,并向其中添加必要的信息,这个在Laravel.
中很容易遍历
Or what if in the future we want to be able to get all peoples whom
have a specific jobs, in which case Pivot would be preferable i think.
您可以使用关联 table.
轻松查询此内容
And maybe to the basic principle, what is each one's
advantages/disadvantages?
关系数据库就是为这种东西而生的,JSON没有任何价值,只有困难。
我想听听您对这个在 JSON 或 Pivot Table
之间选择的困境的专家意见假设我们这里有 2 table
- 人
- 职位
一个人可能有多个工作,唉,一个工作可能有多个人订阅。 最好的方法是什么?
方法一:JSON
我会在 people
table 中有 jobs
列,其中包含 json 那个人的工作 ID 数组,例如:[1,2,4]
方法二:旋转
我会用 job_id
和 person_id
列创建枢轴 table job_person
,好吧,你知道 Laravel Eloquent 样式很多许多枢轴 table
我做了一些搜索,我发现文章支持每种方法,有些人说 JSON 更好,因为它更简单,其他人会说 Pivot 更好,因为关系数据库应该如何工作,等等.
但是我想知道,在什么情况下应该使用哪一个?就像上面的情况一样只是简单的情况,JSON 会更好吗?
如果包含其他变量(如其他数据透视列)怎么办
(也许每个枢轴还包含 status
列,可以设置为 active
或 past_job
)
或者,如果将来我们希望能够让所有从事特定工作的人都参与进来,我认为在这种情况下,Pivot 会更可取。
如果不是 jobs
,另一个 table 会是 books
并且一个人可以有大量的 books
,那么我们可能有几十个,甚至仅一个人的一百个枢轴记录?而且还会有一百个人?
如果不是 books
,另一个 table 是 stocks
,在这种情况下,一个人可能会多次认购/取消认购多只股票?
也许就基本原则而言,每个人的 advantages/disadvantages 是多少?
非常感谢
我宁愿不选择JSON,因为选择它没有任何好处,你会牺牲很多数据库特性,查询数据困难和缓慢。
What if there are other variables included like additional pivot columns (Maybe each pivot also contain status column that can be set to active or past_job)
Job 和 Person 不相互依赖,因此您需要在它们之间创建一个关联 table,例如“PersonJob”,并向其中添加必要的信息,这个在Laravel.
中很容易遍历Or what if in the future we want to be able to get all peoples whom have a specific jobs, in which case Pivot would be preferable i think.
您可以使用关联 table.
轻松查询此内容And maybe to the basic principle, what is each one's advantages/disadvantages?
关系数据库就是为这种东西而生的,JSON没有任何价值,只有困难。