2012-02-08 50 views
1

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

的一切,是不是标有“计算”或“最终值”是原始数据,我会被操纵。

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

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

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

+0

任何时候你正在考虑动态地向SQL添加表/列,你100%做错了(呃,也许99.9%,但仍然!) – Jamiec 2012-02-08 16:34:16

回答

1

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

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

从你有什么上面,我会说你至少有以下三个表:

客户 - 包括客户的基本资料,每个客户一行,并某种ID,你生成(可能是一个整数标识列是最好的,但可以是您选择的任何东西)。

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

销售 - 每笔交易一行

这里有些棘手的地方。您可以拥有Sales和SalesItems,其中销售对于每个交易具有唯一的行,并且SalesItems对于在交易中购买的每个产品都包含一行,但对于上面显示的非常简单的系统,您可以使用具有ProductID和CustomerID以及数量和您想要存储的任何其他商品的销售表。

编辑:这是一个安全的赌注,一个简单的系统将有一天会成长为一个复杂的系统,所以如果我设计的数据库,我可能会去销售和SalesItems单独的表,使数据库更灵活,能够规模更好。

+0

谢谢。我认为这很有道理。最后,我最关心的是跟踪团队的表现,比如“水果”与“蔬菜”相比的表现。客户的细分不是主要目标。 – eek142 2012-02-08 17:05:54

+0

是的,我听说过,我刚刚去过很多客户,他们站在数据库上解决了一个小问题,并且在他们知道它已经成长为最重要的应用程序之前。在将来的某个时候,你永远不知道你是否会对哪些顾客购买最多的水果与蔬菜或类似的东西感兴趣。将设计规划出来,使其能够在未来扩展到其他要求总是不错的。 – 2012-02-08 17:11:49

+0

当你说你永远不想直接在表格中存储计算数据时,你的意思是我应该为这些数据创建一个单独的表格,或者有一些方法可以在表格3中生成值,而不必将计算列存储在表1和表2? – eek142 2012-02-08 19:20:53