SQL嵌入式文档等效

时间:2015-02-04 21:04:16

标签: sql mongodb schema schema-design

我在使用mongodb后才开始使用SQL。因此,我无法将一些实践映射到SQL世界。首先,我不确定mongodb中的嵌入式文档是如何映射到SQL的。

例如,在mongodb中,如果我想为拥有汽车的人建模,我会有一组看起来像

的文件。
{
    firstName: 'John',
    lastName: 'Smith',
    car: {
        color: 'Red',
        year: 2001,
        ...
    }
}

如何在SQL数据库中创建类似的关系?我意识到我可以对car_colorcar_year之类的命名空间进行命名,但与在文档结构中显示这种关系相比,这似乎在概念上无效。

1 个答案:

答案 0 :(得分:0)

按照上面的示例,您可以将这些表格分为两个表格(关系),例如PersonCar,其中包含所示的字段。每个表也将具有主键(其可以是自然的,例如汽车注册号,或者像自动增量整数那样是人工的)。

要关联这两个实体,您可以({1)使用Person中的主键值Car中的外键字段,或者(2)中的外键字段Car表,其中包含Person中主键值的值。我更愿意(2)因为它允许一个人拥有多辆汽车。

当然,这是一种简化 - 人们可能拥有多辆汽车一辆汽车可能由多人拥有。这通常是通过将外键保持在汽车和人员表之外并创建第三个表来建模的,该表只存储了一对与汽车相关的外键。

脚注:大多数人都是从SQL到MongoDB,而不是相反!祝你好运!