1、Ch1資料庫管理概念,1-1資料庫環境導引 1-1-1資料庫的發展 日常生活中,資料可能包含有下列項目: 文字:包含我們人類所使用的各種語言文字、符號等。 數字:可提供計算能力的數值,包含在數學等計算領域。 聲音:將聲波轉換為數位訊號後,可儲存在電腦之中。 圖形:將圖的每一點及色彩儲存成數位檔案。 影片:包含類比式和全數位式的檔案,要看攝影機所儲存的格式。 訊號:有些訊號是人類無法解讀但存在在這個世界上的,例如電磁波、幅射等。電腦儲存資料庫的方式-數位 1-1-2資料庫的概念 資料(Data) 在作有效的管理及運用後,就成為資訊(Information) ,而將資料集合成 一定數量的時候,我們
2、就可以將所收集到的資料,稱為資料庫。資料庫分為一、 階層式、二、網路式、三、關聯式,目前較為廣泛使用且容易的是關聯式資料庫。,1-1-3資料庫的應用 資料庫其實無所不在,當我們需要紀錄某些事情或資料時,在某個程度以上,就可以利用資料庫來運作。其實目前許多應用程式都使用自訂的資料庫格式,只是我們有時會感覺不出來,這個程式具有資料庫的功能。 工業運算: 股市投資: 氣象資料: 新聞資料: 網際網路: 搜尋引擎: 字典百科: 行動通訊: 視聽娛樂:,運動體育: 教育學習: 圖書出版: 商業金融: 醫療保健: 大眾媒體: 軍事國防: 遊戲軟體:,1-1-4什麼人需要資料庫 用了資料庫和一般使用電腦的差
3、異: 個人:可以幫助個人管理文件、通訊錄、郵件、記事、帳務等 企業組織 :可以紀錄公司之間的交易內容 政府機構 :可以讓資料電子化,有效提昇行政效率 工廠:可以有效降低成本 網站:可以讓原本只有展示功能增加更多互動功能 學校 :可以幫助學校紀錄事項。 1-1-5什麼人來開發資料庫 自己 組織成員 資訊部門 資訊廠商,1-2資料庫系統的架構 1-2-1何謂資料庫 將一團團的資料放入一個桶子,而資料放在一個大桶子中,就像一個倉庫,而這個倉庫我們稱之為資料庫:1-2-2將資料存入資料庫 資料庫系統就像是倉庫管理員,幫我們將資料放入正確的位置,我們要取出資料時,也可以由資料庫系統幫我們取出,增加效率:
4、,將這個觀念再擴大,將一個資料庫放入許多不同來源的資料,這些資料的種類都不同,所以要存放的位置也不同,所以一個資料庫中,就需要更多的位置來放這些資料,所以我們在資料庫就需要使用許多的表格(Table) 來存放各種不同用途的資料:,再將系統層面擴大,讓一個資料庫系統和資料庫,可以讓許多人來使用,這時的資料庫系統,就有分為一人版和多人使用版本,一人版不見得是只能讓一個人使用,而是誰來使用,權限都一樣,沒有分別,而多人版是可以區分使用者的來源,依不同使用者,給予不同的使用權限:,1-2-3資料庫的使用 在一個資料庫系統中,資料庫的數量可以在一個以上,基本上是同時運作的,例如下圖,在一個系統平台中可以
5、有許多的資料庫系統,而資料庫系統本身可以有許多的資料庫,而每個資料庫存取、運作都是各自獨立,但也可以相互支援:,一部電腦是一個系統平台,它所安裝的資料庫系統,除了本身的使用者可以使用,也可以經由網路讓其他人使用,早期電腦都是單機版,只能一個人用,但發展到網路版,已經可以多人同時存取,增加效益。,1-3資料庫和檔案 1-3-1目錄結構 在磁碟儲存媒介中,都會有一個根目錄,這個根目錄是唯一的,也是最大的目錄,所有的目錄都必需由此目錄向下延伸,而目錄可以一直衍生更多的目錄出來。,1-3-2使用目錄來分類資料 如果我們將目錄整理一下,並以人事系統為例,它要負責人事的檔案、薪資資料、單據資料等,我們就將
6、第一層的目錄分為這三大類,而人事檔案類,分為主管級人事檔和基層員工檔,所以第二層的目錄有兩個,若我們要找主管級的人事檔,就可以很快的用這個表格找到它放置的位置,然後再進行找尋的動作:,1-3-3檔案的架構 如果目錄是個盒子,那盒子本身就沒什麼內容,而盒子所裝的東西才是精彩的地方。剛提到的目錄除了本身可以延伸出更多的目錄,還可以裝下其他的檔案的。,1-3-4使用檔案來儲存資料 依照我們所分的目錄,我們可以將檔案放入正確的目錄,我們要找出檔案時,就會更加方便。例如我們在先前所分類好的目錄結構如下,其中的薪資資料,業務部的部份,我們可以到該目錄去查看,就可以看到五個檔案,分別是92年1月5月的薪資表
7、,我們需要哪個時期的薪資表,在此都可以找到:,雖然目錄可以區隔檔案,但不代表每個目錄和目錄、檔案和檔案之間有何關係,我們可以隨時移動目錄或檔案,也可以改變目錄或檔案的名稱,甚至同一個目錄放的檔案格式都不太相同,因此自由度很大,但也不易管理。,若要找尋檔案,只能從檔案名稱去找,頂多可以找內含什麼文字而己,然後利用日期、類型、大小等選項來縮小搜尋範圍,和真正的資料庫比起來,有很大一段差距:,1-4資料庫環境概念 1-4-1什麼是資料 現實生活中的資料,是多樣性的,例如文字、聲音、圖片、影像等,但這些都有一些共通性,就是這些資料都是人類易於辨識,且為類比的資料,例如文字、語言,隨著不同時期、不同國家
8、,都會略有改變,而每個人即使說的話、語言相同,也會有語調上、音頻上的不同,這些不同,就有可能讓整個意思作改變。在電腦的世界中,電腦只有0與1的數位訊號,所有的資料都只有用這兩個訊號紀錄下來,無論是數字、文字、聲音等,都要轉換成電腦的數位訊號才能儲存。1-4-2資料的本質 資料庫的來源就是資料,如果沒有資料,那資料庫設計的再好也是空殼,因此找尋適當的資料來源,也就能幫助我們找到資料庫最基本的設計動力。 資料的來源 要找到哪些是資料,首先要看看需求是什麼,我們若能先了解需求,就能直接找出資料,這個和是不是懂資料庫一點關係也沒有。,例如一個公司有管理部、業務部、製造部、研發部、資訊部,這些群體之中,
9、每一個都有資料來源,我們可以先將這幾個部門串接起來。一個組織架構圖,最能表現資料的分佈,越是高的層級,人數越少,產生的資料量越少,越是低的層級,人數越多,產生的資料量越多,而需求也是如此,層級越高,所需的資料則是越精簡,且需要整理過後的資料,而最初始的資料則是由下往上產生的:,我們可以將最基本的架構放大,可以判斷何者就是一個資料區塊,例如下圖,人事組是一個區塊,出納組是一個區塊,每一個組都是一個區塊,也就是一個組就可以建置一個以上的資料庫系統,而且每個資料庫之間,也將獨自設定完成後,再一一串連:,我們可以從一個資料庫系統分析使用者需求的內容,例如人事組,假設他們要管理六個事情,包含發放薪資、請
10、假單、員工資料、徵人等,這些都是要處理的項目,一旦有處理,就有紀錄,有紀錄就有資料要存檔,因此我們可以從此發現人事組的系統中,所處理的工作項目,就是一個個資料庫系統:,資料的屬性 以上述說明的各種資料來源,我們都可以清楚看出其中的資料項目有哪些,例如出勤紀錄,最早期就在一張紙寫上姓名,每一天就一個日期,然後將上班和下班的時間填入,後來有了打卡鐘的設備,但是所紀錄的項目也都是一樣,只是改由機器來計時:,從上述的表格中,假設要填入的只有姓名、日期、上班時間和下班時間,那這四樣就是出勤紀錄的屬性。我們可以將上述的屬性轉換成表格的方式來紀錄。表格如下,姓名都是ANDY,日期在1995/1/2之後不斷延
11、續下去,而因為每天都只有一次的上班時間和一次的下班時間(假設正常上下班,且為單班制),所以四個屬性,可以紀錄的筆數就可以無限延伸:,資料的結構 在資料庫之中,以一個紀錄最基本的區域劃分,就是一個一個表格Table,例如紀錄員工的資料為員工表格(Staff),出勤紀錄為出勤表格(Attend),我們可以給它一個英文的名稱,可以方便資料庫辨識。,而一個表格的欄稱為Field或Attribute,不能稱為Column,一個表格最少要一個欄以上,一個欄位就代表一個項目,每個項目都有自己的型態和長度,不過放在左邊還是右邊倒不是很重要,只要不重覆、不缺少才是重點。而一個表格列稱為Record,一個表格之中
12、可以完全沒有Record,但也可以有無限筆的Record,只要資料庫撐的住即可,而Record是在上面或下面也沒有關係,而每一列的資料都是對映欄位來輸入的。以下就是一個出勤表格的說明:,資料的內容 資料的內容,就是我們要紀錄的資料,但是有些紀錄的資料和我們真正放在資料庫中的結果不盡相同,主要是使用者在填入資料時是以使用方便、顯示明確為基準,但是資料庫中我們則是以程式設計、資料庫規則為基準,因此兩者之間我們要作一點轉換。例如我們的出勤紀錄的日期格式是西元年,可是若以台灣人的習慣,可能以中華民國來記的也算多數,但資料庫只能儲存西元年,所以我們要讓使用者輸入民國年,但在資料庫內卻是西元年:,在資料庫
13、的儲存格式中,也可以設定各種不同的格式,大部份的資料庫僅提供【年/月/日】的格式,而現在的資料庫為了應付各種需求,提供了許多格式,例如下圖,一個【日期/時間】欄位就有通用日期、完整日期、中文日期、簡短日期等,不過這裡的中文日期是指年使用兩位數來紀錄,而非民國年,所以1994等於94,而非83:,以數字來說,也有所謂的位元組、整數、長整數、單精準數等,如果我們設定的是整數,卻儲存了小數點的數字,資料庫系統會自動轉換成整數,所以這是資料庫提供的功能之一:,1-5階層式資料庫 資料庫從早期的檔案系統(File System)階層式資料庫(Hierarchy Database)網路型資料庫(Netwo
14、rk Database)到關聯式資料庫(Relational Database),而目前最新的技術為物件導向資料庫(Object-Oriented Database),資料庫技術不斷的演變,不只是程式或系統分析的領域,資料庫已是電腦科學領域中一門高深的學問了。企業階層與資料庫 階層式資料庫是一個很容易理解的資料庫,構造最為簡單,一般我們要繪製企業組織圖,從最上面的階層一個一個排下來,幾乎每個人都作的到,所以階層式資料庫觀念早就在是最基本的常識了。 例如下圖,一個層級一個層級很明顯,每一個單位都可以是一個資料表格,而表格和表格必需要透過階層的關係才能存取,例如人事組要先到管理部研發部,才能找到研
15、究組,不能直接跳過階層的關係:,圖書館與階層資料庫如果我們改用圖書館的觀念來說,在圖書館內的資料是以書來分類,假設分類如下,有小說、雜誌、字典等,在每一個領域中再將作者分類,每個作者再列出所寫的書,所以階層的關係是圖書館領域分類作者分類書籍分類:,1-6網路式資料庫 網路式資料庫在某個層面很像階層式資料庫,而階層式資料庫是可以直接轉換成網路資料庫的,因為架構相同,只是階層式資料庫需要有階層觀念,而網路式資料庫不需要。指標 網路式資料庫典型的就就是指標,假設有六個單位,而每個單位之間都有能力和其他關聯在一起,且彼此串連,這時一個單位可以和數個單位連結,甚至彼此之間可以複選、循環都無所謂,沒有固定
16、規則:,課程與網路式資料庫 若我們以課程來製作網路式資料庫,課程、老師、學生都是一個個實體單位,彼此之間會有串連,而我們從每一個單位向其他單位看,都能有合理的解釋。以課程來說:一個課程可以選擇一個或兩個以上的老師來教,一個課程可以有許多學生來上 以老師來說:一個老師可以教一個或兩個以上的課程,一個老師可以教導許多學生 以學生來說:一個學生可以選擇一個或兩個以上的課程,也可以選擇一個或數個指導老師,我們將上述的關係繪製成圖,一個單位可以和其他單位有一個以上不等的關係:,1-7關聯式資料庫 實體間的關聯 假設我們有兩個單位,人事組會有員工的資料,其中記載每個人的基本薪資,而每個月所發的薪資會參考每
17、天的出勤紀錄,扣除出差和請假單,就可以輸出成一般員工的薪資條。但是業務組會有業績獎金、達成獎金、主管津貼等,而這些津貼依每個人、每天的業績不同,又可能有不同的金額,因此整合計算後,再加上原本一般人要計算的基本薪資,扣除出差和請假,就可以輸出成業務員的薪資條:,如果我們以圖形來看,似乎和網路式資料庫有點像,可是這其中的觀念差異相當大,關聯式資料庫是必需依照表格內的部份屬性關聯為基準,而網路式是以表格和表格之間相連,當要找尋某一個結果,需要從一個表格到另一個表格,逐筆向上找尋或向下找尋,而且每一個表格之間的內容是可以重覆的。在關聯式資料庫中,能紀錄的資料以盡量不能重覆為基準,例如員工資料紀錄了員工薪資、姓名,在其他地方就不能紀錄,而出差單、請假單、獎金和津貼等都是以員工的編號為關聯。 例如下圖,員工表格內有欄位紀錄員工編號SNUM,在請假單中,只要使用SNUM,就知道是誰請假,而出差單也使用SNUM,就知道誰出差,SNUM便是這三個表格之間作為關聯的依據。,在關聯式資料表格中,會使用一個欄位作為辨識的欄位,例如上圖的員工會使用員工編號SNUM,請假單會有請假單號DNUM,出差會有出差單號XNUM,這些編號在該表格之中都具有唯一性,這種稱為Key,Key有很多種,而這正是關聯式資料庫的主要功能之一。,