我正在计划一个管理记录事件数据库的 Web 应用程序(使用 ASP.NET 编程)。数据库将在 SQL Server 2008 中进行管理。每个事件可能来自一组(我们称它们为“单元”)。用户将能够通过 ASP.NET 界面添加和删除这些“单元”。
每个“单元”都可能记录多达一百万个条目,甚至更多。(截止日期将通过日期进行管理。例如:
DELETE FROM [tbl] WHERE [date] < '01-01-2011'
我的问题是构建此类数据库的最佳方法是什么:
通过将所有“单位”的所有条目放在一个表中,如下所示:
CREATE TABLE tblLogCommon (id INT PRIMARY INDEX, idUnit INT, dtIn DATETIME2, dtOut DATETIME2, etc INT)
或者,通过为每个“单元”分隔表格:
CREATE TABLE tblLogUnit_1 (id INT PRIMARY INDEX, dtIn DATETIME2, dtOut DATETIME2, etc INT) CREATE TABLE tblLogUnit_2 (id INT PRIMARY INDEX, dtIn DATETIME2, dtOut DATETIME2, etc INT) CREATE TABLE tblLogUnit_3 (id INT PRIMARY INDEX, dtIn DATETIME2, dtOut DATETIME2, etc INT) --and so on CREATE TABLE tblLogUnit_N (id INT PRIMARY INDEX, dtIn DATETIME2, dtOut DATETIME2, etc INT)
从引用条目的角度来看,方法 #1 似乎更简单,因为使用方法 #2 我将不得不处理可变的 N 个表(正如我所说的,用户将被允许添加和删除“单元”。)
但是方法 #1 可能会导致以后对这些日志条目的访问效率非常低。我将不得不通过 ASP.NET 接口从这些日志中生成报告。
所以在我开始编码之前,我想听听你对此的看法?
编辑:我没有意识到表中的列数会有所不同。我的错!表中的实际列数是 16。