0

在我第一次尝试盗用 Ms-Access 后 - 在您的帮助下- 取得了巨大的成功,我被派回去做“更多的事情”。

如果您愿意,可以跳过一些介绍:

我正在建立一个关于某些项目的数据基础,我想从中创建分析和概述。

数据和发现将在 Excel 或 Powerpoint 等程序中表示,因此过程本身非常开放。它可能会非常直观,并根据要求提供详细的点。

但是,数据可能会定期更改,如果结果良好,我可能会重复该过程。
因此,我认为理想的方法是拥有一个数据层,然后对该数据进行一组固定的查询,然后我会(半)手动将结果编译成任何格式的报告,可能使用外部数据分析工具,例如作为介于两者之间的 R。

麻烦的是,我唯一可以访问的数据库是.. 嗯.. Access 2010 女士。我不能在这台机器上安装任何东西。
如果您对此有建议,我当然可以使用非安装或在线工具。

tl;dr:我想使用 Ms Access 将关系数据库中的数据查询为表格格式,以便手动进一步处理,尽可能少地使用 Ms-Access VBA 和表单。


从那以后,我开始在标准关系数据库 ms-Access 中实现原型。

我在这种设计中遇到的一个有趣的问题是,我为参与项目的公司准备了一张桌子。除此之外,我还有一张“关系”表——比如持股、所有权或合作。
因此,假设 A 公司正在建设项目 A,但它只是 B 公司的子公司,然后由 C 公司部分拥有,依此类推。

现在假设我想查询参与一个项目的所有公司,但作为所有者,我只想显示链的最后一个“元素”。
想象一下,我想按净资产对列表进行排序,这通常是一个仅适用于链末端的上市公司的数字,而不是链上的项目子公司等。

(Ms-)SQL可以做到这一点,还是我需要在VBA中做到这一点?
现在我想我可以设法编写一个 VBA 函数并将其转储到一个临时表中,但是我必须创建表单等。

另一个由此产生的想法是“通过查询来回答“C 公司在哪个项目中拥有股份”的问题。你可以看到这是怎么回事。

我希望数据库和查询尽可能灵活(在这种情况下,独立于实际访问)。所以这一次,没有模拟程序或用户界面。在上一个项目中从 Access 中获得我想要的东西是一件很痛苦的事情,那是一个非常具体的问题集......

但总的来说,如果可以的话,我也愿意使用不同的工具。

太感谢了!

4

1 回答 1

2

在 RDBMS 中建模层次结构是一个相当棘手的过程 - 有些(如 Oracle)具有查询层次结构数据的内置功能,但我认为 Access 没有。

最好的解决方案是使用“嵌套集”模型。这允许您在使用标准 SQL 的同时对分层数据进行建模;查询也非常快。

如果您的数据不是分层的,那么嵌套集就没那么有用了;在这种情况下,典型的解决方案是引入一个表来映射关系——通常包括两个相关实体,并且通常带有“关系类型”字段(例如“父”、“部分所有者”等)。这通常称为有向无环图或 DAG。有几种方法可以在数据库中对它们进行建模;“闭包表”可能是最有效的。这篇文章展示了如何做到这一点 - 这是一个沉重的阅读,但我认为它回答了你的问题。

于 2013-01-21T11:19:12.353 回答