Anda di halaman 1dari 33

PERTEMUAN KE - 1

MEMBANGUN ATURAN BISNIS


1. TUJUAN Mahasiswa memahami tentang cara mendefinisikan atau membatasi beberapa aspek dari bisnis mencakup struktur relasi (kardinalitas dan relasi), dan menentukan schema untuk membangun basis data. 2. TEORI SINGKAT Aturan bisnis adalah kalimat yang mendefinisikan atau membatasi beberapa aspek bisnis atau dapat didefinisikan sebagai batasan yang harus diikuti ketika sistem beroperasi. Aturan bisnis dimaksudkan untuk menjamin struktur bisnis atau mengendalikan perilaku bisnis. Klasifikasi aturan bisnis atau tipe dalam aturan bisnis : Batasan Struktural yaitu aturan-aturan yang mendefinisikan struktur statis organisasi. - Batasan Operasional yaitu aturan-aturan yang membatasi operasi-operasi yang sedang berjalan. Berikut adalah contoh pernyataan ekspresi untuk aturan bisnis : Mahasiswa dapat mendaftar matakuliah tertentu jika dia telah menyelesaikan matakuliah prasyaratnya. - Jika pembayaran tidak terlambat, pelanggan mendapat potongan harga sebesar 10% dari harga pokok. - Jika seorang nasabah menabung lebih dari Rp. 50.000.000 dalam periode kurang dari 3 bulan dan selama periode tersebut tidak pernah melakukan penarikan, nasabah yang bersangkutan akan diikutsertakan dalam undian untuk mendapatkan mobil Jaguar. - Sebuah Perusahaan memiliki beberapa Departemen - Setiap Departemen memiliki seorang Supervisor - Setiap Departemen memiliki minimum satu orang Pegawai - Pegawai bekerja untuk minimal satu Departemen - Pegawai dapat bekerja untuk beberapa Departemen Schema menunjukkan pandangan seorang perancang yang digunakan pada lingkup atau organisasi secara keseluruhan. Schema memberikan deskripsi hubungan logik antar data dalam basis data secara lengkap, termasuk di dalamnya nama dan deskripsi semua atribut, record, dan batasan nilai untuk semua aplikasi yang menggunakan basis data tersebut. Contoh penulisan notasi untuk schema yaitu :
Mata_Kuliah_schema : (Kode_MK Char(8), Nama_MK Char(30), SKS Num(1), Semester Num(1), Status Char(1), Primary Key (Kode_MK));

3. PELAKSANAAN PRAKTIKUM 1. Membuat aturan bisnis untuk kasus monitoring proyek : Departemen memiliki banyak proyek. Proyek mempunyai banyak pekerja. Departemen melakukan monitoring pada banyak pekerja.

Bentuk relasi :

Nama_pro Id_proyek Alamat_pro Id_Dept

Nama_dep

Alamat_dep

Proyek m

Memiliki 1 1

Departemen

Monitoring

m Pekerja Id_pekerja

Nama_pk

Alamat_pk

2. Membuat schema untuk kasus monitoring proyek : Departemen_schema : (Id_Dept Char(5), Nama_Dept Char(30), Alamat Varchar(30), Primary Key (Id_Dept)); (Id_proyek Char(5), Nama_proyek Char(30), Anggaran Int, Primary Key (Id_proyek)); (Id_pekerja Char(5), Nama_pekerja Char(25), Alamat_pekerja Varchar (30), Primary Key (Id_pekerja)); (Id_pekerja Char(5), Id_proyek Char(5), Id_Dept Char(5), Tgl _Monitoring Date, Status_pekerjaan Char(30), Primary Key (Id_pekerja, Id_proyek, IdDept),

Proyek_schema

Pekerja_schema

Monitoring_schema

Foreign Key (Id_pekerja) Pekerja(Id_pekerja), Foreign Key (Id_proyek, Id_Dept) Pelaksana(Id_proyek, Id_Dept));

References References

4. LATIHAN Buatlah aturan bisnis dan schema untuk sistem informasi sederhana untuk transaksi peminjaman buku di perpustakaan.

5. TUGAS Buatlah aturan bisnis dan skema untuk kasus sederhana untuk penjualan produk secara online.

--- &&&& ---

PERTEMUAN KE - 2

PEMODELAN ER- ENTITY RELATIONSHIP (1)

1. TUJUAN Mahasiswa memahami tentang cara merancang sistem basis data secara konseptual menggunakan model data ER dalam bentuk ERD (Entity Relationship Diagram). 2. TEORI SINGKAT a. Entity Set Entity set adalah sesuatu atau objek yang ada di dalam dunia nyata yang berbeda dengan objek lainnya, memiliki atribut penyusun, dan merupakan pembangun suatu sistem. Contoh, manusia yang bekerja di suatu perusahaan adalah sebuah entity. Entity mempunyai atribut bernilai (values), misal : 000-11-3452 merupakan sebuah nomer induk seorang pekerja (atribut nomer induk peke rja). Selain itu, seorang pekerja juga mempunyai tanggal lahir. Di sini tanggal lahir merupakan atribut dari entity pekerja yang berkedudukan sejajar dengan atribut nomer induk pekerja. Entity mempunyai beberapa tipe atribut seperti : 1.Simple atribute : entity yang atributnya tidak dapat dibagi menjadi bagian yang lebih ke cil. 2. Composite atribute : entity yang atributnya dapat dibagi menjadi atribut yang lebih kecil. Misalnya : atribut nama bisa dibagi menjadi nama awal, nama tengah, dan nama akhir. 3. Single-valued attribute : entity yang atributnya hanya dapat berisi satu nilai. Misal nomer induk pekerja. 4. Multivalued attribute : entity yang atributnya dapat berisi nol, satu atau lebih dari satu nilai. Misalnya : atribut telephon, bisa jadi seorang pekerja mempunyai nol, satu, atau lebih telephon. 5. Atribut turunan : entity yang atributnya dapat diturunkan dari atribut lainnya. Misalnya : atribut umur dapat diketahui dari atribut tanggal lahir dan tanggal pada saat itu. b. Relasional Relasional adalah hubungan antara entity. Semisal pada contoh di atas entity manusia mempunyai hubungan dengan entity alamat yaitu tinggal di. Di dalam merancang database hendaknya seluruh entity yang ada mempunyai hubungan dengan entity yang lain, minimal satu. Jika ada entity dalam database yang tidak mempunyai hubungan dengan satupun entity yang lain, maka akan timbul kesalahan dalam desain. Biasanya entity yang tidak berhubungan akan dihilangkan. Macam relasi ada 4, antara lain : 1.One to one : Sebuah entitas A yang berpasangan dengan tepat satu entitas B. Demikian pula entitas B juga berpasangan tepat satu dengan entitas A. Contoh entitas mahasiswa yang berrelasi dengan entitas skripsi secara one to one. 2.One to many : Sebuah entitas A yang berpasangan secara banyak (nol atau lebih) dengan entitas di dalam B. Sedangkan entitas B hanya berpasangan dengan tepat satu entitas di dalam A. Contoh : entitas mahasiswa yang berelasi dengan entitas dosen dalam hubungan dosen pembimbing. Relasi yang terjadi secara one to many. Karena seorang mahasiswa hanya memiliki 1 dosen pembimbing. Sedangkan seorang dosen bisa jadi memiliki mahasiswa bimbingan lebih dari satu.

