Sql 数据库中的报表结构
我正在数据库中构建一个动态结构,以便可以从后端动态配置报告。在设计后端结构时需要您的帮助。这是我的想法 表ReportAccountMapSql 数据库中的报表结构,sql,sql-server,Sql,Sql Server,我正在数据库中构建一个动态结构,以便可以从后端动态配置报告。在设计后端结构时需要您的帮助。这是我的想法 表ReportAccountMap AccountId ReportId IsActive 一个帐户可以映射到多个ReportID,accountid是唯一的 表1报告单元元数据 StructureId DataSetName DataSetSourceId DataSetSourceServiceAPI 表1报告结构 ReportId StructureId 我正试图找出在上述结构中应
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是的,从逻辑角度来看,拥有这样一个表是有意义的,因为报表在逻辑上是一个单独的实体。如果我的答案解决了你所面临的问题,你可以考虑接受它作为正确的答案。