簡體   English   中英

mysql中3張表之間的關系

[英]Relationship between 3 tables in mysql

我不知道我要問的標題是什么。 我的課堂上有一個非常普通的場景。 ClassAone-to-one與關系ClassBClassC也有one-to-one與關系ClassB 該關系是父子關系。 沒有ClassAClassC不能存在ClassB實例。 我在數據庫設計方面工作不多。 我不知道如何在表中映射此關系。

我要做的是為ClassA創建一個表'A' ,為ClassC創建一個表' C' ,為ClassB創建一個表'AB''CB' “ AB”表將用於ClassAClassB之間的關系,而“ CB”表將用於ClassCClassB之間的關系。

我想知道我是否正常工作? 如果這種關系是一對多的呢? 如果您認為不存在這種情況,請告訴我這怎么可能,一個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.

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