【问题标题】:Database schema for end user report designer最终用户报表设计器的数据库架构
【发布时间】:2013-08-12 23:56:17
【问题描述】:

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

用户将能够:

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

2) 选择多个子表(例如,Address 表,AddressId 作为字段将Customers 链接到Address)

3) 从表格中选择字段

4) 有基本的排序

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

AllowableTables 表

此表格将包含用户可以根据这些表格创建自定义报告的列表。

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

报告模板表

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         

我知道这还不完整,但这是我迄今为止想出的。有没有人有任何参考设计的链接,或者对我如何改进它有任何意见?

【问题讨论】:

  • 建议使用已经拥有此数据的 INFOMRATION_SCHEMA.table 和列视图,而不是再次存储它。
  • 这会返回我数据库中的所有表
  • 是的,但是您可以将表与 information_Schema.columns 连接起来以存储有关列的所有数据。无需复制。

标签: sql-server database-design report schema


【解决方案1】:

这需要大量的工作,尽管它是相对简单的任务。以下是您可能想要包含的其他几列以及需要注意的其他一些细节。

  • 将表名与模式名一起存储或将模式名存储在附加列中,添加列进行排序和排序

  • 创建附加表以存储将在报表中使用的子表(报表 ID、架构名称、表名、用于连接表的子表中的列、用于连接表的父表中的列、连接运算符(如果总是这样,可能就不需要了=)

  • 创建额外的表来存储列名(报告 ID、模式名、表名、列名、显示为)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-08
    • 2015-05-23
    • 2023-03-13
    • 2020-09-20
    • 1970-01-01
    相关资源
    最近更新 更多