DataTables和SQL以及...天知道还有什么

时间:2011-02-22 16:50:05

标签: c# sql-server database-design

警告:长而复杂的问题......

所以这是迄今为止的故事:

我正试图断言声音&照明租赁公司我的基于Excel / VBA的报价/规范系统工作;我正在开发SQL Server / C#Winforms解决方案。

我遇到的问题是它的规范方面。

在旧的Excel系统中,这是工作簿中的工作表,基本上是整个库存清单,包含可编辑的列,例如需要数量,折扣等。其中大多数都填充了用户可以使用的“默认”值覆盖。

其中一个问题是这个股票清单增长得如此之大,以至于它需要是历史性的。所以在我的C#解决方案中,它将是一个TreeListView(http://objectlistview.sourceforge.net/cs/index.html)。

我遇到问题的是整个概念显示整个库存清单(目前这是数据库中的一个表),但只在数据库中存储相关行(数据库中的另一个表)。更复杂的是,用户通常需要为子项目插入行,这些项目只应存储在规范的数据库表中,而不是库存列表中。因此,我最终必须显示(并让用户编辑)来自不同表格的正确旧项目和值的混合。

我想要避免的是过多的网络流量,因此每次用户保存时都不能存储整个库存清单(对于尚未推出的商品零值)。

使这更复杂的是TreeListView期望看到一个List,并在内部完成所述列表的所有更新等。它也可以与Datatable一起使用。

在mo,我有以下数据库表:

Item_Types - 包含所有库存商品的属性和默认值,例如:成本,折扣,重量等

Spec_Details - 包含“覆盖”Item_Types中的默认值的详细信息,以及用户为给定作业添加的任何行。 Plus(这是另一个工作中的扳手)计算了'autospec'值(在运行时计算的值在Item_Types中不存在;所以基本上两个表的模式不同,排除了两者的直接合并)。

Spec_Heirarchy - 只是为了使事情更加复杂,基本上用户将能够将“系统”(例如PA系统等在不同位置)添加到TreeListView中 - 基本上是一个顶级父节点,然后将填充来自Item_Types的整个库存清单。此表包含每个作业的每个Item_Type的父/子关系,因为根据有多少系统以及用户是否添加了任何子项目,一些作业将与其他作业完全不同。

Default_Heirarchy - 如上所述,但库存商品的'默认'规格层次结构。

那么组织,存储和访问这个烂摊子的最佳方式是什么?我已经不得不多次重新考虑我的整个设计,所以我在这里要求一些指导。我是C#的新手,并且基本上咬得比我能咀嚼的多得多,但是 - 你猜对了 - 没有预算可以让任何人更有经验来接受这个。

由于

3 个答案:

答案 0 :(得分:0)

这听起来像是标准的订单输入方案。通常,设计至少有三个单独的对象,即价格表,订单和订单项。您向一个特定客户一个订单销售的商品将在订单商品表中以及它们的价格信息。

构建订单时,您可以从PriceList表中选择商品。某些项目始终会覆盖其描述和价格,例如“安装人工”项目或第三方零件项目。

订单项目表成为此特定订单的价格表的时间快照。

答案 1 :(得分:0)

我建议你不要再考虑用户界面了。

如果您正确使用数据库,它将支持您可以想象的任何用户界面。我工作的最后一家财富500强公司的主要数据库有几百个应用程序,用至少25种不同的语言编写。通过围绕今天选择的应用程序语言进行设计,你无法获得这样的灵活性。

  

我遇到问题的地方是   这整个概念展示了   整个库存清单(目前这个   是数据库中的一个表,但仅限于   存储在数据库中的相关内容   行(数据库中的另一个表)。

这是一个非常基本的要求。由于您使用的是SQL Server,因此附近的某个人可能拥有Microsoft Access的副本。 Northwind,示例数据库,几乎肯定有你需要做的事情的例子。如果我记得Access-speak正确,整个股票列表是组合框的行源,用户选择的值绑定到另一个表中的列。

听起来你拥有大多数公司所拥有的产品,订单和订单项目。您的订单项可能来自您的产品表,也可能来自转包商。这听起来对你好吗?

答案 2 :(得分:0)

我觉得我对这里的问题太模糊了......我现在把它全部整理好了,它的DB端工作正常 - 我主要关注的是界面以及如何操纵数据来自将DB转换为用户友好的形式;足以说我已经在这方面重新考虑了我的整个方法,并且知道我现在在做什么。

感谢您的帮助。