我有两个mysql数据库表。他们之间有一对一的关系。它们是空的。我不能向任何人插入价值。每个人都有另一个的外键。我计划在同一时间向他们插入值。但是,我没有发现哪个sql查询是必需的。你的报价是多少?谢谢
一对一关系的例子:
student: student_id, first_name, last_name, address_id
address: address_id, address, city, zipcode, student_id发布于 2014-07-14 14:40:17
对于1到1的表关系,这并不意味着你必须把他们的PK放在对方身上,相反,人们通常会决定哪个FK去另一个表,仅此而已。从您所做的工作来看,这显示了许多到多个表的关系,正确的模式将是创建一个新的表,该表对这两个表具有FK。
详细信息:
如果一个学生可以有多个地址,多个学生可以使用一个地址,那么模式是:
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)如果一个学生只能有一个地址,一个地址只能由一个学生居住,那么模式是:
student: student_id, first_name, last_name, address_id, address, city, zipcode发布于 2014-07-14 14:34:02
你不需要address_Id在学生桌子上。如果那个学生无家可归怎么办?如果一个学生有一个以上的地址呢?他/她可能有一个邮寄地址,一个在大学城的本地地址,和一个家庭地址。甚至对于只有一个地址的学生,也可以通过使用student_Id查询address表来获得该地址。
Select * From addresses where student_id = [Whatever his/her id is]更普遍的是,多名学生可能住在同一个地址。任何一张表都不应该对另一张表有FK。应该有一个带有addressID的address表,一个带有studentId的学生会表,还有一个只包含studentId和addressId的第三个表,以指示一个学生和一个地址之间的关联。这个表的PK应该是复合的(同时使用StudentId和AddressId)
发布于 2014-07-14 14:29:58
这不是MYSQL的工作方式。听起来你的数据库设计需要重新设计。你不能有这样的圆型外键。一次只能插入一个表.
查看您的表,学生应该以学生Id作为主键,以及与address表的外键关系。地址里的学生证不应该在那张桌子上。
https://stackoverflow.com/questions/24738817
复制相似问题