【发布时间】:2016-10-17 10:39:56
【问题描述】:
在这个场景中,我有:球员、梦幻足球联赛(社区)和结果。
1 位用户可以加入许多梦幻联盟。
我目前的结构是:
create table players (id int, email, display_name)
create table communities (id int, name, password, admin_email)
create table community_players (community_id, player_id)
我现在需要为每个社区创建一个结果表。我在想:
create table results (player1_id, player1_points, player1_goals_scored, player2_id, player2_points, player2_goals_scored, date, community_id)
我担心这张桌子最终会变得很大。因此,当我对其进行统计查询时(例如,谁击败了谁、进球数、失球数等),它最终会变得异常缓慢。
我的想法是:
我应该为每个创建的社区“即时”创建结果表吗?
create table results_community_name (player1_id, player1_points, player1_goals_scored, player2_id, player2_points, player2_goals_scored, date, community_id)
【问题讨论】:
-
为另一个表中的每条记录创建一个表是一个众所周知的坏主意。你现在的结构到底有什么问题?您对其性能和可扩展性有什么衡量或估计?
-
我不想为另一个表中的每条记录创建一个表,只是在数据库中 - 或者这就是你的意思?我没有任何测量或估计,除非我只使用一张表,我估计它在提取进球数等统计数据时可能会查询大约 100,000 条记录。
-
"create a results table 'on-the-fly' for every Community"- 这是否意味着您将为communities表中的每条记录创建一个表?至于记录数,只有整数的表中的 100,000 条记录是相当少的数据量。 -
100,000 条记录是小菜一碟。等到你增长到那个大小的 100 倍。然后开始担心性能。
-
大卫 - 是的。对不起,我以为你的意思不同。我仍在研究数据库结构!
标签: mysql database database-design ddl