(Studi Kasus : Laboratorium Basis Data dan Perangkat Lunak,
Program Studi Teknik Informatika, Fakultas Sains dan Teknologi,
Universitas Sanata Dharma Yogyakarta)
Skripsi
Diajukan Untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Teknik
Program Studi Teknik Informatika
Oleh :
Puput Pradhika
NIM : 045314071
PROGRAM STUDI TEKNIK INFORMATIKA
JURUSAN TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
(Case Of Study : Database and Software Laboratory,
Informatics Engineering Study Program, Faculty of Science and Technology,
Sanata Dharma University Yogyakarta)
Skripsi
Proposed to Fulfill One of the Requirement
Acquiring Diploma Degree of Engineering
Informatics Engineering Study Program
Composed By :
Puput Pradhika
NIM : 045314071
INFORMATICS ENGINEERING STUDY PROGRAM
DEPARTMENT OF INFORMATICS ENGINEERING
FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2010
Saya menyatakan dengan sesungguhnya bahwa skripsi yang saya tulis ini
tidak memuat karya atau bagian karya orang lain, kecuali yang telah disebutkan
dalam kutipan dan daftar pustaka sebagaimana layaknya karya ilmiah.
Yogyakarta, 15 Maret 2010
Penulis,
Puput Pradhika
Yang bertanda tangan di bawah ini, saya mahasiswa Universitas Sanata Dharma :
Nama : Puput Pradhika
Nomor Mahasiswa : 045314071
Demi pengembangan ilmu pengetahuan, saya memberikan kepada Perpustakaan
Universitas Sanata Dharma karya ilmiah saya yang berjudul :
“Aplikasi Object-Relational Mapping menggunakan Ruby on Rails dan MySQL
(Studi Kasus : Laboratorium Basis Data dan Perangkat Lunak, Program Studi
Teknik Informatika, Fakultas Sains dan Teknologi, Universitas Sanata Dharma
Yogyakarta).”
beserta perangkat yang diperlukan (bila ada). Dengan demikian saya memberikan
kepada Perpustakaan Universitas Sanata Dharma hak untuk menyimpan,
mengalihkan dalam bentuk media lain, mengelolanya dalam bentuk pangkalan
data, mendistribusikan secara terbatas, dan mempublikasikannya di Internet atau
media lain untuk kepentingan akademis tanpa perlu meminta ijin dari saya
maupun memberikan royalty kepada saya selama tetap mencantumkan nama saya
sebagai penulis.
Demikian pernyataan ini yang saya buat dengan sebenarnya. Yogyakarta, 15 Maret 2010
Yang menyatakan,
Puput Pradhika
Yesus Kristus, Tuhan dan juru selamatku.
...
Ibuku tercinta.
Pak’de dan Bu’de terkasih
...
Seseorang yang selalu mencintaiku.
Dalam perkembangan teknologi dalam beberapa tahun terakhir, pembuatan
situs web dipermudah dengan menggunakan Object-Oriented Programming dan
relational database. Object-oriented merupakan model yang mendukung aplikasi
objek ke dalam kelas yang memiliki data dan fungsi, sedangkan model relasional
mendukung penyimpanan data pada baris dan kolom dalam tabel.
Namun secara teknik, perbedaan keduanya menyebabkan ketidaksesuaian
antara objek dalam kelas pada Object-Oriented Programming dengan data dalam
tabel pada relational database. Sehingga untuk mengatasi ketidaksesuaian tersebut,
diperlukan mapping antara Object-Oriented Programming dengan relational
database untuk menghubungkan antara model objek dan model relasional agar
dapat terintegrasi dan berjalan bersama dalam sebuah sistem perangkat lunak.
Mapping ini yang disebut Object-Relational Mapping. Object-Relational Mapping
merupakan salah satu pendekatan dengan menambahkan kemampuan basis data ke
dalam bahasa pemrograman berorientasi objek untuk mengatasi ketidaksesuaian
antara basisdata relasional dengan pemrograman berorientasi objek.
Dalam penelitian ini, teknologi Object Relational Mapping tools yang
digunakan adalah Ruby on Rails. Aplikasi Object-Relational Mapping
menggunakan Ruby on Rails ini diimplementasi dalam sistem informasi skripsi
dengan studi kasus pada Laboratorium Basis Data dan Perangkat Lunak, Program
Studi Teknik Informatika, Fakultas Sains dan Teknologi, Universitas Sanata
Dharma.
In the development of technology in these recent years, the development
of web pages are eased by using Object Oriented Programming and relational
database. Object Oriented is a model which supports object applications into a
class which have data and function, while relational model supports the storage of
data on rows and columns of a table.
But technically, the difference cause incompatibility between object in
Object Oriented Programming and the data of a table on relational database. To
solve this problem, we need mapping between Object Oriented Programming and
relational database to relate the object model and the relational model so both of
the model can be integrated and be operated in a software system. This is called as
Object Relational Mapping. Object Relational Mapping is one of approach used to
improve the database capability into Object Oriented Programming language to
solve the incompatibility between Relational Database and Object Oriented
Programming.
In this research, Object Relational Mapping tools technology used is
Ruby on Rails. This application is implemented on skripsi information system
based on case of study at Database and Software Laboratory, Informatics
Engineering Study Program, Faculty of Science and Technology, Sanata Dharma
University.
Puji dan syukur kepada Tuhan Yesus Kristus atas berkat, anugerah dan
kemurahan-Nya sehingga penulis dapat menyelesaikan skripsi yang berjudul
“Aplikasi Object-Relational Mapping menggunakan Ruby on Rails dan MySQL
(Studi Kasus : Laboratorium Basis Data dan Perangkat Lunak, Program Studi
Teknik Informatika, Fakultas Sains dan Teknologi, Universitas Sanata Dharma
Yogyakarta)” sebagai salah satu syarat untuk memperoleh gelar Sarjana Teknik
(S.T.) di Fakultas Sains dan Teknologi Universitas Sanata Dharma.
Dalam penelitian ini sampai pada penyusunan skripsi ini, penulis banyak
mendapat bantuan dari berbagai pihak. Pada kesempatan ini, penulis ingin
menyampaikan penghargaan dan ucapan terima kasih kepada :
1. Yosef Agung Cahyanta, S.T., M.T., Selaku Dekan Fakultas Sains dan
Teknologi Universitas Sanata Dharma.
2. Bapak Puspaningtyas Sanjoyo Adi, S.T., M.T. selaku Kepala Program Studi
Teknik Informatika Universitas Sanata Dharma dan Dosen Penguji.
3. Ibu Agnes Maria Polina, S.Kom., M.Sc., selaku Dosen Pembimbing
Akademik.
4. Ibu Ridowati Gunawan, S.Kom., M.T., selaku Dosen Pembimbing, terima
kasih atas perhatian, bimbingan dan dorongan semangatnya.
5. JB Budi Darmawan, S.T., M.Sc., selaku Dosen Penguji.
7. Ibu Ngadinem tercinta, yang telah memberikan segalanya tanpa mengharap
kembali.
8. Pak’de dan bu’de Lakirdi atas semua bimbingan dan bantuan selama hidupku.
9. Siwiargo Yacintus dan Simeon Siwi Hudiono atas persaudaraan yang tak akan
pernah berakhir.
10. Timotheus Setianto atas semua peran serta baik moril dan materiil dalam
mendukung selesainya penulisan skripsi ini.
11. Jacobus Reinhart Ariando atas semua pelajaran dan buku-buku yang
digunakan penulis dalam skripsi ini.
12. Saudara/i Teksapala terutama angkatan Bukit Jelajah atas peran serta dan
keterlibatannya sehingga penulis dapat menyelesaikan skripsi ini dengan baik.
13. Teman-teman Teknik Informatika angkatan 2004 atas dorongan semangat
sehingga penulis dapat segera menyelesaikan skripsi ini.
14. Semua pihak yang telah membantu dan terlibat dalam skripsi ini yang tidak
dapat disebutkan satu persatu.
memiliki harapan yang sangat besar, semoga skripsi ini dapat bermanfaat bagi
pembaca dan perkembangan ilmu pengetahuan.
Yogyakarta, 14 Maret 2010
Penulis
Puput Pradhika
HALAMAN JUDUL ... i
HALAMAN PERSETUJUAN... ii
HALAMAN PENGESAHAN... iii
HALAMAN KEASLIAN KARYA... iv
HALAMAN PERNYATAAN PERSETUJUAN PUBLIKASI... v
HALAMAN PERSEMBAHAN... vi
ABSTRAKSI... vii
ABSTRACT... viii
KATA PENGANTAR... ix
DAFTAR ISI... xii
DAFTAR GAMBAR... xvii
DAFTAR TABEL... xxv
BAB I PENDAHULUAN ... 1
1.1. Latar Belakang... 1
1.2. Rumusan Masalah... 2
1.3. Batasan Masalah... 3
1.4. Tujuan Penelitian... 3
1.5. Manfaat Penelitian... 4
1.6. Metodologi Penelitian... 4
1.7. Sistematika Penulisan... 6
BAB II LANDASAN TEORI... 7
2.1. Pemodelan Object-Oriented... 7
2.1.1.Identitas... 7
2.1.2.Data... 7
2.1.3.Fungsi... 8
2.1.4.Kelas... 8
2.2. Pemodelan Relational... 10
2.2.1.Tabel, Kolom dan Baris... 10
2.2.2.Identifikasi Record... 10
2.2.3.Relasi... 10
2.3. Object-Relational Mapping... 11
2.3.1.Object-Relational Impedance Mismacth... 11
2.3.2.Konsep Dasar Object-Relational Mapping... 12
2.3.2.1.Mapping pada struktur pewarisan... 12
2.3.2.1.1.Mapping hirarki ke tabel tunggal... 13
2.3.2.1.2.Mapping subkelas ke dalam tabel... 13
2.3.2.1.3.Mapping tiap kelas ke dalam tiap tabel... 14
2.3.2.2.Mapping pada Struktur Asosiasi... 15
2.3.2.2.1.Mapping Relasi One-to-One... 16
2.3.2.2.2.Mapping Relasi One-to-Many... 16
2.3.2.2.3.Mapping Relasi Many-to-Many... 17
2.3.2.2.4.Mapping Relasi Rekursif... 18
2.4. Ruby on Rails... 19
2.4.1.Arsitektur Ruby on Rails... 19
2.4.2.Active Record... 20
2.4.2.1.Tabel dan Kelas... 20
2.4.2.2.Kolom dan Atribut... 21
2.4.2.3.Identifier... 22
2.4.2.3.1.Primary Key... 22
2.4.2.3.2.Foreign Key... 23
2.4.2.4.Create, Read, Update dan Delete (CRUD) ... 24
2.4.2.4.1.Create... 24
2.4.2.4.2.Read... 25
2.4.2.4.3.Update... 26
2.4.2.5.2.Asosiasi One-to-Many... 29
2.4.2.5.3.Asosiasi Many-to-Many... 29
2.4.2.6.Transaksi... 30
2.4.2.7.Agregasi... 31
2.4.2.8.Pewarisan... 32
BAB III ANALISIS DAN PERANCANGAN... 33
3.1. Analisis Sistem... 33
3.1.1.Gambaran Umum Sistem... 33
3.1.2.Analisis Kebutuhan... 38
3.1.3.Pemodelan Proses... 43
3.1.3.1.Sequence Diagram Mahasiswa... 43
3.1.3.2.Sequence Diagram Dosen... 50
3.1.3.3.Sequence Diagram Karyawan... 54
3.1.3.3.1.Sequence Diagram Admin... 54
3.1.3.3.2.Sequence DiagramKaryawan... 65
3.2. Desain Sistem... 71
3.2.1.Class Diagram... 71
3.2.2.Desain Arsitektur Ruby on Rails... 72
3.2.2.1.Desain Arsitektur Controller... 72
3.2.2.2.Desain Arsitektur Model... 73
3.2.2.3.Desain Arsitektur MVC pada Mahasiswa... 74
3.2.2.4.Desain Arsitektur MVC pada Dosen... 75
3.2.2.5.Desain Arsitektur MVC pada Karyawan... 76
3.2.2.5.1.Desain Arsitektur MVC pada Karyawan... 76
3.2.2.5.2.Desain Arsitektur MVC pada Karyawan Admin... 77
3.2.3.Desain Antarmuka (User Interface Design)... 78
3.2.3.1.Rancangan Antar Muka Pengguna... 80
3.2.3.1.4.Karyawan... 81
3.2.3.2.Rancangan Desain Input... 82
3.2.3.2.1.Mahasiswa... 82
3.2.3.2.2.Dosen... 86
3.2.3.2.3.Karyawan Admin... 88
3.2.3.2.4.Karyawan... 98
3.2.3.3.Rancangan Desain Output... 104
3.2.3.3.1.Mahasiswa... 104
3.2.3.3.2.Dosen... 106
3.2.3.3.3.Karyawan Admin... 107
3.2.3.3.4.Karyawan... 111
3.3. Perancangan Database... 113
3.3.1.Perancangan Relasi Antar Tabel... 113
3.3.2.Perancangan Struktur Tabel... 114
3.4. Perangkat Perancangan... 119
3.4.1.Perangkat Keras ( Hardware )... 119
3.4.2.Perangkat Lunak ( Software )... 119
BAB IV IMPLEMENTASI ... 120
1.. Karakteristik Sistem ……… 120
2.. Langkah-langkah Implementasi Sistem ... 121
4.2.1. Koneksi DatabaseMySQL ... 122
4.2.2. Pembuatan Tabel pada DatabaseMySQL... 122
4.2.3. Pembuatan Model... 128
4.2.4. Pembuatan Controller... 144
4.2.5. Pembuatan View... 166
4.2.5.1. View Admin... 166
4.2.5.2. View Karyawan... 184
BAB V ANALISIS HASIL ... 209
5.1. Proses Pengujian Sistem... 209
1.1.1. Proses Pengujian pada UnitTest... 209
1.1.2. Proses Pengujian pada SQLYog... 213
5.2. Hasil Pengujian Sistem... 215
5.2.1. Pengujian pada Tabel Karyawan... 215
5.2.2. Pengujian pada Tabel Dosen... 216
5.2.3. Pengujian pada Tabel Informasi... 216
5.2.4. Pengujian pada Tabel Status Mahasiswa... 217
5.2.5. Pengujian pada Tabel Kategori Skripsi... 218
5.3. Kelebihan Sistem ... 218
5.4. Kekurangan Sistem... 219
BAB VI PENUTUP... 220
6.1. Kesimpulan ... 220
6.2. Saran ... 220
DAFTAR PUSTAKA... 221
Gambar Keterangan Halaman
2.01 Impedance Mismatch antara objek dan tabel 11
2.02 Mapping antara objek dan tabel 12
2.03 Mapping hirarki kelas ke dalam tabel tunggal 13
2.04 Mapping subkelas ke dalam tabel 14
2.05 Mapping tiap kelas ke dalam tiap tabel 14
2.06 Relasi one-to-one 16
2.07 Relasi one-to-many 17
2.08 Relasi many-to-many 17
2.09 Mapping relasi many-to-many dalam model data 18
2.10 Mapping pada relasi rekursif 18
2.11 Arsitektur Ruby on Rails 19
2.12 Perbedaan nama antara kelas dan tabel 21
2.13 Perbedaan tipe data dalam kelas ruby dan tipe SQL 22
2.14 Relasi asosiasi one-to-one 28
2.15 Relasi asosiasi one-to-many 29
2.16 Relasi asosiasi many-to-many 29
2.17 Relasi agregasi pada tabel 31
2.18 Relasi agregasi pada kelas dalam objek 31
2.19 Mapping kelas dalam tabel pada pewarisan 32
3.01 Use Case Diagram Mahasiswa 39
3.02 Use Case Diagram Dosen 40
3.03 Use Case Diagram Karyawan Admin 41
3.04 Use Case Diagram Karyawan 42
3.05 Sequence Diagram Login Mahasiswa 43
3.08 Sequence Diagram Daftar TGA Mahasiswa 45
3.09 Sequence DiagramUpdate TGA Mahasiswa 46
3.10 Sequence Diagram PencarianSkripsi Aktor Mahasiswa 46
3.11 Sequence Diagram Detail Skripsi Aktor Mahasiswa 47
3.12 Sequence Diagram Download File Skripsi Aktor Mahasiswa 47
3.13 Sequence Diagram Lihat Detail Informasi Aktor Mahasiswa 48
3.14 Sequence Diagram Download File Informasi Aktor
Mahasiswa 48
3.15 Sequence Diagram Ganti Password Mahasiswa 49
3.16 Sequence Diagram Logout Mahasiswa 49
3.17 Sequence Diagram Login Dosen 50
3.18 Sequence Diagram Pencarian Skripsi Aktor Dosen 50
3.19 Sequence Diagram Lihat Detail Skripsi Aktor Dosen 51
3.20 Sequence Diagram DownloadFile Skripsi Aktor Dosen 51
3.21 Sequence Diagram Lihat Detail Informasi Aktor Dosen 52
3.22 Sequence Diagram DownloadFile Informasi Aktor Dosen 52
3.23 Sequence Diagram Ganti Password Dosen 53
3.24 Sequence Diagram Logout Dosen 53
3.25 Sequence Diagram Login Admin 54
3.26 Sequence Diagram Tambah Karyawan Aktor Admin 54
3.27 Sequence Diagram Ubah Karyawan Aktor Admin 55
3.28 Sequence Diagram Hapus Karyawan Aktor Admin 55
3.29 Sequence Diagram Tambah Dosen Aktor Admin 56
3.30 Sequence Diagram Ubah Dosen Aktor Admin 56
3.31 Sequence Diagram Hapus Dosen Aktor Admin 57
3.34 Sequence Diagram Hapus Mahasiswa Aktor Admin 58
3.35 Sequence Diagram Tambah Informasi Aktor Admin 59
3.36 Sequence Diagram Ubah Informasi Aktor Admin 59
3.37 Sequence Diagram Hapus Informasi Aktor Admin 60
3.38 Sequence Diagram Tambah Status Mahasiswa Aktor Admin 60
3.39 Sequence Diagram Ubah Status Mahasiswa Aktor Admin 61
3.40 Sequence Diagram Hapus Status Mahasiswa Aktor Admin 61
3.41 Sequence Diagram Tambah Kategori Skripsi Aktor Admin 62
3.42 Sequence Diagram Ubah Kategori Skripsi Aktor Admin 62
3.43 Sequence Diagram Hapus Kategori Skripsi Aktor Admin 63
3.44 Sequence Diagram Tambah Skripsi Aktor Admin 63
3.45 Sequence Diagram Ubah Skripsi Aktor Admin 64
3.46 Sequence Diagram Hapus Skripsi Aktor Admin 64
3.47 Sequence Diagram Logout Admin 65
3.48 Sequence Diagram Login Karyawan 65
3.49 Sequence Diagram Ganti PasswordKaryawan 66
3.50 Sequence Diagram Tambah Dosen Aktor Karyawan 66
3.51 Sequence Diagram Ubah Dosen Aktor Karyawan 67
3.52 Sequence Diagram Tambah Mahasiswa Aktor Karyawan 67
3.53 Sequence Diagram Ubah Mahasiswa Aktor Karyawan 68
3.54 Sequence Diagram Tambah Informasi Aktor Karyawan 68
3.55 Sequence Diagram Ubah Informasi Aktor Karyawan 69
3.56 Sequence Diagram Tambah Skripsi Aktor Karyawan 69
3.57 Sequence Diagram Ubah Skripsi Aktor Karyawan 70
3.58 Sequence Diagram Logout Karyawan 70
3.61 Desain Arsitektur Model 73
3.62 Desain Arsitektur MVC pada Mahasiswa 74
3.63 Desain Arsitektur MVC pada Dosen 75
3.64 Desain Arsitektur MVC pada Karyawan 76
3.65 Desain Arsitektur MVC pada Karyawan Admin 77
3.66 Struktur Menu Sistem Aktor Mahasiswa 78
3.67 Struktur Menu Sistem Aktor Dosen 78
3.68 Struktur Menu Sistem Aktor Karyawan Admin 79
3.69 Struktur Menu Sistem Aktor Karyawan 79
3.70 Halaman Utama Mahasiswa 80
3.71 Halaman Utama Dosen 80
3.72 Halaman Utama Karyawan Admin 81
3.73 Halaman Utama Karyawan 81
3.74 Form Login Mahasiswa 82
3.75 Form Daftar Pra TGA Aktor Mahasiswa 82
3.76 Form Update Pra TGA Aktor Mahasiswa 83
3.77 Form Daftar TGA Aktor Mahasiswa 84
3.78 Form Update TGA Aktor Mahasiswa 84
3.79 Form Pencarian Skripsi Aktor Mahasiswa 85
3.80 Form Ganti Password Aktor Mahasiswa 86
3.81 Form Login Dosen 86
3.82 Form Pencarian Skripsi Aktor Dosen 87
3.83 Form Ganti Password Aktor Dosen 88
3.84 Form Login Admin 88
3.85 Form Tambah Karyawan Aktor Admin 89
3.88 Form Ubah Dosen Aktor Admin 91
3.89 Form Tambah Mahasiswa Aktor Admin 91
3.90 Form Ubah Mahasiswa 92
3.91 Form Tambah Status Mahasiswa Aktor Admin 93
3.92 Form Ubah Status Mahasiswa Aktor Admin 93
3.93 Form Tambah Kategori Skripsi Aktor Admin 94
3.94 Form Ubah Kategori Skripsi Aktor Admin 95
3.95 Form Tambah Skripsi Aktor Admin 95
3.96 Form Ubah Skripsi Aktor Admin 96
3.97 Form Tambah Informasi Aktor Admin 97
3.98 Form Ubah Informasi Aktor Admin 97
3.99 Form Login Karyawan 98
3.100 Form Tambah Dosen Aktor Karyawan 98
3.101 Form Ubah Dosen Aktor Karyawan 99
3.102 Form Tambah Informasi Aktor Karyawan 100
3.103 Form Ubah Informasi Aktor Karyawan 100
3.104 Form Tambah Mahasiswa Aktor Karyawan 101
3.105 Form Ubah Mahasiswa Aktor Karyawan 102
3.106 Form Tambah Skripsi Aktor Karyawan 102
3.107 Form Ubah Skripsi Aktor Karyawan 103
3.108 Form Ganti Password Karyawan 104
3.109 Form Lihat Detail Informasi Aktor Mahasiswa 104
3.110 Form Hasil Pencarian Aktor Mahasiswa 105
3.111 Form Lihat Detail Skripsi Aktor Mahasiswa 105
3.112 Form Lihat Detail Informasi Aktor Dosen 106
3.115 Form Arsip Karyawan Aktor Admin 107
3.116 Form Arsip Dosen Aktor Admin 108
3.117 Form Arsip Mahasiswa Aktor Admin 108
3.118 Form Arsip Status Mahasiswa Aktor Admin 109
3.119 Form Arsip Kategori Skripsi Aktor Admin 109
3.120 Form Arsip Skripsi Aktor Admin 110
3.121 Form Arsip Informasi Aktor Admin 110
3.122 Form Arsip Dosen Aktor Karyawan 111
3.123 Form Arsip Informasi Aktor Karyawan 111
3.124 Form Arsip Mahasiswa Aktor Karyawan 112
3.125 Form Arsip Skripsi Aktor Karyawan 112
3.126 Relational Model 113
4.01 Form Halaman Login Admin 166
4.02 Halaman Index Admin 167
4.03 Halaman Arsip Dosen Aktor Admin 168
4.04 Halaman Tambah Dosen Aktor Admin 168
4.05 Halaman Ubah Dosen Aktor Admin 169
4.06 Halaman Arsip Informasi Aktor Admin 170
4.07 Halaman Tambah Informasi Aktor Admin 171
4.08 Halaman Ubah Informasi Aktor Admin 172
4.09 Halaman Arsip Karyawan Aktor Admin 173
4.10 Halaman Tambah Karyawan Aktor Admin 173
4.11 Halaman Ubah Karyawan Aktor Admin 174
4.12 Halaman Arsip Mahasiswa Aktor Admin 175
4.13 Halaman Tambah Mahasiswa Aktor Admin 175
4.16 Halaman Tambah Status Mahasiswa Aktor Admin 178
4.17 Halaman Ubah Status Mahasiswa Aktor Admin 178
4.18 Halaman Arsip Kategori Skripsi Aktor Admin 179
4.19 Halaman Tambah Kategori Skripsi Aktor Admin 180
4.20 Halaman Ubah Kategori Skripsi Aktor Admin 180
4.21 Halaman Arsip Skripsi Aktor Admin 181
4.22 Halaman Tambah Skripsi 182
4.23 Halaman Ubah Skripsi Aktor Admin 183
4.24 Form Halaman Login 184
4.25 Halaman Karyawan 184
4.26 Halaman List Dosen Aktor Karyawan 185
4.27 Halaman Tambah Dosen Aktor Karyawan 186
4.28 Halaman Update Dosen Aktor Karyawan 186
4.29 Halaman Arsip Informasi Aktor Karyawan 187
4.30 Halaman Tambah Informasi Aktor Karyawan 188
4.31 Halaman Ubah Informasi Aktor Karyawan 189
4.32 Halaman Arsip Mahasiswa Aktor Karyawan 190
4.33 Halaman Tambah Mahasiswa Aktor Karyawan 190
4.34 Halaman Ubah Mahasiswa Aktor Karyawan 191
4.35 Halaman Arsip Skripsi Aktor Karyawan 192
4.36 Halaman Tambah Skripsi Aktor Karyawan 193
4.37 Halaman Ubah Skripsi Aktor Karyawan 194
4.38 Halaman Ganti Password Karyawan 195
4.39 Halaman Login Dosen 196
4.40 Halaman Index Dosen 196
4.43 Halaman Pencarian Skripsi Aktor Dosen 198
4.44 Halaman Lihat Detail Skripsi Aktor Dosen 199
4.45 Halaman Download File Skripsi Aktor Dosen 199
4.46 Halaman Login Mahasiswa 200
4.47 Halaman Index Mahasiswa 200
4.48 Halaman Lihat Detail Informasi Aktor Mahasiswa 201
4.49 Halaman Download File Informasi Aktor Mahasiswa 201
4.50 Halaman Daftar Pra TGA Mahasiswa 202
4.51 Halaman Data Pra TGA Mahasiswa 203
4.52 Halaman Update Pra TGA Mahasiswa 204
4.53 Halaman Daftar TGA Mahasiswa 204
4.54 Halaman Update Pra TGA Mahasiswa 205
4.55 Halaman Pencarian Skripsi Aktor Mahasiswa 206
4.56 Halaman Lihat Detail Skripsi Aktor Mahasiswa 207
4.57 Halaman Download File Skripsi Aktor Mahasiswa 207
4.58 Halaman Ganti Password Mahasiswa 208
Tabel Keterangan Halaman
3.01 Tabel Karyawan 108
3.02 Tabel Status Mahasiswa 108
3.03 Tabel Mahasiswa 109
3.04 Tabel Dosen 109
3.05 Tabel Kategori Skripsi 110
3.06 Tabel Skripsi 110
3.07 Tabel Informasi 111
3.08 Tabel Session 112
3.10 Tabel Web 112
3.11 Tabel Schema Info 113
5.1 Perbandingan Waktu Eksekusi Query pada Tabel Karyawan 215
5.2 Perbandingan Waktu Eksekusi Query pada Tabel Dosen 216
5.3 Perbandingan Waktu Eksekusi Query pada Tabel Informasi 216
5.4 Perbandingan waktu Eksekusi Query pada Tabel Status
Mahasiswa
217
5.5 Perbandingan waktu Eksekusi Query pada Tabel Kategori
Skripsi
218
1.1.Latar Belakang
Perkembangan teknologi yang meningkat saat ini menyebabkan kebutuhan
akan informasi pun meningkat. Salah satu teknologi yang digunakan sebagai
sumber informasi adalah internet. Adanya internet memudahkan user dalam
mengakses berbagai situs web. Situs-situs web ini menyediakan berbagai fasilitas
guna memenuhi kebutuhan informasi user dengan kemudahan-kemudahan seperti
pencarian informasi, pengiriman dan pembacaan e-mail serta upload dan download
file. Begitu pula dalam lembaga pendidikan, khususnya lembaga perguruan tinggi,
kebutuhan mengakses informasi terutama dalam hal informasi skripsi sangat
dibutuhkan oleh mahasiswa dan dosen sebagai bahan belajar bagi mahasiswa dan
dosen itu sendiri.
Dalam perkembangan teknologi yang ada dalam beberapa tahun terakhir
ini, pembuatan situs web ini dipermudah dengan menggunakan Object-Oriented
Programming dan relational database. Object oriented merupakan model yang
mendukung aplikasi objek ke dalam kelas yang memiliki data dan fungsi,
sedangkan model relasional mendukung penyimpanan data pada baris dan kolom
dalam tabel.
Namun secara teknik, perbedaan keduanya menyebabkan ketidaksesuaian
antara objek dalam kelas pada Object-Oriented Programming dengan data dalam
tabel pada relational database. Sehingga untuk mengatasi ketidaksesuaian tersebut,
diperlukan mapping antara Objek-Oriented Programming dengan relational
database untuk menghubungkan antara model objek dan model relasional agar
dapat terintegrasi dan berjalan bersama dalam sebuah sistem perangkat lunak.
Mapping inilah yang disebut Object Relational Mapping. Object Relational
Mapping merupakan salah satu pendekatan dengan menambahkan kemampuan
basis data ke dalam bahasa pemrograman berorientasi objek untuk mengatasi
ketidaksesuaian antara basisdata relasional dengan pemrograman berorientasi
objek.
Dalam penelitian ini, teknologi Object Relational Mapping tools yang
digunakan adalah Ruby on Rails. Ruby on Rails merupakan pemrograman
berorientasi objek dengan bahasa pemrograman Ruby dengan framework Rails.
Aplikasi Object Relational Mapping menggunakan Ruby on Rails ini
diimplementasi dalam sistem informasi skripsi dengan studi kasus pada
Laboratorium Basis Data dan Perangkat Lunak, Program Studi Teknik Informatika,
Fakultas Sains dan Teknologi, Universitas Sanata Dharma.
1.2. Rumusan Masalah
Permasalahan dalam penelitian ini dirumuskan sebagai berikut :
Bagaimana mengimplementasikan Object Relational Mapping pada sistem
informasi skripsi berbasis web menggunakan bahasa pemrograman Ruby on Rails
dan database MySQL untuk mengatasi ketidaksesuaian antara pemrograman objek
1.3. Batasan Masalah
Batasan masalah yang akan dibahas dalam penelitian ini antara lain :
1. Aplikasi sistem informasi skripsi yang dibuat menangani masalah data-data
skripsi yang terdiri dari penelusuran data skripsi, melihat hasil penelusuran
skripsi, menampilkan isi skripsi dalam bentuk file Portable Document Format
(PDF), dan men-download serta meng-upload skripsi dalam bentuk file
Portable Document Format (PDF).
2. Penelusuran data skripsi menggunakan Query SQL yang terbagi berdasarkan 3
kategori pencarian, antara lain :
1. Judul Skripsi
2. Nomor Induk Mahasiswa
3. Kategori Skripsi
4. Teknologi Pemrograman
5. Teknologi Database
3. Data-data skripsi yang digunakan dalam sistem informasi ini dibatasi pada
lingkungan Program Studi Teknik Informatika, Fakultas Sains dan Teknologi,
Universitas Sanata Dharma.
1.4. Tujuan Penelitian
Tujuan penelitian ini menghasilkan sistem informasi skripsi sebagai
aplikasi Object Relational Mapping dalam bahasa pemrograman Ruby on Rails dan
1.5. Manfaat Penelitian
Manfaat penelitian ini adalah :
1. Memperkenalkan konsep Object Relational Mapping dalam bahasa
pemrograman Ruby on Rails.
2. Menghasilkan aplikasi sistem informasi skripsi yang dapat mempermudah
penelusuran dan pembelajaran skripsi.
1.6. Metodologi Penelitian
1. Studi Pustaka
Studi pustaka tentang object relational mapping dan materi lain yang
berhubungan dengan pembuatan sistem. Bahan referensi diperoleh dari
buku-buku dan hasil penelusuran melalui internet.
2. Wawancara
Wawancara merupakan proses penemuan masalah. Wawancara dilakukan
kepada pihak laboran untuk mengidentifikasi masalah. Kemudian menentukan
apa yang dibutuhkan sistem berdasarkan wawancara tersebut.
3. Analisis Sistem
Metode Analisis yang digunakan adalah metode analisis berorientasi objek
(Object-Oriented Analysis) dengan menggunakan UML (Unified Modelling
Language). Pada tahap ini dilakukan pengumpulan kebutuhan-kebutuhan
pemakai dan penentuan bagian-bagian informasi mana yang diperlukan oleh
aktor. Permodelan kebutuhan ini direpresentasikan dengan use case diagram.
Sequence Diagram menggambarkan secara grafis bagaimana obyek-obyek
berinteraksi satu sama lain melalui pesan selama eksekusi suatu use case atau
operasi serta mengilustrasikan bagaimana pesan dikirim dan diterima oleh
obyek dan bagaimana urutannya.
4. Desain Sistem
Desain sistem yang digunakan merupakan perancangan berorientasi objek
(Object-Oriented Design) yang terdiri dari Class Diagram. Class diagram
merupakan gambaran grafis dari struktur obyek yang menunjukkan kelas-kelas
obyek penyusun sistem serta relasi diantara kelas-kelas obyek. Perancangan
antarmuka pengguna (User Interface Design) terdiri dari desain input, desain
output dan desain antarmuka.
5. Penulisan Program
Implementasi yang mentranslasikan desain yang telah dibuat dalam bentuk
penulisan program. Penulisan program menggunakan metode pemrograman
berorientasi obyek (Object-Oriented Programming).
6. Analisis Hasil
Analisis hasil dilakukan untuk menganalisis Object Relational Mapping
menggunakan pemrograman Ruby on Rails pada sistem informasi skripsi,
1.7. Sistematika Penulisan
Sistematika penulisan laporan tugas akhir ini adalah sebagai berikut :
Bab I Pendahuluan
Bab pendahuluan berisi latar belakang masalah, rumusan masalah, batasan
masalah, tujuan penelitian, manfaat penelitian, metode penelitian dan sistematika
penulisan.
Bab II Landasan Teori
Bab ini berisi landasan teori yang digunakan meliputi konsep model
pemrograman objek, konsep model basisdata relational, konsep Object Relational
Mapping dan bahasa pemrograman Ruby on Rails.
Bab III Analisis dan Perancangan Sistem
Bab ini berisi tentang analisis kebutuhan dan perancangan sistem yang
akan diimplementasikan.
Bab IV Implementasi Sistem
Bab ini berisi tentang proses implementasi sesuai dengan rancangan sistem
yang pada bab III.
Bab V Analisis Hasil
Bab ini berisi tentang analisis hasil implementasi sistem yang terdiri dari
analisis Object Relational Mapping menggunakan pemrograman Ruby on Rails
pada sistem informasi skripsi, kelebihan dan kelemahan aplikasi yang telah dibuat.
Bab VI Penutup
Bab penutup berisi tentang kesimpulan dan saran untuk pengembangan
2.1.Pemodelan Object-Oriented
Objek merupakan suatu abstraksi dalam sebuah sistem yang merefleksikan
kemampuan sistem untuk menjaga informasi tentang suatu objek dan yang
berhubungan dengan objek tersebut. Objek merupakan entitas dalam sebuah sistem
yang menggambarkan hal (instances) yang nyata dan entitas sistem.
Pemodelan objek mendeskripsikan sebuah sistem yang dibangun
berdasarkan pada objek-objek yang ada dalam real-world. Konsep pemodelan
objek yaitu identitas (identity), fungsi (behavior) dan data (state), kelas, abstraksi,
enkapsulasi, asosiasi dan pewarisan.
2.1.1. Identitas
Objek memiliki identity yang membedakan sebuah objek dengan objek
yang lainnya. Identity merupakan langkah penting menggambarkan bagaimana
objek tersebut berbeda dengan tipe data pada relasional.
2.1.2. Data
Karena objek dapat dibedakan secara independen dari nilainya maka objek
memiliki nilai yang diasosiasikan dengan identity objek tersebut. Objek dapat
memiliki data tunggal atau memiliki banyak data transisi. Karena objek
terenkapsulasi, data akan berupa abstraksi dan hanya dapat dilihat dengan
mengeksekusi fungsi (behavior) objek tersebut.
2.1.3. Fungsi
Objek menyediakan abstraksi yang dapat berinteraksi dengan client. Fungsi
(behavior) objek merupakan kumpulan operasi-operasi yang dilakukan oleh suatu
objek. Seluruh interaksi dengan objek harus memiliki interface yang dibentuk
dalam sebuah fungsi dan seluruh data (state) mengenai objek berasal dari fungsi
sebagai interaksi interface.
2.1.4. Kelas
Kelas adalah gambaran dari kumpulan objek yang memiliki atribut, operasi,
fungsi dan relasi antar objek. Kelas pada objek merupakan template dari objek.
Objek kelas dapat digunakan untuk menciptakan sebuah objek. Sebuah objek
merepresentasikan sebuah keterangan dari kelas.
2.1.5. Enkapsulasi
Enkapsulasi adalah pemaketan data dan operasi bersamaan. Enkapsulasi
menyediakan sebuah abstraksi untuk menjaga data internal dari client yang ingin
melihat detail implementasi dari sebuah abstraksi. Dalam enkapsulasi, client dapat
berinteraksi dengan fungsi publik dari objek tersebut tetapi client tidak dapat
Enkapsulasi dapat berupa:
– Atribut dan fungsi private yang merupakan pengenkapsulasian dengan
menggunakan kelas sehingga atribut dan fungsi tersebut tidak dapat dilihat oleh
kelas client.
– Fungsi public yang mendefinisikan interface pada kelas yang disediakan untuk
client.
2.1.6. Asosiasi
Model asosiasi merupakan hubungan antara objek dari kelas yang
terhubung dengan objek yang lainnya. Model asosiasi dapat dibedakan menjadi
tiga tipe yaitu:
1. Relasi one-to-one adalah relasi objek yang memiliki relasi maksimum satu
2. Relasi one-to-many adalah jika sebuah objek dapat memiliki relasi lebih dari
satu hubungan dengan objek lainya.
3. Relasi many-to-many adalah objek yang memiliki hubungan lebih dari satu.
2.1.7. Pewarisan
Pewarisan merepresentasikan generalisasi dari kelas. Pewarisan merupakan
kelas objek sebagai superclass mewariskan atribut dari kelas objek yang lainnya
sebagai subclass. Pewarisan adalah mekanisme abstraksi yang digunakan untuk
mengklasifikasikan entitas dan mekanisme penyatuan (reuse mechanism) pada
desain dan level program. Namun, konsep pewarisan pada sebuah kelas objek
memiliki sifat tidak self-contained yang berarti kelas objek tidak dapat dimengerti
2.2. Pemodelan Relational
2.2.1. Tabel, Kolom dan Baris
Basisdata relasional akan menyimpan informasi data ke dalam sebuh tabel.
Setiap kolom mempunyai nama yang unik, kolom memiliki tipe yang sama dan
setiap kolom mempunyai domain yaitu nilai konsisten (nilai yang berlaku untuk
field tersebut). Di dalam sebuah tabel tidak boleh terdapat baris yang sama.
2.2.2. Identifikasi Record
Kunci kandidat (candidate key) adalah satu atau beberapa atribut yang
secara unik dapat mengidentitaskan sebuah baris. Kunci primer (primary key)
adalah kunci kandidat yang dipilih sebagai penentu tunggal. Setiap relasi harus
mempunyai kunci primer. Bila tidak ada satupun kunci kandidat pada sebuah
relasi, maka harus diciptakan atribut baru untuk tujuan tersebut. Foreign key
adalah atribut pada sebuah relasi dimana atribut tersebut bukan primary key relasi
tersebut, melainkan primary key pada relasi yang lain. Composite key adalah kunci
yang merupakan gabungan beberapa atribut.
2.2.3. Relasi
Relasi merupakan hubungan antar entitas yang dinyatakan dalam bentuk 2
arah. Dalam basisdata relasional terdapat beberapa bentuk hubungan relasi yaitu
one-to-one, one-to-many dan many-to-many. Pada hubungan many-to-many, relasi
2.3.Object-Relational Mapping
2.3.1. Object-Relational Impedance Mismacth
Pemodelan objek mendukung aplikasi menggunakan kelas-kelas yang
mengimplementasikan data (state) dan fungsi (behavior). Namun, pada pemodelan
relasional didukung oleh penyimpanan data dalam tabel. Pemahaman tersebut
sebagai dasar perbedaan yang menghasilkan ketidaksesuaian kombinasi pada
pemodelan objek dan relasional, yang kemudian diistilahkan dengan
object-relational impedance mismacth. Impedance mismatch ini terjadi saat kebutuhan
untuk me-mapping-kan objek yang digunakan pada suatu aplikasi ke dalam
penyimpanan tabel pada basisdata relasional. Perhatikan gambar 2.01 berikut:
2.3.2. Konsep Dasar Object-Relational Mapping
Object-Relational Mapping dapat mengatasi masalah impedance mismatch
dengan me-mapping-kan objek pada level aplikasi objek ke dalam tabel dalam
level basisdata relasional. Perhatikan gambar 2.02 berikut :
Gambar 2.02 Mapping antara objek dan tabel
2.3.2.1. Mapping pada struktur pewarisan
Dalam model basisdata relasional tidak mendukung konsep pewarisan
seperti pada Object-Oriented Programming sehingga perlu me-mapping-kan
struktur pewarisan dalam skema objek ke skema data. Dalam hal ini terdapat tiga
teknik untuk mapping pewarisan dalam sebuah basisdata relasional yaitu: mapping
hirarki ke dalam sebuah tabel, mapping sub kelas ke dalam tabel, mapping tiap
2.3.2.1.1. Mapping hirarki ke tabel tunggal
Strategi ini digunakan dengan me-mapping-kan semua kelas dalam hirarki
ke dalam sebuah tabel. Seluruh atribut yang ada pada superkelas dan tiap-tiap
subkelasnya dijadikan satu dalam sebuah tabel. Strategi ini memiliki kekurangan
yaitu atribut dalam sebuah kolom yang dideklarasikan sebagai atribut dari subkelas
dapat berupa null. Hal ini menyebabkan masalah pada integrasi data pada
basisdata.
Gambar 2.03 Mapping hirarki kelas ke dalam tabel tunggal
2.3.2.1.2. Mapping subkelas ke dalam tabel
Mapping subkelas ke dalam tabel merupakan strategi kedua yang dapat
digunakan untuk me-mapping-kan struktur pewarisan ke dalam model relasional.
Dalam strategi ini dilakukan dengan menurunkan sifat superkelas ke dalam
tiap-tiap subkelas yang dimilikinya, sehingga dalam sebuah tabel mapping terdapat
Gambar 2.04 Mapping subkelas ke dalam tabel
2.3.2.1.3. Mapping tiap kelas ke dalam tiap tabel
Pada strategi ini, mapping pewarisan dilakukan dengan me-mapping-kan
tiap kelas dalam hirarki ke dalam tabel tersendiri dan memiliki relasi antar tabel
berupa relasi one-to-one antara subkelas dengan superkelasnya.
2.3.2.2. Mapping pada Struktur Asosiasi
Tipe relasi terbagi atas 2 kategori dalam objek relational mapping. Kategori
pertama yaitu berdasarkan banyaknya jumlah maksimum relasi dan terdiri atas 3
tipe, yaitu :
1. Relasi one-to-one
2. Relasi one-to-many
3. Relasi many-to-many
Kategori kedua berdasarkan arah dari relasi yang terdiri atas 2 tipe, yaitu :
1. Relasi satu arah adalah relasi ini terjadi saat sebuah objek mengetahui tentang
objek yang direlasikan dengannya tetapi objek yang lain tidak tahu tentang
objek relasinya.
2. Relasi dua arah adalah relasi ini terjadi saat kedua objek yang berelasi saling
mengetahui satu sama lain.
Relasi dalam skema objek diimplementasikan dengan kombinasi reference
(penunjuk) ke objek dan operasi. Saat relasi dengan jumlah hubungan satu (seperti
0..1 atau 1), hubungan relasi diimplementasikan dengan reference ke sebuah objek
termasuk operasi getter dan setter. Jika relasi dengan jumlah hubungan banyak
(seperti N, 0..*, 1..*) relasi diimplementasikan dengan atribut collection, seperti
array atau hashset, dan operasi untuk memanipulasi adalah array. Jika relasinya
adalah satu arah, kode diimplementasikan hanya oleh objek yang mengetahui
tentang objek lain Sedangkan hubungan dua arah, implementasi dilakukan pada
2.3.2.2.1. Mapping Relasi One-to-One
Relasi one-to-one merupakan relasi ini terjadi jika jumlah maksimum
dari tiap relasi adalah satu. Pada contoh berikut, objek users memiliki satu address
dan objek address memiliki satu users. Relasi one-to-one antar objek dapat
diterjemahkan dalam model data dapat dengan menyatukan semua atribut pada
tabel address ke dalam tabel users atau dapat pula tetap di-mapping-kan per tabel.
Gambar 2.06 Relasi one-to-one
2.3.2.2.2. Mapping Relasi One-to-Many
Relasi one-to-many merupakan relasi ini dikenal juga sebagai relasi
many-to-one. Hal ini terjadi ketika banyaknya maksimum hubungan dari satu relasi
adalah satu dan yang lain lebih besar dari satu. Sebagai contoh, user dapat
memiliki lebih dari satu item atau tidak memiliki item sama sekali. User juga dapat
mengetahui item yang dipesan, namun item tidak mengetahui siapa user yang
memesan. Dalam relasi one-to-many dapat dipresentasikan ke dalam relasional
dengan menambahkan atribut primary key milik tabel user ke dalam tabel item
Gambar 2.07 Relasi one-to-many
2.3.2.2.3. Mapping Relasi Many-to-Many
Relasi many-to-many merupakan relasi ini terjadi ketika jumlah maksimum
dari kedua hubungan dari relasi lebih dari satu. Sebagai contoh, category memiliki
relasi many-to-many dengan item, category dapat memiliki lebih dari satu item
atau tidak memiliki item sama sekali dan item dapat memiliki category lebih dari
satu.
Gambar 2.08 Relasi many-to-many
Dalam relasi many-to-many, model objek tersebut akan diterjemahkan
dalam bentuk model data dalam relasional dengan menambahkan sebuah tabel
bernama category_item yang menghubung antara tabel category dan tabel item. Di
dalam tabel categor_item akan tersimpan primary key dari tabel category dan tabel
Gambar 2.09 Mapping relasi many-to-many dalam model data
2.3.2.2.4. Mapping Relasi Rekursif
Sebuah tabel dikatakan memiliki relasi rekursif jika tabel tersebut berelasi
dengan dirinya sendiri. Sebagai contoh, item memiliki relasi rekursif
many-to-many dengan dirinya sendiri. Relasi tersebut dapat di-mapping-kan ke dalam model
data sesuai dengan konsep relasi asosiasi many-to-many yaitu dengan
menambahkan tabel subteams.
Team Employee
ParentTeamPOD INT24 <<PK>> <<FK>> SubTeamPOD INT24 <<PK>> <<FK>>
Teams
TeamPOD INT24 <<PK>>
Employee
EmployeePOD INT24 <<PK>> ManagerEmployeePOD INT 24 <<FK>> TeamPOD INT 24 <<FK>>
<<Physical Data Model>>
2.4.Ruby on Rails
2.4.1. Arsitektur Ruby on Rails
Arsitektur pada aplikasi rails memiliki tiga komponen utama yaitu model,
view dan controller.
Gambar 2.11 Arsitektur Ruby on Rails
Saat user me-request sebuah halaman web lewat browser, rails controller
(Action Controller) akan menerima request tersebut dan menghubungkan dengan
rails model (Active Record) kemudian mengeksekusi dan mengambil data yang
dibutuhkan dari basisdata menggunakan Active Record tersebut. Setelah semua
data yang dibutuhkan tersedia, rails controller akan menghubungkan data tersebut
dengan railsview. Railsview akan menterjemahkan dalam bentuk HTML, CSS dan
gambar dalam browser user.
Rails model digunakan untuk merepresentasikan basisdata. Saat lapisan
model ini dipanggil, aplikasi rails akan menciptakan model yang digunakan untuk
me-mapping-kan ke dalam tabel basisdata. Sebagai contoh, model bernama user
yang akan me-mapping-kan ke tabel bernama users. Model user akan mengakses
dan delete pada baris-baris dalam tabel users. Rails menggunakan Active Record
untuk membangun lapisan abstraksi basisdata. Active Record dibangun untuk
memanipulasi data dalam basisdata.
Rails controller bertugas untuk menerima request, seperti memproses form
data, meminta informasi dari railsmodel dan mengirim kembali informasi kepada
railsmodel untuk disimpan dalam basisdata serta mengendalikan railsviews untuk
menterjemahkan hasilnya.
Rails view merupakan template yang berisi HTML untuk diterjemahkan
dalam sebuah browser. Rails view digunakan untuk menghasilkan user interface
pada browser. Rails view dapat memberikan fasilitas menginput data bagi user,
namun view tidak mengendalikan masuknya data ke dalam basisdata.
2.4.2. Active Record
Active record merupakan lapisan object-relatinal mapping yang disediakan
oleh Ruby on Rails. Active record akan mengkoneksikan aplikasi ke dalam
basisdata, me-mapping-kan tabel dan memanipulasi data. Active record mengikuti
standar model object-relational mapping yaitu mapping kelas ke table, objek ke
baris dan atribut objek ke kolom.
2.4.2.1. Tabel dan Kelas
Secara default, active record akan membuatkan nama tabel sebagai kata
Gambar 2.12 Perbedaan nama antara kelas dan tabel
Cara men-setting global flag dalam konfigurasi rails (file environment.rb dalam
configuration directory) untuk mengatur nama tabel.
ActiveRecord::Base.pluralize_table_names = false
Rails model digunakan untuk membuat tabel baru dalam basisdata, kemudian
setting nama tabel dalam kelas dengan menggunakan set_table_name.
class Sheep < ActiveRecord::Base
set_table_name "sheep" # bukan "sheeps"
end
class Order < ActiveRecord::Base
set_table_name "ord_rev99_x"
end
2.4.2.2. Kolom dan Atribut
Objek active record akan disamakan dengan baris dalam tabel. Objek
memiliki atribut yang disamakan dengan kolom dalam tabel. Model dapat
me-mapping-kan objek dalam tabel dan atribut objek dalam kolom tabel dengan cara:
class Order < ActiveRecord::Migration
def self.up
create_table :orders do |t|
t.column :name, :string
end
end
def self.down
drop_table :orders
end
end
Hal ini akan serupa dengan SQLquery dalam basisdata
create table orders (
id int not null auto_increment,
name varchar(100) not null,
email varchar(255) not null,
primary key (id)
);
Gambar 2.13 Perbedaan tipe data dalam kelas ruby dan tipe SQL
2.4.2.3.Identifier
2.4.2.3.1. Primary Key
Active record secara default akan men-set atribut primary key dengan
pemanggilan id. Deklarasi set_primary_key akan men-set nama kolom yang
digunakan dalam tabel.
class BadBook < ActiveRecord::Base
set_primary_key "isbn"
Sesuai dengan kode yang diatas, atribut yang akan dipakai sebagai primary key
dalam basisdata adalah isbn.
2.4.2.3.2. Foreign Key
Dua buah tabel yang direlasikan akan memiiki satu tabel relasi yang
mengandung foreign key yang berasal dari primary key kedua tabel tersebut.
Active record akan merepresentasikan sesuai dengan SQL query.
class CreateBooksAndAuthorsBooks < ActiveRecord::Migration
def self.up
create_table :books do |table|
table.column :title, :string, :limit => 255, :null => false
table.column :published_at, :datetime
table.column :isbn, :string, :limit => 13, :unique => true
table.column :page_count, :integer
table.column :price, :float
end
create_table :authors_books, :id => false do |table|
table.column :author_id, :integer, :null => false
table.column :book_id, :integer, :null => false
end
say_with_time 'Adding foreign keys' do
# menambah foreign key reference ke tabel books_authors
execute 'ALTER TABLE authors_books ADD CONSTRAINT
fk_bk_authors FOREIGN KEY ( author_id ) REFERENCES authors(
id ) ON DELETE CASCADE'
execute 'ALTER TABLE authors_books ADD CONSTRAINT
fk_bk_books FOREIGN KEY ( book_id ) REFERENCES books( id ) ON
DELETE CASCADE'
end
def self.down
drop_table :authors_books
drop_table :books
end
end
2.4.2.4.Create, Read, Update dan Delete (CRUD)
2.4.2.4.1. Create
Dalam active record untuk membuat objek baru yang merepresentasikan
baris dalam sebuah tabel adalah dengan memanggil fungsi NamaKelas.new() untuk
membuat objek baru. Fungsi NamaTabel.NamaKolom = "Data atribut" digunakan
untuk mengisi nilai atau data atribut pada kolom dalam database. Dalam active
record dikenal fungsi save() untuk menyimpan data atribut dalam sebuah tabel.
Dengan contoh:
an_order = Order.new
an_order.name = "Dave Thomas"
an_order.email = "[email protected]"
an_order.save
atau dalam bentuk seperti berikut:
an_order = Order.new( :name => "Dave Thomas", :email =>
an_order.save
# INSERT INTO orders ('name', 'email') VALUES ('Dave Thomas',
2.4.2.4.2. Read
Pada pembacaan data dari database, active record menggunakan fungsi
find() untuk menemukan data atribut dalam suatu tabel.
an_order = Order.find( params[ :id ] ) # SELECT id FROM order ;
Fungsi find() dengan penambahan parameter :conditions digunakan untuk
mengkonversikan dalam bentuk klausa where pada SQLstatement.
pos = Order.find(:all, :conditions => ["name = :name and pay_type =
:pay_type", params])
# SELECT * FROM orders WHERE name = '…' AND pay_type = '…'
Dalam fungsi find() dapat ditambahkan parameter :include yang
merepresentasikan nama relasi yang didefinisikan pada model objek dan
menggabungkan tabel-tabel yang berelasi tersebut.
city = 'Boston'
Person.find :all, :include => { :favorites => { :bands =>
{ :location => {} } } }, :conditions => ["locations.city = ?",
city]
Bentuk SQLquery:
SELECT * FROM people
LEFT OUTER JOIN favorites ON people.id=favorites.person_id
LEFT OUTER JOIN bands ON favorites.band_id=bands.id
LEFT OUTER JOIN locations ON bands.location_id=locations.id
WHERE locations.city = `Boston`
Parameter :order dalam fungsi find() digunakan untuk mengurutkan array data
seperti halnya klausa order pada SQLstatement.
Account.find :all, :order => "created_on DESC, last_name "
Sama seperti parameter :order, parameter :group akan menyeleksi himpunan
yang dihitung berdasarkan fungsi spesifik seperti count, avg dan yang lainnya.
Account.find :all, :select => "COUNT(last_name) AS total, *",
:group => "last_name"
# SELECT COUNT(last_name) AS total, * FROM accounts GROUP BY
last_name ;
Klause join pada SQL statement dapat direpresentasikan dalam fungsi find()
menggunakan parameter:joins.
Account.find :all, :joins => "LEFT JOIN visits ON
accounts.id=visits.account"
# SELECT * FROM accounts LEFT JOIN visits ON
accounts.id=visits.account_id
Fungsi find() dapat berisi pembacaan dalam bentuk SQL query. Dalam hal ini,
active record menyediakan fungsi find_by_sql(). Fungsi ini memiliki parameter
berupa pernyataan SQL select dan mengembalikan array dari result set dalam
basisdata.
orders = LineItem.find_by_sql( "select line_items.* from line_items,
orders " + " where order_id = orders.id " + " and orders.name = 'Dave
Thomas' " )
items = LineItem.find_by_sql( "select *, " + " quantity*unit_price as
total_price, " + " products.title as title " + " from line_items,
products " + " where line_items.product_id = products.id " )
2.4.2.4.3. Update
Atribut yang ada dalam objek active record menentukan kolom yang akan
di-update. Active record akan mengubah nilai atribut dan menyimpan sebuah objek
order = Order.find(123)
order.update_attribute(:name, "Barney")
#UPDATE orders SET `name` = 'Barney' WHERE id = 123 ;
Fungsi tersebut dapat dikombinasikan dengan fungsi pembacaan baris dan
peng-update-an dengan menggunakan fungsi update() dan update_all(). Fungsi
update() akan mengambil parameter id dan meng-set atribut-atribut yang ada.
Fungsi tersebut akan mengambil baris, meng-update atribut, menyimpan hasilnya
kembali pada basisdata dan mengembalikan ke objek model.
order = Order.update(123, :name => "Barney", :email =>
Fungsi update_all() akan men-set data secara spesifik dengan menggunakan
klausa set dan where dari pernyataan SQLupdate.
result = Product.update_all("price = 1.1*price", "title like
'%Java%'")
2.4.2.4.4. Delete
Fungsi delete() mengambil parameter id atau array parameter dan
menghapus baris dalam tabel. Fungsi delete_all() akan menghapus baris yang
sesuai dengan kondisi yang diberikan.
Order.delete(123)
User.delete([2,3,4,5])
2.4.2.5. Relasi antar Tabel
Active record mendukung tiga tipe relasi antar tabel: one-to-one,
one-to-many, dan many-to-many. Relasi tersebut diindikasikan pada rails model dengan
fungsi has_one, has_many dan has_and_belongs_to_many.
2.4.2.5.1. Asosiasi One-to-One
Asosiasi one-to-one (relasi one-to-zero-or-one) diimplementasikan
menggunakan foreign key pada satu tabel yang mereferensi dari tabel lainnya.
Gambar 2.14 Relasi asosiasi one-to-one
Dalam active record, pada hubungan relasi akan ditambahkan deklarasi
has_one :invoice pada kelas order dan disaat yang bersamaan, penambahan
belong_to :order pada kelas invoice. Deklarasi has_one() berarti kelas tersebut
memiliki hubungan relasi one-to-one dengan kelas lainnya sedangkan deklarasi
2.4.2.5.2. Asosiasi One-to-Many
Deklarasi has_many() digunakan pada hubungan relasi one-to-many.
Sebagai contoh, order dapat memiliki banyak line_item.
Gambar 2.15 Relasi asosiasi one-to-many
2.4.2.5.3. Asosiasi Many-to-Many
Asosiasi many-to-many dideklarasikan dengan menggunakan
has_and_belong_to_many(). Sebagai contoh, product memiliki banyak categories
dan categories dapat dimiliki oleh banyak product. Relasi kedua kelas tersebut
harus disederhanakan menjadi entitas tersendiri yaitu kelas categories_products
yang memiliki foreign key yang merupakan referensi dari kelas products dan kelas
categories.
2.4.2.6. Transaksi
Transaksi dalam basisdata dapat mengubah satu atau beberapa baris dalam
banyak tabel. Sebuah transaksi harus commit atau tidak commit sama sekali. Bila
tidak commit maka kondisi basisdata harus sama dengan kondisi pada saat
transaksi belum berlangsung. Transaksi akan melakukan update dan jika terjadi
kegagalan maka akan dilakukan operasi rollback.
Dalam active record, model rails menggunakan fungsi transaction()
untuk mengeksekusi blok pernyataan dalam transaksi basisdata. Akhir dari blok
pernyataan tersebut, transaksi akan commit, meng-update basisdata, jika terjadi
kegagalan maka kondisi akan rollback dan basisdata tetap seperti keadaan semula.
Fungsi transaction() didefinisikan dalam fungsi kelas.
class Account < ActiveRecord::Base
def self.transfer(from, to, amount)
transaction(from, to) do
from.withdraw(amount)
to.deposit(amount)
end
end
end
peter = Account.create(:balance => 100, :number => "12345")
paul = Account.create(:balance => 200, :number => "54321")
Account.transfer(peter, paul, 350) rescue puts "Transfer aborted"
puts "Paul has #{paul.balance}"
puts "Peter has #{peter.balance}"
Transfer aborted
Paul has 200.0
2.4.2.7. Agregasi
Pada class Active record dideklarasikan composed_of untuk menciptakan
hubungan agregasi pada objek.
composed_of :attr_name, :class_name => SomeClass, :mapping =>
mapping
Parameter attr_name menspesifikasikan nama atribut yang menjadi komposit
atribut. Parameter :class_name menspesifikasikan nama kelas yang menyimpan
data. Parameter :mapping memiliki dua elemen array, elemen pertama merupakan
mapping dari kolom basisdata sedangkan element kedua mapping pada komposit
atribut dari :class_name.
Gambar 2.17 Relasi agregasi pada tabel
2.4.2.8. Pewarisan
Dalam basisdata relasional tidak mengenal konsep pewarisan. Untuk itu
diperlukan mapping penyimpanan data dari object-oriented ke dalam basisdata
relasional. Active Record hanya mendukung konsep pewarisan dengan
mengunakan strategi single-table inheritance. Hirarki pewarisan objek model
didefinikan dalam rails dibentuk sebagai berikut:
class Person < ActiveRecord::Base
end
class Customer < Person
end
class Employee < Person
end
class Manager < Employee
end
Pendeklarasian objek model tersebut dapat diterjemahkan dalam diagram kelas dan
dalam bentuk tabel.
3.1 Analisis Sistem
Analisis sistem merupakan teknik penyelesaian masalah yang membagi
sistem ke dalam bagian komponen sistem dengan tujuan agar
bagian-bagian dari komponen tersebut dapat bekerja dan berinteraksi dengan baik untuk
melengkapi tujuan sistem.
Gambaran Umum Sistem
Gambaran umun sistem yang dibuat merupakan sistem informasi skripsi
Program Studi Teknik Informatika Universitas Sanata Dharma. Sistem informasi
skripsi adalah sistem informasi yang digunakan untuk mengelola data skripsi
mahasiswa Teknik Informatika dalam bentuk file. Pengelolaan data skripsi dalam
bentuk file ini berguna untuk mempermudah pembelajaran skripsi dalam
lingkungan Fakultas Teknik Informatika.
Sistem informasi skripsi diakses oleh mahasiswa dan dosen Program Studi
Teknik Informatika Universitas Sanata Dharma. Mahasiswa dan dosen merupakan
pengguna sistem yang telah memiliki akun dalam basis data. Akun untuk
mahasiswa dan dosen telah diatur oleh karyawan sebagai pengelola sistem.
Mahasiswa dan dosen yang sudah memiliki akun dapat mengakses
fasilitas-fasilitas dalam web skripsi setelah melakukan login terlebih dahulu.
Gambaran umum sistem aktor mahasiswa sebagai pengguna sistem:
1. Sebelum mahasiswa melakukan aktifitas yang akan dijalankan sistem,
mahasiswa harus memasukkan username dan password dengan default Nomor
Induk Mahasiswa sebagai validasi pengguna. Jika username dan password
mahasiswa telah tersimpan dalam basis data maka sistem akan menampilkan
fasilitas-fasilitas yang dimiliki oleh mahasiswa dalam sistem informasi skripsi.
2. Mahasiswa dapat mengakses informasi daftar skripsi terbaru dan
informasi-informasi terbaru Teknik Informatika yang berkaitan dengan skripsi
mahasiswa seperti jadwal ujian PraTGA dan TGA maupun jadwal yudisium
sarjana.
3. Mahasiswa yang telah menempuh mata kuliah sebanyak 116 sks dapat
mendaftarkan judul skripsi yang akan diajukan dalam mata kuliah PraTGA.
Proses pendaftaran dilakukan dengan memasukan judul skripsi yang akan
dibuat, abstraksi skripsi yang akan dibuat, teknologi permrograman dan
database yang digunakan dalam pembuatan skripsi serta nama dosen
pembimbing skripsi. Jika skripsi yang diajukan diterima maka mahasiswa
dapat melanjutkan pengerjaan skripsi hingga lulus mata kuliah TGA. Namun
jika skripsi yang diajukan ditolak maka mahasiswa dapat mengajukan judul
skripsi yang berbeda dengan melakukan proses pendaftaran skripsi kembali.
4. Bagi mahasiswa yang telah yudisium sarjana dapat mendaftarkan kembali
skripsi yang telah diajukan dengan menyertakan file skripsi berupa file PDF
5. Mahasiswa dapat melakukan pencarian data-data skripsi yang telah tersimpan
dalam basis data. Pencarian skripsi dapat dilakukan dengan memilih jenis
kategori skripsi yang akan dicari. Kategori pencarian skripsi terdiri dari judul
skripsi, Nomor Induk Mahasiswa, kategori skripsi, teknologi pemrograman
dan teknologi database. Jika data pencarian yang dimaksud oleh mahasiswa
ditemukan, maka akan muncul daftar judul-judul skripsi yang sesuai dengan
masukan data. Jika pencarian tidak ditemukan maka sistem akan menampilkan
pesan bahwa data skripsi yang dicari tidak ditemukan.
6. Mahasiswa memiliki kebutuhan untuk men-download file skripsi yang
tersedia sebagai bahan pembelajaran skripsi maka sistem menyediakan
fasilitas download skripsi dalam bentuk file PDF.
Gambaran umum sistem aktor dosen sebagai pengguna sistem :
1. Hal yang sama akan dilakukan oleh dosen sebagai pengguna sistem adalah
memasukkan username dan password dengan default Nomor Induk Dosen
sebagai validasi pengguna. Jika validasi pengguna berhasil maka sistem akan
menampilkan fasilitas-fasilitas yang telah tersedia bagi dosen.
2. Kebutuhan informasi mengenai skripsi-skripsi terbaru serta
informasi-informasi lain Teknik Informatika juga dapat diperoleh dosen sebagai
pengguna sistem informasi skripsi.
3. Dosen dapat melakukan kebutuhan pencarian skripsi dalam sistem dengan
memilih berdasarkan kategori pencarian yang tersedia antara lain judul skripsi,