我正在使用 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;
}
我们在一条记录中指定产品值(而不是多条记录)。 我认为这种设计可以简化价值的持久性,最重要的是产品价值的检索。 否则,我需要编写代码来进行转换,以显示每个月的产品值。
一些注意事项:
我正在使用Symfony2和Doctrine,但我的问题与这些框架无关。