【发布时间】:2022-01-18 06:03:07
【问题描述】:
我有一个产品数据库,我试图将特定产品的数据和关系复制到一个新产品,一个克隆。然而,我对如何复制几个多对多关系感到困惑。例如,考虑一个有两个部分的产品,对于每个部分,它们都有几种颜色可供选择。我有一个产品表、一个产品区域表和一个颜色表。产品id是区域表中的外键,一对多。区域表具有区域 ID (pk) 以及其他描述性字段,颜色具有颜色 ID (pk) 以及调色板信息。第四个表用作多对多查找表,它的主键是零件 ID 和颜色 ID 的组合。就目前而言,这是一个非常简单的配置。
但是,我想不出克隆这种结构的方法,尽管有许多方法在这里无法详细说明。我可以很容易地复制左侧的产品区域关系,生成新的区域 ID(A、B、C)。但在下一步中,我想使用新的区域 ID 复制多对多关系。但是,现在我不知道将哪个原始 ID (H,L,W) 与哪个新 ID 关联。 例如,新 ID A 是否映射到旧 ID H、L 或 W 的颜色集?我只有 id 可以使用。我可以在一个 select 语句中从源中同时选择部件和部件颜色对,但我不能用一个语句插入到两个表中。
换句话说,如果我想为其中的一半提供一个新 ID,我该如何复制多对多关系?我必须求助于游标吗?如果需要,我可以,但我想有一种优雅的方式来实现这一点,我只是想不通。也许使用临时表或某种表值函数?我试图寻找答案,但我只能找到有关建立多对多关系的建议。
感谢各位专家耐心看完这个问题。
【问题讨论】:
标签: sql many-to-many