第一篇 關系型數據庫的基本理論


一、關系型數據庫與數據庫管理系統

數據庫(DB)是一個按數據結構來存儲和管理數據的計算機軟件系統。

  • 存儲大量數據,方便檢索和訪問
  • 保持數據信息的一致、完整
  • 共享和安全
  • 通過組合分析,產生新的有用信息

  數據庫管理系統(Database Management System)

 

   數據庫管理系統是專門用於管理數據庫的計算機系統軟件。數據庫管理系統能夠為數據庫提供數據的定義、建立、維護、查詢和統計等操作功能,並完成對數據完整性、安全性進行控制的功能。比如在關系型數據庫中,關系模型以二維表來描述數據,對於二維表中存儲的數據信息,通常以物理文件的形式存儲在磁盤上,這種物理文件稱之為“數據文件”。用戶通過DBMS實現與磁盤上的數據文件進行交互。DBMS是建立在操作系統基礎上的,對數據庫文件進行統一管理和控制。用戶對數據庫提出的訪問請求都是由DBMS來處理的。

  數據庫應用系統(Database Application System)

  就是使用數據庫技術的系統; 數據庫應用系統有很多,基本上所有的信息系統都是數據庫應用系統。它通常由軟件、數據庫和數據管理員組成 

  數據庫管理員(DBA)

  負責創建、監控和維護整個數據庫,使數據能被任何有權使用的人有效使用。數據庫管理員一般是由業務水平較高,資歷較深的人員擔任 。

數據庫管理系統的功能結構

1. 數據定義功能
  能夠提供數據定義語言(Data Description Language,簡稱DDL)和相應的建庫機制。用戶利用DDL可以方便地建立數據庫。
2. 數據操縱功能
  實現數據的插入、修改、刪除、查詢、統計等數據存取操作的功能稱為數據操縱功能。數據操縱功能是數據庫的基本操作功能,數據庫管理系統通過提供數據操縱語言(Data Manipulation language,簡稱DML)實現其數據操縱功能。
3. 數據庫的建立和維護功能
  指數據的載入、轉儲、重組織功能及數據庫的恢復功能;指數據庫結構的修改、變更及擴充功能。
4. 數據庫的運行管理功能
  包括並發控制、數據的存取控制、數據完整性條件的檢查和執行、數據庫內部的維護等。

數據庫系統的分類

  數據模型是數據庫系統的核心和基礎,通常由數據結構、數據操作和完整性約束3部分組成,各種DBMS數據庫都是基於某種數據模型的,通常也按照數據模型的特點將傳統數據庫系統分成網狀型數據庫、層次型數據庫和關系數據庫3類數據庫。(非關系型數據庫NoSql,odbms)
網狀型數據庫
  網狀模型是最早出現的網狀DBMS。世界上第一個網狀數據庫管理系統也是第一個DBMS是美國通用電氣公司Bachman等人在1964年開發成功的ID(IntegratedDataStore)。
型數據庫
  層次型數據庫管理系統是緊隨網狀數據庫而出現的。層次模型是樹狀的。最著名最典型的層次數據庫系統是IBM公司的IMS(Information Management System),這是IBM公司研制的最早的大型數據庫系統程序產品。從60年代末產生起,如今已經發展到IMSV6。這個具有30年歷史的數據庫產品在如今的WWW應用連接、商務智能應用中扮演着新的角色(DB2,imformix)
關系型數據庫 rdbms
  關系型數據(RDBS,RELATIONAL DBS)是建立在關系模型上的數據庫系統。關系模型就是指滿足一定條件的二維表,表具有固定的列數和任意的行數,因而一個關系型數據庫就是由二維表及其之間的聯系組成的一個數據庫系統 ,結構和實體關系。

  • 二維表是同類實體的各種屬性的集合,每個實體對應於表中的一行,在關系中稱為元組,相當於通常的一個記錄
  • 表中的列表示屬性,稱為,相當於通常記錄中的一個數據項,也叫列、字段
  • 若二維表中有n個域,則每一行叫做一個n元組,這樣的關系稱為n度(元)關系。表的行對應於對象的實例,各個表的行列交點就用來存貯簡單值。滿足一定條件的規范化關系的集合,就構成了關系模型。

關系型數據庫的組成
  一個關系表必須符合某些特定的條件,才能成為關系模型的一部分

  1、貯存在單元中的數據必須是原子的,每個單元只能貯存一條數據,這也叫信息原則。
  2、貯存在列中的數據必須具有相同的數據類型。
  3、每行是唯一的。
  4、列沒有順序。
  5、行沒有順序。
  6、列有一個唯一性的名稱。

