【发布时间】:2020-07-20 06:09:06
【问题描述】:
我在存储要购买的产品的数据库中有一个表(我们将表称为产品)。有必要跟踪每个产品的变化。我对版本记录有 2 个想法。
首先是通过复制产品并覆盖不同的字段并在旧版本和新版本的记录中保留引用来在产品中创建新记录。在这种情况下,产品表中的记录是只读的,但指示产品是否已归档的字段除外。
其次是创建 2 个表:Product 和 ArchivisedProduct。产品的记录是可编辑的,但每次更改都会在 ArchivisedProduct 中创建一条新记录,其中仅存储差异(因此除了 id,所有字段都可以为空)并且表的字段相互引用。
您知道任何可以管理该过程并与 Node.js、Prisma、PostgreSQL 和 Apollo 配合使用的工具吗?对于这种用途,我推荐使用winston/papertrail,但是当我阅读文档时,它似乎只创建日志。
示例数据库结构以获得更多权限: 第一个例子:
type Product {
id: Int! @id
name: String!
price: Float!
archived: Boolean!
productVersionIds: [Product]!
}
第二个例子:
type Product {
id: Int! @id
name: String!
price: Float!
archivisedProductIds: [ArchivisedProduct]! @relation(name: "ProductToArchiva")
}
type ArchivisedProduct {
id: Int! @id
name: String
price: Float
product: Product! @relation(name: "ProductToArchiva")
}
【问题讨论】:
标签: node.js postgresql graphql prisma database-versioning