0

实际上我正在为学术机构构建一个软件,所以我只想知道几个问题的答案:

如您所知,每年都会生成一些新数据(针对新招生),并且一些数据会升级。所以我应该将所有数据存储在一个具有学年分隔的表中(作为 ac_year 之类的列),或者我应该为每年制作单独的表。此外,还有不同的表格来存储有关学生的课程、分数、费用、宿舍等信息。因此,每个信息(例如费用)都将存储在不同的表中,例如 Fee-2010 Fee-2011 Fee-2012 ...

或在以年份为列的 1 个单一费用表中。

还有一点是,在 1-2 年后数据库会变得更重,因此可以在单个表中备份一年的数据(例如以年为列的费用)?

请记住 SQL Server 2005。

谢谢

4

3 回答 3

2

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

一个例外是当领域从一年到下一年发生显着变化时。我怀疑你的桌子就是这种情况。

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

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

于 2013-02-28T14:28:51.903 回答
1

It's not typical to store the data in multiple tables based on time constraints. I would prefer to store it all in one table. In the future, you may look to archiving old data, but it will still be significant time before performance will become an issue.

于 2013-02-28T14:14:27.350 回答
1

向实体添加新属性总是比为每个不同的属性创建一个新实体更好。这样维护和查询对您来说会容易得多。在查询的性能部分,您不必担心数据和数据库的内部事务。如果出现真正的性能问题,有许多解决方案,例如在您的情况下多年创建索引。

于 2013-02-28T14:21:46.413 回答