數(shù)據(jù)庫使用什么數(shù)據(jù)結構 數(shù)據(jù)庫系統(tǒng)一般由哪三部分組成
數(shù)據(jù)庫的應用系統(tǒng)數(shù)據(jù)結構是什么?數(shù)據(jù)庫中常見的數(shù)據(jù)結構模型是哪些,數(shù)據(jù)庫系統(tǒng)的實現(xiàn)中采用了哪些常用的數(shù)據(jù)結構,數(shù)據(jù)庫索引文件一般采用什么數(shù)據(jù)結構?
本文導航
- 數(shù)據(jù)庫系統(tǒng)一般由哪三部分組成
- 數(shù)據(jù)庫三大經(jīng)典數(shù)據(jù)模型
- 數(shù)據(jù)庫系統(tǒng)的基本組成有哪些
- 數(shù)據(jù)庫建立索引的原則和目的
數(shù)據(jù)庫系統(tǒng)一般由哪三部分組成
看看你要找的這里有沒有?
※數(shù)據(jù)庫的概念與用途
?數(shù)據(jù)庫的概念
什么是數(shù)據(jù)庫呢?當人們從不同的角度來描述這一概念時就有不同的定義(當然是描述性的)。例如,稱數(shù)據(jù)庫是一個"記錄保存系統(tǒng)"(該定義強調了數(shù)據(jù)庫是若干記錄的集合)。又如稱數(shù)據(jù)庫是"人們?yōu)榻鉀Q特定的任務,以一定的組織方式存儲在一起的相關的數(shù)據(jù)的集合"(該定義側重于數(shù)據(jù)的組織)。更有甚者稱數(shù)據(jù)庫是"一個數(shù)據(jù)倉庫"。當然,這種說法雖然形象,但并不嚴謹。嚴格地說,數(shù)據(jù)庫是"按照數(shù)據(jù)結構來組織、存儲和管理數(shù)據(jù)的倉庫"。在經(jīng)濟管理的日常工作中,常常需要把某些相關的數(shù)據(jù)放進這樣"倉庫",并根據(jù)管理的需要進行相應的處理。例如,企業(yè)或事業(yè)單位的人事部門常常要把本單位職工的基本情況(職工號、姓名、年齡、性別、籍貫、工資、簡歷等)存放在表20.6.3中,這張表就可以看成是一個數(shù)據(jù)庫。有了這個"數(shù)據(jù)倉庫"我們就可以根據(jù)需要隨時查詢某職工的基本情況,也可以查詢工資在某個范圍內的職工人數(shù)等等。這些工作如果都能在計算機上自動進行,那我們的人事管理就可以達到極高的水平。此外,在財務管理、倉庫管理、生產管理中也需要建立眾多的這種"數(shù)據(jù)庫",使其可以利用計算機實現(xiàn)財務、倉庫、生產的自動化管理。
J.Martin給數(shù)據(jù)庫下了一個比較完整的定義:數(shù)據(jù)庫是存儲在一起的相關數(shù)據(jù)的集合,這些數(shù)據(jù)是結構化的,無有害的或不必要的冗余,并為多種應用服務;數(shù)據(jù)的存儲獨立于使用它的程序;對數(shù)據(jù)庫插入新數(shù)據(jù),修改和檢索原有數(shù)據(jù)均能按一種公用的和可控制的方式進行。當某個系統(tǒng)中存在結構上完全分開的若干個數(shù)據(jù)庫時,則該系統(tǒng)包含一個"數(shù)據(jù)庫集合"。
? 數(shù)據(jù)庫的優(yōu)點
使用數(shù)據(jù)庫可以帶來許多好處:如減少了數(shù)據(jù)的冗余度,從而大大地節(jié)省了數(shù)據(jù)的存儲空間;實現(xiàn)數(shù)據(jù)資源的充分共享等等。此外,數(shù)據(jù)庫技術還為用戶提供了非常簡便的使用手段使用戶易于編寫有關數(shù)據(jù)庫應用程序。特別是近年來推出的微型計算機關系數(shù)據(jù)庫管理系統(tǒng)dBASELL,操作直觀,使用靈活,編程方便,環(huán)境適應廣泛(一般的十六位機,如IBM/PC/XT,國產長城0520等均可運行種軟件),數(shù)據(jù)處理能力極強。數(shù)據(jù)庫在我國正得到愈來愈廣泛的應用,必將成為經(jīng)濟管理的有力工具。
數(shù)據(jù)庫是通過數(shù)據(jù)庫管理系統(tǒng)(DBMS-DATA BASE MANAGEMENT SYSTEM)軟件來實現(xiàn)數(shù)據(jù)的存儲、管理與使用的dBASELL就是一種數(shù)據(jù)庫管理系統(tǒng)軟件。
? 數(shù)據(jù)庫結構與數(shù)據(jù)庫種類
數(shù)據(jù)庫通常分為層次式數(shù)據(jù)庫、網(wǎng)絡式數(shù)據(jù)庫和關系式數(shù)據(jù)庫三種。而不同的數(shù)據(jù)庫是按不同的數(shù)據(jù)結構來聯(lián)系和組織的。
1.數(shù)據(jù)結構模型
(1)數(shù)據(jù)結構
所謂數(shù)據(jù)結構是指數(shù)據(jù)的組織形式或數(shù)據(jù)之間的聯(lián)系。如果用D表示數(shù)據(jù),用R表示數(shù)據(jù)對象之間存在的關系集合,則將DS=(D,R)稱為數(shù)據(jù)結構。例如,設有一個電話號碼簿,它記錄了n個人的名字和相應的電話號碼。為了方便地查找某人的電話號碼,將人名和號碼按字典順序排列,并在名字的后面跟隨著對應的電話號碼。這樣,若要查找某人的電話號碼(假定他的名字的第一個字母是Y),那么只須查找以Y開頭的那些名字就可以了。該例中,數(shù)據(jù)的集合D就是人名和電話號碼,它們之間的聯(lián)系R就是按字典順序的排列,其相應的數(shù)據(jù)結構就是DS=(D,R),即一個數(shù)組。
(2)數(shù)據(jù)結構種類
數(shù)據(jù)結構又分為數(shù)據(jù)的邏輯結構和數(shù)據(jù)的物理結構。數(shù)據(jù)的邏輯結構是從邏輯的角度(即數(shù)據(jù)間的聯(lián)系和組織方式)來觀察數(shù)據(jù),分析數(shù)據(jù),與數(shù)據(jù)的存儲位置無關。數(shù)據(jù)的物理結構是指數(shù)據(jù)在計算機中存放的結構,即數(shù)據(jù)的邏輯結構在計算機中的實現(xiàn)形式,所以物理結構也被稱為存儲結構。本節(jié)只研究數(shù)據(jù)的邏輯結構,并將反映和實現(xiàn)數(shù)據(jù)聯(lián)系的方法稱為數(shù)據(jù)模型。
目前,比較流行的數(shù)據(jù)模型有三種,即按圖論理論建立的層次結構模型和網(wǎng)狀結構模型以及按關系理論建立的關系結構模型。
2.層次、網(wǎng)狀和關系數(shù)據(jù)庫系統(tǒng)
(1)層次結構模型
層次結構模型實質上是一種有根結點的定向有序樹(在數(shù)學中"樹"被定義為一個無回的連通圖)。例如圖20.6.4是一個高等學校的組織結構圖。這個組織結構圖像一棵樹,校部就是樹根(稱為根結點),各系、專業(yè)、教師、學生等為枝點(稱為結點),樹根與枝點之間的聯(lián)系稱為邊,樹根與邊之比為1:N,即樹根只有一個,樹枝有N個。這種數(shù)據(jù)結構模型的一般結構見圖20.6.5所示。
圖20.6.4 高等學校的組織結構圖 圖20.6.5 層次結構模型
圖20.6.5中,Ri(i=1,2,…6)代表記錄(即數(shù)據(jù)的集合),其中R1就是根結點(如果Ri看成是一個家族,則R1就是祖先,它是R2、R3、R4的雙親,而R2、R3、R4互為兄弟),R5、R6也是兄弟,且其雙親為R3。R2、R4、R5、R6又被稱為葉結點(即無子女的結點)。這樣,Ri(i=1,2,…6)就組成了以R1為樹根的一棵樹,這就是一個層次數(shù)據(jù)結構模型。
按照層次模型建立的數(shù)據(jù)庫系統(tǒng)稱為層次模型數(shù)據(jù)庫系統(tǒng)。IMS(Information Manage-mentSystem)是其典型代表。
(2)網(wǎng)狀結構模型?
在圖20.6.6中,給出了某醫(yī)院醫(yī)生、病房和病人之間的聯(lián)系。即每個醫(yī)生負責治療三個病人,每個病房可住一到四個病人。如果將醫(yī)生看成是一個數(shù)據(jù)集合,病人和病房分別是另外兩個數(shù)據(jù)集合,那么醫(yī)生、病人和病房的比例關系就是M:N:P(即M個醫(yī)生,N個病人,P間病房)。這種數(shù)據(jù)結構就是網(wǎng)狀數(shù)據(jù)結構,它的一般結構模型如圖20.6.7所示。在圖中,記錄Ri(i=1,2,8)滿足以下條件:
①可以有一個以上的結點無雙親(如R1、R2、R3)。
②至少有一個結點有多于一個以上的雙親。在"醫(yī)生、病人、病房"例中,"醫(yī)生集合有若干個結點(M個醫(yī)生結點)無"雙親",而"病房"集合有P個結點(即病房),并有一個以上的"雙親"(即病人)。
圖20.6.6 醫(yī)生、病房和病人之間的關系
圖20.6.7 網(wǎng)狀結構模型
按照網(wǎng)狀數(shù)據(jù)結構建立的數(shù)據(jù)庫系統(tǒng)稱為網(wǎng)狀數(shù)據(jù)庫系統(tǒng),其典型代表是DBTG(Data Base Task Group)。用數(shù)學方法可將網(wǎng)狀數(shù)據(jù)結構轉化為層次數(shù)據(jù)結構。
(3)關系結構模型
關系式數(shù)據(jù)結構把一些復雜的數(shù)據(jù)結構歸結為簡單的二元關系(即二維表格形式)。例如某單位的職工關系就是一個二元關系(見表20.6.8)。這個四行六列的表格的每一列稱為一個字段(即屬性),字段名相當于標題欄中的標題(屬性名稱);表的每一行是包含了六個屬性(工號、姓名、年齡、性別、職務、工資)的一個六元組,即一個人的記錄。這個表格清晰地反映出該單位職工的基本情況。
表20.6.8 職工基本情況
通常一個m行、n列的二維表格的結構如表20.6.9所示。
表中每一行表示一個記錄值,每一列表示一個屬性(即字段或數(shù)據(jù)項)。該表一共有m個記錄。每個記錄包含n個屬性。
作為一個關系的二維表,必須滿足以下條件:
(1)表中每一列必須是基本數(shù)據(jù)項(即不可再分解)。
(2)表中每一列必須具有相同的數(shù)據(jù)類型(例如字符型或數(shù)值型)。
(3)表中每一列的名字必須是唯一的。
(4)表中不應有內容完全相同的行。
(5)行的順序與列的順序不影響表格中所表示的信息的含義。
由關系數(shù)據(jù)結構組成的數(shù)據(jù)庫系統(tǒng)被稱為關系數(shù)據(jù)庫系統(tǒng)。
在關系數(shù)據(jù)庫中,對數(shù)據(jù)的操作幾乎全部建立在一個或多個關系表格上,通過對這些關系表格的分類、合并、連接或選取等運算來實現(xiàn)數(shù)據(jù)的管理。dBASEII就是這類數(shù)據(jù)庫管理系統(tǒng)的典型代表。對于一個實際的應用問題(如人事管理問題),有時需要多個關系才能實現(xiàn)。用dBASEII建立起來的一個關系稱為一個數(shù)據(jù)庫(或稱數(shù)據(jù)庫文件),而把對應多個關系建立起來的多個數(shù)據(jù)庫稱為數(shù)據(jù)庫系統(tǒng)。dBASEII的另一個重要功能是通過建立命令文件來實現(xiàn)對數(shù)據(jù)庫的使用和管理,對于一個數(shù)據(jù)庫系統(tǒng)相應的命令序列文件,稱為該數(shù)據(jù)庫的應用系統(tǒng)。因此,可以概括地說,一個關系稱為一個數(shù)據(jù)庫,若干個數(shù)據(jù)庫可以構成一個數(shù)據(jù)庫系統(tǒng)。數(shù)據(jù)庫系統(tǒng)可以派生出各種不同類型的輔助文件和建立它的應用系統(tǒng)。
? 數(shù)據(jù)庫的要求與特性
為了使各種類型的數(shù)據(jù)庫系統(tǒng)能夠充分發(fā)揮它們的優(yōu)越性,必須對數(shù)據(jù)庫管理系統(tǒng)的使用提出一些明確的要求。
1.建立數(shù)據(jù)庫文件的要求
(1)盡量減少數(shù)據(jù)的重復,使數(shù)據(jù)具有最小的冗余度。計算機早期應用中的文件管理系統(tǒng),由于數(shù)據(jù)文件是用戶各自建立的,幾個用戶即使有許多相同的數(shù)據(jù)也得放在各自的文件中,因而造成存儲的數(shù)據(jù)大量重復,浪費存儲空間。數(shù)據(jù)庫技術正是為了克服這一缺點而出現(xiàn)的,所以在組織數(shù)據(jù)的存儲時應避免出現(xiàn)冗余。
(2)提高數(shù)據(jù)的利用率,使眾多用戶都能共享數(shù)據(jù)資源。
(3)注意保持數(shù)據(jù)的完整性。這對某些需要歷史數(shù)據(jù)來進行預測、決策的部門(如統(tǒng)計局、銀行等)特別重要。
(4)注意同一數(shù)據(jù)描述方法的一致性,使數(shù)據(jù)操作不致發(fā)生混亂。如一個人的學歷在人事檔案中是大學畢業(yè),而在科技檔案中卻是大學程度,這樣就容易造成混亂。
(5)對于某些需要保密的數(shù)據(jù),必須增設保密措施。
(6)數(shù)據(jù)的查找率高,根據(jù)需要數(shù)據(jù)應能被及時維護。
2.數(shù)據(jù)庫文件的特征
無論使用哪一種數(shù)據(jù)庫管理系統(tǒng),由它們所建立的數(shù)據(jù)庫文件都可以看成是具有相同性質的記錄的集合,因而這些數(shù)據(jù)庫文件都有相同的特性:
(1)文件的記錄格式相同,長度相等。
(2)不同的行是不同的記錄,因而具有不同的內容。
(3)不同的列表示不同的字段名,同一列中的數(shù)據(jù)的性質(屬性)相同。
(4)每一行各列的內容是不能分割的,但行的順序和列的順序不影響文件內容的表達。
3.文件的分類
對文件引用最多的是主文件和事物文件。其他的文件分類還包括表文件、備份文件、檔案的輸出文件等。下面將講述這些文件。
(1)主文件。主文件是某特定應用領域的永久性的數(shù)據(jù)資源。主文件包含那些被定期存取以提供信息和經(jīng)常更新以反映最新狀態(tài)的記錄。典型的主文件有庫存文件、職工主文件和收帳主文件等。
(2)事務文件。事務文件包含著作為一個信息系統(tǒng)的數(shù)據(jù)活動(事務)的那些記錄。這些事務被分批以構成事務文件。例如,從每周工資卡上錄制下來的數(shù)分批存放在一個事務文件上,然后對照工資清單文件進行處理以便打印出工資支票和工資記錄簿。
(3)表文件。表文件是一些表格。之所以單獨建立表文件而不把表設計在程序中是為了便于修改。例如,一個公用事業(yè)公司的稅率表或國內稅務局的稅率就可以存儲在表中文件。
(4)備用文件。備用文件是現(xiàn)有生產性文件的一個復制品。一旦生產性文件受到破壞,利用備用文件就可以重新建立生產性文件。
(5)檔案文件。檔案文件不是提供當前處理使用的,而是保存起來作為歷史參照的。例如,國內稅務局(IRS)可能要求檢查某個人最近15年的歷史。實際上,檔案文件恰恰是在給定時間內工作的一個"快照"。
(6)輸出文件。輸出文件包含將要打印在打印機上的、顯在屏幕上的或者繪制在繪圖儀上的那些信息的數(shù)值映象。輸出文件可以是"假脫機的"(存儲在輔存設備上),當輸出設備可
用時才進行實際的輸出。
數(shù)據(jù)庫三大經(jīng)典數(shù)據(jù)模型
3種,層次模型(Hierarchical Model)、網(wǎng)狀模型(Network Model)和關系模型(Relational Model)
數(shù)據(jù)庫系統(tǒng)的基本組成有哪些
數(shù)據(jù)庫索引文件采用數(shù)據(jù)結構概述:1、非主鍵索引需要在數(shù)據(jù)表本身的存儲空間外額外開銷存儲空間,所以在更新的時候可能不僅要更新數(shù)據(jù)表本身,還要更新非主鍵索引,更新內容更多了,所以導致速度降低。反過來,如果數(shù)據(jù)表中的數(shù)據(jù)按照主鍵索引的順序存儲,更新的時候就沒有額外的開銷。非主鍵索引對提高查詢速度來講,主要的方面是:檢索的條件(where...)如果命中對應的非主鍵索引的話,就不需要對數(shù)據(jù)表做全表掃描,效率肯定是大大提高。(索引的創(chuàng)建和使用是數(shù)據(jù)庫設計和優(yōu)化的重要部分,是一個數(shù)據(jù)庫程序員的必修課,不同數(shù)據(jù)庫系統(tǒng)的語法不同,但是原理基本相同);2、如果檢索結果的字段包含在非主鍵索引中,即使對非主鍵索引做全掃描,也比對整表字段做全掃描快,因為只有非主鍵索引本身的數(shù)據(jù)需要從存儲設備調入內存,節(jié)約了IO時間。3、不過一般說索引對查詢速度的影響,主要指第一種情況。關于數(shù)據(jù)庫索引的數(shù)據(jù)結構,大多數(shù)數(shù)據(jù)庫都是采用B樹??蓞⒄瘴恼拢悍侵麈I索引需要在數(shù)據(jù)表本身的存儲空間外額外開銷存儲空間,所以在更新的時候可能不僅要更新數(shù)據(jù)表本身,還要更新非主鍵索引,更新內容更多了,所以導致速度降低。反過來,如果數(shù)據(jù)表中的數(shù)據(jù)按照主鍵索引的順序存儲,更新的時候就沒有額外的開銷。非主鍵索引對提高查詢速度來講,主要的方面是:檢索的條件(where...)如果命中對應的非主鍵索引的話,就不需要對數(shù)據(jù)表做全表掃描,效率肯定是大大提高。(索引的創(chuàng)建和使用是數(shù)據(jù)庫設計和優(yōu)化的重要部分,是一個數(shù)據(jù)庫程序員的必修課,不同數(shù)據(jù)庫系統(tǒng)的語法不同,但是原理基本相同);另一方面,也有如下的可能:如果檢索結果的字段包含在非主鍵索引中,即使對非主鍵索引做全掃描,也比對整表字段做全掃描快,因為只有非主鍵索引本身的數(shù)據(jù)需要從存儲設備調入內存,節(jié)約了IO時間。不過一般說索引對查詢速度的影響,主要指第一種情況。
數(shù)據(jù)庫建立索引的原則和目的
關于數(shù)據(jù)庫索引的數(shù)據(jù)結構,大多數(shù)數(shù)據(jù)庫都是采用B樹。
1、非主鍵索引需要在數(shù)據(jù)表本身的存儲空間外額外開銷存儲空間,所以在更新的時候可能不僅要更新數(shù)據(jù)表本身,還要更新非主鍵索引,更新內容更多了,所以導致速度降低。反過來,如果數(shù)據(jù)表中的數(shù)據(jù)按照主鍵索引的順序存儲,更新的時候就沒有額外的開銷。
2、非主鍵索引對提高查詢速度來講,主要的方面是:檢索的條件(where...)如果命中對應的非主鍵索引的話,就不需要對數(shù)據(jù)表做全表掃描,效率肯定是大大提高。(索引的創(chuàng)建和使用是數(shù)據(jù)庫設計和優(yōu)化的重要部分,是一個數(shù)據(jù)庫程序員的必修課,不同數(shù)據(jù)庫系統(tǒng)的語法不同,但是原理基本相同)。
3、如果檢索結果的字段包含在非主鍵索引中,即使對非主鍵索引做全掃描,也比對整表字段做全掃描快,因為只有非主鍵索引本身的數(shù)據(jù)需要從存儲設備調入內存,節(jié)約了IO時間。
擴展資料:
1、選擇唯一性索引 唯一性索引的值是唯一的,可以更快速的通過該索引來確定某條記錄。例如,學生表中學號是具有唯 一性的字 段。為該字段建立唯一性索引可以很快的確定某個學生的信息。如果使用姓名的話,可能存 在同名現(xiàn)象, 從而降低查詢速度。
2、盡量使用數(shù)據(jù)量少的索引 如果索引的值很長,那么查詢的速度會受到影響。例如,對一個CHAR(100)類型的字段進行全文檢索 需要的時間肯定要比對CHAR(10)類型的字段需要的時間要多。
3、盡量使用前綴來索引 如果索引字段的值很長,最好使用值的前綴來索引。例如,TEXT和BLOG類型的字段,進行全文檢 索會很浪費時 間。如果只檢索字段的前面的若干個字符,這樣可以提高檢索速度。