最终用户报表设计器的数据库架构

时间:2013-08-11 16:12:59

标签: sql-server database-design report schema

我正在尝试实现一项功能,除了我系统中的所有报告之外,我将允许最终用户创建简单的报告。 (不是过于复杂的报告,涉及在具有大量逻辑的多个表中进行切片和切块)

用户将能够:

1)从允许表(例如,客户)列表中选择基表

2)选择多个子表(例如,地址表,使用AddressId作为将客户链接到地址的字段)

3)从表中选择字段

4)进行基本排序

这是我目前的数据库架构,我很确定它远非完美,所以我想知道我还能改进什么

AllowableTables表

此表将包含用户可以创建自定义报告的表列表。

Id      Table        
----------------------------------
1       Customers
2       Address
3       Orders
4       Products

ReportTemplates表

Id                     Name                     MainTable
------------------------------------------------------------------
1                      Customer Report #2       Customers
2                      Customer Report #3       Customers

ReportTemplateSettings表

Id   TemplateId  TableName   FieldName   ColumnHeader   ColumnWidth  Sequence  
-------------------------------------------------------------------------------
1    1           Customer    Id          Customer S/N   100          1         
2    1           Customer    Name        Full Name      100          2         
3    1           Address     Address1    Address 1      100          3         

我知道这不完整,但这是我到目前为止所提出的。有没有人有任何参考设计的链接,或者有任何关于我如何改进它的输入?

1 个答案:

答案 0 :(得分:0)

即使这是一项相对简单的任务,但仍需要大量工作。以下是您可能想要包含的其他几个列以及其他一些需要处理的详细信息。

  • 将表名称与架构名称或商店架构名称一起存储在附加列中,添加列以进行排序和排序顺序

  • 创建附加表以存储将在报告中使用的子表(报告ID,模式名称,表名,用于连接表的子表中的列,用于连接表的父表中的列,连接运算符(如果总是=,则可能不需要)

  • 创建将存储列名的附加表(报告ID,模式名称,表名,列名,显示为)

完成此操作后,可能会有更多内容出现,但希望这会让您朝着正确的方向前进。