当前位置: 首页 > 面试题库 >

一对多MySQL [重复]

苏麒
2023-03-14
问题内容

这个问题已经在这里有了答案

8年前关闭。

可能重复:
MySQL关系

我试图用外键在MySQL中创建一对多关系。

两个表userlocation。每个user可以有多个location,但是每个location只能有一个user

我该如何配置?如果可以,我正在使用HeidiSQL,尽管我也可以输入代码。


问题答案:

MySQL不知道,也不需要知道关系是1-1还是1-many。
没有SQL支持多对多关系,所有SQL都需要一个中间表,该表将多对多关系拆分为2个单独的1对多关系。

区别在于控制关系的逻辑,即编写的代码。
通过使表共享相同的主键来维持1-1关系。
用辅助表声明该PK作为指向其他表PK的外键。

Table chinese_mother (
id integer primary key,
name....


Table chinese_child (
id integer primary key,
name ....
....,
foreign key (id) references chinese_mother.id

关系的方向1 -> manyvs many <- 1由链接字段的位置确定。

通常每个表都有一个唯一id的链接字段称为tablename_id
其中具有链接字段的表many在关系的一侧,另一表在1一侧。

每个用户可以有多个位置,但是每个位置只能有一个用户。

Table user
id: primary key
name......
.....

Table location
id: primary key
user_id foreign key references (user.id)
x
y
.......

通过将链接字段放在location表中,您可以强制执行操作,因此一个位置只能有1个用户。但是,用户可以有许多位置。



 类似资料:
  • 对于我正在构建的一个类似论坛的网站,我有PHP类'user'和'post‘。用户有一个帖子数组。如何与关系数据库中的连接相似?在“post”上有一个外键,指向一个“user”?这对我来说是有意义的,因为这是一对一的关系,而“user”到“post”是一对多的,就我所见。欢迎有任何想法-谢谢!

  • 问题内容: 仍在学习MySQL的绳索,我试图找出如何进行涉及多对多的特定选择。如果表名太通用,我深表歉意,我只是在做一些自制的练习。我尽力成为一名自学者。 我有3个表,其中一个是链接表。如何编写 “显示哪些用户同时拥有HTC和Samsung手机” (他们拥有2部手机)的语句。我猜答案在WHERE语句中,但我不知道该怎么写。 问题答案: 关键是在GROUP BY / HAVING中使用COUNT个D

  • 我已经开始开发我的第一个MySQL数据库,我遇到了一个简单的问题。 我将我的电影按“多对多”关系进行分类: 我试图做的是按类型搜索我的电影表,并显示每部电影的所有类型,例如: 这是一个我用来搜索恐怖电影的查询 我遇到的问题是,这个查询在筛选之前检索所有表的全部,我收集的结果非常低效。有没有更好的方法可以在显示所有相关类型的同时按一种类型搜索?

  • 问题内容: 有点复杂的问题,但是,基本上我有很多表: 它是和关系的列表。我需要查询以查找word_a和word_b之间的关系是否存在。如果单词可以是单词A或单词b,那么正确的语法是什么? 在我的脑海里 这似乎不起作用,因为我得到了任何一场比赛的结果。有人熟悉这种情况并知道正确的语法吗? 提前致谢。 问题答案: 这应该工作:

  • 问题内容: 好的,所以这可能是一个琐碎的问题,但是我在可视化和理解差异以及何时使用它们方面遇到困难。对于诸如单向和双向映射之类的概念如何影响一对多/多对多关系,我也还不清楚。我现在正在使用Hibernate,因此任何与ORM相关的解释都将有所帮助。 举例来说,我有以下设置: 那么在这种情况下,我将进行哪种映射?对于这个特定示例的答案肯定会受到赞赏,但我也确实希望获得何时使用一对多和多对多以及何时使

  • 问题内容: 这个问题已经在这里有了答案 : 9年前关闭。 可能重复: 数据库中有多少行? 我正在为将有用户的应用程序构建数据库方案,每个用户在诸如“收藏夹”之类的关系表中将有许多行。每个用户可能有数千个收藏夹,并且可能有数千个注册用户(随着时间的推移)。 鉴于永远不会删除用户,因为这会使其他实体变成孤立的实体,或者也将它们删除(这是不希望的),因此这些表将永远增长,我想知道结果表是否可能太大(例如