數據庫的基本概念

數據庫的基礎

1.1、數據庫基本概念

數據:描述事物的符號記錄,可以使數字,也可以是文字、圖形、圖像、聲音、語言等,數據有多種形式,它們都可以經過數字化後存入計算機。數據的含義稱爲數據的語義,數據與語義是不可分的。

數據庫:存儲數據的倉庫,是長期存放在計算機內、有組織、可共享的大量數據的集合。數據庫中的數據按照一定數據模型組織、描述和存儲,具有較小的冗餘度,較高的獨立性和易擴展性,併爲各種用戶共享,即數據庫有永久存儲、有知識和可共享三個基本特點。

數據庫管理系統(DBMS):是位於用戶與操作系統之間的一層數據管理軟件。它的主用功能包括:

  1. 數據定義功能:提供數據定義語言(DDL),讓用戶方便地對數據庫中數據對象進行定義。
  2. 數據組組織、存儲和管理:要提高存儲空間利用率和存儲效率。
  3. 數據操縱功能:提供數據操縱語言(DML),實現對數據庫基本操作,如增刪改查等。
  4. 數據庫的建立和維護功能:統一管理控制,以保證安全、完整、多用戶併發使用。
  5. 其它功能:與網絡中其它軟件系統通信功能,異構數據庫之間的互訪和互操作功能。

數據庫系統的特點:

  1. 數據結構化:實現整體數據的結構化,也是數據庫系統與文件系統的本質區別。數據庫中數據不再僅僅針對某一個應用,而是面向全組織,不僅內部是結構化的,而且整體是結構化的。在文件系統中,文件內部有某些結構,但文件間沒有聯繫,而關係數據庫中,關係表之間的聯繫可用參照完整性來表達。
  2. 數據共享性高,冗餘度低,易擴充。
  3. 數據獨立性高:包括數據的物理獨立性和邏輯獨立性。物理獨立性指用戶的應用程序跟存儲在磁盤上的數據庫中數據是相互獨立的,數據庫中數據存取是由DBMS管理的。數據獨立性是由DBMS的二級映像功能來保證的。
  4. 數據由DMBS統一管理和控制。

數據模型:是對現實世界數據特徵的抽象,是對現實世界的模擬,是數據庫系統的核心和基礎。數據模型應滿足三方面需求:1.真是模擬現實世界;2.容易爲人理解;3.便於在計算機上實現。數據模型按應用目的分爲兩類:

概念模型:按用戶觀點對數據和信息建模,主要用於數據庫設計,也稱信息模型。

邏輯模型和物理模型:邏輯模型是按計算機觀點對數據建模,主要包括層次模型、網絡模型、關係模型、面向對象模型、對象關係模型;物理模型是對數據最底層的抽象,它描述數據在系統內部的表示方式和存取方法。

數據模型通常由數據結構、數據操作和完整性約束三部分組成,是嚴格定義的一組概念的集合,精確的描述了系統的靜態特寫、動態特性和完整性約束條件。

關係數據庫的完整性:實體完整型、參照完整性、用戶自定義完整性,其中實體完整性和參照完整性是關係模型必須滿足的完整性約束條件,被稱作關係的兩個不變特性。

實體完整性規則:若A是關係R的主屬性,則A不能取控制,即主屬性不能爲空。

參照完整性規則:如F是關係R的外碼,參照關係S的主碼K,則R中每個元祖在F上的值必須爲S中某個元祖的主碼值或空值,即外碼要麼是參照的主碼值要麼是空值。

概念模型用於信息世界的建模,是現實世界到信息世界的第一層抽象,是數據庫設計人員進行數據庫設計的有力的工具,也是設計人員與用戶之間進行交流的語言。信息世界涉及的概念主要有:

  1. 實體(Entity):客觀存在並可相互區別的事物成爲實體。可以是人、事、物,也可以是抽象的概念和聯繫。
  2. 屬性(Attribute):實體所具有的某一特性。一個實體可以又若干個屬性來刻畫。
  3. 碼(Key):唯一標識實體的屬性集。
  4. 域(Domain):域是一組具有相同數據類型的值的集合。屬性的取值範圍來自某個域。
  5. 實體型(Entity Type):具有相同屬性的實體必然具有共同的特徵和性質。用實體名和屬性名集合來抽象和刻畫同類實體,稱爲實體型。
  6. 實體集(Entity Set):同一類型實體的集合。
  7. 聯繫(Relationship):實體內部和實體之間的聯繫。實體之間的聯繫有一對一,一對多、多對多三種。

