BAB IV IMPLEMENTASI
4.2 Implementasi Basis Data
Pada sistem ini terdapat dua database, yaitu database text RDBMS untuk menyimpan hasil seluruh proses operasi teks logical view dokumen makalah yang
berbasis RDBMS dan database index ready ORDBMS untuk menyimpan inverted
index yang digunakan untuk pencarian dokumen dengan berbasis ORDBMS.
Database sistem ini dibuat menggunakan Oracle 11g. Aplikasi pendukung untuk melakukan pengolahan perintah SQL adalah SQL Developer.
Langkah – langkah dalam pembuatan database adalah seperti berikut :
1. Membuat database baru dengan login sebagai SYSTEM menggunakan SQL
Developer.
2. Membuat tabel-tabel dalam database yang telah dibuat dengan menuliskan
perintah create tabel diikuti nama tabel dan kolom-kolom dalam tabel. Untuk
database berbasis ORDBMS dibuat terlebih dahulu type dengan menuliskan perintah create type. Pada RDBMS terdapat 9 tabel, sedangkan ORDBMS terdapat 2 tabel, 1 nested table, dan 4 type yang dibuat berdasarkan desain sistem.
Database text RDBMS untuk sistem pemerolehan informasi makalah ilmiah berbahasa Indoensia dapat dilihat pada Gambar 4.1.
Gambar 4.1. Database text RDBMS pada sistem pemerolehan informasi makalah ilmiah berbahasa Indonesia
Database index ready ORDBMS untuk sistem pemerolehan informasi
makalah ilmiah berbahasa Indonesia dapat dilihat pada gambar 4.2.
Gambar 4.2. Database index ready ORDBMS pada sistem pemerolehan informasi makalah berbahasa Indonesia
Berikut proses pembuatan tabel untuk database text RDBMS : 1. Tabel Status
Tabel 4.1. Tabel Status
Nama Field Tipe Data Ukuran Keterangan
id_status NUMBER - Primary key untuk tabel status description VARCHAR2 20 Deskripsi status
Berikut perintah SQL untuk membuat tabel status yang ditunjukkan pada Listing 4.1:
Listing 4.1. Create tabel status
2. Tabel Documents
Tabel 4.2. Tabel Documents
Nama Field Tipe Data Ukuran Keterangan
id_document NUMBER - Primary key untuk tabel documents
title VARCHAR2 256 Judul dari dokumen
path VARCHAR2 256 Nama file dari dokumen
max_term NUMBER - Frekuensi terbesar dari sebuah dokumen
authors VARCHAR2 100 Penulis dari dokumen
year NUMBER - Tahun dari dokumen
id_status_ready NUMBER - Status untuk dokumen
id_status2 NUMBER - Status untuk subsistem pencarian id_status3 NUMBER - Status untuk subsistem pencarian
CREATE TABLE STATUS (
ID_STATUS NUMBER NOT NULL , DESCRIPTION VARCHAR2 (20) ); ALTER TABLE STATUS
Berikut perintah SQL untuk membuat tabel documents yang ditunjukkan pada Listing 4.2:
Listing 4.2. Create tabel documents
3. Tabel Posting
Tabel 4.3. Tabel Posting
Nama Field Tipe Data Ukuran Keterangan
id_document NUMBER - Foreign key dari tabel documents id_term NUMBER - Foreign key dari tabel terms
CREATE TABLE DOCUMENTS (
ID_DOCUMENT NUMBER NOT NULL , MAX_TERM NUMBER,
ID_STATUS_READY NUMBER NOT NULL , ID_STATUS2 NUMBER NOT NULL , ID_STATUS3 NUMBER NOT NULL , AUTHORS VARCHAR2 (100) , YEAR NUMBER
) ;
ALTER TABLE DOCUMENTS
ADD CONSTRAINT documents_PK PRIMARY KEY ( ID_DOCUMENT ) ; ALTER TABLE DOCUMENTS
ADD CONSTRAINT DOCUMENTS_STATUS1_FK FOREIGN KEY ( ID_STATUS_READY ) REFERENCES STATUS ( ID_STATUS ) ;
ALTER TABLE DOCUMENTS
ADD CONSTRAINT DOCUMENTS_STATUS2_FK FOREIGN KEY ( ID_STATUS2 ) REFERENCES STATUS ( ID_STATUS ) ;
ALTER TABLE DOCUMENTS
ADD CONSTRAINT DOCUMENTS_STATUS_FK FOREIGN KEY ( ID_STATUS3 ) REFERENCES STATUS ( ID_STATUS ) ;
Nama Field Tipe Data Ukuran Keterangan frequency NUMBER - Frekuensi kata pada dokumen
ntfik NUMBER - Hasil perhitungan
frequency/frequency terbesar pada
sebuah dokumen
w NUMBER - Bobot dari sebuah term dengan rumus
perhitungannya ndfik*ntfik
Berikut perintah SQL untuk membuat tabel posting ditunjukkan pada Listing 4.3:
Listing 4.3. Create tabel posting
4. Tabel Terms
Tabel 4.4. Tabel Terms
Nama Field Tipe Data Ukuran Keterangan
id_term NUMBER - Primary key untuk tabel terms stemmed_word VARCHAR2 50 Kata setelah proses stemming
CREATE TABLE POSTING (
ID_DOCUMENT NUMBER NOT NULL , ID_TERM NUMBER NOT NULL , FREQUENCY NUMBER ,
NTFIK NUMBER , W NUMBER )
;
ALTER TABLE POSTING
ADD CONSTRAINT POSTING_DOCUMENTS_FK FOREIGN KEY ( ID_DOCUMENT ) REFERENCES DOCUMENTS ( ID_DOCUMENT ) ;
ALTER TABLE POSTING
ADD CONSTRAINT POSTING_TERMS_FK FOREIGN KEY ( ID_TERM ) REFERENCES TERMS ( ID_TERM ) ;
Nama Field Tipe Data Ukuran Keterangan
dfk NUMBER - Jumlah dokumen yang mengandung
term
nidfk NUMBER - Hasil perhitungan dari (log(n/dfk))/log n
Berikut perintah SQL untuk membuat tabel terms ditunjukkan pada Listing 4.4:
Listing 4.4. Create tabel terms
5. Tabel Posting_Stopword
Tabel 4.5. Tabel Posting_stopword
Nama Field Tipe Data Ukuran Keterangan
id_document NUMBER - Foreign key dari tabel documents id_stopword NUMBER - Foreign key dari tabel stopwords
frequency NUMBER - Frekuensi stopword pada dokumen
Berikut perintah SQL untuk membuat tabel posting_stopword ditunjukkan pada Listing 4.5:
Listing 4.5. Create tabel posting_stopword
CREATE TABLE TERMS
( ID_TERM NUMBER NOT NULL, TERMS VARCHAR2 (50) ,
STEMMED_WORDS VARCHAR2 (50) , DFK NUMBER ,
NIDFK NUMBER ) ;
ALTER TABLE TERMS
ADD CONSTRAINT TERMS_PK PRIMARY KEY ( ID_TERM ) ;
CREATE TABLE POSTING_STOPWORD (
FREQUENCY NUMBER,
ID_STOPWORD NUMBER NOT NULL , ID_DOCUMENT NUMBER NOT NULL )
6. Tabel Stopwords
Tabel 4.6. Tabel Stopwords
Nama Field Tipe Data Ukuran Keterangan
id_stopword NUMBER - Primary key untuk tabel stopwords
stopword VARCHAR2 20 Daftar kata buang
Berikut perintah SQL untuk tabel stopwords ditunjukkan pada Listing 4.6:
Listing 4.6. Create tabel stopwords
ALTER TABLE POSTING_STOPWORD
ADD CONSTRAINT POSTING_STOPWORD_DOCUMENTS_FK FOREIGN KEY ( ID_DOCUMENT ) REFERENCES DOCUMENTS ( ID_DOCUMENT ) ;
ALTER TABLE POSTING_STOPWORD
ADD CONSTRAINT POSTING_STOPWORD_STOPWORDS_FK FOREIGN KEY ( ID_STOPWORD ) REFERENCES STOPWORDS ( ID_STOPWORD ) ;
CREATE TABLE STOPWORDS (
ID_STOPWORD NUMBER NOT NULL , STOPWORD VARCHAR2 (20) } ;
CREATE INDEX STOPWORDS__IDX ON STOPWORDS (
ID_STOPWORD ASC , STOPWORD ASC )
;
ALTER TABLE STOPWORDS
7. Tabel Dictionary
Tabel 4.7. Tabel Dictionary
Nama Field Tipe Data Ukuran Keterangan
id_dictionary NUMBER - Primary key untuk tabel dictionary
root_word VARCHAR2 20 Daftar kata dasar Bahasa Indonesia
Berikut perintah SQL untuk membuat tabel dictionary ditunjukkan pada Listing 4.7:
Listing 4.7. Create tabel dictionary
8. Tabel Administrator
Tabel 4.8. Tabel Administrator
Nama Field Tipe Data Ukuran Keterangan
id_administrator NUMBER - Primary key untuk tabel administrator
username VARCHAR2 10 Username
pasword VARCHAR2 20 Password
CREATE TABLE DICTIONARY (
ID_DICTIONARY NUMBER NOT NULL , ROOT_WORD VARCHAR2 (20)
) ;
CREATE UNIQUE INDEX DICTIONARY__IDX ON DICTIONARY (
ID_DICTIONARY ASC , ROOT_WORD ASC )
;
ALTER TABLE DICTIONARY
Berikut perintah SQL yang digunakan untuk membuat tabel administrator ditunjukkan pada Listing 4.8:
Listing 4.8. Create tabel administrator
9. Tabel Sourceterm
Tabel 4.9. Tabel Sourceterm
Nama Field Tipe Data Ukuran Keterangan
id_sourceterm NUMBER - Primary key untuk tabel sourceterm
id_term NUMBER - Foreign key dari tabel terms word VARCHAR2 50 Kata tanpa proses stemming is_root_word CHAR 1 Keterangan apakah terms
ada di kamus
Berikut perintah SQL yang digunakan untuk membuat tabel sourceterm ditunjukkan pada Listing 4.9:
Listing 4.9. Create tabel sourceterm
CREATE TABLE ADMINISTRATOR (
ID_ADMINISTRATOR NUMBER NOT NULL , USERNAME VARCHAR2 (10) ,
PASWORD VARCHAR2 (20) )
;
ALTER TABLE ADMINISTRATOR
ADD CONSTRAINT ADMINISTRATOR_PK PRIMARY KEY ( ID_ADMINISTRATOR ) ;
CREATE TABLE SOURCETERM (
ID_SOURCETERM INTEGER NOT NULL , WORD VARCHAR2 (50) ,
IS_ROOT_WORD CHAR (1) , ID_TERM INTEGER NOT NULL )
;
ALTER TABLE SOURCETERM
Berikut proses pembuatan type dan tabel pada database index ready ORDBMS :
1. Tabel Jurnal
Tabel 4.10. Tabel Jurnal
Nama Field Tipe Data Ukuran Keterangan
jurnal_id NUMBER - Primary key untuk tabel jurnal judul VARCHAR2 256 Judul dari dokumen jurnal
tahun NUMBER - Tahun dari dokumen jurnal
nama_penulis VARCHAR2 100 Nama penulis dari dokumen jurnal
path VARCHAR2 256 Nama file dari dokumen jurnal
MAXJTFIJ NUMBER - Frekuensi terbesar dari sebuah dokumen
Pada tabel jurnal dibuat terlebih dahulu type dengan nama jurnalType. Berikut perintah SQL untuk membuat jurnalType ditunjukkan pada Listing 4.10:
Listing 4.10. Type untuk object type JurnalType create or replace TYPE JurnalType AS OBJECT (jurnal_id NUMBER, judul VARCHAR2(256), tahun NUMBER, nama_penulis VARCHAR2(100), Maxjtfij NUMBER, path VARCHAR2(256)); /
ALTER TABLE SOURCETERM
ADD CONSTRAINT SOURCETERM_TERMS_FK FOREIGN KEY ( ID_TERM ) REFERENCES TERMS ( ID_TERM ) ;
Kemudian, dibuatlah tabel jurnal. Berikut perintah SQL untuk membuat tabel jurnal yang ditunjukkan pada Listing 4.11:
Listing 4.11. Create tabel jurnal
2. Tabel Term dan Nested Tabel Posting_Term_Table
Tabel 4.11. Tabel Term
Nama Field Tipe Data Ukuran Keterangan
term_id NUMBER - Primary key untuk tabel
term
term VARCHAR2 50 Term
dfk NUMBER - Jumlah dokumen yang
mengandung term
nidfk NUMBER - Hasil perhitungan dari
(log(n/dfk))/log n posting_term PostingListN
estedType
- Posting list dari nested table
tfk NUMBER - Frekuensi dari term dalam
dokumen
ntfik NUMBER - Hasil perhitungan
tfik/Maxjtfij
w NUMBER - Bobot dari sebuah term
dengan rumus
perhitungannya ndfik*ntfik
jurnal_posting REF - Field untuk merujuk ke
obyek tabel jurnal CREATE TABLE Jurnal of JurnalType
(jurnal_id not null, primary key (jurnal_id));
Pada tabel term terdapat nested table dengan nama tabel posting_term_table. Sebelum membuat tabel dibuat dahulu type dengan nama termType untuk tabel term dan postingListType, postingListNestedType untuk nested table.
Berikut perintah SQL untuk membuat termType ditunjukkan pada Listing 4.12:
Listing 4.12. Type untuk object type termType
Berikut perintah SQL untuk membuat postingListType dan postingListNestedType ditunjukkan pada Listing 4.13:
Listing 4.13. Type untuk object type PostingListType
Kemudian, dibuatlah tabel term dan nested table posting_term_table. Berikut perintah SQL untuk membuat tabel term dan nested table posting_term_table ditunjukkan pada Listing 4.14:
Listing 4.14. Create tabel term
CREATE OR REPLACE TYPE termType AS OBJECT (term_id NUMBER, term VARCHAR2(50), dfk NUMBER, nidfk NUMBER, posting_term PostingListNestedType); /
create or replace TYPE PostingListType AS OBJECT (tfik NUMBER,
ntfik DECIMAL(10,5), w NUMBER,
jurnal_posting REF JurnalType); /
CREATE TYPE PostingListNestedType AS TABLE OF PostingListType; /
CREATE TABLE term OF termType (term_id NOT NULL,
PRIMARY KEY (term_id))