2

我正在尝试为需要更改原始“较低级别”表的系统找出最佳的数据库/数据架构方法,理想情况下,自动传播基于基础数据存储视图的各种不同表。

让我举一个简化的例子。

想象一下,我有以下表格:

  1. 不同超市的各种食品配料表和价格表
    • 例如。一张包含 {番茄酱:1.19,黄油:0.99} 的 Safeway 餐桌,以及一张带有 {鸡蛋:1.99,黄油:0.79} 的沃尔玛餐桌
  2. 存储每种成分的最便宜位置的表
    • 例如。{黄油=>沃尔玛:0.79}
  3. 一张表,其中存储具有最便宜的配方价格的配方(由表 2 中最便宜的成分价格组成。
    • 例如。{ "番茄酱-鸡蛋-早餐 => 总计:3.97,配料 => 黄油:0.79,鸡蛋:1.99,番茄酱:1.19
  4. 一张表,其中存储了几种替代食谱中最便宜的早餐食谱。

现在想象一下,我有工人外出并每小时更新表 (1) 的值。是否有数据库设计或架构会强制更新表 2 中依赖于表 1 中更改的内容的任何条目,并且类似地将更改传播到表 3 和表 4。我想这可以通过代码实现一系列级联工作,但我想知道是否有一种不那么复杂和更优雅的方式来做到这一点。

谢谢你的帮助。

4

2 回答 2

2

Looks like a well fit for the CQRS pattern. You should have just one data source when storing items.

From the linked article:

CQRS stands for Command Query Responsibility Segregation. It's a pattern that I first heard described by Greg Young. At its heart is a simple notion that you can use a different model to update information than the model you use to read information.

CQRS helps you take in one kind of information (Update model) and then transform it into something which you can query (Read/query model).

于 2012-04-19T12:25:38.137 回答
2

我认为“优雅的方式”是正确规范您的表格。

例如,您不会有一张用于 Safeway 的桌子,而另一张用于 Walmart 等的桌子 - 相反,您将有一张用于“零售商”的桌子,其中列出了 Safeway 和沃尔玛,然后有一张用于“产品”的桌子,用于列出鸡蛋、番茄酱等然后是第三个,说'retail_item',列出了retailer_id、product_id、价格等。

那么您可以简单地查询您提出的所有问题...

于 2012-04-19T12:29:45.420 回答