レコードを記録媒体上にどのようにして配置するか、
またどのようにアクセスするかには、いろいろな方法があります。
これをファイル編成法といい、
一般的に
順編成、区分編成、直接編成、索引編成
の 4つのファイル編成法が使われます。
■ 順編成
ファイルの先頭からレコードを連続して記録していく方式。
レコードが連続して記録され、格納効率が良いのですが、
どのレコードがどの位置にあるかを示す制御情報が一切含まれていません。
特定のレコードへアクセスするためには、
直接アクセスすることはできなくて、
先頭レコードから順に読み込んでいく必要があります。
(順次アクセス)。
レコードの追加、削除をする場合は、ファイルを再作成しなければなりません。
■ 直接編成
キー値を使い、レコードの格納するアドレスに変換して
格納場所、参照箇所にアクセスする方式を使います。
順編成とは異なり、
レコード記録順を問わないため、
レコードの追加や削除は容易であるという長所があります。
キー値からアドレスに変換する際、
キー値をそのままアドレスに適用する場合や、
キー値とアドレスの変換表などを用いる場合は、直接アドレス方式といいます。
キー値から直接、アドレスを導くので、大量のデータ処理には向いていません。
ハッシュ関数など、
何らかの計算をしてアドレス変換を行う方式を、間接アドレス方式といいます。
ハッシングによりアドレスを分散することができるので、
大量のデータ処理に向いていますが、
異なるキー値でも同じアドレスを指してしまう場合(シノニム)があるので、
別途、対策が必要です。
■ 区分編成
1つのファイルの中に
メンバと呼ばれる、いくつかの領域に区分けした順編成で構成されているデータ群の領域と、
メンバが位置するアドレス情報を管理するディレクトリから構成されます。
レコードを更新する場合に、メンバ単位で再作成すればよいので、
順編成よりは処理効率が良い。
■ 索引編成
索引情報が集められた索引領域、
レコードが記録される基本データ領域、
基本データ領域からあふれたレコードを記録するあふれ領域から構成されます。
順次アクセス、直接アクセスどちらでも可能です。
あふれ領域を用意することで、レコードの追加や削除にも柔軟に対応できるようになっています。
ただし、構造が複雑なため、
記録効率はあまりよくありません。
レコードの追加削除を繰り返すことで、
あふれ領域のデータが増大して、記録効率やアクセス時間が悪化した場合は、
再編成を行い、ファイル構造を作り直す必要があります。
(参考引用:徹底研究! 情報処理試験
)