gpt4 book ai didi

mysql - mysql中3个表之间的关系

转载 作者:行者123 更新时间:2023-11-30 22:59:32 26 4
gpt4 key购买 nike

我不知道我的问题用什么标题。我在类里面有一个非常常见的场景。 ClassA有一个 one-to-oneClassB的关系和 ClassC还有一个one-to-oneClassB的关系.这种关系是父子关系。 ClassB没有 ClassA 实例就无法存在和 ClassC .我在数据库设计方面的工作不多。我不知道如何在表格中映射这种关系。

我所做的是为 ClassA 创建一个表 'A' , ClassC 的表 'C'ClassB 的两个表'AB''CB'。 'AB' 表将用于 ClassA 之间的关系和 ClassB'CB' 表将用于 ClassC 之间的关系和 ClassB .

我想知道我的工作是否正确?如果关系是一对多呢?如果您认为这种情况不存在,请告诉我这怎么可能,A 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
}

最佳答案

据我所见,这些不是一对一的关系。在过去的 10 年里,我只处理过几次一对一的关系。您想要一对一关系的唯一原因是减少表的大小。例如,如果某些列对于大多数行来说都是空的,并且这些空列在逻辑上是相关的,我会考虑将它们移动到不同的表中。但那确实是一对一或零的关系。

您的情况是一对多关系。您可以强制不允许两个位置共享相同的地址,但您将在应用程序层而不是数据库层执行此操作。

在这种情况下,您可以在“多”端有一个外键。即 Location 表和 Contact 表中的 address_id。

关于mysql - mysql中3个表之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24691983/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com