目錄 1、認識關係型資料庫 1.1.1 什麼是關係型資料庫 1.1.2 實體關係模型 1.1.3 關係型資料庫管理系統RDBMS 1.1.4 使用SQL語言管理資料庫 1、認識關係型資料庫 資料庫簡而言之就是數據的集合,它是由文件系統存儲數據發展起來的,資料庫系統解決了多人資料庫讀取和寫入的併發性問 ...
目錄
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語言是非常有必要的。