資料庫知識點④

来源:http://www.cnblogs.com/zpfbuaa/archive/2016/05/24/5522527.html
-Advertisement-
Play Games

1.函數依賴的定義 (a)平凡的函數依賴與非平凡的函數依賴 (b)函數依賴是語義範疇的概念 (c)函數依賴關係的存在與時間無關 (d)函數依賴可以保證關係分解的無損連接性 2.函數依賴的基本性質 SCD(SNO,SN,AGE,DEPT,MN,CNO,SCORE) (a)投影性:一組屬性函數決定它的子 ...


 1.函數依賴的定義

  (a)平凡的函數依賴與非平凡的函數依賴

  (b)函數依賴是語義範疇的概念

  (c)函數依賴關係的存在與時間無關

  (d)函數依賴可以保證關係分解的無損連接性

2.函數依賴的基本性質 SCD(SNO,SN,AGE,DEPT,MN,CNO,SCORE)

  (a)投影性:一組屬性函數決定它的子集

  舉例:(SNO,CNO)->SNO 和(SNO,CNO)->CNO

  (b)擴張性: 若x->y且w->z 則有(x,w)->(y,z)

  舉例:SNO->(SN,AGE) DEPT->MN 則有(SNO,DEPT)->(SN,AGE,MN)

  (c)合併性:若x->y 且x->z則有x->(y,z)

  舉例:SNO->(SN,AGE) SNO->(DEPT,MN) 則有SNO->(SN,AGE,DEPT,MN)

  (d)分解性:若x->(y,z)則有x->y, x->z

3.完全函數依賴與部分函數依賴

  1.如果X→Y,並且對於X的任何一個真子集X′,都有X′→ Y,則稱Y對X完全函數依賴(Full Functional Dependency),記作 X -(f)->Y

  2.如果對X的某個真子集X′,有X′→Y,則稱Y對X部分函數依賴(Partial Functional Dependency) 記作X -(p)-> Y。

  舉例:

  在關係模式SCD中

  因為SNO -\->SCORE,且CNO -\-> SCORE,所以有:(SNO,CNO)-(f)->SCORE 。

  而SNO→AGE,所以(SNO,CNO)-(p)->AGE

  3.只有當決定因素是組合屬性時,討論部分函數依賴才有意義

  4.當決定因素是單屬性時,只能是完全函數依賴。

  舉例:在關係模式S(SNO,SN,AGE,DEPT),決定因素為單屬性SNO,有SNO→(SN,AGE,DEPT),不存在部分函數依賴。

4.傳遞函數依賴

  1.定義:

  設有關係模式R(U),U是屬性全集,X,Y,Z是U的子集,

  若X→Y,但Y -\->X,而Y→Z(Y 不屬於X,Z 不屬於Y),則稱Z對X傳遞函數依賴(Transitive Functional Dependency),記作:X-(t)-> Z。

  如果Y→X,則X <->Y,這時稱Z對X直接函數依賴,而不是傳遞函數依賴。

  舉例:

  例如,在關係模式SCD中,SNO→DEPTN,但DEPTN -\->SNO,而DEPTN→MN,則有SNO-(t)->MN。系主任是對學號的傳遞依賴

  當學生不存在重名的情況下,有SNO→SN,SN→SNO,SNO <->SN,SN→DEPTN,這時DEPTN對SNO是直接函依賴,而不是傳遞函數依賴。

5.總結函數依賴

  綜上所述,函數依賴分為完全函數依賴、部分函數依賴傳遞函數依賴三類,它們是規範化理論的依據和規範化程度的準則,下麵我們將以介紹的這些概念為基礎,進行資料庫的規範設計。

