【问题标题】:detail in detail sql详细详细的sql
【发布时间】:2015-05-02 10:14:27
【问题描述】:

我有事要问,希望大家给我一些建议。

我在[ORDER] table[PRODUCT] table 之间有many to many 关系。

现在的条件是我再次需要一张名为[PACKAGE] table 的表,该表也与[PRODUCT] tablemany to many 关系。

在这种情况下,我想将[PACKAGE] table 链接到[ORDER] table。因为条件是人们可以在same order form订购item或订购package

如果我只是将[PACKAGE] table链接到[ORDER] table,这是真的吗?

【问题讨论】:

  • 如果您有多对多关系,那么您需要一个名为 orderProducts 的桥接表。如果我对您的理解正确,您有与它们相关的特定产品的包装。如果是这种情况,请在后端服务器的业务逻辑中处理此问题,以便将产品包中的产品插入 orderProducts。

标签: sql many-to-many relationship


【解决方案1】:

这里有两个选项。

首先是引入一个名为OrderPackages 的新表,它提供了包的链接。但是,我不喜欢这种方法,因为您无法轻松查询订单中的所有商品。订单中的项目可以同时在OrderItemsOrderPackages 中。

SQL 非常不擅长“一种”类型的关系。这才是你真正想要的——一个链接到一个项目或一个包裹的订单,但不能同时链接到两者。

我的建议是把所有的东西都包装在自己的包里,然后有一个OrderPackages 表和一个PackageItems 表。这将使所有查询保持一致,并且应该很容易在任何数据库中实现。

您可以通过使用触发器或将 insert 代码包装在存储过程中来自动为新项目创建新包,该存储过程在两个表中执行插入操作。

【讨论】: