帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > ASP编程
浅析数据完整性问题
作者: 发布时间:2005-03-12 来源:
内 蒙 环 境 信 息 中 心

王 阔 涛

---- 在 开 发C/S 结 构 的 大 型 数 据 库 应 用 软 件 时, 一 般 情 况
下, 软 件 开 发 人 员 和 数 据 库 设 计 人 员 并 不 是 同 一 个
人, 这 就 需 要 协 商 好 一 些 即 可 由 程 序 设 计 人 员 解 决 又
可 由 数 据 库 设 计 人 员 来 解 决 的 问 题, 保 证 数 据 完 整 性
就 是 一 个 这 样 的 问 题。

---- 笔 者 举 一 个 最 简 单 的 例 子: 货 物 出 库、 退 货 的 例 子

---- 这 里 有 库 存 表(kcb)、 出 库 单 表(ckb) 和 退 货 单 表(thb)

---- 库 存 表 包 含 如 下 列:WPBH,KCSL〔 物 品 编 号, 库 存 数
量〕

---- 出 库 单 表 含 如 下 列:WPBH,CKSL〔 物 品 编 号, 出 库 数
量〕

---- 退 货 单 表 含 如 下 列:WPBH,THSL〔 物 品 编 号, 退 货 数
量〕

---- 假 如 我 们 进 行 了 如 下 交 易:

---- 1 . 物 品A 有 十 件 出 库

---- 2 . 物 品A 有 五 件 退 货( 可 再 出 库)

---- 我 们 都 知 道, 这 两 笔 交 易 都 需 要 修 改 库 存 表, 但 修
改 库 存 表 的 工 作 由 谁 来 做。 可 以 肯 定 的 说, 程 序 设 计
人 员 和 数 据 库 设 计 人 员 都 可 以 完 成。

---- 首 先 我 们 举 例 由 程 序 设 计 人 员 如 何 完 成:

---- 1 . 出 库 时, 产 生 新 出 库 记 录 插 入 到 出 库 单 表 中,
同 时 将 库 存 表 中 的KCSL 用KCSL 减 掉 出 库 数 量 的 值 取 代。

---- 2 . 退 货 时, 产 生 新 退 货 记 录 插 入 到 退 货 表 中, 同
时 将 库 存 表 中 的KCSL 用KCSL 加 上 退 货 数 量 的 值 取 代。

---- 由 于 不 同 的 开 发 平 台, 完 成 这 项 工 作 的 代 码 不 尽
相 同, 故 不 写 出 具 体 代 码。

---- 接 下 来 看 看 由 数 据 库 设 计 人 员 是 如 何 完 成 这 项 工
作:

---- 数 据 库 设 计 人 员 完 成 这 项 工 作 靠 的 是 触 发 器。

---- 数 据 库 设 计 人 员 建 立 如 下SQL 语 句 为 出 库 单 表(ckb) 建
立 插 入 触 发 器

CREATE TRIGGER FORINSERT

ON ckb

FOR INSERT

AS

UPDATE kcb

SET kcb.kcsl=kcb.kcsl - inserted.cksl

FROM inserted

WHERE kcb.wpbh=inserted.wpbh

---- 同 样, 也 要 为 退 货 单 表 建 立 类 似 的SQL 语 句

CREATE TRIGGER FORINSERT

ON thb

FOR INSERT

AS

UPDATE kcb

SET kcb.kcsl=kcb.kcsl + inserted.thsl

FROM inserted

WHERE kcb.wpbh=inserted.wpbh

---- 可 以 很 明 显 地 看 出, 如 果 两 个 人 都 做 了 工 作, 程 序
在 运 行 过 程 中 一 定 会 出 错。

---- 但 这 项 工 作 具 体 应 该 由 谁 来 完 成 ? 我 私 下 认 为,
应 该 由 数 据 库 设 计 人 员 来 完 成, 原 因 如 下:

---- 1、 一 个 可 移 植 性 好 的 软 件 应 该 与 数 据 的 结 构 无
关;

---- 2、 程 序 的 研 制 和 调 试 更 加 简 单, 再 拿 上 例 来 说, 程
序 设 计 人 员 只 需 完 成 往 出 库 单 表 和 退 货 单 表 中 插 入
相 应 的 记 录 工 作 即 可, 具 体 修 改 工 作 由 触 发 器 来 完
成。

---- 3、 触 发 器 的 运 行 是 在 服 务 器 端, 减 轻 了 客 户 端 的
开 销。

---- 4、 触 发 器 不 管 你 在 什 么 时 候 进 行 操 作, 它 都 会 启
动, 保 证 数 据 不 会 出 错。

---- 其 实, 上 文 所 写 的 触 发 器 只 是 一 个 最 简 单 的 例 子,
在 实 际 工 作 中 要 远 远 比 这 复 杂 得 多, 设 计 一 个 好 的 数
据 库 会 花 费 数 据 库 设 计 人 员 很 大 的 心 血, 如 果 只 是 建
立 了 表 格, 工 作 还 没 有 完 成 一 半 呢, 下 一 多 半 工 作 就
是 将 你 的 数 据 完 整 性 问 题 解 决 掉。

---- 成 功 地 设 计 一 个 数 据 库 能 起 到 事 半 功 倍 的 效 果。
数 据 的 完 整 性 已 经 解 决 了, 程 序 设 计 起 来 还 有 什 么 问
题 呢 ?

---- 说 来 容 易, 做 到 却 很 难, 比 者 在 实 际 工 作 中 也 经 常
遇 到 很 多 问 题, 希 望 能 和 众 多 的 同 行 共 同 进 步, 把 你
的 经 验 和 好 的 方 法 告 诉 大 家。

  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·浅析J2EE与.NET平台优劣  (2005-03-12)

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·DiscuzX2.5会员整合通行证发布
·帝国CMS 7.0版本功能建议收集
·帝国网站管理系统2012年授权购买说
·PHPWind8.7会员整合通行证发布
·[官方插件]帝国CMS-访问统计插件
·[官方插件]帝国CMS-sitemap插件
·[官方插件]帝国CMS内容页评论AJAX分
   类别最新
·在ASP中使用数据库
·使用ASP脚本技术
·通过启动脚本来感受ASP的力量
·学习使用ASP对象和组件
·解析asp的脚本语言
·初看ASP-针对初学者
·ASP开发10条经验总结
·ASP之对象总结
·ASP与数据库应用(给初学者)
·关于学习ASP和编程的28个观点
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统