如何实现一个表单设计,其中单个'组' table可以包含对多个表的引用

时间:2017-01-16 22:47:00

标签: sql-server database database-design

所以我目前正在设计一个包含交易数据的数据库,每个交易都与一个账户相关联。我还在编写一个可以在这些事务中运行数据报告的应用程序。

我有一个帐户表,其中包含以下字段(简化) -

Account_ID
Account_Name
Company_ID (This is nullable - not every account has to have a company)

你可以从上面猜到;我还有一个公司表 - 公司可以与许多账户相关联,并且表格是相互关联的。公司表包含以下字段:

Company_ID
Company_Name

我努力解决的问题是拥有“群组”的最佳方式。表。我希望能够将账户和公司组合在一起,甚至可以将一个包含公司和组的组合在一起。

最终我想要实现的是,如果某人运行报告并选择一个组作为标准,则从该组中的所有帐户以及参与任何公司的帐户返回交易。小组 - 如果有意义的话?

目前我正在思考一个小组'表:

Group_ID
Group_Name

两个多对多的'表 -

GroupsAccounts:

Group_ID
Account_ID

GroupsCompanies:

Group_ID
Company_ID

让应用程序对后台的那两个表进行联合查询,然后我可以在第二个查询中使用,但这似乎是一种相当混乱的方式 - 我想知道是否有人之前遇到过此问题并且已经任何有关更多正确'的建议这样做的方式?

我一直在谷歌搜索试图找到任何这方面的例子 - 但我还没有发现像我想要实现的任何事情!是否有充分的理由我无疑会从你的回答中看到。

提前致谢!

1 个答案:

答案 0 :(得分:0)

如果我理解正确,我会建议

帐户表

Account_ID
Account_Name
Company_ID (nullable)
Group_ID (nullable)

公司表

Company_ID
Company_Name
Group_ID (nullable)

组表

Group_ID
Group_Name

此结构假定,虽然公司可能有多个帐户,而帐户可能没有公司,但帐户/公司不会链接到多个组。

编辑:如果帐户/公司可以在多个组中,那么请删除Group_ID参考列并使用下表。

AccountCompanyToGroup表

Group_ID
Account_ID
Company_ID