Mysql数据库为多个值设计多个值

时间:2012-11-03 19:45:39

标签: mysql database

对于我对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
当人数或球数发生变化时,我似乎有点努力。

有没有更好的解决方案?

干杯, 乔治

1 个答案:

答案 0 :(得分:2)

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

如果您有两个具有N到N(多对多)关系的表,则应使用中间表。

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