二、關系型數據庫的E-R模型

  在設計關系型數據庫時,首先需要為它建立邏輯模型。關系型數據庫的邏輯模型可以通過實體和關系組成的圖形來表示,這種圖形稱為E-R圖,它可以實現現實世界中的實體和實體之間的聯系轉為邏輯模型,一個標准的E-R模型主要由實體、屬性和聯系3部分組成。

  1.  實體和屬性

      實體是一個數據對象,是指客觀存在並可以相互區分的事物,如一個教師、一個學生、一個雇員等等。每個實體由一組屬性來表示,如,一個具體的學生擁有學號、姓名、性別和班級等屬性,其中學號可以唯一標識具體某個學生這個實體。具有相同屬性的實體組合在一起就構成實體集—即實體集是實體的集合,而實體則是實體集中的某一個特例,例如,王大錘這個實體就是學生實體集中的一個特例。

  2.聯系

  在實際應用中,實體之間是存在聯系的,這種聯系必須在邏輯模型中表現出來。在E-R模型中,聯系用菱形表示,菱形框內寫明“聯系名”,並用“連接線”將有關實體連接起來,同時在“連接線”的旁邊標注上聯系的類型,兩個實體之間的聯系類型可以分為3類。

   一對一:對於實體集A中的每一個實體,在實體集B中最多有一個實體與之相關,反之亦然,標記為1:1

  一對多: 對於實體集A中的每一個實體,在實體集B中有多個實體與之關聯,反之,對於實體集B中每一個實體,在實體集A中最多有一個實體與之相關,則稱實體集A與實體集B具有一對多,標記為1:n

  多對多: 對於實體集A中的每一個實體,在實體集B中有多個實體與之關聯,反之,對於實體集B中每一個實體,在實體集A中也有多個實體與之相關,則稱實體集A與實體集B具有多對多,標記為m:n

三、關系型數據庫的設計范式

   在數據庫中,數據之間存在着密切的聯系。關系型數據庫由相互聯系的一組關系所組成。在關系型數據庫中的每個關系都需要規范化,使之達到一定的規范化程度,從而提高數據的結構化、共享性、一致性和可操作性。

  規范化是把數據庫組織成在保持存儲數據完整性的同時最小化冗余數據的結構的過程。規范化的數據庫必須符合關系模型的范式法則。范式可以防止在使用數據庫時出現不一致的數據,並防止數據丟失。關系范式有:1NF,2NF,3NF,4NF,5NF,6NF和BCNF范式等多種。要求是從低到高逐漸遞增。關系型數據庫必須滿足1NF,通常滿足到3NF就可以了。

  1、第一范式(1NF):屬性不可再分,字段保證原子性

   2、第二范式(2NF)

  在滿足1NF的基礎上,要求表中的每條記錄必須被唯一的區分。為實現區分各行記錄通常需要為表設置一個“區分列”,用以存儲各個實體的唯一標識。在學生信息表中,設置了學號列,由於每個學員的學號都是唯一的,因此每個學生可以被唯一的區分(即使學生存在重名的情況下),那么這個唯一屬性列被稱為主關鍵字或主鍵。

2NF要求實體屬性應該完全依賴於主關鍵字。而不能是對主關鍵字形成部分函數依賴,如果存在,那么這個屬性和主關鍵字的這一部分應該分離出來形成一個新的實體,新實體與原實體之間是一對多的關系。

  例如,這里以“員工工資信息表”為例,若以(員工編碼、崗位)為組合關鍵字(即復合主鍵),就會存在如下決定關系。

    (員工編碼,崗位)→(決定)(姓名、年齡、學歷、基本工資、績效工資、獎金)

    在上面的決定關系中,還可以進一步拆分為如下兩種決定關系。

    (員工編碼)→(決定)(姓名、年齡、學歷)

    (崗位)→(決定)(基本工資)

3、第三范式(3NF)

  在2NF基礎上,任何非主屬性不依賴於其它非主屬性(在2NF基礎上消除傳遞依賴)。

例如,這里以員工信息表(EMPLOYEE)為例,該表中包含員工編號、員工姓名、年齡、部門編碼、部門經理等信息,該關系    表的關鍵字為“員工編號”,因此存在如下決定關系:

 (員工編碼)→(決定)(員工姓名、年齡、部門編碼、部門經理)

上面的這個關系表是符合第二范式的,但它不符合第三范式,因為該關系表內部隱含着如下決定關系:

 (員工編碼)→(決定)(部門編碼)→(決定)(部門經理)

對於關系型數據庫的設計,理想的設計目標是按照“規范化”原則存儲數據,因為這樣能夠消除數據冗余、更新異常、插入異常和刪除異常。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM