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

时间:2017-09-08 13:09:37

标签: c# arrays sql-server

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

客户可以查看所有经销商的所有产品,并可以通过提及他们需要的每种产品的数量来选择它们。所以他们可以列出订单。 经销商可以查看从所有客户收到的订单列表。该表应包含“经销商ID”和“客户ID”以及“已订购产品列表”及其已订购的成本和数量。 但我不知道将这些数据保存到单个表中。我希望每行提到从特殊客户到特殊经销商的单个订单列表。

我可以拥有3D表格或数组,还是有更好更有效的方式?

2 个答案:

答案 0 :(得分:1)

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

Distributor
 Id
 Name

Client
 Id 
 Name

Product
 Id
 DistributorId (foreign key)

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

通过这种方式,您可以存储来自客户的产品订单,并通过选择所有与所选分销商关联的productId的订单,确保经销商查看自己产品的订单。

答案 1 :(得分:1)

有可能做你想做的事吗?是。

你应该吗?否。

我的意思是,假设你设置了你的桌子。分发器的列,客户端的列和订单列表的列(让我们使用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数据。以下是一些不错的首发地点:

http://www.studytonight.com/dbms/database-normalization.php

https://www.essentialsql.com/get-ready-to-learn-sql-database-normalization-explained-in-simple-english/

https://www.guru99.com/database-normalization.html