SQL 嵌入文档等效

SQL embedded document equivalent

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

例如,在 mongodb 中,如果我想为一个有车的人建模,我将有一个看起来像

的文档集合
{
    firstName: 'John',
    lastName: 'Smith',
    car: {
        color: 'Red',
        year: 2001,
        ...
    }
}

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

按照上面的示例,您可以将它们分成两个 tables(关系),例如 PersonCar,并使用所注明的字段。每个 table 也将有一个主键(可以是自然的,例如汽车登记号,也可以是人工的,如自动递增整数)。

要关联这两个实体,您可以 (1) Person 中的外键字段具有 Car 中主键的值,或 (2) 外键字段Car中的值与table中的主键值相同Person中的值。我更喜欢 (2),因为它允许 1 人拥有多辆车。

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

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