3. Many to one Sebuah entitas A yang berpasangan dengan tepat satu entitas di dalam B. Sedangkan entitas B dapat berpasangan secara banyak (nol atau lebih) dengan entitas di dalam A. (sama seperti one to many hanya dibalik pengertiannya) 4. Many to many : Sebuah entitas A yang berpasangan secara banyak (nol atau lebih) dengan entitas di dalam B. Dan entitas B juga dapat berpasangan secara banyak (nol atau lebih) dengan entitas didalam A. Contoh : entitas mahasiswa yang berelasi dengan entitas matakuliah dalam hubungannya dengan KRS. Relasi tersebut adalah many to many. Karena seorang mahasiswa dapat mengambil banyak matakuliah. Sedangkan satu mata kuliah bisa jadi diambil oleh beberapa mahasiswa. c. Primary Key Seperti yang telah disebutkan di atas, bahwa entity adalah suatu objek yang berbeda dengan objek yang lainnya. Maka tiap entity harus mempunyai atribut yang dapat membedakan antara objek satu dengan yang lainnya. Misalnya entitas manusia, entitas ini tidak mempunyai atribut yang dapat membedakan antara objek manusia1 dengan objek manusia2. Namun apabila manusia tersebut menjadi pegawai (muncul entitas pegawai) maka objek manusia1 dan manusia2 sebagai anggota dari entitas pegawai akan mempunyai atribut yang membedakan yaitu NIP. Atribut inilah yang disebut dengan key. Manusia1 dan manusia2 tidak mungkin memiliki NIP yang sama. Key dapat terdiri dari beberapa atribut, yang biasa disebut dengan candid ate key. Namun dalam prakteknya key sebisa mungkin hanya terdiri dari satu atribut. Hal ini untuk memudahkan dalam pengolahan data. Nah, untuk mendapatkan key dari candidate key (gabungan beberapa atribut), pilih atribut entitas yang paling unik (value dalam atribut tidak ada yang sama) dan bisa membedakan entitas tersebut dengan entitas lain. Jika sudah mendapatkannya, key itulah yang disebut sebagai primary key.Semisal ada candidate key berupa nama, NIP, dan tanggal lahir. Maka perlu disortir, atribut mana yang paling unik dari ketiga atribut tersebut. Atribut nama tidak unik, karena ada kemungkinan dua entitas pekerja mempunyai nama yang identik. Demikian pula dengan atribut tanggal lahir, sangat bisa jadi dua entitas pekerja mempunyai tanggal lahir yang sama. Hanya atribut NIP saja yang pasti berbeda dari tiap-tiap entitas pekerja. d. Foreign Key Di atas telah dibahas bahwa entitas dalam database harus mempunyai hubungan dengan entitas yang lain. Oleh karenanya, suatu entitas yang memiliki hubungan dengan entitas lain harus memuat primary key dari entitas yang a da hubungan dengannya. Pemuatan primary key ini tidak selalu pada kedua entitas yang berhubungan. Namun cukup pada entitas yang membutuhkan. Misal, suatu entitas pekerja dengan primary key NIP. Entitas ini memiliki hubungan dengan entitas bagian kerja dengan primary key ID bagian kerja. Untuk bisa menghubungkan kedua entitas tersebut maka entitas bagian kerja tidak perlu memasukkan primary key dari entitas pekerja ke dalam salah satu atributnya. Namun justru entitas pekerja yang memasukkan primary key dari entitas bagian kerja(ID bagian kerja). Proses menampung primary key dari entitas lain ke dalam atribut entitas disebut juga dengan foreign key. Ada beberapa landasan pemuatan primary key suatu entitas ke entitas lain yang berhubungan. Landasan ini memakai ciri relasi yang digunakan 1. One to one : Entitas A berhubungan dengan entitas B secara one to one dengan Entitas A. Maka primary key entitas A dimuat ke entitas B atau sebaliknya. 2.Many to one : 5

Entitas A berhubungan dengan entitas B secara many to one maka primary key entitas B dimuat ke dalam entitas A. 3. Many to many: Entitas A berhubungan dengan entitas B secara many to many makapemuatan primary ke y dari masing-masing entitas akan melibatkan suatu entitas baru. e. Entity-Relationship Diagram E-R diagram digunakan untuk membuat suatu model database. Kemudian dari model tersebut dibuatlah sistem database. Adapun macam-macam komponen dalam E-R diagram adalah : 1. Persegi panjang : merepresentasikan entitas 2. Elips : merepresentasikan atribut 3. Belah ketupat : merepresentasikan relasi antar entitas 4. Garis : merepresentasikan link antar atribut 5. Elips dobel : merepresentasikan atribut yang memiliki banyak nilai 6. Elips bergaris putus-putus: merepresentasikan atribut turunan 7. Garis dobel : merepresentasikan total pertisipasi dari suatu entitas di dalam relationship 8. Pesegi panjang dobel : entitas yang lemah Ada dua jenis entitas, yang pertama adalah entitas kuat yaitu entitas yang memiliki primary key. Kedua adalah entitas lemah yaitu entitas yang tidak memiliki primary key. Berikut contoh diagram E-R dalam kasus pelanggan yang membeli barang, yaitu:
jml_brg nama_plg kode_plg pelanggan alamat N beli wkt_beli discount nama_brg tipe_brg barang penyalur

kode_brg
N

harga_dasar

persen_laba

Gambar 2.1 Contoh ERD Simbol-simbol ERD :

Entitas, yaitu kumpulan dari objek yang dapat diidentifikasi secara unik.

Relasi, yaitu hubungan yang terjadi antara satu atau lebih entitas. Jenis hubungan antara lain, satu ke satu, satu ke banyak, dan banyak ke banyak.

Atribut, yaitu karakteristik dari entity atau relasi yang merupakan penjelasan detail tentang entitas.

Hubungan, antara entity dengan atributnya dan himpunan entitas dengan himpunan relasinya.

Gambar 2.2. Simbol-simbol ERD f. Kamus Data Obyektif utama dari pembuatan diagram ER adalah untuk menunjukkan objek-objek (himpunan entitas) apa saja yang ingin dilibatkan dalam sebuah basis data dan bagaimana hubungan yang terjadi diantara objek-objek tersebut. Pemisahan atribut-atribut dari diagram ER dapat dinyatakan dalam sebuah kamus data. Kamus data berisikan daftar atribut yang diapit kurung kurawal { }, atribut yang berfungsi sebagai Key dibedakan dengan yang Non Key dengan menggaris bawahi atribut tersebut. Berikut Contoh Kamus Data : Mahasiswa = Kuliah = Dosen = Mempelajari Mengajar = { nim, nama_mhs, alamat_mhs, tgl_lahir} { kode_kul, nama_kul,sks, semester} { nip,nama_dosen, alamat_dosen} = { nim, kode_kul, indeks_nilai } { kode_kul, nama_dosen, waktu, tempat }

Mahasiswa Mempelajari Kuliah Mengajar Dosen M M M M 1

2.

PELAKSANAAN PRAKTIKUM

a. Membuat ERD dari kasus proyek pada departeman :

Gambar 2.3. Gambar ERD pada proyek b. Membuat Kamus Data untuk kasus proyek departemen Departemen_schema : {Id_Dept,Nama_Dept, Alamat} Proyek_schema : {Id_proyek, Nama_proyek, Anggaran} Pekerja_schema : {Id_pekerja, Nama_pekerja, Alamat_pekerja} Monitoring_schema : {Id_pekerja, Id_proyek, Id_Dept, Tgl _Monitoring, Status_pekerjaan} Departemen Memiliki Proyek Monitoring - Pekerja 1 M M M M 3. LATIHAN Membuat ERD dan Kamus Data untuk sistem informasi sederhana untuk transaksi peminjaman buku perpustakaan (lihat pertemuan 1). 4. TUGAS Membuat ERD dan Kamus Data untuk sistem informasi sederhana penjualan produk secara online.

-- &&& --

PERTEMUAN KE - 3

PEMODELAN ER- ENTITY RELATIONSHIP (2)


