让我们说我将产品和供应商存储在NoSQL数据库中。每个供应商可以出售几种产品,但是每种产品只能由一个供应商出售。
两者都互相引用:
Product
{
Id: 1,
Name: "Product A",
SupplierId: 123,
SupplierName: "Hees"
}
“ SupplierName”字段似乎“冗余”,但我想避免加入,因此我的应用程序将对此进行照顾。
Supplier
{
Id: 123
Name: "Hees",
Products: [1, 2, 3]
}
现在,我的应用程序必须注意引用的有效性。
可以说产品已经在数据库中,没有任何供应商。
现在,函数“ addSupplier”应该添加一个新的供应商,并执行以下操作:
我正在为第二点必须成为我的数据库或业务逻辑的一部分而苦苦挣扎。
我现在有两个选择:
我的业务逻辑将仅调用一个哑数据库逻辑函数“ InsertSupplier(...)”,该函数将返回新供应商的ID。然后它将为供应商包含的每个产品调用数据库函数“ UpdateProduct(...)”。
我的业务逻辑将只在数据库逻辑中调用“ InsertSupplier(...)”,而DAL将注意更新引用。
我习惯于SQL,其中引用逻辑始终由数据库处理,并且是数据库问题。
但是我的直觉说,“每个产品都必须具有供应商编号和供应商名称”是业务逻辑。
你怎么看?