我要构建一个 PHP Web 应用程序并且已经决定使用 Codeigniter + DataMapper(过热版).
我发现 DataMapper(过热版)即使实际上只有一对多关系,也需要使用额外的关联表。
例如,一个国家可以有很多玩家,但一个玩家只能属于一个国家。典型的数据库设计是这样的:
[countries] country_id(pk), country_name
[players] player_id(pk), player_name, country_id(fk)
但是,在 DataMapper 中,它要求设计是这样的:
[countries] country_id(pk), country_name
[players] player_id(pk), player_name
[asso_countries_players] countries_players_id(pk), country_id(fk), player_id(fk)
这对维护很有好处,因为如果以后我们改变了一个玩家可以属于多个国家/地区的想法,那么只需很少的努力就可以完成。
但是我想知道的是,对于这样的数据库设计,一般来说,与典型设计相比,有没有性能增益或损失?