1. TUJUAN Mahasiswa memahami tentang cara merancang sistem basis data secara konseptual menggunakan model data ER dalam bentuk ERD (Entity Relationship Diagram) lanjut. 2. TEORI SINGKAT Terdapat 2 (dua) varian yang menyatakan himpunan entitas, yaitu: 1. Himpunan Entitas Kuat/Bebas (Strong Entity Sets). Himpunan entitas ini tidak memiliki ketergantungan dengan himpunan entitas lainnya atau berdiri sendiri digambarkan dengan empat persegi panjang. Contoh entitas: Mahasiswa, Buku 2.Himpunan Entitas Lemah (Weak Entity Set). Berisi entitas-entias yang kemunculannya tergantung pada eksistensinya dalam sebuah relasi terhadap entitas kuas (strong entity). Bisanya tidak memiliki digambarkan dengan empatatribut sebagai key persegi panjang bertumpuk. Contoh, entitas ANAK bergantung pada entitas DOSEN. Partisipasi suatu entitas terdapat dua tipe yakni 1. Partisipasi total, dimana keberadaan entitas hubungannya dengan entitas lain. tersebut bergantung pada

Nm_dos Kd_dos Alamat Kd_mk

Mt_kuliah sks

M DOSEN AJAR

N MATAKULIAH

Kelas

SEM

2. Partisipasi parsial, dimana entitas tersebut tidak bergantung hubungan entitas tersebut dengan entitas lain.

dengan

keberadaan

Nm_dos Kd_dos

Alamat

Kd_pem M DOSEN 1
Koordinir

ENTITAS AGREGASI Entitas yg mengandung unsur relationship

M MAHASISWA
AMBIL

N MATAKULIAH

N
PUNYA

M N
AJAR

RUANGAN

M N
ISI

N M DOSEN

NILAI

KONSEP SPESIALISASI Spesialisasi = proses pendefinisian suatu himpunan subclass dari suatu entitas (disebut superclass) berdasarkan karakteristik tertentu. Subclass = suatu entitas yang merupakan anggota dari superclass tapi mempunyai peranan berbeda. Superclass = suatu entitas yang mempunyai subclass- subclass yang berbeda tapi harus direpresentasikan dalam model data. Spesialisasi pada entitas PEGAWAI

a. Berdasarkan peranannya dalam bekerja

b. Berdasarkan kontrak kerja

GENERALISASI Generalisasi = proses pendefinisian subclass-subclass yang disatukan menjadi entitas superclass tunggal berdasarkan karakteristik umum. Contoh, subclass MANAGER, SEKRETARIS dan TEKNISI dapat digeneralisasikan menjadi superclass PEGAWAI berdasarkan atribut umum seperti Nama, Alamat, Tgl-lhr.

10

Atau dua entitas MOBIL dan TRUK

Digeneralisasi menjadi superclass KENDARAAN berdasarkan atribut umum yakni kode kendaraan, no lisensi dan harga

KATEGORISASI Kategorisasi = proses pendefinisian suatu subclass ( disebut kategori) yang memiliki lebih dari satu superclass yang berbeda. Contoh, kategori PEMILIK yang merupakan subclass dari gabungan ORANG, BANK dan PERUSAHAAN. Kategori KENDARAAN-TERDAFTAR yang merupakan subclass dari gabungan MOBIL dan TRUK.

11

Aturan Transformasi Diagram ER/EER ke Model Relasional 1. Transformasi Entitas Kuat Untuk setiap entitas kuat pada diagram ER dibuatkan suatu relasi yang memuat semua atribut tunggal dari entitas tersebut. Sedangkan untuk atribut komposit hanya dimuat komponen atributnya saja. PEGAWAI (NIP,NAMA,TGL-LH,ALM1,KDPOS,UMUR) Kunci utama (primary key) : NIP DIVISI (KODEDIV,NAMADIV,LOKASI) Kunci utama : KODEDIV PROYEK (KODEPRO,NAMAPRO) Kunci utama : KODEPRO 2. Transformasi Atribut Bernilai Banyak Setiap entitas yang mempunyai atribut bernilai banyak dibuat relasi baru dimana kunci utamanya merupakan gabungan dari kunci utama dari relasi asal dengan atribut bernilai banyak. LOKASIPRO (KODEPRO,LOKPRO) Kunci utama : KODEPRO+LOKPRO Kunci asing (foreign key): KODEPRO yang bereferensi pada relasi PROYEK 3. Transformasi Entitas Lemah Setiap Entitas Lemah dibuat relasi yang memuat semua atribut tunggal pada entitas tersebut dimana kunci utamanya adalah gabungan dari kunci parsial dan kunci utama dari induknya. TANGGUNGAN (NIP,NAMATGG,JNSKELAMIN,HUBUNGAN) Kunci utama : NIP+NAMATGG Kunci asing : NIP yang bereferensi ke NIP pada relasi PEGAWAI 4. Transformasi Relationship Berderajat Satu 1:N Untuk setiap relationship berderajat satu dengan kardinalitas satu ke banyak pada suatu entitas, maka pada relasi yang merepresentasikan entitas tersebut perlu ditambahkan kunci asing yang bereferensi ke kunci utama dari relasi itu sendiri. PEGAWAI (NIP,NAMA,TGL-LH,ALM1,KDPOS,UMUR,KODEATASAN) Kunci utama : NIP Kunci asing : KODEATASAN yang bereferensi pada NIP 5. Transformasi Relationship Berderajat Satu M:N Setiap relationship berderajat satu dengan kardinalitas banyak ke banyak pada suatu entitas, maka perlu dibuat relasi baru dimana kunci utamanya merupakan gabungan dari kunci utama relasi asal dan kunci utama relasi asal itu sendiri yang diberi nama lain. KOMPONENBRG (KODEBRG, KODEKOMP, JUMLAH) Kunci utama : KODEBRG+KODEKOMP Kunci asing : KODEKOMP yang bereferensi ke KODEBRG 6. Transformasi Relationship Berderajat Dua 1:1 dan Partisipasi Total Untuk setiap relationship berderajat dua dengan kardinalitas satu ke satu dan keduaduanya berpartisipasi secara total, maka perlu dibuat suatu relasi gabungan dimana kunci utamanya dapat dipilih salah satu. PEGAWAI (NIP,...,KODEPRO,...) Kunci utama : NIP atau KODEPRO 7. Transformasi Relationship Berderajat Dua 1:1 dan Salah Satu Berpartisipasi Total Untuk setiap relationship berderajat dua dengan kardinalitas satu ke satu dan salah satu berpartisipasi secara total, maka pada relasi yang berpartisipasi total mempunyai kunci asing yang berasal dari kunci utama relasi yang berpartisipasi sebagian DIVISI (KODEDIV,NAMADIV, LOKASI, KODEMANAGER) Kunci utama : KODEDIV Kunci asing : KODEMANAGER 8. Transformasi Relationship Berderajat Dua 1:1 dan Keduanya Berpartisipasi Parsial Untuk setiap relationship berderajat dua dengan kardinalitas satu ke satu dan keduaduanya berpartisipasi secara parsial, maka perlu dibuat suatu relasi baru dimana kunci utamanya merupakan gabungan dari kunci utama kedua relasi. PEKERJAANPRO (NIP, KODEPRO,...) Kunci utama : NIP+KODEPRO Kunci asing : NIP dan KODEPRO

12