概念模型的一種表示方法:實體-聯繫方法,E-R圖:提供了表示實體型、屬性和聯繫的方法:實體型:用矩形表示,矩形框內寫實體名;屬性:用橢圓表示,並用無向邊將其與對應的實體型連接起來;聯繫:用菱形表示,框內寫明聯繫名,並用無向邊與有關實體型連接起來,同時在無向邊上標上聯繫的類型(1:1,1:n,m:n)。聯繫也可以有屬性。

1.2、數據庫的三級模式、兩級映像

數據模型中有“型”和“值”的概念,如:學生(學號,性別,班級)是“型”,而:張三(20160310001,1,3年2班)是“值”。

模式(Schema)是數據庫中全體數據的邏輯結構和特徵的描述,它僅僅描述型,而並不包括值。模式的值稱爲模式的一個實例(Instance),同一個模式可以有多個實例。雖然實際的DBMS系統種類很多,他們支持的數據模式不盡相同,使用不同的語言,建立在不同的OS上,數據的存儲結構也各不相同,但他們在體系結構上通常具有相同的特徵,即採用三級模式結構並提供兩級映像功能。

1.2.1、三級模式

數據庫的三級模式結構是指:數據庫系統是由外模式、模式和內模式三級構成。如下圖:

           

模式(Schema)
模式也稱爲:邏輯模式,它是DB中全體數據的邏輯結構和特徵的描述,是所有用戶的公共數據視圖。模式層是數據庫模式結構的中間層,既不涉及到數據的物理存儲細節和硬件環境,也與具體的應用程序、應用開發工具以及高級程序設計語言無關(C、C++、JAVA等)。模式就是數據庫數據在邏輯上的視圖,且一個數據庫只有一個模式。實際工作中,模式就等同於程序員創建一個具體的數據庫的全部操作,如:這是一個MySQL數據庫,有2張表,每個表的名字,屬性的名字、類型、取值範圍,主鍵,外鍵,索引,其他完整性約束等等。DBMS提供模式描述語言(模式DDL)來嚴格地定義模式。

外模式
外模式也稱爲:子模式(subschema)/用戶模式,它是數據庫用戶(應用程序員、最終用戶)能夠看到的使用的局部數據的邏輯結構和特徵的描述,是數據庫的數據視圖,是與某一個應用有關的數據的邏輯表示。外模式通常是模式的子集。一個數據庫可以有多個外模式同一個外模式可以爲某一用戶的多個應用系統所使用,但一個應用系統只能使用一個外模式外模式是保證數據庫安全性的一個有力措施。每個用戶只能看見和訪問所對應的外模式中的數據,數據庫中的其餘數據是不可見的。DBMS提供子模式描述語言(子模式DDL)來嚴格地定義子模式。

內模式
內模式也稱爲:存儲模式(Storage schema),一個數據庫只有一個內模式。它是數據庫物理結構和存儲方式的描述,是數據在數據庫內部的表示方式。如:記錄的存儲方式是堆存儲,還是按照某些屬性值的升(降)存儲,還是按照屬性值聚簇(cluster)存儲;索引按照什麼方式組織,是B+樹索引,還是hash索引等等。DBMS提供內模式描述語言(內模式DDL/存儲模式DDL)來嚴格定義內模式。

三級模式在關係型數據庫的對應實現

三級模式是數據庫系統通常採用的結構,但這並不意味着你必須按照三級模式結構設想的那樣來編程。這是因爲,各種類型數據庫(層次、網狀、關係)和各個具體數據庫對三級模式的提供的支持是不完善和不一致的。可以看到三級模式都是DDL(DataDefinition language)來定義的,那麼在RDBMS中三種模式的定義都包含在可以使用的DDL語句中:

