詳細解說關系型數據庫


目錄

1.1、認識關系型數據庫

1.1.1 什么是關系型數據庫

1.1.2  實體關系模型

1.1.3  關系型數據庫管理系統RDBMS

1.1.4  使用SQL語言管理數據庫


1.1、認識關系型數據庫

數據庫簡而言之就是數據的集合,它是由文件系統存儲數據發展起來的,數據庫系統解決了多人數據庫讀取和寫入的並發性問題,同時它提供了事務的機制,使得存儲和管理數據庫數據更加安全可靠。數據庫系統讓用戶只處理邏輯數據層,比如表和視圖等。它使得用戶可以使用簡單易管理的方式來操作數據的數據。

1.1.1 什么是關系型數據庫

數據技術經過幾十年的發展,經歷了人工管理、文件系統到現在的數據庫管理,提供了對數據更高級和更有效的管理。數據庫系統管理數據具有如下特點:

      (1)使用數據模型表示復制的數據庫結構,用戶可以使用實體關系模型對數據進行建模,不僅可以表達數據本身,還可以描述數據之間的關系,這使得存儲在數據庫中的數據更容易理解和維護。

(2)數據系統將數據的邏輯結構與物理結構分離,用戶可以簡單地使用邏輯結構操作數據庫,而不用考慮物理存儲結構,簡化了數據庫操作的復雜性。一般來說,一個數據庫系統可以分為如圖1.1所示的3級。

(3)數據庫系統提供了數據的控制功能,他提供了多用戶並發機制,防止數據庫數據被非法更改。數據庫系統會提供數據的備份和恢復功能,可以避免出現災難性時間導致的數據丟失。數據提供數據完整性功能,並且提供了必要的安全性機制。

關系型數據庫系統是近30年來數據庫系統的主流模型,他使用數據之間的關系模型來存儲和管理數據庫。關系型數據庫的模型建立與20世紀70年代,美國的E.F.Codd發表了一遍名為《大型共享數據庫的數據關系模型》的論文,他定義了一個基於數學幾何理論的關系模型,關系型數據庫是一個符合關系模型的數據庫。

●注意:《大型共享數據庫的數據關系模型》已經具有簡體中文版本,感興趣的用戶可以通過湊所引擎了解關於這邊論文的詳細信息。

在現實世界匯總,大量的數據都是具有一些相關性的,關系型數據庫系統就是更具數據的關系對數據進行結構化的組織和存儲。對關系型數據庫的定義簡而言之就是:使用關系或二維表存儲信息。二維表是由行(也可以稱為元組)和列(也看可以稱為屬性)組成的,通常簡稱為表或者是關系型數據庫的實體。表中的每一行都具有相同的列集,因此可以將關系型數據稱為存儲在關系表中的數據庫。

舉個例子,為了存儲人事部門的數據,可以創建一個員工表和一個部門表,由於員工表中的每個人員信息都是屬於部門,因此關系型數據庫還會存儲員工表和部門之間的引用關系。當沒有使用關系型數據庫系統時,認識部門可能使用Excel創建一張人員表,示意結構如圖1.2所示。

人事部門還會創建一張部門表,部門表中包含了部門的名稱、部門的位置部門的編號等信息,人員表的所屬部門應該是要與部門表中的部門名稱保持一致,否則數據庫中的數據庫就會出現混亂,如圖1.3所示。

關系型數據庫出了存儲這些基本的數據信息外,還會存儲表之間的關系。關系型數據會維護這些關系的完整性,一遍提供更加結構話的存儲方式。

1.1.2  實體關系模型

數據庫主要用來存儲現實世界中的數據,關系型數據庫通過使用表盒關系來存儲數據,可以保存現實世界中的數據集合。實體關系模型對現實世界進行抽象,得出實體類型和實體間的關系,用來描述現實世界中數據的組成結構。在構建了實體關系后,一般會使用實體關系的圖來清晰地表達出實體關系的機構。實體關系圖(Entity Relationship Diagram)是指提供了表實體、屬性和關系的圖形化表示方式,用來描述現實世界的概念模型,簡稱為E-R圖。

實體關系模型具有3個核心的元素,在進行數據庫的分析和設計時,需要認真地理解這幾個元素的具體含義及在E-R圖匯總的表現形式,分別如下所示。

●實體(Entity):是具有相同特征和屬性的顯示世界事務的抽象,在E-R圖匯總用矩形表示,矩形框內注明實體的名稱。比如員工張三、員工趙七都是實體。

●屬性(Attribute):是指實體具有的特征,一個實體可以包含若干個實體。在E-R圖匯總屬性用橢圓形表示,並使用線條將其與相應的實體連接起來。比如員工具有工號、入職日期等屬性。

●關系(Relationship):是指實體之間的像話聯系的方式,一般具有一對一關系(1:1)、一對多關系(1:N)、多對多關系(M:N)。

以認識管理系統的人員信息和員工請假為例,通過使用實體關系建模,回執了如圖1.4所示的ER實體關系圖。

由圖1.4可以發現,人員和請假單這兩個實體使用矩形表示,實體的屬性使用橢圓形表示,實體與實體之間的關系使用另行表示。人員實體與請假單實體居勇1對多的關系,因此在另行附近使用1和N表示。

一般來說,數據庫設計人員對數據庫進行需求分析時,與數據庫的用戶進行溝通,數據庫的設計人員可能需要回執多種不同類型的圖來表單關系型數據庫的存儲結構,在邏輯設計階段回執E-R關系圖,可以使用Visio、PowerDesigner或者是ERWin Data Modeler等軟件來實現。

