如何在连接子句中以一对多关系构造数据

问题描述 投票:0回答:1

我想回答这个问题,因为我已经在互联网上搜索但未找到。问题是“如何构造数据以促进一对多关系中的JOIN子句?多对多关系又如何?”

mysql database xampp
1个回答
0
投票

如果是一对多,则应在many端的表中插入所引用项目的ID。

一对多案例

一个人可以拥有多辆汽车,但一辆汽车只能由一个人拥有。

在关系数据库中,这是通过在person_id实体内部创建car来翻译的。通过这种方式,您可以通过简单的连接检索一个人拥有的所有汽车。

如果存在多对多关系,则需要在两个实体之间创建一个桥接表。

获取Mazdas查询示例的所有者

SELECT name, surname
FROM car JOIN person ON car.person_id = person.id
WHERE car.brand = 'mazda'

多对多案例

示例:

假设要求已更改,并且汽车可以由很多人拥有。

这是通过添加具有以下列的新桥表(例如person_car)来翻译的:

  • person_car_id
  • car_id
  • person_id
  • [other_columns_that_could_map_the_relationship(例如is_the_main_owner

获取Mazdas查询示例的所有者

SELECT DISTINCT name, surname
FROM car JOIN person_car ON person_car.id_car = car.id JOIN person ON person_car.person_id = person.id
WHERE car.brand = 'mazda'

[如果在这里看到,您可以映射两个实体之间的多对多关系,并执行双重JOIN(通过桥表)以检索元素。

© www.soinside.com 2019 - 2024. All rights reserved.