簡體   English   中英

將值同時插入到兩個表中-一對一關系

[英]insert values into two tables at the same time - one to one relationsship

我有兩個mysql數據庫表。 它們彼此之間具有一對一的關系。 他們是空的。 我無法向任何人插入價值。 每個人都有另一個的外鍵。 我計划同時向他們插入價值。 但是,我沒有發現需要哪個SQL查詢。 你的條件是什么? 謝謝

一對一關系示例:

student: student_id, first_name, last_name, address_id
address: address_id, address, city, zipcode, student_id

您在學生表中不需要address_Id。 如果學生無家可歸怎么辦? 如果一個學生有多個地址怎么辦? 他/她的郵寄地址可能是大學城的本地地址,還有家庭地址。 即使對於只有一個地址的學生,也可以通過使用student_Id查詢地址表來獲取該地址。

 Select * From addresses where student_id = [Whatever his/her id is]

更一般地說,多個學生可能住在同一地址。 兩個表都不應該有另一個FK。 應該有一個地址表,地址為addressID ,一個Student表為studentId ,第三個表僅包含studentIdaddressId以指示一個學生和一個地址之間的關聯。 該表的PK應該是復合的(同時使用StudentIdAddressId

那不是MYSQL的工作方式。 聽起來您的數據庫設計需要重新設計。 您不能有這樣的圓形外鍵。 您一次只能插入一張表格。

查看您的表,學生應將學生ID作為主鍵,並與地址表建立外鍵關系。 地址中的學生ID不應在該表中。

對於1對1的表關系,這並不意味着您必須將他們的PK放在彼此之間,而是人們通常決定哪個FK轉到另一個表,僅此而已。 根據您的操作,這顯示了“多對多”表關系,正確的架構將創建一個新表,該表具有與這兩個表相同的FK。

細節:

如果1個學生可以有很多地址,而1個學生可以住1個地址,則架構為:

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)

如果1個學生只能有1個地址,而1個地址只能由1個學生居住,則架構為:

student: student_id, first_name, last_name, address_id, address, city, zipcode

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM