C# 如何在SQL表中保存3d数组

C# 如何在SQL表中保存3d数组,c#,arrays,sql-server,C#,Arrays,Sql Server,我正在用C写代码。 它有两种类型的用户:分销商和客户 客户可以看到所有分销商的所有产品,并可以选择他们所需的每种产品的编号。因此,他们可以列出订单。 分销商可以查看从所有客户处收到的订单列表。该表应包含分销商id和客户id以及订购产品的列表,以及它们的成本和订购的编号。 但我不知道如何将这些数据保存到一个表中,我希望每一行都提到一个从特殊客户到特殊分销商的订单列表 我可以要一个3D表格或数组,还是有更好、更有效的方法?根据您提供的信息,您似乎需要这样的数据模型: Distributor Id

我正在用C写代码。 它有两种类型的用户:分销商和客户

客户可以看到所有分销商的所有产品,并可以选择他们所需的每种产品的编号。因此,他们可以列出订单。 分销商可以查看从所有客户处收到的订单列表。该表应包含分销商id和客户id以及订购产品的列表,以及它们的成本和订购的编号。 但我不知道如何将这些数据保存到一个表中,我希望每一行都提到一个从特殊客户到特殊分销商的订单列表


我可以要一个3D表格或数组,还是有更好、更有效的方法?

根据您提供的信息,您似乎需要这样的数据模型:

Distributor
 Id
 Name

Client
 Id 
 Name

Product
 Id
 DistributorId (foreign key)

Order
 Id
 ProductId (foreign key)     
 ClientId (foreign key)
 Number

这样,您可以存储来自客户的产品订单,并通过选择所有具有productId且链接到所选分销商的订单,确保分销商看到其自己产品的订单。

是否可以执行您想要的操作?对

你应该吗?没有

我是说,假设你摆好了桌子。一列用于分销商,一列用于客户,一列用于订单列表让我们使用XML作为示例:

DistID  ClientID  Orders
1       1         <item>A</item><item>B</item><item>C</item>
2       1         <item>D</item><item>C</item>
2       2         <item>E</item><item>A</item><item>F</item><item>G</item>
。。。那么你会遇到什么问题呢?首先,想象一下尝试添加或删除订单。您必须阅读完整的订单列表,对其进行更改,然后将其全部写回SQL。这是一个很大的开销,特别是如果你的“列表”中有很多项目,或者你正在做大量的订单添加/删除

更糟糕的是,当你需要找到一个叫“B”的人时会发生什么?您将不得不对该列进行全文扫描—没有索引搜索,没有优化,什么都没有—只是为了找到匹配的项

下面是我的建议—看看SQL规范化—基本上是关于如何高效地组织SQL数据的指导原则。以下是一些很好的起始点:


你能用一个实体关系图来更新你的帖子吗?这样我们就可以看到事情是如何联系在一起的。把你所有的数据放在一个表中似乎总是一个坏主意。建议对模型进行规范化。假设您希望在三维空间中存储值。所以在坐标x=1处;y=2;z=3;您希望存储值42。如果您有一个包含x、y、z和value列的表,您可以轻松地将上面的示例作为值1、2、3、42插入。-如果有人想看到所有的值,y是2,你可以得到。或所有值之和,其中x为1。-或者x是1,z是3,35,256中的所有值。用客户id替换x,用分销商id替换y,用产品id替换z,用任何类型的信息存储在3D空间中的那个位置,值可以是几列,随你需要。@7:是的。数据格式更易于使用,并且它仍然允许您(例如)在将来某个时候(例如,当您想要打印发票时)根据现有行生成列表。非常感谢。但我想把每一个因子都存储在表的一行中,你们说的因子是什么意思?订购的产品?这将是订单表中的一条记录。我的意思是订购产品的列表相信我,您不想将订单列表保存到一条记录中。那么我该怎么办?是否将每个产品订单保存为一行?