Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 两个表列之间有多个链接…设计方法不好?_Java_Database_Database Design - Fatal编程技术网

Java 两个表列之间有多个链接…设计方法不好?

Java 两个表列之间有多个链接…设计方法不好?,java,database,database-design,Java,Database,Database Design,你好 我正在开发一个网络应用程序,我正要设计数据库,我遇到了这个问题。 在两个表之间有超过1个链接是一种糟糕的设计吗? 我发布的图片是一个非常快速和小的例子,只是为了让它更清楚。 如果我想显示所有的产品,我想插入与它们相关的产品,在这种情况下,我可以通过创建一个产品实例来检索产品名称,该实例使用产品id从产品对象中的产品id字段检索,但这将需要执行更多的查询和更多的键入工作,因此,我想将产品名称直接包含在报价中,这样我就可以简单地检索所有报价,并最终通过使用产品id浏览DB来显示相关产品。 你会

你好 我正在开发一个网络应用程序,我正要设计数据库,我遇到了这个问题。 在两个表之间有超过1个链接是一种糟糕的设计吗? 我发布的图片是一个非常快速和小的例子,只是为了让它更清楚。 如果我想显示所有的产品,我想插入与它们相关的产品,在这种情况下,我可以通过创建一个产品实例来检索产品名称,该实例使用产品id从产品对象中的产品id字段检索,但这将需要执行更多的查询和更多的键入工作,因此,我想将产品名称直接包含在报价中,这样我就可以简单地检索所有报价,并最终通过使用产品id浏览DB来显示相关产品。 你会认为这是一个糟糕的方法吗? 我一直在寻找类似我的案例,但我只找到了表之间有1个连接(具有唯一id)的方法
谢谢

这是数据反规范化。不要这样做(在大多数情况下)。正确设计表,让数据库使用正确的查询执行正确的工作。随着时间的推移,它将更易于维护和使用

使用报价表中的ID在产品表中查找产品名称

是的,这很糟糕


删除冗余名称将是正确的规范化。只需在id上链接,这将是最好的方式。

一般来说,两个表之间的关系(链接)数量没有限制,但每个关系都应该具有唯一的含义。在您的示例中,如果Product Name和Product ID都是候选键,并且每个名称始终具有相同的ID,那么这些表之间肯定不应该有两个PK/FK关系。

@Joe是对的。规范化是数据库设计的最佳方法。原因是可以在一个表中添加、删除和修改字段,然后通过定义的关系传播到数据库的其余部分。

您好,Joe,谢谢,您是否可以在offer类中创建一个字段“product name”,仅在请求显示时才使用setter提供?或者您会创建第三个类,其中包含来自这两个对象的信息?@JBoy-您需要停止将数据库实体视为类。规范化规则将使您减少实体(表)之间的冗余。但是,代码中的类可以有任意多的冗余,数据层根据需要从适当的表或表的联接中为每个成员提供内容。