- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
背景故事:
我正在构建一个电子商务网络应用程序(在线商店)现在我要选择数据库系统和适当的设计了。我在开发产品属性设计时遇到了困难
我一直在考虑选择NoSQL(MongoDB)还是SQL数据库系统
我需要你的建议和帮助
问题:
当您选择产品类型(例如 table )时,它应该会向您显示该类型的相应过滤器(例如高度、 Material 等)。当您选择另一种类型时,比如“汽车”,它会为您提供汽车特定的过滤器属性(例如燃料、发动机容积)
例如,在一个流行的在线商店中,如果您选择一种数据存储类型,您将获得针对该类型属性的过滤器,例如硬盘驱动器大小或连接类型
可能的解决方案:
您可以很容易地实现这样的产品属性结构。
您可以为每种产品创建一个带有字段属性的集合,然后将您想要的任何内容放在那里,就像他们在此处建议的那样(字段“详细信息”):
https://docs.mongodb.com/ecosystem/use-cases/product-catalog/#non-relational-data-model
结构将是
问题:
使用这样的解决方案,您根本没有产品类型,因此您无法按产品类型过滤掉产品。每个产品在 attrs 字段中包含它自己的任意结构,并且不遵循任何模式
也许我可以以某种方式采用这种方法?
有像单表这样的解决方案,其中所有产品都存储在一个表中,您最终会得到与所有产品的属性编号一样多的字段。
或者为每种产品类型创建一个新表
但我不会考虑这些。一个非常笨重,另一个不太灵活,需要动态方案设计
可能的解决方案
有一种非常灵活的解决方案叫做 EAV https://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model
我们的模式是:
这样的设计可能是在MongoDB系统上做的,但我不确定是不是为这样的规范化结构做的
问题
模式将变得非常庞大并且很难查询和掌握
最佳答案
如果你选择SQL数据库,看看PostgreSQL which supports JSON features .您不一定需要遵循数据库规范化
。
如果选择 MongoDB,则需要使用通用 {key:"field", value:"value"}
对存储 attrs
数组。
{id:1, attrs:[{key: "prime", value: true}, {key:"height", value:2}, {key:"material", value:"wood"},{key:"color", "value":"brown"}]}
{id:2, attrs:[{key: "prime", value: true}, {key:"fuel", value:"gas"}, {key:"volume", "value":3}]}
{id:3, attrs:[{key: "prime", value: true}, {key:"fuel", value:"diesel"}, {key:"volume", "value":1.5}]}
然后你定义Multi-key index像这样:
db.collection.createIndex({"attrs.key":1, "attrs.value":1})
如果您想应用逐步过滤器,请使用带有$elemMatch
运算符的MongoDB 聚合
☑ Prime
☑ Fuel
☐ Other
...
☑ Volume 3
☐ Volume 1.5
db.collection.aggregate([
{
$match: {
$and: [
{
attrs: {
$elemMatch: {
key: "prime",
value: true
}
}
},
{
attrs: {
$elemMatch: {
key: "fuel"
}
}
},
{
attrs: {
$elemMatch: {
key: "volume",
"value": 3
}
}
}
]
}
}
])
关于sql - 电子商务的产品属性数据库结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60384704/
我正在为客户建立一个 EC 网站,项目经理提出了一些奇怪的想法,我正在努力实际实现他向客户销售的产品。 这是我的主要问题和系统设置的快速总结:产品在类别内,类别可能是另一个类别的子类别。因此,该类别在
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
最近一直在想响应式网站与移动网站,尤其是电子商务网站。我有一个相当大的项目即将开始,看起来它将是一个相对繁重的项目(就模板和功能而言)。因此,立即想到的是做一个移动站点来削减某些可能对性能要求很高但不
我正在为大学考试编写一些 Java 代码,该项目基于“电子商务”。要求之一是将产品插入购物车,我必须使用 Visitor 模式。 这是教授给我的一个例子,我必须“用”它来代表我的购物车。问题是我有一个
我正在尝试确定在数据库中存储订单的最佳方式。 每个产品都可以配置,但并非所有选项都相同。例如: Product A Size: small, medium, large Membership: 1 y
我整天都在苦思冥想,试图找到这个问题的答案;我终其一生都无法弄清楚如何在我为客户建立的 Woocommerce 商店中右对齐价格。这是我所在的位置: .price .woocommerce-Price
我需要有关棘手问题的专家建议。 场景是: 电子商务网站 很多产品 这些产品有很多折扣 产品由唯一的 ProductID 标识并具有销售价格。很经典的剧情。该产品还可以有一个或多个折扣。 折扣可以有不同
我想在用户第一次购买之前将结帐的账单字段的值预填充到数据库存储的值中。 我试过下面的代码: add_filter( 'woocommerce_checkout_fields' , function (
我想了解数据库的可扩展性,所以我刚刚听过一个关于高度可扩展的 Web 应用程序的习惯的演讲 http://techportal.inviqa.com/2010/03/02/habits-of-high
在我的电子商务应用程序(用于咖啡馆/餐馆)中,我目前具有以下数据库结构。 cart 就是购物车,可以在其中添加商品,商品/订单发送到服务器之前的一个临时场所。 ProductCart 是一个行项目,许
我在我的项目中实现了 Google Analytics。在他们要求我启用电子商务之前,一切似乎都很好。 按照所有设置步骤,我已在 GA 仪表板上为我的项目启用电子商务,并且 Unity 中的设置必须正
我想使用 GTM 来跟踪电子商务交易。这是针对客户端环境的测试,其中代码可能位于 GTM 代码片段 之后的 ,这就是为什么使用 Dom Ready 作为事务标签的触发器不可靠的原因。 这是我的测试代码
我需要覆盖我的 spree 商店的标题颜色。我在 ../mystore/vendor/assets/stylesheets/spree/frontend 目录下创建了一个 custom.css。但它不
我正在使用 Odoo 10。在新用户注册后(通过 localhost:8069/web/signup)我希望他自动分配到我在我自己的自定义模块上创建的组中(用户将需要身份验证稍后来自管理员,以便他可以
我希望构建一个用户能够从我的站点购买产品的应用程序。购买将包括他们购买的实物、运输、税收(如果适用)等。我知道 PayPal 有许多付款选项,其中一个是 Web 服务,另一个只是重定向到他们的网站。我
我正在开发一个电子商务网站。我正在尝试使用 ajax 请求设置购物车商品数量。 我明白了 if (isset($_POST['product_id']) && isset($_POST['new_qu
假设用户访问我的网站并购买了一个棚子。棚子将被添加到购物车并完成工作。在我的数据库中,我已经有了棚子的尺寸(以显示给客户)。 假设客户还想要棚子的地毯(你永远不知道)我希望我的网络应用程序自动理解地毯
我正在尝试设置一个 AJAX 函数来清空我的购物车 HTML Go to Product JavaScript function clearCart(d) { jQuery(document)
我正在尝试在我的应用程序中设置 Spree(我愿意使用 Gem 或在供应商模式下运行它)。 我已经查看了文档和 wiki,但对于它如何在我现有的应用程序中工作,我仍然有些困惑。我可以为 Spree 使
目前正在使用 GTag 将购买数据记录到 Google Analytics E-Commerce。我正在使用标准电子商务。现在我要把这个过程作为后期处理。 (即)需要使用 C# 应用程序将购买数据记录
我是一名优秀的程序员,十分优秀!