程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> 數據庫的結構---VB數據庫入門之(二)

數據庫的結構---VB數據庫入門之(二)

編輯:VB綜合教程
從前面的介紹可以看出,可以為各種類型的數據庫管理系統編寫VisualBasic前端。事實上,使用ODBC驅
  動程序,可以建立與幾乎任何數據庫管理系統連接的應用程序。這一節中,將介紹可以與VisualBasic數據庫應用程序一起使用的幾種數據庫管理系統。
  
  普通的關系數據庫管理系統
  普通的關系數據庫管理系統(RDBMS)一般是指傳統的桌面RDBMS,以dBASE,Paradox為代表,這類數據庫系統對每個表和索引使用單獨的文件,並使用定長的記錄。建立數據庫時,可以指定每個字符(Character)數據類型字段的最大尺寸,當字段的值最大尺寸小時,多余的字符位置用空白填充。與dBASE,Paradox不同,Btrieve表提供變長錄字段,當字段內的數據長度變化較大時,變長字符字段可以節省大量的磁盤空間。如果磁盤上的某個目錄中含有多個信息文件(.INF),則應為每個信息文件中的每個表指定所使用的索引。信息文件的擴展名為,INF,其文件名與表(庫)文件名相同。對於dBASEFoxko需要使用.INF文件,而對Paradox或Btrieve來說則不需要。在建立一個dBASEFoxno表時,visualBasic自動建立.INF文件。為了與.DBF文件一起使用已有的.MDX或.NDX索引文件,可以用文本編輯器(如“記事本”)建立.INF文件。
  
  客戶/服務器數據庫管理系統
  講入90年代以後,由於大型機和小型機數據庫管理系統的用戶希望“削減”其信息系統的開支,用相對廉價的文件服務器(多數基於PC體系結構)來代替維護費用十分高昂的大型機,小型機硬件及數據庫軟件產品,從而導致客戶/服務器數據庫市場迅速擴大。前端是伴隨客戶/服務器數據庫管理系統出現的,前端指的是在工作站上運行的客戶程序,而工作站則與局域網絡(LAN)或廣域網絡(WAN)上的服務器(後端)相連。分布式客戶/服務器系統是今後的主要發展趨勢。在分布式數據庫系統中,含有滿足查詢條件的數據的表,這些表可以放在不同的服務器中,而服務器可以放在廣域網的不同地方。在客戶/服務器的RDBMS中,服務器部分的操作系統與客戶機上的操作系統可以相問,也可以不同。在實際的客戶/服務器系統中,不相同的情況可能占多數。客戶/服務器系統與桌面數據庫管理系統有很大的不同,其中最主要的區別是所有由前端應用程序發出的SQL語句都在服務器上執行,即服務器負責執行所有由工作站送入服務器的SQL語句。如果從工作站上向服務器發出一個肋Select查詢,則只有滿足查詢條件的記錄被返回到客戶工作站。此外,服務器還處理與並行性、一致性有關的問題。如果服務器不能完成工作站發出的查詢操作,則向工作站返回一個出錯信息。
  大多數客戶/服務器RDBMS把所有的數據庫存儲在一個文件中。必要時,文件可在服務器計算機之間進行劃分,但服務器的操作系統仍把分開的文件作為一個文件處理。客戶/服務器RDBMS還具有其它復雜的功能,例如支持事務記錄。當出現重大的硬件或軟件故障而導致系統崩潰時,事務記錄可以使數據庫重建。此外,目前大多數客戶/服務器系統使用硬盤陣列和鏡象硬盤,這樣可以減少由於某個硬盤驅動器出現故障而造成停機的可能性。為了把VisualBasic數據庫應用程序與客戶/服務器相連接,最簡單的辦法是使用合適的ODBC驅動程序。
  
  Microsoft數據庫管理系統Access
  MicrosoftAccess也是一種桌面數據庫管理系統,但它與傳統的桌面數據庫管理系統完全不一樣。Access是VisualBasic的內部數據庫,即缺省數據庫類型。這裡的“內部”有兩方面的含義:一是用Access建立的數據庫(.MDB)可以在VisualBasic中使用;二是用Visualbasic可以直接建立Access數據庫。因此,在VisualBasic中,“Access數據庫”和“VisualBasic數據庫”含義相同。Access數據庫文件的結構是以MicrosoftSQLServer數據庫文件結構為基礎的特點主要包括:
  (1)一個數據庫的所有表和索引都存儲在一個.MDB文件中,Text(文本)、Memo(備注)和OLEObject(OLE對象)等數據類型字段的長度都是可變的,Access調整數據字段的大小以容納相應的數據類型。
  (2)數據字段可以含有時間信息,Date類型的字段對應於SQL—92的Timestamp數據類型,但不以Timestamp的格式存儲。
  (3)Access支持空值,即Null(與空字符串不同)。Null是VisualBasic的保留字,用它來指明表的數據單元中沒有數據進入。所有的客戶/服務器數據庫都支持Null值,但除了Access外,其它桌面數據庫幾乎都不支持Null值。
  (4)在Access中,Memo字段作為Text類型來處理,其長度可達1.2GB。
  (5)可以在Access中存儲QueryDef(查詢定義)對象,它與被編譯為SQLServer存儲過程的SQLSELECT語句類似。
  (6)Access提供了長二進制(LargeBinary)對象(BLOB),其大小僅受數據庫大小的限制,不受.MDB文件結構的限制;而數據庫的大小僅受硬盤容量的限制。可以在Access表的BLOB字段中存儲任何類型的數據(包括多媒體數據),並可用GetChunk和Append方法對BLOB字段的數據進行讀寫操作。
  (7)Access數據庫具有較強的安全性。
  以上介紹了可以在VisualBasic中使用的幾種數據庫管理系統。實際上,如果有合適的軟件和硬件,包括網關(Gateway)和中間件(Middleware),則可以連接流行的大型機和小型機RDBMS,如IBM的DB2、DigitalEqipment的Rdb等。除網關外,還應為需要連接的大型機或小型機數據庫選擇合適的ODBC驅動程序。
  
  下面我們著重介紹一下數據庫的結構。數據庫是相關數據的集合,一個數據庫含有各種成分,包括表、記錄、字段、索引等。
  1.數據庫(Database)
  VisualBasic中使用的數據庫是關系型數據庫(RelationalBatabase)。一個數據庫由一個或一組數據表組成。每個數據庫都以文件的形式存放在磁盤上,即對應於一個物理文件。不同的數據庫,與物理文件對應的方式也不一樣。對於dBASE,FoxPro和Paradox格式的數據庫來說,一個數據表就是一個單獨的數據庫文件,而對於MicrosoftAccess、Btrieve格式的數據庫來說,一個數據庫文件可以含有多個數據表。
  2.數據表(Table)
  簡稱表,由一組數據記錄組成,數據庫申的數據是以表為單位進行組織的。一個表是一組相關的按行排列的數據;每個表中都含有相同類型的信息。表實際上是一個二維表格,例如,一個班所有學生的考試成績,可以存放在一個表中,表中的每一行對應一個學生,這一行包括學生的學號,姓名及各門課程成績。
  3.記錄(Record)
  表中的每一行稱為一個記錄,它由若干個字段組成。
  4.字段(Field)
  也稱域。表中的每一列稱為一個字段。每個字段都有相應的描述信息,如數據類型、數據寬度等。
  5.索引(Index)
  為了提高訪問數據庫的效率,可以對數據庫使用索引。當數據庫較大時,為了查找指定的記錄,則使用索引和不使用索引的效率有很大差別。索引實際上是一種特殊類型的表,其中含有關鍵字段的值(由用戶定義)和指向實際記錄位置的指針,這些值和指針按照特定的順序(也由用戶定義)存儲,從而可以以較快的速度查找到所需要的數據記錄。
  6.查詢(Query)
  一條SQL(結構化查詢語言)命令,用來從一個或多個表中獲取一組指定的記錄,或者對某個表執行指定的操作。當從數據庫中讀取數據時,往往希望讀出的數據符合某些條件,並且能按某個字段排序。使用SQL,可以使這一操作容易實現而且更加有效。SQL是非過程化語言(有人稱為第四代語言),在用它查找指定的記錄時,只需指出做什麼,不必說明如何做。每個語句可以看作是一個查詢(query),根據這個查詢,可以得到需要的查詢結果。
  7.過濾器(Filter)
  過濾器是數據庫的一個組成部分,它把索引和排序結合起來,用來設置條件,然後根據給定的條件輸出所需要的數據。
  8.(view)
  數據的視圖指的是查找到(或者處理)的記錄數和顯示(或者進行處理)這些記錄的順序。在一般情況下,視圖由過濾器和索引控制。
  下一節我們將用VB編一個簡單的浏覽數據庫的程序。事實上這個例子並不需要編寫代碼,只是調用VB的固有控件,你將深刻體會到用VB編程的簡單易學,功能強大。(未完待續)->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved