BAB 2 LANDASAN TEORI 2.1 Pendekatan Sistem Basis-Data 2.1.1 Pengertian Sistem Basis-Data Menurut Connolly (2005, p15), “database is a shared collection of logically related data, and a description of this data, designed to meet the information needs of an organization”, dapat diartikan: basis-data adalah sekumpulan data yang saling berhubungan secara logika dan sebuah deskripsi dari data ini, yang dirancang untuk memenuhi kebutuhan informasi dari sebuah organisasi. Menurut C. J. Date (2000, p5), “A database system is basically a computerized record-keeping system; i.e., it is a computerized system whose overall purpose is to store information and to allow users to retrieve and update that information on demand”, dapat diartikan: sistem basis-data pada dasarnya merupakan suatu sistem penyimpanan dokumen terkomputerisasi, yaitu: sistem terkomputerisasi yang secara keseluruhan bertujuan untuk menyimpan informasi dan mengijinkan pengguna untuk mendapatkan kembali dan mengubah (update) informasi tersebut sesuai permintaan. Menurut Mc. V. Mannino (2001, p7), “Database is language and graphical tools to define entities, relationships, integrity constraints, and authorization rights”, dapat diartikan: basis-data adalah bahasa dan alat 6 7 grafikal untuk mendefinisikan entities, relasi, batasan integritas, dan hak autorisasi. Dari pengertian-pengertian tersebut, dapat disimpulkan bahwa sistem basis-data adalah sebuah sistem yang menyimpan sekumpulan data dimana entities di dalamnya saling berelasi sehingga memudahkan pengguna dalam mengakses data sesuai dengan permintaan pengguna. 2.1.2 Database Management System (DBMS) 2.1.2.1 Pengertian Database Management System (DBMS) Menurut Connolly (2005, p16), “DBMS is a software system that enables users to define, create, maintain, and control access to the database”, dapat diartikan: DBMS adalah sebuah sistem software yang memungkinkan pengguna untuk mendefinisikan, membuat, memelihara dan mengontrol akses ke basis-data. 2.1.2.2 Komponen DBMS Menurut Connolly (2005, p18-21), terdapat lima komponen utama dalam lingkungan DBMS, yaitu: 1. Hardware DBMS dan aplikasi membutuhkan hardware untuk berjalan. Hardware tersebut dapat berupa, mulai dari single personal computer, hingga single mainframe, hingga satu jaringan komputer. Hardware yang dibutuhkan tergantung pada kebutuhan organisasi dan DBMS yang digunakan. 8 2. Software Komponen software terdiri dari software DBMS itu sendiri dan program aplikasi, beserta sistem operasi, termasuk software jaringan jika DBMS digunakan dalam jaringan. Khususnya, program aplikasi ditulis dalam third-generation language (3GL), seperti ‘C’, C++, Java, Visual Basic, COBOL, Fortran, Ada atau Pascal, atau menggunakan fourth-generation (4GL), seperti SQL, ditempelkan (embedded) dalam third-generation language. 3. Data Data mungkin merupakan komponen paling penting dalam lingkungan DBMS, tentunya dari sudut pandang pengguna akhir. Data berperan sebagai jembatan antara komponen mesin dan komponen manusia. Basis-data meliputi data operasional dan metadata, “data mengenai data”. 4. Prosedur Prosedur mengarah pada instruksi dan aturan yang mengatur rancangan dan kegunaan dari basis-data. Pengguna sistem dan pegawai yang mengelola basis-data membutuhkan prosedur terdokumentasi mengenai bagaimana cara menggunakan atau menjalankan sistem. Prosedur tersebut mungkin terdiri dari instruksi mengenai bagaimana cara: • Log on ke DBMS • Menggunakan fasilitas DBMS yang khusus atau program aplikasi 9 • Memulai dan menghentikan DBMS • Membuat salinan backup dari basis-data • Menangani kegagalan hardware atau software • Mengubah struktur tabel, menata ulang basis-data melewati multiple disks, meningkatkan performansi atau mengarsip data ke penyimpanan sekunder 5. Orang Komponen terakhir adalah orang-orang yang terlibat dengan sistem. 2.1.2.3 Keuntungan dan Kerugian DBMS Keuntungan dari DBMS, antara lain: 1. Kontrol terhadap redundansi data 2. Konsistensi data 3. Informasi lebih dari jumlah data yang sama 4. Penggunaan data bersama 5. Meningkatnya integritas data 6. Meningkatnya keamanan 7. Penerapan standar 8. Penghematan biaya 9. Keseimbangan dalam konflik kebutuhan 10. Meningkatkan aksebilitas dan respon data 11. Meningkatkan produktivitas 12. Memperbaiki pemeliharaan melalui kebebasan data 10 13. Meningkatkan pengaksesan data bersamaan 14. Meningkatkan layanan backup dan recovery Kerugian dari DBMS, antara lain: 1. Kompleksitas 2. Ukuran 3. Biaya DBMS 4. Biaya hardware tambahan 5. Biaya konversi 6. Performansi 7. Dampak kegagalan yang lebih besar 2.1.2.4 Fungsi DBMS Fungsi DBMS menurut Connolly (2005, p48) adalah sebagai berikut: 1. Penyimpanan, pengambilan dan pengubahan data 2. Katalog yang dapat diakses pengguna 3. Pendukung transaksi 4. Layanan pengontrolan akses data yang bersamaan 5. Layanan recovery 6. Layanan hak akses 7. Pendukung untuk komunikasi data 8. Layanan integritas 9. Layanan untuk meningkatkan kebebasan data 10. Layanan utilitas (kegunaan) 11 2.1.3 Database Language Menurut Connolly (2005, p39-40), sub bahasa data terdiri dari 2 bagian, yaitu: Data Definition Language (DDL) dan Data Manipulation Language (DML). DDL digunakan untuk spesifikasi skema basis-data dan DML digunakan untuk membaca dan mengubah basis-data. 2.1.3.1 Data Definition Language (DDL) Menurut Connolly (2005, p40), “DDL is a language that allows the DBA or user to describe and name the entities, attributes, and relationships required for the application, together with any associated integrity and security constraints”, dapat diartikan: DDL adalah suatu bahasa yang memungkinkan DBA (Database Administrator) atau pengguna untuk mendeskripsikan dan menyebutkan entity, atribut dan relasi yang dibutuhkan oleh aplikasi, bersama integritas terkait dan batasan keamanan. 2.1.3.2 Data Manipulation Language (DML) DML menurut Gerald V. Post (2005, p146) adalah sebuah rangkaian dari perintah-perintah yang digunakan untuk mengakses data. Contohnya Perintah Insert, Delete, dan Update. Menurut Connolly (2005, p40), “DML is a language that provides a set of operations to support the basic data manipulation operations on the data held in the database”, dapat diartikan: DML adalah suatu bahasa yang menyediakan sekumpulan operasi untuk 12 mendukung operasi manipulasi data dasar pada data yang disimpan dalam basis-data. Operasi manipulasi data biasanya meliputi: • Pemasukan data baru ke dalam basis-data • Modifikasi data yang disimpan dalam basis-data • Pengambilan data yang tersimpan dalam basis-data • Penghapusan data dari basis-data 2.1.3.3 Fourth-Generation Languages (4GL) Suatu operasi yang membutuhkan ratusan baris dalam bahasa generasi tingkat tiga (3GL), seperti COBOL, umumnya membutuhkan jauh lebih sedikit baris dalam 4GL. Dibandingkan dengan 3GL, yang prosedural, 4GL nonprosedural: pengguna mendefinisikan “apa” yang harus dilakukan, bukan “bagaimana”. 4GL diharapkan dapat banyak bergantung pada komponenkomponen yang tingkatannya jauh lebih tinggi yang dikenal sebagai tools generasi ke-4. Para pengguna tidak mendefinisikan langkah yang dibutuhkan program untuk melaksanakan suatu tugas, tetapi lebih ke arah mendefinsikan parameter untuk tools yang menggunakan parameter tersebut untuk menciptakan suatu program aplikasi. 4GL meliputi: • Bahasa presentasi, seperti query language and report generator • Bahasa khusus, seperti spreadsheets dan database language 13 • Generator aplikasi yang mendefinisikan, memasukkan, mengubah, dan mengambil kembali data dari basis-data untuk membangun aplikasi. 2.1.4 Database Life Cycle Daur hidup sistem basis-data dapat dilihat pada bagan sebagai berikut: Gambar 2.1 Daur Hidup Sistem Basis-Data 14 2.1.4.1 Database Planning Menurut Connolly (2005, p285), database planning adalah kegiatan manajemen yang mengizinkan tahap-tahap pada siklus hidup aplikasi basis-data untuk diwujudkan seefisien dan seefektif mungkin. Langkah penting pertama dalam database planning ini adalah mendefinisikan mission statement bagi proyek basis-data. Mission statement mendefinisikan tujuan utama dari aplikasi basis-data. Mission statement membantu dalam menjelaskan tujuan proyek basis-data dan menyediakan alur yang jelas dalam pembuatan aplikasi basis-data yang efisien dan efektif. Setelah mission statement didefinisikan, kegiatan selanjutnya adalah mengidentifikasikan mission objectives. Tiap mission objective harus mengidentifikasikan tugas tertentu yang harus didukung oleh basis-data. 2.1.4.2 System Definition Menurut Connolly (2005, p286), system definition mendeskripsikan ruang lingkup dari aplikasi basis-data dan user view utama. Sebelum merancang aplikasi basis-data, penting untuk terlebih dahulu mengidentifikasikan batas sistem yang diinvestigasi dan bagaimana sistem tersebut berinteraksi dengan bagian lain dari sistem informasi organisasi. 15 2.1.4.3 Requirements Collection and Analysis Menurut Connolly (2005, p288), requirements collection and analysis adalah proses mengumpulkan dan menganalisis informasi mengenai bagian dari organisasi yang akan didukung oleh aplikasi basisdata, dan menggunakan informasi ini untuk mengidentifikasi kebutuhan pengguna dari sistem baru. Informasi yang dikumpulkan untuk setiap user view (yaitu, peranan kerja atau area aplikasi perusahaan) meliputi: 1. Deskripsi dari data yang digunakan atau dibangun 2. Rincian mengenai bagaimana data digunakan atau dibangun 3. Beberapa kebutuhan tambahan lain untuk aplikasi basis-data yang baru Terdapat 3 pendekatan untuk mengelola kebutuhan aplikasi basisdata dengan banyak user views, yaitu: a. Pendekatan centralized Kebutuhan untuk setiap user view digabung dalam sekumpulan kebutuhan untuk aplikasi basis-data yang baru. b. Pendekatan view integration Kebutuhan untuk setiap user view digunakan untuk membangun model data terpisah untuk merepresentasikan user view tersebut. Hasil dari model data digabung belakangan pada tahapan perancangan basis-data. c. Kombinasi dari kedua pendekatan di atas 16 2.1.4.4 Database Design Menurut Connolly (2005, p291), database design adalah proses menghasilkan rancangan basis-data yang mendukung tujuan dan operasi perusahaan. Proses perancangan ini dibagi menjadi 3 tahap, yaitu: 1. Perancangan basis-data konseptual Menurut Connolly (2005, p439), perancangan basis-data konseptual adalah proses membangun suatu model dari informasi yang digunakan dalam sebuah perusahaan, terbebas dari segala pertimbangan fisikal. 2. Perancangan basis-data logikal Menurut Connolly (2005, p439), perancangan basis-data logikal adalah proses membangun suatu model dari informasi yang digunakan dalam sebuah perusahaan berdasarkan sebuah model data yang spesifik tetapi terbebas dari DBMS tertentu dan pertimbangan fisikal lainnya. 3. Perancangan basis-data fisikal Menurut Connolly (2005, p439), perancangan basis-data fisikal adalah proses menghasilkan sebuah deskripsi dari implementasi basis-data pada media penyimpanan sekunder yang mendeskripsikan relasi dasar, organisasi file, dan indeks yang digunakan untuk mengakses data secara efisien, dan setiap batasan integritas terkait dan ukuran-ukuran keamanan. 17 2.1.4.5 DBMS Selection Menurut Connolly (2005, p295), DBMS selection adalah pemilihan DBMS yang sesuai untuk mendukung aplikasi basis-data. 2.1.4.6 Application Design Menurut Connolly (2005, p299), application design adalah merancang user interface dan program aplikasi yang menggunakan dan memproses basis-data. 2.1.4.7 Prototyping (Optional) Menurut Connolly (2005, p303), prototyping adalah membangun sebuah working model dari aplikasi basis-data. Tujuan utama prototyping adalah mengijinkan pengguna menggunakan prototype untuk mengidentifikasi fitur-fitur pada sistem yang bekerja dengan baik, atau kurang lengkap, dan jika mungkin, menyarankan peningkatan atau bahkan fitur baru pada aplikasi basis-data. 2.1.4.8 Implementation Menurut Connolly (2005, p304), implementation adalah perwujudan fisikal dari rancangan basis-data dan aplikasi. 2.1.4.9 Data Conversion and Loading Menurut Connolly (2005, p305), data conversion and loading adalah memindahkan data yang ada ke dalam basis-data baru dan 18 mengkonversi aplikasi yang ada untuk dijalankan pada basis-data yang baru. 2.1.4.10 Testing Menurut Connolly (2005, p305), testing adalah proses mengeksekusi program aplikasi dengan tujuan menemukan errors. 2.1.4.11 Operational Maintainance Menurut Connolly (2005, p306), operational maintenance merupakan proses mengawasi dan memelihara sistem setelah penginstalasian. 2.1.5 Tahap-Tahap Perancangan Basis-Data 2.1.5.1 Perancangan Basis-Data Konseptual Langkah 1: Membangun Model Data Konseptual Tujuan dari langkah ini adalah untuk membangun suatu model data konseptual dari kebutuhan data perusahaan. Langkah 1.1 : Mengidentifikasikan tipe entity Langkah 1.2 : Mengidentifikasikan tipe relasi Langkah 1.3 : Mengidentifikasikan dan mengasosiasikan atribut dengan entity atau tipe relasi Langkah 1.4 : Menentukan domain atribut Langkah 1.5 : Menentukan atribut candidate, primary dan alternate key 19 Langkah 1.6 : Mempertimbangkan penggunaan konsep enhanced modelling (langkah opsional) Langkah 1.7 : Memeriksa redundansi Langkah 1.8 : Memvalidasi model konseptual dengan transaksi pengguna Langkah 1.9 : Me-review model data konseptual dengan pengguna. Berikut ini adalah detil mengenai langkah-langkah yang telah disebutkan di atas. Langkah 1.1 : Mengidentifikasikan tipe entity Langkah pertama dalam membangun suatu model data konseptual lokal adalah mendefinisikan objek utama yang terkait dengan pengguna. Salah satu metode untuk mengidentifikasi entities adalah dengan memeriksa spesifikasi kebutuhan pengguna dan mengidentifikasi kata benda atau frase kata benda yang disebutkan oleh pengguna (sebagai contoh: staff number, property number, property address, rent, number of rooms). Entities yang teridentifikasi didokumentasi dalam kamus data. Berikut ini merupakan contoh dari potongan kamus data yang mendokumentasikan entity staff. Nama Entity Staff Deskripsi Menjelaskan tentang setiap karyawan yang bekerja di DreamHome. Alias Karyawan Occurrence Tiap karyawan bekerja pada salah satu cabang. 20 Langkah 1.2 : Mengidentifikasi tipe relasi Tujuan dari langkah ini adalah untuk mengidentifikasi relasi penting yang ada antara tipe-tipe entity. Biasanya, relasi diidentifikasi dengan kata kerja atau frase kata kerja. Sebagai contoh: • Staff Manages PropertyForRent • PrivateOwner Owns PropertyForRent • PropertyForRent AssociatedWith Lease Relasi yang paling umum adalah relasi biner. Artinya relasi antar entity yang persis antara dua entity saja. Harus diperhatikan juga relasi kompleks yang melibatkan lebih dari dua entity dan relasi rekursif yang hanya melibatkan satu entity saja. Adapun langkah-langkah dalam mengidentifikasi tipe relasi adalah sebagai berikut: • Menggunakan diagram Entity-Relationship (ER) Seringkali, akan lebih mudah memvisualisasi sebuah sistem yang kompleks daripada menguraikan spesifikasi kebutuhan pengguna dengan menggunakan teks yang panjang. Diagram EntityRealtionship (ER) dapat digunakan untuk merepresentasikan entity dan bagaimana relasi antar entity. 21 • Menentukan batasan multiplicity dari tipe relasi Langkah berikutnya adalah menentukan multiplicity setiap relasi. Jika memang ada suatu nilai yang spesifik dari suatu multiplicity maka lebih baik didokumentasikan juga. • Memeriksa fan dan chasm traps Langkah berikutnya adalah memeriksa fan dan chasm traps. Yang dimaksud dengan fan traps adalah suatu model yang merepresentasikan suatu relasi antara entity, tetapi alur relasinya memperlihatkan ambiguitas (kerancuan). Sedangkan chasm traps adalah suatu model di mana ada hubungan antara entity yang satu dengan entity yang lain, tetapi tidak ada relasi antara kedua entity tersebut. • Mendokumentasikan tipe relasi Berikut ini merupakan contoh potongan dari kamus data yang mendokumentasikan relasi Staff user views of DreamHome. Nama Entity Staff Property ForRent Langkah 1.3 Multiplicity Relasi Multiplicity 0..1 Manages 0..100 0..1 1..1 Supervises AssociatedWith 0..10 0..* Nama Entity Property ForRent Staff Lease : Mengidentifikasikan dan mengasosiasikan atribut pada entity atau tipe relasi Tujuan dari langkah ini adalah untuk mengasosiasikan atribut yang sesuai pada entity atau tipe relasi. 22 • Simple/composite attributes Penting untuk diperhatikan apakah suatu atribut adalah simple atau composite. Composite attributes adalah atribut yang dibangun dari simple attributes. Sebagai contoh, atribut alamat bisa saja dibuat simple dan menyimpan beberapa detail dari alamat sebagai suatu nilai. Contoh: Dumbarton Road, Glasgow, G116YG. Namun, atribut alamat dapat juga merepresentasikan sebuah composite attribute, yang terdiri dari beberapa detil yang mempunyai nilai terpisah dalam atribut jalan (“115 Dumbarton Road”), kota (“Glasgow”), dan kodepos (“G116YG”). Atribut alamat dapat dijadikan simple attribute atau composite attribute tergantung dengan kebutuhan pengguna. Jika pengguna tidak membutuhkan detil dari atribut alamat seperti nama jalan, kota, kodepos dan sebaginya, maka sebaiknya atribut alamat tersebut tetap dibuat sebagai simple attribute. Sedangkan jika pengguna membutuhkan detil dari atribut alamat seperti nama jalan, kota, kodepos, dan sebagainya, maka sebaiknya atribut alamat tersebut dibuat sebagai composite attribute. • Single/multi-valued attributes Suatu atribut juga dapat mempunyai satu atau lebih nilai. Contoh: atribut noTelepon. Seseorang bisa saja mempunyai nomor telepon lebih dari satu, apabila memang demikian, maka dapat disebut multi-valued attribute. Tetapi apabila atribut mempunyai suatu nilai maka disebut single attribute. tesebut hanya 23 • Derived Attributes Derived Attribute adalah atribut yang tergantung dengan nilai atribut yang lain. Sebagai contoh: a. Umur dari seorang pegawai b. Banyaknya properti yang dipegang oleh pegawai Langkah 1.4 : Menentukan domain atribut Tujuan dari langkah ini adalah untuk menentukan domain dari atribut dalam model data konseptual lokal. Sebagai contoh: • Domain atribut dari staffNo terdiri dari lima karakter tipe string dimana dua karakter utama merupakan huruf, sedangkan tiga karakter sisa berupa angka. • Nilai yang mungkin untuk atribut sex adalah ‘M’ atau ‘F’. Ini merupakan domain dari atribut yang menggunakan karakter tunggal. Langkah 1.5 : Menentukan atribut candidate, primary dan alternate key Tujuan dari langkah ini adalah untuk mengidentifikasikan candidate key untuk setiap tipe entity, dan jika terdapat lebih dari satu candidate key, pilihlah salah satunya untuk menjadi primary key dan yang lainnya sebagai alternate keys. Berikut ini merupakan petunjuk-petunjuk yang dapat digunakan untuk membantu penyeleksian primary key di antara banyak candidate key. 24 • candidate key dengan jumlah set atribut paling sedikit • candidate key yang nilainya jarang sekali berubah • candidate key dengan jumlah karakter paling sedikit (untuk atribut tekstual) • candidate key dengan nilai nilai maksimum terkecil (untuk atribut numerik) • candidate key yang paling mudah digunakan dari sudut pandang pengguna Langkah 1.6 : Mempertimbangkan penggunaan konsep enhanced modelling (langkah opsional) Tujuan dari langkah ini adalah untuk mempertimbangkan penggunaan konsep enhanced modelling, seperti specialization/ generalization, aggregation, dan composition. Jika digunakan pendekatan specialization, maka akan diperhatikan perbedaan antara entities dengan mendefinisikan satu atau banyak subclasses dari entity superclass. Jika digunakan pendekatan generalization, maka akan diidentifikasi persamaan antara entities untuk membentuk entity superclass. Langkah 1.7 : Memeriksa redudansi Tujuan dari langkah ini adalah untuk memeriksa apakah terdapat redudansi dalam model. Pada langkah ini, data model konseptual lokal diperiksa dengan tujuan spesifik dari pengidentifikasian apakah terdapat 25 redundansi dan menghilangkannya jika ada. Tiga kegiatan dalam langkah ini adalah: • memeriksa kembali relasi one-to-one (1:1) • menghilangkan relasi redundan • mempertimbangkan dimensi waktu Langkah 1.8 : Memvalidasi model konseptual dengan transaksi pengguna Tujuan dari langkah ini adalah untuk memastikan bahwa model konseptual mendukung transaksi yang dibutuhkan. Dua pendekatan yang dapat digunakan: • mendeskripsikan transaksi • menggunakan alur transaksi Langkah 1.9 : Me-review model data konseptual dengan pengguna Tujuan dari langkah ini adalah untuk me-review model data konseptual dengan pengguna untuk memastikan bahwa model yang ada merupakan representasi yang “benar” dari kebutuhan data perusahaan. 26 Gambar 2.2 Contoh Model Data Konseptual 2.1.5.2 Perancangan Basis-Data Logikal Langkah 2: Membangun dan Memvalidasi Model Data Logikal Tujuan dari langkah ini adalah untuk menerjemahkan model data konseptual ke dalam model data logikal dan kemudian memvalidasi model ini untuk mengecek bahwa strukturnya benar dan mampu mendukung transaksi yang dibutuhkan. Langkah 2.1 : Menurunkan tabel untuk model data logikal 27 Langkah 2.2 : Memvalidasi tabel menggunakan normalisasi Langkah 2.3 : Memvalidasi tabel terhadap transaksi pengguna Langkah 2.4 : Memeriksa batasan integritas Langkah 2.5 : Me-review model data logikal lokal dengan pengguna Langkah 2.6 : Menggabungkan model data logikal ke dalam model global (langkah opsional) Langkah 2.7 : Memeriksa untuk pertumbuhan masa yang akan datang. Berikut ini adalah detil mengenai langkah-langkah yang telah disebutkan di atas. Langkah 2.1 : Menurunkan tabel untuk model data logikal Tujuan dari langkah ini adalah membuat tabel untuk model data logikal yang merepresentasikan entities, relasi, dan atribut yang telah diidentifikasi. Dilakukan pendeskripsian bagaimana relasi diturunkan untuk strukur-struktur berikut ini yang mungkin muncul dalam model data konseptual: • tipe entity kuat (strong entity types) Tipe entity kuat adalah tipe entity yang kemunculannya tidak dipengaruhi oleh tipe entity lain. • tipe entity lemah (weak entity types) Tipe entity lemah adalah tipe entity yang kemunculannya dipengaruhi oleh tipe entity lain. 28 Primary key dari tiap tipe entity lemah diturunkan sebagian atau sepenuhnya dari pemilik entity sehingga pengidentifikasian primary key dari tipe entity lemah tidak dapat dilakukan sampai semua tabel dengan pemilik entity dipetakan. • tipe relasi biner one-to-many (1:*) Untuk setiap relasi biner 1:*, entity “sisi one” dari relasi dijadikan sebagai parent entity (entity induk) dan entity “sisi many” dijadikan sebagai child entity (entity anak). Untuk merepresentasikan relasi ini, atribut primary key dari entity induk disalin ke tabel yang mewakili entity anak, sebagai foreign key. • tipe relasi biner one-to-one (1:1) Adapun relasi 1:1 yang terlibat berdasarkan batasan partisipasinya yaitu: a. Partisipasi mandatory pada kedua sisi dari relasi 1:1 Pada relasi jenis ini, entity yang terkait digabungkan menjadi satu tabel dan primary key yang baru dipilih dari salah satu entity asli sedangkan yang lainnya (jika ada) menjadi alternate key. b. Partisipasi mandatory pada satu sisi dari relasi 1:1 Pada relasi jenis ini, entity induk dan anak dapat diidentifikasi. Entity yang memiliki partisipasi opsional adalah entity induk sedangkan entity yang memiliki partisipasi mandatory adalah entity anak. Untuk merepresentasikan relasi ini, 29 atribut primary key dari entity induk disalin ke tabel yang mewakili entity anak, sebagai foreign key. c. Partisipasi opsional pada kedua sisi dari relasi 1:1 Pada relasi jenis ini, penentuan entity induk dan anak tidak pasti karena kedua sisi bersifat opsional. Dari dua entity pada relasi ditentukan mana yang lebih bersifat mandatory dan entity tersebut yang dijadikan entity anak. Untuk merepresentasikan relasi ini, atribut primary key dari entity induk disalin ke tabel yang mewakili entity anak, sebagai foreign key. • tipe relasi rekursif one-to-one (1:1); Untuk relasi rekursif 1:1, aturan untuk partisipasi mengikuti aturan yang dijabarkan pada relasi 1:1 di atas. Namun, pada kasus ini entity pada kedua sisi adalah sama. Untuk relasi rekursif 1:1 dengan partisipasi mandatory pada kedua sisi, relasi rekursif direpresentasikan sebagai satu tabel dengan dua salinan primary key. Seperti sebelumnya, satu salinan primary key sebagai foreign key dan harus diganti namanya untuk mengidentifikasikan relasi yang diwakilinya. Untuk relasi rekursif 1:1 dengan partisipasi mandatory hanya pada satu sisi, terdapat dua pilihan, yaitu membuat satu tabel dengan dua salinan primary key seperti yang dideskripsikan di atas, atau membuat tabel baru yang mewakili relasi itu. Tabel yang baru hanya memiliki dua atribut, kedua salinan primary key. Seperti sebelumnya, 30 satu salinan primary key sebagai foreign key dan harus diganti namanya untuk mengidentifikasikan tujuannya pada masing-masing tabel. Untuk relasi rekursif 1:1 dengan partisipasi optional pada kedua sisi, dibuat tabel baru seperti yang dideskripsikan di atas. • tipe relasi superclass/ subclass Untuk setiap relasi superclass/ subclass pada model data konseptual, superclass entity diidentifikasikan sebagai entity induk dan subclass entity sebagai entity anak. • tipe relasi biner many-to-many (*:*) Untuk setiap relasi biner *:*, sebuah tabel dibuat untuk merepresentasikan relasi tersebut dan meliputi semua atribut yang merupakan bagian dari relasi. Satu salinan primary key dari entity yang terlibat dalam relasi ditempatkan pada tabel baru, sebagai foreign key. Satu atau dua dari foreign key ini juga akan membentuk primary key pada tabel baru, kemungkinan merupakan kombinasi dari satu atau lebih atribut dari relasi. • tipe relasi kompleks Untuk setiap relasi kompleks, sebuah tabel dibuat untuk merepresentasikan relasi tersebut dan meliputi semua atribut yang merupakan bagian dari relasi. Satu salinan primary key dari entity yang terlibat dalam relasi ditempatkan pada tabel baru, sebagai foreign key. Semua foreign key yang merepresentasikan relasi many 31 secara umum akan membentuk primary key pada tabel baru, kemungkinan merupakan kombinasi dari satu atau lebih atribut dari relasi. • atribut multi-valued Untuk setiap atribut multi-valued dalam sebuah entity, sebuah tabel dibuat untuk merepresentasikan atribut multi-valued dan meliputi primary key tiap entity pada tabel baru, sebagai foreign key. Kecuali atribut multi-valued itu sendiri merupakan alternate key dari entity, primary key dari tabel baru merupakan kombinasi dari atribut multi-valued dan primary key dari entity. Langkah 2.2 : Memvalidasi tabel menggunakan normalisasi Tujuan dari langkah ini adalah untuk memvalidasi tabel dalam model data logikal lokal menggunakan normalisasi. Proses normalisasi dibahas lebih detil pada bagian 2.1.7. Langkah 2.3 : Memvalidasi tabel terhadap transaksi pengguna Tujuan dari langkah ini adalah untuk memastikan bahwa tabel dalam model data logikal lokal mendukung transaksi yang dibutuhkan. Validasi transaksi seperti ini sudah dilakukan pada langkah 1.8, namun dilakukan kembali untuk memeriksa tabel-tabel yang dibuat pada langkah sebelumnya juga mendukung transaksi dan memastikan bahwa tidak ada error dalam tabel yang telah dibuat. 32 Langkah 2.4 : Memeriksa batasan integritas Tujuan dari langkah ini adalah untuk memeriksa batasan-batasan integritas yang direpresentasikan dalam model data logikal. Batasan integritas adalah batasan-batasan yang diharapkan dapat melindungi basis-data dari incomplete, inaccurate, atau inconsistent. Berikut ini merupakan tipe-tipe batasan integritas yang harus dipertimbangkan: 1. Required data Beberapa atribut harus selalu mengandung sebuah nilai yang valid (tidak null). 2. Attribute domain constraints Setiap atribut harus mempunyai sebuah domain, dengan kata lain, satu set nilai yang legal. 3. Multiplicity Multiplicity merepresentasikan batasan-batasan yang berada di dalam relasi antara data dalam basis-data. 4. Entity integrity Primary key dari sebuah entity tidak mengandung null. 5. Referential integrity Foreign key adalah sebuah atau beberapa key yang menghubungkan setiap baris pada tabel anak yang mengandung foreign key ke baris pada tabel induk yang mengandung nilai candidate key yang sama. Referential integrity berarti bahwa jika 33 foreign key mengandung sebuah nilai maka nilai tersebut harus ada pada sebuah baris di tabel induk. 6. General constraints Merupakan aturan tambahan yang dibuat oleh pengguna atau seorang database administrator pada basis-data tersebut. Langkah 2.5 : Me-review model data logikal lokal dengan pengguna Tujuan dari langkah ini adalah untuk memastikan bahwa model data logikal merupakan representasi yang benar dari kebutuhan data perusahaan. Langkah 2.6 : Menggabungkan model data logikal ke dalam model global (langkah opsional) Tujuan dari langkah ini adalah untuk menggabungkan modelmodel data logikal lokal ke dalam sebuah model data logikal global yang merepresentasikan pandangan semua pengguna dari sebuah basis-data. Langkah 2.6.1 : Menggabungkan model data logikal lokal ke dalam model global Langkah 2.6.2 : Memvalidasi model data logikal global Langkah 2.6.3 : Me-review model data logikal global dengan pengguna Berikut ini adalah detil mengenai langkah-langkah yang telah disebutkan di atas. 34 Langkah 2.6.1 : Menggabungkan model data logikal lokal ke dalam model global Tujuan dari langkah ini adalah untuk menggabungkan model data logikal lokal ke dalam sebuah model data logikal global. Beberapa tugas dari pendekatan ini adalah sebagai berikut: • Me-review nama dan isi dari entities/ relasi dan candidate key-nya • Me-review nama dan isi dari relasi/ foreign keys • Menggabungkan entities/ relasi dari model-model data lokal • Memasukkan (tanpa menggabungkan) entities/ relasi unik pada setiap model data lokal • Menggabungkan relasi/ foreign keys dari model-model data lokal • Memasukkan (tanpa menggabungkan) relasi/ foreign keys unik pada setiap model data • Memeriksa untuk entities/ relasi dan relasi/ foreign keys yang hilang • Memeriksa foreign keys • Memeriksa batasan integritas • Menggambar diagram ER/ relasi global • Mengubah dokumentasi Langkah 2.6.2 : Memvalidasi model data logikal global Tujuan dari langkah ini adalah untuk memvalidasi tabel yang dibuat dari model data logikal global dengan menggunakan teknik 35 normalisasi dan memastikan bahwa tabel yang dibuat mendukung transaksi yang dibutuhkan, jika perlu. Langkah 2.6.3 : Me-review model data logikal global dengan pengguna Tujuan dari langkah ini adalah untuk memastikan bahwa model data logikal global merupakan representasi yang benar dari kebutuhan data perusahaan. Langkah 2.7 : Memeriksa untuk pertumbuhan masa yang akan datang Tujuan dari langkah ini adalah untuk menentukan apakah ada perubahan yang berarti di masa yang akan datang dan untuk menilai apakah model data logikal dapat mengakomodasi perubahaan tersebut. Perancangan model data logikal harus dapat diperluas sehingga dapat mendukung kebutuhan-kebutuhan baru di masa mendatang dengan dampak yang minimal terhadap pengguna yang telah ada. 36 Gambar 2.3 Contoh ERD Logikal pada Kasus DreamHome 2.1.5.3 Perancangan Basis-Data Fisikal Langkah 3: Menerjemahkan Model Data Logikal untuk DBMS Pilihan 37 Tujuan dari langkah ini adalah untuk menghasilkan skema basisdata relasional dari model data logikal yang dapat diimplementasikan pada DBMS pilihan. Bagian pertama dari proses ini memerlukan perbandingan informasi yang dikumpulkan selama perancangan basis-data logikal dan didokumentasikan dalam kamus data. Bagian kedua dari proses ini menggunakan informasi tersebut untuk menghasilkan desain tabel dasar. Proses ini membutuhkan pengetahuan yang mendalam mengenai fungsionalitas yang ditawarkan oleh DBMS pilihan. Langkah 3.1 : Merancang tabel dasar Langkah 3.2 : Merancang representasi dari data turunan (derived data) Langkah 3.3 : Merancang batasan umum (general constraints) Berikut ini adalah detil mengenai langkah-langkah yang telah disebutkan di atas. Langkah 3.1 : Merancang tabel dasar Tujuan dari langkah ini adalah untuk memutuskan bagaimana merepresentasikan tabel dasar yang telah diidentifikasikan dalam model data logikal pada DBMS pilihan. Untuk memulai proses perancangan fisikal, yang pertama dilakukan adalah mengumpulkan dan mengasimilasikan informasi mengenai tabel-tabel yang dihasilkan selama perancangan basis-data logikal. Informasi yang diperlukan bisa diperoleh dari kamus data dan 38 definisi dari tabel-tabel yang dideskripsikan menggunakan Database Design Language (DBDL). Untuk setiap tabel yang diidentifikasi pada model data logikal, definisi yang dimiliki terdiri dari: • nama tabel • daftar atribut simple • primary key, alternative keys (AK), dan foreign keys (FK) • batasan integrasi untuk setiap foreign keys yang diidentifikasi Dari kamus data, untuk setiap atributnya dapat diketahui: • domain atribut tersebut yang terdiri dari tipe data, panjang dan berbagai keterangan atribut tersebut • suatu nilai default opsional untuk atribut tersebut • apakah atribut tersebut dapat diisi nilai null • apakah atribut tersebut hasil turunan (derived) dan jika ya, bagaimana perhitungannya Langkah 3.2 : Merancang representasi dari data turunan (derived data) Tujuan dari langkah ini adalah untuk memutuskan bagaimana merepresentasikan semua data turunan dalam model data logikal pada DBMS pilihan. 39 Atribut yang nilainya didapatkan dengan mengevaluasi nilai dari atribut lain dikenal sebagai derived atau calculated attributes (atribut turunan). Sebagai contoh: • banyaknya pegawai yang bekerja pada cabang tertentu • total gaji bulanan seluruh pegawai • banyaknya properti yang ditangani oleh seorang pegawai Langkah 3.3: Merancang batasan umum (general constraints) Tujuan dari langkah ini adalah merancang batasan umum untuk DBMS pilihan. Perancangan batasan tergantung pada pilihan DBMS; beberapa sistem menyediakan lebih banyak fasilitas untuk mendefinisikan batasan umum dibandingkan sistem yang lain. Seperti pada langkah sebelumnya, jika sistem tersebut mempunyai aturan yang sesuai standar SQL, beberapa batasan dapat diimplementasikan dengan mudah. Langkah 4: Tujuan Merancang Organisasi File dan Indeks dari langkah ini adalah untuk menentukan pengorganisasian file yang optimal untuk menyimpan relasi-relasi dasar dan indeks-indeks yang diperlukan untuk mencapai performansi yang diinginkan, yaitu cara penyimpanan tabel-tabel dan baris-baris (tuples) pada media penyimpanan sekunder. Langkah 4.1 : Menganalisis transaksi 40 Langkah 4.2 : Memilih organisasi file Langkah 4.3 : Memilih indeks Langkah 4.4 : Memperkirakan kebutuhan disk space Berikut ini adalah detil mengenai langkah-langkah yang telah disebutkan di atas. Langkah 4.1 : Menganalisis transaksi Tujuan dari langkah ini adalah untuk memahami fungsi dari transaksi-transaksi yang akan dijalankan pada basis-data dan untuk menganalisis transaksi-transaksi yang penting. Proses yang dilakukan untuk menganalisis transaksi yaitu: 1. Memetakan semua alur transaksi ke tabel Pada tahap ini, sebuah transaction/ relation cross-reference matrix dibuat. Matrix ini menunjukkan transaksi-transaksi yang dibutuhkan dan tabel-tabel yang diakses. 2. Menentukan tabel mana yang paling sering diakses oleh transaksi 3. Menganalisis penggunaan data dari transaksi yang terpilih yang melibatkan tabel yang paling sering diakses tersebut Langkah 4.2 : Memilih organisasi file Tujuan dari langkah ini adalah untuk menentukan organisasi file yang efisien untuk setiap relasi dasar. Dalam banyak kasus, suatu relational DBMS hanya memberikan sedikit bahkan tidak ada pilihan untuk memilih organisasi file, walaupun 41 beberapa mungkin dibangun saat indeks dispesifikasikan. Berikut ini beberapa organisasi file: • Heap • Hash • Indexed Sequential Access Method (ISAM) • B*-tree • Clusters Langkah 4.3 : Memilih indeks Tujuan dari langkah ini adalah untuk menentukan apakah penambahan indeks akan meningkatkan performansi sistem. Pemilihan atribut untuk mengurutkan atau mengelompokkan baris sebagai: • atribut yang paling sering digunakan untuk operasi penggabungan (join operations), sehingga membuat operasi penggabungan menjadi lebih efisien, atau • suatu atribut yang digunakan paling banyak untuk mengakses suatu record di dalam relasi yang ada. Langkah 4.4 : Memperkirakan kebutuhan disk space Tujuan dari langkah ini adalah untuk memperkirakan ukuran disk space yang dibutuhkan oleh basis-data. 42 Langkah 5: Merancang User Views Tujuan dari langkah ini adalah untuk merancang user views yang diidentifikasi selama tahap pengumpulan kebutuhan dan analisis dari siklus pengembangan sistem basis-data. Langkah 6: Merancang Mekanisme Keamanan Tujuan dari langkah ini adalah untuk merancang mekanisme untuk basis-data seperti yang dispesifikasikan oleh pengguna selama tahap pengumpulan kebutuhan dari siklus pengembangan sistem basisdata. Basis-data merepresentasikan resource dari perusahaan yang essensial, maka dari itu keamanan dari resource ini sangatlah penting. Beberapa isu keamanan basis-data yang perlu diperhatikan antara lain: 1. Pencurian data (Theft and Fraud) 2. Kehilangan kerahasiaan suatu data (Loss of Confindentially) 3. Kehilangan hak pribadi (Loss of Privacy) 4. Kehilangan integritas (Loss Integrity) 5. Kehilangan ketersediaan data (Loss of Avaliability) 2.1.6 ER Modeling 2.1.6.1 Tipe Entity Menurut Connolly (2005, p343), “Entity type is a group of objects with the same properties, which are identify by the enterprise as having 43 an independent existence”, dapat diartikan: tipe entity adalah sekumpulan objek yang memiliki properties yang sama yang diidentifikasikan oleh perusahaan memiliki keberadaan yang independen. Representasi diagramatik dari tipe entity terlihat pada Gambar 2.4. Gambar 2.4 Representasi Diagramatik dari Tipe Entity 2.1.6.2 Tipe Relasi Menurut Connolly (2005, p346), ”relationship type is a set of meaningful associations among entity types”, dapat diartikan: tipe relasi adalah sekumpulan asosiasi yang berarti di antara tipe-tipe entity. Representasi diagramatik dari tipe relasi terlihat pada Gambar 2.5. Gambar 2.5 Representasi Diagramatik dari Tipe Relasi 44 2.1.6.3 Atribut Menurut Connolly (2005, p350), “Attribute is a property of an entity or a relationship type”, dapat diartikan: atribut adalah property dari sebuah entity atau tipe relasi. Atribut terdiri dari: 1. Simple Attributes dan Composite Attributes Simple attribute adalah atribut yang terdiri dari komponen tunggal dengan keberadaan independen. Simple attribute kadang disebut juga atribut atomik. Composite attribute adalah atribut yang terdiri dari banyak komponen, masing-masing dengan keberadaan independen. 2. Single-Valued Attributes dan Multi-Valued Attributes Single-valued attribute adalah atribut yang memiliki nilai tunggal untuk masing-masing kejadian dari sebuah tipe entity. Multi-valued attribute adalah atribut yang memiliki banyak nilai untuk masing-masing kejadian dari sebuah entity. 3. Derived Attributes Derived attribute adalah atribut yang merepresentasikan sebuah nilai yang diturunkan dari nilai sebuah atau sekumpulan atribut yang berhubungan. Atribut tersebut tidak harus pada tipe entity yang sama. 45 2.1.6.4 Key 1. Candidate Key Menurut Connolly (2005, p352), “candidate key is the minimal set of attributes that uniquely identifies each occurrence of an entity type”, dapat diartikan: candidate key adalah sekumpulan minimal atribut yang secara unik mengidentifikasi setiap kejadian dari sebuah tipe entity. 2. Primary Key (PK) Menurut Connolly (2005, p353), “primary key is the candidate key that is selected to uniquely identify each occurrence of an entity type”, dapat diartikan: primary key adalah candidate key yang dipilih untuk mengidentifikasikan secara unik setiap kejadian dari sebuah tipe entity. 3. Composite Key Menurut Connolly (2005, p353), “composite key is a cancidate key that consists of two or more attributes”, dapat diartikan: composite key adalah candidate key yang terdiri dari dua atau lebih atribut. Representasi diagramatik dari tipe entity beserta atribut dan primary key terlihat pada Gambar 2.6. 46 Gambar 2.6 Representasi Diagramatik Tipe Entity Beserta Atribut dan PK 2.1.6.5 Structural Constraints (Batasan Struktural) Menurut Connolly (2005, p356), tipe utama dari batasan pada relasi disebut multiplicity. Multiplicity adalah jumlah (jangkauan) dari kejadian yang mungkin pada sebuah tipe entity yang terhubung ke suatu kejadian tunggal pada tipe entity lain melalui sebuah relasi khusus. Hubungan biner secara umum dibedakan menjadi: 1. Relasi One to One (1:1) Relasi antar entity One to One (1:1) terjadi bila tiap anggota dari entity A hanya boleh berpasangan dengan satu anggota dari entity B, dan tiap anggota dari entity B hanya boleh berpasangan dengan satu anggota dari entity A. 47 2. Relasi One to Many (1:*) Relasi antar entity One to Many (1:*) terjadi bila tiap anggota dari entity A hanya boleh berpasangan dengan satu anggota dari entity B, dan entity B boleh berpasangan dengan satu atau lebih anggota dari entity A. 3. Relasi Many to Many (*:*) Relasi antar entity Many to Many (*:*) terjadi bila tiap anggota dari entity A boleh berpasangan dengan satu atau lebih anggota dari entity B, dan tiap anggota dari entity B boleh berpasangan dengan satu atau lebih anggota dari entity A. 2.1.7 Normalisasi 2.1.7.1 Pengertian Normalisasi Menurut Connolly (2005, p388), “normalization is a technique for producing a set of relation with desirable properties, given the data requirements of an enterprise”, dapat diartikan sebagai normalisasi adalah teknik untuk menghasilkan sekumpulan tabel dengan properties yang diinginkan, sesuai dengan kebutuhan data dari perusahaan. Normalisasi sering dilakukan sebagai rangkaian dari pengujian pada suatu tabel untuk menentukan apakah tabel tersebut benar atau melanggar persyaratan dari bentuk normal yang ditentukan. 48 2.1.7.2 Tahap-Tahap Normalisasi 2.1.7.2.1 Unnormalized Form (UNF) Menurut Connolly (2005, p403), “unnormalized form (UNF) is a table that contains one or more repeating groups”, dapat diartikan sebagai UNF adalah sebuah tabel yang berisikan satu atau lebih kumpulan data yang berulang. 2.1.7.2.2 First Normal Form (1NF) Menurut Connolly (2005, p403), “first normal form (1NF) is a relation in which the intersection of each row and column contains one and only one value”, dapat diartikan sebagai 1NF adalah sebuah tabel di mana setiap irisan antara baris dan kolom berisikan satu dan hanya satu nilai. Proses normalisasi dimulai dengan memindahkan data dari sumber (sebagai contoh, formulir pengisian data standar) ke dalam format tabel dengan baris dan kolom. Pada format ini, tabel dalam UNF dan disebut sebagai table tidak ternormalisasi. Untuk mengubah tabel tidak ternormalisasi ke dalam 1NF perlu mengidentifikasi dan menghilangkan repeating groups dalam tabel. Repeating groups adalah sebuah atribut atau sekelompok atribut, dalam sebuah tabel yang muncul dengan banyak nilai untuk sebuah kejadian dari atribut kunci yang ditunjuk pada tabel tersebut. Dalam konteks ini, kata “kunci” ditujukan untuk atribut 49 yang mengidentifikasi setiap baris secara unik dalam tabel tidak ternormalisasi. Terdapat dua pendekatan umum untuk menghilangkan repeating groups dari tabel tidak ternormalisasi: 1. Masukkan data yang sesuai ke dalam kolom yang kosong pada baris yang berisikan data berulang 2. Meletakkan data berulang bersama dengan salinan atribut kunci, ke dalam relasi terpisah 2.1.7.2.3 Second Normal Form (2NF) Menurut Connolly (2005, p407), “second normal form (2NF) is a relation that is in first normal form and every nonprimary-key attribute is fully functionally dependent on the primary key”, diartikan sebagai 2NF adalah sebuah tabel dalam 1NF dan setiap atribut non-primary key bergantung secara penuh pada primary key. Normalisasi dari tabel 1NF ke 2NF dilakukan dengan cara menghilangkan atribut yang bergantung secara fungsional dengan meletakkan atribut tersebut ke dalam tabel yang baru bersama dengan salinan dari determinannya. 2.1.7.2.4 Third Normal Form (3NF) Menurut Connolly (2005, p409), “third normal form (3NF) is a relation that is in first and second normal form, and in which no non-primary key attribute is transitively dependent on 50 the primary key”, dapat diartikan sebagai 3NF adalah sebuah tabel dalam 1NF dan 2NF, dan tidak ada atribut non-primary key yang bergantung secara transitif terhadap primary key. Ketergantungan transitif adalah keadaan di mana suatu atribut non-primary key bergantung pada atribut non-primary key. Normalisasi dari 2NF ke 3NF dilakukan dengan cara meletakkan atribut yang bergantung secara transitif ke dalam sebuah relasi yang baru bersama dengan salinan dari determinannya. 2.2 Teori Pembelian, Penjualan dan Persediaan 2.2.1 Teori Pembelian Menurut Mulyadi (2001, p299), pembelian didefinisikan sebagai suatu usaha yang digunakan dalam perusahaan untuk pengadaan barang yang diperlukan oleh perusahaan. Transaksi pembelian menurut Mulyadi (2001, p299), dapat digolongkan menjadi dua, yaitu: • Pembelian lokal, yaitu pembelian dari pemasok dalam negeri. • Pembelian impor, yaitu pembelian dari luar negeri. Fungsi yang terkait dalam sistem pembelian (Mulyadi, 2001, p299) adalah: 1. Fungsi gudang, bertanggung jawab untuk mengajukan permintaan pembelian sesuai dengan posisi persediaan yang ada di gudang. 51 2. Fungsi pembelian, bertanggung jawab untuk mengeluarkan order pembelian kepada pemasok. 3. Fungsi penerimaan, bertanggung jawab untuk menerima barang yang dikirim dari pemasok dan melakukan pemeriksaan guna menentukan layak tidaknya barang untuk diterima. 4. Fungsi akuntansi, fungsi yang terkait dalam hal ini adalah fungsi pencatat utang dan fungsi pencatat persediaan. Jaringan prosedur yang membentuk sistem pembelian (Mulyadi, 2001, p301) adalah sebagai berikut: 1. Prosedur permintaan pembelian Fungsi gudang mengajukan permintaan pembelian dalam formulir surat permintaan pembelian kepada fungsi pembelian. 2. Prosedur order pembelian Fungsi pembelian mengirim surat order pembelian kepada pemasok dan memberitahukan kepada unit-unit lain (misalnya fungsi penerimaan, fungsi yang meminta barang, fungsi pencatat utang) mengenai order pembelian yang sudah dikeluarkan. 3. Prosedur penerimaan barang Fungsi penerimaan melakukan pemeriksaan terhadap barang yang diterima dari pemasok dan kemudian membuat laporan penerimaan barang. 52 4. Prosedur pencatat uang Fungsi akuntansi memerika dokumen-dokumen yang berhubungan dengan pembelian dan menyelenggarakan utang. 5. Prosedur distribusi pembelian Prosedur ini meliputi distribusi rekening yang didebit dari transaksi pembelian untuk kepentingan pembuatan laporan manajemen. Dokumen-dokumen yang digunakan dalam sistem pembelian adalah sebagai berikut: 1. Surat permintaan pembelian Merupakan formulir yang diisi oleh pemakai atau fungsi gudang untuk meminta dilakukannya pembelian barang dengan jenis, mutu dan jumlah yang sesuai dengan surat tersebut. 2. Surat permintaan penawaran harga Dokumen yang digunakan untuk meminta penawaran harga bagi barang yang pengadaannya tidak bersifat repetitif, yang menyangkut jumlah rupiah pembelian yang besar. 3. Surat order pembelian Merupakan dokumen yang digunakan untuk memesan barang kepada pemasok yang telah dipilih. 4. Laporan penerimaan barang Dokumen ini dibuat oleh fungsi penerimaan barang untuk menunjukkan bahwa barang yang diterima dari pemasok telah memenuhi mutu dan kuantitas seperti yang telah dicantumkan dalam surat order. 53 5. Laporan pembayaran Merupakan dokumen yang menunjukkan besarnya pembayaran yang dilakukan dan juga detil pembayaran yang dilakukan. 2.2.2 Teori Penjualan Menurut Romney dan Steinbart (2002, p517), penjualan merupakan suatu set rekursif dari kegiatan bistis dan operasi pemrosesan informasi terkait yang dihubungkan dengan penyediaan barang dan pelayanan pelanggan serta penerimaan pembayaran dari penjualan tersebut. Fungsi yang terkait dalam sistem penjualan (Mulyadi, 2001, p211) adalah: 1. Fungsi penjualan, bertanggung jawab untuk menerima order, mengedit order, meminta otorisasi kredit, menentukan tanggal pengiriman dan bertanggung jawab atas transaksi penjualan. 2. Fungsi gudang, bertanggung jawab untuk menyimpan dan menyiapkan barang yang dipesan menyerahkan barang ke fungsi pengiriman. 3. Fungsi pengiriman, bertanggung jawab menyerahkan barang kepada pelanggan berdasarkan surat jalan yang diterimanya dari fungsi penjualan. 4. Fungsi penagihan, bertanggung jawab membuat dan mengirimkan faktur penjualan kepada pelanggan, serta menyiapkan kopian faktur bagi kepentingan pencatatan transaksi penjualan oleh fungsi akuntansi. 5. Fungsi akuntansi, bertanggung jawab mencatat piutang yang timbul dari transaksi penjualan dan membuat laporan penjualan. 54 Jaringan prosedur yang membentuk sistem penjualan (Mulyadi, 2001, p219) adalah sebagai berikut: 1. Prosedur order penjualan Fungsi penjualan menerima order dari pembeli dan menambahkan informasi penting pada surat order. Fungsi penjualan kemudian membuat surat jalan dan mengirimkannya kepada berbagai fungsi yang lain untuk memungkinkan fungsi tersebut memberikan kontribusi dalam melayani order dan pembeli. 2. Prosedur pengiriman Fungsi pengiriman mengirimkan barang kepada pembeli sesuai dengan informasi yang tercantum dalam surat jalan 3. Prosedur penagihan Fungsi penagihan membuat faktur penjualan dan mengirimkannya kepada pembeli. Dalam metode tertentu faktur penjualan dibuat oleh fungsi penjualan sebagai tembusan pada waktu bagian ini membuat surat jalan. 4. Prosedur pencatatan piutang Fungsi akuntansi mencatat tembusan faktur penjualan ke dalam kartu piutang atau dalam metode pencatatan tertentu mengarsipkan dokumen tembusan menurut abjad yang berfungsi sebagai catatan piutang. 5. Prosedur distribusi penjualan Fungsi akuntansi mendistribusikan data penjualan menurut informasi yang diperlukan oleh manajemen. 55 Dokumen-dokumen yang digunakan dalam sistem penjualan (Mulyadi, 2001, p214) meliputi: 1. Surat jalan dan tembusannya 2. Faktur dan tembusannya 3. Rekapitulasi harga pokok penjualan 4. Bukti memorial 2.2.3 Teori Persediaan Menurut Rangkuti (1998, p2), persediaan merupakan sejumlah bahanbahan, bagian-bagian yang disediakan dan bahan-bahan dalam proses yang terdapat dalam perusahaan untuk proses produksi, serta barang-barang jadi atau produk yang disediakan untuk memenuhi permintaan dari konsumen atau langganan setiap waktu. Dengan kata lain persediaan merupakan salah satu unsur yang paling aktif dalam operasi perusahaan yang secara terus menerus diperoleh, diubah, yang kemudian dijual kembali. Jenis-jenis persediaan menurut fungsinya: 1. Batch Stock / Lot Size Inventory Persediaan yang diadakan karena kita membeli atau membuat bahanbahan atau barang-barang dalam jumlah yang lebih besar dari jumlah yang dibutuhkan saat itu. 2. Fluctuation Stock Persediaan yang diadakan untuk menghadapi fluktuasi permintaan konsumen yang tidak dapat diramalkan. 56 3. Anticipation Stock Persediaan yang diadakan untuk menghadapi fluktuasi permintaan yang dapat diramalkan, berdasarkan pola musiman yang terdapat dalam satu tahun dan untuk menghadapi penggunaan atau penjualan atau permintaan yang meningkat. 2.3 Data Flow Diagram (DFD) Menurut Whitten (2004, p344), “data flow diagram (DFD) is a tool that depicts the flow of data through a system and the work or processing performed by that system”, dapat diartikan: DFD adalah sebuah alat yang menggambarkan aliran data melalui sistem dan pekerjaan atau pemrosesan yang dijalankan oleh sistem tersebut. Sinonimnya adalah bubble chart, transformation graph dan process model. Terdapat empat komponen dalam DFD, yaitu: 1. External Agents Menurut Whitten (2004, p363), “external agents define a person, an organization unit, another system, or another organization that lies outside the scope of the project but that interacts with the system being studied”, dapat diartikan: external agents mendefinisikan orang, unit organisasi, sistem lain, atau organisasi lain, yang berada di luar lingkup proyek itu tetapi berinteraksi dengan sistem yang sedang dipelajari. Menurut Whitten (2004, p365), ada beberapa bentuk external agents, yaitu: 57 a. Bentuk Gane and Sarson (digunakan dalam skripsi ini) External Agent b. Bentuk DeMarco/ Yourdon External Agent 2. Process Menurut Whitten (2004, p347), “process is work performed on, or in response to, incoming data flows or conditions”, dapat diartikan: process adalah pekerjaan yang dilakukan pada atau sebagai respon terhadap, aliran data masuk atau kondisi. Menurut Whitten (2004, p347), ada beberapa bentuk process, yaitu: a. Bentuk Gane and Sarson (digunakan dalam skripsi ini) Nama process b. Bentuk DeMarco/ Yourdon Nama process 58 c. Bentuk SSADM/ IDEF0 Nama process 3. Data Stores Menurut Whitten (2004, p366), “data store is an “inventory” of data”, dapat diartikan: data stores adalah tempat penyimpanan data. Sinonimnya antara lain file dan basis-data. Menurut Whitten (2004, p366), ada beberapa bentuk data stores, yaitu: a. Bentuk Gane and Sarson (digunakan dalam skripsi ini) Data store b. Bentuk DeMarco/ Yourdon Data store 4. Data Flows Menurut Whitten (2004, p357), “data flow represents an input of data to a process or the output of data (or informaton) from a process”, dapat diartikan: data flow merepresentasikan input data ke proses atau output data (informasi) dari proses. Bentuk data flow: Nama aliran data 59 Jenis-jenis DFD adalah sebagai berikut: 1. Level 0 (Diagram Context) Level ini terdapat sebuah proses yang berada pada posisi pusat. 2. Level 1 (Diagram 0) Level ini merupakan sebuah proses yang terdapat pada level 0 yang dipecah menjadi beberapa proses lainnya. 3. Level 2 (Diagram Rinci) Level ini merupakan diagram yang merincikan diagram dari level 1. Tanda ‘*’ digunakan hanya bila proses tersebut tidak dapat dirincikan lagi. Contoh: 2.0* artinya proses level rendah yang tidak dapat dirincikan lagi. Penomoran yang dilakukan berdasarkan urutan proses. 2.4 PHP, MySQL, dan Macromedia Dreamweaver MX 2.4.1 PHP PHP sebagai bahasa pemrograman web cukup banyak digemari, salah satunya karena memberikan solusi sangat murah (gratis digunakan ). Gratis dalam arti bebas menggunakan software tersebut tanpa harus membayar lisensi pemegang hak ciptanya Teguh Wahyono (2005, p8). Sejarah perkembangan PHP antara lain M. Syafii(2005, h1): • PHP/FI Pertama kali PHP dibuat dan diperkenalkan oleh Rasmus Lerdorf pada tahun 1995 menggunakan nama PHP/FI. Generasi awal PHP/FI dibuat dari Perl yang waktu itu digubnakan untuk kebutuhan pribadi saja. Pada awalnya, PHP/FI merupakan bagian dari Personal Home Page 60 Tools. Namun, karena kebutuhan penggunaan web yang semakin kompleks, maka dikembangkan PHP/FII dengan menggunakan bahasa C. Rasmus menulis sejumlah besar fungsi untuk pengaksesan ke dalam basis-data. Penulisan ini juga bertujuan membangun halaman web menjadi dinamis. PHP/FI merupakan akronim dari Personal Home Page/ Forms Interpreter. Pada awal penyusunan PHP/FI hanay mempunyai fungsi dasar dari PHP yang ada sekarang ini. Jadi, dengan kata lain, pondasi PHP sekarang ini adalah PHP/FI. Karena ketika pertama dibuat menggunakan Perl, maka PHP/FI juga mempunyai susunan dan karakter pemrograman yang sama dengannya. Pada tahun 1997, dikeluarkan PHP/FI versi 2.0. fungsi-fungsi pada PHP/FI ditulis dengan menggunakan bahasa C. karena telah memiliki fungsi khusus untuk mengakses basis-data, maka pada tahun yang samaterdapat kurang lebih 50.000 domain menggunakan PHP/FI sebagai bahasa pemrograman website, atau sekitar 1% dari total domain yang ada pada waktu itu. Booming PHP/FI tersebut membuat semakin banyak orang yang tertarik untuk berpartisipasi mengembangkan PHP/FI. Berkat kerja sama dan kontribusi mereka, PHP versi 3.0 pun dikeluarkan walau kala itu masih dalam tahap alpha. • PHP 3 PHP 3 merupakan generasi baru hasil pengembangan PHP/FI. Banyak developer yang terlibat di dalamnya. Tak heran jika PHP 3 dianggap sebagai tonggak awal bagi terciptanya PHP versi sekarang ini. 61 Secara resmi, peluncur PHP 3.0 ialah Andi Gutmans dan Zeev Suraski pada tahun 1997. Mereka mengeluarkan PHP 3.0 karena melihat kelemahan dari PHP/FI yang digunakan dalam aplikasi e-commerce. Kemudian, mereka menulis ulang dengan masih mengacu pada PHP/FI. Setelah PHP 3.0 dikeluarkan, mereka menyarankan untuk menghentikan proyek PHP/FI karena PHP 3.0 masih lebih baik. Alasan untuk mengembangkan PHP, merupakan akronim dari Hypertext Preprocessor, dan memfokuskan diri pada PHP 3.0 adalah pengembangan versi ini secara meluas dalam mendukung berbagai jenis basis-data, protocol dan API. Dengan dukungan yang semakin besar dari berbagai pihak yang menyumbangkan berbagai modul, maka pada tahun 1998, 10 % dari seluruh webserver yang ada kala itu telah menginstalasi PHP versi 3.0. • PHP 4 PHP versi 4 diluncurkan untuk menangani kelemahan PHP 3.0 yaitu penggunaan fungsi yang begitu kompleks. Kurangnya efisien waktu dan kinerja yang buruk diperbaiki dan ditulis ulang dari inti PHP 3. Dengan penambahan fitur baru seperti session, output buffering dan pemrograman berbasis web. Selain itu, inti perbedaan mereka terletak pada penggunaan Zend Engine. Zend Engine merupakan inti dari PHP. Sebagai bagian dari inti PHP, secara fungsional bertugas menangani input, menerjemahkan dan mengeksekusinya. Ia juga berperan menerjemahkan fungsi. 62 • PHP 5 PHP versi 5 muncul menangani kelemahan-kelemahan yang terletak pada versi sebelumnya. PHP versi 5 dapat membuat file swf dan applet java. Secara resmi, PHP versi 5 diluncurkan pada Desember 2005. Fokus utamanya adalah mengoptimalkan penggunaan PHP untuk OOP (Object Oriented Programming). 2.4.2 MySQL MySQL adalah DBMS yang pada awalnya adalah miniSQL yang dikembangkan oleh MySQL AB (Perusahaan IT Swedia) sejak tahun 1979 di bawah komando Michael Widenius Monty. MySQL 1.0 dikeluarkan pada Mei 1996 secara terbatas untuk kalangan sendiri. Baru dilepas ke publik pada Oktober 1996 setelah muncul versi 3 Teguh Wahyono (2005,p10). Versi awal MySQL hanya berjalan di atas Linux dan Solaris. Setelah versi 3.22, MySQL mulai berjalan di berbagai platform termasuk Windows. Sejak tahun 2000, MySQL muncul sebagai produk open source sejati menggunakan lisensi GPL (General Public License). MySQL merupakan salah satu basis-data terbesar yang digunakan dalam pemgolahan data di dunia. Hal ini terbukti digunakannya MySQL oleh beberapa perusahaan besar dan institusi besar dunia seperti NASA(USA), Yahoo!Finance, Aizawa(Japanese Security) dan lain-lain. Menurut Nugroho (2004, p29), MySQL adalah sebuah program pembuat database yang bersifat open source, yang artinya siapa saja boleh menggunakannya dan tidak akan dicekal. MySQL juga merupakan program 63 pengakses database yang bersifat jaringan sehingga dapat digunakan untuk aplikasi multi users (banyak pengguna). Kelebihan lainnya dari MySQL adalah bahasa query standar yang dimiliki SQL (Stucture Query Language). MySQL mendukung berbagai tipe data yang antara lain dikelompokkan dalam tipe data numerik, tanggal, waktu dan string. Pada Tabel 2.1 disebutkan beberapa tipe data yang digunakan dalam skripsi ini beserta dengan kebutuhan penyimpanannya. Tabel 2.1 Tipe Data dan Kebutuhan Penyimpanannya Tipe Data TINYINT(1) TINYINT SMALLINT INTEGER DATE CHAR(M) VARCHAR(M) 2.4.3 Kebutuhan Penyimpanan 1 bit 1 byte 2 bytes 4 bytes 3 bytes M × 1 byte (panjang string × 1 byte) + 1 byte Macromedia Dreamweaver MX Macromedia Dreamweaver MX adalah sebuah HTML editor profesional untuk mengdesain secara visual dan mengelola situs web maupun halaman web. Dreamweaver membuatnya jadi lebih mudah dengan menyediakan tools yang sangat berguna dalam meningkatkan kemampuan dan pengalaman membuat web. Dreamweaver juga mengikutsertakan banyak tools untuk kode-kode dalam hal web beserta fasilitas-fasilitasnya antara lain: referensi HTML, CSS, 64 JavaScript debugger dan code editor yang mengijinkan pengeditan kode JavaScript XML dan dokumen teks lain secara langsung dalam Dreamweaver.