若軟磁盤轉動速度為360轉/分,當讀寫磁頭已經找到所選中的磁道上所需要的位置以後,磁道上信'息的每一位存取時間為4,即每秒250000位,或者說,每個字節的傳送時間為32網。但是,磁頭要尋找到所需磁道上所需信息位置所花費的時間較長。由於軟磁盤每轉一周的時間為167103,故在同一磁道上訪問一個新的信息,記錄所需的平均時間應8。假如一個信息記錄是隨機地存儲在某一磁道上的,則存儲時間主要取決於磁頭移動到選中磁道所花費的時間。移動每條磁道所需時間為6,磁頭向下放到盤麵上所需時間為16,在最壞情況下,磁頭從第一磁道移到最後一道磁道時所需的存取時間最長。
第二節 文件的組織形式
所謂文件組織形式是指記錄文件中排列的方式。有以下幾種不同組織形式的文件。
一、順序文件
在建立文件時,先送入的記錄排在前麵,後送入的排在後麵,各記錄是連續存放的。讀記錄時,先讀出排在最前麵的第一個記錄,然後第二個記錄……,即先入先出。這和日常生活中排隊買東西是類似的。也就是說,記錄在文件中排列的順序和讀出的順序及建立的順序三者是一致的。卡片文件、打印文件、磁帶文件都屬於順序文件。
二、隨機文件(也稱直接文件)
在建立文件時,記錄不必順序存放,由程序指定某一地址直接存放。依次先後送入的兩個記錄,在存儲設備上的物理位置不一定是相鄰的。讀記錄時,也需根據每次給定的鍵值計算出所需記錄的物理位置,再直接取出該記錄。
三、索引文件
帶有文件記錄索引的文件稱為索引文件。常見的有順序索引文件、非順序索引文件和鏈接索引文件。
順序索引文件的記錄是順序存放的。在物理存儲器上有三個區:索引區、基本數據區和溢出數據區。基本數據區的記錄是順序組織的,溢出數據區是為了文件擴充而設置的。
非順序索引文件的記錄是按其建立時的順序存放在物理存儲器中的。文件建立時,文件管理係統隻記入每個記錄的索引項,執行前係統將索引項按關鍵字順序排序。不需要溢出區,當文件增加一個記錄時,就送入第一個空白區,並相應修改索引表。
鏈接索引文件,這是在索引文件中使用鏈地址方法的一種文件組織方法。它適用於不定長記錄的文件。還可以用於多關鍵字的檢索,其中包括情報檢索中常用的倒排文件的檢索。
以上隻介紹了常見的三種文件,對順序文件和隨機文件以後我們還要舉例說明,其它文件的組織形式,如相對文件,可區分文件,通訊文件等等,我們就不介紹了。
第三節 文件的存取方式
以上簡單介紹了幾種常用文件的組織方式,下麵重點介紹文件的存取方式。
在企業管理中,不僅需要多種的輸入/輸出設備,如讀卡機、打印機、顯示器、繪圖儀等,而且還往往需要將菜些數據(產品庫存的數據、職工工資的數據、職工的人事檔案)長期存儲在磁盤或磁帶上,以便經常使用和修改。一個比較複雜的程序,會經常存取磁盤文件和磁帶文件(例如“排序”,是需要用到磁盤或磁帶文件的)。本節對磁盤文件的特性以及語言是怎樣處理磁盤文件的,作簡單的說明。
從一個文件中讀一個記錄或寫一個記錄到文件中有以下三種方式:
一、順序存取方式
每次讀(取)或寫(存)的記錄總是上次讀寫記錄後的下一個物理位置的記錄。例如要讀第100個記錄,必須先讀完前99個記錄,才能讀第100個記錄。每次都必須從第一個記錄開始讀寫,這種存取方式簡單,但讀寫費時。
二、隨機存取方式(直接存取方式)
直接指出記錄所在的物理位置來讀寫所指定的記錄,而不必順序地處理其前麵的記錄。顯然,這秒存取方式比順序存取效率要高。索引文件的“記錄(索引)”、相對文件的“記錄號”就是專為隨機存取的查找而設立的。對直接文件的存取則應直接指出其物理地址。
三、動態存取方式它是順序取存方式和隨機存取方式的結合,就是同一程序中既可用順序方式存取。
對初學者容易混淆的有兩點:
其一,索引文件建立時,不能用隨機方式寫入,而必須用順序方式寫入,建立後可以隨機讀寫。
其二,“文件組織形式”和“存取方式”這兩個概念要區分開,前者是指記錄按什麼原則在文件中排列的,後者指怎樣從文件中找到記錄。二者有一定聯係,但概念不同。
隻有磁盤文件可以實現隨機存取,因為它是周而複始地旋轉的,隨便什麼時候都可以對指定的某一物理地址中的記錄進行取存。而像卡片、磁帶、紙帶等順序文件,顯然不能在讀完第5號記錄之後而讀第3號記錄,因為第3號記錄已經過去了,不會自動返回。
最後說明一下,不是所有的輸入輸出設備都可以使用上述各種文件組織的,隻有在磁盤這種大容量存儲設備上才能建立索引文件、隨機文件和相對文件。而磁帶、紙帶、卡片、打印等文件都隻能是順序文件。
第四節 記錄與磁盤文件
一、記錄
在數據處理中,許多數據並不是互相孤立的,它們之間存在一定的聯係。例如在統計工資時,某一職工的工資清單中包含若幹項:職工名、收入、扣除、實發工資等,它們是互相聯係的。如果隻說收入97元,而不說是哪個職工的,那是沒有意義的。我們把屬於同一職工的各數據項組織在一起,以一個總的數據名“工資統計”來代表它。
可以看出,數據間存在著從屬關係,工資統計這一總項下包括職工名、收入、扣除、霽發工資等幾項收入又包括基本工資、獎金、夜班補助等幾項。扣除也包括幾項。我們把工資統計這一總的數據項稱為一個記錄,它包括一個職工的工資統計中的各有關數據項。記錄下分為幾項,其中職工名和實發工資是不能再分的,稱為初等項或基本項。初等數據項是數據的基本單位。而收入和扣除還可分為若幹項,因此它們是組合項。基本工資、獎金、夜班補助、病事假、房租費、水電費,托兒費等是初等項。