9. Transformasi Relationship Berderajat Dua 1:N dan Sisi N Berpartisipasi Total Untuk setiap relationship berderajat dua dengan kardinalitas satu ke banyak dan pada entitas yang mempunyai kardinalitas N berpartisipasi secara total, maka pada relasi bersisi N dimasukkan kunci asing yang berasal dari kunci utama relasi bersisi 1. PROYEK (KODEPRO, NAMAPRO, KODEDIV) Kunci utama : KODEPRO Kunci asing : KODEDIV 10.Transformasi Relationship Berderajat Dua 1:N dan Sisi N Berpartisipasi Parsial Untuk setiap relationship berderajat dua dengan kardinalitas satu ke banyak dan pada entitas yang mempunyai kardinalitas N berpartisipasi secara parsial, maka perlu dibuat suatu relasi baru dimana kunci utamanya merupakan gabungan dari kunci utama kedua relasi. PEKERJAANPRO (NIP, KODEPRO,...) Kunci utama : NIP+KODEPRO Kunci asing : NIP dan KODEPRO 11.Transformasi Relationship Berderajat Dua M:N Untuk setiap relationship berderajat dua dengan kardinalitas banyak ke banyak, maka perlu dibuat suatu relasi baru dimana kunci utamanya merupakan gabungan dari kunci utama kedua relasi. PEKERJAANPRO (NIP, KODEPRO,...) Kunci utama : NIP+KODEPRO Kunci asing : NIP dan KODEPRO 12.Transformasi Relationship Berderajat Tiga Untuk setiap relationship berderajat tiga, dibuat relasi baru dimana kunci utamanya merupakan gabungan dari kunci utama ketiga relasi. PEKERJAANPRO (NIP, KODEPRO, KODEKOTA,...) Kunci utama : NIP+KODEPRO+KODEKOTA Kunci asing : NIP dan KODEPRO serta KODEKOTA 13. Transformasi Spesialisasi atau Generalisasi Ada 3 cara : a. Untuk superclass dan setiap subclass dibuat relasi tersendiri, dimana pada masingmasing subclass ditambahkan kunci utama dari superclass. b. Setiap subclass dibuat relasi tersendiri dimana pada masing-masing subclass ditambahkan semua atribut dari superclass. Kunci utama relasi adalah kunci utama dari superclass. c. Untuk superclass yang dispesialisasi dengan disjoint, ditransformasikan dengan membuat satu relasi tunggal yang memuat semua atribut dari superclass maupun subclass. Kunci utama relasi adalah kunci utama dari superclass. Diagram EER untuk Database suatu Perusahaan ditransformasikan menjadi beberapa tabel : PEGAWAI (NIP,NAMA,TGLLH,ALM1,KDPOS,UMUR,KODEATASAN, GAPOK,HONOR] DIVISI (KODEDIV,NAMADIV,LOKASI,KODEMANAGER) PROYEK (KODEPRO,NAMAPRO,KODEDIV) LOKASIPRO (KODEPRO,LOKPRO) PEKERJAANPRO (NIP, KODEPRO,JAM) TANGGUNGAN (NIP,NAMATGG,JNSKELAMIN,HUBUNGAN) 3. PELAKSANAAN PRAKTIKUM

13

4. 5.

LATIHAN Membuat EER untuk sistem informasi transaksi buku perpustakaan. TUGAS Membuat EER untuk sistem informasi penjualan online.

14

PERTEMUAN KE- 4

Membuat dan Mengelola Basis Data MySQL


1. Tujuan Mahasiswa memahami bagaimana cara membuat suatu basis data dan memahami berbagai perintah yang berkaitan dengan pengelolaan basis data di MySQL. 2. Dasar Teori MySQL adalah database server yang dapat menyimpan sejumlah basis data yang dapat diakses oleh program client(MySQL Comand Line Client, maupun program aplikasi), pengaksesan data bisa dilakukan dengan bahasa SQL (Structure Query Language). Basis data bisa dibuat melalui command prompt atau melaui shell secara langsung setelah masuk pada subdirektori bin. Untuk membuat suatu basis data, user yang bersangkutan harus mempunyai hak akses untuk membuat basis data. Pembahasan tentang user akan diberikan pada modul tersendiri. Setelah dibuat suatu database bisa digunakan atau dihapus bila tidak diperlukan, yang selanjutnya dapat dibuat table basis datanya, dimana satu skema basis data bisa terdiri atas banyak subskema (table basis data). Root adalah superuser database server MySQL, root berkuasa dalam mengelola manajemen basis data. MySQL juga dapat digunakan sebagai kalkulator sederhana : mysql> SELECT SIn(PI()/4), (4+1)*2; +------------------+---------+ | SIn(PI()/4) | (4+1)*2 | +------------------+---------+ | 0.70710678118655 | 10 | +------------------+---------+ 1 row in set (0.08 sec) Tabel berikut menujukkan tiap prompt yang mungkin akan ditemui dan artinya : Prompt mysql> --> > > Arti Siap menerima perintah baru Menunggu baris berikut dari perintah banyak baris Menunggu baris berikut,memasukkan string yang dimulai oleh petik tunggal Menunggu baris berikut, memasukkan string yang dimulai oleh petik ganda

MySQL juga menyediakan bantuan bagi user , yaitu dengan mengetikkan \h mysql> \h; For information about MySQL products and services, visit: http://www.mysql.com/ For developer information, including the MySQL Reference Manual, visit: http://dev.mysql.com/ To buy MySQL Network Support, training, or other products, visit: https://shop.mysql.com/ List of all MySQL commands: Note that all text commands must be first on line and end with ';' ? (\?) Synonym for `help'. clear (\c) Clear command.

15

connect (\r) Reconnect to the server. Optional arguments are db and host. delimiter (\d) Set statement delimiter. NOTE: Takes the rest of the line as new delimiter. ego (\G) Send command to mysql server, display result vertically. exit (\q) Exit mysql. Same as quit. go (\g) Send command to mysql server. help (\h) Display this help. notee (\t) Don't write into outfile. print (\p) Print current command. prompt (\R) Change your mysql prompt. quit (\q) Quit mysql. rehash (\#) Rebuild completion hash. source (\.) Execute an SQL script file. Takes a file name as an argument. status (\s) Get status information from the server. tee (\T) Set outfile [to_outfile]. Append everything into given outfile. use (\u) Use another database. Takes database name as argument. charset (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets. warnings (\W) Show warnings after every statement. nowarning (\w) Don't show warnings after every statement. For server side help, type 'help contents' Atau dengan mengetikkan help content mysql> help contents You asked for help about help category: "Contents" For more information, type 'help <item>', where <item> is one of the following categories: Account Management Administration Data Definition Data Manipulation Data Types Functions Functions and Modifiers for Use with GROUP BY Geographic Features Language Structure Storage Engines Stored Routines Table Maintenance Transactions Triggers Misalkan ingin mengetahui tipe-tipe data pada MySQL , gunakan help Data Types mysql> help data types; Berikut adalah salah satu contoh DDL dari pembuatan tabel perusahaan_utama. create table perusahaan_utama (kode_perusahaan char(6) not null, nama varcar(25),

16

alamat char(9), primary key (kode_perusahaan), foreign key (kod) references nama on delete cascade) PERINTAH BERSAMA Pada prompt MySQL, biasanya hanya ditulis 1 perintah saja. Tetapi, lebih dari 1 perintah bisa dituliskan bersamaan pada sebuah promp. Penulisan akhir masing-masing perintah diberi tanda ; . Contoh : mysql> create table x (a1 char(5),a2 int(9)) ; create table y (b1 varchar(20), b2 char(5)) ; create table c(c1 int, c2 int); PERINTAH LOAD FILE Mengisi data menggunakan perintah LOAD DATA. Untuk mengetahui sintaks LOAD DATA ketikan perintah help load data; pada prompt MySQL. Contoh perintah : mysql> LOAD DATA INFILE 'DATA.TXT' INTO TABLE AKADEMIK.MHS; dimana DATA.TXT adalah data bertipe txt yang akan dimasukan pada table MHS yang berada pada basis data AKADEMIK. Contoh: mysql> load data "c://appserv/mysql/data/pemesanan/adata.txt" pemesanan.x; mysql>load data "c://appserv/mysql/data/pemesanan/ydata.txt" pemesanan.y; mysql>load data "c://appserv/mysql/data/pemesanan/cdata.txt" pemesanan.c; 3. Pelaksanaan Praktikum MySQL server dapat diaktifkan (dilihat) lewat Start > Setting > ControlPanel > Administrative Tools > Services infile table infile table infile table

