如何无sql建模



这是RDBMs方法:

我有一个人员列表,因此表名为Person:

id
name
country_id

然后我有一张国家的表格,名为Country:

id
name

然后我插入以下行:

insert into country values(1, 'Macedonia'); 
insert into country values(2, 'England');   
insert into person values(1, 'Mirko', 1);   
insert into person values(2, 'Paul', 2);    

然后我听说"马其顿"已经改名为"北马其顿">

在RDBM中,我会显而易见地做:

update country set name = 'North Macedonia' where id = 1;

那么,没有sql是如何做到这一点的呢?我想有一个名为"Person"的文档,其结构可能如下:

{person_name: 'Mirko', country_name: 'Macedonia'}       
{person_name: 'Paul', country_name: 'England'}      

当我需要将"马其顿"更改为"北马其顿"时,我会将所有发生的"马其顿"更新为"北爱尔兰"吗?这是最好的做法吗?因为我想在没有sql的情况下,你不应该有一个代表个人的文档和一个代表国家的文档。我说得对吗?

那么,没有sql是如何做到这一点的呢?我想有一份文件被称为"人",可能有这样的结构:

>     {person_name: 'Mirko', country_name: 'Macedonia'}       
>     {person_name: 'Paul', country_name: 'England'}

一个国家和个人之间的关系是一对多(1-N(。

但是,这是一对多关系的特例。一般来说,"多"方可以有100或1000个文档。在这个国家和人民的情况下,"多"的一面最有可能是数百万甚至数亿。

因此,在这种情况下,唯一可用的表示是从"多"方引用关系"一"方的文档;这就是"国家"从"个人"中的提法。

文件可能是这样的:

人员:

_id
name
age
country_id: <refers to country collection's _id>

国家:

_id: <country's unique identifier>
country_name
total_population


当我需要将"马其顿"更改为"北马其顿"时,我会只需将"马其顿"的所有出现更新为"北马其顿"?是这是最好的做法吗?因为我想在没有sql的情况下,你不应该有一份个人文件和一份国家文件。我说得对吗?

要更改国家/地区的名称,只需使用更改后的国家/地区名称更新国家/地区集合的文档即可。

注意:这种情况是特定于对一对多关系,多方具有非常大的数字(通常称为一对Zillions或一对Squillions(。此外,请注意,当"多"方的文档数量较少时(在1-N关系中(,设计会有所不同。

最新更新