6.範式

  規範化的基本思想是消除關係模式中的數據冗餘,消除數據依賴中的不合適的部分,解決數據插入、刪除時發生異常現象。

  這就要求關係資料庫設計出來的關係模式要滿足一定的條件。關係資料庫的規範化過程中:不同程度的規範化要求設立的不同標準稱為範式(Normal Form)。規範化的程度不同,產生不同的範式。滿足最基本規範化要求的關係模式叫第一範式,在第一範式中進一步滿足一些要求為第二範式,以此類推就產生了第三範式等概念。

  每種範式都規定了一些限制約束條件。

7.範式發展過程

  範式的概念最早由E.F.Codd提出。

  從1971年起,Codd相繼提出了關係的三級規範化形式,即第一範式(1NF)、第二範式(2NF)、第三範式(3NF)。

  1974年,Codd和Boyce以共同提出了一個新的範式的概念,即Boyce-Codd範式,簡稱BC範式。

  1976年Fagin提出了第四範式,

  後來又有人定義了第五範式。

  至此在關係資料庫規範中建立了一個範式系列:1NF,2NF,3NF,BCNF,4NF,5NF,一級比一級有更嚴格的要求。

clip_image002

8.第一範式(First Normal Form

  第一範式是最基本的規範形式,即關係中每個屬性都是不可再分的簡單項。

  定義:

  如果關係模式R,其所有的屬性均為簡單屬性,即每個屬性域都是不可再分的,則稱R屬於第一範式,簡稱1NF,記作R屬於1NF。

  然而,一個關係模式僅僅屬於第一範式是不適用的。給出的關係模式SCD屬於第一範式,但其具有大量的數據冗餘,具有插入異常、刪除異常、更新異常等弊端。

  為什麼會存在這種問題呢?

  讓我們分析一下SCD中的函數依賴關係,它的關係鍵是(SNO,CNO)的屬性組合,所以有:

  (SNO,CNO) -(f)->SCORE

  SNO→SN,(SNO,CNO)-(p)-> SN

  SNO→AGE,(SNO,CNO)-(p)-> AGE

  SNO→DEPT,(SNO,CNO)-(p)-> DEPT

  SNO -(t)-> MN,(SNO,CNO)-(p)-> MN

  我們可以用函數信賴圖表示以上函數依賴關係,如下圖所示。

clip_image004

9.第二範式

  定義 如果關係模式RÎ1NF,且每個非主屬性都完全函數依賴於R的每個關係鍵,則稱R屬於第二範式(Second Normal Form),簡稱2NF,記作R屬於2NF。

  分析:在關係模式SCD中,SNO,CNO為主屬性,AGE,DEPT,MN,SCORE均為非主屬性,經上述分析,存在非主屬性對關係鍵的部分函數依賴,所以SCD不是2NF。

  拆分:而將SCD分解成三個關係模式S(SNO,SN,AGE,DEPT),D(DEPT,MN),SC(SNO,CNO,SCORE),其中S的關係鍵為SNO,D的關係鍵為DEPT,都是單屬性,不可能存在部分函數依賴。

  結果:而對於SC,(SNO,CNO)-(f)->SCORE。所以SCD分解後,消除了非主屬性對關係鍵的部分函數依賴,S,D,SC均屬於2NF。

  經以上分析,可以得到兩個結論:

  1.從1NF關係中消除非主屬性關係鍵部分函數依賴,則可得到2NF關係。

  2.如果R的關係鍵為單屬性,或R的全體屬性均為主屬性,則R屬於2NF。

10.1NF分解為2NF規則

  2NF規範化是指把1NF關係模式通過投影分解轉換成2NF關係模式的集合。

  分解時遵循的基本原則就是“一事一表”,讓一個關係只描述一個實體或者實體間的聯繫。如果多於一個實體或聯繫,則進行投影分解。

11.舉例分析

clip_image005

clip_image006

clip_image007

  改善之處:關係模式SD和SC在性能上比SCD有了顯著提高。

  (a)1NF的關係模式經過投影分解轉換成2NF後,消除了一些數據冗餘

  (b)分析圖中SD和SC中的數據,可以看出,它們存儲的冗餘度比關係模式SCD有了較大輻度的降低。

  (c)學生的姓名、年齡不需要重覆存儲多次。

  (d)這樣便可在一定程度上避免數據更新所造成的數據不一致性的問題

  (e)由於把學生的基本信息與選課信息分開存儲,則學生基本信息因沒選課而不能插入的問題得到瞭解決,插入異常現象得到了部分改善。

  (f)同樣,如果某個學生不再選修C1課程,只在選課關係SC中刪去該該學生選修C1的記錄即可,而SD中有關該學生的其它信息不會受到任何影響,也解決了部分刪除異常問題。

 

上一篇資料庫知識點③:http://www.cnblogs.com/zpfbuaa/p/5503200.html

下一篇資料庫知識點⑤:http://www.cnblogs.com/zpfbuaa/p/5523163.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在PL/SQL塊中可以定義變數和數據類型,這使得PL/SQL塊對數據的處理更加靈活。 變數和類型的定義放在PL/SQL塊的變數聲明部分。 變數的定義與使用 變數的定義有兩種格式,分別為:變數名 類型 [約束][DEFAULT 預設值]變數名 類型[約束][:=初始值]其中用方括弧限定的部分是可選的。 ...
  • 關於PL/SQL的內容,主要包括匿名塊、存儲過程和存儲函數三種形式的PL/SQL塊,以及在PL/SQL 中如何使用變數、類型、流控制語句、游標、觸發器、異常等內容,以及如何利用PL/SQL塊訪問資料庫中的數據。 PL/SQL概述 如果說SQL是一種標準的資料庫訪問語言,那麼PL/SQL則是Oracl ...
  • 20 分區 20 分區... 1 20.1 MySQL的分區概述... 2 20.2 分區類型... 3 20.2.1 RANGE分區... 3 20.2.2 LIST分區... 5 20.2.3 COLUMNS分區... 7 20.2.3.1 RANGE COLUMNS分區... 7 20.2.3 ...
  • 下載MongoDB 下載地址:https://www.mongodb.com/download-center?jmp=nav#community 這裡是在windows平臺下安裝MongoDB, 下載後,在本機,按提示進行安裝。 註: 這個安裝只是為了得到MongoDB的文件,安裝的機器並不是伺服器... ...
  • 第四章作業 1. 什麼是資料庫安全性? 答:資料庫的安全性是指保護資料庫以防止不合法的使用所造成的數據泄露、更改或破壞。 2. 試述實現資料庫安全性控制的常用方法和技術。 答:實現資料庫安全性控制的常用方法和技術有: (1)用戶標識和鑒別:該方法由系統提供一定的方式讓用戶標識自己的名字或身份。每次用 ...
  • 1.第三範式 定義 如果關係模式R屬於2NF,且每個非主屬性都不傳遞依賴於R的每個關係鍵,則稱R屬於第三範式(Third Normal Form),簡稱3NF,記作R屬於3NF。 基本性質: 1.如果R屬於3NF,則R也是2NF。 2.如果R屬於2NF,則R不一定是3NF。 例如,我們前面由關係模式 ...
  • 一:安裝sql server 2005過程中出現 如下問題:“選擇的功能中沒有任何功能可以安裝或升級”: 解決方案:Microsoft SQL Server 2005→配置工具→SQL配置管理器→SQL Server 2005服務→右邊的兩個服務啟動SQL Server FullTest Searc ...
  • 資料庫的恢復模型是否影響故障恢復,在簡單恢復模式里,你是否會丟失事務?在今天的文章里我想談下這點,詳細討論下。 恢復模式(Recovery Models) 對於這個問題的最簡單的答案是不會:恢復模型不會影響故障恢復,只用簡單恢復模式你不會丟失事務。那資料庫恢復模型的目的是什麼? 你用恢復模型你只告訴 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...