【发布时间】:2011-09-06 15:23:04
【问题描述】:
我正在使用以下混合技术或技术开发一种库存管理应用程序:MySql、C#、WPF、ADO.Net EntityFramework 4。
对于如何将销售/采购发票的详细信息存储在数据库中,我有点困惑。
这就是我以前的方式...我将详细信息作为 XML 字符串存储在 LongText 字段中。
+---------------------------------------------------+
| SalesInvoices |
+---------------------------------------------------+
| int InvoiceID: primary key, auto-incretement |
| int OrderID |
| int CustomerID |
| int CreatedByEmployeeID |
| DateTime Date |
| DateTime? ShippingDate |
| LongText ItemsData (details, stored as XML) |
| LongText TransactionData (details, stored as XML) |
| Double Subtotal |
| Double Tax |
| Double Freight |
| Double FreightTax |
| Double Total |
+---------------------------------------------------+
但是,我在网上浏览了一下,我看到的大多数示例都有一个单独的表格SalesInvoiceDetails。所以我想知道,我的方法是否有问题,我是否应该经历切换到该方法的麻烦。
我的要求:通过SalesInvoice 表的搜索应该非常快。除非用户实际打开发票,否则我不需要搜索发票的详细信息,所以如果用户必须在这里等待一两秒也没关系。
我第一次选择我的方法的原因是因为我认为一个表中的数百万个详细信息最终会使其打开速度非常慢,如果用户决定返回更改,我将不得不担心删除和更新行某物。而且我认为为细节行设置子项并将它们存储为行并跟踪父/子关系等会有点麻烦。
所以是的,我想知道有什么好的理由让我放弃我的方法并为详细信息制作另一个表格。
【问题讨论】:
-
如果我理解正确,您一直认为解析 XML 字符串会比查询关系数据库表更高效。请read this article 很好地解释这种误解有什么问题。
标签: c# mysql entity-framework-4.1 mysql-management