into

into

into

Klik Start the service, sehingga kolom Status menjadi started Menjalankan program MySQL Command line Client Klik Start > All Programs > AppServ > MySql Command Line Client

17

Anda akan mengakses MySQL dari client, dengan user root. masukkan password: root (default)

root

setelah dimasukkan password, akan muncul tampilan: Enter password: **** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.0.51b-community-nt-log MySQL Community Edition (GPL) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> Keluar dari program MySQL Command line Client salah satu dari ini: mysql> EXIT mysql> QUIT mysql> \q Memasukan Query Setelah user connect ke server MySQL, selanjutnya user bisa menuliskan query pada prompt mysql. Contoh : mysql> SELECT VERSION(), CURRENT_DATE; +-------------------------+--------------+ | version() | current_date | +-------------------------+--------------+ | 5.0.27-community-nt-log | 2009-08-25 | +-------------------------+--------------+ 1 row in set (0.00 sec) mysql> SELECT VERSION() ; SELECT NOW(); +-------------------------+ | VERSION() | +-------------------------+ | 5.0.27-community-nt-log | +-------------------------+ 1 row in set (0.00 sec) +---------------------+ | NOW() | +---------------------+ | 2009-08-25 20:19:41 | +---------------------+ 1 row in set (0.00 sec)

18

Melihat database mysql> SHOW DATABASES; Hasil: mysql> show databases; +----------+ | Database | +----------+ | mysql | | test | +----------+ 2 rows in set (0.03 sec) mysql> Catatan: semua perintah pada prompt mysql harus diakhiri dengan titik koma (;) Menciptakan database akademik mysql>create database akademik; Menghapus database akademik mysql>drop database akademik; Koneksi ke database akademik mysql> use akademik; tanggapan mysql: Database changed Menciptakan tabel mhs create table mhs (nim char(9) not null, nama varchar(30), kelamin enum('L','P'), tglahir date, jurusan char(2), ipkum decimal(4,2), primary key(nim) ); Menghapus tabel mhs mysql> drop table mhs; Mengetahui nama-nama tabel mysql> show tables; Hasil: mysql> show tables; +--------------------+ | Tables_in_akademik | +--------------------+ | mhs | +--------------------+ 1 row in set (0.00 sec) Melihat struktur tabel mysql> describe mhs; Hasil: mysql> describe mhs;

19

+---------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+---------------+------+-----+---------+-------+ | nim | char(9) | NO | PRI | NULL | | | nama | varchar(30) | YES | | NULL | | | kelamin | enum('L','P') | YES | | NULL | | | tglahir | date | YES | | NULL | | | jurusan | char(2) | YES | | NULL | | | ipkum | decimal(3,2) | YES | | NULL | | +---------+---------------+------+-----+---------+-------+ 6 rows in set (0.03 sec) Mengubah struktur tabel mysql> alter table mhs modify nama varchar(35); artinya: mengubah tipe field nama menjadi varchar(35) mysql> alter table mhs change jurusan jur char(2); artinya: mengubah nama field jurusan menjadi jur dengan tipe char(2) Menambah record (baris / row) mysql> insert into mhs values('067890001', 'Agus 2.56);

Sugiarto',

'L',

'1990-08-17',

'TI',

Menambah record tetapi hanya field nim, nama, dan kelamin yang diisi: mysql> insert into mhs(nim, nama, kelamin) values('067890003', 'Amir Hamzah', 'L'); Melihat isi tabel : mysql> select * from mhs; Membuat kunci komposit Untuk kunci yang tersusun lebih dari satu kolom. create table transkrip ( nim char(9), kode char(7), nilai char, primary key(nim, kode) ); Memberi Nilai Bawaan Jika suatu kolom tidak diberi nilai, bisa dikehendaki untuk dapat diberi nilai bawaan. Dengan kata kunci DEFAULT. create table mhs ( nim char(9) not null, nama varchar(30), kelamin enum('L','P'), tglahir date, jurusan char(2), ipkum decimal(3,2) default 0.0, primary key(nim) ); Menghapus baris delete from nama_tabel [where kondisi];

20

Menghapus sebuah baris delete from mhs where nim=067890001; artinya: akan menghapus baris yang kolom nim bernilai 067890001 (hanya satu karena kunci primer) Menghapus beberapa baris delete from mhs where jurusan=TI; akan menghapus baris yang kolom jurusan bernilai TI (bisa lebih dari satu baris) Menghapus semua baris delete from mhs; Mengubah data dengan UPDATE update nama_tabel set kolom_1 = nilai_baru_1, kolom_2 = nilai_baru_2, ... kolom_n = nilai_baru_n [where kondisi]; Mengubah sebuah kolom sebuah baris update mhs set nama = 'Agus Budianto' where nim= '067890001'; Mengubah beberapa kolom update mhs set nama='Amir Hamzah', jurusan='TI' where nim='067890001'; Mengubah beberapa baris update mhs set ipkum=2.75, where jurusan='TI';

3. Pelaksanaan Praktikum 1. Buatlah tabel Departmen, Karyawan, Proyek, Manajer dengan struktur sebagai berikut Tabel Departemen +-------------+------------------------+ | Field | Type | +-------------+------------------------+ | Id_Dep * | int(11) auto_increment | | Nama | char(100) | | Alamat | enum('S','B') | +-------------+------------------------+

21

Tabel Proyek +-------------+------------------------+ | Field | Type | +-------------+------------------------+ | Id_Proyek * | int(11) auto_increment | | Deskripsi | char(100) | | Selesai | enum('S','B') | +-------------+------------------------+ Tabel Karyawan +-----------------+---------------+ | Field | Type | +-----------------+---------------+ | No_Karyawan * | char(8) | | Nama | char(35) | | Jenis_Kelamin | enum('L','P') | | Tgl_Lahir | date | | Jabatan | char(15) | | Id_Dep ** | char(2) | +-----------------+---------------+ Tabel Teknisi_Proyek +-----------------+---------+ | Field | Type | +-----------------+---------+ | No_Karyawan * | char(8) | | Id_Proyek ** | int(11) | | Tgl_Mulai | date | | Tanggal_Selesai | date | +-----------------+---------+ 4. LATIHAN 1. Tambahkan kolom gaji pada tabel Karyawan. 2. Masukkan Data pada tabel proyek, karyawan, teknisi_proyek minimal 5. (cobalah menggunakan perintah insert maupun load data). 3. Gunakan perintah UPDATE dan Delete, untuk melakukan perubahan terhadap datadata diatas. 5.TUGAS 1. Buatlah Database Penggajian yang terdiri dari tabel Karyawan, Gaji, Penggajian. 2. Gunakan perintah Update dan Delete pada tabel yang telah dibuat.

22

PERTEMUAN KE - 5

SQL
(Operasi pada table tunggal dan Fungsi dasar sampai dengan group by ) 1. TUJUAN Mahasiswa memahami pengertian dari query, view, dan join; cara membuat query untuk mengambil data dari beberapa tabel; cara membuat view;

2. DASAR TEORI
Query Query merupakan kategori perintah yang digunakan untuk meminta layanan dari server basis data. Perintah yang akan kita pelajari sekarang adalah SELECT untuk mengambil data dari basis data. Bentuk perintah SELECT adalah sebagai berikut:
SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] * | expression [ AS output_name ] [, ...] [ FROM from_item [, ...] ] [ WHERE condition ] [ GROUP BY expression [, ...] ] [ HAVING condition [, ...] ] [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ] [ ORDER BY expression [ ASC | DESC | USING operator ] [, ...] ] [ LIMIT { count | ALL } ] [ OFFSET start ] [ FOR UPDATE [ OF table_name [, ...] ] ]

