Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 数据库中的报表结构_Sql_Sql Server - Fatal编程技术网

Sql 数据库中的报表结构

Sql 数据库中的报表结构,sql,sql-server,Sql,Sql Server,我正在数据库中构建一个动态结构,以便可以从后端动态配置报告。在设计后端结构时需要您的帮助。这是我的想法 表ReportAccountMap AccountId ReportId IsActive 一个帐户可以映射到多个ReportID,accountid是唯一的 表1报告单元元数据 StructureId DataSetName DataSetSourceId DataSetSourceServiceAPI 表1报告结构 ReportId StructureId 我正试图找出在上述结构中应

我正在数据库中构建一个动态结构,以便可以从后端动态配置报告。在设计后端结构时需要您的帮助。这是我的想法

表ReportAccountMap

AccountId
ReportId
IsActive
一个帐户可以映射到多个ReportID,accountid是唯一的

表1报告单元元数据

StructureId
DataSetName
DataSetSourceId
DataSetSourceServiceAPI
表1报告结构

ReportId
StructureId
我正试图找出在上述结构中应该设置哪些约束


提前感谢。

在ReportAccountMap和Report\u结构中添加一个id,这样您的主键将是一维的

ReportAccountMap.AccountId必须是AccountId的外键

ReportAccountMap.AccountId、ReportAccountMap.ReportId必须是唯一的

Report\u MetaData.StructureId必须是ReportStructureId的外键

Report_MetaDataDataSetSourceId需要是DataSetSourceId的外键

Report_Structure.ReportId必须是ReportId的外键

报表\u Structure.StructureId必须是Structure.Id的外键

至少我是这样理解你的意图的。考虑到最佳方向,为n:m表添加索引不会有什么坏处


此外,还需要ReportAccountMap,因为它在逻辑上与Account不同,并且它还有一个名为IsActive的属性。

看起来您需要表之间的外键约束,每个表中都有一个主键。如果可以有多个报表映射到表ReportAccountMap,那么表ReportAccountMap中的AccountId如何才能唯一?AccountId 1可以映射到ReportId 1 Account 2也可以映射到Report 1,因为它对您的响应使用了相同的结构库。您是否建议创建新的表报表Id,StructureID映射到ReportAccountMap表。对不起,我弄糊涂了now@user1143726,不,我只是假设你有这样一个表,因为你有一个ReportId。不,我没有这样一个表。拥有这样一个映射到AccountReport表Id的表可能是有意义的。@user1143726是的,从逻辑角度来看,拥有这样一个表是有意义的,因为报表在逻辑上是一个单独的实体。如果我的答案解决了你所面临的问题,你可以考虑接受它作为正确的答案。