MySQL多表与行

时间:2014-05-08 13:32:54

标签: php mysql database-design

我在这里阅读了很多有关此讨论的帖子,但我的问题是具体的。

请在回复前完整阅读。

我想知道在数据库中是否最好有数百行甚至数千行,或者将其拆分为多个表。

情景是: 我有一个用户,一次只能在一个城市。 (有多个城市,例如巴黎,柏林和伦敦) 现在每个城市都有很多区域(可能有几百个)。 我在想,给每个城市提供自己的桌子会更有效率。

E.G:
rooms_london
  - 伦敦的所有地区都在这里作为行
rooms_berlin
- 这里的所有柏林区域都是行

对于巴黎以及我将来添加的任何其他城市等等。

然后在PHP中我可以构造类似于:

的查询
 SELECT * FROM rooms_$playerCity WHERE roomID = $playerRoom

这是一种有效的方法还是我应该在中心房间表中添加一个额外的列。

如果我不够清楚,我会尽力澄清你需要的任何东西。

非常感谢

2 个答案:

答案 0 :(得分:2)

我不会把房间分成不同的桌子。

如果性能成为问题,我会使用分区http://dev.mysql.com/doc/refman/5.5/en/partitioning.html

+------+          +------+
| City | 1 ---- * | Room |
+------+          +------+
  

是否...数据库中的数千行或将其拆分   多个表格。

在具有复杂查询和索引不足的几百万行之前,

性能不会成为问题

答案 1 :(得分:0)

我不使用MY SQL,但我的SQL Server表设计看起来像这样

Create Table Player (
  PlayerID int
  ...
  )

 Create Table City (
   CityID int
   ...
  )

 Crate Table Rooms (
  RoomID int
  CityID int
  ...
  )

  Create Table PlayerRoom (
    PlayerID int
    RoomID int
    ChaeckIn DateTime
    CheckOut DateTime
    ...
    )

enter image description here

然后要获得一个房间中的最后一个玩家,你可以通过

查询
  Select Top 1 * from PlayerRoom where Roomid = @roomID order by CheckIn Desc