科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道利用DB2 9原生XML和PHP来简化XML应用程序

利用DB2 9原生XML和PHP来简化XML应用程序

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文讲述了模式演化对应用程序的影响,并通过使用情景向用户说明设置 PHP 环境的容易程度;将DB2原生XML 功能与PHP应用程序(包括用PHP和 XQuery编写的Web服务)集成的容易程度。

作者:Hardeep Singh 来源:IT专家网 2008年6月5日

关键字: IBM 数据库 DB2

  • 评论
  • 分享微博
  • 分享邮件

创建主页

主页包含在线商店中所有可用产品的种类和品牌的索引。索引的右边区域显示所有货品的列表。


图 5. 主页
主页


创建种类和品牌的索引列表

索引通过查询数据库中所有产品的惟一种类和品牌的列表而创建。启动应用程序时将创建此列表。

DB2 Viper

  1. 首先创建 DB2 视图,以使用 XQuery 列出种类,XQuery 在所有产品中循环并返回所有惟一种类:

    CREATE VIEW Categories(Category) AS SELECT DISTINCT(XMLCAST(
    XMLQUERY(for $i in $t/product/description/category return $i'
    PASSING BY REF T.DESCRIPTION AS "t" RETURNING SEQUENCE)
    AS VARCHAR(128))) FROM
    xmlproduct AS t

  2. 现在从应用程序调用该视图:

    $stmt = db2_exec($conn, "SELECT * FROM Categories");
    while(list($cat) = db2_fetch_array($stmt)) {
    echo "$cat
    "; }

非 XML RDBMS
从产品表创建种类的惟一列表:

$stmt = db2_exec($conn, "SELECT DISTINCT(category) FROM SQLPRODUCT");
while(list($cat) = db2_fetch_array($stmt)) {
echo "
$cat
";}

这两种情况中的应用程序代码相似。创建 XML 数据视图使我们可以轻松地查询视图,从而有助于从应用程序代码理解产品 XML 的结构。需要更改视图中的 XQuery 以查找品牌元素,同样 SQL 调用也需要查看 Brand 列。

模式演化对索引列表的影响

根据客户反馈,我们需要允许用户浏览站点,以查找镀银的货品或由纯银制造的货品。我们看一下向索引中添加子种类对以下各项的影响:XML 模式、关系模式、查询和 PHP 应用程序代码。

对 XML 模式和文档实例的影响
向产品 XML 模式中的种类元素添加新属性(catx)。产品的所有新 XML 文档现在都用纯银或镀银适当地填充了此属性:
Miscellaneous

对关系模式的影响
  • DB2 Viper
    这将不需要对关系模式进行任何更改,因为 XML 文档存储在单个列中。
  • 非 XML RDBMS
    在基本关系数据库中,将需要更改产品表的模式,添加名为 catx 的另一列。这可能涉及删除并重新插入所有产品文档。
对查询的影响
  • DB2 Viper 创建索引所需的 XQuery 将发生变化以在条件中包含这个新属性。同样,用于根据索引中的选择列出货品 XQuery 也将发生变化来包括新条件。
  • 非 XML RDBMS
    插入语句将发生变化以包括新列。
创建索引所需的查询将发生变化以在 WHERE 子句中包括这个新列。同样,用于根据索引中的选择列出货品的查询也将发生变化以包括新条件。

对应用程序代码的影响
  • DB2 Viper
    应用程序代码将没有任何更改。
  • 非 XML RDBMS
    • 将需要额外的 DOM 代码,以分割出子种类信息。
    • INSERT 语句将需要额外的参数。
    • 所有数据都有可能需要重新插入,这导致终端用户有一段时间无法操作。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章