A. 做一個程序員要具備什麼
1:團隊精神和協作能力 ,和基本的操作常識,缺乏這種素質的人就完全不合格了。
2.要有做文檔的習慣,缺乏文檔,一個軟體系統就缺乏生命力,在未來的查錯,升級以及模塊的復用時就都會遇 到極大的麻煩。
3:規范化,標准化的代碼編寫習慣 。
4.代碼具有良好的可讀性,是程序員基本的素質需求。
5.程序員需要理解一個模塊的需求,把性能指標全部歸結到硬體,操作系統和開發環境上。
6.復用性,模塊化思維能力 ,避免大部分重復性工作無謂的浪費了時間和精力。
7. 測試習慣 ,作為一些商業化正規化的開發而言,專職的測試工程師是不可少的
8..程序員是人才很容易被淘汰,很容易落伍的職業,必須不斷跟進新的技術,學習新的技能。
計算機語言的種類非常的多,總的來說可以分成機器語言,匯編語言,高級語言三大類。
電腦每做的一次動作,一個步驟,都是按照以經用計算機語言編好的程序來執行的,程序是計算機要執行的指令的集合,而程序全部都是用我們所掌握的語言來編寫的。所以人們要控制計算機一定要通過計算機語言向計算機發出命令。
計算機所能識別的語言只有機器語言,即由0和1構成的代碼。但通常人們編程時,不採用機器語言,因為它非常難於記憶和識別。
目前通用的編程語言有兩種形式:匯編語言和高級語言。
匯編語言的實質和機器語言是相同的,都是直接對硬體操作,只不過指令採用了英文縮寫的標識符,更容易識別和記憶。它同樣需要編程者將每一步具體的操作用命令的形式寫出來。匯編程序通常由三部分組成:指令、偽指令和宏指令。匯編程序的每一句指令只能對應實際操作過程中的一個很細微的動作,例如移動、自增,因此匯編源程序一般比較冗長、復雜、容易出錯,而且使用匯編語言編程需要有更多的計算機專業知識,但匯編語言的優點也是顯而易見的,用匯編語言所能完成的操作不是一般高級語言所能實現的,而且源程序經匯編生成的可執行文件不僅比較小,而且執行速度很快。
高級語言是目前絕大多數編程者的選擇。和匯編語言相比,它不但將許多相關的機器指令合成為單條指令,並且去掉了與具體操作有關但與完成工作無關的細節,例如使用堆棧、寄存器等,這樣就大大簡化了程序中的指令。同時,由於省略了很多細節,編程者也就不需要有太多的專業知識。
高級語言主要是相對於匯編語言而言,它並不是特指某一種具體的語言,而是包括了很多編程語言,如目前流行的VB、VC、FoxPro、Delphi等,這些語言的語法、命令格式都各不相同。
高級語言所編制的程序不能直接被計算機識別,必須經過轉換才能被執行,按轉換方式可將它們分為兩類:
解釋類:執行方式類似於我們日常生活中的「同聲翻譯」,應用程序源代碼一邊由相應語言的解釋器「翻譯」成目標代碼(機器語言),一邊執行,因此效率比較低,而且不能生成可獨立執行的可執行文件,應用程序不能脫離其解釋器,但這種方式比較靈活,可以動態地調整、修改應用程序。
編譯類:編譯是指在應用源程序執行之前,就將程序源代碼「翻譯」成目標代碼(機器語言),因此其目標程序可以脫離其語言環境獨立執行,使用比較方便、效率較高。但應用程序一旦需要修改,必須先修改源代碼,再重新編譯生成新的目標文件(* .OBJ)才能執行,只有目標文件而沒有源代碼,修改很不方便。現在大多數的編程語言都是編譯型的,例如Visual C++、Visual Foxpro、Delphi等。
[NextPage]
學習編程,從何入手
如果您想學習編程,卻又不知從何入手,那麼您不妨看看下面的幾種學習方案,可能會給您一些啟示吧!
==============================================
方案一 Basic語言 & Visual Basic
優點
(1)Basic 簡單易學,很容易上手。
(2)Visual Basic 提供了強大的可視化編程能力,可以讓你輕松地做出漂亮的程序。
(3)眾多的控制項讓編程變得象壘積木一樣簡單。
(4)Visual Basic 的全部漢化讓我們這些見了English就頭大的人喜不自禁。
缺點
(1)Visual Basic 不是真正的面向對象的開發文具。
(2)Visual Basic 的數據類型太少,而且不支持指針,這使得它的表達能力很有限。
(3)Visual Basic 不是真正的編譯型語言,它產生的最終代碼不是可執行的,是一種偽代碼。它需要一個動態鏈接庫去解釋執行,這使得Visual Basic 的編譯速度大大變慢。
綜述:方案一適合初涉編程的朋友,它對學習者的要求不高,幾乎每個人都可以在一個比較短的時間里學會vB編程,並用VB 做出自己的作品。對於那些把編程當做游戲的朋友來說,VB 是您最佳的選擇。
Basic/Visual Basic簡介
==============================================
方案二 Pascal語言 & Delphi
優點
(1)Pascal語言結構嚴謹,可以很好地培養一個人的編程思想。
(2)Delphi是一門真正的面向對象的開發工具,並且是完全的可視化。
(3)Delphi使用了真編譯,可以讓你的代碼編譯成為可執行的文件,而且編譯速度非常快。
(4)Delphi具有強大的資料庫開發能力,可以讓你輕松地開發資料庫。
缺點
Delphi幾乎可以說是完美的,只是Pascal語言的過於嚴謹讓人感覺有點煩。
綜述: 方案二比較適合那些具有一定編程基礎並且學過Pascal語言的朋友。
Pascal語言簡介
Delphi簡介
==============================================
方案三 C語言 & Visual C++
優點
(1)C語言靈活性好,效率高,可以接觸到軟體開發比較底層的東西。
(2)微軟的MFC庫博大精深,學會它可以讓隨心所欲地進行編程。
(3)VC是微軟製作的產品,與操作系統的結合更加緊密。
缺點
對使用者的要求比較高,既要具備豐富的C語言編程經驗,又要具有一定的WINDOWS編程基礎,它的過於專業使得一般的編程愛好者學習起來會有不小的困難。
綜述: VC是程序員用的東西。如果你是一個永不滿足的人,而且可以在編程上投入很大的精力和時間,那麼學習VC你一定不會後悔的。
C語言簡介
==============================================
方案四 C++語言 & C++ Builder
優點
(1)C++語言的優點全部得以繼承。
(2)完全的可是化。
(3)極強的兼容性,支持OWL、VCL和MFC三大類庫。
(4)編譯速度非常快。
缺點
由於推出的時間太短,關於它的各種資料還不太多。
綜述:我認為C++ Builder 是最好的編程工具。它既保持了C++語言編程的優點,又做到了完全的可視化。
C語言簡介
==============================================
方案五 SQL語言 & Power Builder
對於一些傳統的數據開發人員來說,Foxpro系列也許讓他們感到更加熟悉。但是對於初學者來說,PowerBuilder也許是最好的資料庫開發工具。各種各樣的控制項,功能強大的PowerBuilder語言都會幫助你開發出自己的資料庫應用程序。
[NextPage]
JSP簡介
在Sun正式發布JSP(Java Server Pages)之後,這種新的Web應用開發技術很快引起了人們的關注。JSP為創建高度動態的Web應用提供了一個獨特的開發環境。按照 Sun 的說法,JSP能夠適應市場上包括Apache WebServer 、IIS4.0在內的85%的伺服器產品。
JSP與ASP的簡單比較
JSP與Microsoft的ASP技術非常相似。兩者都提供在HTML代碼中混合某種程序代碼、由語言引擎解釋執行程序代碼的能力。在ASP或JSP環境下,HTML代碼主要負責描述信息的顯示樣式,而程序代碼則用來描述處理邏輯。普通的HTML頁面只依賴於Web伺服器,而ASP和JSP頁面需要附加的語言引擎分析和執行程序代碼。程序代碼的執行結果被重新嵌入到HTML代碼中,然後一起發送給瀏覽器。ASP和JSP都是面向Web伺服器的技術,客戶端瀏覽器不需要任何附加的軟體支持。
ASP的編程語言是VBScript之類的腳本語言,JSP使用的是Java,這是兩者最明顯的區別。
此外,ASP與JSP還有一個更為本質的區別:兩種語言引擎用完全不同的方式處理頁面中嵌入的程序代碼。在ASP下,VBScript代碼被ASP引擎解釋執行;在JSP下,代碼被編譯成Servlet並由Java虛擬機執行,這種編譯操作僅在對JSP頁面的第一次請求時發生。
運行環境
執行 JSP 代碼需要在伺服器上安裝 JSP 引擎。此處我們使用的是 Sun 的 JavaServer Web Development Kit ( JSWDK )。為便於學習,這個軟體包提供了大量可供修改的示例。安裝 JSWDK 之後,只需執行 startserver 命令即可啟動伺服器。在默認配置下伺服器在埠 8080 監聽,使用 http://localhost:8080 即可打開預設頁面。
在運行 JSP 示例頁面之前,請注意一下安裝 JSWDK 的目錄,特別是" work "子目錄下的內容。執行示例頁面時,可以在這里看到 JSP 頁面如何被轉換成 Java 源文件,然後又被編譯成 class 文件(即 Servlet )。 JSWDK 軟體包中的示例頁面分為兩類,它們或者是 JSP 文件,或者是包含一個表單的 HTML 文件,這些表單均由 JSP 代碼處理。與 ASP 一樣, JSP 中的 Java 代碼均在伺服器端執行。因此,在瀏覽器中使用"查看源文件"菜單是無法看到 JSP 源代碼的,只能看到結果 HTML 代碼。所有示例的源代碼均通過一個單獨的" examples "頁面提供。
Java Servlet是一種開發Web應用的理想構架。 JSP以Servlet技術為基礎,又在許多方面作了改進。JSP頁面看起來象普通HTML頁面,但它允許嵌入執行代碼,在這一點上,它和ASP技術非常相似。利用跨平台運行的JavaBean 組件,JSP為分離處理邏輯與顯示樣式提供了卓越的解決方案。JSP必將成為ASP技術的有力競爭者。
[NextPage]
SQL語言簡介
SQL全稱是「結構化查詢語言(Structured Query Language)」,最早的是IBM的聖約瑟研究實驗室為其關系資料庫管理系統SYSTEM R開發的一種查詢語言,它的前身是SQUARE語言。SQL語言結構簡潔,功能強大,簡單易學,所以自從IBM公司1981年推出以來,SQL語言,得到了廣泛的應用。如今無論是像Oracle ,Sybase,Informix,SQL server這些大型的資料庫管理系統,還是像Visual Foxporo,PowerBuilder這些微機上常用的資料庫開發系統,都支持SQL語言作為查詢語言。
Structured Query Language包含4個部分:
數據查詢語言DQL-Data Query Language SELECT
數據操縱語言DQL-Data Manipulation Language INSERT, UPDATE, DELETE
數據定義語言DQL-Data Definition Language CREATE, ALTER, DROP
數據控制語言DQL-Data Control Language COMMIT WORK, ROLLBACK WORK
SQL的歷史
在70年代初,E.E.Codd首先提出了關系模型。70年代中期,IBM公司在研製 SYSTEM R關系資料庫管理系統中研製了SQL語言,最早的SQL語言(叫SEQUEL2)是在1976 年 11 月的IBM Journal of R&D上公布的。
1979年ORACLE公司首先提供商用的SQL,IBM公司在DB2 和SQL/DS資料庫系統中也實現了SQL。
1986年10月,美國ANSI採用SQL作為關系資料庫管理系統的標准語言(ANSI X3. 135-1986),後為國際標准化組織(ISO)採納為國際標准。
1989年,美國ANSI採納在ANSI X3.135-1989報告中定義的關系資料庫管理系統的SQL標准語言,稱為ANSI SQL 89, 該標准替代ANSI X3.135-1986版本。該標准為下列組織所採納:
● 國際標准化組織(ISO),為ISO 9075-1989報告「Database Language SQL With Integrity Enhancement」
● 美國聯邦政府,發布在The Federal Information Processing Standard Publication(FIPS PUB)127
目前,所有主要的關系資料庫管理系統支持某些形式的SQL語言, 大部分資料庫打算遵守ANSI SQL89標准。
SQL的優點
SQL廣泛地被採用正說明了它的優點。它使全部用戶,包括應用程序員、DBA管理員和終端用戶受益非淺。
(1) 非過程化語言
SQL是一個非過程化的語言,因為它一次處理一個記錄,對數據提供自動導航。SQL允許用戶在高層的數據結構上工作,而不對單個記錄進行操作,可操作記錄集。所有SQL 語句接受集合作為輸入,返回集合作為輸出。SQL的集合特性允許一條SQL語句的結果作為另一條SQL語句的輸入。 SQL不要求用戶指定對數據的存放方法。 這種特性使用戶更易集中精力於要得到的結果。所有SQL語句使用查詢優化器,它是RDBMS的一部分,由它決定對指定數據存取的最快速度的手段。查詢優化器知道存在什麼索引,哪兒使用合適,而用戶從不需要知道表是否有索引,表有什麼類型的索引。
(2) 統一的語言
SQL可用於所有用戶的DB活動模型,包括系統管理員、資料庫管理員、 應用程序員、決策支持系統人員及許多其它類型的終端用戶。基本的SQL 命令只需很少時間就能學會,最高級的命令在幾天內便可掌握。 SQL為許多任務提供了命令,包括:
● 查詢數據
● 在表中插入、修改和刪除記錄
● 建立、修改和刪除數據對象
● 控制對數據和數據對象的存取
● 保證資料庫一致性和完整性
以前的資料庫管理系統為上述各類操作提供單獨的語言,而SQL 將全部任務統一在一種語言中。
(3) 是所有關系資料庫的公共語言
由於所有主要的關系資料庫管理系統都支持SQL語言,用戶可將使用SQL的技能從一個RDBMS轉到另一個。所有用SQL編寫的程序都是可以移植的。
[NextPage]
Java語言簡介
一. Java的由來
當1995年SUN推出Java語言之後,全世界的目光都被這個神奇的語言所吸引。那麼Java到底有何神奇之處呢?
Java語言其實最是誕生於1991年,起初被稱為OAK語言,是SUN公司為一些消費性電子產品而設計的一個通用環境。他們最初的目的只是為了開發一種獨立於平台的軟體技術,而且在網路出現之前,OAK可以說是默默無聞,甚至差點夭折。但是,網路的出現改變了OAK的命運。
在Java出現以前。Internet上的信息內容都是一些乏味死板的HTML文檔。這對於那些迷戀於WEB瀏覽的人們來說簡直不可容忍。他們迫切希望能在WEN中看到一些互動式的內容,開發人員也極希望能夠在WEB上創建一類無需考慮軟硬體平台就可以執行的應用程序,當然這些程序還要有極大的安全保障。對於用戶的這種要求,傳統的編程語言顯得無能為力,面SUN的工程師敏銳地察覺到了這一點,從1994年起,他們開始將OAK技術應用於WEB上,並且開發出了HotJava的第一個版本。當SUN公司1995年正式以Java這個名字推出的時候,幾乎所有的WEB開發人員都想到:噢,這正是我想要的。於是Java成了一顆耀眼的明星,丑小鴨一下了變成了白天鵝。
二. Java的定義
Java是一種簡單的,面象對象的,分布式的,解釋的,鍵壯的安全的,結構的中立的,可移植的,性能很優異的多線程的,動態的語言。
Java的開發環境有不同的版本,如sun公司的Java Developers Kit, 簡稱 JDK。後來微軟公司推出了支持Java規范的Microsoft Visual J++ Java開發環境,簡稱 VJ++。
三. Java的特點
1. 平台無關性
平台無關性是指Java能運行於不同的平台。Java引進虛擬機 原理,並運行於虛擬機,實現不同平台的Java介面之間。使 用Java編寫的程序能在世界范圍內共享。Java的數據類型與 機器無關,Java虛擬機(Java Virtual Machine)是建立在 硬體和操作系統之上,實現Java二進制代碼的解釋執行功能, 提供於不同平台的介面的。
2. 安全性
Java的編程類似C++,學習過C++的讀者將很快掌握Java的精 髓。Java舍棄了C++的指針對存儲器地址的直接操作,程序 運行時,內存由操作系統分配,這樣可以避免病毒通過指 針侵入系統。Java對程序提供了安全管理器,防止程序的 非法訪問。
3. 面向對象
Java 吸取了C++面向對象的概念,將數據封裝於類中,利用類 的優點,實現了程序的簡潔性和便於維護性。類的封裝性、 繼承性等有關對象的特性,使程序代碼只需一次編譯,然後 通過上述特性反復利用。程序員只需把主要精力用在類和接 口的設計和應用上。Java 提供了眾多的一般對象的類,通 過繼承即可使用父類的方法。在 Java 中,類的繼承關系是單一的非多重的,一個子類 只有一個父類,子類的父類又有一個父類。Java 提供的 Object 類及其子類的繼承關系如同一棵倒立的樹形,根類 為 Object 類, Object 類功能強大,經常會使用到它及其 它派生的子類。
4. 分布式
Java建立在擴展TCP/IP網路平台上。庫函數提供了用HTTP和FTP協議傳送和接受信息的方法。這使得程序員使用網路上的文件和使用本機文件一樣容易。
5. 鍵壯性
Java致力於檢查程序在編譯和運行時的錯誤。類型檢查幫助檢查出許多開發早期出現的錯誤。Java自已操縱內存減少了內存出錯的可能性。Java還實現了真數組,避免了覆蓋數據的可能。這些功能特徵大大提高了開發Java應用程序的周期。Java提供: Null指針檢測、 數組邊界檢測、 異常出口、 Byte code校驗。
四. Java與C/C++語言
Java提供了一個功能強大語言的所有功能,但幾乎沒有一點含混特徵。C++安全性不好,但C和C++被大家接受,所以Java設計成C++形式,讓大家很容易學習。
Java去掉了C++語言的許多功能,讓Java的語言功能很精煉,並增加了一些很有用的功能,如自動收集碎片。
Java去掉了以下幾個C和C++功能:
指針運算
結構
typedefs
#define
需要釋放內存
這將減少了平常出錯的50%。而且,Java很小,整個解釋器只需215K的RAM。
面象對象:Java實現了C++的基本面象對象技術並有一些增強,(為了語言簡單,刪除了一些功能)。Java處理數據方式和用對象介面處理對象數據方式一樣。
五. Java與Internet
我們知道,早先的 www 僅可以傳送文本和圖片,Java的出現實現了互動的頁面,是一次偉大的革命。
Java並不是為 Internet,WWW而設計的,它也可以用來編寫獨立的應用程序。Java 是一種面向對象語言。Java 語言類似於 C++ 語言,所以已熟練掌握 C++語言的編程人員,再學習 Java 語言就容易得多!Java 程序需要編譯。實際上有兩種 Java 程序:一種 Java 應用程序是一個完整的程序,如 Web 瀏覽器。一種 Java 小應用程序是運行於 Web 瀏覽器中的一個程序.
Java程序和它的瀏覽器HotJava,提供了可讓你的瀏覽器運行程序的方法。你能從你的瀏覽器里直接播放聲音。你還能播放頁面里的動畫。Java還能告訴你的瀏覽器怎樣處理新的類型文件。當我們能在2400 baud線上傳輸視頻圖象時,HotJava將能顯示這些視頻。
當今Internet的一大發展趨勢是電子商務,而Internet的安全問題是必須解決的問題,通常大的部門應設置防火牆,阻止非法侵入。
電子商務是當今的熱門話題,然而傳統的編程語言難以勝任電子商務系統,電子商務要求程序代碼具有基本的要求:安全、可靠、同時要求能 與運行於不同平台的機器的全世界客戶開展業務。Java以其強安全性、平台無關性、硬體結構無關性、語言簡潔同時面向對象,在網路編程語言中占據無可比擬的優勢,成為實現電子商務系統的首選語言。
Java程序被放置在Internet伺服器上,當用戶訪問伺服器時,Java程序被下載到本地的用戶機上,由瀏覽器解釋運行。
[NextPage]
PowerBuilder簡介
PowerBuilder的產生
PowerBuilder是美國著名的資料庫應用開發工具生產廠商PowerSoft推出的成功產品,其第一版於1991年6月正式投入市場。它是完全按照客戶/伺服器體系結構研製設計的,採用面向對象技術,圖形化的應用開發環境,是資料庫的前端開發工具。
PowerBuilder的特點
它支持應用系統同時訪問多種資料庫,其中既包括Oracel,Sybase之類的大型資料庫,又包括FOXPRO之類支持ODBC介面的小型資料庫,PowerBuilder是完全可視化的資料庫開發工具,它提供了大量的控制項,大大加快了項目的開發速度,也使開發者更容易掌握資料庫的開發。
它使用的編程語言叫做工PowerScripr,它也是一種高級的,結構化的編程語言。PowerScript提供了一套完整的嵌入式SQL語句,開發人員可以像使用其它語句一樣自由地使用SQL語言,這樣就大大增強了程序操縱和訪問資料庫的能力。可以說PowerBuilder既適合初學者快速學習資料庫的開發,又可以讓有經驗的開發人員開發出功能強大的資料庫,是一種適用面非常廣的開發工具。
PowerBuilder是一個用來進行客戶/伺服器開發的完全的可視化開發環境。使用PowerBuilder,你可以用一種可視的直觀的方式來創建應用程序的用戶界面和資料庫介面。這是一個總的概念,實際上是開發人員使用PowerBuilder去開發應用程序,由於所開發的各種應用程序充分利用了圖形用戶介面(GUI)的優點,所以PowerBuilder被認為是一個圖形工具。
在客戶/伺服器結構的應用中,PowerBuilder具有描述多個資料庫連接與檢索的能力。特別是PowerBuilder能從大多數流行的RDBMS中存取數據,且不管數據存放在什麽地方;另外,各種應用程序又可以獨立於RDBMS,因為PowerBuilder可以使用資料庫的標准操作語言SQL(結構化查詢語言)進行。
使用PowerBuilder,可以很容易地開發出功能強大的圖形界面的訪問伺服器資料庫的應用程序,PowerBuilder提供了建立符合工業標準的應用程序(例如訂單登記、會計及製造系統)所需的所有工具。
PowerBuilder應用程序由窗口組成,這些窗口包含用戶與之交互的控制項。開發人員可以使用所有標准
如WINDOWS XP \WINDOWS 2000 \WINDOW VIST.等
B. 關於 關系數據模型的一點疑惑:
透明是隱藏的意思,用戶只需要指出要做什麼就可以了,至於怎麼去做的一般用戶不需要了解是,不可以操作的。
存取路徑是指對數據處理(包括增,刪,改,查詢)的實現過程
因為隱藏了存取路徑,由資料庫管理系統自己選擇路徑,普通用戶可能在不知情的情況下用了較低效率的方法實現,數據量越大效率差距越明顯。
這就需要優化、、
如
truncate table tablename
delete * from tablename
同樣是刪除tablename表的所有記錄
truncate table tablename 效率就高的多,當然他們意思也是不同的
具體要多看書多演練,最好能做點小項目會很有幫助
C. 請問資料庫里的層次模型、網狀模型、關系模型之間的比較
1.層次模型
層次模型是資料庫系統中最早使用的模型,它的數據結構類似一顆倒置的樹,每個節點表示一個記錄類型,記錄之間的聯系是一對多的聯系,基本特徵是:
* 一定有一個,並且只有一個位於樹根的節點,稱為根節點;
* 一個節點下面可以沒有節點,即向下沒有分支,那麼該節點稱為葉節點;
* 一個節點可以有一個或多個節點,前者稱為父節點,後者稱為子節點;
* 同一父節點的子節點稱為兄弟節點。
* 除根節點外,其他任何節點有且只有一個父節點;
圖11.7是一個層次模型的例子。
層次模型中,每個記錄類型可以包含多個欄位,不同記錄類型之間、同一記錄類型的不同欄位之間不能同名。如果要存取某一類型的記錄,就要從根節點開始,按照樹的層次逐層向下查找,查找路徑就是存取路徑。如圖11.8所示。
層次模型結構簡單,容易實現,對於某些特定的應用系統效率很高,但如果需要動態訪問數據(如增加或修改記錄類型)時,效率並不高。另外,對於一些非層次性結構(如多對多聯系),層次模型表達起來比較繁瑣和不直觀。
2.網狀模型
網狀模型可以看作是層次模型的一種擴展。它採用網狀結構表示實體及其之間的聯系。網狀結構的每一個節點代表一個記錄類型,記錄類型可包含若干欄位,聯系用鏈接指針表示,去掉了層次模型的限制。網狀模型的特徵是:
1. 允許一個以上的節點沒有父節點;
2. 一個節點可以有多於一個的父節點;
例如,圖11.9(a)和圖11.9(b)都是網狀模型的例子。圖11.9(a)中節點3有兩個父節點,即節點1和節點2;圖11.9(b)中節點4有三個父節點,即節點1,節點2和節點3。
由於網狀模型比較復雜,一般實際的網狀資料庫管理系統對網狀都有一些具體的限制。在使用網狀資料庫時有時候需要一些轉換。例如,如圖11.10所示。
網狀模型與層次模型相比,提供了更大的靈活性,能更直接地描述現實世界,性能和效率也比較好。網狀模型的缺點是結構復雜,用戶不易掌握,記錄類型聯系變動後涉及鏈接指針的調整,擴充和維護都比較復雜。
3.關系模型
關系模型是目前應用最多、也最為重要的一種數據模型。關系模型建立在嚴格的數學概念基礎上,採用二維表格結構來表示實體和實體之間的聯系。二維表由行和列組成。下面以教師信息表和課程表為例,說明關系模型中的一些常用術語:
表11.1 教師信息表(表名為:tea_info)
TNO(教師編號)
NAME(姓名)
GENDER(性別)
TITLE(職稱)
DEPT(系別)
805
李奇
女
講師
基礎部
856
薛智永
男
教授
信息學院
表11.2 課程表(表名為:cur_info)
CNO(課程編號)
DESCP(課程名稱)
PERIOD(學時)
TNO(主講老師編號)
005067
微機基礎
40
805
005132
數據結構
64
856
1. 關系(或表):一個關系就是一個表,如上面的教師信息表和課程表。
2. 元組:表中的一行為一個元組(不包括表頭)。
3. 屬性:表中的一列為一個屬性。
4. 主碼(或關鍵字):可以唯一確定一個元組和其他元組不同的屬性組。
5. 域:屬性的取值范圍。
6. 分量:元組中的一個屬性值。
7. 關系模式:對關系的描述,一般表示為:關系名(屬性1,屬性2,... ...,屬性n)。
關系模型中沒有層次模型中的鏈接指針,記錄之間的聯系是通過不同關系中的同名屬性來實現的。 關系模型的基本特徵是:
1. 建立在關系數據理論之上,有可靠的數據基礎;
2. 可以描述一對一,一對多和多對多的聯系。
3. 表示的一致性。實體本身和實體間聯系都使用關系描述。
4. 關系的每個分量的不可分性,也就是不允許表中表。
關系模型概念清晰,結構簡單,實體、實體聯系和查詢結果都採用關系表示,用戶比較容易理解。另外,關系模型的存取路徑對用戶是透明的,程序員不用關心具體的存取過程,減輕了程序員的工作負擔,具有較好的數據獨立性和安全保密性。
關系模型也有一些缺點,在某些實際應用中,關系模型的查詢效率有時不如層次和網狀模型。為了提高查詢的效率,有時需要對查詢進行一些特別的優化
D. 資料庫系統的關系數據模型問題
已經講了數據結構的層次模型和網狀模型,最後再看下第三種模型,關系模型。
關系模型以二維表結構來表示實體與實體之間的聯系,它是以關系數學理論為基礎的,每個二維表又可稱為關系。
在關系模型中,操作的對象和結果都是二維表,關系模型是目前最流行的資料庫模型。支持關系模型的資料庫管理系統稱為關系資料庫管理系統,Access就是一種關系資料庫管理系統。
1、基本術語
(1)關系(Relation):一個關系對應著一個二維表,二維表就是關系名。
(2)元組(Tuple):在二維表中的一行,稱為一個元組。
(3)屬性(Attribute):在二維表中的列,稱為屬性。屬性的個數稱為關系的元或度。列的值稱為屬性值;
(4)(值)域(Domain):屬性值的取值范圍為值域。
(5)分量:每一行對應的列的屬性值,即元組中的一個屬性值。[2]
(6)關系模式:在二維表中的行定義,即對關系的描述稱為關系模式。一般表示為(屬性1,屬性2,......,屬性n),如老師的關系模型可以表示為教師(教師號,姓名,性別,年齡,職稱,所在系)。
(7)鍵(碼):如果在一個關系中存在唯一標識一個實體的一個屬性或屬性集稱為實體的鍵,即使得在該關系的任何一個關系狀態中的兩個元組,在該屬性上的值的組合都不同。
(8)候選鍵(候選碼):若關系中的某一屬性的值能唯一標識一個元組如果在關系的一個鍵中不能移去任何一個屬性,否則它就不是這個關系的鍵,則稱這個被指定的候選鍵為該關系的候選鍵或者候選碼。
例如下列學生表中「學號」或「圖書證號」都能唯一標識一個元組,則「學號」和「圖書證號」都能唯一地標識一個元組,則「學號」和「圖書證號」都可作為學生關系的候選鍵。
2、關系模型的數據操作與完整性約束
關系數據模型的操作主要包括查詢、插入、刪除和修改數據;這些操作必須滿足關系的完整性約束條件。
關系模型中數據操作的特點是集合操作方式,即操作對象和操作結果都是集合,這種操作方式也稱為一次一集合的方式。
相應地,非關系數據模型的操作方式是一次一記錄的方式。
關系的完整性約束條件包括三大類:
實體完整性、參照完整性和用戶定義的完整性。
實體完整性定義資料庫中每一個基本關系的主碼應滿足的條件,能夠保證元組的唯一性。參照完整性定義表之間的引用關系,即參照與被參照關系。用戶定義完整性是用戶針對具體的應用環境制定的數據規則,反映某一具體應用所涉及的數據必須滿足的語義要求。
3、關系模型的優缺點
關系數據模型的優點主要體現在以下幾點:
(1) 關系模型與非關系模型不同,它是建立在嚴格的數學理論基礎上的。
(2) 關系模型的概念單一,實體與實體間的聯系都用關系表示,對數據的檢索結果也是關系(即表),所以其數據結構簡單、清晰,用戶易懂易用。
(3) 關系模型的物理存儲和存取路徑對用戶透明,從而具有更高的數據獨立性、更好的安全保密性,簡化了程序員的資料庫開發工作。
關系數據模型的缺點有以下幾點:
(1) 由於存取路徑對用戶透明,查詢效率往往不如非關系數據模型高。因此,為了提高性能,必須對用戶的查詢請求進行優化,這就增加了開發資料庫管理系統的難度和負擔。
(2) 關系數據模型不能以自然的方式表示實體集間的聯系,存在語義信息不足、數據類型過少等弱點。
E. 關系數據模型和非關系數據模型的優缺點
特性:
①採用關系模型來組織數據的資料庫;
②事務的一致性;
③簡單來說,關系模型指的就是二維表格模型,而一個關系型資料庫就是由二維表及其之間的聯系所組成的一個數據組織。
優點:
①容易理解:二維表結構是非常貼近邏輯世界一個概念,關系模型相對網狀、層次等其他模型來說更容易理解;
②使用方便:通用的SQL語言使得操作關系型資料庫非常方便;
③易於維護:豐富的完整性(實體完整性、參照完整性和用戶定義的完整性)大大減低了數據冗餘和數據不一致的概率;
④支持SQL,可用於復雜查詢。
缺點:
①為了維護一致性所付出的巨大代價就是其讀寫性能比較差;
②固定的表結構;
③高並發讀寫需求;
④海量數據的高效率讀寫;
特性:
①使用鍵值對存儲數據;
②分布式;
③一般不支持ACID特性;
④非關系型資料庫嚴格上不是一種資料庫,應該是一種數據結構化存儲方法的集合。
優點:
①無需經過sql層的解析,讀寫性能很高;
②基於鍵值對,數據沒有耦合性,容易擴展;
③存儲數據的格式:nosql的存儲格式是key,value形式、文檔形式、圖片形式等等,文檔形式、圖片形式等等,而關系型資料庫則只支持基礎類型。
缺點:
①不提供sql支持,學習和使用成本較高;
②無事務處理,附加功能bi和報表等支持也不好;
F. 資料庫試題
1/A
2/B
3/A
4/A
5/B
6/C
7/數據結構,數據操作,完整性約束條件
8/表
9/DBA
10/數據獨立性差
11/SQL
12/內模式
13/存儲
14/外模式,模式和內模式
15/應用程序,操作系統,資料庫管理系統
16/資料庫管理系統
17/增刪改查
18/實體,屬性和聯系
19/A
20/屬性
歡迎批評指正。
G. 資料庫關系模型有哪些優缺點
關系模型資料庫的優點:
1、關系模型和格式化模型不同,它是簡歷在嚴格的數學概念的基礎上的。
2、關系模型的概念單一。無論實體還是實體之間的聯系都用關系來表示。對資料庫的檢索和更新結果也是關系(即表)。所以其數據結構簡單、清晰,用戶易懂易用。
3、關系模型的存取路徑對用戶透明,從而具有更高的數據獨立性、更好的安全保密性,也簡化了程序員的工作和資料庫開發建立的工作。
關系模型資料庫的缺點:
1、由於存取路徑島嶼用戶是隱蔽的,查詢效率往往不如格式化數據模型。
2、為了提高性能,資料庫管理系統必須到用戶的查詢請求進行優化,因此增加了開發資料庫管理系統的難度。
(7)關系模型的程序員擴展閱讀:
其他資料庫的優缺點:
層次資料庫的優點:
1、數據結構比較簡單清晰。
2、層次資料庫的查詢效率高。因為層次模型中記錄之間的聯系用有向邊表示,這種練習在DBMS中常常用指針來實現,因此這種練習也就是記錄之間的存取路徑。當葯存取某個節點的記錄值,DBMS就沿著這一條路徑很快找到該記錄值,所以層次資料庫的性能優於關系資料庫,不低於網狀資料庫。
3、層次數據模型提供了良好的完整性支持。
層次資料庫的缺點:
1、現實世界中很多聯系都是非層次性的。
2、對插入和產出操作的限制比較多,因此應用程序的編寫比較復雜、
3、由於結構嚴密,層次命令趨於程序化。
H. 資料庫關系模型的主要優點有
兩種典型的GIS數據模型
1、拓撲關系數據模型
拓撲關系數據模型以拓撲關系為基礎組織和存儲各個幾何要素,其特點是以點、線、面間的拓撲連接關系為中心,它們的坐標存貯具有依賴關系。該模型的主要優點是數據結構緊湊,拓撲關系明晰,系統中預先存儲的拓撲關系可以有效提高系統在拓撲查詢和網路分析方面的效率,但也有不足:
對單個地理實體的操作效率不高。由於拓撲數據模型面向的是整個空間區域,強調的是各幾何要素之間的連接關系,在另一方面對具有完整、獨立意義的地理實體作為個體存在的事實沒有足夠的重視,因此增加、刪除、修改某一地理實體時,將會牽涉到一系列文件和關系資料庫表格,這樣不僅使程序管理工作變得復雜,而且會降低系統的執行效率。
難以表達復雜的地理實體。由於拓撲關系組織的要求,一個完整的簡單實體在拓撲關系模型中有時需要被分解為多個幾何要素(比如一條公路本是一個完整的實體,但為了記錄其拓撲鄰接信息,只有對其在與其它公路實體鄰接的地方進行分段,這樣一個完整的實體就被分成多個幾何要素。所有的實體都進行如此處理,所以我們說拓撲數據模型是面向整個區域、面向不被分割的幾何要素的,而不是面向用戶眼中的地理實體)。復雜地理實體由多個簡單實體組合而成,自然也常常被分解,拓撲數據模型的整體組織特性註定了它不可能有效地表達這一由多個獨立實體構成的有機集合體。
難以實現快速查詢和復雜的空間分析。由於在拓撲數據模型中,地理實體被分解為點、線、面基本幾何要素存儲在不同的文件和關系表中,因而凡涉及到獨立地理實體的操作、查詢和分析都將花費較多的CPU時間,在大區域的復雜空間分析方面表現尤為明顯。
局部更新困難,系統難於維護與擴充。由於地理空間的數據組織和存儲是以基本幾何要素(點、弧段和多邊形)為單元進行的,系統中存儲的復雜拓撲關系是GIS工作的數據基礎,當局部一些實體發生變動時,整層拓撲關系將不得不隨之重建,這樣的系統牽一發而動全身,在維護和擴充方面需要更多的精力,並且容易出錯。
值得說明的是,拓撲關系數據模型也能以面向對象的方式實現,但此時面向的對象是不被其它要素從中間分割的幾何要素,往往是一個獨立地理實體的一部分,而不是一個完整的、獨立的地理實體。這一點是拓撲關系數據模型與下一節面向實體數據模型本質不同的重要表現之一。
2、面向實體的數據模型
里稱為「面向實體」,是為了強調這種數據模型是以單個空間地理實體為數據組織和存儲的基本單位的。
與上述拓撲模型相反,該模型以獨立、完整、具有地理意義的實體為基本單位對地理空間進行表達。在具體組織和存儲時,可將實體的坐標數據和屬性數據(如建立了部分拓撲,拓撲關系也放在表中保存)分別存放在文件系統和關系資料庫中,也可以將二者統一存放在關系資料庫中(可以將坐標數據和屬性數據放在同一個表中,也可以將二者分成兩個表,ESRI公司SDE的存貯模式是分成四個表格,它還增加了一個Layers表和一個空間索引表。Layers表位於伺服器端,用於層的管理和維護;空間索引表(伺服器端)採用網格索引,用於實體的快速搜索)。
面向實體的數據模型在具體實現時採用的是完全面向對象的軟體開發方法,每個對象(獨立的地理實體)不僅具有自己獨立的屬性(含坐標數據),而且具有自己的行為(操作),能夠自己完成一些操作。雖然面向實體的數據模型在內部組織上可以按照拓撲關系進行,但是作者這里所說的模型強調對象的坐標存貯之間(尤其是面與線的坐標存貯)不具有依賴關系,這是它與拓撲關系模型的本質不同點。該模型能夠很好地克服拓撲關系數據模型的幾個缺點,具有實體管理、修改方便,查詢檢索、空間分析容易的優點,更重要的是它能夠方便地構造用戶需要的任何復雜地理實體,而且這種模式符合人們看待客觀世界的思維習慣,便於用戶理解和接受。同時,面向實體的數據模型自然地具有系統維護和擴充方便的優點。
這種模型是當今流行GIS軟體採用的最新數據模型,但也有一些缺點:
拓撲關系需臨時構建。由於面向實體的數據模型是以地理實體為中心的,並未以拓撲關系為基礎組織、存儲地理實體,表達地理空間,因此拓撲關系並不是一開始就存在,而是在需要時才臨時導出各種拓撲關系,這需要消耗一定的系統資源。也許有觀點認為,以實體為單位組織數據時,也可以將拓撲關系一開始就保存在實體的屬性表中,拓撲關系並不一定是臨時構建出來的。但仔細分析便可發現,這種方案對由多個幾何要素組成的實體(如一條組成要素不同的河流)不可行,因為拓撲關系不能有效准確地記錄。實際上這種方案只對由一個幾何要素組成的實體適用,但其本質上仍是拓撲關系數據模型,其缺點表徵與上面2.1節描述的完全相同,因而不是真正的面向實體數據模型。
動態分段、網路分析效率降低。在結點---弧段---多邊形拓撲關系鏈中,顯式的拓撲表有四個:結點---弧段表,弧段---結點表,弧段---多邊形表和多邊形---弧段表。有了這四個關系表,我們就能直接查找任意結點、弧段和多邊形的拓撲屬性,便於進行動態分段和網路分析等其它與拓撲關系有關的拓撲分析,基於拓撲數據模型的GIS可以很方便地做到這一點。但由於將四個拓撲表全部存貯會使系統的空間開銷成倍增大,因此一些軟體只存貯其中2個(如早期的System 9版本)或將弧段—結點、弧段—多邊形表合二為一(Arc/Info 8.0以前版本),被隱含的表可由顯示存在的表導出。即便這樣,基於拓撲數據模型的GIS在涉及拓撲關系的查詢和分析上仍然有較高的效率,而面向實體的數據模型由於要根據需要臨時構建拓撲關系,自然會使拓撲查詢和分析的效率降低。當然構建好的拓撲關系可存放起來,供以後使用。
實體間的公共點和公共邊重復存貯。由於面向實體的數據模型是以地理實體為基本單位進行數據組織和空間表達的,對每一個地理實體都進行完整存貯(存貯到點一級),在存貯坐標時是各對象獨立存貯,不再依賴其它對象,那麼就必然會導致實體間共有的公共點和公共邊重復存貯。
難以將管理、分析和處理定位到幾何要素一級。幾何要素是指點、弧段和多邊形等簡單圖形,有時構成同一實體的各個幾何要素之屬性差別較大(例如組成一塊宗地的各邊之面積不一樣,某一交通閉合環路的組成道路類型不一樣等),需要在地理實體的下一級---幾何要素一級上進行處理,拓撲數據模型可以直接進行處理,而面向實體的數據模型則需要首先對相關地理實體進行定位、分解,因而降低系統在這方面的性能。從本質上分析,我們不難得到,由於該種模型認為組成同一實體的幾何要素之屬性相同,因而忽略了幾何要素間的屬性差異,從而導致在系統存貯和處理機制上難以定位到幾何要素一級。
難以實現跨圖層的拓撲查詢和分析。如果這個問題放在拓撲關系模型中,則比較容易解決,因為各個要素的鄰接要素已事先存在,不僅已經是分層的,而且具有實際的地理屬性,因此只要順藤摸瓜查找鄰接要素並取得其地理屬性即可。但對於面向實體的數據模型,則不能有效地解決,因為臨時生成拓撲關系時其中的幾何要素一般屬於同一層,不可能自動生成跨圖層的地理屬性,必須做進一步的處理方才有可能解決。顯然,這種方法的效率不高。
I. 層次模型、網路模型和關系模型的區別是什麼
區別一:組成不同
1、層次模型將數據組織成一對多關系的結構,層次結構採用關鍵字來訪問其中每一層次的每一部分。
2、網狀模型用連接指令或指針來確定數據間的顯式連接關系,是具有多對多類型的數據組織方式。
3、關系模型以記錄組或數據表的形式組織數據,以便於利用各種地理實體與屬性之間的關系進行存儲和變換,不分層也無指針,是建立空間數據和屬性數據之間關系的一種非常有效的數據組織方法。
區別二:模型優點不同
1、層次模型優點:數據結構比較簡單清晰,資料庫的查詢效率高,提供了良好的完整性支持。
2、網狀模型優點:能夠更為直接地描述現實世界,如一個結點可以有多個雙親,結點直接可以有多種聯系;具有良好的性能,存取效率較高。
3、關系模型優點:建立在嚴格的數學概念的基礎上;概念單一,無論實體還是實體之間的聯系都是用關系來表示。對數據的檢索和更新結構也是關系;它的存取路徑對用戶透明,從而具有更高的獨立性、更好的安全保密性,簡化了程序員的工作個資料庫開發建立的工作。
區別三:模型缺點不同
1、層次模型缺點:現實世界中很多聯系是非層次性的,它不適用於結點之間具有多對多聯系;查詢子女結點必須通過雙親結點;由於結構嚴密,層次命令趨於程序化。
2、網狀模型缺點:結構比較復雜,隨應用環境的擴大,資料庫的結構就變得越來越復雜,不利於最終用戶掌握;網狀模型的DDL、DML復雜,並且要嵌入某一種高級語言(C、COBOL)中,用戶不容易掌握和使用。
3、關系模型缺點:存取路徑的隱蔽導致查詢效率不如格式化數據模型。