DISTINC : digunakan untuk menampilkan record yang berbeda berdasarkan satu kolom. ( menghilangkan duplikat ). Menampilkan kolom dengan record yang dipilih hanya muncul satu kali. Sintak : Select distinct nama_kolom From nama_tabel Untuk pemilihan distinc lebih dari satu kolom menggunakan sintaks sebagai berikut : Select distinct * From nama_tabel Group by key LIKE : digunakan untuk mencari data yang menyerupai atau hampir sama dengan kriteria tertentu. Biasanya untuk mencari data string / teks. Dalam hal ini digunakan simbol % atau _ . Sintaks : Select nama_kolom From nama_tabel Where nama_kolom like "%....; Menampilkan data dengan kriteria huruf depan yang dipilih (berawalan...) Like (kriteria) % Menampilkan data dengan kriteria huruf akhir yang dipilih (akhiran...) Like % (kriteria) Menampilkan data dengan kriteria yang mengandung karakter tertentu ditengah atau dalam suatu kata tertentu Like % (kriteria) %. ALL : Kata kunci dasar untuk pernyataan SELECT. Kondisi dengan ALL menghasilkan nilai benar jika pembandingan dihasilkan nilai benar untuk setiap nilai dalam subquery. Tetapi kita hampir tidak pernah menemukan kata kunci tersebut karena hasil dari SELECT <nama tabel> dan SELECT ALL <nama tabel> adalah identik. Sintaks : Select All nama_kolom From Nama_Tabel Order by : digunakan untuk mengurutkan data. Sintaks : Select * from nama_tabel

order

by

kriteria;

23

Group by : Mengelompokkan data. Sintaks : Select kriteria from nama_tabel group by kriteria; Fungsi Agregat : untuk menghasilkan nilai berdasar sejumlah data. AVG : menghasilkan nilai rata-rata. COUNT : menghasilkan cacah data. MAX : menghasilkan nilai terbesar. MIN : menghasilkan nilai terkecil. SUM : menghasilkan jumlah data.

3. Pelaksanaan Praktikum
1. Tampilkan seluruh data pada tabel-tabel yang telah anda buat contoh untuk menampilkan isi data pada tabel departemen : Select * from departemen; 2. Tampilkan data menggunakan operator relasional ( =, <>, <, >, <=), dan operator logika ( AND, OR, XOR ). Contoh : menampilkan data karyawan yang gajinya lebih dari 1juta: Select * from karyawan where gaji > 1000000; 3. Tampilkan data pada kolom nama_departemen pada tabel karyawan, menggunakan Distinct. 4. Tampilkan nama karyawan yang mempunyai huruf depan e, Select * from karyawan where nama_karyawan like e%. 5. Tampilkan jumlah karyawan. Select Count (nip) from karyawan; 6. Tampilkan semua nama karyawan dan tanggal lahirnya

4. LATIHAN 1. Buatlah database Nasabah Bank Sejahtera yang terdiri dari tabel data cabang, dan tabel data nasabah sebagai berikut : Data Cabang Kd_cabang Nama Alamat Jml_Nasabah KC001 KC AKAKOM JANTI 8 KC002 KC GEJAYAN GEJAYAN 5 KC003 KC WIROBRAJAN WIROBRAJAN 8 KC004 KC GEDUNG KUNING GEDUNG KUNING 7 KC005 KC BABARSARI BABARSARI 3 Data Nasabah Kd_Nasabah Nama N0001 Januar N0002 N0003 N0004 N0005 N0006 N0007 N0008 N0009 N0010 N0011 N0012 Alamat Condong Catur Febri Gejayan Marina Gamping Aprilia Janti Memey Kotabaru Junita Kalasan Juliana Terban Agusto Sleman Septiana Terban Oktavia Sagan Novia Monjali Desia Timoho Rekening Kd_cabang 12340001 KC002 12340002 12340003 12340004 12340005 12340006 12340007 12340008 12340009 12340010 12340011 12340012 KC004 KC005 KC001 KC003 KC001 KC002 KC005 KC004 KC003 KC001 KC005 Saldo 1500000 2500000 1400000 7000000 2000000 1200000 1300000 2800000 9000000 4500000 750000 1200000

24

2. Buatlah perintah dan tampilkan hasilnya untuk perintah-perintah sebagai berikut: a. Menampilkan semua nasabah, alamat dan saldonya. b. Menampilkan nama nasabah dengan saldo > 2000000. c. Menampilkan nama nasabah dengan alamat Gejayan. d. Menampilkan nama nasabah dengan kode cabang KC003. e. Menampilkan semua data kantor cabang (nama dan alamat). f. Menampilkan nama kantor cabang dengan alamat Janti. g. Menampilkan nama kantor cabang dengan jumlah nasabah > 5 orang.

5. TUGAS Berdasarkan tabel pada latihan buatlah query dan tampilkan hasilnya. a. Mengupdate data kantor cabang dengan kode KC002 menjadi : Nama : KC Ambarukmo Alamat : Ambarukmo Jumlah Nasabah : 15 b. Menghapus data semua kantor cabang dengan jumlah nasabah kurang dari 5. c. Mengupdate data nasabah dengan kode N0010 menjadi : Alamat : Monjali Saldo : 9000000 d. Menghapus semua nasabah dengan alamat Terban. e. Menampilkan saldo maksimal. f. Menampilkan rata-rata saldo nasabah. g. Menampilkan jumlah nasabah.

25

PERTEMUAN KE - 6

Pemrosesan tabel jamak


1. TUJUAN Agar mahasiswa memahami relasi dan pemrosesan tabel jamak menggunakan Cross Join dan Inner Join 2. TEORI SQL mempunyai kemampuan untuk menggabungkan dua tabel atau lebih guna mendapatkan informasi yang diinginkan, dengan proses yang dilakukan dengan nama JOIN. Suatu operasi Join mengkombinasikan product, selection, dan mungkin projection. Operator Join secara horisontal mengkombinasikan / menggabungkan data dari satu baris tabel dengan baris dari yang lain atau tabel yang sama ketika kriteria tertentu ditemukan. Kriteria melibatkan suatu hubungan diantara kolom didalam gabungan tabel relasional. Sintak Join : Select nama_kolom From nama_tabel1 JOIN nama_tabel2 ON nama_tabel1.key1 = nama_tabel2.key1; a. CROSS JOIN / CARTESIAN JOIN : menghasilkan kombinasi semua baris yang terdapat dalam tabel-tabel yang digabungkan baik yang tidak berpasangan maupun yang berpasangan. b. INNER JOIN : menghasilkan output yang berupa kombinasi baris-baris yang memiliki pasangan saja. Kombinasi baris yang bukan pasangan akan dieliminasi. Baris baris yang tidak memiliki pasangan pada tabel lainnya tidak dimunculkan. c. OUTER JOIN adalah join yang menghasilkan semua data dari sebuah tabel dan membatasi data dari tabel lain. Dalam SQL dapat dibedakan menjadi LEFT JOIN dan RIGHT JOIN. LEFT OUTER JOIN / LEFT JOIN : jika tabel yang terletak disebelah kiri operator Left Outer Join ada yang tidak memiliki pasangan dengan tabel yang terletak di kanan operator Left Outer Join baris ini akan tetap disertakan dalam hasil penggabungan. RIGHT OUTER JOIN / RIGHT JOIN : jika baris pada tabel yang terletak disebelah kanan operator RIGHT OUTER JOIN ada yang tidak memiliki pasangan dengan tabel yang terletak di kanan operator Right Outer Join, baris ini tetap disertakan dalam hasil penggabungan. d. UNION UNION merupakan operator yang digunakan untuk menggabungkan hasil query, dengan ketentuan jumlah, nama dan tipe kolom dari masing-masing tabel yang akan ditampilkan datanya harus sama. Contoh : mysql>select jenis,judul from film where jenis='action' union select jenis,judul from film where jenis='drama'; Contoh tersebut sama dengan perintah berikut : mysql>select jenis,judul from film where jenis='action' or jenis='drama'; 3. PELAKSANAAN PRAKTIKUM 1. Lewat command promt, jalankan program MySQL dengan perintah: mysql> , kemudian masukkan password yang diminta (mungkin root). 2. Setelah masuk di lingkungan MySQL, aktifkan database perusahaan yang telah dibuat pada modul I. 3. Gunakan database mahasiswa yang telah dibuat, terdiri dari tabel mhs, matakuliah, khs, sebagai berikut:

