我在数据库中有一个表,用于存储要购买的产品(我们称此表为Product)。有必要跟踪每个产品的变化。我有两个关于版本记录的想法。
首先,通过复制产品并覆盖不同的字段,在产品中创建新记录,并将引用保留在旧版本和新版本的记录中。在这种情况下,“产品”表中的记录是只读的,但指示产品是否已存档的字段除外。
第二个步骤是创建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")
}