数据库表的用户定义列

时间:2018-10-19 01:48:24

标签: sql dynamic meta

我们的项目有特殊要求。我了解它,但我认为它不容易实现。

描述:数据库中有一个包含500列的表。 现在,最终用户(高级用户或管理员)可能想要定义派生列。派生列是基于其他列的列。从技术上讲,派生列可以是实际的物理列,也可以只是我们在运行时通过动态SQL查询生成的逻辑列。

示例:说有一个名为“ WageOnDay”的列,还有另一个名为“ WageDate”的列。现在,最终用户可能想定义一个名为“ WageForPastMonth”或“ WageForPastYear”的派生列,或者仅定义一个带有“ WageDate” +2000的派生列。用户可能想要定义任意数量的此类其他派生字段,并希望通过UI进行定义。用户还希望为这些派生列指定自定义显示名称。示例:用户可能希望将“ WageDate” +2000的派生列称为“ WageWithBonus”或“ WageAfterAdjustment”。用户可以不时更改派生列的显示名称及其定义(当前定义“ WageDate” +2000到“ WageDate” +4000)。 导出的列定义也可以是聚合,例如日期范围内的工资总额之和。

现在-我们从技术角度考虑了这一点。而且似乎没有办法实现这一目标。 用户可以为派生列或简单表达式等定义聚合。我们可以继续实际修改表定义,并根据派生列的用户定义添加这些其他字段。

另一种方法是将这些派生的列定义存储在另一个配置表中,并使用它们来生成动态SQL,该动态SQL必须根据该定义来生成派生的列。

当前,我们认为实现此目标需要付出巨大的努力。我们还需要创建一种语义语言,该语言将存储派生的列定义,并且必须实现一个解析器,该解析器根据用户定义生成部分SQL。

我知道有报告工具,例如QlikView,CrystalReports和JasperReport,它们具有我描述的功能。

但是,我们可以在项目中实现它吗?如果没有,则可以选择与其他任何工具集成。

请分享您的想法和建议。 让我们知道是否满足了这样的要求和高级技术方法。

1 个答案:

答案 0 :(得分:0)

您可以在表中为自定义字段添加XML列,然后只需在应用程序层进行操作即可。