学说:处理月度数据

时间:2013-05-01 12:30:23

标签: database-design symfony doctrine

我正在使用 Symfony2 Doctrine2 开发应用程序。我有很多表存储月度数据。一般来说,我定义像这样的实体:

class Entity {
    private $atribute1;
    // ...
    private $atributeN;

    private $year;
    private $month;
    private $value;
}

我有一些场景,其中实体存储与另一个实体相关的月度数据。例如:产品 - 订单关联:

class Product {
    private $name;
    // ...
}

class Order {
    /**
     * ORM\ManyToOne(TargetEntity="Product")
     * ...
     */
    private $product;

    private $year;
    private $month;
    private $value;
}

在这些情况下,数据以表格形式输入,用户为每个产品指定一年中12个月的相应值。

我的问题是:以下列方式设计值表(例如Order)非规范化不是更好:

class Order {
    /**
     * ORM\ManyToOne(TargetEntity="Product")
     * ...
     */
    private $product;

    private $year;

    // Value for january
    private $month1Value;

    // Value for february
    private $month2Value;

    //...

    // Value for december
    private $month12Value;
}

我们在一条记录中指定产品值(而不是多条记录)。 我认为这种设计可以简化价值的持久性,最重要的是产品价值的检索。 否则,我需要编写代码来进行转换,以显示每个月的产品值。

一些注意事项:

  • 用户/利益相关者只对总价值(12个月值的总和)感兴趣
  • 不需要按月间隔对过滤器进行查询。
  • 产品值必须显示在带有标题的表格中:PRODUCT,JAN VALUE,FEB VALUE,... DEC VALUE。
  • 我理解规范化是基本的,但我也知道我们应该在必要时进行非规范化(出于性能原因,设计等)

我正在使用Symfony2和Doctrine,但我的问题与这些框架无关。

0 个答案:

没有答案