Database design 基于公式的定价。RDBMS中的存储和应用层中的使用

Database design 基于公式的定价。RDBMS中的存储和应用层中的使用,database-design,rdbms,business-logic,Database Design,Rdbms,Business Logic,我即将进入设计商品交易应用程序的第一阶段。 此应用程序的主要功能是捕获和评估定价信息。 这个市场的价格不是固定的。它通常是一个市场基准+/-溢价。例如:(A和B是市场基准) 价格=A+1美元 价格=A+0.5(A-B) 交易的最终价格使用约定时间内应用的定价公式计算。例如最终价格可能是装货前一周和装货后一周的平均价格+1美元 目前,交易员正在Excel中获取这些细节,这使他们能够灵活地设置所需的公式,但这些信息从未进入我们的会计系统,电子表格也没有与市场基准的实时预测相连接,从而使价格预测成

我即将进入设计商品交易应用程序的第一阶段。 此应用程序的主要功能是捕获和评估定价信息。 这个市场的价格不是固定的。它通常是一个市场基准+/-溢价。例如:(A和B是市场基准)

  • 价格=A+1美元
  • 价格=A+0.5(A-B)
交易的最终价格使用约定时间内应用的定价公式计算。例如最终价格可能是装货前一周和装货后一周的平均价格+1美元

目前,交易员正在Excel中获取这些细节,这使他们能够灵活地设置所需的公式,但这些信息从未进入我们的会计系统,电子表格也没有与市场基准的实时预测相连接,从而使价格预测成为一项手动且缓慢的任务

我正在寻找关于我可以使用哪些工具/技术在应用程序中输入、存储和评估公式的信息。

我们将使用SQL Server或Oracle作为数据库,客户机平台尚未固定,但您可以假设WinForms/WPF、ASP.NET或Java webapp

我知道这是一个相当广泛的问题,但我们还没有走得足够远,无法更具体地说明将使用哪些技术


谢谢

有趣的场景。警告:此响应基于我处理问题的一些想法,可能不反映最佳实践

我想看看你是否能把你的公式规则简化成更简单的结构。这将允许您将规则组合在一起以创建复杂的公式。然后,您需要能够将规则存储在数据库中,这可以使用DSL或一些XML规则文件来完成

这听起来像你当前的情况,公式在excel中,运行得相当好,但有一些小问题。您是否考虑过使用一些高级宏或excel自动化?您可以在客户不必离开excel的情况下实现大部分目标


祝你好运。

我打赌你的用户喜欢在Excel中输入公式的灵活性,因此我建议这样一种方法:-

  • 写一些东西,允许他们使用他们实际将用于不同基本价格关键字的运算符类型将公式输入到您的应用程序中。这可以作为字符串存储
  • 使用白名单方法验证这一点(可能相当棘手,可能需要查找一些基于堆栈的解析算法)。您可能允许:+-/*(){数值常量}{基价关键字}
  • 在选择列表中将这些公式转换为数据库可以理解的内容。如果它们输入的公式与您在SQL中可以执行的类似,那么这可能不会太困难。关键字被转换成列名,其他所有内容都可以单独处理
  • 然后,通过插入特殊公式并在历史数据和/或预测上运行它,您将能够选择返回数据、在时间段内求平均值等


    第2步有一些技巧,但它会使其他一切变得简单(和高效)。

    如果数据来自可信来源(大If)您可以将数据库表达式存储在列中,然后动态创建SELECT语句来执行它。

    您可以使用符号数学包(例如)来解释输入到表中的公式。

    您考虑过与Excel集成吗?这样,你就不必试图从他们手中撬开Excel(商业用户崇拜Excel),他们可以使用多年来学到的所有技巧。你只需使用VBA在你的应用程序和Excel之间来回传输数据(或者他们现在告诉人们如何与Excel集成),你就可以很好地使用了。

    我有一个与Hank的建议相关的简单得可笑的解决方案。创建一个数据库并根据Excel表格对其建模。导出Excel数据并将其导入数据库中。在客户端计算机上创建ODBC连接器以指向数据库。在Excel中,可以连接到数据源。这样,您的客户机就不会出现UI更改问题

    感谢您的回复

    用户自己也希望远离Excel。他们正在与多个试图输入和更新数据的用户进行斗争。我可能会研究VSTO为将小型Excel表格嵌入应用程序提供了哪些选项

    我倾向于使用嵌入式“语言”来存储和计算公式

    使用一个简单的解析器将输入的公式转换为SQL可能是一个合理的想法,因为方程中的变量是时间序列向量,而不是标量数据点,SQL方法应该更容易在所需的时间段内计算结果

    谢谢