2015-07-21 74 views
0

我正在使用Couchbase Lite数据库进行无模式项目,因为我知道,我非常满意这个项目,因为它解决了我的问题,但它引发了一个与NoSQL中主键约束相关的问题(文档数据库)。Schema vs Schemaless DBMS

大家都知道所有的Schema数据库都会以表格的形式表示出来,而这些表格可能有也可能没有主要的/ forgien的关键字。例如,假设我有一个名为Student的表格,其主键为usn(大学的座位号),以及其他属性,名,姓,地址,联系人号码等等。

usn |名字|姓氏|地址|联系电话

2BA11CS409 | abc | mnq |班加罗尔| 1234567890

2BA11CS410 | xyz | PQR |孟买| 1234567809

在这里,表格将通过一个错误说,如果我试图再次添加2BS11CS409值,则违反主键约束(不能添加重复键)。

但什么是文献数据库,它将如何文档中识别独特价值的情况下,

docID:123456789zxcv 

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

我知道每个文档都有一个唯一的ID,其密钥索引在数据库中搜索,但我创建与上面相同的值另一份文件,

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

当我尝试与USN访问一个数据库,它必须返回我只有一个文件,但它会回到我两个文件可以是相同的或不同的。

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

谢谢。

+0

谢谢@Nils Ziehn,但如果我想要重新创建基于usn的文档并且具有相同usn的两个文档存在于数据库中,会显示两个文档还是会抛出任何错误。任何例子,将不胜感激 – iNasir

回答

0

那么,模式或没有模式唯一键约束总是使用索引,大多数RDBs的优点是,他们为您提供这项服务,如果您需要自己做的couchbase。基本上你有第二个集合,它代表了索引。每次要插入标准集合时,只要首先检查索引是否存在要插入usn的文档,如果它没有将文档插入普通集合。然后,您将文档插入索引docId=usn,并且如果您希望可以插入对插入正常集合的文档的docID的引用。

+0

经过一些深入的研究,我来到了某个地步。我可以使用'docID'来存储'USN',而不是一些垃圾/随机值。在将值插入数据库之前,我可以检查具有'docID:2BA11CS409'的文档是否存在,如果它的_true_ I可以阻止它们插入相同的值。 – iNasir