[英]Relationship between 3 tables in mysql
我不知道我要問的標題是什么。 我的課堂上有一個非常普通的場景。 ClassA
有one-to-one
與關系ClassB
和ClassC
也有one-to-one
與關系ClassB
。 該關系是父子關系。 沒有ClassA
和ClassC
不能存在ClassB
實例。 我在數據庫設計方面工作不多。 我不知道如何在表中映射此關系。
我要做的是為ClassA
創建一個表'A' ,為ClassC
創建一個表' C' ,為ClassB
創建一個表'AB'和'CB' 。 “ AB”表將用於ClassA
和ClassB
之間的關系,而“ CB”表將用於ClassC
和ClassB
之間的關系。
我想知道我是否正常工作? 如果這種關系是一對多的呢? 如果您認為不存在這種情況,請告訴我這怎么可能,一個Location
有一個Address
,一個Contact
也有一個Address
。
碼
public class Location{ // ClassA
String name ;
String description ;
Address add;
//getter setter
}
public class Address{ // ClassB
String address1;
String address2;
String city;
//getter setter
}
public class Contact { // ClassC
String firstName;
String lName;
Address add;
//getter setter
}
從我這里看到的,這些不是一對一的關系。 在過去的十年中,我僅處理過幾次一對一的關系。 您想要一對一關系的唯一原因是縮減表的大小。 例如,如果對於大多數行,某些列將為空,而這些空列在邏輯上是相關的,那么我將考慮將它們移到另一個表中。 但這確實是一對一或零的關系。
您的情況是一對多關系。 您可以強制沒有兩個位置共享相同的地址,但是可以在應用程序層而不是數據庫層中執行。
在這種情況下,您可以在“許多”側使用外鍵。 即位置表和聯系表中的address_id。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.