Nhibernate 关于定制产品电子商务数据库模型的建议
我需要一些关于电子商务领域建模的建议 客户销售两种产品:Nhibernate 关于定制产品电子商务数据库模型的建议,nhibernate,database-design,model,database-schema,Nhibernate,Database Design,Model,Database Schema,我需要一些关于电子商务领域建模的建议 客户销售两种产品: 定制艺术作品,客户指定的设计 背面印有客户指定信息的艺术品印刷品 这是我到目前为止简化的数据库模型 Products: Id Description Price Orderlines: Id OrderId ProductId Attributes: Id Name OrderAttributes: AttributeId OrderlineId
Products:
Id
Description
Price
Orderlines:
Id
OrderId
ProductId
Attributes:
Id
Name
OrderAttributes:
AttributeId
OrderlineId
Value
产品表将包含上面的两种产品
订单行将所选产品链接到订单
属性保存每个产品的自定义字段名
例如,定制艺术品产品将具有设计属性
订单属性将订单产品链接到其海关属性,并具有相应的价值。
例如,定制艺术品产品,具有设计属性,其值为“油漆房子”
我还想使用nhibernate将这个数据库模型映射到代码
有没有更好的方法来建模这些数据?在面向对象的程序中,关系表示为关联 即:
- 若产品有订单,则产品必须有订单集合
- 如果订单是针对产品的,则订单必须具有产品属性
- 等等
产品的订单属性,NHibernate将把此访问转换为数据库世界
这就是使用OR/M的要点。它不仅仅是“按原样映射表”。它是关于连接两个非常不同的世界:面向对象的分层世界和关系数据
查看这篇非常古老的(2004!)CodeProject文章,以及它如何创建基于Northwind SQL Server数据库的模型:
不要关注如何将模型映射到数据库,而要关注模型设计
查看这篇文章,它比另一篇更现代:
有几点建议:
Orderlines表应包含产品的价格(可能还有描述),以便在不影响现有订单的情况下更改项目价格。同样,订单表(未显示)应包含可能更改的客户信息(例如发货地址)。构成订单的数据不能更改,最简单的方法是将其展平并反规范化
OrderAttributes结构称为模型,它有许多缺点。一般来说,我建议避免使用它,并将所需的列添加到Orderlines表中。如果需要,您的应用程序可以对产品和订单行进行子类化,以便CustomArtWorkProduct在添加到订单时创建CustomArtWorkOrderLine。谢谢,您对具有不同属性的产品的数据库模型以及如何映射这些属性有何建议?@Alex,但是我相信我应该知道你的项目背后的环境和原因,以便做出一个好的决定。