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