需要有关如何构建我的数据库的帮助(SQL Server)

时间:2012-02-08 16:30:41

标签: sql-server database-design

tables

未标记为“calc”或“finalvalue”的所有内容都是我将要操作的原始数据。

我终于知道足够多的SQL能够创建必要的表并执行所需的计算。但是,我只想验证没有更简单的方法来执行此操作,这将涉及更少的表。

创建视图而不是实际更改表并插入计算列会更好吗?在表3中得到最终数据后,我实际上并不关心Table1和Table2中的计算列。 SQL Server 2008。

我还应该注意,我每天都会收到Table1和Table2的新原始数据,并计划添加这些记录,然后将新的最终值附加到Table3,并附上日期字段。

1 个答案:

答案 0 :(得分:1)

从这里开始: http://support.microsoft.com/kb/283878

您永远不希望将计算直接存储在表中,计算将由生成数据的查询完成。表3实际上是一个简单查询的结果。

根据你的情况,我会说你至少有以下三个表:

客户 - 包含基本客户数据,每个客户一行,以及您生成的某种ID(可能是整数标识列最好,但可以是您选择的任何内容)。

生产(或产品,如果您的产品不仅仅是水果和蔬菜) - 每个产品包含一行产品信息,您生成某种ID(同样,整数标识是最好的)。

销售 - 每笔交易一行

这里的事情变得有点棘手。您可以拥有Sales和SalesItems,其中sales对每个事务都有一个唯一的行,而SalesItems对于在事务中购买的每个产品都包含一行,但对于一个非常简单的系统,如上图所示,您可以放弃具有ProductID和CustomerID的Sales表以及数量和您要存储的任何其他内容。

编辑:可以肯定的是,一个简单的系统有一天会变成一个复杂的系统,所以如果我正在设计数据库,我可能会使用Sales和SalesItems的单独表来使数据库更加灵活并且能够扩展更好。