• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    數據庫設計三大范式應用實例剖析

    發布: 2008-10-15 09:54 | 作者: 不詳 | 來源: 測試時代采編 | 查看: 35次 | 進入軟件測試論壇討論

    領測軟件測試網



      這個數據庫是符合2NF的,但是不符合3NF,因為存在如下決定關系:

      (學號) → (所在學院) → (學院地點, 學院電話)

      即存在非關鍵字段"學院地點"、"學院電話"對關鍵字段"學號"的傳遞函數依賴。

      它也會存在數據冗余、更新異常、插入異常和刪除異常的情況,讀者可自行分析得知。

      把學生關系表分為如下兩個表:

      學生:(學號, 姓名, 年齡, 所在學院);

      學院:(學院, 地點, 電話)。

      這樣的數據庫表是符合第三范式的,消除了數據冗余、更新異常、插入異常和刪除異常。

      鮑依斯-科得范式(BCNF):在第三范式的基礎上,數據庫表中如果不存在任何字段對任一候選關鍵字段的傳遞函數依賴則符合第三范式。

      假設倉庫管理關系表為StorehouseManage(倉庫ID, 存儲物品ID, 管理員ID, 數量),且有一個管理員只在一個倉庫工作;一個倉庫可以存儲多種物品。這個數據庫表中存在如下決定關系:

      (倉庫ID, 存儲物品ID) →(管理員ID, 數量)

      (管理員ID, 存儲物品ID) → (倉庫ID, 數量)

      所以,(倉庫ID, 存儲物品ID)和(管理員ID, 存儲物品ID)都是StorehouseManage的候選關鍵字,表中的唯一非關鍵字段為數量,它是符合第三范式的。但是,由于存在如下決定關系:

      (倉庫ID) → (管理員ID)

      (管理員ID) → (倉庫ID)

      即存在關鍵字段決定關鍵字段的情況,所以其不符合BCNF范式。它會出現如下異常情況:

      (1) 刪除異常:

      當倉庫被清空后,所有"存儲物品ID"和"數量"信息被刪除的同時,"倉庫ID"和"管理員ID"信息也被刪除了。

      (2) 插入異常:

      當倉庫沒有存儲任何物品時,無法給倉庫分配管理員。

      (3) 更新異常:

      如果倉庫換了管理員,則表中所有行的管理員ID都要修改。

      把倉庫管理關系表分解為二個關系表:

      倉庫管理:StorehouseManage(倉庫ID, 管理員ID);

      倉庫:Storehouse(倉庫ID, 存儲物品ID, 數量)。

      這樣的數據庫表是符合BCNF范式的,消除了刪除異常、插入異常和更新異常。

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    44/4<1234

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>