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

Sql server 最终用户报表设计器的数据库架构,sql-server,database-design,report,schema,Sql Server,Database Design,Report,Schema,我正在尝试实现一个功能,除了我系统中的所有报告之外,我还允许最终用户创建简单的报告。(不是过于复杂的报告,它涉及多个具有大量逻辑的表之间的切片和切分) 用户将能够: 1) 从允许的表列表中选择一个基表(例如,客户) 2) 选择多个子表(例如,地址表,地址ID作为将客户链接到地址的字段) 3) 从表中选择字段 4) 有基本的分类 这是我目前使用的数据库模式,我很确定它还远远不够完美,所以我想知道还有什么可以改进的地方 允许表 此表将包含用户可以根据其创建自定义报告的表列表 Id Tabl

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

用户将能够:

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

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

3) 从表中选择字段

4) 有基本的分类

这是我目前使用的数据库模式,我很确定它还远远不够完美,所以我想知道还有什么可以改进的地方

允许表

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

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         

我知道这还不完整,但这是我到目前为止想到的。是否有人有参考设计的链接,或者有任何关于我如何改进的意见?

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

  • 将表名称与架构名称一起存储,或将架构名称存储在附加列中,添加用于排序和排序顺序的列

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

  • 创建将存储列名(报表id、架构名、表名、列名、显示为)的附加表


完成此操作后,可能还会出现其他一些问题,但希望这将使您朝着正确的方向前进。

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