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

现在的信息系统越来越复杂,它们的数据库中的数据结构也越来越复杂,表和字段变多了,表间关系也越来越多。面对如此复杂的数据结构,各大报表工具各显神通,想尽一切办法誓要从中获得数据。

 

    首先考察数据结构的复杂性的特点。在这里以微软的演示数据库 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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值