MULTI KEY
FILE ORGANIZATION : MULTI KEY
Selain organisasi berkas sequential, relative, dan index sequential yang telah dibahas sebelumnya, berikut akan dibahas mengenai organisasi berkas multi key. Inti dari organisasi berkas ini adalah, sebuah berkas (file) harus dapat diakses secara langsung (direct) dari berbagai kunci atribut (key field) yang ditentukan.
Misalkan file MAHASISWA yang berisi biodata mahasiswa, harus bisa dicari record data seorang mahasiswa berdasarkan NPMnya, atau NAMAnya atau mungkin ALAMATnya. Organisasi berkas seperti ini sangat diperlukan karena berbagai user akan membutuhkan data yang sama dengan cara pandang yang berbeda. Sayangnya, jarang software database yang bisa melakukan hal ini (menyediakan fasilitas pengorganisasian berkasnya secara multi key).
Misalkan file MAHASISWA yang berisi biodata mahasiswa, harus bisa dicari record data seorang mahasiswa berdasarkan NPMnya, atau NAMAnya atau mungkin ALAMATnya. Organisasi berkas seperti ini sangat diperlukan karena berbagai user akan membutuhkan data yang sama dengan cara pandang yang berbeda. Sayangnya, jarang software database yang bisa melakukan hal ini (menyediakan fasilitas pengorganisasian berkasnya secara multi key).
Ada banyak cara untuk mengorganisasi berkas semacam ini, yaitu dengan cara:
(1) Inversion
Yaitu dengan cara yang mirip dengan organisasi relative yang satu tabel index-nya berisi key field yang terurut dan sebuah pointer yang menunjuk ke alamat di mana data disimpan. Bedanya, karena di sini dibutuhkan banyak kunci, maka di tabel tersebut disimpan pula kunci-kunci atribut lainnya yang dibutuhkan.
(2) Multi-list
Yaitu dengan cara yang hampir sama dengan cara pertama, yaitu dibuat tabel index yang terurut key field-nya dan penunjuk ke nomor record (pertama) datanya, hanya di setiap record ditambahkan pointer (penunjuk) ke record-record berikutnya sesuai urutan key field yang ditentukannya. Tentu penunjuk itu akan berubah datanya bila akses dilakukan dengan key field lainnya.
Organisasi Berkas Dengan Banyak Key
Organisasi berkas yang memperbolehkan record diakses oleh lebih dari satu key field disebut organisasi berkas dengan banyak key.
![]() |
Ada 2 teknik dasar untuk pemberian hubungan antara sebuah indeks dan data record dari berkas, yaitu :
§ Inversion
§ Multi-list
Definisi dan Aplikasi Berkas dengan Banyak Key
Banyak sistem informasi interaktif memerlukan dukungan dari berkas banyak key.
Contoh :
Sebuah sistem perbankan yang mempunyai beberapa pemakai (user), seperti kasir, pegawai kredit, manajer cabang, pegawai bank, nasabah dan lain-lain. Semuanya memerlukan akses data yang sama dengan format record :
![]() |
Adanya pemakai yang berbeda memerlukan akses record-record ini dalam cara yang berbeda.
Kasir | Mengidentifikasikan record account menurut nilai ID. |
Kredit | Akses semua record menurut nilai OVERDRAW LIMIT atau semua record account dengan nilai SOCNO. |
Manajer Cabang | Akses semua record menurut Branch dan Type. |
Pegawai Bank | Membuat laporan berkala untuk semua record account yang disortir berdasarkan ID. |
Nasabah | Memerlukan akses recordnya dengan memberikan ID yang dimilikinya atau kombinasi dari NAME, SOCNO dan Type. |
Satu pendekatan yang dapat mendukung semua jenis akses adalah dipunyainya banyak berkas yang berbeda. Setiap berkas diorganisasi untuk melayani satu jenis keperluan.
Maka untuk contoh sistem perbankan di atas harus ada :
u | File account yang organisasinya indeks sequential dengan nilai key ID | Untuk melayani kasir, pegawai bank dan nasabah. |
u | File account yang organisasinya sequential dengan record diurut menurut OVERDRAW LIMIT | Untuk melayani pegawai kredit. |
u | File account yang organisasinya relatif dengan nilai key SOCNO | Untuk melayani pegawai kredit. |
u | File account yang organisasinya sequential dengan record diurut menurut GROUP-CODE | Untuk melayani manajer cabang. |
u | File account yang organisasinya relatif dengan nilai key NAME, SOCNO dan TYPE | Untuk melayani nasabah. |
Jadi kita mempunyai 5 file, semuanya mempunyai record yang sama. Kelima file itu hanya berbeda dalam organisasi dan cara aksesnya.
Organisasi Inverter File
Inversi : Satu pendekatan dasar untuk memberikan hubungan antara sebuah indeks dan data record dari file.
Inverted file : Sebuah key pada indeks inversi mempunyai semua nilai key dimana masing-masing nilai key mempunyai penunjuk ke record yang bersangkutan. Indeks inversi yang sederhana dibentuk sebagai sebuah tabel.
Contoh :
Inversi file ACCOUNT terhadap SOCNO menghasilkan indeks inversi.
SOCNO | ADDRESS |
001234123 123456789 213823456 299167305 399042131 411625331 412631467 426135447 445062681 459463001 513014265 612305116 626311660 692122222 713214622 798392289 821346211 912346789 923146154 987654321 | 6 5 14 16 4 13 7 20 17 1 8 9 18 12 3 15 2 19 11 10 |
Sebuah indeks inversi dengan key SOCNO untuk sebuah relatif file dengan nilai key ID akan memberikan sebuah file yang dapat diakses langsung oleh sebuah ID atau SOCNO.
SOCNO | ID |
001234123 123456789 213823456 299167305 399042131 411625331 412631467 426135447 445062681 459463001 513014265 612305116 626311660 692122222 713214622 798392289 821346211 912346789 923146154 987654321 | 291821 208432 486212 534216 201431 415631 300123 696123 535218 111111 310103 324196 641230 387122 198121 511211 112131 686116 386132 335812 |
| Primary key : Key yang dipakai untuk menentukan struktur storage dari file, sedangkan key yang lainnya disebut secondary key.
| Completely inverted : File yang mempunyai indeks inversi untuk setiap data field.
| Partialy inverted file : File yang bukan completely inverted tapi paling sedikit mempunyai satu indeks inversi
Pada contoh di atas, nilai SOCNO adalah unik. Setiap SOCNO dalam indeks inversi mempunyai record. Indeks inversi dapat juga dipakai dengan key yang bukan unik.
GROUP-CODEBRANCH TYPE | ID | |
DT DT EA NE NE NW NW WE | 001002 001 001 002 001 002 002 | 111111, 201431, 310103, 686116 198121, 335812, 486212, 641230 324196, 534216, 535218 415631 300123, 696123 112131, 208432, 511211 291821 386132, 387122 |
Satu hal yang baik dari inversi file adalah beberapa pertanyaan di bawah ini dapat dijawab tanpa akses data file, cukup dengan indeks inversinya.
Ø Apakah ada indeks untuk SOCNO = ‘414556233’ ?
Ø Berapa banyak account dengan GROUP-CODE = ‘EA001’ ?
Ø Berapa banyak account dengann BRANCH = ‘NE’ ?
Ø Apakah BRANCH = ‘NE’ mempunyai TYPE = ‘001’ ?
Organisasi Multi-List File
Organisasi multi-list file : Suatu pendekatan lain yang memberikan hubungan antara sebuah indeks dan data record dari sebuah file
Inverted file : Mirip dengan organisasi relative yang satu tabel index-nya berisi key field yang terurut dan sebuah pointer yang menunjuk ke alamat di mana data disimpan. Bedanya, karena di sini dibutuhkan banyak kunci, maka di tabel tersebut disimpan pula kunci-kunci atribut lainnya yang dibutuhkan.
Indeks multi-list : Sebuah nilai key mempunyai hanya sebuah penunjuk untuk data record pertama dengan nilai key. Data record mempunyai penunjuk untuk data record selanjutnya dengan nilai key dan seterusnya. Maka terdapat sebuah linked-list dari data record untuk setiap nilai dari secondary key.
MULTI-LIST ORGANIZATION
GROUP-CODEBRANCH TYPE | ID | |
DTDT EA NE NE NW NW WE | 001002 001 001 002 001 002 002 | 111111 198121 324196 415631 300123 112131 291821 386132 |
Multi-List indeks untuk GROUP-CODE secondary key.
GROUP-CODEBRANCH TYPE | ID |
0. 100. 200. 250 | 111111 112131 198121 511211 |
Multi-List indeks untuk OVERDRAW-LIMIT secondary key
Contoh :
Ada 3 cara akses yang potensial dalam menjawab pertanyaan :
Daftar nilai ID untuk account dengan GROUP-CODE = ‘EA001’ dan OVERDRAW-LIMIT = 100 ?
Data file dapat dicari secara sequential, indeks GROUP-CODE atau dengan memakai OVERDRAW-LIMIT.
Mana cara yang terbaik ?
Pencarian secara sequential memerlukan akses sampai 20 data record, menggunakan indeks GROUP-CODE berarti akses sampai 3 data record dan memakai indeks OVERDRAW-LIMIT berarti akses sampai 8 data record.
Dari ketiga cara di atas, yang terbaik adalah menggunakan indeks GROUP-CODE.
Record Address | ID | Name | Group-Code Branch | Type | SOCNO | Balance | Limit | |
Last | First | |||||||
1 | 111111 | Dean | John | DT | 001 | 45946301 | 100.50 | 0. |
2 | 112131 | Amore | Carol | NW | 001 | 821346211 | 2311.20 | 100. |
3 | 198121 | Rice | Bess | DT | 002 | 713214622 | -191.87 | 200. |
4 | 201431 | Parker | Ola | DT | 001 | 399042131 | 3142.93 | 100. |
5 | 208432 | Anderson | Barbara | NW | 001 | 123456789 | 95.26 | 0. |
6 | 291821 | Anderson | Brent | NW | 002 | 001234123 | 146.92 | 0. |
7 | 300123 | Hart | Allison | NE | 002 | 412631467 | 3000.00 | 100. |
8 | 310103 | Tahoe | Serena | DT | 001 | 513014265 | 243.63 | 0. |
9 | 324196 | Bones | Igor | EA | 001 | 612305116 | 0.02 | 0. |
10 | 335812 | Bee | Vera | DT | 002 | 987654321 | 88.72 | 0. |
11 | 386132 | Arc | Jean | WE | 002 | 923146154 | -89.98 | 100. |
12 | 387122 | Ells | Joshua | WE | 002 | 692122222 | 10.95 | 0. |
13 | 415631 | Belle | Ellie | NE | 001 | 411625331 | 426.86 | 100. |
14 | 486212 | Matthers | Ann | DT | 002 | 213823456 | 893.92 | 100. |
15 | 511211 | Snuggs | John | NW | 001 | 798392289 | 2814.12 | 250. |
16 | 534216 | Loomin | Tim | EA | 001 | 299167305 | 296.12 | 250. |
17 | 535218 | Ellsworth | Nancy | EA | 001 | 445062681 | 2814.12 | 250. |
18 | 641230 | Wells | Chuck | DT | 002 | 626311660 | -98.14 | 100. |
19 | 686116 | Sworth | Lauren | DT | 001 | 912346789 | 3216.16 | 100. |
20 | 696123 | Gunness | Marion | NE | 002 | 426135447 | 95.93 | 25. |
Tidak usah di transfaransi
Record Address | ID | Name | Group-Code | SOCNO | Balance | Overdraw Limit | Next | ||
Last | First | Branch | Type | ||||||
1 | 111111 | Dean | John | DT | 001 | 45946301 | 100.50 | 0. | 208432 |
2 | 112131 | Amore | Carol | NW | 001 | 821346211 | 2311.20 | 100. | 201431 |
3 | 198121 | Rice | Bess | DT | 002 | 713214622 | -191.87 | 200. | 0. |
4 | 201431 | Parker | Ola | DT | 001 | 399042131 | 3142.93 | 100. | 300123 |
5 | 208432 | Anderson | Barbara | NW | 001 | 123456789 | 95.26 | 0. | 291821 |
6 | 291821 | Anderson | Brent | NW | 002 | 001234123 | 146.92 | 0. | 310103 |
7 | 300123 | Hart | Allison | NE | 002 | 412631467 | 3000.00 | 100. | 386132 |
8 | 310103 | Tahoe | Serena | DT | 001 | 513014265 | 243.63 | 0. | 324196 |
9 | 324196 | Bones | Igor | EA | 001 | 612305116 | 0.02 | 0. | 335812 |
10 | 335812 | Bee | Vera | DT | 002 | 987654321 | 88.72 | 0. | 387122 |
11 | 386132 | Arc | Jean | WE | 002 | 923146154 | -89.98 | 100. | 415631 |
12 | 387122 | Ells | Joshua | WE | 002 | 692122222 | 10.95 | 0. | 0. |
13 | 415631 | Belle | Ellie | NE | 001 | 411625331 | 426.86 | 100. | 486212 |
14 | 486212 | Matthers | Ann | DT | 002 | 213823456 | 893.92 | 100. | 641230 |
15 | 511211 | Snuggs | John | NW | 001 | 798392289 | 2814.12 | 250. | 534216 |
16 | 534216 | Loomin | Tim | EA | 001 | 299167305 | 296.12 | 250. | 535218 |
17 | 535218 | Ellsworth | Nancy | EA | 001 | 445062681 | 2814.12 | 250. | 696123 |
18 | 641230 | Wells | Chuck | DT | 002 | 626311660 | -98.14 | 100. | 686116 |
19 | 686116 | Sworth | Lauren | DT | 001 | 912346789 | 3216.16 | 100. | 0. |
20 | 696123 | Gunness | Marion | NE | 002 | 426135447 | 95.93 | 25. | 0. |
Tidak ada komentar:
Posting Komentar