哪种结构更有用?

时间:2011-01-12 23:26:47

标签: mysql structure

我正在开发基于浏览器的在线游戏。我正在使用PHP和MySQL。将有用户和用户的村庄。

结构A

# users
-------
.id
.username
.password
.email

# villages
----------
.id
.name
.coordinate_x
.coordinate_y
.user_id

结构B

# users
--------
.id
.username
.password
.email

# villages
----------
.id
.name
.coordiante_x
.coordinate_y

# users_villages
----------------
.user_id
.village_id

哪种结构有用?

(注意:对不起,我找不到更多问题的解释性标题)

校正:

我应该更清楚。每个用户可以拥有许多村庄,一个村庄只属于一个用户。

3 个答案:

答案 0 :(得分:3)

如果每个村庄只有一个用户,则结构A很好。它允许一对多的关系。一个或多个村庄可以与给定用户相关联。

如果每个用户可以有许多村庄,则多对多关系需要结构B.每个用户可以拥有(拥有或居住?)一个或多个村庄,每个村庄可以与一个或多个用户相关联。

答案 1 :(得分:2)

这完全取决于你想要达到的目标。如果你想让每个村庄属于一个用户,那么第一个更好。如果您希望村庄拥有/居​​住/由多个用户,每个用户都可以拥有多个村庄,第二个更好。

答案 2 :(得分:1)

结构B将是一个更灵活的解决方案。它被标准化为更高的形式(http://en.wikipedia.org/wiki/Database_normalization)并且将支持任何关系结构A支持加上更多。