ORGANISASI BERKAS DENGAN BANYAK KEY
ORGANISASI BERKAS DENGAN BANYAK KEY
PENGERTIAN ORGANISASI BERKAS DENGAN BANYAK KEY PENGERTIAN ORGANISASI BERKAS DENGAN BANYAK KEY
Organisasi berkas yang memperbolehkan record diakses oleh lebih Organisasi berkas yang memperbolehkan record diakses oleh lebih dari satu key field disebut organisasi berkas dengan banyak key.
dari satu key field disebut organisasi berkas dengan banyak key.
yesyes
nono
yes no yes no
yes noyes no
Gambar 1. Dasar Organisasi Berkas Gambar 1. Dasar Organisasi Berkas
Ada banyak teknik yang dipakai untuk organisasi berkas dengan Ada banyak teknik yang dipakai untuk organisasi berkas dengan banyak key ini. Hampir semua pendekatan bergantung pada banyak key ini. Hampir semua pendekatan bergantung pada pembentukan indeks yang dapat memberi akses langsung dengan pembentukan indeks yang dapat memberi akses langsung dengan nilai key.
nilai key.
Ada 2 teknik dasar untuk pemberiaan hubungan antara sebuah indeks Ada 2 teknik dasar untuk pemberiaan hubungan antara sebuah indeks dan data record dari berkas, yaitu:
dan data record dari berkas, yaitu:
InversionInversion
Multi-listMulti-list
ONE ACCESS ONE ACCESS KEY ?
KEY ?
SEQUENTIAL SEQUENTIAL ACCESS ONLY ? ACCESS ONLY ?
SEQUENTIAL SEQUENTIAL ORGANIZATION
ORGANIZATION DIRECT ACCESS DIRECT ACCESS
ONLY ? ONLY ?
RELATIVE RELATIVE ORGANIZATION
ORGANIZATION INDEXEDINDEXED SEQUENTIAL SEQUENTIAL ORGANIZATION ORGANIZATION
DEFINISI DAN APLIKASI BERKAS DENGAN BANYAK KEY DEFINISI DAN APLIKASI BERKAS DENGAN BANYAK KEY
Banyak sistem informasi interaktif memerlukan dukungan dari berkas Banyak sistem informasi interaktif memerlukan dukungan dari berkas banyak key.
banyak key.
Contoh: Contoh:
Sebuah sistem perbankan yang mempunyai beberapa pemakai Sebuah sistem perbankan yang mempunyai beberapa pemakai (user), seperti kasir, pegawai kredit, manajer cabang, pegawai bank, (user), seperti kasir, pegawai kredit, manajer cabang, pegawai bank, nasabah, dll.
nasabah, dll.
Semuanya memerlukan akses data yang sama dengan format record: Semuanya memerlukan akses data yang sama dengan format record:
ACCOUNT ACCOUNT
ID
ID NAMENAME GROUP-CODEGROUP-CODE SOCNOSOCNO BALANCEBALANCE OVERDRAWOVERDRAW LAST
LAST FIRSTFIRST BRANCHBRANCH TYPETYPE LIMITLIMIT
Gambar 2. Contoh Format Record Gambar 2. Contoh Format Record
Adanya pemakai yang berbeda memerlukan akses record-record ini Adanya pemakai yang berbeda memerlukan akses record-record ini dalam cara yang berbeda.
dalam cara yang berbeda.
Kasir
Kasir Mengindentifikasikan record account menurut nilaiMengindentifikasikan record account menurut nilai ID.
ID.
Kredit
Kredit Akses semua record menurut nilai OVERDRAWAkses semua record menurut nilai OVERDRAW LIMIT atau semua record account dengan nilai LIMIT atau semua record account dengan nilai SOCNO.
SOCNO.
Manajer Manajer Cabang Cabang
Akses semua record menurut Branch dan Type. Akses semua record menurut Branch dan Type.
Pegawai Pegawai Bank
Bank Membuat laporan berkala untuk semua record
Membuat laporan berkala untuk semua record account yang disortir berdasarkan ID.
account yang disortir berdasarkan ID.
Nasabah
Nasabah Memerlukan akses recordnya dengan memberikanMemerlukan akses recordnya dengan memberikan ID yang dimilikinya atau kombinasi dari NAME, ID yang dimilikinya atau kombinasi dari NAME, SOCNO dan Type.
Satu pendekatan yang dapat mendukung semua jenis akses adalah Satu pendekatan yang dapat mendukung semua jenis akses adalah dimilikinya banyak berkas yang berbeda. Setiap berkas di dimilikinya banyak berkas yang berbeda. Setiap berkas di organisasi untuk melayani satu jenis keperluan.
organisasi untuk melayani satu jenis keperluan.
Maka untuk contoh sistem perbankan di atas harus ada: Maka untuk contoh sistem perbankan di atas harus ada:
File account yang organisasinya indeks sekuensial dengan nilaiFile account yang organisasinya indeks sekuensial dengan nilai
key: key:
ID ID untuk melayani kasir, pegawai bank & nasabah.untuk melayani kasir, pegawai bank & nasabah.
File account yang organisasinya sekuensial dengan record di urutFile account yang organisasinya sekuensial dengan record di urut
menurut: menurut:
OVERDRAW LIMIT
OVERDRAW LIMIT untuk melayani pegawai kredit.untuk melayani pegawai kredit.
File account yang organisasinya relatif dengan nilai key: File account yang organisasinya relatif dengan nilai key:
SOCNO untuk melayani pegawai kredit. SOCNO untuk melayani pegawai kredit.
File account yang organisasinya sekuensial dengan record di urutFile account yang organisasinya sekuensial dengan record di urut
menurut: menurut:
GROUP-CODE
GROUP-CODE untuk melayani manajer cabang. untuk melayani manajer cabang.
File account yang organisasinya relatif dengan nilai key: File account yang organisasinya relatif dengan nilai key:
NAME, SOCNO dan TYPE
NAME, SOCNO dan TYPE untuk melayani nasabah. untuk melayani nasabah.
Jadi kita mempunyai 5 file, semuanya mempunyai record yang Jadi kita mempunyai 5 file, semuanya mempunyai record yang sama. Kelima file itu hanya berbeda dalam organisasi dan cara sama. Kelima file itu hanya berbeda dalam organisasi dan cara aksesnya.
aksesnya.
Pengulangan data dari beberapa file bukan merupakan cara yang baik Pengulangan data dari beberapa file bukan merupakan cara yang baik untuk mengakses record dengan berbagai cara. Dan cara ini untuk mengakses record dengan berbagai cara. Dan cara ini memerlukan ruang (space) yang besar di storage dan kesulitan pada memerlukan ruang (space) yang besar di storage dan kesulitan pada waktu
peng-waktu peng-updateupdate-an record secara serentak.-an record secara serentak.
Untuk mengatasi masalah di atas, maka digunakan organisasi berkas Untuk mengatasi masalah di atas, maka digunakan organisasi berkas banyak key yang umumnya diimplementasikan dengan banyak key yang umumnya diimplementasikan dengan pembentukan banyak indeks untuk memberikan akses yang berbeda pembentukan banyak indeks untuk memberikan akses yang berbeda terhadap record data.
terhadap record data.
ORGANISASI INVERTER FILE ORGANISASI INVERTER FILE
Satu pendekatan dasar untuk memberikan hubungan antara sebuah Satu pendekatan dasar untuk memberikan hubungan antara sebuah indeks dan data record dari file adalah inversi.
indeks dan data record dari file adalah inversi.
Sebuah key pada indeks inversi mempunyai semua nilai key dimana Sebuah key pada indeks inversi mempunyai semua nilai key dimana masing-masing nilai key mempunyai penunjuk ke record yang masing-masing nilai key mempunyai penunjuk ke record yang bersangkutan. File yang demikian disebut inverted file.
bersangkutan. File yang demikian disebut inverted file.
Indeks inversi yang sederhana dibentuk sebagai sebuah tabel. Indeks inversi yang sederhana dibentuk sebagai sebuah tabel.
Contoh: Contoh:
Inversi file ACCOUNT terhadap SOCNO menghasilkan indeks Inversi file ACCOUNT terhadap SOCNO menghasilkan indeks inversi.
inversi.
SOCNO
SOCNO ADDRESSADDRESS
001234123
001234123 66
123456789
123456789 55
213823456
213823456 1414
299167305
299167305 1616
399042131
399042131 44
411625331
411625331 1313
412631467
412631467 77
426135447
426135447 2020
445062681
445062681 1717
459463001
459463001 11
513014265
513014265 88
612305116
612305116 99
626311660
626311660 1818
692122222
692122222 1212
713214622
713214622 33
798392289
798392289 1515
821346211
821346211 22
912346789
912346789 1919
923146154
923146154 1111
987654321
987654321 1010
Indeks inversi tersebut telah di sortir menurut SOCNO. Penambahan Indeks inversi tersebut telah di sortir menurut SOCNO. Penambahan record file menyebabkan indeks inversi juga harus diubah.
record file menyebabkan indeks inversi juga harus diubah.
Sebuah indeks inversi dapat dibuat bersama sebuah relatif file atau Sebuah indeks inversi dapat dibuat bersama sebuah relatif file atau sebuah indeks sekuensial. Sebuah indeks inversi dengan key SOCNO sebuah indeks sekuensial. Sebuah indeks inversi dengan key SOCNO untuk sebuah relatif file dengan nilai key ID akan memberikan sebuah untuk sebuah relatif file dengan nilai key ID akan memberikan sebuah file yang dapat diakses langsung oleh sebuah ID atau SOCNO.
file yang dapat diakses langsung oleh sebuah ID atau SOCNO.
SOCNO
Gambar 4. Indeks Inversi Record dengan key SOCNO Gambar 4. Indeks Inversi Record dengan key SOCNO
Mengunakan Indirect AddressingMengunakan Indirect Addressing
Jika sebuah key dipakai untuk menentukan struktur storage dari file Jika sebuah key dipakai untuk menentukan struktur storage dari file disebut primary key, sedangkan key yang lainya disebut disebut primary key, sedangkan key yang lainya disebut secondary key.
secondary key.
Sebuah variasi dari struktur indeks inversi adalah pemakaian Sebuah variasi dari struktur indeks inversi adalah pemakaian secondary key dan primary key dari indirect addressing.
secondary key dan primary key dari indirect addressing.
Pendekatan ini membiarkan file yang direorganisasi dan Pendekatan ini membiarkan file yang direorganisasi dan restructure secara fisik tanpa menyebabkan indeks file.
restructure secara fisik tanpa menyebabkan indeks file.
Pada contoh di atas, nilai SOCNO adalah unik. Setiap SOCNO dalam Pada contoh di atas, nilai SOCNO adalah unik. Setiap SOCNO dalam indeks inversi mempunyai record. Indeks inversi dapat juga dipakai indeks inversi mempunyai record. Indeks inversi dapat juga dipakai dengan key yang bukan unik.
dengan key yang bukan unik.
GROUP-CODE GROUP-CODE BRANCH TYPE
BRANCH TYPE IDID
DT
DT 001001 111111, 201431, 310103, 686116111111, 201431, 310103, 686116 DT
DT 002002 198121, 335812, 486212, 641230198121, 335812, 486212, 641230 EA
EA 001001 324196, 534216, 535218324196, 534216, 535218 NE
NE 001001 415631415631
NE
NE 002002 300123, 696123300123, 696123
NW
NW 001001 112131, 208432, 511211112131, 208432, 511211 NW
NW 002002 291821291821
WE
WE 002002 386132, 387122386132, 387122
Gambar 5. Indeks Inversi Record dengan key GROUP-CODE Gambar 5. Indeks Inversi Record dengan key GROUP-CODE
Satu hal yang baik dari inversi file adalah beberapa pertanyaan di Satu hal yang baik dari inversi file adalah beberapa pertanyaan di bawah ini dapat dijawab tanpa akses data file, cukup dengan indeks bawah ini dapat dijawab tanpa akses data file, cukup dengan indeks inversinya.
inversinya.
Apakah ada indeks untuk SOCNO = ‘414556233’ ?Apakah ada indeks untuk SOCNO = ‘414556233’ ?
Berapa banyak account dengan GROUP-CODE = ‘EA001’ ?Berapa banyak account dengan GROUP-CODE = ‘EA001’ ?
Berapa banyak account dengan BRANCH = ‘NE’ ?Berapa banyak account dengan BRANCH = ‘NE’ ?
Apakah BRANCH = ‘NE’ mempunyai TYPE = ‘001’ ?Apakah BRANCH = ‘NE’ mempunyai TYPE = ‘001’ ?
Suatu pendekatan lain yang memberikan hubungan antara sebuah Suatu pendekatan lain yang memberikan hubungan antara sebuah indeks dan data record dari sebuah file disebut organisasi multi-list indeks dan data record dari sebuah file disebut organisasi multi-list file.
file.
Seperti sebuah inverted file, sebuah multi-list file mempunyai sebuah Seperti sebuah inverted file, sebuah multi-list file mempunyai sebuah indeks untuk setiap secondary key.
indeks untuk setiap secondary key.
Organisasi multi-list file berbeda dengan inverted file, dimana dalam Organisasi multi-list file berbeda dengan inverted file, dimana dalam indeks inversi untuk sebuah nilai key mempunyai sebuah penunjuk indeks inversi untuk sebuah nilai key mempunyai sebuah penunjuk untuk sebuah data record dengan nilai key, sedangkan dalam untuk sebuah data record dengan nilai key, sedangkan dalam indeks multi-list untuk sebuah nilai key mempunyai hanya sebuah indeks multi-list untuk sebuah nilai key mempunyai hanya sebuah penunjuk untuk data record pertama dengan nilai key. Data record penunjuk untuk data record pertama dengan nilai key. Data record mempunyai sebuah penunjuk untuk data record selanjutnya dengan mempunyai sebuah penunjuk untuk data record selanjutnya dengan nilai key dan seterusnya. Maka terdapat sebuah linked-list dari data nilai key dan seterusnya. Maka terdapat sebuah linked-list dari data record untuk setiap nilai dari secondary key.
record untuk setiap nilai dari secondary key.
GROUP-CODE GROUP-CODE BRANCH TYPE
BRANCH TYPE IDID
DT
DT 001001 111111111111
DT
DT 002002 198121198121
EA
EA 001001 324196324196
NE
NE 001001 415631415631
NE
NE 002002 300123300123
NW
NW 001001 112131112131
NW
NW 002002 291821291821
WE
WE 002002 386132386132
Gambar 6. Multi-list Index for GROUP-CODE secondary keyGambar 6. Multi-list Index for GROUP-CODE secondary key
OVERDRAW OVERDRAW
LIMIT
LIMIT IDID
0.
0. 111111111111
100.
100. 112131112131
200.
200. 198121198121
250.
250. 511211511211
menunjukkan data file. Setiap data record mempunyai penunjuk untuk menunjukkan data file. Setiap data record mempunyai penunjuk untuk mengakses record selanjutnya.
mengakses record selanjutnya.
Record
Record NAMENAME GROUP-CODEGROUP-CODE OVERD.OVERD. Address
Address IDID LASTLAST FIRSTFIRST BRANCHBRANCH TYPETYPE NEXTNEXT SOCNOSOCNO BALANCEBALANCE LIMITLIMIT 1
1 111111111111 DEANDEAN JOHNJOHN DTDT 001001 201431201431 459463001459463001 100.50100.50 0.0. 2
2 112131112131 AMOREAMORE CAROLCAROL NWNW 001001 208432208432 821346211821346211 2311.202311.20 100.100. 3
3 198121198121 RICERICE BESSBESS DTDT 002002 335812335812 713214622713214622 -191.87-191.87 200.200. 4
4 201431201431 PARKERPARKER OLAOLA DTDT 001001 310103310103 399042131399042131 3142.933142.93 100.100. 5
5 208432208432 ANDERSONANDERSON BARBABARBA NWNW 001001 511211511211 123456789123456789 95.2695.26 0.0. 6
6 291821291821 ANDERSONANDERSON BRENTBRENT NWNW 002002 00 001234123001234123 146.92146.92 0.0. 7
7 300123300123 HARTHART ALLISALLIS NENE 002002 696123696123 412631467412631467 3000.003000.00 100.100. 8
8 310103310103 TAHOETAHOE SERENSEREN DTDT 001001 686116686116 513014265513014265 243.63243.63 0.0. 9
9 324196324196 BONESBONES IGORIGOR EAEA 001001 534216534216 612305116612305116 0.020.02 0.0. 10
10 335812335812 BEEBEE VERAVERA DTDT 002002 486212486212 987654321987654321 88.7288.72 0.0. 11
11 386132386132 ARCARC JEANJEAN WEWE 002002 387122387122 923146154923146154 -89.98-89.98 100.100. 12
12 387122387122 ELLSELLS JOSHUJOSHU WEWE 002002 00 692122222692122222 10.9510.95 0.0. 13
13 415631415631 BELLEBELLE ELLIEELLIE NENE 001001 00 411625331411625331 426.86426.86 100.100. 14
14 486212486212 MATTHERSMATTHERS ANNANN DTDT 002002 641230641230 213823456213823456 893.92893.92 100.100. 15
15 511211511211 SNUGGSSNUGGS JOHNJOHN NWNW 001001 00 798392289798392289 2814.122814.12 250.250. 16
16 534216534216 LOOMINLOOMIN TIMTIM EAEA 001001 535218535218 299167305299167305 296.12296.12 250.250. 17
17 535218535218 ELLSWORTELLSWORT NANCYNANCY EAEA 001001 00 445062681445062681 2814.122814.12 250.250. 18
18 641230641230 WELLSWELLS CHUCKCHUCK DTDT 002002 00 626311660626311660 -98.14-98.14 100.100. 19
19 686116686116 SWORTHSWORTH LAURLAUR DTDT 001001 00 912346789912346789 3216.163216.16 100.100. 20
20 696132696132 GUNNESSGUNNESS MARIOMARIO NENE 002002 00 426135447426135447 95.9395.93 25.25.
Gambar 8. Contoh Data File Gambar 8. Contoh Data File
Nilai key harus di urut, struktur indeks adalah tabel dengan indirect Nilai key harus di urut, struktur indeks adalah tabel dengan indirect addressing dan mempunyai hubungan data record yang disusun addressing dan mempunyai hubungan data record yang disusun menurut ID secara ascending.
menurut ID secara ascending.
GROUP-CODE GROUP-CODE BRANCH TYPE
DT
DT 001001 111111111111 44
DT
DT 002002 198121198121 44
EA
EA 001001 324196324196 33
NE
NE 001001 415631415631 11
NE
NE 002002 300123300123 22
NW
NW 001001 112131112131 33
NW
NW 002002 291821291821 11
WE
WE 002002 386132386132 22
Gambar 9. Variasi Index pada gambar 6, Gambar 9. Variasi Index pada gambar 6,
menunjukkan length of linked-listmenunjukkan length of linked-list
OVERDRAW OVERDRAW
LIMIT
LIMIT IDID LENGTHLENGTH
0.
0. 111111111111 77
100.
100. 112131112131 88
200.
200. 198121198121 11
250.
250. 511211511211 44
Gambar 10. Variasi Index pada gambar 7, Gambar 10. Variasi Index pada gambar 7,
menunjukkan length of linked-listmenunjukkan length of linked-list
Informasi tentang banyak record dalam link-list juga berguna untuk Informasi tentang banyak record dalam link-list juga berguna untuk mendapatkan cara yang terbaik dalam pengaksesan.
mendapatkan cara yang terbaik dalam pengaksesan.
Contoh: Contoh:
Ada 3 cara akses yang potensial dalam menjawab pertanyaan: Ada 3 cara akses yang potensial dalam menjawab pertanyaan:
Daftar nilai ID untuk account dengan GROUP-CODE ='EA001' dan Daftar nilai ID untuk account dengan GROUP-CODE ='EA001' dan
OVERDRAW-LIMIT = 100 ?OVERDRAW-LIMIT = 100 ?
Data file dapat dicari secara sekuensial, indeks GROUP-CODE atau Data file dapat dicari secara sekuensial, indeks GROUP-CODE atau dengan memakai OVERDRAW-LIMIT.
dengan memakai OVERDRAW-LIMIT.
Mana cara yang terbaik ? Mana cara yang terbaik ?
data record dan memakai indeks OVERDRAW-LIMIT berarti akses data record dan memakai indeks OVERDRAW-LIMIT berarti akses sampai 8 data record.
sampai 8 data record.
Dari ketiga cara di atas, yang terbaik adalah mengunakan indeks Dari ketiga cara di atas, yang terbaik adalah mengunakan indeks GROUP-CODE.
GROUP-CODE.
DEKLARASI BERKAS DALAM COBOL DEKLARASI BERKAS DALAM COBOL
SELECT ACCOUNT-FILE ASSIGN TO DISK SELECT ACCOUNT-FILE ASSIGN TO DISK
ORGANIZATION IS INDEXEDORGANIZATION IS INDEXED
ACCESS MODE IS SEQUENTIAL OR RANDOM OR DYNAMICACCESS MODE IS SEQUENTIAL OR RANDOM OR DYNAMIC
RECORD KEY IS IDRECORD KEY IS ID
ALTERNATE RECORD KEY IS SOCNOALTERNATE RECORD KEY IS SOCNO
ALTERNATE RECORD KEY IS GROUP-CODEALTERNATE RECORD KEY IS GROUP-CODE