26

Tabel mhs +------------+--------+------+----------+--------+-------+ | nim | nama | jk | agama | alamat | kelas | +------------+--------+------+----------+--------+-------+ | 0802100011 | emy | P | islam | janti | A11 | | 0802100012 | waldan | L | islam | sleman | B13 | | 0802100013 | tasya | P | islam | sleman | B13 | | 0802100014 | rika | P | katholik | bantul | A13 | | 0802100015 | thomas | L | katholik | bantul | A12 | +------------+--------+------+----------+--------+-------+ Tabel matakuliah +---------+----------------------+------+ | kode_mk | nama_mk | sks | +---------+----------------------+------+ | DKT01 | pemrograman komputer | 2 | | KKT05 | basis data | 2 | | KKT07 | sistem informasi | 2 | | PKT21 | bahasa inggris | 2 | | DKT33 | pemrograman web | 3 | +---------+----------------------+------+ Tabel khs +------------+---------+----------+-----------+-------+ | nim | kode_mk | semester | TA | nilai | +------------+---------+----------+-----------+-------+ | 0802100011 | DKT01 | 3 | 2007/2008 | A | | 0802100012 | PKT21 | 5 | 2007/2008 | A | | 0802100013 | PKT21 | 5 | 2007/2008 | B | | 0802100014 | DKT01 | 5 | 2007/2008 | C | | 0802100015 | KKT07 | 2 | 2007/2008 | B | +------------+---------+----------+-----------+-------+ 4. Tuliskan perintah : mysql> select mahasiswa.nama,mk.nama_mk from mahasiswa,mk ; merupakan perintah cross join tabel mahasiswa dan matakuliah. 5. Tuliskan perintah: mysql> select a.nim,a.nama,b.nama_mk,c.nilai -> from mahasiswa a,mk b,khs c; Merupakan cross join antara tabel mahasiswa, matakuliah, dan khs. 6. Tuliskan perintah: mysql> select * from khs,mk -> where khs.kode_mk=mk.kode_mk; Perintah tersebut sama dengan perintah berikut: mysql> select * from khs inner join mk -> on khs.kode_mk=mk.kode_mk; 7. Menampilkan informasi matakuliah, tahun ajaran, serta nilai yang diperoleh setiap mahasiswa : mysql>select k.nim, k.kode_mk, m.nama_mk, m.sks, k.semester, k.TA, k.nilai -> from khs k,mk m where k.kode_mk=m.kode_mk; 8. Mengkonversi nilai huruf dari tabel khs menjadi nilai angka : mysql> select k.nim,m.nama_mk,m.sks,k.nilai as nilai, -> case -> when nilai='A' then 4 -> when nilai='B' then 3 -> when nilai='C' then 2 -> when nilai='D' then 1 -> else 0 -> end as nilai_angka -> from khs k inner join mk m on k.kode_mk=m.kode_mk;

27

9. Menghitung point: mysql> select k.nim,m.nama_mk,m.sks,k.nilai, -> case -> when nilai='A' then 4*m.sks -> when nilai='B' then 3*m.sks -> when nilai='C' then 2*m.sks -> when nilai='D' then 1*m.sks -> else 0 -> end as point -> from khs k inner join mk m on k.kode_mk=m.kode_mk; 10. Menampilkan data mahasiswa yang terdapat dalam tabel mahasiswa dan dalam tabel khs : mysql> select mahasiswa.nim,mahasiswa.nama -> from mahasiswa inner join khs on mahasiswa.nim=khs.nim; 11. Menggabungkan tiga tabel : mysql> select a.nim,a.nama,b.nama_mk,b.sks,c.semester,c.nilai,c.TA -> from mahasiswa a inner join khs c on a.nim=c.nim -> inner join mk b on c.kode_mk=b.kode_mk; 12. Menghitung IPK : mysql> select khs.nim,mahasiswa.nama,(sum( -> case -> when khs.nilai='A' then 4*mk.sks -> when khs.nilai='B' then 3*mk.sks -> when khs.nilai='C' then 2*mk.sks -> when khs.nilai='D' then 1*mk.sks -> else 0 -> end )/sum(mk.sks)) as ipk -> from khs inner join mk on khs.kode_mk=mk.kode_mk -> inner join mahasiswa on khs.nim=mahasiswa.nim -> group by khs.nim,mahasiswa.nama; 4. LATIHAN Gunakan database mahasiswa yang telah dibuat, tambahkan tabel jurusan, dan kelas sebagai berikut :
Tabel Dosen +-----------+-----------+------+------------+--------------+------------+ | nip | namadosen | jk | alamat | tgl_lhr | pendidikan | +-----------+-----------+------+------------+--------------+------------+ | 132312490 | aulia | P | yogyakarta | 1970-11-02 | S2 | | 132312478 | putri | P | janti | 1950-12-30 | S3 | | 132312455 | ratna | P | sleman | 1966-04-24 | S2 | | 132312445 | mirza | L | bantul | 1972-02-22 | S3 | | 132312433 | budi | L | bantul | 1962-07-10 | S2 | +-----------+-----------+------+------------+--------------+------------+ Tabel Jurusan +--------------+----------------------------+-----------+ | kode_jurusan | nama_jurusan | ketua | +--------------+----------------------------+-----------+ | S1TI | Teknik Informatika S1 | 132312490 | | S1SI | Sistem Informasi S1 | 132312478 | | D3MI | Manajemen Informatika D3 | 132312455 | | D3KA | Komputerisasi Akuntansi D3 | 132312445 | | D3TK | Teknik Komputer D3 | 132312433 | +--------------+----------------------------+-----------+ Tabel Kelas +--------+--------------+-----------+------------+ | kelas | kode_jurusan | nip | dosen_wali | +--------+--------------+-----------+------------+ | S1TI3A | S1TI | 132312490 | 132312490 | | S1TI3C | S1TI | 132312490 | 132312490 | | D3MI1B | D3MI | 132312455 | 132312455 | | S1SI5A | S1SI | 132312478 | 132312478 | +--------+--------------+-----------+------------+

28

1. Tuliskan perintah untuk mengetahui umur dosen 2.Tuliskan perintah mysql> select m.nim,m.nama,k.kode_mk,k.nilai -> from mahasiswa m left join khs k on m.nim=k.nim; 3.Tuliskan perintah : mysql> select m.nim,k.kelas as kelas,kode_jurusan as jurusan -> from mahasiswa m right join kelas k on m.kelas=k.kelas; 4. Tuliskan perintah : mysql> select kelas,kode_jurusan from kelas where kelas='S1TI3A' union select kelas,kode_jurusan from kelas where kelas='D3MI1B; 5. TUGAS 1. Gunakan database penggajian dan terapkan fungsi Cross Join, Inner Join sesuai pada latihan sebelumnya. 2. Hitung gaji berdasarkan tunjangan, gaji pokok dan bonus, dengan ketentuan : Tunjangan: Jika jumlah anak = 1, tunjangan = 1% dari gaji pokok Jika jumlah anak = 2, tunjangan = 2% dari gaji pokok Jika jumlah anak = 3, tunjangan = 3% dari gaji pokok Selain itu tidak mendapatkan tunjangan. Bonus : Gol 1 = 100000, Gol 2=200000, Gol 3=300000, Gol =400000 Potongan gaji adalah 10 % dari gaji kotor (gajipokok + tunjangan + bonus) --- &&& ---