1.1.3  關系型數據庫管理系統RDBMS

數據庫管理系統是基於關系型數據庫模型創建的計算機軟件程序,其英文全稱是Relational Database Management System,簡稱RDBMS。數據庫管理系統是位於操作系統和用戶(或者是基於數據庫的應用程序)之間的一組數據庫管理程序,它提供了對數據庫中的數據進行統一管理和控制的功能,對歸根到底,數據庫中的數據是以文件的形式存放在操作系統中的,數據庫管理系統提供了數據庫和高級組織形成,他提供了對數據庫中的數據的統一管理和控制的功能,數據庫管理系統與用戶的示意圖如圖1.5所示。

數據庫管理系統負責對數據庫進行全方位的管理,他包含了如圖1.6所示的幾項職責。

如圖1.6所示,一個數據庫管理系統通常要提供如下所示的幾項功能。

●定義數據庫結構:DBMS提供數據定義語言來定義(DDL)數據庫結構,用來搭建數據庫框架,並被保存在數據字典中。

●存取數據庫內容:DBMS提供數據操作語言(DML),實現對數據庫數據的基本存取操作——檢索、插入、修改和刪除。

●數據庫的運行管理:DBMS提供數據控制功能,即數據的安全性、完整性和並發控制等對數據庫運行進行有效的控制和管理,以確保數據正確有效。

●數據庫的建立和維護:包括數據庫出事數據的裝入,數據的轉儲、恢復、重組織,系統性能監視、分析等功能。

●數據庫的傳輸:DBMS提供處理數據的傳輸,實現用戶程序與DBMS之間的通信,通常與操作系統協調完成。

有了關系型數據庫管理系統,開發人員就可以在數據庫中創建數據庫、創建表、存取數據庫內容、對數據庫進行備份和管理,只需要理解常用的系統相關的操作,而不用去研究關系型數據庫系統內部深奧難懂的數學方方面的理論知識。

目前比較常見的DBMS有Oracle、SQL Server、Mysql、DB2等,它們都使用關系型數據庫模型作為基礎構建的軟件,它們建立在關系數據模型的基礎之上,通過一系列相關的表和其他數據庫,對象把現實世界中存在的事務及事務之間的聯系用數據庫對象,比如表、視圖、索引、關系加以存儲,使之為數據庫的用戶提供規范化的信息。

1.1.4  使用SQL語言管理數據庫

為了便於管理關系型數據庫,數據庫管理系統使用一種稱為SQL的聲明性語言。SQL的全稱是結構化查詢語言(Structured Query Language),是一種對關系數據庫中的數據進行定義和操作的句法。他獨立於數據庫管理系統,並且以經被國際標准化組織指定為一種操作數據庫的標准語言。SQL語言可以操作和管理數據庫,各種數據庫管理廠商使用SQL標准來定制自己的數據庫管理方式,因此它對於所有的數據庫管理系統來說是通用的。

●注意:由於不同的數據庫廠商對SQL語言的支持與標准仍然存在着細微的不同,因此在使用時必須要參加各個數據庫廠商提供的SQL操作文檔。

SQL語言是一種高級的非過程化編程語言。SQL語言允許用戶不了解數據庫的底層結構和具體的操作方式,只需要在一個標准化的、較高層次的數據結構上進行工作,這就大大簡化了數據庫的操作方式,同時因為不與數據庫、硬件等緊密耦合,因此也使得基於數據庫的應用系統具有很好的可移值性。其操作示意如圖1.7 所示。

由圖中可以看到,任何客戶端通過SQL語言來與數據庫管理系統進行通信,通過向服務器端發送SQL語句,數據庫管理系統將這些SQL語句轉換為實際的對數據庫數據進行操作的指令來對數據庫進行管理,這簡化了數據庫管理系統的復雜程度,提高了用戶對數據庫的使用效率。

SQL語言主要又分為如下6大類。

(1)數據查詢語言(DQL) :也稱為“數據檢索語句”,用於從表中獲得數據,確定數據怎樣在應用程序給出。關鍵字SELECT是DQL ( 也是所有SQL)用得最多的語句,其他DQL常用的關鍵字有WHERE、ORDER BY、GROUP BY和HAVING.這些DQL關鍵字常與其他類型的SQL語句一起使用。

(2)數據操作語言(DML) :分別用於添加、修改和刪除表中的行。也稱為動作查詢語言。

(3)事務處理語言(TPL) :能確保被DML語句影響的表的所有行及時得以更新。TPL語句包括BEGIN TRANSACTION、COMMIT和ROLLBACK.

(4)數據控制語言(DCL) :通過GRANT或REVOKE獲得許可,確定單個用戶和用戶組對數據庫對象的訪問。某些RDBMS可用GRANT或REVOKE控制對表單各列的訪問。

(5)數據定義語言(DDL):在數據庫中創建新表或刪除表(CREAT TABLE或DROP(5)數據定義語言(DDL):在數據庫中創建新表或刪除表(CREAT TABLE或DROP也是動作查詢的一部分。

(6)指針控制語言(CCL) :用於對一個或多個表的單獨行進行操作,比如DECLARECURSOR、FETCH INTO和UPDATE WHERE CURRENT等語句。

可以看到這些SQL語句基本上涵蓋了進行數據庫操作的方方面面,基本上學習數據庫操作多數時間都是在使用SQL語句進行管理,因此對於一名合格的DBA來說,熟練地掌握SQL語言是非常有必要的。


免責聲明!

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



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