0

对不起,我对 mysql 和数据库一无所知,但我正在学习它。

所以,假设以下情况:

我有一张表,其中包含不同颜色的球的定义(ball_definitions):

id color
1 red
2 blue
3 green
...
N

其中 id 是主要值。

我有第二张表(人),其中包含人的定义:

id name
1 John
2 Peter
3 Michel
...
M

(其中 id 是主键)

现在,我想与每个人相关联,这些人拥有的球的数量,从概念上讲,是这样的:

john: 1 red ball, 3 green ball, 0 blue ball
peter: 3 red ball, 2 green ball, 1 blue ball.
...

以这样一种方式,M 和 N 都可以变化(出于便携性原因)。

我的第一个困难是让人员的表有 N 列,其中每列指的是每种颜色,但这不是可移植的(需要触发 ball_definitions 更改的每个更改,而且似乎很难查询)。

另一方面,创建一个具有“ManyToMany”关系的新表:

persons_id ball_definitions_id amount
1 1 1
1 2 3
1 3 0
2 1 3
2 2 2
2 3 1

当人数或球数发生变化时,我觉得有点费力。

有没有更好的解决方案?

干杯,豪尔赫

4

1 回答 1

2

不,没有更好的解决方案。

当您有两个具有 N 到 N(多对多)关系的表时,您应该使用中间表。

另一种方法是在persons 表中为每种类型的球创建一个列,或者在balls 表中为每个人创建一个列,这比您描述的解决方案更费力。如果你需要添加更多的球或人,事情会变得非常复杂和混乱。你描述了最好的解决方案。

于 2012-11-03T19:53:19.607 回答