【发布时间】:2010-10-19 00:22:57
【问题描述】:
我最近开始了一个项目,该项目涉及为一个相当老的软件创建一个基于 Web 的报告界面,该软件负责管理一些访问控制硬件,例如电子门锁。
我选择 CakePHP 来完成这项任务,它所涉及的只是查询数据库中的日志记录并将它们显示在网站上。该软件是用 C++ 编写的,使用 MSDE(Microsoft SQL Server 7.0 或 2000 的缩小版),我能够配置 CakePHP 使其成功连接到数据库。
问题在于该软件的开发人员选择通过为每天创建一个单独的表来将日志存储在数据库中。所以它看起来像这样:
tbl_DoorEvent_2008_08_07
tbl_DoorEvent_2008_08_08
tbl_DoorEvent_2008_08_09
tbl_DoorEvent_2008_08_10
...
我对 MSDE 不是很熟悉,但我仍然怀疑设计和维护这样的数据库是否可以接受。我不知道桌面软件是如何设法解析查询所有信息的,但我的 CakePHP 应用程序在处理这些信息时遇到了一些困难。
我想在 Web 应用程序中坚持使用 MVC,但我不知道如何在 CakePHP 中实现 DooreventModel,以便它从所有分区表中获取信息。
我尝试过一些技巧,比如使用
UNION ALL SELECT * FROM tbl_DoorEvent_2008_08_07
UNION ALL SELECT * FROM tbl_DoorEvent_2008_08_08
....
这种工作,但是当我想对整个查询或任何其他 SQL 运算符执行 WHERE 限制时,它不起作用。
还有一个要求是基于 Web 的应用程序不添加或创建任何其他数据库或表,而只使用现有的数据库或表来显示报告,因此创建一个包含所有集群表的巨大表并不是真的一个选项。
我只是希望有人会想出一个 SQLServer 函数,它会在我每次执行查询时将所有表合并为一个,但我知道这有点乐观,所以我真的愿意接受所有建议。 请记住,该解决方案必须与 CakePHP 一起使用,并作为 MVC 中的单个模型
【问题讨论】:
标签: sql sql-server database cakephp msde