数 据 管 理 的 演 进( 四 )

----

统 一 表 示 的 关 系 模 型

---- 实 体 和 关 系 在 关 系 模 型 中 是 统 一 表 示 的。 关 系 模 型 对 数 据 定 义、 数 据 浏 览 和 数 据 操 作 有 统 一 的 语 言, 而 不 是 针 对 不 同 的 任 务 有 不 同 的 语 言。 更 重 要 的 是, 关 系 代 数 将 记 录 集 合( 关 系) 视 为 一 个 组, 运 算 子 对 整 个 记 录 集 合 操 作, 其 结 果 也 为 记 录 集 合。 关 系 数 据 模 型 和 运 算 子 允 许 更 短 和 更 简 单 的 程 序。 例 如, 如 图 所 示, 我 们 的 航 线 数 据 库 可 表 示 为 五 个 表。 关 系 系 统 不 是 隐 含 地 存 储 航 班 和 旅 程 的 关 系, 而 是 显 示 地 存 储 每 个 航 班- 旅 程 对, 并 视 之 为 一 个 记 录( 见 图 中 的“Segment” 表)。

---- 下 列SQL 查 询 将 找 出 为 旅 客Jones 去San Francisco 所 保 留 的 所 有 航 程 段:

    Select Flight#
    From City, Flight, Segment, Trip, 
          Customer
    Where Flight.to = “SF”
       AND Flight.flight# = Segment.
             flight#
       AND Segment.trip# = trip.trip#
       AND trip.customer# = customer.
             customer#
       AND customer.name = “Jones”

---- 上 述 程 序 换 句 话 说 就 是,“ 找 出 旅 客Jones 所 预 订 的 旅 程 中San Francisco 那 段 的 飞 机 航 班 号, 请 组 合 使 用City, Flight, Segment, Trip 和Customer 表 来 找 出 该 航 班。” 关 系 数 据 库 在 处 理 这 些 非 程 式 化 查 询 时, 能 自 动 找 出 匹 配City, Flight, Segment, Trip, Customer 表 中 记 录 的 最 佳 途 径。 由 于 查 询 不 依 赖 于 所 定 义 的 关 系, 所 以 即 使 数 据 库 在 逻 辑 上 重 组, 该 程 序 仍 能 继 续 工 作。 因 此, 它 就 比 基 于 网 络 数 据 模 型 的 浏 览 型 查 询 具 有 更 强 的 数 据 独 立 性。 关 系 型 程 序 除 提 高 了 数 据 独 立 性 之 外, 通 常 它 还 比 与 之 对 应 的 浏 览 型 程 序 要 简 单5 至10 倍。

---- 受Codd 的 思 想 启 发, 整 个70 年 代 众 多 学 术 界 和 工 业 界 的 研 究 人 员 应 用 这 种 新 方 法 去 组 建 和 访 问 数 据 库, 并 期 望 有 更 戏 剧 化 般 容 易 的 数 据 建 模 和 应 用 编 程。 那 个 阶 段 开 发 的 许 多 关 系 原 型 最 后 汇 合 为 一 种 通 用 的 模 型 和 语 言。IBM 研 究 部 门 的Ted Codd, Raymond Boyce, 和Don Chamberlin, 以 及 加 州 伯 克 利 大 学 的Michael Stonebraker 所 做 的 工 作 促 成 了SQL 数 据 库 语 言 的 诞 生。 从1985 年 该 语 言 首 次 标 准 化 到 现 在, 该 标 准 已 有 了 两 次 大 的 添 加。 今 天, 几 乎 所 有 的 数 据 库 系 统 都 提 供SQL 接 口。 同 时, 在 标 准 之 外 所 有 的 系 统 又 都 提 供 独 有 的 扩 展。

意 料 之 外 的 好 处

---- 关 系 模 型 除 在 程 序 员 生 产 率 和 易 用 性 上 的 好 处 之 外, 还 有 一 些 意 想 不 到 的 好 处。 关 系 模 型 很 适 合 于 客 户 机- 服 务 器 计 算, 并 行 处 理 和 图 形 用 户 界 面。

---- 客 户 机- 服 务 器 设 计 将 应 用 分 为 两 个 部 分。 客 户 机 负 责 输 入 和 输 出; 服 务 器 负 责 存 储 数 据 库, 处 理 客 户 机 对 数 据 库 的 请 求, 以 及 提 供 请 求 回 答。 关 系 接 口 由 于 交 换 的 是 高 层 次 的SQL 请 求 与 响 应, 因 而 特 别 便 于 客 户 机- 服 务 器 计 算。 今 天, 许 多 客 户 机- 服 务 器 工 具 建 立 在 开 放 数 据 库 连 接(Open Database Connectivity, ODBC) 协 议 上, 该 协 议 为 客 户 机 向 关 系 数 据 库 服 务 器 作 高 层 次 请 求 提 供 了 一 个 标 准 途 径。

---- 由 多 个 运 算 子 组 成 的 关 系 模 型 接 近 于 如 下 构 造: 每 个 运 算 子 的 输 入 为 关 系, 结 果 也 为 关 系。 所 以, 关 系 运 算 子 自 然 支 持 管 道 和 分 隔 机 制。 管 道 并 行 是 将 一 个 运 算 子 的 输 出 作 为 另 一 个 运 算 子 的 输 入。 虽 然 较 少 见 到 长 管 道, 但 是 关 系 运 算 子 常 常 可 以 被 分 割, 即 每 个 运 算 子 被 克 隆 成N 个, 每 个 克 隆 处 理 第1/N 个 输 入 关 系。 这 些 想 法 最 早 是 由 学 术 界 和Teradata( 现 在 的NCR 公 司) 提 出 的。 今 天, 关 系 系 统 利 用 并 行 机 制 成 百 倍 地 提 高 速 度 已 是 平 常 之 事。 像 数 据 挖 掘(Data Mining) 这 样 需 要 几 周 甚 至 几 个 月 时 间 搜 索 多 个TB 量 级 数 据 的 工 作, 并 行 处 理 时 只 需 几 个 小 时。 上 述 并 行 机 制 是 完 全 自 动 的: 设 计 人 员 只 需 简 单 地 把 数 据 交 给 数 据 库 系 统, 系 统 即 分 割 和 索 引 这 些 数 据。 当 用 户 提 出 查 询 请 求( 如ODBC 请 求) 时, 系 统 会 自 动 为 该 查 询 选 择 一 个 并 行 计 划 并 执 行 之。 ◎( 张 继 坚 编 译)


----用 关 系 模 型 表 示 航 线 数 据 库 的 信 息, 其 中 所 有 数 据 和 关 系 均 显 示 表 示 为 记 录。 关 系 位 于 顶 端。 一 些 段 关 系 细 节 示 于 低 端, 它 记 录 了 旅 客 行 程 中 的 每 个 航 班( 段)。


中国计算机世界出版服务公司版权所有