Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ibm cloud 决定在cloudant中创建多个数据库和关系数据库_Ibm Cloud_Cloudant - Fatal编程技术网

Ibm cloud 决定在cloudant中创建多个数据库和关系数据库

Ibm cloud 决定在cloudant中创建多个数据库和关系数据库,ibm-cloud,cloudant,Ibm Cloud,Cloudant,我目前正在学习NOSQL cloudant并尝试设计数据库,因为我正在学习cloudant将所有记录作为文档处理,并对表使用非规范化。所以我现在有点困惑,如何决定哪一个需要在一个文档中,哪一个需要分开 以下是我的测试用例: 假设我正在设计StoreBook表结构,为了简单起见,我将使用这个tables book、store、store\u分支 图书字段:\ id、图书名称、作者 门店字段:\标识,门店名称 门店\分行字段:\标识、门店\分行\名称、地址、门店\标识\ fk 在上述情况下,我无法决

我目前正在学习NOSQL cloudant并尝试设计数据库,因为我正在学习cloudant将所有记录作为文档处理,并对表使用非规范化。所以我现在有点困惑,如何决定哪一个需要在一个文档中,哪一个需要分开

以下是我的测试用例: 假设我正在设计StoreBook表结构,为了简单起见,我将使用这个tables book、store、store\u分支

图书字段:\ id、图书名称、作者 门店字段:\标识,门店名称 门店\分行字段:\标识、门店\分行\名称、地址、门店\标识\ fk

在上述情况下,我无法决定将“价格”字段放在哪里?对于普通的RDBMS,我将创建另一个表,并包含字段:(storebook\u id、store\u branch\u id和prices),假设每个分支的图书价格不同。我想知道我是怎么把这个放在cloudant里的


感谢您的任何建议

对于RDMBS用户来说,您的疑问非常常见。 在NoSQL中,通常使用“一个文档中的所有内容”方法。事实上,在某些情况下,在像Cloudant这样的面向文档的数据库中近似连接是非常简单的。例如,如果要对一对n关系建模,可以将所有n个相关文档放入它们所属的文档中。在您的情况下,您应该将所有门店分支机构放在相关门店中。如果满足以下条件,则此策略是可行的:

  • 文档不会变得太大而影响性能。这可以通过使用数据库视图或显示函数来减轻
  • 内部文档中的信息仅显示在此处,不需要复制到其他文档中,或者您的应用程序可以接受这种复制
  • 文档不会同时更新。如果是这样,则可能会有不必要的冲突需要应用程序解决
如果上述策略不适用,您可以使用一种更接近于在关系数据库中解决此问题的方法:您可以为每个“关系表”创建一个文档。在您的情况下,您应该创建一个包含以下字段的文档:(storebook\u id、store\u branch\u id和prices)


这篇Cloudant文章非常深入地解释了这些可能性:。

对于RDMBS用户来说,您的疑问是很常见的。 在NoSQL中,通常使用“一个文档中的所有内容”方法。事实上,在某些情况下,在像Cloudant这样的面向文档的数据库中近似连接是非常简单的。例如,如果要对一对n关系建模,可以将所有n个相关文档放入它们所属的文档中。在您的情况下,您应该将所有门店分支机构放在相关门店中。如果满足以下条件,则此策略是可行的:

  • 文档不会变得太大而影响性能。这可以通过使用数据库视图或显示函数来减轻
  • 内部文档中的信息仅显示在此处,不需要复制到其他文档中,或者您的应用程序可以接受这种复制
  • 文档不会同时更新。如果是这样,则可能会有不必要的冲突需要应用程序解决
如果上述策略不适用,您可以使用一种更接近于在关系数据库中解决此问题的方法:您可以为每个“关系表”创建一个文档。在您的情况下,您应该创建一个包含以下字段的文档:(storebook\u id、store\u branch\u id和prices)


这篇Cloudant文章非常深入地解释了这些可能性:.

感谢Umberto提供的链接和解释。我将遵循您的建议,因为STORE和STORE_BRANCH可以是一个文档,并为STORE_BRANCH和BOOK的关系创建另一个文档。所以我的下一个问题是,因为我将STORE_分支合并到STORE。因此,关系文档将具有字段BOOK\u ID、STORE\u ID.BRANCH\u NAME和PRICE。对吗?所以这个值应该是这样的:cloudant_001,popular.popular_north_brach,200?商店应该包含一个相关商店分支的列表。整个文档都感谢Umberto提供的链接和解释。我将遵循您的建议,因为STORE和STORE_BRANCH可以是一个文档,并为STORE_BRANCH和BOOK的关系创建另一个文档。所以我的下一个问题是,因为我将STORE_分支合并到STORE。因此,关系文档将具有字段BOOK\u ID、STORE\u ID.BRANCH\u NAME和PRICE。对吗?所以这个值应该是这样的:cloudant_001,popular.popular_north_brach,200?商店应该包含一个相关商店分支的列表。全部文件