【问题标题】:SQL Database design questionSQL 数据库设计问题
【发布时间】:2011-07-07 03:16:47
【问题描述】:

我的任务是设计一个 SQL 数据库,该数据库将记录公司商品的值(sku 编号)。该公司有 7600 个需要跟踪的独特产品项目,并且每个产品在一年内将有大约 200 个值(一年内每个产品每天一个值)。

我的第一个猜测是 sku 编号从上到下(每个 sku 有一行)并且每个日期都是一列。

数据将用于以图表/图形格式查看,并且将针对这些数据显示额外的计算(例如百分比利润率等)

我的问题是:
- 这种布局是否可取?
- 如果这种类型的数据可以追溯到大约 15 年(每张表代表一年),我是否需要谨慎对待任何事情

有什么建议吗?

【问题讨论】:

    标签: sql-server-2005 database-design


    【解决方案1】:

    最好只有 3 列 - 而不是您建议的多列:

    sku    date         value
    -------------------------
    1      2011-01-01   10
    1      2011-01-02   12
    2      2011-01-01   5
    

    如果您想在每个日期记录有关给定产品的其他内容,则可以轻松添加另一列。

    【讨论】:

    • 我正在处理您的建议,但如果我使用您的想法,我将需要 200 x 7600 行。这将是一个非常长的桌子。
    • 没什么,我使用超过 50M 行的表。桌子通常比更宽的要长得多。这就是传统数据库的全部意义所在。
    【解决方案2】:

    我会为您的产品建议一张表格,并为历史价值建议一张表格。如果您打算选择特定时间段,可能会根据日期为历史值创建一个索引。

    create table products (
     id number primary key,
     sku number,
     name text,
     desc text);
    
    create table values (
     id number primary key,
     product_id number,
     timestamp date,
     value number,
     foreign key fk_prod_price product_id on product.id);
    
    create index idx_price on values.timestamp;
    

    注意:不是实际的 sql,您必须自己编写

    【讨论】:

    • 通过创建索引和单独的表格,可以更快地在屏幕上显示...这是一个巨大的优势...感谢您的建议。
    【解决方案3】:

    如果你喜欢@fiver 写的,你也不必每年都有一张桌子。一切都在一张桌子上。并在 sku/date 上添加索引以加快搜索速度

    【讨论】:

      猜你喜欢
      • 2023-03-21
      • 2010-12-12
      • 1970-01-01
      相关资源
      最近更新 更多