database - 当您希望对原始表的更改自动传播到汇总表时,最佳数据库设计/架构

标签 database architecture nosql

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

让我举一个简化的例子。

假设我有下表:

  1. 不同超市的各种食品成分和价格表
    • 例如。西夫韦餐 table 上有{番茄酱:1.19,黄油:0.99},沃尔玛餐 table 上有{鸡蛋:1.99,黄油:0.79}
  2. 存储每种成分最便宜位置的表格
    • 例如。 {黄油=>沃尔玛:0.79}
  3. 存储菜谱的表,菜谱价格最便宜(由表 2 中最便宜的原料价格组成)。
    • 例如。 {“ketchupy-egg-breakfast => 总计:3.97,配料 => 黄油:0.79,鸡蛋:1.99,番茄酱:1.19
  4. 一张 table ,其中存储了多种替代食谱中最便宜的早餐食谱。

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

感谢您的帮助。

最佳答案

看起来很适合 CQRS pattern 。存储项目时,您应该只有一个数据源。

来自链接的文章:

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 帮助您获取一种信息(更新模型),然后将其转换为您可以查询的内容(读取/查询模型)。

关于database - 当您希望对原始表的更改自动传播到汇总表时,最佳数据库设计/架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10226386/

相关文章:

xml - 如何从 FLOWR xquery 指定 BaseX 数据库?

mysql - 左加入作为新列?

mysql - MySql 的 Golang ORDER BY 问题

database-design - Trello 如何如此快速地显示历史?

mysql - 在 MySQL Join 中搜索不同的列

jakarta-ee - 应用架构 : servers and layers

ruby-on-rails - 如何锁定表以防止在 Rails 中使用记录创建?

NoSql 和数据仓库

javascript - 使用 Mongoose/MongoDB 创建一个独立的用户模式并将其嵌入到消息模式中?

redis - Redis如何存储键值?