我有一个产品和子产品。
喜欢:
产品标识符 - 产品名称 - 子产品标识符 - 子产品名称 1 个 ProA 1 个 SubProA1 1 专业 A 2 亚专业 A2 1 专业 A 3 亚专业 A3 2 ProB 1 子 ProB1 2 ProB 2 子 ProB2 2 ProB 3 SubProB3 3 过程 1 子过程 1 3 过程 2 子过程 2 3 ProC 3 SubProC3
如您所见,子产品标识符不是唯一的。我的输入是产品和子产品,我需要返回名称。
我这样做了:
表格产品:ID、名称
表子产品:IDproduct、IDsubProduct、名称
但我知道那是错误的,我想制作 3 个表,产品,子产品以及两者之间的关系,但我不知道如何设计。
如果我要将产品和子产品保存到另一个表中,我将不得不保存这两个值,该表必须具有 productID 和 subproductID 列,这就是为什么我觉得拥有一个关系产品子产品表是最好的。
但我很难做到。
在您的评论中澄清,只有 2 个级别的产品,例如只有
Products
和SubProducts
没有子产品与两个或多个产品相关,您的设计很好。我只会在表
SubProducts
、on(IDproduct, IDsubProduct)
和 on上添加两个唯一约束(IDproduct, Name)
- 或者将其中一个约束和PRIMARY KEY
另一个约束UNIQUE
:层次关系可能很好:
出于性能原因,您将需要特殊查询。如果我是你,我会使用 postgres 而不是 mysql。使用 WITH 查询。