0

我正在将 Couchbase Lite 数据库用于我所知道的无模式项目,我对此感到非常满意,因为它解决了我的问题,但它提出了一个与 NoSQL(文档数据库)中的主键约束相关的问题。

众所周知,所有的 Schema Database 都会用表来表示,这些表可能有也可能没有主键/伪造键。例如,假设我有一个名为 Student 的表,其主键为 usn(大学座位号),以及其他属性,名字、姓氏、地址、联系人号码等。

美股 | 名字 | 姓氏 | 地址 | 联系电话

2BA11CS409 | 美国广播公司 | mnq | 班加罗尔 | 1234567890

2BA11CS410 | xyz | 二维码 | 孟买 | 1234567809

在这里,如果我再次尝试添加 2BS11CS409 值,该表将显示违反主键约束(无法添加重复键)的错误。

但是文档数据库中的情况是什么,它将如何识别文档中的唯一值,

docID:123456789zxcv

{
usn : 2BA11CS409,
firstname : abc,
.......
....... etc
}

我知道每个文档都有一个唯一的 ID,其键被索引以在数据库中搜索,但是我创建的另一个文档具有与上面相同的值,

docID:zxcv123456789
{
usn : 2BA11CS409,
firstname : abc,
last
....... etc
}

当我尝试使用 usn 访问一个数据库时,它必须只返回一个文档,但它会返回我两个文档可能相同或不同。

我需要知道文档数据库中的主键/唯一键概念,它存在于关系数据库中。或者您可以将我重定向到一些文章

谢谢你。

4

1 回答 1

0

好吧,模式或无模式唯一键约束总是使用索引,大多数 RDB 的优点是它们为您提供此服务,如果您需要自己做沙发库。基本上你有第二个集合,它代表索引。每次要插入标准集合时,只需先检查索引是否usn存在要插入的文档,如果不存在,则将文档插入普通集合。然后,您将文档插入索引中docId=usn,如果您愿意,您可以插入对插入到普通集合中的文档的 docID 的引用。

于 2015-07-21T06:09:17.670 回答