在sql中更多表或更多行更好?

时间:2013-02-28 14:11:36

标签: sql sql-server sql-server-2005

其实我正在为学术机构建立一个软件,所以我只是想知道一些问题的答案:

如您所知,每年都会生成一些新数据(新招生),有些会升级。所以我应该将所有数据存储在一个单独的表中,并与学年分离(如ac_year这样的列),或者我应该为每年制作单独的表。还有不同的表来存储关于学生的信息,如课程,标记,费用,宿舍等。因此,每个信息,如费用将存储在不同的表格中 费-2010 费-2011 费-2012 ...

或以1个单一费用表格,以年份为列。

还有一点是,在1 - 2年后不久,数据库将变得更重,因此可以在单个表中备份一年的数据(与年份一样的费用)?

和 请回答牢记SQL Server 2005。

由于

3 个答案:

答案 0 :(得分:2)

当您说出问题时,答案显然是将数据存储在一个表中,并将年份(或日期或其他信息)作为列。这是正确的做法。随着时间的推移,你正在处理同一个实体。

一个例外是当字段从一年到下一年显着变化时。我怀疑你的桌子是这样的。

如果您的数据库真的变大了,那么您可以考虑按时间对表进行分区。每个分区都是一年的数据。这将加速只需要访问一年价值的查询。它还有助于备份和恢复数据。这可能是您最终寻找的解决方案。

“真正变大”意味着表中至少有数百万行。即使表中有几百万行,大多数查询都可能在具有适当索引的合适硬件上正常运行。

答案 1 :(得分:1)

根据时间限制将数据存储在多个表中并不常见。我宁愿把它全部存放在一个表中。将来,您可能希望归档旧数据,但在性能成为问题之前,它仍然是重要的时间。

答案 2 :(得分:1)

向实体添加新属性总是比为每个不同属性创建新实体更好的选择。这样,维护和查询将更加轻松。 在查询的性能部分,您不必担心数据和数据库的内部事务。如果出现真正的性能问题,那么有很多解决方案,例如在您的情况下创建索引。