• Tidak ada hasil yang ditemukan

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 - USD Repository

N/A
N/A
Protected

Academic year: 2019

Membagikan "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 - USD Repository"

Copied!
249
0
0

Teks penuh

(1)

(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

(2)
(3)

(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

(4)
(5)
(6)

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

(7)

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

(8)

Yesus Kristus, Tuhan dan juru selamatku.

...

Ibuku tercinta.

Pak’de dan Bu’de terkasih

...

Seseorang yang selalu mencintaiku.

(9)

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.

(10)

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.

(11)

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.

(12)

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.

(13)

memiliki harapan yang sangat besar, semoga skripsi ini dapat bermanfaat bagi

pembaca dan perkembangan ilmu pengetahuan.

Yogyakarta, 14 Maret 2010

Penulis

Puput Pradhika

(14)

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

(15)

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

(16)

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

(17)

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

(18)

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

(19)

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

(20)

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

(21)

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

(22)

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

(23)

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

(24)

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

(25)

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

(26)

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

(27)

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

(28)
(29)

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

(30)

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

(31)

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

(32)

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.

(33)

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,

(34)

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

(35)

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

(36)

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

(37)

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

(38)

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

(39)

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:

(40)

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

(41)

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

(42)

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.

(43)

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

(44)

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

(45)

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

(46)

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>>

(47)

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

(48)

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

(49)

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

(50)

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"

(51)

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'

(52)

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 =>

"[email protected]")

an_order.save

# INSERT INTO orders ('name', 'email') VALUES ('Dave Thomas',

(53)

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 "

(54)

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

(55)

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 =>

"[email protected]")

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])

(56)

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

(57)

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.

(58)

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

(59)

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

(60)

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.

(61)

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.

(62)

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

(63)

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,

Gambar

Gambar 2.01 Impedance Mismatch antara objek dan tabel
Gambar 2.02 Mapping antara objek dan tabel
Gambar 2.03 Mapping hirarki kelas ke dalam tabel tunggal
Gambar 2.04 Mapping subkelas ke dalam tabel
+7

Referensi

Dokumen terkait

dilarapkeun dina pangajaran nulis, salasahijina nya éta Cooperative Integrated Reading and Composition (CIRC). Modél pangajaran CIRC sorangan bisa kagolong kana

(2) Dalam kedudukannya sebagai subjek hukum sebagaimana dimaksud dalam ayat (1), masyarakat adat di Kabupaten Malinau memiliki kewenangan untuk melakukan perbuatan-perbuatan

Untuk mengetahui pengaruh bauran pemasaran terhadap minat beli pada shampoo Sariayu Hijab terhadap mahasiswi berjilbab di FEBI UIN Raden Fatah, maka penulis menyebarkan

1) Kinerja (Performance) berkaitan dengan aspek fungsional suatu barang dan merupakan karakteristik utama yang dipertimbangkan pelanggan dalam membeli barang.

Rerata-rata nilai capaian per standar program studi non kependidikan, sebagian besar (7 standar) nilai Baik, sebagian kecil (2 standar) masih Lebih dari Cukup, dan 1

Jadi dari segi transferabilitas dan aksesibilitas transportasi dan komunikasi sampai akomodasi (karena banyak hotel mulai dari yang berbintang sampai melati terdapat di kota

Setelah dilakukan pemodelan ARIMA dan pemilihan model terbaik ARIMA dari masing-masing saham, langkah selanjutnya adalah melakukan pemeriksaan terhadap residual

adanya tindakan kecurangan yang dilakukan oleh pedagang dengan tujuan untuk.. mendapatkan laba yang lebih sehingga secara tidak sadar pembeli dirugikan