29

PERTEMUAN KE - 7

SUB QUERY
A. Tujuan Mahasiswa memahami penggunaan subquery B. Teori Sub Query Sub query berarti query didalam query. Dengan menggunakan subquery, hasil dari query akan menjadi bagian dari query diatasnya. Subquery terletak di dalam clause WHERE atau HAVING. Pada clausa WHERE, subquery digunakan untuk memilih barisbaris tertentu, yang kemudian digunakan oleh query. Sedangkan pada clausa HAVING, subquery digunakan oleh query. Sintak subquery SELECT <atribut_tabel_1> FROM tabel_1 WHERE <atribut_tabel_1> IN (SELECT <atribut_tabel_2> FROM tabel_2) Pada sintak diatas SELECT <atribut_tabel_1> FROM tabel_1 disebut query, sedangkan SELECT <atribut_tabel_2> FROM tabel_2 Disebut sub query. (SELECT id FROM memasokWHERE jml_bunga = 1 ) EXIST Subquery Dengan EXIST, subquery dapat menghasilkan satu atau lebih kolom. Contoh : SELECT id, nama FROM petani WHERE NOT EXIST (SELECT stock_num,manu_code FROM items WHERE stock.stock_num = items.stock_num AND stock.manu_code = items.manu_code)

ALL/ANY/SOME Subquery ANY, ALL atau SOME dipakai dalam subquery bila hasil yang dikembalikan lebih dari satu. Jika ANY, ALL atau SOME diabaikan dan subquery menghasilkan lebih dari satu nilai, maka pesan kesalahan akan muncul. Contoh 1 : SELECT DISTINCT orders_num FROM items WHERE total_price > ALL ( SELECT total_price FROM items WHERE orders_num = 1023) Contoh 2 : SELECT DISTINCT orders_num FROM items WHERE total_price > SELECT MAX(total_price)FROM items WHERE orders_num = 1023) Contoh 3 : SELECT DISTINCT orders_num FROM items WHERE total_price > ANY ( SELECT total_price FROM items WHERE orders_num = 1023)

30

C. PRAKTIKUM 1. Gunakan database mahasiswa yang telah dibuat. 2. Menampilkan daftar mahasiswa yang terdapat dalam tabel mahasiswa dan tabel khs. mysql>select nim,nama from mahasiswa where exists (select * from khs where nim=mahasiswa.nim); 3. Tulis perintah : mysql>select nim,nama from mahasiswa where nim = any (select distinct nim from khs); 4. Tulis perintah : mysql>select nim,nama from mahasiswa where nim in (select distinct nim from khs); 5. Tulis perintah : mysql>select nim,nama from mahasiswa where not exists (select * from khs where nim=mahasiswa.nim); D. LATIHAN Gunakan tabel mahasiswa, kelas, jurusan dan dosen untuk menampilkan data berikut: a. menampilkan data dosen (nip, nama) yang menjabat sebagai ketua jurusan sekaligus menjadi dosen wali. b. Menampilkan data dosen (nip,nama) yang tidak menjabat sebagai ketua jurusan. c. Menampilkan data dosen (nip, nama) yang tidak menjadi dosen wali. E. TUGAS 1. Menampilkan daftar mahasiswa yang dibimbing oleh seorang dosen wali. 2. Menampilkan daftar mahasiswa suatu jurusan. 3. Menampilkan daftar mahasiswa suatu jenjang program studi.

--- &&& --

31

PERTEMUAN KE - 8

STUDI KASUS
1. Buatlah 3 buah tabel sebagai berikut : PELANGGAN +--------------+----------+------+-----+ | Field | Type | Null | Key | +--------------+----------+------+-----+ | kd_pelanggan | char(3) | YES | PRI | | Nama | char(7) | YES | | | Alamat | char(10) | YES | | | Telp | char(5) | YES | | +--------------+----------+------+-----+ PESANAN +--------------+---------+------+-----+| Field | Type | Null | Key | +--------------+---------+------+-----+| Kd_Pesan | char(4) | NO | PRI | | tgl_pesan | date | YES | | | tgl_mulai | date | YES | | | tgl_selesai | date | YES | | | total_biaya | int(9) | YES | | | kd_pelanggan | char(3) | YES | | +--------------+---------+------+-----+RINCIPESAN +--------------+--------------+------+-----+ | Field | Type | Null | Key | +--------------+--------------+------+-----+ | Kd_Pesan | char(4) | YES | | | biayaBhnBaku | mediumint(9) | YES | | | biayaPegawai | mediumint(9) | YES | | | BOP | mediumint(9) | YES | | | jum_pesan | smallint(2) | YES | | | tujuan | char(10) | YES | | +--------------+--------------+------+-----+ 2. Isilah tabel dengan data seperti dibawah ini
+--------------+--------+---------------------+--------------+ | Kd_Pelanggan | Nama | Alamat | Telp | +--------------+--------+---------------------+--------------+ | P01 | Risma | Jl. Jeruk 4, Yogya | 08122941200 | | P02 | Dudik | Jl. Mgl 71, Mgl | (0293)456789 | | P03 | Sumarni| Baciro, Yogya | 08595004868 | +--------------+--------+---------------------+--------------+
+----------+--------------+--------------+--------+-----------+------------+ | Kd_Pesan | biayaBhnBaku | biayaPegawai | BOP | jum_pesan | tujuan | +----------+--------------+--------------+--------+-----------+------------+ | AB01 | 50000 | 150000 | 10000 | 100 | Ibu Ani | | AB01 | 30000 | 900000 | 78000 | 500 | Ibu Ana | | AB02 | 30000 | 900000 | 100000 | 50 | Bapak Andi | | AC01 | 500 | 150000 | 250000 | 150 | Ibu Lala | +----------+--------------+--------------+--------+-----------+------------+

32

+----------+--------------+------------+------------+-------------+-------------+ | Kd_Pesan | Kd_Pelanggan | tgl_pesan | tgl_mulai | tgl_selesai | total_biaya | +----------+--------------+------------+------------+-------------+-------------+ | AB01 | P01 | 2009-07-20 | 2020-08-20 | 2009-09-20 | 5000000 | | AB02 | P02 | 2008-06-20 | 2015-08-20 | 2001-09-10 | 25000000 | | AC01 | P01 | 2009-08-20 | 2020-08-20 | 2001-09-20 | 12500000 | | AC02 | P03 | 2009-05-20 | 2022-08-20 | 2001-09-10 | 1000000 | +----------+--------------+------------+------------+-------------+-------------+

3. Ketikkan perintah dibawah ini , tampilkan hasilnya, dan apakah arti perintah-perintah tersebut. a. b. c. select * from pelanggan; select * from pesanan; select * from rincipesan; select nama, alamat from pelanggan where kd_pelanggan in (select kd_pelanggan from pesanan) select kd_pesan, date_format(tgl_pesan,'%e %b %Y') from pesanan ;

TUGAS 1. Tampilkan kode pesan dan tanggal pesan yang total-biaya lebih besar 5.000.000. 2. Tampilkan nama pelanggan yang melakukan pesanan lebih dari 1 kali. 3. Tampilkan kode pesan, lama pesan (tahun) dari tabel pesanan , kemudian diurutkan berdasarka urutan lama pesan terlama. (Catt : cari perintah to_days atau year )

--oo0oo--

33

Anda mungkin juga menyukai