明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

淺析數(shù)據(jù)完整性問題

[摘要]---- 在 開 發(fā)C/S 結 構 的 大 型 數(shù) 據(jù) 庫 應 用 軟 件 時, 一 般 情 況 下, 軟 件 開 發(fā) 人 員 和 數(shù) 據(jù) 庫 設 計 人 員 并 不 是 同 一 個 人, 這 就 需 要 協(xié) 商 好 一 些 即 可 由 程 序 設 計 人 員 解 決 又 可 由 數(shù) 據(jù) 庫 設 ...

---- 在 開 發(fā)C/S 結 構 的 大 型 數(shù) 據(jù) 庫 應 用 軟 件 時, 一 般 情 況
下, 軟 件 開 發(fā) 人 員 和 數(shù) 據(jù) 庫 設 計 人 員 并 不 是 同 一 個
人, 這 就 需 要 協(xié) 商 好 一 些 即 可 由 程 序 設 計 人 員 解 決 又
可 由 數(shù) 據(jù) 庫 設 計 人 員 來 解 決 的 問 題, 保 證 數(shù) 據(jù) 完 整 性
就 是 一 個 這 樣 的 問 題。


---- 筆 者 舉 一 個 最 簡 單 的 例 子: 貨 物 出 庫、 退 貨 的 例 子



---- 這 里 有 庫 存 表(kcb)、 出 庫 單 表(ckb) 和 退 貨 單 表(thb)


---- 庫 存 表 包 含 如 下 列:WPBH,KCSL〔 物 品 編 號, 庫 存 數(shù)
量〕


---- 出 庫 單 表 含 如 下 列:WPBH,CKSL〔 物 品 編 號, 出 庫 數(shù)
量〕


---- 退 貨 單 表 含 如 下 列:WPBH,THSL〔 物 品 編 號, 退 貨 數(shù)
量〕


---- 假 如 我 們 進 行 了 如 下 交 易:


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


---- 2 . 物 品A 有 五 件 退 貨( 可 再 出 庫)


---- 我 們 都 知 道, 這 兩 筆 交 易 都 需 要 修 改 庫 存 表, 但 修
改 庫 存 表 的 工 作 由 誰 來 做。 可 以 肯 定 的 說, 程 序 設 計
人 員 和 數(shù) 據(jù) 庫 設 計 人 員 都 可 以 完 成。


---- 首 先 我 們 舉 例 由 程 序 設 計 人 員 如 何 完 成:


---- 1 . 出 庫 時, 產(chǎn) 生 新 出 庫 記 錄 插 入 到 出 庫 單 表 中,
同 時 將 庫 存 表 中 的KCSL 用KCSL 減 掉 出 庫 數(shù) 量 的 值 取 代。


---- 2 . 退 貨 時, 產(chǎn) 生 新 退 貨 記 錄 插 入 到 退 貨 表 中, 同
時 將 庫 存 表 中 的KCSL 用KCSL 加 上 退 貨 數(shù) 量 的 值 取 代。


---- 由 于 不 同 的 開 發(fā) 平 臺, 完 成 這 項 工 作 的 代 碼 不 盡
相 同, 故 不 寫 出 具 體 代 碼。


---- 接 下 來 看 看 由 數(shù) 據(jù) 庫 設 計 人 員 是 如 何 完 成 這 項 工
作:


---- 數(shù) 據(jù) 庫 設 計 人 員 完 成 這 項 工 作 靠 的 是 觸 發(fā) 器。


---- 數(shù) 據(jù) 庫 設 計 人 員 建 立 如 下SQL 語 句 為 出 庫 單 表(ckb) 建
立 插 入 觸 發(fā) 器


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


---- 可 以 很 明 顯 地 看 出, 如 果 兩 個 人 都 做 了 工 作, 程 序
在 運 行 過 程 中 一 定 會 出 錯。


---- 但 這 項 工 作 具 體 應 該 由 誰 來 完 成 ? 我 私 下 認 為,
應 該 由 數(shù) 據(jù) 庫 設 計 人 員 來 完 成, 原 因 如 下:


---- 1、 一 個 可 移 植 性 好 的 軟 件 應 該 與 數(shù) 據(jù) 的 結 構 無
關;


---- 2、 程 序 的 研 制 和 調 試 更 加 簡 單, 再 拿 上 例 來 說, 程
序 設 計 人 員 只 需 完 成 往 出 庫 單 表 和 退 貨 單 表 中 插 入
相 應 的 記 錄 工 作 即 可, 具 體 修 改 工 作 由 觸 發(fā) 器 來 完
成。


---- 3、 觸 發(fā) 器 的 運 行 是 在 服 務 器 端, 減 輕 了 客 戶 端 的
開 銷。


---- 4、 觸 發(fā) 器 不 管 你 在 什 么 時 候 進 行 操 作, 它 都 會 啟
動, 保 證 數(shù) 據(jù) 不 會 出 錯。


---- 其 實, 上 文 所 寫 的 觸 發(fā) 器 只 是 一 個 最 簡 單 的 例 子,
在 實 際 工 作 中 要 遠 遠 比 這 復 雜 得 多, 設 計 一 個 好 的 數(shù)
據(jù) 庫 會 花 費 數(shù) 據(jù) 庫 設 計 人 員 很 大 的 心 血, 如 果 只 是 建
立 了 表 格, 工 作 還 沒 有 完 成 一 半 呢, 下 一 多 半 工 作 就
是 將 你 的 數(shù) 據(jù) 完 整 性 問 題 解 決 掉。


---- 成 功 地 設 計 一 個 數(shù) 據(jù) 庫 能 起 到 事 半 功 倍 的 效 果。
數(shù) 據(jù) 的 完 整 性 已 經(jīng) 解 決 了, 程 序 設 計 起 來 還 有 什 么 問
題 呢 ?


---- 說 來 容 易, 做 到 卻 很 難, 比 者 在 實 際 工 作 中 也 經(jīng) 常
遇 到 很 多 問 題, 希 望 能 和 眾 多 的 同 行 共 同 進 步, 把 你
的 經(jīng) 驗 和 好 的 方 法 告 訴 大 家。
(出處:熱點網(wǎng)絡)