17
BAB III
PERANCANGAN SISTEM
Pada bab ini, akan dijelaskan tentang perancangan perangkat keras sistem yang
telah dibuat.
3.1 Gambaran Sistem
Berikut merupakan blok diagram dari alat yang telah dibuat :
Gambar 3.1 Diagram Blok Sistem Utama
18
Gambar 3.1 Diagram Blok Sistem Utama di atas adalah sistem keseluruhan yang
akan dibuat. Baik dari sisi server yang akan mengolah data yang kemudian akan disimpan
pada database dan dari sisi user yang akan mengambil data berupa Tag RFID dan Tag
NFC yang kemudian akan dikirim oleh Arduino melalui Ethernet dan Router menuju ke
Server.
Kartu Tanda Mahasiswa berfungsi sebagai kartu RFID Tag. Didalam kartu
tersebut terdapat chip RFID beserta antenna. Semua Kartu Tanda Mahasiswa yang
digunakan User sebelumnya telah terlebih dahulu tersimpan data token unik setiap kartu.
Didalam database sudah tersimpan pula data user sesuai Kartu Tanda Mahasiswa yang
telah di input secara manual oleh admin sebelum dibagikan. Data – data yang dapat dilihat
oleh database melalui kartu tanda mahasiswa seperti nama, email, password, dan waktu
penggunaan.
Berdasarkan Diagram Blok Sistem Utama, kontroler utama atau mikrokontroler
dari alat sistem peminjaman ruangan menggunakan Arduino mega 2560. Alat ini juga
menggunakan sebuah Power Supply sebagai sumber tegangan agar sistem bekerja. Power
Supply yang digunakan memeiliki 2 buah tegangan, tegangan 12V dan 5V. Penggunaan
teganggan 5V dikhususkan untuk masukan pada Arduino Mega 2560. Dan 12V
diperuntukan untuk mekanisme penguncian ruangan solenoid dan fan pendingin untuk
kotak modul yang akan menyala terus didepan ruangan.
Didalam Modul utama (Module RFID) memiliki beberapa module masukan,
Seperti NFC PN532, Ethernet ENC28J60, LCD karakter 20×4, Real Time Clock, Push
Button, dan Power Supply. Untuk mengirimkan signal perintah pada sistem penguncian
yang berada pada pintu setiap ruangan yang telah terdaftar. Menggunakan kabel yang
terhubung dari Modul RFID. Modul pengunci terdiri dari beberapa modul seperti
Solenoid Door Lock, Buzzer, dan Push Button.
Semua sistem peminjaman ruangan tercatat pada database, pengiriman data dari
kontroler menggunakan Ethernet yang tersambung pada Router. Router sebagai jembatan
yang mengirimkan data dan juga mengirim data Modul RFID. Server sebagai pengolah
data yang nanti tersimpan pada database, terdiri dari beberapa bagian. Perancangan
perangkat lunak server seperti Laravel, dan Xampp.
19
3.1.1 Registrasi Kartu
Pada setiap kartu memiliki ID unik yang sebelumnya sudah tersimpan pada
database. Level user dapat diatur pada setiap kartu yang akan digunakan pada modul.
Sehingga kartu yang akan digunakan hanya kartu RFID yang sudah diregistrasi
sebelumnya pada database.
Gambar 3.2 Flowchart Input Data User
3.1.2 Level Authority
Algoritma pada tugas akhiri ini memiliki fiture yang bisa melakukan pemesanan
atau penjadwalan Ruangan berdasarkan authority pengguna ID Card. Authority terbagi
menjadi 2 level, Admin dan User setiap level memiliki fungsi penggunaan ruangan yang
berbeda. Level-level tersebut dibedakan oleh setiap permission yang dimiliki.
20
3.1.3 Pembuatan dan Perubahan Jadwal
Satu user dapat memesan lebih dari satu jadwal asalkan memenuhi syarat bahwa
ruangan belum dipesan oleh user lain pada waktu yang sama dan waktu penggunan sudah
berjalan. Jika pengguna mengadakan pertemuan secara mendadak dan belum mendaftar
sebaiknya melihat jadwal terlebih dahulu agar tidak terjadi bentrok jadwal dengan user
lain yang sudah meminjam terlebih dahulu.
Gambar 3.3 Flowchart Sistem Pembuatan dan Perubahan Jadwal
21
User memiliki menu yang berbeda dengan menu yang dimiliki oleh admin. Menu
tersebut akan ditampilkan pada halaman web server peminjaman ruangan. Ini
dimaksudkan agar penggunaan ruangan bisa lebih tertata dan sesuai dengan hak
peminjaman yang sudah disediakan oleh sistem.
Jadwal peminjaman ruangan yang terdaftar dapat dilihat pada Schedule yang akan
menampilkan semua data peminjaman. Seperti User Id, Nama Peminjam, Waktu awal
Peminjaman, Waktu akhir Peminjaman, Tanggal penggunaan, dan Ruangan yang akan
digunakan.
Gambar 3.4 Flowchart Booking
22
Dalam sistem ini juga disediakan proses update booking ruangan. menu tersebut
terdapat pada menu bar yang ada pada web server. Jika login sukses, tampilan berpindah
menjadi tampilan jadwal reservasi. Dari jadwal inilah pengguna data memilih jadwal
yang ingin dirubah menjadi jadwal yang belum dipilih atau dapat membatalkan
peminjaman yang sebelumnya sudah dipilih.
Gambar 3.5 Flowchart Schedule
23
3.1.4 Penggunaan Ruangan
Fungsi dari access adalah untuk masuk kedalam ruangan saat tiba waktu
penggunaan. Access dilakukan dengan menempelkan karut tanda mahasiswa pada modul
RFID yang berada pada luar ruangan. Jika sukses maka solenoid door lock akan terbuka,
pintu dapat terbuka dan pengguna dapat masuk kedalam ruangan.
Gambar 3.6 Flowchart Access
Perintah pada modul untuk membuka pengunci ruangan dari luar hanya bisa
dilakukan oleh kartu tanda mahasiswa yang telah memesan ruangan. Bila ada keperluan
pembukaan pintu di sela sela waktu penggunaan selain dari kartu peminjam juga dapat
dilakukan dari dalam ruangan menggunakan push button yang berada pada modul
pengunci. Lama penggunaan sesuai dengan jadwal yang telah diambil oleh user sewaktu
memilih ruangan yang akan digunakan.
24
Bila waktu peminjaman akan berakhir yaitu kurang dari 5 menit, alarm dari buzzer
akan berbunyi untuk mengingatkan waktu akan berakhir. Alarm tersebut sekaligus
perintah untuk pengguna ruangan segera meninggalkan ruangan yang telah digunakan.
Setelah waktu melewati jadwal yang telah dipilih, solenoid door lock akan terkunci
kembali.
3.2 Perancangan User
Pada bagaian ini akan membahas perancangan bagian user yang terdiri dari
perancangan perangkat keras user, dan perancangan perangkat lunak user.
3.2.1 Perangkat Keras User
Pada perancangan perangkat keras user terbagi menjadi dua yaitu perancangan
pengambilan data pada Kartu Tanda Mahasiswa dan perancangan pemakaian ruangan.
3.2.1.1 Perangkat Keras Pengambilan data KTM
Pada bagian ini akan dibahas bagian-bagian perangkat keras user pada sistem
pengambilan data Kartu Tanda Mahasiswa. Seperti Arduino Mega 2560, NFC PN532,
dan Kartu Tanda Mahasiswa.
Gambar 3.7 Perangkat Keras Pengambilan data Kartu Tanda mahasiswa
25
3.2.1.1.1 Arduino Mega 2560
Untuk menggunakan Arduino sebagai kontroler agar NFC PN532 bertindak
sebagai RFID pembaca dan mengirim data kartu pada server menggunakan router untuk
diolah. Pertama perlu membuat kooding sistem untuk mengambil data pada Tag RFID
dan mendeklarasikan RFID reader yang sudah terdapat pada library . Pengambilan data
dapat dilihat pada serial monitor.
3.2.1.1.2 Kartu Tanda Mahasiwa
Kartu Tanda Mahasiswa sebagai kunci untuk memesan dan membuka pengunci
yang terpasang pada pintu yang terdapat pada setiap ruangan yang terdaftar. KTM juga
berfungsi sebagai Tag RFID pasif yang menerima pancaran sinyal yang dikirimkan oleh
reader. Pada mikrokontroler harus membuat sistem pembacaan Tag RFID yang berupa
koding input byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
Gambar 3.8 Tampilan Serial Kartu Tanda Mahasiswa terbaca
Dibagian dalam kartu tanda mahasiswa terdapat sirkuit yang dapat berkomunikasi
frekuensi 13,56 MHz (Half Frekuensi). Standar ISO yang digunakan ISO 14443A yang
digunakan khusus untuk RFID yang oprasionalnya untuk sirkuit yang terdapat pada kartu.
26
3.2.1.1.3 NFC PN532
Pada tugas akhir ini modul NFC yang digunakan adalah PN532 NFC RFID versi
3. Modul ini memiliki tiga komunikasi yaitu HSU, I2C dan SPI. Pada skripsi ini
komunikasi yang digunakan adalah HSU yang merupakan komunikasi default. Pin SCL
pada modul ini dihubungkan dengan pin TX sedangkan pin SDA pada modul
dihubungkan dengan pin RX pada Arduino.
Selanjutnya, ditambahkan pustaka ke dalam program utama N532_HSU.h dan
juga PN532.h lalu NfcAdapter.h. Kemudian, dilakukan deklarasi PN532_HSU
pn532hsu(Serial1) dan NfcAdapter nfc = NfcAdapter(pn532hsu)
Selanjutnya akan diambil ID dari Tag tersebut. Jika Tag Tersebut memiliki NDEF
(NFC Data Exchange Format) messages maka selanjutnya akan diambil record 0 yang
kemudian diambil payload length untuk mendapatkan payload. Setelah payload didapat
selanjutnya payload tersebut diubah kedalam bentuk String.
3.2.1.1.4 Ethernet ENC28J60
Ethernet Shield digunakan untuk menghubungkan Arduino ke jaringan. Yang
perlu dilakukan hanyalah memasang Ethernet Shield ke bagian pin Arduino dengan cara
menumpuknya di atas Ardunio. Kemudian hubungkan kabel LAN ke Ethernet Shield dan
Router, selanjutnya Arduino sudah terhubung dengan jaringan.
3.2.1.1.5 Router
Penggunaan Router pada tugas akhir ini adalah sebagai jembatan antara modul
perangkat keras RFID, yaitu Arduino yang terpasang Ethernet dengan jaringan komputer
server. Kabel LAN pada Router diperoleh dari Ethernet Shield yang ditumpuk dengan
Arduino.
Router digunakan untuk membagi atau mendistribusikan IP address, ke semua
device (komputer atau smartphone) yang terhubung ke router dengan menggunakan LAN.
27
3.2.1.2 Perancangan Peminjaman dan Pemakaian Ruangan
Pada bagian ini akan dibahas bagian-bagian perangkat keras user pada sistem
peminjaman dan pemakaian ruangan. Dan modul apa saja yang digunakan pada perangkat
keras peminjaman dan pemakaian ruangan.
Gambar 3.9 Perancangan Peminjaman dan Pemakaian Ruangan
3.2.1.2.1 Perancangan Peminjaman
Peminjaman hanya bisa dilakukan oleh user yang memiliki Kartu Tanda
Mahasiswa yang telah terdaftar pada databse. Perangkat yang digunakan adalah device
yang disiapkan sendiri oleh user.
3.2.1.2.1.1 Device
Device adalah alat yang digunakan untuk memesan ruangan. Dengan cara masuk
kedalahm halaman server atau locahost. Syarat device harus terhubung dengan koneksi
nirkabel Wifi yang sudah dipancarkan dari Router yang terhubung pada modul RFID.
28
Pemesanan ruangan dapat dilakukan langsung pada halaman web dengan
menggunakan device yang sudah disiapkan sendiri, set point wifi berada disekitar ruangan
yang sudah terdaftar pada database.
3.2.1.2.2 Pemakaian Ruangan
Pemakaian ruangan dilakukan pada ruangan yang sudah terdaftar pada database,
dan ruangan-ruangan tersebut memiliki sistem keamanan yang sudah dilengkapi
pengunci berupa solenoid door lock.
3.2.1.2.2.1 Solenoid Door Lock
Solenoid Door Lock digunakan untuk sistem pengunci ruangan. Pemasangan
solenoid dilakukan pada bagian dalam ruangan yang berhimpitan langsung pada pintu,
dan menjadi satu dalam modul pengunci pada pintu.
Sebelum terhubung pada pin Arduino, solenoid terhubung pada relay 5V. Relay
tersebut menerima masukan dari power supply untuk ke solenoid sebesar 12V.
selanjutnya pin Vin dari relay yang mendapat masukan dari pin Arduino.
3.2.1.2.2.2 LCD
LCD yang digunakan pada skripsi ini adalah LCD karakter 20×4 yang
dihubungkan dengan Arduino menggunakan modul I2C yang selanjutnya dapat langsung
disambungkan dengan pin I2C milik Arduino.
Pada penggunaan LCD, menggunakan I2C yang terlebih dahulu ditambahkan
pustaka “LiquidCrystal_I2C.h” dan “Wire.h” pada program utama. Seperti
pada Library yang seperti disebutkan tadi selanjutnya dibuat deklarasi alamat I2C LCD
dan ukuran dari LCD yang digunakan, dengan cara menambahkan
LiquidCrystal_I2C lcd(0×27,20,4). 0×27 merupakan alamat I2C.
LCD digunakan untuk memberikan informasi kepada user saat akan
menggunakan ruangan pertemuan yang sebelumnya sudah di pesan. Display akan
menunjukan ruangan yang sudah tepesaan saat terbuka.
29
3.2.1.2.2.3 Real Time Clock
Untuk RTC pada Arduino juga menggunakan DS3231, yang dihubungkan pada
pin I2C milik Arduino, untuk dapat menggunakan RTC tersebut perlu ditambahkan
pustaka RTClib.h dan Wire.h pada program utama.
RTC digunakan untuk penghitungan waktu peminjaman, bila waktu kurang dari
5 menit RTC memberi signal informasi kepada Arduino dan akan diteruskan pada Buzzer
yang berada pada ruangan dengan peminjaman waktu yang tinggal 5 menit.
3.2.1.2.2.4 Buzzer
Buzzer digunakan untuk memberitahu user jika waktu peminjaman ruangan akan
segera berakhir. Untuk mengunakan Buzzer pertama, dideklarasikan pin yang akan
digunakan Buzzer. Pada skripsi ini Buzzer dideklarasikan pada pin “A12 dan A13” ,
kemudian diatur pin tersebut sebagai mode keluaran dengan cara “pinMode(buzzer,
OUTPUT);”. Setelah itu, Buzzer dapat diaktifkan dan dimasukkan
Kode 3.1 Menghidupkan dan Mematikan Buzzer
3.2.2 Perangkat Lunak User
Pada bagian ini akan dibahas bagian-bagian yang berperan dalam perangkat lunak
user, pada penginputan data dan penggunaan ruangan.
Gambar 3.10 Tampilan Home pada Device User
digitalWrite(buzzer, HIGH);
digitalWrite(buzzer, LOW);
30
3.2.2.1 Perangkat Lunak Penginputan data User
Pada bagian ini akan membahas perangkat lunak penginputan data user meliputi
membaca data pada NFC PN532, dan pengiriman data ke server dalam bentuk JSON.
Digunakan oleh Admin untuk memasukkan dan menyimpan byte sirkuit Kartu Tanda
Mahasiswa pada database.
NFC PN532 digunakan sebagai pembaca data pada kartu tanda mahasiswa.
Setelah Arduino mendapatkan data unik RFID kartu, data dirubah dalam bentuk JSON
agar memudahkan pembacaan. Namun, terlebih dahulu ditambahkan pustaka dengan cara
import JSON dan menuliskan kode seperti berikut.
DynamicJsonBuffer jsonBuffer(200);
JsonObject& root = jsonBuffer.createObject();
url = ‘http://localhost/api/users’
“data” : {
root["name"] = name;
root["email"] = email;
root["password"] = password;
root["idRfid"] = idRFID;
},
headers = {'Content-type': 'application/JSON'}
authorization=‘Bearer
$2y$10$0V2y3WqfLhrbk0zcFgRPFOPxvcw5TFgERYNPcfVtmfN.JFkD8ISlC’)
req.status_code
Kode 3.2 Kode untuk mengakses RFID menggunakan NFC PN532
31
Setelah membuat perintah seperti pada kode diatas, fungsi kode tersebut untuk
merubah data ke dalam bentuk JSON untuk melakukan request dengan method post
headers.
Gambar 3.11 Tampilan Serial data user berhasil di input pada database
3.2.2.2 Perangkat Lunak Penggunaan Ruangan
Sistem penggunaan ruangan dirancang sama menggunakan Kartu Tanda
Mahasiswa yang di baca oleh NFC PN532, dan mengirim data JSON untuk diolah pada
database server dan meminta respon yang akan digunakan untuk mengerakan solenoid.
Dan untuk dikembalikan menjadi signal yang akan menggerakkan mekanik penguncian
pintu ruangan yang telah terpasang sistem.
DynamicJsonBuffer jsonBuffer(200);
JsonObject& root = jsonBuffer.createObject();
root["idRfid"] = idRFID;
Kode 3.3 Kode pustaka untuk merubah data menjadi format JSON
Perbedaan perintah dengan penginputan data user terletak pada request server
dikarenakan kontroler memerlukan respon balik dari server untuk dapat meneruskan
perintah pada solenoid ldoor lock.
32
bool readReponseOpenLockDoor(struct Reservation*
reservation) { DynamicJsonBuffer jsonBuffer(1000);
JsonObject& root = jsonBuffer.parseObject(client); if
(!root.success()) {
Serial.println("Error");
root.prettyPrintTo(Serial);
for(int i=0; i<1000; i++){
if(client.available()){
char c = client.read();
Kode 3.4 Kode pembacaan data user yang tersimpan
Serta kode pengaturan pada kontroler untuk mekanik pengunci pintu ruangan.
Mendapat masukan dari respon server untuk membuka dan menutup pengunci pada
sistem peminjaman, apabila data peminjaman tersedia.
if(readRFID() && connectServer() && openLockDoor() &&
skipResponseHeaders())
Serial.println("POST open lock door");
Reservation reservation;
readReponseOpenLockDoor(&reservation);
openTheDoor(&reservation);
void openTheDoor(const struct Reservation* reservation)
if(strcmp(reservation->resultCode, "00") == 0){
flagSuccess = true;
Kode 3.5 Kode perintah membuka pengunci pintu
33
3.3 Perancangan Server
Pada bagian ini dibahas perancangan bagian server yaitu perancangan perangkat
lunak server seperti Laravel, Xampp, dan Database.
3.3.1 Laravel
Untuk mengelola dependency, Laravel membutuhkan composer. Sebelumnya
dipastikan terlebih dahulu apakah sistem operasi yang digunakan sudah memiliki
composer. Jika belum memiliki composer, maka bisa mengunduh composer pada link
getcomposer yang banyak terdapat di internet.
Setelah composer berhasil dipasang, maka melalui command line interface (CLI),
versi composer dapat dicek dengan mengetik composer. Setelah berhasil memasang
composer dapat dibuat sebuah proyek baru dengan mengetikan composer create-
project laravel/laravel NamaProyek.
Proses pembuatan proyek berhasil, dapat dijalankan proyek Laravel dengan
jalankan CLI pada folder proyek dengan menuliskan php artisan serve. Setelah
itu akan tampil proyek yang akan dibuat berjalan pada localhost yang secara umum pada
http://localhost/.
Gambar 3.12 Struktur Laravel
34
Gambar diatas adalah struktur Laravel yang digunakan dalam sistem peminjaman
ruangan. Terdapat beberapa folder dalam struktur Laravel dangan berbagai fungsi.
App folder ini berisikan kode inti aplikasi peminjamn ruangan.
Bootstrap folder ini berisi script bootstrap aplikasi
Config folder ini berisikan file konfigurasi dari aplikasi
Database folder ini berisikan migrasi database dan pembenihan database
Public folder ini berisikan aset aplikasi seperti JavaScript, CSS, Images, dan
lainnya
Resources folder ini berisikan file seperti localization and language file dan
template yang diterjemahkan kedalam HTML
Routes folder ini berisikan file yang akan mengarahkan route API
Storage folder ini berisi penyimpanan App, seperti file upload, Framework
storage (cache), dan log yang dihasilkan aplikasi
Test folder ini berisikan macam-macam test cases
Vendor folder ini berisikan dependency composer.
Pada proyek Laravel terdapat file .env yang berisikan file sensitif seperti username
dan password database. File ini dapat diatur untuk diabaikan pada saat mempublikasikan
proyek.
Untuk membuat tabel migrasi, dapat dibuat dengan mengetikan php artisan
migrate:install. Setelah itu, bisa dibuat tabel yang akan dibuat sebagai migrasi
dengan mengetikan php artisan migrate:make create_produk_table.
Setelah berhasil membuat tabel akan didapatkan sebuah file
2014_10_12_000000_create_users_table.php seperti kode 3.18, dalam file
tersebut memiliki dua method up() dan down(). Method up() berfungsi untuk membuat
tabel, jika saat pembuatan tabel terjadi kesalahan maka method down() akan dipanggil
untuk melakukan rolling back. Pada fungsi up() pembuatan tabel sudah berdasarkan
ORM(Object Relational Mapper) dimana hanya perlu didefinisikan atau dipetakannya
saja. Ini sangat membantu dalam hal pembuatan CRUD (Create Read Update Delete)
karena tidak perlu banyak berkonsentrasi pada query saat berinteraksi dengan database
35
class CreateUsersTable extends Migration
{
public function up()
{
Schema::create('users', function (Blueprint
$table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
Kode 3.6. Kode Migrasi Tabel
Setelah file untuk membuat tabel yang diinginkan selesai. Migrasi tabel dapat
dilakukan dengan cara mengetikan php artisan migrate.
Jika tabel berhasil melakukan migrasi, selanjutnya dapat dibuat file model.
Didalam konteks MVC model merupakan class yang mewakili berbagai jenis interaksi
data. Data yang dimaksud bisa dalam bentuk informasi dalam database seperti nama dari
idRFID, ruangan yang digunakan dan lain sebagainya. Untuk mewakili informasi ini,
akan digunakan model untuk mewakili data yang tersimpan di database. Untuk membuat
model dengan cara cepat cukup dengan mengetikan php artisan make:model
User.
36
Gambar 3.13 Model User
class User extends Authenticatable
use Notifiable, HasRoles;
protected $fillable = [
'name', 'email', 'password', 'api_token' , 'id_rfid'
];
public function reservations()
{
return $this->hasMany(Reservation::class, 'id_user');
}
Kode 3.7 Kode Model
Pada kode 3.7 merupakan model user yang mewakili nama, email, password,
api_token, dan id_rfid yang tersimpan pada tabel user. Di model juga dapat dibuat relasi
antar tabel seperti terlihat pada kode. return $this-
>hasMany(Reservation::class, 'id_user'); hasMany berarti ‘id_user’
sebagai foreignkey yang berarti pada satu user memiliki banyak Produk. Jadi, jika ingin
menghubungkan atau membuat relasi antara tabel kategori dan produk maka harus
menulis hal tersebut di Model produk dan kategori.
37
Selanjutnya, akan dibuat file controller. Didalam MVC Controller adalah wadah
untuk metode atau fungsi yang mengandung logika aplikasi yang terkait dengan model
atau domain. Untuk membuat sebuah controller di Laravel cukup mengetikan php
artisan make:controller UserController . Setelah itu, akan didapatkan
file UserController.php yang terdapat pada App/Http/Controllers/UserController.php dan
di dalamnya terdapat Kelas ProdukController sepeti gambar 3.
Gambar 3.14 UserController
Setelah dibuat rute untuk mengarahkan kepada controller, selanjutnya dapat
dicoba melalui browser untuk method get pada route dengan mengetikan localhost: /user/
setelah itu akan keluar popup karena Basic Authentication dapat digunakan. Untuk
menguji API yang lainnya, dapat digunakan postman ataupun restclient yang bisa
didapatkan melalui extensions browser. Dengan cara menambahkan header berupa
Content-Type dan Accept dengan nilainya adalah application/JSON dan Authorization
menggunakan Basic Authentication.
38
3.3.2 Database
Pada bagian ini merupakan bagian perancangan tabel database yang akan
diterapkan pada DBMS mySql. Terlihat bahwa satu user dapat meminjam banyak ruang
dan satu user hanya memiliki satu peran. Satu peran memiliki banyak izin, setiap peran
memiliki izin yang berbeda beda. Bisa diartikan bahwa seorang user memiliki banyak
izin tergantung dengan perannya masing-masing. Id setiap user dibuat unik, agar tidak
terjadi salah penggunaan. Serta dapat juga dipastikan aktivitas yang dilakukan setiap
user. Semua data tersimpan di database yang sudah tersedia.
Gambar 3.15 ERD Pemesanan Ruangan