7 BAB 2 BAB 2. LANDASAN TEORI 2.1 Teori-Teori Umum 2.1.1 Data dan Basis Data Data (2009, p2, Indrajani) adalah fakta atau observasi mentah yang biasanya mengenai fenomena fisik atau transaksi bisnis. Lebih khusus lagi, data adalah ukuran objektif dari atribut (karakteristik) dari entitas orang, tempat, benda, atau kejadian. Data akan merepresentasikan fakta yang mewakili suatu objek seperti pelanggan, karyawan, mahasiswa, dan lain-lain, yang disimpan dalam bentuk angka, huruf, simbol, teks, gambar, bunyi, dan kombinasinya. Menurut Coronel, et al (2009, p20), data akan berisi sekumpulan fakta yang disimpan ke dalam basis data. Sedangkan, basis data (2009, p2, Indrajani) adalah kumpulan terpadu dari elemen data logis yang saling berhubungan. Basis data mengkonsolidasi banyak catatan yang sebelumnya disimpan dalam file terpisah. Menurut Conolly (2010, p65), basis data adalah kumpulan dari data yang berelasi secara logikal beserta deskripsi datanya yang dirancang untuk memenuhi informasi yang dibutuhkan oleh suatu organisasi. Berbeda dengan sistem file yang tidak berhubungan dan mengandung data yang redundan, item data dalam basis data terintegrasi dengan minimum jumlah data yang terduplikasi. Basis data bukan menjadi milik dari suatu departemen tetapi sebagai sumber daya perusahaan yang dapat 7 digunakan bersama. 8 2.1.2 Sistem Manajemen Basis Data Menurut Singh (2009, p1), sistem basis data adalah alat yang menyederhanakan tugas-tugas mengelola data dan menggali informasi yang berguna secara tepat. Lalu, menurut Coronel, et al (2009, p7), sistem basis data adalah koleksi program yang mengatur struktur basis data dan akses kontrol ke penyimpanan data di dalam basis data. Sistem basis data akan mengurangi redundansi data, mengintegrasikan data, dan memungkinkan berbagi data di antara berbagai macam grup dalam organisasi. Ada pula definisi DBMS (Database Management System) dari menurut Connolly (2010, p66), dimana DBMS adalah suatu sistem perangkat lunak yang memungkinkan pengguna untuk mendefinisikan (define), membuat (create), memelihara (maintain), dan mengontrol akses ke basis data. DBMS menyediakan fasilitas-fasilitas (2010, p66, Connolly), seperti: a. DBMS memperbolehkan user untuk mendefinisikan basis data, (biasanya) menggunakan Data Definition Language (DDL). DDL memberikan fasilitas kepada user untuk mendeklarasikan tipe data, struktur, dan constraints (tambahan) dari data yang disimpan ke dalam basis data tersebut. b. DBMS memperbolehkan user untuk menambah data (insert), mengubah data (update), menghapus data (delete), dan mendapatkan data kembali (retrieve). Biasanya menggunakan Data 9 Manipulation Language (DML). DML menyediakan keterangan untuk mengakses data yang disebut sebagai query language. Bahasa query yang paling umum digunakan adalah Structured Query Language (SQL). SQL merupakan standar formal dan de facto untuk relasi DBMS. c. DBMS menyediakan pengendalian akses ke basis data, contohnya: 1) Sistem Keamanan (Security System) yang mencegah user yang tidak berwenang untuk mengakses data dalam basis data yang bukan haknya. 2) Sistem Terintegrasi (Integrity System) yang menjaga Control System), konsistensi data yang disimpan. 3) Sistem Kontrol (Concurrency yang memperbolehkan data dalam basis data untuk dipakai bersamasama oleh user yang berbeda. 4) Sistem Kontrol Pengembalian (Recovery Control System) yang memperbaiki basis data seperti semula apabila sebelumnya terjadi kerusakan hardware maupun software. 5) Katalog yang dapat diakses user (User-Accessible Catalog) yang mengandung deskripsi data dalam basis data. DBMS mempunyai lima komponen utama (2010, p68, Connolly): a. Perangkat keras (hardware) DBMS dan aplikasinya membutuhkan perangkat keras untuk menjalankannya. Perangkat keras dapat berupa single personal computer sampai single mainframe ataupun network of computers. 10 Perangkat keras yang digunakan tergantung dari kebutuhan organisasi dan DBMS yang digunakan. b. Perangkat lunak (software) Komponen perangkat lunak terdiri dari software DBMS itu sendiri, program aplikasi, sistem operasi, serta software jaringan (jika DBMS digunakan di seluruh jaringan). c. Data Data merupakan komponen terpenting dalam DBMS. Data menjadi jembatan yang menghubungkan komponen mesin dan komponen manusia. d. Prosedur (Procedures) Prosedur merupakan instruksi-instruksi dan aturan-aturan yang digunakan untuk mendesain dan menggunakan basis data. Proses dalam basis data dapat berupa: 1) Login ke dalam basis DBMS 2) Menggunakan fasilitas DBMS maupun program aplikasi 3) Cara menjalankan dan menghentikan DBMS 4) Membuat salinan basis data 5) Memeriksa hardware dan software yang sedang berjalan 6) Mengubah struktur dari tabel lalu mengorganisasikan kembali basis data yang disimpan dalam berbagai disk. 7) Meningkatkan kinerja atau membuat arsip data pada secondary storage. e. Manusia (People) 11 Manusia merupakan kompenen terakhir yang berkaitan dengan sistem. Ada empat tipe manusia yang terlibat dalam lingkungan DBMS (2010, p71, Connolly), yaitu: 1) Data Administrator (DA) DA bertanggung jawab untuk mengatur sumber data yang mencakup perencanaan basis data, pengembangan dan pemeliharaan, kebijakan dan prosedur, serta perancangan konseptual atau logikal perancangan basis data. 2) Database Administrator (DBA) DBA bertanggung jawab terhadap realisasi fisik dari basis data yang mencakup perancangan fisikal dan implementasi, keamanan dan pengaturan integritas, pemeliharaan sistem operasional, dan memastikan kepuasan user terhadap performa aplikasi. 3) Database Designer Database Designer dikelompokkan menjadi dua tipe, yaitu: a. Logical Database Designer Tugas utamanya mengidentifikasi data (entitas dan atribut), hubungan antar data, dan batasan dari data yang disimpan dalam basis data. b. Physical Database Designer Tugas utamanya memutuskan bagaimana perancangan basis data logikal diubah menjadi basis data fisikal. 4) Application Developer 12 Application Developer bertanggung jawab dalam mengimplementasikan program aplikasi yang menyediakan fungsi-fungsi yang dibutuhkan oleh End-User. 5) End-User End-User merupakan client dari basis data yang telah dirancang, diimplementasikan, dan dipelihara untuk menyediakan kebutuhan informasi. Komponen-komponen dalam lingkungan DBMS dapat digambarkan sebagai berikut: Gambar 2.1 Komponen Database Management System Menurut Connolly (2010, p77), ada beberapa keuntungan dan kerugian dari suatu DBMS. Keuntungannya adalah sebagai berikut: 1) Pengontrolan data yang redundansi Pendekatan basis data akan menghilangkan redundansi dengan mengintegrasikan file sehingga penggandaan data yang sama tidak disimpan. Namun, pendekatan basis data tidak menghilangkan redundansi sepenuhnya, tetapi basis data akan mengendalikan jumlah redundansi basis data. 2) Data yang konsisten 13 Dengan menghilangkan atau mengendalikan redundansi, kita mengurangi risiko terjadinya ketidakkonsistenan data. Jika data disimpan sekali dalam basis data, data yang di-update akan ditampilkan sekali dan nilai barunya segera tersedia untuk semua user. Sedangkan, jika data disimpan lebih dari satu kali dan sistem memprioritaskan data ini, sistem dapat memastikan bahwa salinansalinan data tetap konsisten. Akan tetapi, banyak dari DBMS sekarang ini tidak secara otomatis memastikan datanya konsisten. 3) Lebih banyak informasi dari data dalam jumlah yang sama Dengan pengintegrasian data operasional, suatu organisasi dapat memberikan informasi tambahan untuk data yang sama. 4) Sharing data Biasanya, file dapat dimiliki oleh orang atau departemen yang menggunakannya. Padahal, seharusnya basis data dimiliki oleh seluruh bagian dalam organisasi dan dapat digunakan bersama oleh pengguna yang berhak menggunakan file tersebut. 5) Meningkatkan integritas data Integritas data mengacu pada validitas dan konsistensi data yang tersimpan. Integritas biasanya menunjukkan batasan-batasan yang berupa aturan konsistensi yang tidak boleh dilanggar dalam basis data. Batasannya dapat digunakan untuk item data dalam satu record atau untuk relationship antara banyak record. 6) Meningkatkan keamanan Keamanan basis data adalah perlindungan basis data dari pengguna yang tidak mempunyai hak untuk mengakses basis data. Tanpa 14 pengamanan data yang tepat, data akan rawan terhadap gangguan/kerusakan. DBA dapat mendefinisikan keamanan basis data yang akan dijalankan oleh DBMS. Salah satu cara meningkatkan keamanan adalah menggunakan menggunakan username dan password untuk mengidentifikasi orang yang berhak mengakses basis data. 7) Penetapan standarisasi Dalam satu integrasi, DBA dapat mendefinisikan standar yang dibutuhkan yang akan diterapkan oleh DBMS. Standarisasi mencakup standar untuk departemen, organisasi, nasional, dan internasional. Standarisasi dapat berupa format data untuk memfasilitasi pertukaran data di antara sistem, konvensi penamaan, standar dokumentasi, prosedur pengubahan (update), dan aturan pengaksesan. 8) Skala ekonomi Menggabungkan seluruh data operasional organisasi ke dalam satu basis data dan membuat satu set aplikasi berjalan dengan satu sumber data, dapat menghemat biaya. Biaya yang digunakan oleh departemen untuk merawat dan mengembangkan sistem dapat digabungkan sehingga menghasil penghematan biaya. 9) Menyeimbangkan kebutuhan-kebutuhan yang saling bertabrakan Karena basis data dibawah kontrol DBA, DBA dapat membuat keputusan terbaik dalam hal pemakaian sumber data. Dengan demikian, kebutuhan-kebutuhan organisasi yang saling bertabrakan dapat terhindari. 15 10) Meningkatkan akses dan respon data Sebagai hasil dari integrasi, data yang melewati batasan departemen dapat langsung diakses oleh pengguna. Banyak DBMS menyediakan fasilitas memperbolehkan tambahan dan query pengguna mendapatkan atau untuk pembuat laporan menanyakan informasi secara yang pertanyaan cepat dari terminalnya tanpa membutuhkan bantuan programmer. 11) Meningkatkan produktivitas DBMS menyediakan banyak fungsi-fungsi standar dimana programmer harus menulisnya dalam aplikasi berbasis file. Hal ini memungkinkan programmer untuk berkonsentrasi pada fungsifungsi khusus lain yang dibutuhkan pengguna. Dengan demikian, dapat meningkatkan produktivitas programmer dan mengurangi waktu pengembangan aplikasi. 12) Meningkatkan pemeliharaan melalui independence data DBMS memisahkan deskripsi data dengan aplikasi sehingga membuat aplikasi tahan terhadap perubahan data. 13) Meningkatkan ketepatan Bila dua atau lebih pengguna dapat mengakses file yang sama secara bersamaan, para pengakses kemungkinan akan saling mempengaruhi dan mengakibatkan hilangnya informasi dan integritas. Banyak DBMS mengelola pengaksesan secara bersamaan pada basis data dan memastikan masalah tidak terjadi. 14) Meningkatkan layanan backup dan recovery 16 Banyak sistem berbasis file melakukan pengamanan data terhadap gangguan pada sistem atau program aplikasi oleh pengguna. Caranya adalah dengan membuat backup data. Sebaliknya, DBMS menyediakan fasilitas untuk meminimalisasi jumlah proses yang hilang akibat kegagalan. Namun, DBMS juga mempunyai kerugian (2010, p80, Connolly), yaitu: 1) Kompleksitas DBMS memiliki sistem yang kompleks. Seluruh komponen manusia harus mengerti fungsionalitas untuk mendapatkan manfaat sepenuhnya. 2) Ukuran Karena sistem yang kompleks, DBMS memiliki ukuran yang besar. 3) Biaya DBMS DBMS memiliki harga yang bervariasi tergantung dari fungsi dan kebutuhan organisasi. 4) Biaya tambahan perangkat keras Penambahan biaya untuk perangkat keras dibutuhkan, misalnya untuk penambahan kapasitas penyimpanan atau membeli mesin yang lebih besar. 5) Biaya konversi Dibutuhkan penambahan biaya konversi untuk mengkonversi aplikasi yang sedang berjalan ke DBMS. 6) Performa 17 DBMS dirancang untuk mengakses lebih dari satu aplikasi. Oleh karena itu, beberapa aplikasi tidak berjalan dengan cepat (performa menurun). 7) Dampak kegagalan yang lebih tinggi Jika sentral DBMS rusak, maka seluruh data yang tersimpan di dalam DBMS mengalami kerusakan. Hal ini mengakibatkan dampak kegagalan terhadap data sangat tinggi. 2.1.3 Structured Query Language (SQL) Menurut Connolly (2010, p184), SQL adalah contoh dari transform-oriented language, atau bahasa yang dirancang untuk menggunakan hubungan yang ada lalu mentransformasikan input menjadi output yang dibutuhkan. Sebagai sebuah bahasa, standar ISO SQL mempunyai dua komponen utama, yaitu: Data Definition Language (DDL) dan Data Manipulation Language (DML). 2.1.3.1 Data Definition Language (DDL) Menurut Connolly (2010, p92), DDL adalah sebuah bahasa yang mengizinkan DBA atau pengguna untuk mendeskripsikan dan menamai entitas, atribut, dan hubungan yang dibutuhkan oleh aplikasi, serta asosiasi yang terintegrasi dan batasan keamanan. Beberapa statement DDL (Connolly, 2010, p235): a) Create database, untuk membuat basis data. 18 b) Create table, untuk membuat tabel dengan mengidentifikasikan tipe data tiap kolom dan batasannya. c) Alter Table, untuk membuang atau menambah kolom dan constraints. d) Drop Table, untuk menghilangkan tabel yang tidak diperlukan. e) Create Index, untuk membuat indeks pada suatu tabel yang mengakses baris tabel berdasarkan nilai dari satu atau lebih kolom. f) Drop Index, untuk menghilangkan indeks yang tidak diperlukan lagi. 2.1.3.2 Data Manipulation Language (DML) Menurut Connolly (2010, p92), DML adalah sebuah bahasa yang menyediakan suatu paket operasi untuk mendukung manipulasi data yang tersimpan dalam basis data. Operasi memanipulasi data umumnya meliputi beberapa hal berikut: a) Memasukkan data baru ke dalam basis data. b) Memodifikasi data yang sudah tersimpan dalam basis data. c) Membaca kembali data yang sudah tersimpan dalam basis data. d) Menghapus data yang ada di dalam basis data. Menurut Connolly (2010, p93), DML dibedakan menjadi dua tipe, yaitu: 19 1. Procedural DML Suatu bahasa yang memungkinkan pengguna untuk memberi instruksi kepada sistem, data apa yang dibutuhkan dan bagaimana mengambil data tersebut. 2. Nonprocedural DML Suatu bahasa yang memungkinkan pengguna untuk menyatakan data apa yang dibutuhkan bukan bagaimana data itu diambil. 2.1.4 Siklus Hidup Aplikasi Basis Data Untuk merancang suatu basis data, diperlukan tahapan-tahapan yang harus diikuti. Tahapan tersebut dinamakan Siklus Hidup Sistem Basis Data (Database System Lifecycle). Menurut Connolly (2010, p314), aplikasi basis data dianalisis dan dirancang dalam tahapantahapan berikut: 20 Gambar 2.2 Database System Lifecycle 2.1.4.1 Database Planning Database planning atau perencanaan basis data adalah perencanaan bagaimana tahapan-tahapan dari suatu siklus hidup basis data dapat direalisasikan dengan cara yang efektif dan efisien. (2010, p313, Connolly) Menurut Connolly (2010, p313), ada tiga isu pokok yang terlibat dalam diantaranya: perumusan strategi sistem informasi, 21 1) Identifikasi rencana dan tujuan perusahaan, kemudian menentukan kebutuhan sistem informasi. 2) Evaluasi sistem informasi yang ada untuk menentukan kelebihan dan kelemahan yang ada. 3) Penafsiran kesempatan teknologi informasi yang dapat menghasilkan keuntungan kompetitif. 2.1.4.2 System Definition System definition adalah sistem yang mendeskripsikan batasan dan ruang lingkup sistem basis data dan user view. User view menjelaskan tentang apa saja yang dibutuhkan sistem basis data berdasarkan sudut pandang seseorang dalam peranan pekerjaan (seperti seorang manager atau supervisor) atau area aplikasi perusahaan (Marketing, Personnel, Stock Control). (2010, p316, Connolly) 2.1.4.3 Requirement Collection and Analysis Tahap ini merupakan proses mengumpulkan dan menganalisis informasi tentang organisasi yang akan didukung dalam sistem basis data dan menggunakan informasi tersebut untuk mengidentifikasi kebutuhan pengguna terhadap sistem yang baru. (Connolly, 2010, p316) Dalam pengumpulan kebutuhan informasi, teknik yang digunakan dinamakan Fact Finding Technique. Ada lima Fact 22 Finding Technique yang umum digunakan (2010, p344, Connolly), yaitu: a. Evaluasi dokumentasi b. Wawancara c. Observasi jalannya kegiatan pada organisasi d. Penelitian e. Kuesioner 2.1.4.4 Database Design Menurut Connolly (2010, p320) merupakan proses membuat desain yang akan mendukung operasional dan tujuan perusahaaan. Dalam mendesain basis data, ada tiga fase pembuatannya (2010, p322, Connolly), yaitu: a. Conceptual Database Design Merupakan proses pembentukan model data yang digunakan dalam perusahaan yang bersifat independen dari keseluruhan aspek fisik. Model data tersebut merupakan sumber informasi untuk fase desain logikal. b. Logical Database Design Merupakan proses pembentukan model data yang berasal dari informasi perusahaan yang berdasarkan model data sebelumnya, tetapi independen terhadap DBMS dan aspek fisik lainnya. c. Physical Database Design 23 Merupakan proses yang menghasilkan deskripsi untuk implementasi basis data pada penyimpanan sekunder. Proses ini menggambarkan relasi dasar organisasi file dan indeks-indeks yang digunakan untuk menghasilkan akses ke data yang efisien, batasan integrasi yang berasosiasi, serta unsur keamanan. 2.1.4.5 DBMS Selection (Optional) Seleksi DBMS adalah kegiatan pemilihan DBMS untuk mendukung sistem basis data (2010, p325, Connolly). 2.1.4.6 Application Design Desain aplikasi akan merancang user interface dan aplikasi program yang menggunakan dan memproses basis data (2010, p329, Connolly). Ada dua aspek dari desain aplikasi, yaitu (2010, p330, Connolly): 1. Transaction Design Merupakan rangkaian aksi yang dilakukan oleh seorang pengguna maupun program aplikasi yang mengakses/mengubah isi dari basis data. Ada tiga tipe transaksi: a. Retrieval transaction b. Update transaction c. Mixed transaction 24 2. User Interface Design Guidelines Sebelum mengimplementasikan suatu form atau aturan yang pertama kali dilakukan adalah merancang layout (2010, p331, Connolly). Pedoman perancangannya adalah sebagai berikut: a. Judul yang bermakna b. Instruksi yang mudah dipahami c. Pengelompokkan yang logis dan kolom yang berurutan d. Layout dari suatu form atau report yang menarik secara visual e. Nama field yang sering digunakan f. Terminologi dan singkatan yang konsisten g. Warna yang konsisten h. Ruang dan batasan yang jelas untuk field yang digunakan untuk memasukkan data i. Penggerakan kursor yang mudah j. Perbaikan kesalahan untuk karakter individu maupun keseluruhan field k. Pesan kesalahan untuk nilai yang tidak dapat diterima l. Field yang optional ditandai dengan jelas m. Pesan yang jelas untuk field n. Adanya sinyal selesai, ketika pengguna selesai mengisi field dari suatu formulir 25 2.1.4.7 Prototyping (Optional) Prototyping membangun model kerja dari suatu sistem basis data. Tujuan utamanya adalah mengizinkan pengguna untuk mengidentifikasi fitur dari sistem, apakah bekerja secara baik atau tidak, serta untuk mendukung pengembangan fiturnya. Ada dua tipe prototyping yang umum digunakan: 1. Requirements prototyping Menggunakan prototype untuk menetapkan tujuan aplikasi basis data dan ketika tujuan sudah terpenuhi prototype tidak digunakan lagi atau dibuang. 2. Evolutionary prototyping Digunakan untuk tujuan yang sama. Namun, prototyping yang sudah dipakai tidak dibuang melainkan dikembangkan lebih jauh menjadi aplikasi basis data yang baru. (2010, p333, Connolly) 2.1.4.8 Implementation Tahap ini merupakan tahap untuk merealisasikan basis data dan mendesain aplikasi secara fisik. Implementasir basis data dapat dicapai dengan menggunakan DDL dari DBMS yang dipilih atau dengan menggunakan Graphical User Interface (GUI). (2010, p334, Connolly) 26 2.1.4.9 Data Conversion and Loading Tahapan ini akan memindahkan data yang sudah ada ke dalam basis data yang baru dan mengubah aplikasi yang ada ke dalam basis data yang baru. Tahapan ini diperlukan ketika ada sistem basis data baru yang menggantikan sistem basis data lama. Pada masa sekarang, DBMS umumnya memiliki fungsi untuk memasukkan file ke dalam basis data yang baru. Fungsi ini memungkinkan pengembang untuk mengkonversi dan menggunakan program aplikasi yang lama untuk sistem yang baru. (2010, p334, Connolly) 2.1.4.10 Testing Menurut Connolly (2010, p334), testing adalah proses menjalankan sistem basis data dengan tujuan untuk menemukan kesalahan. Contoh kriteria yang dapat digunakan untuk melaksanakan evaluasi: a. Learnability Berapa lama waktu yang diperlukan pengguna baru menjadi produktif dengan sistem. b. Performance Seberapa baik sistem menanggapi kesesuaian praktik kerja pengguna. c. Robustness 27 Seberapa besar toleransi sistem untuk kesalahan pengguna. d. Recoverability Seberapa baik sistem untuk memulihkan kesalahan pengguna. e. Adaptability Seberapa dekat sistem terkait dengan satu model kerja. (2010, p335, Connolly) 2.1.4.11 Operational Maintenance Menurut Connolly (2010, p335), operational maintenance adalah proses untuk memantau dan memelihara sistem basis data dengan mengikuti proses instalasi. Ada dua kegiatan yang terlibat dalam tahap ini: 1. Memantau kinerja sistem. 2. Memelihara dan memperbaharui sistem basis data. 2.1.5 Entity-Relationship Modeling Entity-Relationship (ER) Modeling merupakan salah satu pendekatan top-down untuk merancang basis data yang dimulai dengan mengidentifikasi data penting yang disebut entitas dan relasi antara data harus tergambarkan di dalam model tersebut. Untuk menambah informasi pada entitas dan relasi menggunakan atribut, lalu untuk menambah batasan yang lebih detail menggunakan constraints. (2010, p371, Connolly) 28 ER Modeling digambarkan dalam suatu diagram yang dinamakan ERD (Entity Relationship Diagram). 2.1.5.1 Entity Types Menurut Connolly (2010, p372), entity types adalah kumpulan objek yang mempunyai sifat/properti yang sama dan diidentifikasi oleh perusahaan karena keberadaannya bebas (independent existence). Entity types akan mewakili objek yang ada di dunia nyata baik objek fisik ataupun objek yang abstrak (hanya sebuah konsep). Contoh entitas fisik adalah staff, customer, property, dsb. Lalu, contoh dari entitas yang konseptual adalah sale, viewing, inspection, dsb. Setiap objek yang diidentifikasi secara unik dalam sebuah tipe entitas dinamakan entity occurrence. Entity types dibagi menjadi dua, yaitu Strong Entity Type dan Weak Entity Type. Entitas yang disebut strong entity type kemunculannya tidak bergantung pada entitas lain, sedangkan kemunculan weak entity type bergantung pada entitas lain. 2.1.5.2 Relationship Types Tipe relasi adalah kumpulan hubungan yang berarti diantara tipe-tipe entitas. Setiap tipe relasi diberikan nama yang menggambarkan fungsinya. Contoh dari suatu relasi adalah relasi ‘mempunyai/has’ antara entitas Branch ke entitas Staff yang dihubungkan oleh suatu garis. Relationship 29 occurrence adalah suatu hubungan unik yang terdiri dari satu kejadian untuk setiap tipe entitas yang berpartisipasi. (2010, p374, Connolly) Derajat tipe relasi (Degree of a relationship type) adalah jumlah entitas yang ada dalam suatu relasi. Ada tiga jenis derajat tipe relasi, yaitu: 1. Binary relationship: relasi yang terdiri dari dua entitas. 2. Ternary relationship: relasi yang terdiri dari tiga entitas. 3. Quartenary relationship: relasi yang terdiri dari empat entitas. Ada juga, relasi rekursif yang merupakan relasi dalam tipe entitas yang sama dimana entitas tersebut berpartisipasi lebih dari satu kali dalam peran yang berbeda. Relasi rekursif sering disebut juga unary relationship. Contoh: entitas Staff membawahi entitas Staff sendiri (suatu staff bisa menjadi atasan staff lain), di sini, staff mempunyai dua peran, yaitu sebagai supervisor dan sebagai bawahan supervisor. 2.1.5.3 Attibutes Atribut adalah sifat dari suatu entitas atau relasi (2010, p379, Connolly). Contoh atribut dari suatu entitas Staff, yaitu atribut noStaff, nama, posisi, gaji, dsb. Lalu, contoh atribut dari suatu relasi ‘mengiklankan’ antara entitas Koran ke entitas RumahSewa, yaitu atribut harga dan tanggalIklan (hubungan dengan atributnya digambarkan dengan garis putus-putus). 30 Domain atribut adalah himpunan nilai yang diperbolehkan untuk satu atau lebih atribut. Contoh: domain atribut untuk atribut Room adalah himpunan nilai integer antara 1 sampai 15. Atribut dapat diklasifikasikan menjadi: 1. Simple Attribute Simple attribute adalah atribut yang terdiri dari satu komponen tunggal dengan keberadaan yang independen dan tidak dapat dibagi lagi menjadi komponen yang lebih kecil. Simple attribute sering juga disebut atomic attribute. Contoh: atribut Gaji dalam entitas Staff. 2. Composite Attribute Composite attribute merupakan atribut yang terdiri dari beberapa komponen, dimana setiap komponennya mempunyai keberadaan yang independen. Contoh: atribut Alamat yang dapat memiliki atribut Jalan, Kota, maupun Kodepos. 3. Single-valued Attribute Single-valued attribute merupakan atribut yang mempunyai nilai tunggal untuk setiap kejadian suatu tipe entitas. Contoh atribut bernilai tunggal: branchNo dalam entitas Branch. 4. Multi-valued Attribute 31 Multi-valued attribute merupakan atribut yang mempunyai beberapa nilai untuk setiap kejadian suatu tipe entitas. Contoh atribut yang bisa mempunyai banyak nilai: atribut telepon dalam entitas Branch. 5. Derived Attribute Derived Attribute merupakan atribut yang nilainya dihasilkan dari satu atau beberapa atribut lain yang berhubungan dan tidak harus berasal dari tipe entitas yang sama. Contoh: atribut Durasi yang nilainya didapat dari hasil pengurangan waktu selesai dikurang waktu mulai. 2.1.5.4 Keys Menurut Connolly (2010. p381), keys terbagi menjadi tiga kunci utama, yaitu: 1. Candidate Key merupakan sejumlah kecil atribut yang mengidentifikasi secara unik setiap kejadian dari sebuah entitas. 2. Primary Key (PK) merupakan candidate key yang dipilih untuk mengidentifikasi secara unik kejadian dari sebuah entitas. Candidate key yang tidak terpilih akan menjadi alternate key (kunci alternatif). Primary key penting untuk dibuat dalam mendesain tabel basis data, alasannnya karena PK berfungsi sebagai penanda yang tidak bisa mempunyai nilai yang duplikat. Karena 32 setiap baris harus mempunyai nilai yang berbeda, maka PK harus bernilai unik. 3. Composite Key merupakan candidate key yang terdiri dari dua atau lebih atribut. 2.1.5.5 Structural Constraint Batasan utama pada sebuah relasi adalah multiplicity (2010, p385, Connolly). Multiplicity sendiri merupakan jumlah kejadian dari satu entitas yang mungkin terjadi. Entitasnya terhubung dengan entitas lain dalam suatu kejadian melalui suatu relationship. Relationship yang sering digunakan adalah binary relationship. Binary relationship ini dibagi menjadi relasi one-to-one (1:1), one-to-many (1:*), dan many-to-many (*:*). Multiplicity mempunyai dua constraint (batasan) untuk relasi, yaitu cardinality dan participation. Cardinality akan mendeskripsikan jumlah maksimum relationship occurrence yang mungkin terjadi untuk sebuah entitas yang berpartisipasi dalam satu tipe relasi. Sedangkan, participation akan menentukan apakah semua entitas berpartisipasi (mandatory participation) atau hanya beberapa entitas yang berpartisipasi (optional participation) dalam sebuah relationship. 33 2.1.6 Metodologi Perancangan Basis Data Metode perancangan basis data merupakan pendekatan terstruktur yang menggunakan prosedur-prosedur, teknik-teknik, alat-alat, dokumentasi tambahan untuk mendukung dan memberi fasilitas dari sebuah proses perancangan (2010, p466, Connolly). Ada tiga fase dalam metode perancangan basis data, yaitu: perancangan konseptual, perancangan logikal, dan perancangan fisikal. 2.1.6.1 Perancangan Konseptual Perancangan konseptual basis data akan menghasilkan model data konseptual. Setiap model data konseptual terdiri dari tipe entitas, tipe relationship, atribut dan domain atribut, primary keys dan alternate keys, serta integrity contraints (2010, p466, Connolly). Langkah-langkah perancangan konseptual adalah: 1. Mengidentifikasi tipe-tipe entitas Tahap ini akan mengidentifikasi dan mendefinisikan objek-objek utama yang menjadi kebutuhan pengguna. Lalu, objek-objek ini ditransformasikan menjadi tipe entitas. Setelah itu, entitas diberi nama dengan nama yang jelas dan mempunyai arti untuk pengguna. 2. Mengidentifikasi tipe-tipe relationship Tahap ini akan mengidentifikasi relationship penting yang berada di antara tipe entitas yang telah diidentifikasi sebelumnya. Biasanya, relationship dinyatakan dengan 34 kata kerja atau ekspresi verbal. Langkah-langkah untuk mengidentifikasi tipe relationship adalah: a. Menggunakan ERD (Entity Relationship Diagram) untuk menggambarkan entitas dan hubungan antar entitas dengan lebih mudah dan jelas. b. Menetapkan batasan multiplicity dari tipe relasi. c. Mengecek apakah ada fan dan chasm traps. Fan trap merupakan suatu masalah dalam Entity Relationship Modeling dimana jalan penghubung untuk relationshipnya ambigu. Sedangkan, chasm trap bermasalah karena tidak adanya jalan penghubung untuk relationship-nya. d. Mendokumentasikan tipe relationship-nya. 3. Mengidentifikasi dan menghubungkan atribut-atribut dengan tipe entitas atau relationship Tahap ini bertujuan untuk menghubungkan atribut dengan entitas maupun relationship yang sesuai lalu mendokumentasikannya. Atribut diidentifikasi dengan menggunakan kata benda atau frase kata benda (noun phrases), seperti sifat/karakteristik, kualitas dari satu entitas atau relationship. 4. Menentukan domain atribut Tahap ini bertujuan untuk menetapkan domain atribut dalam model data konseptual dan mendokumentasikannya. Domain merupakan kumpulan nilai dari satu atau lebih atribut yang menggambarkan nilainya. Domain yang 35 dispesifikasikan menyertakan nilai atribut yang diperbolehkan serta ukuran dan format atribut. 5. Menentukan atribut kandidat dan primary key Tahap ini bertujuan untuk mengidentifikasikan candidate key untuk setiap entitas dan jika terdapat lebih dari satu candidate key, maka harus dipilih satu sebagai primary key. 6. Mempertimbangkan penggunaan konsep pemodelan yang tinggi/Enhanced Modeling Concept (optional) Pada tahap ini, dapat dipertimbangkan untuk menggunakan enhanced modeling atau tidak. Yang termasuk enhanced modeling adalah spesialisasi, generalisasi, agregasi, dan komposisi. Spesialisasi dan generalisasi sama-sama mempunyai superclass (kelas induk) dan subclass (kelas anak). Namun, spesialisasi merupakan proses untuk memaksimalkan perbedaan antara anggota entitas dengan mengidentifikasi sifat-sifat istimewa. Sedangkan, generalisasi merupakan proses untuk meminimalkan perbedaan antara entitas dengan mengidentifikasi sifat yang umum. Lalu, agregasi memperlihatkan hubungan “has-a” atau “ispart-of” antara tipe entitas, yang satu mewakili “whole” dan yang satu lagi mewakili “part”-nya. Sedangkan, komposisi merupakan bentuk spesifik dari agregasi antara 36 tipe entitas dimana ada kepemilikan yang kuat antara hubungan “whole” dan “part”-nya. 7. Memeriksa model yang redundansi Tahap ini bertujuan untuk mengecek keberadaan suatu redundansi di dalam model yang telah dibuat dan apabila ada, redundansi harus dibuang. Ada tiga aktivitas dalam tahap ini, yaitu: a. Menguji kembali relationship 1:1 (one-to-one). Apabila dua entitas mempunyai nama berbeda, tetapi samasama mewakili object yang sama, maka harus digabungkan. b. Menghilangkan relationship yang redundan. Hubungan yang redundan terjadi jika dua atau lebih hubungan mengandung informasi yang sama. c. Mempertimbangkan dimensi waktu dalam menduga adanya redundansi. Dalam menduga keberadaan redundansi, perlu diperiksa maksud dari setiap relasi antar entitas dengan jelas. 8. Memvalidasikan model data konseptual dengan transaksi pengguna Tahap ini bertujuan untuk memastikan model data konseptual mendukung transaksi yang dibutuhkan. Digunakan dua pendekatan untuk memastikan model data konseptual ini, yaitu: a. Mendeskripsikan transaksi-transaksi yang ada. 37 b. Menggunakan jalur-jalur terjadinya transaksi. 9. Meninjau kembali model data konseptual dengan pengguna Tahap ini bertujuan untuk me-review model data konseptual dengan pengguna untuk memastikan bahwa model tersebut adalah representasi sebenarnya dari kebutuhan data perusahaan. 2.1.6.2 Perancangan Logikal Perancangan logikal akan menghasilkan model data logikal dari model data konseptual lalu memvalidasi model logikal apakah telah sesuai dengan kebutuhan transaksi. (2010, p490, Connolly) Langkah-langkah perancangan logikal: 1. Mengambil relasi yang telah dirancang sebelumnya untuk perancangan logikal ini. Perancangan konseptual dapat menghasilkan: a. Tipe entitas kuat (strong entity types): menunjukkan relasi yang mengandung semua atribut sederhana dari entitas tersebut. b. Tipe entitas lemah (weak entity types): menunjukkan relasi yang mengandung semua atribut sederhana dari entitas tersebut. Primary key dari weak entity baru dapat diidentifikasi terpetakan. setelah semua relationship 38 c. Tipe relationship one-to-many: menunjukkan entitas mana yang menunjukkan “one side” dan “many side”. d. Tipe binary relationship one-to-one: menunjukkan relasi yang menggambarkan batasan partisipasi, yaitu: mandatory participation di kedua sisi relationship 1:1, mandatory participation di salah satu sisi relationship 1:1, optional participation di kedua sisi relationship 1:1. e. Tipe relationship superclass/subclass: mengidentifikasi entitas superclass sebagai entitas induk dan entitas subclass sebagai entitas anak. f. Tipe binary relationship many-to-many: menunjukkan relasi yang mewakili relationship dan atribut yang terkandung di dalamnya. Menaruh primary key dari setiap entitas yang ada pada relasi ini untuk dimasukkan ke dalam sebuah entitas baru. g. Atribut yang multi-valued: membuat relasi baru yang menunjukkan adanya atribut yang mempunyai nilai lebih dari satu (multi-valued attribute). 2. Memvalidasikan hubungan/relasi menggunakan normalisasi Tahap ini bertujuan untuk memvalidasikan relasi dalam model data logikal menggunakan normalisasi. Penggunaan normalisasi bertujuan untuk memastikan bahwa relasi 39 yang ada mempunyai atribut yang minimal serta cukup jumlahnya dan juga untuk meminimalkan redundansi. 3. Memvalidasikan relasi terhadap transaksi pengguna Tahap ini bertujuan untuk memastikan model data logikal mendukung transaksi yang dibutuhkan. 4. Menentukan batasan integrity Tahap ini bertujuan untuk mengecek batasan integrity yang digambarkan dalam model data logikal. Batasan integrity-nya terdiri mengandung nilai dari: yang required valid), data (atribut attribute domain constraints, multiplicity, entity integrity (primary key tidak boleh null), dan refential integrity (foreign key harus jelas sumber entitasnya). 5. Meninjau ulang model data logikal dengan pengguna Tahap ini bertujuan memastikan bahwa model tersebut adalah representasi sebenarnya dari kebutuhan data perusahaan. 6. Menggabungkan model data logikal ke sebuah model data global yang merepresentasikan semua user view dari suatu basis data (optional). 7. Mengecek perkembangan masa depan Menentukan kemungkinan adanya perubahan di masa depan dan menilai kemungkinan model data logikal dapat menyesuaikan perubahan yang ada. 40 2.1.6.3 Perancangan Fisikal Perancangan fisikal bertujuan untuk menghasilkan deskripsi dari pengimplementasian basis data ke penyimpanan sekunder, menghasilkan relasi dasar, file organization dan indeks yang berguna untuk menghasilkan akses yang efisien, serta menghasilkan batasan-batasan integritas dan unsur keamanan (2010, p523, Connolly). Langkah-langkah perancangan fisikal: 1. Menerjemahkan model data logikal untuk DBMS target a. Merancang hubungan dasar (base relations) Tahap ini menetapkan cara untuk menampilkan base relations di dalam DBMS target. Base relations akan dideskripsikan menggunakan DBDL (Database Designation Language) yang berisi domain, default values, dan indikator null. b. Merancang representasi dari derived data Tahap ini menetapkan cara untuk menampilkan derived data yang muncul di model data logikal ke DBMS target. Derived data atau calculated attributes merupakan atribut yang nilainya didapat dari nilai atribut lain. c. Merancang general constraints Menerapkan general constraints tergantung dari pemilihan DBMS-nya. Beberapa sistem menyediakan 41 fasilitas lebih dalam hal pendefinisian general constraints ini. 2. Merancang organisasi file dan indeks-indeks. a. Menganalisis transaksi Tahap ini bertujuan untuk memahami fungsi dari transaksi basis data yang ada dan menganalisis transaksi yang penting. Transaksi yang penting adalah transaksi yang sering digunakan dan mempunyai dampak yang tinggi dalam kinerja DBMS, punya berperan aktif dalam operasional yang ada, dan punya saat-saat tertentu dimana ada permintaan tinggi untuk mengakses basis data (peak load). Langkah-langkah menganalisisnya adalah: 1. Memetakan semua transaksi ke relasi. 2. Menetapkan frekuensi (memperkirakan berapa digunakannya rata-rata informasi dan nilai maksimum informasi yang digunakan serta pada jam berapa terjadi peak load). 3. Menganalisis penggunaan data (menganalisis relasi dan atribut yang diakses transaksi lalu memperkirakan berapa banyak transaksi yang akan berjalan serta berapa lama waktu terpenuhinya suatu transaksi). b. Memilih file organizations 42 Tahap ini akan menetapkan file organizations dari setiap relasi. Pilihan untuk menyimpan dan mengatur file adalah: Heap, Hash, Indexed Sequential Access Method (ISAM), B+- tree, Clusters. Apabila DBMS tidak menyediakan pilihan file organization ini, maka tahap ini bisa dihilangkan. c. Memilih indeks Tahap ini akan menetapkan indeks yang akan digunakan untuk mempercepat performa dari sistem. d. Memprediksi kebutuhan tempat penyimpanan 3. Merancang user view Tahap ini akan menghasilkan rancangan tampilan pengguna yang sesuai dengan kebutuhan pengguna. Tahap ini berguna karena untuk membatasi hak akses basis data. 4. Merancang mekanisme keamanan Tahap ini bertujuan untuk merancang mekanisme keamanan untuk basis data. Ada dua tipe mekanisme keamanan menurut Connolly (2010, p543), yaitu: a. Keamanan sistem (System security) yang melindungi akses dan penggunaan basis data pada level sistem, seperti penggunaan username dan password. b. Keamanan data (Data security) yang melindungi akses dan penggunaan objek basis data, seperti relasi dan tampilan (view). 43 5. Mempertimbangkan pengenalan dari redundansi terkontrol. Langkah ini mempertimbangkan denormalisasi skema relasional untuk meningkatkan kinerja. Faktor yang perlu dipertimbangkan adalah denormalisasi membuat implementasi lebih kompleks, selalu mengorbankan fleksibilitas, serta akan mempercepat retrieve data tetapi lambat dalam hal update data.Ukuran kinerja dari suatu perancangan basis data dilihat dari pendekatan efisiensi data (normalisasi) penyimpanan untuk atau meminimalkan pendekatan kapasitas efisiensi proses (denormalisasi) untuk mempercepat retrieve data. 6. Mengawasi dan mengatur sistem operasional. Langkah ini bertujuan untuk mengawasi sistem operasi, meningkatkan kinerja, dan menentukan sistem perancangan yang tepat, serta menggambarkan perubahan kebutuhan. 2.1.7 Normalisasi Normalisasi adalah suatu teknik untuk menghasilkan serangkaian relasi dengan sifat-sifat yang dibutuhkan sesuai kebutuhan data perusahaan (2010, p416, Connolly). Tujuan dari normalisasi adalah untuk meminimalkan jumlah atribut yang diperlukan, untuk mempermudah mengidentifikasi atribut yang mempunyai logical relationship yang berdekatan, dan untuk meminimalkan 44 redundansi/pengulangan. Lalu, pada akhirnya, pengguna dapat lebih mudah mengakses dan memelihara data, serta meminimalkan tempat penyimpanan data pada komputer. Tahap-tahap normalisasi menurut Connolly (2010, p430): 1. Unnormalized Form (UNF) Bentuk UNF merupakan sebuah tabel yang berisi satu atau lebih grup yang berulang. Bentuk ini akan menghasilkan atribut-atribut yang didapat dari sumber informasi (contoh: form). 2. First Normal Form (1NF) Bentuk 1NF merupakan sebuah relasi dimana irisan setiap baris dan kolom berisi satu dan hanya satu nilai. Untuk mentransformasikan unnormalized table sebelumnya menjadi 1NF, pertama-tama, mengidentifikasi grup yang berulang dalam tabel lalu menghilangkannya. Berikut dua pendekatan yang digunakan untuk menghilangkan grup yang berulang adalah: a. Memasukkan data yang semestinya ada ke dalam kolom kosong pada baris yang berisi data yang berulang (flattening table). b. Menempatkan data yang berulang bersama salinan dari atribut yang asli ke dalam relasi yang terpisah. 3. Second Normal Form (2NF) Bentuk 2NF merupakan sebuah relasi dalam 1NF dimana setiap atribut yang bukan Primary Key (PK) bersifat fully-functional dependent terhadap PK-nya. Atribut B dikatakan fully-functional dependencies terhadap atribut A jika B functionally dependent (setiap nilai dari A berasosiasi dengan tepat satu nilai B) terhadap A, 45 tetapi bukan bergantung pada subset dari A. Bentuk 2NF ini akan menghilangkan partial dependencies (ketergantungan kepada salah satu key yang composite). 4. Third Normal Form (3NF) Bentuk 3NF merupakan sebuah relasi dalam 1NF dan 2NF dimana tidak ada atribut non-primary key yang bersifat transitive dependent terhadap PK-nya. Transitive dependency terjadi jika suatu atribut dependent pada satu atau lebih non-primary key. 2.1.8 Flowchart Flowchart (bagan alir) merupakan representasi secara grafik dari suatu algoritma atau prosedur untuk menyelesaikan suatu masalah. Penggunaan flowchart membantu memudahkan pengecekan analisis masalah dan berguna sebagai fasilitas berkomunikasi di antara programmer yang bekerja dalam tim suatu proyek. Lima macam jenis flowchart: 1. Flowchart Sistem Merupakan diagram alir yang menggambarkan arus pekerjaan dari sistem secara keseluruhan, menjelaskan urutan dari prosedurprosedur yang ada di dalam suatu sistem, serta menunjukkan apa yang dikerjakan di dalam sistem. Simbolnya adalah: 46 Gambar 2.3 Simbol Flowchart Sistem 47 Gambar 2.4 Contoh Flowchart Sistem 2. Flowchart Program Merupakan diagram alir yang berisi keterangan yang lebih rinci tentang bagaimana setiap langkah program atau prosedur dilaksanakan. Flowchart ini digunakan untuk menggambarkan urutan instruksi dari program komputer. Gambar 2.5 Contoh Program 48 Flowchart program ini terdiri dari dua bentuk, yaitu: a. Bagan alir logika, digunakan untuk menggambarkan logika setiap langkah program, disiapkan oleh analis sistem. b. Bagan alir komputer terinci, menggunakan simbol-simbol, seperti: Gambar 2.6 3. Simbol Flowchart Program Flowchart Proses Merupakan bagan alir yang banyak digunakan di bidang teknik industri, yang berguna untuk menggambarkan proses yang ada di dalam suatu prosedur. Flowchart ini menunjukkan jarak kegiatan yang satu dengan yang lain serta waktu yang diperlukan oleh suatu kegiatan. Simbol yang digunakan: 49 Gambar 2.7 Simbol Flowchart Proses 4. Flowchart Dokumen (Document Flowchart) Disebut juga form flowchart atau paperwork, merupakan bagan alir yang menunjukkan arus laporan dan formulir, termasuk tembusantembusannya, menggunakan simbol-simbol yang sama dengan flowchart sistem. 5. Flowcart Skematik (Schematic Flowchart) Flowchart ini menggambarkan prosedur di dalam sistem, mirip seperti flowchart sistem dan menggunakan simbol-simbol flowchart sistem. Akan tetapi, flowchart ini menggunakan gambar komputer dan peralatan lain yang digunakan, dimana fungsinya adalah untuk memudahkan seseorang yang tidak familiar dengan flowchart memahami simbol-simbol flowchart yang ada. 2.1.9 Data Flow Diagram (DFD) DFD memperlihatkan pergerakan data di perusahaan dan data yang disimpan dalam penyimpanan data (Connolly, 2005, 478). Berikut adalah simbol yang digunakan dalam DFD: 50 Gambar 2.8 Simbol Pada DFD Keterangan: a. Kesatuan luar adalah kesatuan di luar sistem yang akan memberikan input atau menerima output dari sistem, dapat berupa orang, organisasi, sumber informasi lain, ataupun penerima akhir dari suatu laporan. b. Proses merupakan kegiatan atau pekerjaan yang dilakukan oleh orang atau mesin komputer, dimana aliran data masuk ditransformasikan ke aliran data keluar. c. Arus data digambarkan dalam bentuk anak panah yang menuju ke atau dari proses, digunakan untuk menggambarkan gerakan paket data atau informasi dari satu bagian ke bagian lain dari sistem dimana penyimpanan mewakili lokasi penyimpanan data. Nama berfungsi untuk mendefinisikan arti aliran dan ditulis untuk 51 mengidenfikasikan aliran tersebut. Ujung panah menunjukkan kemana data bergerak. Aliran yang digambarkan dengan dua ujung panah menunjukkan terjadinya dialog. Aliran dapat juga menyebar atau menyatu. d. Penyimpanan (Data Store) Kumpulan data akan disimpan dalam sistem komputer dengan cara tertentu, seperti tape magnetic, disk, atau model DBMS lainnya. Ada tiga tingkatan dalam DFD, yaitu: 1. Diagram Konteks (Context Diagram) Diagram konteks adalah diagram tingkat atas yang merupakan diagram dari sebuah sistem yang menggambarkan aliran data yang masuk dan keluar dari sistem dan dari entitas luar. Diagram konteks memberikan gambaran tentang keseluruhan sistem, hanya mempunyai satu proses, dan tidak menyertakan data store di dalamnya. 2. Diagram Nol Disebut juga DFD level 1, merupakan penggambaran diagram konteks yang lebih rinci. Diagram nol akan memperlihatkan data store yang digunakan, ada penomoran proses, dan memperhatikan keseimbangan antara diagram konteks dengan diagram nol. 3. Diagram Rinci Setiap proses di DFD level 0 akan digambarkan lebih rinci lagi. 52 2.1.10 State Transition Diagram (STD) Menurut Whitten et al. (2007, p636), STD merupakan alat yang digunakan untuk menggambarkan urutan dan variasi dari tampilan layar yang dapat muncul ketika pengguna sistem mengunjungi terminal. Notasi yang digunakan dalam STD adalah: a. Kotak yang menggambarkan layar tampilan. b. Anak panah yang menggambarkan aliran kontrol dan menggerakan kejadian yang akan menyebabkan layar menjadi aktif atau menerima fokus. STD dapat menjadi besar ketika semua input, output, help, dan layar-layar lain dimasukkan ke dalam diagram, sehingga STD dapat dipecah menjadi diagram yang lebih sederhana. STD memiliki initial dan final state, jumlah final state bisa lebih dari satu, tetapi initial state tidak bisa lebih dari satu. Untuk melengkapi STD, diperlukan Condition dan Action. Condition adalah suatu event yang dapat dideteksi oleh sistem, sedangkan action adalah hal yang dilakukan oleh sistem bila terjadi perubahan state atau merupakan reaksi terhadap condition. Action akan menghasilkan output, message display pada layar, hasil kalkulasi, dsb. 2.2 Teori-Teori Khusus 2.2.1 Pembelian Menurut Mulyadi (2001,p299), pembelian adalah suatu usaha yang digunakan dalam perusahaan untuk pengadaan barang yang 53 diperlukan oleh perusahaan. Transaksi pembelian dapat digolongkan menjadi dua yaitu: 1) Pembelian lokal Pembelian lokal adalah pembelian dari pemasok dalam negeri. 2) Pembelian impor Pembelian impor adalah pembelian dari pemasok luar negeri. 2.2.1.1 Fungsi yang terkait dalam pembelian Menurut Mulyadi (2001,p299), fungsi yang terkait dala sistem pembelian adalah: a. Fungsi gudang Dalam sistem akuntansi pembelian, fungsi gudang bertanggung jawab untuk mengajukan permintaan pembelian sesuai dengan posisi persediaan yang ada di gudang dan untuk menyimpan barang yang telah diterima oleh fungsi penerimaan. b. Fungsi pembelian Fungsi pembelian memperoleh bertanggung informasi mengenai jawab harga untuk barang, menentukan pemasok yang dipilih dalam pengadaan barang, dan mengeluarkan order pembelian kepada pemasok yang dipilih. c. Fungsi penerimaan Dalam sistem akuntansi pembelian, fungsi ini bertanggung jawab untuk melakukan pemeriksaan 54 terhadap jenis, mutu, dan kuantitas barang yang diterima dari pemasok guna menentukan dapat atau tidaknya barang tersebut diterima oleh perusahaan. d. Fungsi akuntansi Fungsi akuntansi yang terkait dalam transaksi pembelian adalah fungsi pencatat utang dan fungsi pencatat persediaan. Dalam sistem akuntansi pembelian, fungsi pencatat utang bertanggung jawab untuk mencatat transaksi pembelian ke dalam register bukti kas keluar dan untuk menyelanggarakan arsip dokumen sumber yang berfungsi sebagai catatan utang atau menyelanggarakan kartu utang sebagai buku pembantu utang. Dalam sistem akuntasi pembelian, fungsi pencatat persediaan bertanggung jawab untuk mencatat harga pokok persediaan barang yang dibeli ke dalam kartu persediaan. 2.2.1.2 Jaringan prosedur yang membentuk sistem pembelian Menurut Mulyadi (2001,p299), jaringan prosedur yang membentuk sistem pembelian adalah: a. Prosedur permintaan pembelian Dalam prosedur ini, fungsi gudang mengajukan permintaan pembelian dalam formulir surat permintaan pembelian kepada fungsi pembelian. 55 b. Prosedur permintaan penawaran harga dan pemilihan pemasok Dalam prosedur ini, fungsi pembelian mengirimkan surat permintaan penawaran harga kepada para pemasok untuk memperoleh informasi mengenai harga barang dan berbagai syarat pembelian yang lain. c. Prosedur order pembelian Dalam prosedur ini, fungsi pembelian mengirim surat order pembelian kepada pemasok yang dipilih dan memberitahukan kepada unit-unit organisasi lain dalam perusahaan mengenai order pembelian yang sudah dikeluarkan oleh perusahaan. d. Prosedur penerimaan barang Dalam prosedur ini, fungsi penerimaan melakukan pemeriksaan mengenai jenis, kuantitas, dan mutu barang yang diterima dari pemasok dan kemudian membuata laporan penerimaan barang untuk menyatakan penerimaan barang dari pemasok tersebut. e. Prosedur pencatatan utang Dalam prosedur ini, fungsi akuntansi memeriksa dokumen-dokumen yang berhubungan dengan pembelian dan menyelanggarakan pencatatan utang atau mengarsipkan dokumen sebagai sumber catatan utang. 56 f. Prosedur distribusi pembelian Prosedur ini meliputi distribusi rekening yang didebit dari transaksi pembelian untuk kepentingan pembuatan laporan manajemen. 2.2.1.3 Dokumen pada sistem pembelian Menurut Mulyadi (2001,p303), beberapa dokumen yang digunakan dalam sistem pembelian yaitu: a. Surat permintaan pembelian b. Surat penerimaan penawaran harga c. Surat order pembelian d. Laporan penerimaan barang e. Surat perubahan order pembelian f. Bukti kas keluar 2.2.2 Persediaan Menurut Nasution (2003, p103), persediaan adalah sumber daya yang menganggur yang menunggu proses lebih lanjut. Proses lebih lanjut tersebut berupa kegiatan produksi pada sistem manufaktur, kegiatan pemasaran pada sistem distribusi ataupun kegiatan konsumsi pangan pada sistem rumah tangga. 2.2.2.1 Fungsi yang terkait dalam persediaan Menurut Mulyadi (2001,p579), fungsi terkait dalam sistem perhitungan fisik persediaan, yaitu: 57 1) Panitia perhitungan fisik persediaan berfungsi untuk melaksanakan perhitungan fisik persediaan dan menyerahkan hasil perhitungan tersebut kepada bagian kartu persediaan untuk digunakan sebagai dasar penyesuaian terhadap catatan persediaan dalam kartu persediaan 2) Fungsi akuntansi bertanggung jawab untuk : a. Mencantumkan harga pokok sistem persediaan yang dihitung dalam daftar perhitungan fisik. b. Mengalikan persatuan kuantitas yang dan harga tercantum dalam pokok hasil perhitungan fisik. c. Mencantumkan harga pokok total dalam daftar hasil perhitungan fisik. d. Melakukan penyesuaian terhadap kartu persediaan berdasarkan data hasil perhitungan fisik persediaan. e. Membuat bukti memorial untuk mencatat penyesuaian data persediaan dalam jurnal umu berdasarkan hasil perhitungan fisik persediaan. 3) Fungsi gudang bertanggung jawab untuk melakukan penyesuaian data kuantitas persediaan yang dicatat dalam kartu gudang berdasarkan hasil perhitungan fisik persediaan. 58 2.2.2.2 Sistem dan prosedur yang membentuk sistem persediaan Menurut Mulyadi (2001,p559), sistem dan prosedur yang bersangkutan dengan sistem persediaan adalah: 1) Prosedur pencatatan produk jadi. Prosedur ini merupakan salah satu prosedur dalam sistem akuntansi biaya produksi. Dalam produksi ini, dicatat harga pokok produksi jadi didebitkan ke dalam rekening persediaan produk jadi dan dikreditkan ke dalam rekening barang dalam proses. Dokumen yang digunakan dalam prosedur pencatatan produk jadi adalah laporan produk selesai dan memorial. 2) Prosedur pencatatan harga pokok produk yang dijual. Prosedur ini merupakan salah satu prosedur dalam sistem penjualan disamping prosedur lainnya seperti prosedur order penjualan, persetujuaan kredit, pengiriman barang, penagihan, dan pencatatan piutang. Dokumen yang digunakan untuk mencatat penjualan produk jadi adalah surat order pengiriman dan faktur penjualan. 3) Prosedur pencatatan harga pokok produk jadi yang diterima kembali dari pembeli. Prosedur ini merupakan salah satu prosedur yang membentuk sistem retur pembelian. Dalam prosedur ini, dicatat harga pokok persediaan yang dibeli. 59 Dokumen yang digunakan dalam prosedur ini adalah laporan penerimaan barang dan memo debit. 4) Prosedur pencatatan tambahan dan penyesuaian kembali harga pokok persediaan produk dalam proses. Dokumen yang digunakan adalah bukti memorial. 5) Prosedur pencatatan harga pokok persediaan yang dibeli. Dokumen yang digunakan adalah laporan penerimaan barang dan bukti kas keluar. 6) Prosedur pencatatan harga pokok persediaan yang dikembalikan kepada pemasok. Prosedur ini merupakan salah satu prosedur yang membentuk sistem retur pembelian. Jika persediaan yang telah dibeli dikembalikan kepada pemasok, maka transaksi retur pembelian ini akan mempengaruhi persediaan yang bersangkutan. Dokumen yang digunakan adalah bukti memorial. 7) Prosedur permintaan dan pengeluaran barang gudang. Prosedur ini merupakan salah satu prosedur yang membentuk sistem akuntansi biaya produksi. Dalam produksi ini, dicatat harga pokok persediaan bahan baku, bahan baku cadangan, bahan baku habis pakai pabrik, dan suku cadang yang dipakai dalam kegiatan produksi dan non produksi. Dokumen yang digunakan 60 adalah bukti penerimaan dan pengeluaran barang gudang. 8) Prosedur pencatatan tambahan harga pokok persediaan karena pengembalian barang gudang. Dalam prosedur ini, transaksi pengembalian barang gudang mengurangi biaya dan menambah persediaan barang di gudang. 2.2.2.3 Tujuan Persediaan Menurut Render, Haizer (2001,p314), fungsi dari persediaan adalah sebagai berikut: a. Untuk memberikan suatu stok barang agar dapat memenuhi permintaan yang diantisipasikan akan timbul dari konsumen. b. Untuk mengambil keuntungan dari potongan jumlah c. Untuk melakukan hedging terhadap inflasi dan perubahan harga. d. Untuk menghindari dari kekurangan stok yang dapat terjadi karena cuaca, kekurangan pasokan, masalah mutu, atau pengiriman yang tidak tepat. e. Untuk menjaga agar operasi dapat berlangsung dengan baik dengan menggunakan “barang dalam proses” dalam persediaannya. 61 2.2.3 Penjualan Menurut Mulyadi (2001,p202), kegiatan penjualan terdiri dari transaksi penjualan barang atau jasa baik secara kredit maupun tunai. Penjualan menurut cara bayarnya dapat dibedakan sebagai berikut: 1) Penjualan tunai, yaitu penjualan yang dilaksanakan oleh perusahaan dengan cara mewajibkan pembeli dengan melakukan pembayaran terlebih dahulu sebelum barang diserahkan kepada pembeli. 2) Penjualan kredit, yaitu penjualan yang dilakukan dengan cara memenuhi order dari pelanggan dengan mengirimkan barang atau menyerahkan jasa, lalu perusahaan memiliki piutang kepada pelanggan untuk jangka waktu tertentu. Menurut Mulyadi (2001, p210), sistem penjualan kredit adalah penjualan dilaksanakan oleh perusahaan dengan cara mengirimkan barang sesuai dengan order yang diterima dari pembeli dan untuk jangka waktu tertentu perusahaan mempunyai tagihan kepada pembeli tersebut. 2.2.3.1 Fungsi yang terkait dalam penjualan Menurut Mulyadi (2001,p211), fungsi-fungsi terkait dalam sistem penjualan kredit ini adalah sebagai berikut: a. Fungsi penjualan Fungsi ini bertanggung jawab untuk menerima surat order dari pembeli, mengedit order dari pelanggan untuk menambahkan informasi yang belum ada pada 62 saat surat order tersebut, meminta otorisasi kredit, menentukan tanggal pengiriman dan dari gudang mana barang akan dikirim, dan mengisi surat order pengiriman. b. Fungsi kredit Fungsi ini berada di bawah fungsi keuangan yang dalam transaksi penjualan kredit, bertanggung jawab untuk meneliti memberikan status otorisasi kredit pelanggan, pemberian kredit dan kepada pelanggan c. Fungsi gudang Fungsi ini bertanggung jawab untuk menyimpan barang dan menyiapkan barang dipesan oleh pelanggan, serta menyerahkan barang ke fungsi pengiriman. d. Fungsi pengiriman Fungsi ini bertanggung jawab untuk menyerahkan barang atas dasar surat order pengiriman yang diterimanya dari fungsi penjualan. e. Fungsi penagihan Fungsi ini bertanggung jawab untuk membuat dan mengirimkan faktur penjualan kepada pelanggan, serta menyediakan copy faktur bagi kepentingan pencatatan transaksi penjualan oleh fungsi akuntansi. f. Fungsi akuntansi 63 Fungsi ini bertanggung jawab untuk mencatat piutang yang timbul dari transaksi penjualan kredit dan membuat serta mengirimkan pernyataan piutang kepada para debitur, serta membuat laporan penjualan. 2.2.3.2 Jaringan prosedur yang membentuk sistem penjualan Menurut Mulyadi (2001,p219), jaringan prosedur yang membentuk sistem dalam sistem penjualan kredit ini adalah sebagai berikut: a. Prosedur order penjualan Dalam prosedur ini, fungsi penjualan menerima order dari pembeli dan menambahkan informasi penting pada saat surat order dari pembeli. b. Prosedur persetujuan kredit Dalam prosedur ini, fungsi penjualan meminta persetujuan penjualan kredit kepada pembeli tertentu dari fungsi kredit. c. Prosedur pengiriman Dalam prosedur ini, fungsi pengiriman mengirimkan barang kepada pembeli sesuai dengan informasi yang tercantum dalam surat order pengiriman yang diterima dari fungsi pengiriman. d. Prosedur penagihan Dalam prosedur ini, fungsi penagihan membuat faktur penjualan dan mengirimkannya kepada pembeli. 64 e. Prosedur pencatatan piutang Dalam prosedur ini, fungsi akuntansi mencatat tembusan faktur penjualan ke dalam kartu piutang atau dalam metode pencatatan tertentu mengarsipkan dokumen tembusan menurut abjad yang berfungsi sebagai pencatatan piutang. f. Prosedur distribusi data penjualan Dalam prosedur ini, fungsi akuntansi mendistribusikan data penjualan menurut informasi yang diperlukan oleh manajemen. g. Prosedur pencatatan harga pokok penjualan Dalam prosedur ini, fungsi akuntansi mencatat secara periodik total harga pokok produk yang dijual dalam periode akuntansi tertentu. 2.2.3.3 Dokumen pada sistem penjualan Menurut Mulyadi (2001,p214), beberapa dokumen yang digunakan dalam sistem penjualan secara kredit yaitu: a. Surat order pengiriman dan tembusannya b. Faktur dan tembusannya c. Rekapitulasi harga pokok penjualan d. Bukti memorial 65 2.2.4 PHP PHP adalah sebuah server-side scripting language yang dirancang secara khusus untuk web. Suatu halaman HTML dapat dimasukkan kode PHP yang dapat dieksekusi setiap halaman tersebut dikunjungi. Beberapa kelebihan PHP: a) Performance (Kinerja) PHP mempunyai kinerja yang sangat cepat untuk jutaan klik per hari apalagi menggunakan single server yang tidak mahal. b) Scalability Secara efektif dan tidak mahal, PHP dapat dikembangkan dengan jumlah server yang besar. c) Database Integration PHP mempunyai koneksi untuk banyak sistem basis data sejak mulanya. Selain MySQL, PHP dapat langsung dihubungkan dengan PostgreSQL, Oracle, dbm, FilePro, DB2, Hyperwave, Informix, InterBase, dan Sybase databases. PHP 5 juga punya builtin SQL interface ke flat file yang bernama SQLite. d) Built-in libraries for many common web tasks e) Low cost f) Ease of learning and use g) Strong object-oriented support h) Portability i) Flexibility of development approach j) Source code 66 Tidak seperti produk komersial untuk membuat program, pengguna PHP dapat memodifikasi atau menambahkan kode program secara bebas dan gratis, serta tidak perlu khawatir bila tidak perusahaan produsen PHP akan menghentikan supporting untuk produk. k) Availability of support and documentation Dokumentasi PHP berasal dari sumber yang banyak dan matang dengan jutaan informasi untuk dibagikan. 2.2.5 JavaScript JavaScript merupakan bahasa berbentuk kumpulan script yang berfungsi untuk memberikan tampilan yang tampak lebih interaktif pada dokumen web. Bahasa ini memberikan kemampuan tambahan untuk HTML (Hypertext Markup Language) dengan mengizinkan pengeksekusian perintah-perintah pada sisi klien. JavaScript tidak memerlukan sebuah kompilator/penerjemah khusus untuk mengeksekusinya. JavaScript pertama kali dikembangkan di Netscape, oleh Brendan Eich. Kelebihan: a. Lebih praktis dan mudah sebab bahasa pemrograman JavaScript memiliki sedikit sintaks. b. Koneksi cepat karena peletakan program terdapat di sisi klien, berukuran file sangat kecil, dan dapat langsung dijalankan di browser. Kekurangan: a. Pengelolaan objek dalam Javascript sangat terbatas. 67 b. Penggunaan script dapat di-copy langsung melalui sebuah web browser, sehingga setiap orang dapat meniru dan menggunakan program JavaScript yang telah dibuat seorang programmer. 2.2.6 Ajax Ajax merupakan suatu teknik/metode pengambilan data dari server menggunakan fungsi dalam Javascript, yaitu XML.HttpRequest (XHR). XML.HttpRequest merupakan objek yang dirancang untuk memungkinkan permintaan layanan ke server HTTP secara asinkron. Asinkron berarti klien bisa meminta layanan dari server dan tidak perlu menunggu server melayaninya. Jadi, walaupun informasi dari server belum didapat, layanan kepada pengguna tetap bisa dilakukan. Ajax merupakan gabungan dari teknik/teknologi yang sebelumnya sudah ada, yaitu: a. XHTML (Extensible Hypertext Markup Language) yang merupakan pengembangan dari HTML. b. CSS (Cascading Style Sheet) untuk mengatur style/format tampilan suatu dokumen di web. c. XML (Extensible Markup Language) merupakan format data yang memungkinkan untuk melakukan pertukaran data yang lebih interaktif, XML dapat digantikan dengan JSON (Javascript Object Notation). d. DOM (Document Object Model) yang mengatur interaksi dan tampilan isi HTML dan XML secara dinamis. e. JavaScript merupakan bahasa utama yang membentuk lapisan Ajax. 68 Beberapa kelebihan ketika menggunakan Ajax: a. Mengurangi penggunaan bandwidth yang berlebihan. b. Meningkatkan produktivitas tanpa harus menunggu proses/action yang berbelit-belit. c. Menghemat biaya pengeluaran karena banyak mengurangi proses pengembangan. d. Meningkatkan interaksi user atau usability pada situs web. Beberapa kekurangan dari Ajax: a. Aplikasi Ajax tidak berfungsi apabila user mematikan JavaScript di browser. b. Tidak semua browser mendukung Ajax. c. Karena alamat halaman tidak berubah ketika proses bekerja, maka tidak mudah untuk membuat bookmark pada halaman web yang berbasis Ajax. 2.2.6.1 JSON JSON (JavaScript Object Notation) adalah format pertukaran data yang ringan, mudah dibaca dan ditulis oleh manusia, serta mudah diterjemahkan dan dibuat (generate) oleh komputer. Format ini dibuat berdasarkan bagian dari bahasa pemrograman JavaScript. JSON merupakan format teks yang independen, tetapi menggunakan gaya bahasa yang umum digunakan oleh keluarga C termasuk C, C++, C#, Java, JavaScript, Perl, dll. Oleh karena itu, JSON menjadi ideal sebagai bahasa pertukaran data. 69 JSON terbuat dari dua struktur: a. Kumpulan pasangan nama/nilai. Pada beberapa bahasa, hal ini dinyatakan sebagai objek (object), rekaman (record), struktur (struct), kamus (dictionary), tabel hash (hash table), daftar berkunci (keyed list), atau associative array. b. Daftar nilai yang tersusun (an ordered list of values). Pada kebanyakan bahasa, hal ini dinyatakan sebagai larik (array), vektor (vector), daftar (list), atau urutan (sequence). 2.2.7 NginX Nginx (baca: Engine X) adalah server HTTP dan reverse proxy gratis berbasis open-source berkemampuan tinggi, yang dapat juga digunakan sebagai proxy IMAM/POP3. Perangkat lunak ini diciptakan oleh Igor Sysoey pada tahun 2002, dan dirilis untuk pertama kalinya secara umum pada tahun 2004. Saat ini Nginx digunakan oleh 6% (13 juta) nama domain di seluruh dunia. Nginx terkenal karena performanya yang tinggi, stabil, memiliki banyak fitur, mudah dikonfigur, dan menggunakan hanya sedikit sumber daya pada server. Nginx memiliki arsitektur event-based. Dikarenakan event-based, Nginx mampu memanfaatkan seminimal mungkin thread untuk memproses request dari user, memori yang dipakai oleh Nginx pun menjadi minimal. Karena memori yang dipakai 70 sangat kecil, hasilnya server menjadi lebih ringan dan jauh lebih responsif. Kekurangan: a) Update yang cukup lama dibanding web server lainnya. b) Fast CGI yang tidak berfungsi sempurna. c) Kadangkala ada masalah pada .htaccess namun hal ini tergantung dari konfigurasi webmaster-nya sendiri. d) Pemakai tidak sebanyak Apache/IIS. Kelebihan: a) Open Source. b) Performa yang tinggi dan stabil serta memiliki banyak fitur. c) Konfigurasi yang cukup mudah. Menggunakan sedikit sumber daya. d) Cenderung lebih kuat untuk hostingan banyak dibanding Litespeed. 2.2.8 PostgreSQL PostgreSQL Management adalah System sebuah (ORDBMS) Object–Relational yang bersifat open Database source. PostgreSQL adalah database yang powerful dan tidak kalah dengan database komersil sekelasnya baik Oracle maupun Sybase, seperti dukungan perintah SQL dimana dengan menggunakan perintah SQL, memungkinkan DBA lebih mudah berinteraksi dengan database PostgreSQL, baik dalam manipulasi data seperti insert, update, dan delete. Perbedaan yang paling mendasar antar PostgreSQL dengan sistem relasional standar adalah kemampuan PostgreSQL yang memungkinkan 71 user untuk mendefinisikan SQL-nya sendiri, terutama untuk pembuatan function. Function dalam PostgreSQL sangat unik karena PostgreSQL tidak menetapkan built-in language untuk penulisan function. Selain function, PostgreSQL mempunyai kemampuan untuk membuat stored procedure dan trigger yang menjadikan kinerja dari aplikasi yang dibuat menjadi lebih optimal dalam kecepatan kinerjanya karena semua proses business rules yang ada diproses di komputer server bukan di komputer client. PostgreSQL menyerahkan kepada pemakai untuk memilih sendiri bahasa yang diinginkan yang disebut Procedural Language. PostgreSQL ini dapat sebagai media penyimpanan pada banyak bahasa pemrograman yang ada, baik itu pemrograman berbasis desktop seperti: Java, Gambas, dll ataupun pemrograman berbasis web seperti Phyton, PHP, JSP, Perl, dll. Library untuk ODBC dan JDBC juga telah tersedia, sehingga bahasa lain yang mendukung keduanya dapat mengakses PostgreSQL. PostgreSQL didesain untuk skala besar, memiliki ciri berorientasi objek, namun tetap dapat digunakan layaknya RDBMS pada umumnya. Para pengembangnya mengutamakan kelengkapan fitur ketimbang dukungan penuh akan standar SQL. Dalam perjalanannya, kelebihan fitur ini justru membuat PostgreSQL semakin powerful dan membuatnya dapat disejajarkan dengan database besar lainnya seperti Oracle. 72 2.2.9 SLIM Framework SLIM adalah framework (kerangka) mikro untuk php yang membantu untuk memisahkan aplikasi web ke dalam arsitektur modular. SLIM mendukung untuk fitur-fitur inti yang kuat dalam ukurannya yang kecil, sangat cocok untuk penggunaan komponen yang simple/sederhana dan mudah untuk digunakan. Beberapa fitur yang tersedia adalah powerful router, simple configuration, error handling and debugging, dsb. SLIM menggunakan engine/mesinnya. Template Twig sebagai mesin membantu template kode untuk berjalan berkesinambungan dengan logika programming secara eksklusif sambil menangani cara bagaimana untuk mempresentasikannya. Selain itu, SLIM juga menggunakan Idiorm/Paris yang merupakan layer ORM (Object Relational Mapping) yang sangat ringan untuk php. Hanya ada satu kelas dan satu file dengan penggunaan mudah dan sederhana namun tetap melakukan fungsinya dengan sangat baik. ORM sendiri adalah cara atau teknik untuk memetakan object dari aplikasi ke tabel basis data relasional. Object dari aplikasi akan dipetakan oleh ORM dan diubah ke dalam sintaks SQL (Structured Query Language). Setelah itu, SQL dijalankan pada basis data relasional dan hasilnya dikembalikan menjadi object ke aplikasi oleh ORM tersebut.