第2章資料庫管理系統2-1ANSI/SPARC三層資料庫系統架構2-2資料庫綱要2-3資料庫管理系統2-4資料庫管理師2-5資料庫系統的優缺點2-1ANSI/SPARC三層資料庫系統架構-說明目前大部分巿面上的資料庫系統都是使用ANSI/SPARC三層資料庫系統架構,這是由「ANSI」(AmericanNationalStandardsInstitute)和「SPARC」(StandardsPlanningAndRequirementsCommittee)制定的資料庫系統架構。雖然ANSI/SPARC三層資料庫系統架構從未正式成為官方的標準規格,不過它是目前被廣泛接受的資料庫系統架構。2-1ANSI/SPARC三層資料庫系統架構-圖例2-1ANSI/SPARC三層資料庫系統架構-概念層概念層(ConceptualLevel)在概念層看到的是整個資料庫儲存的資料,這是資料庫管理師觀點所看到的完整資料庫。因為是概念上的資料庫,所以並不用考量資料實際的儲存結構,因為這部分屬於內部層(InternalLevel)的問題。以Access資料庫來說,在概念層看見的是【資料表】物件的清單和【資料工作表】以二維表格方式顯示的記錄資料。2-1ANSI/SPARC三層資料庫系統架構-外部層外部層(ExternalLevel)在外部層看到的是使用者觀點(UserViews)的資料,代表不同使用者在資料庫系統所看見的資料,通常只有部分資料庫的資料。對於資料庫系統的使用者來說,其面對的是外部層,包含多種不同觀點的資料。例如:一所大學或技術學院,可以提供多種不同使用者觀點,如下所示:使用者觀點1:學生註冊資料使用者觀點2:學生選課資料使用者觀點3:學生成績單資料2-1ANSI/SPARC三層資料庫系統架構-外部層內部層(InternalLevel)內部層是以實際儲存觀點所呈現的資料,這是實際儲存在磁碟等儲存裝置的資料,內部層在三層架構中扮演資料庫管理系統與作業系統的介面。2-2資料庫綱要2-2-1資料庫綱要的基礎2-2-2三層資料庫綱要2-2資料庫綱要ANSI/SPARC三層資料系統架構是探討資料庫管理系統的角度,針對不同使用觀點來說明其管理的資料。現在轉換主題到資料庫本身,在資料庫管理系統看到的資料是儲存在資料庫的資料,除了資料本身外,還包含描述資料的定義,稱為「綱要」(Schema)。2-2-1資料庫綱要的基礎-說明「資料庫綱要」(DatabaseSchema)是指整個資料庫的描述,即描述整個資料庫儲存資料的定義資料,如下所示:•綱要(Schema):資料描述的定義資料,對比程式語言的變數就是資料型態(DataType)。例如:VB語言宣告成整數的age年齡變數,如下圖所示:DimageAsInteger•資料(Data):資料本身,也就是程式語言的變數值。例如:年齡為25,如下所示:age=252-2-1資料庫綱要的基礎-圖例2-2-2三層資料庫綱要-圖例2-2-2三層資料庫綱要-概念綱要概念綱要(ConceptualSchema)概念綱要是描述概念層的完整資料庫,所以資料庫只擁有一個概念綱要來定義資料表的欄位和資料類型。以Access來說,這就是【資料表】物件設計檢視的欄位定義,如下圖所示:2-2-2三層資料庫綱要-外部綱要外部綱要(ExternalSchema)外部綱要源於概念綱要,主要是描述外部層顯示的資料,每一個外部層綱要只描述資料庫的部分資料,隱藏其它部分的資料。換句話說,每一個外部層使用者觀點的資料都需要一個外部綱要,在一個資料庫允許擁有多個外部綱要。2-2-2三層資料庫綱要-內部綱要內部綱要(InternalSchema)內部綱要是描述內部層實際儲存觀點的資料,定義資料的儲存結構和哪些資料需要建立索引,如同概念綱要,資料庫只擁有一個內部綱要。例如:使用C語言宣告學生Student的結構,如下所示:structStudent{charno[5];charname[15];charaddress[40];inttelephone;structDatebirthday;structStudent*next;};2-3資料庫管理系統2-3-1商用的資料庫管理系統2-3-2免費的資料庫管理系統2-3資料庫管理系統-說明資料庫管理系統從字面來說是一套管理資料庫的軟體工具,它是由一組程式模組負責組織、管理、儲存和讀取資料庫的資料,使用者對於資料庫的任何操作,都一定需要透過資料庫管理系統來處理。目前巿面上大部分的資料庫管理系統都屬於「關聯式資料庫管理系統」(RelationalDatabaseManagementSystem,簡稱RDBMS),這是用來管理關聯式資料庫模型(RelationalDatabaseModel)的關聯式資料庫(RelationalDatabase)。2-3資料庫管理系統-圖例資料庫管理系統在眾多的電腦軟體系統架構中,是位在作業系統和應用程式開發工具之間,如下圖所示:2-3-1商用的資料庫管理系統-1SQLServer:微軟SQLServer是微軟公司針對企業級巿場的主力資料庫產品,使用SQL結構化查詢語言(StructuredQueryLanguage),稱為Transact-SQL。第一個版本約在1989年推出,這是OS/2作業系統的版本,SQLServer是源於UNIX和VMS作業系統的SybaseSQLServer4.0,Sybase和微軟最後分道揚鑣分別獨立開發其產品,其網址:。Access:繼Xbase資料庫系統DBASE、FoxPro等之後,微軟開發針對個人電腦使用的資料庫管理系統,屬於微軟Office家族的一員,提供圖形化使用介面,在不需要設計程式的情況下,即可建立應用程式,這是本書主要說明的資料庫管理系統。2-3-1商用的資料庫管理系統-2DB2:IBM公司主力的資料庫產品,也是使用SQL語言,DB2不只是一套關聯式資料庫系統,從技術上來說,它還是一套物件關聯式資料庫系統,其網址:。Oracle:甲骨文公司(OracleCorporation)開發與公司同名的著名資料庫產品Oracle,這是一套巿佔率很高的資料庫產品,使用名為PL/SQL資料庫語言,Oracle是一套強力支持Java語言的資料庫產品,如同IBMDB2,它不只是一套關聯式資料庫系統,還是一套物件關聯式資料庫系統,其網址:。2-3-1商用的資料庫管理系統-3INGRES:源於加州大學柏克萊分校的關聯式資料庫研究計劃,在1982年成立Ingres公司開發商用資料庫產品,後來被組合國際(ComputerAssociates)購併,稱為IngresEnterpriseRelationalDatabase,這是一套高效能和高擴充性的關聯式資料庫管理系統,事實上,目前巿面上各家的資料庫管理系統,有很多都是源於Ingres研究計劃,其網址:。Sybase:賽具斯公司開發的資料庫管理系統,原名SybaseSQLServer,後來更名為SybaseAdaptiveServer,以避免與微軟MicrosoftSQLServer混淆,Sybase是最早使用Ingres系統開發資料庫管理系統,早於Informix,其網址:。2-3-1商用的資料庫管理系統-4Informix:Informix公司擁有20年關聯式資料庫管理系統開發經驗,Informix公司是最早使用Ingres系統開發資料庫系統的廠商之一,在2001年被IBM公司購併,IBM將其資料庫技術使用在DB2,稱為DB2Arrowhead,其相關開發工具的軟體公司已經改名為Ascential軟體公司。InterBase:Borland公司的關聯式資料庫管理系統,InterBase不同於其它公司的資料庫管理系統,這是一套很小的產品,幾乎不需任何管理,提供多層架構,其網址:。2-3-2免費的資料庫管理系統-1MySQL:MySQLAB公司開發和維護的關聯式資料庫管理系統,MySQL是一套快速、多執行緒、多使用者和使用SQL語言的關聯式資料庫管理系統,這是一套GNU免費軟體,如果需要技術支援,可以購買商業版本的MySQL,其網址:。MySQLMaxDB:MySQLMaxDB源於SAPDB,SAPDB原來是一套可以免費使用在非SAP環境的關聯式資料庫管理系統,這是由SAPAG小組開發,得到SAP公司認證的資料庫管理系統。MySQLMaxDB是MySQLAB公司重新更名、加強功能的開放原始碼版本,提供高妥善率、擴充性和眾多特點的關聯式資料庫管理系統。.2-3-2免費的資料庫管理系統-2PostgreSQL:PostgreSQL是一套BSDLicense授權的免費物件關聯式資料庫管理系統,這是由PostgreSQLGlobalDevelopmentGroup開發和維護的資料庫管理系統,類似商用資料庫管理系統Oracle和IBMDB2,其網址:。Firebird:Firebird是一套由Inprise公司開發的資料庫管理系統,現為Borland公司所有,這是InterBasePublicLicense授權的免費關聯式資料庫管理系統,支援ANSI-SQL92資料庫語言,其網址:。2-4資料庫管理師2-4-1資料庫管理師扮演的角色2-4-2資料庫管理師負責的工作2-4資料庫管理師-說明「資料庫管理師」(DatabaseAdministrator,簡稱DBA)負責和執行一個成功資料庫環境的相關管理和維護工作。事實上,資料庫管理師負責很多工作,它可以是一個人,也可能是一個小組來擔任。簡單的說,資料庫管理師的主要目的是維護資料庫系統的正常運作,並且提供使用者存取所需的資料。2-4資料庫管理師-背景通常資料庫管理師需要擁有公司管理和資料庫等電腦技術的專業知識,最好是主修資訊或資管科系的人員,其需要的相關電腦知識,如下所示:•熟悉作業系統操作。•熟悉一種或數種資料庫管理系統的使用。•精通資料庫系統提供的查詢語言,即SQL結構化查詢語言。•資料庫設計,至少需要清楚公司資料庫系統的資料庫綱要。•對電腦硬體與網路架構有一定的了解。例如:主從架構和Internet網際網路。2-4-1資料庫管理師扮演的角色-說明資料庫管理師負責資料庫系統的維護和管理,在角色上是扮演中間協調與溝通的角色,需要和軟體與硬體廠商溝通軟體升級或硬體擴充,提供管理者決策支援和使用者所需的資料,和開發者研究系統功能擴充,解決系統問題,資料庫管理師都扮演重要的中間溝通與協調角色。資料庫管理師處理的主要對象是資料,資料庫管理師需要執行整個公司的資料管理和處理,讓資料庫以最佳效能、能夠24小時正常的運作。2-4-1資料庫管理師扮演的角色-圖例2-4-2資料庫管理師負責的工作-維護資料庫綱要維護資料庫綱要資料庫管理師需要參與資料庫設計,提供資料庫設計師關於概念層綱要的修改建議,即協助建立Access資料表物件的定義資料。資料庫管理師需要負責從資料庫使用的資料庫模型。例如:關聯式資料庫模型,和系統規格建立資料庫,描述資料庫在儲存裝置的實際資料結構。2-4-2資料庫管理師負責的工作-資料管理資料管理資料庫管理師最主要的工作是資料管理,提供公司或組織一個集中管理的資料庫,並且依據各部門的需求,提供不同使用者觀點的資料,即建立不同的Access查詢物件。維護和監控資料庫管理系統安裝和升級資料庫管理系統:資料庫管理師負責公司資料庫管理系統和更新套件的安裝,當新版推出時,還負責