首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同时将值插入两个表中--一对一的关系

问同时将值插入两个表中--一对一的关系
EN

Stack Overflow用户
提问于 2014-07-14 14:25:07
回答 3查看 1.1K关注 0票数 0

我有两个mysql数据库表。他们之间有一对一的关系。它们是空的。我不能向任何人插入价值。每个人都有另一个的外键。我计划在同一时间向他们插入值。但是,我没有发现哪个sql查询是必需的。你的报价是多少?谢谢

一对一关系的例子:

代码语言:javascript
复制
student: student_id, first_name, last_name, address_id
address: address_id, address, city, zipcode, student_id
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-14 14:40:17

对于1到1的表关系,这并不意味着你必须把他们的PK放在对方身上,相反,人们通常会决定哪个FK去另一个表,仅此而已。从您所做的工作来看,这显示了许多到多个表的关系,正确的模式将是创建一个新的表,该表对这两个表具有FK。

详细信息:

如果一个学生可以有多个地址,多个学生可以使用一个地址,那么模式是:

代码语言:javascript
复制
student: student_id, first_name, last_name, address_id
address: address_id, address, city, zipcode, student_id
student_address: student_id (FK), address_id (FK)

如果一个学生只能有一个地址,一个地址只能由一个学生居住,那么模式是:

代码语言:javascript
复制
student: student_id, first_name, last_name, address_id, address, city, zipcode
票数 0
EN

Stack Overflow用户

发布于 2014-07-14 14:34:02

你不需要address_Id在学生桌子上。如果那个学生无家可归怎么办?如果一个学生有一个以上的地址呢?他/她可能有一个邮寄地址,一个在大学城的本地地址,和一个家庭地址。甚至对于只有一个地址的学生,也可以通过使用student_Id查询address表来获得该地址。

代码语言:javascript
复制
 Select * From addresses where student_id = [Whatever his/her id is]

更普遍的是,多名学生可能住在同一个地址。任何一张表都不应该对另一张表有FK。应该有一个带有addressID的address表,一个带有studentId的学生会表,还有一个只包含studentId和addressId的第三个表,以指示一个学生和一个地址之间的关联。这个表的PK应该是复合的(同时使用StudentId和AddressId)

票数 1
EN

Stack Overflow用户

发布于 2014-07-14 14:29:58

这不是MYSQL的工作方式。听起来你的数据库设计需要重新设计。你不能有这样的圆型外键。一次只能插入一个表.

查看您的表,学生应该以学生Id作为主键,以及与address表的外键关系。地址里的学生证不应该在那张桌子上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24738817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档