外模式(DDL中的Subschema DDL部分)
在RDBMS中就只有一個視圖(View)來支持 。當然視圖提供的也只是一定程度的數據邏輯獨立性。因爲對於視圖的更新是有條件的,因此當應用程序有需要修改數據的語句時,仍然不得不去操作基本表。所以如果基本表改變了,那麼應用程序還是要變。

模式(DDL中的Schema DDL部分)
模式就是基本表,但我覺得除了視圖和索引組織方式等等之外都是模式的範圍。表、字段、索引、存儲過程、觸發器等等

內模式(DDL中的Storage DDL部分)
內模式是存儲文件,但存儲文件的存儲方式和結構可以被定義,這一部分能操作的情況比較少,舉一個例子如MySQL中創建table並且制定使用MEMORY引擎、使用hash索引。
   CREATE TABLE testhash ( 

       fnameVARCHAR(50) NOT NULL, 

       lnameVARCHAR(50) NOT NULL, 

       KEY USINGHASH(fname) 

   )ENGINE=MEMORY;

1.2.2、二級映像功能

數據庫的3級模式是對數據的3個抽象級別。它使得用戶能夠邏輯地抽象地處理數據,而不必再去關心數據在計算機中的具體表示方式與存儲方式。實際上,爲了能夠實現在這3個抽象層次之間的聯繫和轉換,DBMS在這三級模式之間設計了兩層映像:

  • 外模式/模式映像
  • 模式/內模式映像

這兩層映像保證了數據庫中的數據能夠具有較高的邏輯獨立性和物理獨立性。

1、外模式/模式映像

由上可知:一個DB只有一個模式,但可以有多個外模式。所以,對於每一個外模式,數據庫系統都有一個外模式/模式映像,它定義了這個外模式與模式的對應關係。外模式的描述中通常包含了這些映像的定義。當模式改變時(增加新的關係、新的屬性、改變屬性的數據類型等),由數據庫管理員對各個外模式/模式映像作相應的改變,可以使得外模式保持不變。而又由於應用程序應該是依據外模式編寫的,從而應用程序不必修改,這就保證了數據與程序的邏輯獨立性。

總結:外模式/模式映像保證了當模式改變時,外模式不用變 — 邏輯獨立性。

2、模式/內模式映像
由上可知:一個DB只有一個模式,也只有一個內模式,所有模式/內模式映像是唯一的,它定義了數據全局邏輯結構與存儲結構之間的對應關係。當數據庫的存儲結構改變時(例如選用了另一個存儲結構),由數據庫管理員對模式/內模式映像作出相應的改變,可以使得模式保持不變,從而應用程序也不必改變。這就保證了數據和程序的物理獨立性。

總結:模式/內模式映像保證了當內模式改變時,模式不用變 — 物理獨立性。

1.3、主碼、外碼、候選碼、超碼

碼是數據系統中的基本概念。所謂碼就是能唯一標識實體的屬性,它是整個實體集的性質,而不是單個實體的性質。

1、超碼
超碼是一個或多個屬性的集合,這些屬性可以讓我們在一個實體集中唯一地標識一個實體。如果K是一個超碼,那麼K的任意超集也是超碼,也就是說如果K是超碼,那麼所有包含K的集合也是超碼。

2、候選碼
候選碼是從超碼中選出的,自然地候選碼也是一個或多個屬性的集合。因爲超碼的範圍太廣,很多是我們並不感興趣即無用處的。所以候選碼是最小超碼,它們的任意真子集都不能成爲超碼。

3、 主碼
主碼是從多個候選碼中選出的,如果候選碼只有一個,那麼候選碼就是主碼。在一個關係(表)中,主碼不一定只有一個,但是一定要有的,在一個關係中,不同元組的主碼一定不能爲空,且值一定要不同。主碼又稱爲主鍵。

4、外碼
如果一個關係中的一個屬性是另外一個關係中的主碼則這個屬性爲外碼。外碼的值要麼爲空,要麼要爲其對應的主碼中的一個值。外碼又被稱爲外鍵。



發佈了33 篇原創文章 · 獲贊 10 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章