何謂資料庫? 
       電腦中的應用軟體或遊戲多數需要用到暫時或永久儲存的一些資料,如果資料內容不需要常常變動就簡單的以檔案儲存;但是如果內容是常常變動的,譬如學生成績、使用者的帳號密碼、遊戲的目前進度等等,我們必須常常更動資料的一小部分,如果每次都用檔案讀寫,就必須將整檔讀出或寫入,過程中還必須寫很多程式碼解析檔案內容找到我們要用的一小部分資料,不僅累死程式師,也浪費電腦資源,讓程式執行變得很慢很沒效率。
        因此,現在的應用軟體絕大多數都會使用資料庫,它可以讓資料變成類似表格的資料結構,增減或修改資料時,程式師腦袋裡面只要知道資料在哪一張表格第幾列(筆)第幾格(欄)?以及需要怎麼改就可以了!同時間,資料庫檔案內部其實還藏有很多小程式,可以暗中幫助我們更快地找到資料與修改、刪除或新增資料。你可以想像資料庫很像一個大的郵局或銀行,內部有很多資料,也有很多人在處理各種複雜的流程,但是使用者不需要知道太多內部細節,只要知道自己要寄甚麼信?要存或提多少錢?按照規定填寫資料,就可以完成我們需要的工作,而且很快!
這是資料

這叫資料庫


為何一定要網路? 
       
通常資料庫不會只是私人使用,譬如所有的網路搜尋引擎背後都是一個非常龐大的資料庫,如果只有Yahoo或Google的管理者可以直接上機查詢,那就失去資料庫存在的意義了!因此99%的資料庫應用都會配合網路,讓很多使用者分享共用。事實上,資料庫加上網路會讓這種應用程式非常複雜,加上設計者還必須思考自己真正想設計的主要程式,嚴格說這不是人幹的事情!回到約20年前網路資料庫剛剛開始盛行的時代,如果你的腦袋可以處理這種複雜的事情一定可以變成科技新貴的!請看底下的示意圖,體驗一下網路資料庫的運作方式吧。

網路資料庫大概是這樣運作的

很多人同時用的時候


不會修車也可以開車!本課程應用重於理論
        所幸時代進步之後,越來越多的技術會更成熟且被封裝到程式軟體的內部。正如我們多數人都不會修車,但是都可以很快學會騎車或開車,網路資料庫也是如此,本課程就是要教大家如何使用既有資源學會設計一些網路資料庫的應用程式。嚴格說,學習詳細的理論架構並不是那麼重要,先學會製作一些有功能的網路資料庫之後應該就可以輕鬆理解主要的資訊傳遞流程,這就夠了! 總之本課程是以應用為主,希望用一些簡單的範例,讓同學能夠體驗到日常接觸的很多網路資料庫應用程式或遊戲軟體大概是如何設計與運作的。

甚麼是SQL?
        玩到資料庫一定會常看到SQL(發音如中文的"西擴")這個字眼,這是 Structured Query Language 的縮寫,全文翻譯是『結構化查詢語言』。首先要知道的概念是資料庫不僅是單純的電腦檔案,如同影像檔必須有 PhotoShop 之類的軟體解讀處理,資料庫檔案也必須有軟體開啟。但是早期每種資料庫格式是由各個公司自行開發的,當我們要在自己設計的程式中使用這些資料庫時會很困難,針對每種資料庫都必須寫不同的程式來使用。因此業界逐漸發展出資料庫可以共同使用的『程式語言』,那就是SQL了!現在的狀況是各種高階程式語言要用資料庫時可以在自己的程式內使用SQL的語法指令,再經過各種資料庫格式提供的中介軟體(一般稱為資料庫引擎)翻譯就可以操作各種資料庫了,好處是不必因為想換一個資料庫就連原始程式碼也全部要改!久而久之,SQL這個字眼也變成資料庫的一個別名了!SQL與應用程式及各種資料庫的關係圖如下:


資料庫放在哪裡?
        如同網頁需要經過『網頁伺服器』(Web Server)的軟體才能讓網路上的使用者連線;資料庫也必須有一個稱為『資料庫管理系統』(DBMS, DataBase Management System)的軟體,所有的資料庫檔案都必須放在指定的目錄由這個軟體集中管理。我們寫的程式如果要使用資料庫就必須像進入受管制的網站一樣,要登入連結 DBMS才能使用裡面的資料。也因此讓使用程序非常麻煩,還必須先購買安裝昂貴的 DBMS,或申請使用某個遠端的DBMS。因此稍早的時候即使只是想學習寫資料庫程式都很困難。
標準資料庫使用架構
 

        比較例外的狀況是 Access資料庫可以不必經過DBMS,就像一般檔案一樣直接供應用程式使用,所以初學者多半以此模式開始學習使用資料庫。更好的消息是微軟公司目前也提供了免費的 SQL Server Express軟體(這也是DBMS哦!),通常在我們安裝程式語言軟體(Visual Studio)時就會順便裝好了,所以我們可以免費使用正式規格的資料庫與DBMS了!當然更棒的是在微軟的免費網頁程式開發軟體 Web Developer Express內就可以直接建立與管理標準的SQL資料庫,使用方式也與 Access非常相似。這表示我們可以在學習階段先不必管資料庫放在哪邊,要怎麼掛檔案到DBMS?要怎麼登入連結?等等麻煩的問題,專心寫我們要的程式功能就好,以後正式上線時如果必須將資料庫掛到某個DBMS也會有簡便的方法完成。
簡易資料庫使用架構

本課程要學的東西
        網路資料庫是想靠寫程式過活的人不能不熟悉的技術,幾乎沒有一種應用程式不會用到資料庫。但是因為要妥善使用資料庫必須學的東西很多,大致包括:
    1.資料庫本身的複雜架構(理論與設計)
    2.如何使用資料庫管理系統
    3.SQL語法的操作

        以本系(數位遊戲設計系)的屬性來說,我們並不強調要學會建置龐大複雜的資料庫系統,譬如像學校校務系統這類的東西,所以上述第一項我們不會深入。我們只會用到結構簡單的資料庫結構,完成如使用者資料管理、圖檔或留言訊息管理之類的功能。其次,目前的程式設計環境已經將資料庫管理系統的操作簡化許多,我們的主要目標也不是培養網路管理人才,所以上述第二項也一樣不會講很多。
        所以啦!本課程的重點其實是第三項SQL與應用程式設計目的之間的結合與使用。課程前段當然必須介紹基本的Access與SQL資料庫建立的方式,之後就會介紹如何以程式控制項連結、檢視與修改資料庫的資料。接下來就是許多使用ASP.NET設計的實用小型範例,讓同學充分體驗我們常常接觸到的一些網路應用程式或遊戲是怎麼使用網路資料庫的。
        本課程後段會教各位同學使用ADO.NET的概念及語法操作資料庫的程式,它事實上是ASP.NET資料庫控制項的基礎,直接使用ADO.NET寫程式讓你可以跳脫這些控制項的功能限制,更快更有效的處理大量或複雜的資料,也可以讓資料庫資料與陣列運算等高階程式(VB或C#)的原有機制充分結合。如果你也學會了使用ADO.NET寫資料庫程式,那麼離真正的專業水準就不遠了!