2014-02-07 32 views
-1

我正在和一位朋友争论我们学校项目的统计表。 这并不复杂,我们搜索一场比赛,每场比赛和一个球队的比赛,10个统计 我们中的一个只想为每个属性添加一列,而另一个则喜欢名称列和统计列数。对MySQL数据库的建议:多列或多行?

哪个是优化数据库的最佳方式?

+3

您需要在StackOverflow问题中显示您的模式或某种形式的最小尝试编程。 – jeremyjjbrown

回答

0

的多个统计数据列将导致查询方面更大的灵活性,而且在大多数情况下,更高的速度。一个狭义的表格设计,风格:user_id,stat_name,stat_value更加灵活,即你可以轻松地添加新的统计类型,但不能很好地扩展。

在大多数情况下,底线多列将为您提供更好的速度。只有狭义的桌子设计才有意义的情况是,当你不知道你的数据会是什么。

0

如果你想要一个规范化的数据库(和你这样做),任何一个都不是正确的答案。

因为每个团队都有很多统计数据(你不会说他们是什么),所以你需要一个团队表和一个具有一对多关系的统计表。这意味着两个表的主键(如第一范式所需)和子统计表中的外键指向父团队。

create table team (
    id int not null auto_increment, 
    name varchar(80) not null, 
    primary key(id) 
); 

create table statistic (
    id int not null auto_increment, 
    value decimal(15,4) not null, 
    team_id int, 
    primary key(id), 
    foreign key(team_id) references team(id) 
);