【发布时间】:2020-01-03 18:28:04
【问题描述】:
我本身有三个对象,客户、产品和订单。 客户和产品一样都有自己的价值观。 当我需要为订单设置表格时出现问题,因为虽然它只有一个客户,因此很容易完成单向关系,我想不出如何在订单中制作产品列表(这是可变大小)。
例如案例:
客户表有以下字段:ID,Name
产品表有以下字段:ID、名称、价格
现在为了创建订单表,我遇到了这个问题:
Order:
Id = 001
Client_ID = 002
(链接到客户表)
Products = array? eg. ["milk","tomatoes","Thin_Crust Ham & Cheese Pizza no_Gluten"](会使用他们的 ID 这只是为了形象化)
当我第一次搜索这个时,最常见的答案是创建另一个表。 从我所见,创建另一个表实际上是不可能的,因为在这些示例中,它们在新创建的表中是唯一的(例如,有人想创建一个字段来存储“person”表中的一个人的多个电话号码,所以他们可以创建一个 telf.numbers 表,因为它们是唯一的,并将它们链接回相关的“人”。)
我看到的另一个选项是使用一个大的 varchar 字段,值之间有逗号。 如果这是唯一的其他方法,那么如果我们达到每个字段的 char 限制,会不会有问题?
【问题讨论】:
-
我创建了一个与此类似的库存系统。我找到的解决方案是我的“PartList”,它包含许多部件 ID,将它们放在 JSON 格式中。在您的示例中,它看起来像这样:[{"ProductID:" "213"}, {"ProductID:" "211"}, {"ProductID:" "113"}]。我不确定这是否正是您要问的,但这就是我在应用程序中完成类似操作的方式。
-
您需要 3 个以上的表。最佳 - 4 张桌子(我认为是这样)。分开
Clients、Products、Orders(指客户)、OrderLines(指Orders和Products,一个订单多行)。任何“类数组”数据类型,包括序列化(JSON、XML 等)都不是安全的解决方案。 -
请参阅stackoverflow.com/questions/3653462/…,了解使用逗号分隔列表设计的更多缺点。