复杂的SQL设计,需要帮助/建议

时间:2010-06-02 14:05:25

标签: sql sql-server

我在这里几乎没有关于SQL大师的问题...... 简而言之,这是广告管理系统,用户可以在其中定义不同国家,类别,语言的广告系列。我心里几乎没有问题,所以请尽可能帮助我。

一般情况下我正在使用ASP.NET,并且我想在第一次请求统计数据时缓存某个用户的所有结果集,这样我就可以避免大量往返服务器。

欢迎任何帮助

Click here for diagram包含我的问题所需的所有详细信息

1.此应用程序的主要问题是向用户显示他在广告系列上花了多少点击次数/展示次数以及花了多少钱。获取此信息的最简单方法是什么?我还将在此统计表中包括按日期,日期范围和少数其他参数进行过滤。

2.其他问题是当用户尝试编辑广告系列时会发生什么。如果用户将0.01 $设置为campaignPPU(按单位付费),第二天将其更新为0.05 $,则旧广告系列将会死亡,这将意味着重置为0.05美元。

3.如果你可以重新设计表格设计的某些部分,那么它会更灵活,更容易修改,你会怎么做?

谢谢...抱歉这么大的工作,但它可能会引起一些SQL人员的兴趣

2 个答案:

答案 0 :(得分:2)

对于#1,您可能希望使用一系列视图来显示有趣的统计信息。如果要缓存结果,可以将结果存储到报告表中,该表每隔 n 小时刷新一次(可能最多一天3或4次?我不喜欢我不知道什么适合这种情况。)

一旦所有数据都在报告表中,您就可以更好地将其编入索引以进行过滤,并且由于它将按计划进行清除和重新填充,因此访问速度应该更快。

请注意,只有在填充统计信息表时间不长的情况下才能使用此功能(您必须判断“持续时间过长”)。

对于#2,这听起来像是一个潜在的设计问题。 “编辑”是什么意思?此编辑操作是否会破坏旧的广告系列并创建新的“克隆”广告系列(这显然不是完美克隆或不存在问题)?是否存在重要的历史数据,但是编辑会导致孤立或删除?您可能想要分析此“编辑”过程,看看是否需要将历史记录跟踪添加到其中一些表中。可能是旧记录的简单日期时间,或者是一个单独的“历史”表,它反映了“编辑”操作正在修改的表的结构。

对于#3,它看起来没问题,但我只看到了系统的一小部分。我不知道应用程序的其余部分是如何设计的......

答案 1 :(得分:1)

尤金,

如果您计划保留已修改的广告系列,请考虑不删除它们。而是使广告系列日期敏感。例如,UserA在2010年1月1日开始了广告系列1,并于2010年2月1日结束,然后在2010年2月2日开始广告系列2。

或者,如果您不喜欢结束约会广告的概念。您可以考虑广告系列的历史记录表。基本上是相同的表结构,但添加了UniqueIdentifier以使行唯一。

我还应该注意,此广告系列表格及其相关表格的估算大小对您的设计非常重要。如果您希望只有1000行保持旧,并且当前记录在一个表中不是问题。但是,如果您计划拥有1000000或更多,那么您可能希望将旧版本与新版本分开,以便更快地进行查询,或者在您知道需要过滤的字段上正确计划统计数据和指标。还要记住,对于读取,指标是usefule,但它们会降低写入速度。

相关问题