首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >noSQL / MySQL -存储产品信息

noSQL / MySQL -存储产品信息
EN

Stack Overflow用户
提问于 2011-11-02 01:16:54
回答 3查看 887关注 0票数 0

我一直在思考在数据库中存储产品/客户/和交易信息的最佳方式。我们说的是成千上万的记录...

我对如何在纸上表示数据有一个非常清楚的想法,它基本上看起来像一棵树……

Car ->大众->高尔夫-> 1.6L 5门

这里的问题是,树中的每个产品都需要不同的属性。例如,如果产品是一艘船,它不需要“轮子大小”属性,但需要“螺旋桨大小”。不管怎么说,你已经明白了!

我对NoSQL非常陌生,以前只使用过MySQL,但它似乎是这里最好的解决方案。我喜欢没有模式的想法。

有没有人有构建这样的系统的经验?你去做什么?有什么特别的变种吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-02 01:27:04

如果您需要关系结构(例如,树结构),那么您应该使用关系数据库模型。NoSQL最适合于只想存储数据而不考虑其结构的情况。

如果您想要有一组任意的可选信息,您可以坚持使用关系数据库,并使用BLOB列来存储可选数据,可能是JSON字符串。由于以下几个原因,这可能是最好的:

  1. 您可以保留轻松查询一组产品的能力,例如,SELECT * FROM products WHERE catid = 123.
  2. You仍然可以使用产品的公共属性轻松筛选结果。
  3. 您还可以将事务处理记录链接回产品。
  4. 如果要按可选列进行筛选,则可以执行LIKE以仅返回JSON blob中包含该特定列名的行,然后在代码中手动筛选结果。
票数 2
EN

Stack Overflow用户

发布于 2011-11-02 05:43:16

您正在寻找的内容可以很容易地在文档中表示(面向DB =>,例如CouchDB )。例如,要表示您的大众:

  • Car ->大众->高尔夫-> 1.6升5门:

代码语言:javascript
复制
{
 "Cars": [
   {"Make":"VW", "Model":"Golf", "Engine":1.6, "Doors": 5, "Wheel Size": 19},
   {"Make":"Toyota", "Model":"Supra", "Engine":2.4, "Doors": 5, "Packages":["Tech", "Cold Weather"]}
 ]
}

由于模式是“自由的”,您可以添加remove car的属性。您可以阅读有关CouchDB文档API here的更多信息。

票数 1
EN

Stack Overflow用户

发布于 2011-11-02 01:21:12

我认为这可能是一个好主意,除非你需要某种关系。例如,如果你想将汽车链接到车主,你通常会有一个表" cars“和一个表" owners ",如果你想按车主定位一辆车,你可以从车主那里搜索并连接到cars上。

我相信在大多数情况下,也可以在无SQL设置下解决这个问题,但它可能会变得相当复杂。

如果你只是在存储模型数据,这听起来很简单。也许你可以制作它的原型?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7970205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档