Indah Dwi Mumpuni, S.Kom, MM
Salah satu tujuan penerapan Sistem Basis Data adalah menyediakan pengguna suatu pandangan abstrak dari data, secara nyata dan sederhana yakni sistem menyembunyikan rincian bagaimana data disimpan dan dipelihara (pengguna tidak dipusingkan dengan rumitnya sistem dalam mengelola data) Pengguna Sistem Basis Data secara umum adalah awam di bidang komputer, oleh karena itu pengembang seharusnya menyembunyikan kompleksitas sistem dari pengguna dengan meyediakan beberapa peringkat abstaksi data three schema Architecture
USER EXTERNAL LEVEL External View External View CONCEPTUAL LEVEL Pandangan Konseptual/Logika INTERNAL LEVEL Pemetaan Secara Internal/ Phisik DATABASE
External Level / Tingkat Pengguna/Pandangan Pada peringkat ini meyederhanakan interaksi pengguna dengan sistem berupa antarmuka pengguna grafis (GUI-Graphical User Interface) pada perangkat lunak aplikasi sistem basis data. Conceptual Level / Tingkat Konsep Abstraksi yang mendiskripsikan secara menyeluruh tampilan komunitas dari basis data meliputi entity, atribut dan bagaimana hubungan relasi antar data/table yang terjadi. Internal Level / Tingkat Fisik Abstraksi yang mendiskripsikan struktur penyimpanan basis data secara fisik pada system komputer dan organisasi file yang digunakan dalam menyimpan danmengakses basis data.
Tingkat Pandangan Banyak pemakai yang tidak berurusan dengan semua informasi yang disimpan dalam basis data Kebanyakan pemakai hanya memerlukan sebagian informasi yang ada dalam basis data Tingkat Pandangan (view) memdefinisikan suatu bagian untuk suatu kelompok tertentu Sistem dapat menyediakan pandangan berbeda pada basis data yang sama
Tingkat Konseptual Tingkat Konseptual mendeskripsikan data apa yang sesungguhya disimpan dan keterhungan antar data (data relationships) yang ada dalam basis data Seluruh basis data dinyatakan dengan sejumlah struktur yang sederhana (mudah dipahami) Tingkat konseptual menyatakan Entitas, atribut dan terhubungannya Konstrain (batasan) terhadap data Informasi keamanan dan integritas data
Tingkat Fisik Tingkat fisik mendeskripsikan cara penyimpanan fisik data secara rinci (komplek) Tingkat ini mencakup implementasi fisik basis data untuk memperoleh kinerja dan utilisasi ruang penyimpanan yang optimal Tingkat fisik ini berurusan dengan Alokasi ruang penyimpanan Deskripsi rekord untuk kebutuhan penyimpanan (ukuran simpanan untuk tiap item data) Teknik-teknik kompresi dan enkripsi data
Sasaran utama arsitektur 3 tingkat adalah Ketidakbergantungan Data pada setiap levelnya Ketidatbergantungan Data merupakan kemampuan memodifikasi skema di satu tingkat, dengan tidak mempengaruhi definisi skema di tingkat lainnya. Ketidakbergantungan Data dapat dipandang sebagai; Ketidakbergantungan secara logik (logical data independence) perubahan skema konsep tidak mempengaruhi program aplikasi. Modifikasi tingkat konsep diperlukan saat pengubahan struktur logik. Ketidakbergantungan secara fisik (logical data independence) perubahan skema fisik tidak mempengaruhi skema konseptual. Modifikasi tingkat fisik diperlukan untuk meningkatkan kinerja sistem basis data dan aplikasi pada umumnya
Perubahan pada skema konsep (penambahan/pengurangan entitas, atribut atau relasinya) harus dimungkinkan tanpa mengubah skema eksternal yang telah ada. Perubahan pada skema internal/fisik (perubahan struktur/organisasi file, index/hashing, perangkat penyimpanan) harus dimungkinkan tanpa perlu mengubah skema konseptual
Model Data merupakan kumpulan konsep yang terpadu untuk mendeskripsikan data, keterhubungan antar data (relationship), semantik dan batasan konsistensi data (constrain), yang berguna untuk menyembunyikan kompleksitas/rincian penyimpanan data pada level rendah/fisik Model Data dapat terdiri dari 3 komponen; Bagian struktur yang berisikan sekumpulan aturan yang berkaitan dengan basis data yang dibangun Sekumpulan aturan integritas yang menjamin keakuratan data Bagian manipulasi yang mendefinisikan tipe-tipe operasi yang diijinkan seperti pembaruan dan pengambilan data serta pengubahan struktur basis data
Model data yang umum digunakan adalah Model Entity Relationship (ER Model) Model Relasional Model Data Berorientasi Objek Model lain seperti Model Data Jaringan dan Model Data Hierarki (keduanya sudah kadaluarsa) Model-model data tersebut secara umum dikategorikan menjadi Model data berbasis Rekord (ER, Relasional, Jaringan dan Hierarki) Model data berbasis Objek (UML)
Mirip dengan hirarkical model, dimana data dan hubungan antar data direpresentasikan dengan record dan links. Perbedaannya terletak pada susunan record dan linknya yaitu network model menyusun record-record dalam bentuk graph. Beberapa ketentuan untuk model data jaringan : Terdapat lebih dari satu edge antara pasangan node Tidak ada konsep root node Suatu node dapat mempunyai lebih dari parent node Contoh model data jaringan :
R1 R2 R3 R4 R5 MenuI Back
Dimana data serta hubungan antar data direpresentasikan dengan record dan link (pointer), dimana record-record tersebut disusun dalam bentuk tree (pohon), dan masing-masing node pada tree tersebut merupakan record/grup data elemen. Ketentuan-ketentuan dalam model data hirarki adalah : Terdiri dari kumpulan record (R1,R2,R3,...Rn) yang masingmasing mempunyai field pengenal. Terdapat suatu kumpulan kaitan yang berhubungkan semua jenis record sehingga membuat diagram struktur data. Kaitan tersebut membentuk suatu pohon yang semua ujungnya mengarah ke daun. Tidak mungkin ada elemen yang mempunyai parent lebih dari satu. Setiap kaitannya membentuk hubungan tunggal jamak, artinya jika Ri parent dari Rj, maka setiap record Rj tepat hanya mempunyai satu record Ri yang berkaitan.
A B C D E F G H I DEPARTEMEN DNAME DNUMBER MGRNAME MGRSTARDATE EMPLOYE PROJECT NAME SSN BDATE ADRESS PNUMM PNAME PLOCATION DEPENDENT SUVERVISE WORKER DEPNAME SEX BRITHDATE NAME SSN NAME SSN HOURS
Entity adalah obyek pada dunia nyata yang dapat dibedakan satu dengan lainnya, yang bermanfaat bagi aplikasi yang sedang dikembangkan Relationship adalah hubungan antara beberap entitas Model Entity-Relationship adalah suatu representasi logika dari data pada suatu organisasi atau area bisnis tertentu dengan menggunakan Entity dan Relationship. Nim Nama Nilai No_Mk Nama_MK Atribute Mahasiswa Mengambil Matakuliah Entity/Entitas Relasi
Model Data Relasional adalah model basis data yang menggunakan sejumlah tabel untuk mengambarkan data serta hubungan antara data-data tersebut Setiap tabel memiliki sejumlah kolom dimana setiap kolom memiliki nama yang unik. Setiap kolom dalam tabel-tabel mencerminkan atributatribut entitas yang bersangkutan seperti pada model Entity Relationship Model Data Relasional merupakan abstraksi data pada tingkat yang lebih rendah (detil) dari ERD(Entity Relationship Diagram). Oleh karena itu perancang basis data umumnya menggunakan ERD terlebih dahulu kemudian menterjemahkan ke dalam model relasional
Contoh Model Relasional Tabel Mahasiswa Tabel Matakuliah Nim Nama No_Mk Nama_MK SKS 0001.52.2007 Paijoe 111 Basis Data 3 0002.51.2007 Bedjoe 222 Delphi 2 Tabel Nilai NIM 0001.52.2007 0001.52.2007 0002.51.2007 No_MK 111 222 111 Nilai A B A
Model basis data disebut relasional karena basis data dibangun berdasarkan konsep relasi di matematika. Relasi di matematika menyatakan bahwa elemen-elemen dari himpunan yang berbeda dapat saling berhubungan Sasaran/tujuan penerapan model rasional adalah Memungkinkan derajat ketidakbergantungan data yang tinggi. Program aplikasi tidak dipengaruhi oleh modifikasi representasi internal (perubahan organisasi file & urutan rekord) Memberikan landasan semantik, konsistensi dan ketiadaan redudansi data dengan proses Normalisasi Relasi (proses penghindaran terhadap kelompok data berulang/rg dan redudansi) Memungkinkan perluasan bahasa manipulasi data menjadi berorientasi himpunan (Set Oriented Data Manipulation Language)
Merupakan alat komunikasi yang bagus (mudah dipahami) antara pemakai dan perancang basis data Memenuhi kriteria kebutuhan dasar dalam perancangan basis data (adanya mekanisme konsistensi data dan penghilangan redudansi data) Adanya kemandirian antara Data degan Program Aplikasi Struktur data yang dipresentasikan dengan model relasi dapat dikonversi ke RDBMS dan diimplementasikan ke komputer secara langsung Model data relasional yang telah dikonversi & diimplementasikan dengan RDBMS dapat digunakan secara bersama (data sharing)
Pembuatan Basis Data (Create Database) Penghapusan Basis Data (Drop Database) Pembuatan File/Table baru ke suatu basis data (Create Table) Penghapusan File/Table dari suatu basis data (Drop Table) Penambahan data baru ke suatu file/table di sebuah basis data (insert) Pengambilan data dari sebuah file/table (Retrieve/Search) Pengubahan data dari sebuah file/table (Update) Penghapusan data dari sebuah file/table (Delete)
Terdiri dari sejumlah perintah (statement) yang diformulasikan dan dapat diberikan oleh pengguna dan dikenali/diproses oleh DBMS untuk melakukan suatu aksi/pekerjaan tertentu. Komponen Bahasa Basis Data Data Definition Language (DDL) Data Manipulation Language (DML)
Digunakan untuk mespesifikasikan struktur/skema basis data yang menggambarkan desain basis data secara keseluruhan. Hasil kompilasi perintah DDL adalah kamus data File yang berisi metadata (data yang mendeskripsikan data sesungguhnya) Struktur penyimpan dan metode akses yang digunakan oleh sistem basis data disebut dengan data storage and definition language
Digunakan untuk memanipulasi basis data Bentuk manipulasi Pencarian kembali data lama Penyisipan data baru Penghapusan data Pengubahan data
Saat ini Model Relasional adalah dominan. Karena itu hampir semua penjual perangkat lunak database menawarkan produk perangkat lunak Relational Database Management Systems (RDBMS). Basis Data Relasional
RDBMS dibuat dengan struktur tiga skema, yaitu : Eksternal Konseptual Internal Basis Data Relasional
Skema Eksternal mendefinisikan bagaimana pemakai mengakses dan melihat output dari RDBMS, bebas dari bagaimana data disimpan atau diakses secara fisik. Akses dan manipulasi seperti ini dilaksanakan oleh pemakai dengan memperkerjakan bahasa prosedural, seperti COBOL atau bahasa query, seperti Structured Query Language (SQL), bahasa standar yang diakui untuk RDBMS. Basis Data Relasional
Skema Konseptual yang mendefinisikan model database relasional terdiri dari sekumpulan tabel yang dinormalisasi. Skema konseptual adalah rancangan dari database Basis Data Relasional
Skema Internal terdiri dari organisasi fisik dari data (mis. sekuensial, indeks sekuensial, langsung) dalam hal struktur fisik data dan metode-metode pengaksesan dari sistem operasi komputer. Basis Data Relasional
Basis Data relasional menggunakan tabel dua dimensi yang terdiri atas baris dan kolom untuk memberi gambaran sebuah berkas data. Basis Data Relasional
Model Relasional merupakan kumpulan tabel berdimensi dua (disebut relasi atau tabel) dengan masing-masing relasi (relations) tersusun atas tuple (baris) dan atribut (kolom) pada suatu basis data. Basis Data Relasional
Model Data Relasional menggambarkan data dalam bentuk tabel-tabel. Model Data Relasional mengandung 3 komponen inti : Struktur data, data diorganisasi dalam bentuk tabel-tabel Manipulasi data, menggunakan SQL Integritas data, untuk spesifikasi aturan bisnis Basis Data Relasional
Struktur data dasar untuk menyimpan informasi. Digunakan untuk menyimpan entities, attributes, relationships, juga weak entities. Strukturnya sebagai tabel (kumpulan tabeltabel). Basis Data Relasional
Setiap relasi memiliki schema yang mendeskripsikan nama relasi dan atribut beserta tipenya. Contoh : mahasiswa = (nim : string, nama_mhs : string). keterangan : mahasiswa adalah nama relasi. nim dan nama_mhs adalah nama atribut. string adalah tipe dari atribut. Basis Data Relasional
Terdiri dari baris-baris yang memuat datadata yang berhubungan satu sama lain. Terdiri dari kolom-kolom yang memuat data-data dari tipe yang sama. Basis Data Relasional
Bentuknya sederhana Mudah melakukan berbagai operasi data (query, update/edit, delete). Basis Data Relasional
Relasi: Sebuah tabel yang terdiri dari beberapa kolom dan beberapa baris. Atribut: Kolom pada sebuah relasi Tupel Baris pada sebuah relasi Basis Data Relasional
Domain Kumpulan nilai yang valid untuk satu atau lebih atribut Derajat (degree) Jumlah atribut dalam sebuah relasi Cardinality Jumlah tupel dalam sebuah relasi Basis Data Relasional
Basis Data Relasional
Super key Satu atribut/kumpulan atribut yang secara unik mengidentifikasi sebuah tupel di dalam relasi (satu atau lebih field yang dapat dipilih untuk membedakan antara 1 record dengan record lainnya). Contoh: Untuk tabel MHS, super key-nya: NPM NAMA (dengan syarat tidak ada nama yang sama) ALAMAT (dengan syarat tidak ada alamat yang sama) NPM + NAMA NPM + ALAMAT NAMA + ALAMAT NPM + NAMA + ALAMAT Basis Data Relasional
Candidate key Atribut di dalam relasi yang biasanya mempunyai nilai unik (super key dengan jumlah field yang paling sedikit) Maka, candidate key-nya adalah NPM, NAMA dan ALAMAT (karena hanya terdiri dari 1 field saja) Basis Data Relasional
Primary key Candidate key yang dipilih untuk mengidentifikasikan tupel secara unik dalam relasi Maka, primary key yang dipilih adalah NPM (unik, tidak ada NPM yang sama). Basis Data Relasional
Alternate key Candidate key yang tidak dipilih sebagai primary key Maka, candidate key-nya NAMA dan ALAMAT Basis Data Relasional
Foreign key Atribut dengan domain yang sama yang menjadi kunci utama pada sebuah relasi tetapi pada relasi lain atribut tersebut hanya sebagai atribut biasa Basis Data Relasional
Basis Data Relasional
1. Null Nilai suatu atribut yang tidak diketahui dan tidak cocok untuk baris (tuple) tersebut 2. Entity Integrity Tidak ada satu komponen primary key yang bernilai null Basis Data Relasional
3. Referential Integrity Suatu domain dapat dipakai sebagai kunci primer bila merupakan atribut tunggal pada domain yang bersangkutan Basis Data Relasional
Nama tabel SISWA Primary key NOMHS Foreign key KODE_WALI Hubungan Contoh Sederhana Basis Data Relasional Basis Data Relasional
Menggunakan bahasa query pernyataan yang diajukan untuk mengambil informasi Bahasa pada basis data relasional terbagi menjadi 2 yaitu: Basis Data Relasional
Bahasa query yang diterjemahkan dengan menggunakan simbol-simbol matematis Contoh: Aljabar relasional Kalkulus relasional Basis Data Relasional
Bahasa Query yang dirancang sendiri oleh programmer menjadi suatu program aplikasi agar pemakai lebih mudah menggunakannya (user friendly). Basis Data Relasional
QUEL Berbasis pada bahasa kalkulus relasional QBE Berbasis pada bahasa kalkulus relasional SQL Berbasis pada bahasa kalkulus relasional dan aljabar relasional Basis Data Relasional
Relasi yang mengandung redundansi yang minimal dan mengijinkan pengguna untuk menyisipkan, memodifikasi, serta menghapus baris-baris tanpa menimbulkan kesalahan. Basis Data Relasional
Operator Basis Data Relasional Derajat kesempurnaan relasi dapat diukur dengan seberapa luas dukungan aljabar relasionalnya. Aljabar relasional mendefinisikan secara teoritis cara memanipulasi isi tabel dengan menggunakan delapan fungsi relasional: SELECT, PROJECT, JOIN, INTERSECT, UNION, DIFFERENCE, PRODUCT dan DIVIDE.
Operator Basis Data Relasional UNION menggabungkan semua baris dari dua buah tabel dan kedua tabel tersebut harus sesuai. NIP UNION NIP Hasil NIP 090710100 090710120 090710100 090710103 090710123 090710103 090710109 090710109 090710112 090710112 090710120 090710123
Operator Basis Data Relasional INTERSECT menghasilkan sebuah daftar yang berisi hanya record-record yang ter-dapat pada kedua tabel dan kedua tabel tersebut harus sesuai. Nama INTERSECT Nama Hasil Nama Nico Sandy Sandy Sandy Rudi Heni Surya Heni Heni Santi
Operator Basis Data Relasional DIFFERENCE menghasilkan semua record yang terdapat pada satu tabel tetapi tidak terdapat pada tabel lainnya dan kedua tabel tersebut harus sesuai. Nama DIFFERENCE Nama Hasil Nama Nico Sandy Nico Sandy Heni Surya Surya Heni
Operator Basis Data Relasional PRODUCT menghasilkan sebuah daftar semua pasangan record dua buah tabel. Wali PRODUCT Mhs SKS IPK Hasil Wali Mhs SKS IPK Winata Susi 18 2.03 Winata Susi 18 2.03 Adelia Toni 20 3.42 Winata Toni 20 3.42 Wandi 21 2.75 Winata Wandi 21 2.75 Adelia Susi 18 2.03 Adelia Toni 20 3.42 Adelia Wandi 21 2.75
Operator Basis Data Relasional SELECT menghasilkan nilai untuk semua atribut yang ditemukan dalam tabel. Mhs SKS IPK Mhs SKS IPK Susi 18 2.03 Susi 18 2.03 Toni 20 3.42 Toni 20 3.42 Wandi 21 2.75 Wandi 21 2.75 SELECT ALL Hasilnya SELECT SKS 20 Hasilnya Mhs SKS IPK Toni 20 3.42 Wandi 21 2.75
Operator Basis Data Relasional PROJECT menghasilkan daftar semua nilai untuk atribut yang dipilih. Mhs SKS IPK Mhs Susi 18 2.03 Susi Toni 20 3.42 Toni W andi 21 2.75 W andi PROJECT MHS Hasilnya PROJECT MHS and IPK Hasilnya Mhs IPK Susi 2.03 Toni 3.42 Wandi 2.75
Operator Basis Data Relasional JOIN memungkinkan kita untuk mengkom- binasikan informasi dari dua tabel atau lebih. JOIN memiliki kemampuan nyata untuk mendukung basis data relasional, memungkinkan penggunaan tabel inde-penden yang dihubungkan melalui atribut yang sama.
Operator Basis Data Relasional Natural JOIN menghubungkan tabel dengan memilih hanya record dengan nilai yang digunakan bersama-sama pada atribut yang sama. Operator ini akan menghasilkan tiga tahapan proses: PRODUCT SELECT PROJECT
Operator Basis Data Relasional Contoh dua tabel yang akan digunakan untuk ilustrasi JOIN: Nama Tabel : SISWA Nama Tabel : WALI Mhs SKS IPK Kode_Wali Kode_Wali Wali Wandi 21 2.75 1 1 Suminto Toni 20 3.42 1 2 Farid Rudi 18 2.45 2 3 Ganjar Susi 18 2.03 2 Tatik 22 3.68 3
Natural JOIN, Tahap 1: PRODUCT Mhs SKS IPK Kode_Wali Kode_Wali Wali Wandi 21 2.75 1 1 Suminto Toni 20 3.42 1 1 Suminto Rudi 18 2.45 2 1 Suminto Susi 18 2.03 2 1 Suminto Tatik 22 3.68 3 1 Suminto Wandi 21 2.75 1 2 Farid Toni 20 3.42 1 2 Farid Rudi 18 2.45 2 2 Farid Susi 18 2.03 2 2 Farid Tatik 22 3.68 3 2 Farid Wandi 21 2.75 1 3 Ganjar Toni 20 3.42 1 3 Ganjar Rudi 18 2.45 2 3 Ganjar Susi 18 2.03 2 3 Ganjar Tatik 22 3.68 3 3 Ganjar
Natural JOIN, Tahap 2: SELECT Mhs SKS IPK Kode_W ali Kode_W ali W ali W andi 21 2.75 1 1 Suminto Toni 20 3.42 1 1 Suminto Rudi 18 2.45 2 2 Farid Susi 18 2.03 2 2 Farid
Natural JOIN, Tahap 3: PROJECT Mhs SKS IPK Kode_Wali Wali Wandi 21 2.75 1 Suminto Toni 20 3.42 1 Suminto Rudi 18 2.45 2 Farid Susi 18 2.03 2 Farid Gambar 2.14. Natural join, tahap 3: Project
Operator Basis Data Relasional DIVIDE memerlukan dua buah tabel yang masing-masing terdiri dari satu dan dua kolom. Perhatikan ilustrasi berikut ini: Tabel 1 Tabel 2 Tabel 3 Kode Lok DEVIDE Kode Hasil Lok A 5 A 5 B 5 B C 6 D 7 D 8 E 8 A 9 A 4 B 3
Kamus Data dan Katalog Sistem Kamus data berisi metadata untuk menjelas kan secara detail catatan semua tabel di dalam suatu basis data. Katalog sistem adalah kamus data sistem yang sangat detail yang menggambarkan semua objek di dalam suatu basis data. Basis data yang dibentuk sistem dimana tabeltabelnya menyimpan isi dan sifat-sifat basis data. Tabel-tabelnya dapat diproses seperti tabel-tabel lainnya. Secara otomatis menghasilkan dokumentasi basis data
Tabel 2.4. Contoh Kamus Data Nama Tabel Nama Atribut Uraian Tipe Format Range PK/ FK Tabel Referensi Siswa Nomhs Nomor mhs Char(9) 999999999 PK Nama Nama mhs Varchar(18) Xxxxxxxxx SKS Jumlah SKS Byte 99 2-24 IPK IP.Kumulatif Number(4,2) 9.99 0.00-4.00 Kd_Wali Kode wali Number(2) 99 1-99 FK Wali Wali Kd_Wali Kode wali Number(2) 99 1-99 PK NIP No. Pegawai Char(9) 999999999 Nama Nama wali Varchar(18) Xxxxxxxxx Jbt_Fng Fungsional Varchar(15) Xxxxxxxxx
Relasi pada Basis Data Relasional E-RDiagram(ERD) Bentuk persegi panjang mewakili entitas. Nama entitas berupa kata benda dan huruf besar. Bentuk berlian digunakan untuk mewakili relasi antar entitas. Angka 1 digunakan untuk mewakili 1 (satu) data pada relasi. Huruf M digunakan untuk mewakili many (banyak) data dari relasi.
Relasi Antara Wali dan Mahasiswa WALI 1 Membimbing MAHASISWA M
Cara Lain Untuk Menyatakan Relasi Antara Wali dan Mahasiswa 1 M WALI Membimbing MAHASISWA
Relasi1: M : Basis Data Perwalian Tabel : WALI PK : KODE_WALI FK : - Tabel : SISWA PK : NOMHS FK : KODE_WALI Hubungan Gambar 2.19. Relasi 1: M untuk basis data perwalian
Relasi 1:M Antara Kursus dan Kelas 1 M KURSUS Memiliki KELAS
Relasi M:N Antara Mahasiswa dan MKA M SISWA Mengambil MKA N
Tabel 2.5. Contoh Data Pengambilan MKA MAHASISWA M Mengambil N MKA MAHASISWA 1 M M 1 PESERTA MKA
Relasi Many to Many Antara Mahasiswa dan MKA Tabel MAHASISWA Basis Data KRS Tabel MKA
Konversi Relasi M:N Menjadi Dua Relasi 1:M Tabel MAHASISWA Primary key NOMHS Tabel KULIAH Primary key KODE_MKA+NOMHS Foreign key KODE_MKA,NOMHS Tabel MKA Primary key KODE_MKA
Perubahan Relasi M:N Menjadi Dua Relasi 1:M M MAHASISWA Mengambil MKA N Revisi E-R Diagram : Dua set relasi 1:M MAHASISWA 1 M M 1 KULIAH MKA
Skema Basis Data Relasional: KULIAH
Atas Perhatiaandan kerjasamanya,saya Ucapkan TERIMA KASIH