多层数据源处理复杂数据结构

本文探讨了处理复杂数据结构的挑战,通过分析微软nwind.mdb数据库的订单明细报表示例,指出传统报表工具因采用两层数据源模型可能导致复杂的SQL语句。提出多层报表数据源模型,该模型按照编程逻辑逐层获取数据,简化SQL语句,提高可读性和执行效率,但会增加SQL语句的执行次数。文章讨论了这种模型的优缺点,并指出在当前环境下,多层数据源模型在大多数情况下利大于弊。
摘要由CSDN通过智能技术生成
现在的信息系统越来越复杂,它们的数据库中的数据结构也越来越复杂,表和字段变多了,表间关系也越来越多。面对如此复杂的数据结构,各大报表工具各显神通,想尽一切办法誓要从中获得数据。

 

    首先考察数据结构的复杂性的特点。在这里以微软的演示数据库 nwind.mdb为例子进行分析,现在要出订单明细报表,则涉及到的数据结构如图所示
可以发现这5张表的数据组成了一个3层的树状结构。第一层是Customers的数据,第二层是Orders,Employees组成的数据,第三层是OrderDetails,Products组成的。其意思就是说数据库中存在好几个客户,一个客户有多个订单,一个订单有多个货物。

    面对这种比较复杂的数据,传统的报表工具由于采用两层的数据源模型,因此需要一次性获取数据,采用眉毛胡子一起抓的思想,这就导致可能需要编写复杂的SQL语句,例如对于订单明细报表,SQL语句可以为"SELECT Customers.CompanyName, Customers.ContactName, Customers.Phone,
OrderDetails.*, Orders.OrderDate,
Products.ProductName, Employees.FirstName, Employees.LastName
FROM ((Orders 
INNER JOIN (OrderDetails 
INNER JOIN Products ON OrderDetails.ProductID = Products.ProductID) 
ON Orders.OrderID = OrderDetails.OrderID) 
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerI

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值