这需要多对多关系吗?
Do this required many to many relationship?
这是我的数据库设计:
Portfolio:
- id
- name
- invested
- total
- ...... etc
还有我的第二个table
Investments:
- id
- portfolio_id
- amount
--- etc
所以根据逻辑,每个用户只能有一个投资组合,每个投资组合可以有多个投资:
所以基本上“投资组合”可以有多个投资,“投资”也可以有多个投资组合,对吗? (每个用户都有一个投资组合),那么我应该使用多对多还是一对多?
由于每个用户都有独特的个人资料,投资仅与他们的个人资料相关(其他人无法访问)所以我应该在这里使用一对多吗?
这条评论不适合放在评论区。
要使关系成为多对多关系,您需要添加一个额外的 table 来表示关系。例如:
Portfolio:
- id
- name
- invested
- total
Portfolio_Investment:
- portfolio_id
- investment_id
Investments:
- id
- amount
请注意 portfolio_id
列不再出现在 Investments
中。
考虑一个关联实体在两个 table 之间建立桥梁,而不是依赖多对多关系。
如果您需要将一项投资映射到多个投资组合,这很有用,但为了回答您的问题,如果您这样做,每项投资都可以链接到多个投资组合,这不会产生任何影响感觉。虽然可以投资相同的股票名称,但这需要 investment_options 单独的 table,而不是与不同投资组合相关联的完全相同的投资。您的 table 不应该是多对多的。
既然你说每个用户都有一个独特的配置文件,你的问题的正确答案是使用一对多关系,将一个 Portfolio
链接到多个 Investments
。
这是我的数据库设计:
Portfolio:
- id
- name
- invested
- total
- ...... etc
还有我的第二个table
Investments:
- id
- portfolio_id
- amount
--- etc
所以根据逻辑,每个用户只能有一个投资组合,每个投资组合可以有多个投资:
所以基本上“投资组合”可以有多个投资,“投资”也可以有多个投资组合,对吗? (每个用户都有一个投资组合),那么我应该使用多对多还是一对多?
由于每个用户都有独特的个人资料,投资仅与他们的个人资料相关(其他人无法访问)所以我应该在这里使用一对多吗?
这条评论不适合放在评论区。
要使关系成为多对多关系,您需要添加一个额外的 table 来表示关系。例如:
Portfolio:
- id
- name
- invested
- total
Portfolio_Investment:
- portfolio_id
- investment_id
Investments:
- id
- amount
请注意 portfolio_id
列不再出现在 Investments
中。
考虑一个关联实体在两个 table 之间建立桥梁,而不是依赖多对多关系。
如果您需要将一项投资映射到多个投资组合,这很有用,但为了回答您的问题,如果您这样做,每项投资都可以链接到多个投资组合,这不会产生任何影响感觉。虽然可以投资相同的股票名称,但这需要 investment_options 单独的 table,而不是与不同投资组合相关联的完全相同的投资。您的 table 不应该是多对多的。
既然你说每个用户都有一个独特的配置文件,你的问题的正确答案是使用一对多关系,将一个 Portfolio
链接到多个 Investments
。