tag:blogger.com,1999:blog-30750411659893668952024-02-20T02:15:43.765-08:00Perancangan Basis DataiRene..http://www.blogger.com/profile/00246901616755567914noreply@blogger.comBlogger8125tag:blogger.com,1999:blog-3075041165989366895.post-91052873247491140852010-01-22T23:29:00.002-08:002010-01-31T20:34:29.595-08:00Studi Kasus SQL : Penggajian dan Absensi KaryawanDalam suatu aplikasi di sebuah perusahaan biasanya dilengkapi dengan aplikasi absensi karyawan yang dalam implementasinya mengikuti teknologi yang ada misalnya dengan menggunakan barcode, finggerprint atau dinput manual. Terlepas dari itu semua, akhir dari aplikasi tersebut semuanya berujung pada penggajian karyawan. <br />Berikut ini contoh tabel penggajian karyawan beserta tanya jawab SQL yang sangat berguna untuk kepentingan laporan keuangan serta operasional perusahaan. <br /> <br />Keterangan fungsi Tabel <br /><br />No Nama Tabel Fungsi <br />1 TAbsen Untuk menyimpan data absensi karyawan <br />2 TKry Untuk menyimpan data karyawan <br />3 TUser Untuk menyimpan data karyawan bagian keuangan yang mengoprasikan aplikasi penggajian <br />4 TStatus Untuk menyimpan data Status karyawan, tabel ini berkaitan dengan tunjangan karyawan berdasarkan status, misalkan status menikah dengan 2 anak maka tunjangannya berbeda dengan menikah tanpa anak dan seterusnya. <br />5 TJabatan Untuk menyimpan deskripsi jabatan serta tunjangan yang diberikan berkaitan dengan jabatan tersebut <br />6 Tkonstanta Untuk menyimpan variabel yang bersifat konstan seperti besarnya uang makan yang selalu berubah mengikuti perkembangan jaman. <br />7 TLog Untuk menyimpan data user saat login yang digunakan untuk memantau aktifitas user serta digunakan untuk merekam user yang menggunakan aplikasi ini <br /> <br />Pertanyaan dan Jawaban Query <br />Penggajian dan Absensi Karyawan <br /><br />1. Inputkan 1 data karyawan ke Tkry <br />Jawab <br />Insert into TKry values (‘2000’,’Dewi’,’Kuningan’,’01’,’3340230’,’12-10-2007’, ’27-01-1990’,’01’,’1000000’,’0’) <br />2. Inputkan 1 data karyawan ke Tkry tanpa data notelp dan tgllahir <br />Jawab <br />Insert into Tkry (nip,nama,alamat,kodestatus,tglmasuk, kodejabatan,gajipokok,statusmasuk) values (‘2001’,’Agus’,’Kuningan’,’01’,’12-10-2007’,’01’,’1000000’,’0’) <br />3. Inputkan 2 data karyawan ke Tkry sekaligus <br />Jawab <br />Insert into Tkry values <br />(‘2002’,’Banu’,’cirebon’,’01’,’3999230’,’11-10-2007’, ’22-01-1988’,’01’,’1000000’,’0’), <br />(‘2003’,’Andi’,’cirebon’,’01’,’2023230’,’11-10-2007’, ’122-01-1978’,’01’,’1000000’,’0’) <br />4. Editlah data karyawan dengan Nip 2001 gantilah alamat kuningan menjadi cirebon <br />Jawab <br />Update Tkry set alamat=’Cirebon’ where nip=’2001’ <br />5. Hapuslah data karyawan dengan nama Agus dan Nip 2001 <br />Jawab <br />Delete from Tkry where nip=’2001’ <br />6. Tampilkan semua data karyawan <br />Jawab <br />Select * from TKry <br />7. Tampilkan data absensi bulan januari 2009 <br />Jawab <br />SELECT tkry.nama, count(tabsen.nip) as jumlah_absen <br />from tkry,tabsen <br />where tkry.nip=tabsen.nip and tabsen.tgl like ‘%01-2009’ <br />group by tkry.nama <br />8. Tampilkan data gaji bulan januari 2009 <br />Jawab <br />SELECT Tkry.Nama, (tgaji.gajipokok+tgaji.tunjanganstatus+tgaji.tunjanganjabatan-potongan-pph21-infaq) as GAJI_Bersih <br />from tkry,tgaji <br />where tkry.nip=tgaji.nip and tgaji.bulan=’01/2009’ <br />9. Tampilkan karyawan yang tidak masuk hari ini <br />Jawab <br />Select tkry.Nip, tkry.Nama from tkry,tabsen <br />where tkry.statusmasuk=’0’ and <br />tabsen.tgl=’02/01/2009’ and <br />tkry.nip=tabsen.nip <br />10. Tampilkan data gaji karyawan yang tidak mempunyai tunjangan dengan format Nip, Nama, gaji_bersih <br />Jawab <br />select tkry.nip, tkry.nama, (tgaji.gajipokok+tgaji.tunjanganstatus+tgaji.tunjanganjabatan-potongan-pph21-infaq) as GAJI_Bersih <br />from tkry, tgaji <br />where <br />(tunjanganstatus+tunjanganjabatan)=0 and <br />Tkry.nip=tabsen.nip and <br />Tabsen.bulan=’01/2009’ <br /> 11. Tampilkan data gaji karyawan yang tunjangannya kurang dari 1 juta dengan format Nip, Nama, gaji_bersih <br />Jawab <br />select tkry.nip, tkry.nama, (tgaji.gajipokok+tgaji.tunjanganstatus+tgaji.tunjanganjabatan-potongan-pph21-infaq) as GAJI_Bersih <br />from tkry, tgaji <br />where <br />(tunjanganstatus+tunjanganjabatan)<1000000 and <br />Tkry.nip=tabsen.nip and <br />Tabsen.bulan=’01/2009’ <br />12. Tampilkan data gaji karyawan yang pajak pph21 kurang dari 100 ribu dengan format Nip, Nama, gaji_bersih <br />Jawab <br />select tkry.nip, tkry.nama, (tgaji.gajipokok+tgaji.tunjanganstatus+tgaji.tunjanganjabatan-potongan-pph21-infaq) as GAJI_Bersih <br />from tkry, tgaji <br />where <br />tabsen.pph21 <=100000 and <br />Tkry.nip=tabsen.nip and <br />Tabsen.bulan=’01/2009’ <br />13. Tampilkan data log user bulan januari 2009 <br />Jawab <br />Select * from tlog where tgl like ‘%01/2009’ <br />14. Tampilkan data karyawan yang mempunyai 1 anak <br />Jawab <br />Select * from tkry,tstatus <br />Where tkry.kodestatus=tstatus.kodestatus and <br />Tstatus.jumlahanak=’1’ <br />15. Tampilkan data karyawan yang jabatannya staff <br />Jawab <br />Select * from tkry, tjabatan <br />Where tkry.kodejabatan=tjabatan.kodejabatan and <br />Jabatan=’staff’ <br />16. Tampilkan data gaji karyawan yang masih singel dengan format Nip, Nama, gaji_bersih <br />Jawab <br />select tkry.nip, tkry.nama,(tgaji.gajipokok+tgaji.tunjanganstatus+tgaji.tunjanganjabatan-potongan-pph21-infaq) as GAJI_Bersih <br />from tkry, tgaji, tstatus <br />where <br />Tkry.nip=tabsen.nip and <br />Tkry.kodestatus=tstatus.kodestatus and <br />Tstatus.status=’singel’ and <br />Tabsen.bulan=’01/2009’ <br />17. Tampilkan data karyawan yang tinggal di cirebon <br />Jawab <br />Select * from tkry where alamat like ’%cirebon’ <br />18. Tampilkan Jumlah total uang yang harus dibayarkan kepada karyawan, jumlah total pajak yang harus disetorkan dan jumlah total infaq yang harus didistribusikan selama bulan januari 2009 <br />Jawab <br />Select sum(tgaji.gajipokok+tgaji.tunjanganstatus+tgaji.tunjanganjabatan-potongan-pph21-infaq) as Total_Gaji, sum(pph21) as total_pajak, sum(infaq) as Total_Infaq from tgaji <br />Where bulan = ‘01/2009’ <br />19. Tampilkan data karyawan yang absennya kurang dari 20 hari di bulan januari 2009 dengan format Nip, Nama, jumlah_absen <br />Jawab <br /> <br />Select tkry.Nip, Nama, count(tabsen.nip) as Jumlah_absen from tkry, tabsen where tkry.nip=tabsen.nip group by tkry.nip,tkry.nama having count(tabsen.nip)<20 <br />20. Tampilkan data karyawan yang tidak mengisi jam keluar selama bulan januari 2009 kurang dari 5 <br />Jawab <br />Select tkry.Nip, Nama, count(tabsen.nip) as Jumlah_absen from tkry, tabsen where tkry.nip=tabsen.nip and tabsen.jamkeluar is null group by tkry.nip,tkry.nama <br /><br />Dengan panduan tanya jawab diatas sudah hampir mewakili seluruh query yang ada pada program aplikasi penggajian karyawan serta absensinya, pekerjaan seorang DBA adalah menjawab pertanyaan yang diminta oleh user. Dalam prakteknya pertanyaan itu akan berkembang menjadi puluhan bahkan ratusan pertanyaan baru yang tidak terfikirkan sebelumnnya.iRene..http://www.blogger.com/profile/00246901616755567914noreply@blogger.com0tag:blogger.com,1999:blog-3075041165989366895.post-43354064937544546712010-01-22T23:29:00.001-08:002010-01-31T20:34:29.598-08:00Koneksi Visual Basic - SQL ServerKoneksi database merupakan sesuatu yang fital dalam pemrograman karena tanpa adanya koneksi semua program tidak bisa berfungsi sehingga proses ini sangatlah penting sebelum melangkah ketahapan yang selanjutnya. <br />Pada materi ini akan dibahas bagaimana mengkoneksikan visual basic dengan SQL server dengan menggunakan adodc dengan pola modular. <br /><br />Langkah 1 : <br /><br />Siapkan form Vb sebagai berikut : <br />Klik kanan adodc1 pilih adodc properties untuk mendapatkan koneksi maka akan tampil sebagai berikut : <br />Kemudian Klik build untuk memilih database yang dikehendaki <br />Klik next untuk memilih server dan database <br />Setelah server name dipilih dan database dipilih serta telah ditest koneksinnya klik OK <br />Setelah didapat konekisinya maka file inilah yang dibutuhkan selanjutnya : <br />Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=dblat3;Data Source=ACER <br />Sebetulnya langkah langkah diatas tidak diperlukan jika anda bisa menghapal file diatas<br />Untuk mempermudah proses koneksi sebaiknya file koneksi diatas disimpan pada modul vb caranya : <br /><br />Project -> Add Module <br />Pada module tersebut letakkan file : <br />Public DB As ADODB.Connection <br />Public RS As ADODB.Recordset <br />Public KONEKSI As String <br />Public SQL As String <br /><br />Sub main() <br />KONEKSI = " Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=dblat3;Data Source=ACER <br />" <br />Set DB = New ADODB.Connection <br />DB.CursorLocation = adUseClient <br />DB.Open KONEKSI <br />Form1.Show <br />End Sub <br />Sub RECORD() <br />Set RS = New ADODB.Recordset <br />RS.CursorLocation = adUseClient <br />RS.Open SQL, DB, adOpenDynamic, adLockOptimistic <br />End Sub <br /><br />Setelah file modul sudah dibuat maka adodc1 sudah tidak diperlukan lagi dan dihapus juga gpp <br /> <br /><br />Script nya : <br />Private Sub Form_Load() <br />SQL = "select * from tmhs" <br />RECORD <br />Set DataGrid1.DataSource = RS <br />DataGrid1.Refresh <br />End SubiRene..http://www.blogger.com/profile/00246901616755567914noreply@blogger.com0tag:blogger.com,1999:blog-3075041165989366895.post-54765253930224613712010-01-22T23:25:00.000-08:002010-01-31T20:34:29.601-08:00Backup dan RecoveryData dan database merupakan komponen terpenting dalam suatu sistem informasi manajemen, disamping tentu saja aplikasi untuk sistem informasi harus tersedia, keduanya saling tergantung. Suatu aplikasi sistem informasi manajemen tidak ada gunanya jika tidak mempunyai data yang lengkap, demikian juga sebaliknya jika punya data tetapi tidak mempunyai aplikasi yang digunakan untuk mengelolanya sehingga tidak dapat dihasilkan suatu laporan, statistik atau pun informasi. <br /><br />Backup Data <br />Backup data merupakan salah satu kegiatan yang harus dilakukan oleh pengelola database untuk melakukan penyalinan sistem, data dan aplikasi. Backup data harus dilakukan untuk menjaga jangan sampai terjadi kerusakan sistem dari luar ataupun dari dalam sistem, yang disengaja atau pun tidak disengaja. <br /> <br />Proses backup data dilakukan secara rutin sesuai dengan jadwal yang telah ditentukan, jika dimisalkan pada sebuah perusahaan memiliki 1 database yang melayani 100 transaksi perhari bisa kita bayangkan berapa banyak data yang terkumpul dalam 1 bulan, dan jika terjadi kerusakan system maka data yang begitu banyak akan hilang atau akan menjadi pekerjaan input data baru yang membuang buang waktu, dengan adanya proses backup data kejadian tersebut bisa dihindari, misalnya secara rutin administrator database melakukan penyimpanan data setiap minggu sehingga jika pada minggu ketiga hari kedua terjadi crash system atau kerusakan system yang terjadi akibat gangguan system atau factor gangguan cuaca seperti gempa, banjir dan tanah longsor yang merusak data secara fisik. Maka data yang hilang hanya 2 hari, sehingga total data yang hilang adalah 200 transaksi, dari ilustrasi diatas kita bisa mengetahui betapa pentingnya proses backup data untuk daur hidup suatu system database. <br /><br />Restore Data <br />Restore adalah proses mengembalikan backup ke dalam sistem. Restore dilakukan untuk mengembalikan keadaan sistem kembali pada keadaan semula, keadaan terakhir pada saat operasional, sebelum terjadi kerusakan sistem. Pada proses ini akan dilakukan pengembalian data baik struktur maupun isi dari database, secara teori proses ini adalah proses minimum pengembalian system tergantung dari waktu scheduling yang menjadi dasar proses backup, jika waktu scheduling dijadwalkan terlalu lama maka akan banyak data nya hilang. <br /><br /> <br />Skenario kegagalan dan Resiko Backup <br />Kegagalan sebuah sistem bisa disebabkan oleh banyak sekali faktor, salah satu faktor bencana alam yang tidak pernah diduga dan diperkirakan sehingga skenario kegagalan sistem harus diperhitungkan dengan pembangunan sistem backup harian dengan media backup yang disimpan ditempat berbeda. <br />Dengan menggunakan basis data web ini semuanya bisa dilakukan dengan mudah. <br />Metoda backup dan recovery <br />Proses backup data sangatlah penting bagi keamanan data agar bisa terjaga dengan baik terutama saat terjadi crash pada sistem basis data yang disebabkan oleh kerusahakan fisik hardware ataupun karena faktor alam. <br />Banyak sekali cara untuk melakukan backup data, berikut ini metoda yang bisa dlakukan saat akan melakukan backup data : <br /> a) Backup Logika vs backup Physic <br /> b) Backup online vs backup offline <br /> c) Backup local vs backup remote <br /> d) backup penuh vs backput bertambah sebagian <br /> e) Point in time recovery <br /> f) Backup scheduling, compression dan encryption <br /> g) Table Maintenance <br /><br /> <br />MySQL Backup dan Recovery <br />Lebih jauh berikut ini penjelasan tentang masing masing metoda backup : <br /> 1. Backup Logika vs backup Physic <br />Backup logika adalah menyimpan perintah logic dari struktur database dan isinya yang direpresentasikan dalam perintah SQL. Seperti CREATE DATABASE, CREATE TABLE dan INSERT DATA. <br />Backup fisik adalah mengambil datatabase dalam bentuk fisik, untuk database yang menggunakan Appserv secara fisik data disimpan pada folder C:\\Appserv\Mysql\data\ <br />Pada folder tersebut terdapat file database, setiap table diciptakan dari 3 file yaitu .MYD, ,FRM dan .MYI, pada saat pengambilan data dilakukan dengan mengcopy folder yang didalamnya menyimpan data dari database yang kita punya. Data yang diambil adalah seluruh database dan tidak bisa terpilih, sangat berbeda dengan backup secara logika, data yang diambil bisa dipilih sesuai dengan yang diinginkan. <br />Berikut ini karakteristik backup secara logika : <br /> • Backup dilakukan melalui server MySQL untuk mengambil struktur dan informasi data. <br /> • Backup berjalan lebih lambat karena server harus mengakses informasi data dan mengirimkannya dalam bentuk logika pada file backup. <br /> • Output bisa lebih besar dari pada bentuk fisik, misalkan data yang disimpan 5 MB dalam bentuk file sql maka pada saat recovery akan terjadi kehabisan memori karena prosesnya akan menghabiskan banyak memori untuk mengembalikan dalam bentuk semula. <br /> • Backup dan Restore dilakukan dengan mengabaikan mesin yang digunakan. <br /> • Backup logika tidak melibatkan banyak file hanya satu file logika yang biasanya disimpan dalam file .SQL <br /> • Data disimpan dalam bentuk logika yang merupakan bahasa DDL dan DML. <br /> • Backup data dilakukan saat server sudah dijalankan. <br /> • Program untuk backup digunakan mysqldump.exe yang memanggil file dikeluarkan dalam bentuk logika file, seperti tsiswa.sql <br /> • Untuk mengeluarkan data dalam bentuk file lain bisa digunakan perintah : <br />SELECT …..INTO OUTFILE <br /><br /> Berikut ini karakteristik backup fisik <br /> • Backup terdiri dari salinan file dan database, ini adalah salinan dari semua bagian direktori MySQL, data dari table memori tidak disampan pada disk. <br /> • Backup data secara fisik lebih cepat karena tidak melakukan memrosesan logika, hanya pengcopian secara fisik. <br /> • Outputnya lebih sederhana dibandingkan backup logika. <br /> • Sebagai tambahan dari database, backup dapat meliputi file manapun yang terdiri dari file MYi, MYD dan FRM. <br /> 2. Backup online vs backup offline <br />Backup online dilakukan saat server MySQL sedang berjalan sedangkan backup offline dilakukan saat server sedang dihentikan. <br />Metoda Backup Online mempunyai karakteristik : <br /> • Lebih sedikit mengganggu klien lain karena dapat menggunakan mysql server tanpa harus menghentikan pekerjaan selama proses backup. <br /> <br /> • Backup data hanya dilakukan pada data yang tidak sedang terlibat dalam transaksi. <br /> Metoda Backup Offline mempunyai karakteristik : <br /> • Mempengarui klien yang kurang baik sebab server tidak berjalan selama proses berlangsung. <br /> • Backup lebih sederhana memeriksa prosedur sebab tidak ada kemungkinan gangguan campur tangan dari aktifitas klien. <br /> 3. Backup local vs backup remote <br />Suatu backup local dilakukan pada host yang sama pada server MySQL yang sedang running, sedangkan suatu backup remote diaktifkan dari suatu host yang berbeda. <br /> • Mysqldump dapat menghubungkan ke server remote atau local. Karena output SQL (perintah create dan insert) local atau remote dapat diselesaikan dan degenerate dari client. <br /> • Mysqlhotcopy melaksanakan hanya backup local, menghubungkan ke server untuk menguncinya untuk menghindari modifikasi data dan kemudian menyalin file ke local. <br /> • Select ………into outfile dapat diaktifkan dari satu host remote dari client, tetapi field output diciptakan pada host server. <br /> • Backup fisik secara khas diaktifkan pada server mysql sedemikian hingga server dapat diambil saat ofline, walaupun cara pengambilannya bisa dengan remote. <br /> <br /> 4. Snapshot Backup <br />Beberapa file system implementasi memungkinkan snapshot untuk diambil. Ini menyeddiakan salinan logika menyangkut file system pada titik yang telah ditentukan waktunya, tanpa keharusan untuk secara fisik mengcopy seluruh file system. MySQL sendiri tidak menghasilkan kemampuan untuk mengambil file system snapshot. Itu tersedia melalui aplikasi lain seperti veritas atau LVM. <br />5. Backup penuh vs Backup bertambah sebagian <br />Suatu backup penuh meliputi semua data yang diatur oleh suatu MySQL Server pada titik ditentukan pada waktunya. Suatu incremental backup terdiri dari perubahan pada data sesuai dengan log pada server. <br />6. Point in time recovery <br />Metoda lain menggunakan log binary untuk mencapai point in time recovery. Ini dilaksanakan dengan recovery yang pertama dari backup yang pertama dan merecovery seperti semula dan memodifikasi prosesnya sampai waktu yang kita tentukan. <br />7. Backup scheduling, compression dan encryption <br />Backup scheduling adalah suatu yang penting untuk otomatisasi prosedur backup. Proses ini bisa menghindari proses hacking yang dilakukan diinternet sehingga data selalu terjaga. Proses ini biasa diterapkan pada system online yang mengcover banyak data pada transaksi. <br />8. Table Maintenance <br />Integritas data dapat disepakati jika table mengalami corrupt. My SQL menyediakan program untuk memeriksa table dan perbaikan jika terdapat masalah yang ditemukan, program ini biasa diterapkan pada table MyIsam. <br /><br /> <br />SQL Server Backup and Recovery <br />Konsep mengenai backup dan recovery telah diuraikan secara jelas diatas, SQL server memiliki dua buah sarana yang dirancang untuk menjalankan salinan backup dari database dan komponen komponennya. Sarana sarana ini sangat penting untuk kesinambungan operasi database apabila ada kegagalan pada perangkat keras, penghapusan tabel secara tidak sengaja atau bahkan kehilangan data pada server. <br />SQL server mengijinkan 2 jenis backup yaitu : <br /> Backup Lengkap : merupakan gambaran lengkap dari database. <br /> Backup diferensial : merupakan salinan perubahan yang dilakukan pada database semenjak proses backup terakhir dilakukan. <br /><br />Dengan kedua metoda backup ini anda bisa membuat mekanisme backup yang aman untuk mengoptimalkan ruang dan waktu akses disk. <br />Sebagai contoh, kita bisa melakukan backup lengkap dipagi hari dan backup diferensial pada siang hari dan diakhir hari. <br /><br />Membuat Backup dengan Enterprise Manager <br />Untuk melakukan backup dengan Enterprise Manager, klik kanan pada folder database yang akan dibackup untuk mengaktifkan menu shortcut. <br /><br />Pilihlah All Task | Backup Database <br /><br />Pilihlah database yang akan dibackup, kemudian pilihlah data yang akan dibackup, sebagian atau sebagian. Untuk menjawab pertanyaan ini jika anda baru pertama kali backup maka gunakan database complete tetapi jika membackup yang selanjutnya gunakan database differentian <br /><br />Pilihlah tujuan file yang akan anda simpan, misalkan di C:\MSSQL7\Backup\namafile. <br />Jika disimpan pada tempat yang sama maka pastikan belum ada file tersebut. Setelah selesai tahapan backup maka simpanlah file yang telah anda backup. <br />Dalam file tersebut terdapat data, view, procedure dan trigger. <br /><br />Merestore data pada SQL Server <br />Misalkan suatu saat server anda mengalami kerusakan parah akibat bencana alam atau disebabkan oleh hilangnya fisik dari server maka jika anda masih mempunyai backup dari darabase hal itu bukan merupakan hal yang susah, tinggal lakukan proses restorasi data semua akan dengan mudah teratasi. <br />Berikut ini langkah langkah restorasi data yang telah dibackup ke database yang baru misalkan database dbsaya. <br />Klik kanan database yang menjadi tujuan tempat restor data kemudian pilihlah All Task -> Restore Database <br />Pilih database tujuan anda jika masih tidak sesuai, kemudian pola restore pilihlah from device karena file kita berada ditempat lain atau di flashdisk <br />Pilihlah select devices maka akan tampil <br /><br />Pilihlah Add untuk memilih source nya. <br /><br />Pilihlah file yang akan anda restore. <br />Jika anda pernah membackup data tersebut sebelumnya pilihlah force untuk menimpa data yang lama.iRene..http://www.blogger.com/profile/00246901616755567914noreply@blogger.com0tag:blogger.com,1999:blog-3075041165989366895.post-80645472704380116562010-01-22T23:24:00.000-08:002010-01-31T20:34:29.606-08:00Trigger SQL ServerPendahuluan <br /><br />Salah satu keistimewaan dari SQL Server adalah mekanisme kontrol yang bernama database Trigger. Trigger sama seperti sekumpulan perintah Transact-SQL yang secara otomatis dijalankan apabila ada perintah INSERT, DELETE, atau UPDATE yang dijalankan di dalam tabel. <br />Aplikasi utama dari trigger adalah pembuatan metode validasi dan batasan akses ke dalam database, seperti misalnya perintah perintah keamanan. Ini merupakan cara lain selain dengan menggunakan aplikasi kita juga bisa melakukan kontrol langsung dengan menggunakan trigger yang diletakkan pada tabel yang bersangkutan. <br />Perintah yang dapat dilakukan Trigger adalah : <br /> Membuat isi dari kolom yang diambil dari kolom yang lain. <br /> Membuat mekanisme validasi yang mencakup query pada banyak tabel. <br /> Membuat log untuk mendaftarkan penggunaan tabel. <br /> Meng-update tabel tabel lain apabila ada penambahan atau perubahan lain di dalam tabel yang sedang aktif. <br /><br />Komponen dari Trigger <br />Trigger dibentuk dari dua bagian : <br /> Perintah SQL untuk mengaktifkan trigger. Perintah INSERT, DELETE dan UPDATE bisa mengaktifkan trigger. Trigger yang sama bisa diaktifkan apabila ada lebih dari satu aksi yang terjadi. Dengan kata lain trigger bisa diaktifkan apabila ada perintah insert, delete atau update dijalankan. <br /> Aksi yang dijalankan oleh trigger. Trigger menjalankan blok PL/SQL. <br /><br />Batasan Trigger <br />Dibawah ini adalah batasan dan pertimbangan di dalam menggunakan trigger : <br /> Trigger bisa menjalankan perintah yang terkandung di dalam badannya atau mengaktifkan prosedur dan trigger lain untuk menjalankan tugas tertentu. <br /> Setiap perintah SET bisa ditentukan di dalam trigger. Perintah ini akan tetap aktif selama ekseksi. <br /> Kita tidak bisa membuat trigger untuk view. Tetapi apabila view digunakan, trigger dari table dasar biasanya akan diaktifkan. <br /> Perintah Truncate Table tidak bisa dihentikan oleh trigger. <br /> Trigger tidak bisa menjalankan perintah Transact-SQL yang merupakan perintah DDL. <br /><br />Membuat Trigger <br />Trigger bisa dibuat dengan 2 cara yaitu : <br /> 1. Menggunakan Query analizer <br />CREATE TRIGGER [TRIGGER NAME] ON [NAMA_TABEL] <br />FOR INSERT, UPDATE, DELETE <br />AS PERINTAH <br />Ket : <br />ON menunjukan tabel atau skema dimana trigger dibuat. <br />FOR harus diikuti oleh jenis perintah yang akan dijalankan. <br />AS memulai badan trigger dengan perintah yang akan dijalankan. <br /><br />Berikut ini contoh pembuatan trigger semisalnya kita mempunyai tabel dengan nama tmhs dengan struktur sebagai berikut : <br /><br /> <br />Gambar : Struktur Tabel TMhs <br /><br />Buatlah tabel TMhs2 yang mempunyai struktur yang sama dengan TMhs. <br />Misalkan kita akan membuat trigger menampilkan tulisan saat program melakukan input <br />2. Menggunakan Enterprise Manager <br />Dengan menggunakan Enterprise manager pembuatan Trigger sangatlah mudah. Berikut ini cara membuat trigger menampilkan tulisan pada saat melakukan input : <br /><br /> <br />Gambar : Menampilkan Trigger <br /><br /> <br />Gambar : Menuliskan perintah Trigger <br /><br />Tabel Inserted dan Deleted <br />Apabila tabel dijalankan SQL server akan membuat dua buah tabel sementara yang hanya muncul apabila trigger sedang dijalankan, tabel yang pertama adalah tabel inserted dan yang kedua adalah tabel deleted. <br />Apabila perintah INSERT atau UPDATE dijalankan, record yang dibuat atau diubah di copy ke dalam tabel inserted. Apabila perintah DELETE dijalankan, baris baris yang dihapus di copy ke dalam tabel deleted. <br /><br />Contoh : <br /><br />Gambar : Menampilkan data yang diedit <br /><br />Membuat Replikasi Baris dengan Trigger <br />Dengan menggunakan tabel sementara dari trigger, kita bisa membuat sebuah mekanisme untuk melakukan replikasi cepat dari satu tabel ke tabel yang lainnya. Kita bisa menyisipkan, mengubah atau menghapus record pada tabel lain pada saat operasi sedang dilakukan pada tabel yang sedang aktif. <br />Berikut ini contoh membuat tiga buah trigger untuk replikasi atau menggandakan operasi dari tabel Tmhs ke dalam tabel Tmhs2. <br />Replikasi Insert <br />Nama trigger : insertrep <br />Create Trigger insertrep on tmhs <br />For insert <br />As <br />Insert into Tmhs2 <br />Select * from inserted <br />Pada trigger ini, kita menggunakan Insert into dan select untuk mendapatkan field field dari tabel inserted <br />Replikasi Delete <br />Nama trigger : delrep <br />Create Trigger delrep on Tmhs <br />For Delete <br />As <br />Delete from tmhs2 <br />Where tmhs2.nim in (select nim from deleted) <br />Kita menggunakan perintah Delete From dan Where untuk menyaring record yang akan dihapus dengan mencarinya pada tabel deleted, yang dalam hal ini hanya mengandung record yang baru saja dihapus <br />Replikasi Update <br />Nama trigger : uprep <br />Create Trigger uprep on Tmhs <br />For Update <br />As <br />Update Tmhs2 <br />Set Nama=(Select Nama from Inserted), <br />Alamat=(Select Alamat from Inserted) <br />Where Tmhs2.nim in (Select nim from Inserted) <br />Trigger ini mereplikasi proses update yang telah dilakukan pada tmhs, didalamnya mengupdate colom nama dan alamat dari Tmhs2 dengan isi dari colom nama dan alamat dari tabel inserted. Klause Where juga digunakan untuk mengupdate record yang kodenya ditemukan pada tabel inserted saja. <br />Pada perintah replikasi update dan juga update biasa sangat dilarang untuk mengupdate primary key. <br /><br />Tugas Sesi : Trigger SQL Server <br />Buatlah tabel barang dengan nama Tbarang1 dan Tbarang2 dengan struktur sebagai berikut : <br />1. Buatlah trigger insert dengan nama TrgInsertNIM untuk menampilkan tulisan ”Data Barang telah diinputkan” <br />2. Buatlah trigger update dengan nama TrgUpdateNIM untuk menampilkan tulisan ”Data Barang telah berhasil diubah” <br />3. Buatlah trigger delete dengan nama TrgDeleteNIM untuk menampilkan tulisan ”Data Barang telah berhasil dihapus” <br />4. Buatlah trigger untuk insert, update, delete dengan nama TrgGabunganNIM untuk menampilkan tulisan ”Data yang dioperasikan” kemudian dengan perintah inserted tampilkan data tersebut. Kemudian tampilkan semua data sesudah perintah query dijalankan. <br />5. Buatlah trigger untuk replikasi Insert dengan nama TrgRepinputNIM dari tabel Tbarang1 ke Tbarang2 <br />6. Buatlah trigger untuk replikasi update dengan nama TrgRepeditNIM dari tabel Tbarang1 ke Tbarang2 <br />7. Buatlah trigger untuk replikasi delete dengan nama TrgRephapusNIM dari tabel Tbarang1 ke Tbarang2 <br />Ket : NIM adalah 2 huruf terakhir dari nim anda contoh jika nim anda 2008101035 maka NIM anda adalah 35 sehingga setiap nama trigger anda ditambahkan NIM tersebut.iRene..http://www.blogger.com/profile/00246901616755567914noreply@blogger.com0tag:blogger.com,1999:blog-3075041165989366895.post-19395528033566393152010-01-22T23:23:00.000-08:002010-01-31T20:34:29.608-08:00Procedure SQL ServerPendahuluan <br />Procedure pada dasarnya adalah sebuah program yang ditulis dalam bahasa Transact-SQL yang disimpan di dalam database SQL Server. Procedure dibentuk dari perintah, variabel serta alur logik yang terdapat pada SQL. Procedure bisa dijalankan secara manual ataupun dijalankan oleh program lain. <br />Jenis jenis Prosedur <br />Prosedur bisa dibagi bagi ke dalam prosedur lokal yang disimpan di dalam server lokal, atau prosedur remote yang disimpan didalam server yang lain. Prosedur juga bisa didefiniskan oleh user atau system procedures yang merupakan bagian dari server. <br />Komponen komponen prosedur : <br /> Parameter <br />Prosedur bisa menyimpan 255 parameter dan sebuah kode hasil, parameter ini digunakan untuk komunikasi antara prosedur dan dunia luar, apabila kita menjalankan prosedur maka nilai akan dikirim dalam bentuk parameter. <br /> Nama dan data tipe <br />Parameter harus memiliki nama yang eklusif dan diawali dengan simbol @. Kita juga diharuskan menyertakan tipe data <br />Contoh <br />Create procedure test1 <br />@kode varchar(8), <br />@nilai int <br />Pada prosedur tersebut terdapat dua parameter yaitu kode dan nilai yang harus disertakan pada saat menjalankan prosedur. <br /> Arah dari paremeter <br />Semua parameter yang dibuat dianggap sebagai parameter input, artinya mereka menerima data dari program yang menjalankan prosedur. Dengan menambahkan kata OUTPUT ke dalam definisi parameter, prosedure bisa mengembalikan nilai dari parameter ke dalam program yang memanggilnya. <br /><br />Cara membuat prosedur dengan Enterprise manager : <br />Klik kanan Strore Procedure untuk menampilkan Shorcut <br />Tulislah perintah prosedure kemudian check Syntax <br /><br />Kemudian klick ok maka prosedur telah dibuat. <br />Cara membuat prosedure dengan Query Analizer <br />Untuk menjalankan query analizer langkah langkahnya adalah : <br /><br /> 1. Koneksikan dengan server <br /><br /> 2. Pilih database yang akan digunakan <br /><br />Jika kita lupa database yang digunakan maka perintah perintah SQL tidak akan menghasilkan hasil yang diinginkan. <br /><br />3. Ketikkan perintah transact-SQL <br /><br /> <br />Ketikkan perintah pembuatan procedure dan dieksekusi maka prosedur tersebut akan ada di Store Procedure <br /><br />Prosedur yang dibuat oleh user dibagi menjadi dua yaitu : <br /> Prosedur tanpa parameter <br />Misalkan ada sebuah tabel dengan rancangan : <br /><br /> <br />Contoh prosedur tanpa parameter <br />Contoh 1 : <br />Create procedure proc_Tampil_MHS <br />As <br />Select * from Tmhs <br />Cara menjalankannya : <br />Exec proc_Tampil_MHS <br />Contoh 2 : <br />Create procedure proc_Tampil_Matakuliah <br />As <br />Select * from TMk <br />Cara menjalankannya : <br />Exec proc_Tampil_Matakuliah <br /> <br /><br /> Prosedur dengan parameter <br />Misalkan ada sebuah tabel dengan rancangan : <br /> <br />Contoh prosedur dengan parameter <br />Contoh 1 : Dengan nama field <br />Create procedure Proc_input_mhs <br />@nim varchar(10), <br />@nama varchar(20), <br />@alamat varchar(50) <br />As <br />Insert into TMhs(nim,nama,alamat) values(@nim,@nama,@alamat) <br />Cara menjalankan : <br />Exec proc_input_mhs ‘2000’,’dewi’,’kuningan’ <br /><br />Contoh 2 : Tanpa field <br />Create procedure Proc_input_Matakuliah <br />@kode varchar(3), <br />@namamk varchar(20), <br />@sks int <br />As <br />Insert into Tmk values(@kode,@namamk,@sks) <br />Cara menjalankan : <br />Exec Proc_input_matakuliah ‘M01’,’Perancangan Basis data’, 3 <br /><br />Procedure SQL Server + 20/12/2008 by Saluky www.etunas.com : Providing Best Service to Your Bussines 7 of 9 <br />Contoh 3 : Edit data Mahasiswa <br />Create Procedure proc_edit_mhs <br />@nim varchar(10), <br />@nama varchar(20), <br />@alamat varchar(50) <br />As <br />Update tmhs set nama=@nama,alamat=@alamat where nim=@nim <br />Cara menjalankan : <br />Exec proc_edit_mhs ‘2001’,’Ayu’,’Cirebon’ <br />Contoh 4 : Hapus data mahasiswa <br />Create Procedure proc_hapus_mhs <br />@nim varchar(10) <br />As <br />Delete from tmhs where nim=@nim <br />Cara Menjalankan : <br />Exec proc_hapus_mhs ‘2001’ <br />Penggunaan prosedur ini sangat memudahkan programer dan DBA dalam mengembangkan dan menyederhanakan tugas tugas, juga prosedur ini dapat digunakan juga sebagai FAQ dari permintaan user.iRene..http://www.blogger.com/profile/00246901616755567914noreply@blogger.com0tag:blogger.com,1999:blog-3075041165989366895.post-12186038257598525032010-01-22T23:22:00.001-08:002010-01-31T20:34:29.611-08:00View SQL ServerView adalah tabel virtual yang isinya didefinisikan oleh query database. View bukanlah sebuah tabel fisik, tetapi sekumpulan instruksi yang menghasilkan sekumpulan data. <br />Penggunaan view sangat bermanfaat apabila kita ingin memfokuskan diri pada informasi tertentu yang terdapat dalam basis data. Bayangkan sebuah database perusahaan yang diakses beberapa user pada departemen berbeda. Informasi yang dibutuhkan oleh setiap departemen pastilah berbeda. Dengan menggunakan view dapat menyediakan informasi yang dibutuhkan saja, baik berasal dari satu tabel atau lebih dalam database tersebut. <br />View mengijinkan banyak user yang berbeda melihat informasi yang sama dengan fokus yang berbeda. View mengijinkan kombinasi informasi untuk memenuhi kebutuhan user tertentu dan bahkan bisa diekspor ke aplikasi lain <br /><br />Membuat View <br />View dapat dibuat dengan perintah Transact-SQL yaitu Create view atau dengan menggunakan program penyunting view yaitu enterprise manager. <br />Hal yang harus diingat pada saat membuat view : <br /> 1. View hanya bisa dibuat di dalam database yang sedang digunakan. <br /> 2. Anda tidak bisa menghubungkan trigger, aturan kedalam view. <br /> 3. View bisa menggunakan data dari view lain. <br /> 4. Kita tidak bisa membuat indeks untuk view. <br /> 5. Jika ada lebih dari satu kolom view yang memiliki nama yang sama, kolom tersebut harus diberi alias. <br /> 6. Kolom didalam view sama dengan kolom ditabel asal. <br /><br />Untuk membuat view kita dapat meng klick kanan view <br /> <br />Setelah tampil menu view kita dapat menambahkan tabel yang kita butuhkan <br /><br />Misalkan kita akan membuat view untuk menampilkan data mahasiswa maka kita hanya membutuhkan tabel TMhs <br /><br />Misalkan kita akan menampilkan Nim dan nama Mahasiswa tersebut maka kita pilih dari tabel Tmhs nim dan nama <br /><br />Untuk mengecek hasilnya klik tanda seru merah ! atau run maka akan terlihat nim dan nama mahasiswa. <br />Untuk menyimpan view bisa klik save dan beri nama view misalnya view_nim_nama <br />View bisa juga langsung dibuat pada console query dan cara ini kadang dianggap lebih mudah dibandingkan dengan visual. <br /><br />Latihan View <br />Perhatikan Tabel relasi berikut : <br /><br />1. Buatlah rekap data absensi <br />Jawab : <br />CREATE VIEW dbo.VIEW_Rekap_Absen <br />AS <br />SELECT tkry.nama, COUNT(tabsen.nip) AS jumlah_absen <br />FROM tkry, tabsen <br />WHERE tkry.nip = tabsen.nip <br />GROUP BY tkry.nama <br /><br />Atau <br /><br />Gambar diatas dibuat dengan menggunakan Enterprise manager <br /><br />2. Buatlah rekap gaji <br />Jawab <br />CREATE VIEW dbo.VIEW_Rekap_Gaji <br />AS <br />SELECT Tkry.Nama, <br />(tgaji.gajipokok + tgaji.tunjanganstatus + tgaji.tunjanganjabatan - <br />potongan - pph21 - infaq) AS GAJI_Bersih <br />FROM tkry, tgaji <br />WHERE tkry.nip = tgaji.nip <br />Atau <br /><br />Nah simple dan gampang banget kan membuat View, dengan view ini kita bisa memodifikasi informasi sesuai dengan keinginan kita misalkan kita akan menampilkan data rekap gaji bulan januari 2009 maka dengan query analizer kita tinggal beri perintah : <br /><br />Select * from View_Rekap_Gaji where Bulan=’01/2009’ <br /><br />Dengan catatan didalam view nya sudah ada bulan, berikut ini modifikasi view yang telah diberi bulan <br /><br /><br />CREATE VIEW dbo.VIEW_Rekap_Gaji <br />AS <br />SELECT TKry.nama, <br />TGaji.gajipokok + TGaji.tunjanganstatus + TGaji.tunjanganjabatan <br />- TGaji.potongan - TGaji.pph21 - TGaji.infaq AS GAJI_Bersih, <br />TGaji.bulan <br />FROM TKry INNER JOIN <br />TGaji ON TKry.nip = TGaji.nip <br />Untuk lebih memudahkan query view, jangan gunakan mode otomatis jadi akan lebih mudah menggunakan query biasa.iRene..http://www.blogger.com/profile/00246901616755567914noreply@blogger.com0tag:blogger.com,1999:blog-3075041165989366895.post-62545668338371446252010-01-22T23:03:00.000-08:002010-01-31T20:34:29.614-08:00Elemen elemen Basis data RelasionalTabel<br /> Merupakan kumpulan informasi secara logis yang terkait dan diperlakukan sebagai unit<br /> Merupakan himpunan dari suatu objek yang memiliki karakteristik yang sama<br /><br />Tabel Pelanggan<br /><br />Baris (Record)<br /> Suatu baris adalah kejadian tunggal yang berisi data di dalam tabel<br /> Setiap baris diperlakukan sebagai unit tunggal<br /> Pada contoh tabel pelanggan setiap baris mempunyai informasi individu<br /><br />Kolom (Field)<br /> Baris diorganisasikan sebagai sekumpulan kolom (atau Field-field). <br /> Semua baris di dalam tabel terdiri atas kumpulan kolom yang sama<br /> Setiap kolom mempunyai fungsi untuk memberikan informasi untuk menjelaskan fungsi dari tabel<br /> Setiap kolom yang dibuat harus pernah diisi sedikitnya 1 baris<br />Kunci Utama (Primary Key)<br /> Nilainya selalu unik<br /> Digunakan untuk menghapus, mengedit dan mencegah/menjaga baris baris duplikat<br /><br />Karakteristik Primary Key<br /> Mandatory : harus menyimpan nilai non-null, jika kolom kiri kosong maka duplikasi baris bisa terjadi.<br /> Unique : hanya dimiliki oleh 1 baris<br /> Stable : tidak mungkin berubah (contoh NIM, NoKTP)<br /> Short : Memiliki sedikit karakter<br /><br />Foreign Key<br /> Merupakan primary key yang diletakkan pada tabel lain<br /> Digunakan untuk relasi untuk mengakses data dari tabel yang lain<br /><br />Hirarki Data<br /> <br /> Contoh Design Table pada MS. Acces<br /><br /><br /> Relasi TabeliRene..http://www.blogger.com/profile/00246901616755567914noreply@blogger.com0tag:blogger.com,1999:blog-3075041165989366895.post-22543054682982213132009-10-09T04:15:00.000-07:002010-01-31T20:22:31.939-08:00TEKNIK PERANCANGAN BASIS DATAA. Pendahuluan<br /><br />Perancangan merupakan suatu hal yang sangat penting dalam pembuatan<br />basis data. Permasalahan yang dihadapi pada waktu perancangan yaitu<br />bagaimana basis data yang akan dibangun ini dapat memenuhi kebutuhan<br />saat ini dan masa yang akan datang. Untuk itu diperlukan perancangan basis<br />data baik secara fisik maupun secara konseptualnya. Perancangan<br />konseptual akan menunjukkan entity dan relasinya berdasarkan proses yang<br />diiginkan oleh organsisasinya. Untuk menentukan entity dan relasinya perlu<br />dilakukan analisis data tentang informasi yang ada dalam spesifikasi di masa<br />yang akan datang.<br /><br />Model Konseptual basis data<br />Perancangan model konseptual basis data dalam sebuah organisasi menjadi<br />tugas dari Administrator basis data. Model konseptual merupakan kombinasi<br />beberapa cara untuk memproses data untuk beberapa aplikasi. Model<br />konseptual tidak tergantung pada aplikasi individual, DBMS digunakan,<br />Hardware komputer dan model fisiknya.<br />Pada perancangan model konseptual basis data ini penekanan dilakukan<br />pada struktur data dan relasi antara file. Pada perancangan model konseptual<br />ini dapat dilakukan dengan menggunakan model data relasional.<br />Teknik Model Data Realsional ada 2 yaitu :<br />• Teknik Normalisasi<br />• Teknik Entity Relationship<br /><br />Teknik Normalisasi<br />Proses normalisasi adalah proses pengelompokan data elemen menjadi<br />tabel-tabel yang menunjukkan entity dan relasinya. Pada proses normalisasi<br />dilakukan pengujian pada beberapa kondisi apakah ada kesulitan pada saateknik menambah/menyisipkan, menghapus, mengubah dan mengakses pada suatu<br />basis data. Bila terdapat kesulitan pada pengujian tersebut maka perlu<br />dipecahkan relasi pada beberapa tabel lagi atau dengan kata lain<br />perancangan basis data belum optimal.<br /><br />Field (Atribut) Kunci<br />setiap file selalu terdapat kunci dari file berupa field atau satu set field yang<br />dapat mewakili record. Misalnya Nomor Pokok Mahasiswa (NPM) merupakan<br />kunci dari tabel mahasiswa suatu Perguruan Tinggi, setiap pencarian cukup<br />dengan menyebut nomor mahasiswa tersebut maka dapat diketahui identitas<br />mahasiswa lainnya seperti nama, alamat dan atribut lainnya.<br />Nomor Pegawai (NIP) bagi data dosen, NIK untuk data karyawan,<br />Kode_Kuliah untuk data Mata kuliah, dan lain sebagainya.<br /><br />Jenis Atribut Pada Entitas<br />Atribut yang melekat pada suatu entitas ada bermacam tipe seperti yang akan dijelaskan sebagai berikut :<br />• Atribut Sederhana : atribut sederhana merupakan atribut atomik yang tidak dapat lagi dipecah menjadi atribut lain. <br />Contoh: Entitas mahasiswa mempunyai atribut sederhana berupa NIM, Nama Mahasiswa .<br />• Atribut Komposit : atribut komposit merupakan atribut yang masih dapat<br /> dipecah menjadi sub-sub atribut yang masing- masing memiliki arti tesendiri.<br /> Contoh : entitas mahasiswa mempunyai atribut alamat. Alamat disini dapat dipecah menjadi sub atribut seperti nama_kota, kode_pos.<br />• Atribut Bernilai Tunggal: yaitu atribut yang hanya memiliki satu nilai untuk setiap barisnya.<br />Contoh : entitas mahasiswa mempunyai atribut NPM, Nama, Alamat isi data dari atribut ini hanya boleh diisi dengan 1 data. Setiap mahasiswa hanya memiliki 1 NPM, 1 Nama, 1 Alamat.<br /><br />• Atribut Bernilai Jamak: yaitu atribut yang boleh memiliki lebih dari satu nilai untuk setiap barisnya.<br />Contoh : entitas mahasiswa mempunyai atribut Hobby isi data dari atribut ini boleh lebih dari 1 data. Mahasiswa Roshita memiliki NPM 13402021 beralamat di Jalan Garuda 32 Yogyakarta memiliki Hobby (Olah Raga, Nyanyi, Masak dan Nonton TV)<br />• Atribut Harus Bernilai: yaitu atribut yang harus memiliki nilai data untuk setiap barisnya. Biasanya atribut seperti ini sudah ditetapkan dalam perancangan tabelnya sehingga jika dalam pengisian dokosongi akan terjadi kesalahan.<br />Contoh : entitas mahasiswa mempunyai atribut NPM dan Nama_Mahasiswa yang harus diisi datanya, sebab jika tidak diisi akan terjadi kekacauan dalam basis data.<br />• Atribut Bernilai Null: yaitu atribut yang boleh tidak memiliki nilai data untuk setiap barisnya.<br />Contoh : entitas mahasiswa mempunyai atribut Alamat, Hobby, Nama_Pacar yang boleh untuk tidak diisi tetapi kalau diisi akan lebih baik,<br />• Atribut Turunan: yaitu atribut yang nilai-nilainya diperoleh dari pengolahan atau dapat diturunkan dari atribut lain yang berkaitan.<br />Contoh : entitas mahasiswa mempunyai atribut IPK yang diperoleh dari pengolahan atribut Nilai pada tabel (entitas Nilai) dengan kode NIM mahasiswa yang sama dan diproses sehingga menghasilkan IPK untuk mahasiswa yang bersangkutan.<br /><br />Kunci Kandidat (Candidate Key)<br />Kunci kandidat adalah satu atribut atau satu set atribut yang<br />mengidentifikasikan secara unik suatu kejadian spesifik dari entity. Satu set<br />atribut menyatakan secara tidak langsung dimana anda tidak dapat<br />membuang beberapa atribut dalam set tanpa merusak kepemilikan yang unik.<br />Jika kunci kandidat berisi lebih dari satu atribut, maka biasanya disebut<br />sebagai composite key (kunci campuran atau gabungan).<br />Contoh :<br />File mahasiswa berisi :<br />• Nomor Pegawai<br />• No KTP<br />• Nama Pegawai<br />• Tempat Lahir<br />• Tanggal Lahir<br />• Alamat<br />• Kota<br />Kunci kandidat dalam file mahasiswa di atas dapat dipilih sbb :<br />• Nomor Pegawai<br />• No KTP<br />• Nama (tidak dapat dipakai karena sering seseorang punya nama yang<br />sama dengan orang lain)<br />• Nama + Tanggal Lahir (mungkin bisa dipakai sebagai kunci karena<br />kemungkinan orang dengan nama yang sama dan tanggal lahir yang<br />sama cukup kecil)<br />• Nama + Tempat Lahir + Tanggal Lahir (dapat dipakai sebagai kunci)<br />• Alamat dan Kota (bukan kunci)<br /><br />Kunci Primer (Primery Key)<br />Primary key adalah satu atribut atau satu set minimal atribut yang tidak hanya<br />mengidentifikasi secara unik suatu kekadian spesifik, tetapi juga dapat<br />mewakili setiap kejadian dari suatu entity.<br />Setiap kunci kandidat dapat menjadi kunci primer tetapi sebaliknya sebaiknya<br />dipilih satu saja yang dapat mewakili secara menyeluruh terhadap entity yang<br />ada.<br />Contoh :<br />• No Pegawai (karena sifatnya yang unik maka tidak mungkin pegawai<br />mempunyai Nomor Pegawai yang sama).<br />• No KTP (Bisa dipakai misalnya untuk pegawai yang baru belum<br />mendapatkan nomor pegawai maka bisa digunakan nomor KTP untuk<br />sementara sebagai kunci primer.<br />• Kode_Kuliah (bisa dipakai untuk data mata kuliah karena kode mata<br />kuliah bersifat unik untuk tiap mata kuliah)<br /><br />Kunci Alternatif (Alternate Key)<br />Kunci alternatif adalah kunci kandidat yang tidak dipakai sebagai kunci primer.<br />Kunci alternatif ini sering digunakan untuk kunci pengurutan misalnya dalam<br />laporan.<br />Kunci Tamu (Foreign Key)<br />Kunci tamu adalah satu atribut aatau satu set minimal atribut yang<br />melengkapi satu hubungan yang menunjukkan ke induknya. kunci tamu<br />ditempatkan pada entity anak dan sama dengan kunci primer induk yang<br />direlasikan. Hubungan antara entity induk dengan anak adalah hubungan<br />satu lawan banyak (one to many relationship)<br />Contoh :<br />File Transaksi Gaji Bulanan<br />• No Pegawai<br />• No Bukti<br />• Tanggal<br />• Jumlah Gaji Kotor<br />• Jumlah Potongan<br />• Jumlah Gaji Bersih<br />• Jumlah Pajak<br />Kunci Tamu<br />• No Pegawai (karena Gaji berhubungan dengan file Pegawai)<br />Kunci Primer<br />• No Bukti (karena unik dan mewakili entity)<br />Kunci Kandidat<br />• No Pegawai + Nomor Bukti (Unik dan menunjukkan hubungan dengan<br />file Pegawai)<br />Dalam hubungan dua buah file yang punya relationship banyak lawan banyak<br />maka terdapat 2 kunci tamu pada file konektornya.<br />Contoh :<br />File Proyek berisi atribut<br />• No Proyek<br />• Tgl Mulai<br />• Tgl Selesai<br />• Anggaran<br />File Pegawai Berisi Atribut<br />• No Pegawai<br />• Nama<br />Hubungan antara file tersebut adalah banyak lawan banyak yaitu satu<br />pegawai mengerjakan lebih dari 1 proyek dan 1 proyek dikerjakan oleh<br />beberapa pegawai maka untuk menunjukkan hubungan tersebut dipakai file<br />konektor yang berisi kunci tamu dari kedua file.<br />File Proyek Pegawai berisi atribut :<br />• No Proyek<br />• No Pegawai<br />• Jam Kerja<br />Maka pada file proyek pegawai terdapat kunci tamu yaitu nomor proyek dan<br />no pegawai. Kedua atribut tersebut juga merupakan kunci primer.<br /><br />Kebergantungan Fungsi<br />Kebergantungan Fungsi didefinisikan sebagai<br />Diberikan sebuah relasi R, atribut Y dan R adalah bergantung fungsi<br />pada atribut X dari R jika dan hanya jika setiap nilai X dalam R punya<br />hubungan dengan tepat satu nilai Y dalam R (dalam setiap satu waktu).<br />File relasi pegawai atribut berisi :<br />• No Pegawai<br />• No KTP<br />• Nama<br />• Tempat Lahir<br />• Tgl Lahir<br />• Alamat<br />• Kota<br />Isi dari atribut nama bergantung pada No Pegawai. Jadi dapat dikatakan<br />bahwa atribut nama bergantung secara fungsi pada No Pegawai dan Nomor<br />Pegawai menunjukkan secara fungsi nama. jika anda mengetahui no pegawai<br />maka anda dapat menentukan nama pegawai tersebut. Notasi untuk<br />kebergantungan fungsi ini adalah<br />No Pegawai 1DPD atau<br />Nama = f(No Pegawai)<br /><br />Bentuk-Bentuk Normalisasi<br />Bentuk ini merupakan kumpulan data yang akan direkam, tidak ada<br />keharusan mengikuti format tertentu, dapat saja data tidak lengkap atau<br />terduplikasi. Data dikumpulkan apa adanya sesuai dengan kedatangannya.<br /><br />Bentuk Normal Kesatu (1 NF / First Normal Form)<br />Bentuk Bentuk Normal Kesatu mempunyai ciri yaitu setiap data dibentuk<br />dalam file flat, data dibentuk dalam satu record demi satu record dan nilai dari<br />field berupa “atomic value”. Tidak ada set atribut yang berulang ulang atau<br />atribut bernilai ganda (multi value). Tiap field hanya satu pengertian, bukan<br />merupakan kumpulan data yang mempunyai arti mendua. Hanya satu arti<br />saja dan juga bukanlah pecahan kata kata sehingga artinya lain.<br />Atom adalah zat terkecil yang masih memiliki sifat induknya, bila dipecah lagi<br />maka ia tidak memiliki sifat induknya.<br />Contoh :<br />Kelas (Kode Kelas, Nama Kelas, Pengajar)<br />Ini merupakan bentuk 1NF karena tidak ada yang berganda dan tiap<br />atribut satu pengetian yang tunggal<br />Contoh Data<br />Kode Kelas Nama Kelas Pengajar<br />1111 Basis Data Muhamad Ali<br />2222 Riset Pemasaran Ahmad Yunani<br />3333 Pemrograman Suryo Pratolo<br />Mahasiswa (NPM, Nama, Dosen Wali, Semester1, Semester2 Semester3)<br />Mahasiswa yang punya NPM, Nama, Dosen Wali mengikuti 3 mata<br />kuliah. Di sini ada perulangan semester sebanyak 3 kali. Bentuk seperti<br />ini bukanlah 1 NF<br />Contoh Data :<br />NPM Nama Dosen Wali Sem 1 Sem 2 Sem 3<br />1000 Sally Fatimah Dedy S 1234 3100<br />1001 Inul Daratista Ruslan 1234 2109<br />1002 Putri Patricia Denmas 2100 3122<br />Bentuk 1 NF dari bentuk di atas adalah sbb :<br />NPM Nama Dosen Wali Semester<br />1000 Sally Fatimah Dedy S 1234<br />1000 Sally Fatimah Dedy S 3100<br />1001 Inul Daratista Ruslan 1234<br />1001 Inul Daratista Ruslan 2109<br />1002 Putri Patricia Denmas 2100<br />1002 Putri Patricia Denmas 3122<br /><br />Bentuk Normal Kedua (2 NF)<br />Bentuk Normal kedua mempunyai syarat yaitu bentuk data telah memenuhi<br />kriteria bentuk Normal Kesatu. Atribut bukan kunci haruslah bergantung<br />secara fungsi pada kunci utama, sehingga untuk membentuk Normal Kedua<br />haruslah sudah ditentukan kunci-kunci field. Kunci field harus unik dan dapat<br />mewakili atribut lain yang menjadi anggotanya.<br />Dari contoh relasi mahasiswa pada bentuk Normal Kesatu, terlihat bahwa<br />kunci utama adalah NPM. Nama Mahasiswa dan Dosen Wali bergantung<br />pada NPM, Tetapi Kode Semester bukanlah fungsi dari Mahasiswa maka file<br />siswa dipecah menjadi 2 relasi yaitu :<br />Relasi Mahasiswa<br />NPM Nama Dosen Wali<br />1000 Sally Fatimah Dedy S<br />1001 Inul Daratista Ruslan<br />1002 Putri Patricia Denmas<br />Dan<br />Relasi Ambil Kuliah<br />NPM Kode Kuliah<br />1000 1234<br />1000 3100<br />1001 1234<br />1001 2109<br />1001 2100<br />1001 3122<br /><br />Bentuk Normal Ketiga (3 NF)<br />Untuk menjadi bentuk Normal Ketiga maka relasi haruslah dalam bentuk<br />Normal Kedua dan semua atribut bukan primer tidak punya hubungan yang<br />transitif. Artinya setiap atribut bukan kunci harus bergantung hanya pada<br />kunci primer secara menyeluruh.<br />Contoh pada bentuk Normal kedua di atas termasuk juga bentuk Normal<br />Ketiga karena seluruh atribut yang ada di situ bergantung penuh pada kunci<br />primernya.<br /><br />Boyce-Codd Normal Form (BNCF)<br />Boyce-Codd Normal Form mempunyai paksaan yang lebih kuat dari bentuk<br />Normal ketiga. Untuk menjadi BNCF, relasi harus dalam bentuk Normal<br />Kesatu dan setiap atribut dipaksa bergantung pada fungsi pada atribut super<br />key.<br />Pada contoh dibawah ini terdapat relasi Seminar, Kunci Primer adalah NPM +<br />Seminar. Siswa boleh mengambil satu atau dua seminar. Setiap seminar<br />membutuhkan 2 pembimbing dan setiap siswa dibimbing oleh salah satu<br />diantara 2 pembimbing seminar tersebut. Setiap pembimbing hanya boleh<br />mengambil satu seminar saja. pada contoh ini NPM dan Seminar<br />menunjukkan seorang Pembimbing.<br /><br />Relasi Seminar<br />NPM Seminar Pembimbing<br />1000 S100 Siska<br />1001 S100 Sinta<br />1002 S101 Sukma<br />1001 S101 Sukma<br />1003 S101 Akbar<br />Bentuk Relasi Seminar adalah bentuk Normal Ketiga, tetapi tidak BCNF<br />karena Kode Seminar masih bergantung fungsi pada Pembimbing, jika setiap <br />Pembimbing dapat mengajar hanya satu seminar. Seminar bergantung pada<br />satu atribut bukan super key seperti yang disayaratakan oleh BCNF. Maka<br />relasi Seminar harus dipecah menjadi dua yaitu :<br />Relasi Pembimbing Relasi Seminar – Pembimbing<br /><br />Pembimbing Seminar NPM Pembimbing<br />Siska S100 1000 Siska<br />Sinta S100 1001 Sinta<br />Sukma S101 1002 Sukma<br />Akbar S101 1001 Sukma<br />1003 Akbar<br /><br />Penerapa Bentuk Normalisasi<br />Proses perancangan basis data dapat dimulai dari dokumen dasar yang<br />dipakai dalam sistem sesungguhnya. Kadang-kadang basis data dibentuk dari<br />sistem nyata yang mempunyai bentuk masih belum menggambarkan entitasentitas<br />secara baik. Sebagai contoh basis data yang dibangun dari daftar<br />faktur pembelian sebagai berikut :<br /><br />PT. Denmas Makmur FAKTUR PEMBELIAN<br />Jl. Sekeloa Utara No 62/152 C<br />Bandung<br />Kode Pemasok : A101 Tanggal : 07/03/2004<br />Nama Pemasok : Akbar Comp. Nomor : 111<br />Kode Nama Barang Jumlah Harga Total<br />A1 DD RAM 128 10 200.000 2.000.000<br />A2 GForce-FX 5200 10 500.000 5.000.000<br />A3 Athlon 2500 + 10 700.000 7.000.000<br />Total faktur 14.000.000<br />Jatuh Tempo Faktur : 07/04/2004<br /><br /><br />Langkah Pertama<br />Bentuklah menjadi tabel Un-Normalized, dengan mencantumkan semua field<br />data yang ada.<br />No.<br />Fak<br />Kode<br />Supp<br />Nama<br />Suppl<br />Kode<br />Barang<br />Nama<br />Barang<br />Tgl Jatuh<br />Tempo Qty Harga Jumlah Total<br />111 A101 Akbar<br />Comp<br />DR128 DRAM 07/03/04 07/04/04 10 200 2000 2000<br />222 B111 Bona<br />Comp<br />GF52 GForce 10/02/04 15/03/04 10 500 5000 5000<br />Ath25 Ath 25 10 700 7000 7000<br /><br />Menuliskan semua data yang akan direkam, bagian yang doubel tidak perlu<br />dituliskan. Terlihat record-record yang tidak lengkap, sulit untuk<br />membayangkan bagaimana bentuk record yang harus dibentuk untuk<br />merekam data tersebut.<br /><br />Langkah Kedua<br />Ubahlah menjadi bentuk Normal Kesatu dengan memisahkan data pada fieldfield<br />yang tepat dan bernilai atomik, juga seluruh record harus lengkap<br />datanya. Bentuk file masih flat.<br />Dengan bentuk Normal Kesatu ini telah dapat dibuat satu file dengan 11 field<br />yaitu No faktur, Kode Suplier, Nama Suplier, Kode Barang, Nama Barang,<br />Tanggal, Jatuh Tempo, Quntity, Harga, Jumlah, Total.<br />No.<br />Fak<br />Kode<br />Supp<br />Nama<br />Suppl<br />Kode<br />Barang<br />Nama<br />Barang<br />Tgl Jatuh<br />Tempo<br />Qty Harga Jumlah Total<br />111 A101 Akbar<br />Comp<br />DR128 DRAM 07/03/04 07/04/04 10 200 2000 2000<br />222 B111 Bona<br />Comp<br />GF52 GForce 10/02/04 15/03/04 10 500 5000 5000<br />222 B111 Bona<br />Comp<br />Ath 25 Ath 25 10/02/04 15/03/04 10 700 700 700<br />Namun bentuk Normal Kesatu ini mempunyai banyak kelemahan diantaranya<br />yaitu :<br />• Penyisipan data<br />Kode Suplier dan Nama Suplier tidak bisa ditambahkan tanpa adanya<br />transaksi pembelian.<br />• Penghapusan data<br />Jika salah satu record dihapus maka semua data yang ada di situ akan<br />terhapus juga.<br />• Pengubahan data<br />Data suplier ditulis berkali-kali (Kode dan Nama). Jika suatu saat terjadi<br />perubahan Nama suplier maka harus mengganti semua record yang<br />ada data supliernya. Bila tidak maka akan terjadi inkonsistensi.<br />• Redundansi<br />Field jumlah merupakan redundansi karena setiap harga dikalikan<br />kuantitas hasilnya adalah jumlah, sehingga field ini dapat dibuang. Bila<br /><br />tidak maka dapat mengakibatkan inkonsistensi jika terjadi perubahan<br />harga.<br /><br />Langkah Ketiga<br />Pembentukan Normal Kedua dengan mencari field kunci yang dapat dipakai<br />sebagai patokan dalam pencarian dan yang mempunyai sifat yang unik.<br />Melihat kondisi dari permasalahn faktur di atas dapat diambil kunci kandidat<br />sbb :<br />• No faktur<br />• Kode Suplier<br />• Kode Barang<br />Buatlah tiga tabel dengan kunci tersebut, lihatlah kebergantungan fungsional<br />field lain terhadap kunci, maka didapatkan tabel sbb :<br />Dengan pemecahan seperti di atas maka sebagian dari pertanyaan pengujian<br />pada bentuk normal kesatu yaitu masalah penyisipan, penghapusan dan<br />pengubahan dapat dijawab. Data suplier dapat ditambahkan kapan saja tanpa<br />harus ada transaksi pembelian.<br />Namun permasalahan masih ada yaitu pada tabel nota<br />• Field Kuantitas dan Harga tidak bergantung peenuh pada kunci primer<br />nomor nota, ia juga bergantung fungsi pada kode barang. Hal ini<br />disebut sebagai kebergantungan yang transitif dan harus dipisahkan<br />dari tabel.<br />• M=redundansi masih terjadi, yaitu setiap kali satu nota yang terdiri dari<br />5 mavcam barang yang dibeli maka 5 kali pula nota dituliskan ke<br />nomor nota, tanggal nota, tempo dan total. Ini harus dipisahkan bila<br />terjadi penggandaan tulisan yang berulang-ulang.<br /><br />Langkah Ke 4<br />Bentuk normal ketiga mempunyai syarat setiap tabel tidak mempunyai field<br />yang bergantung transitif, harus bergantung penuh pada kunci utama. Maka<br />terbentuklah tabel sbb :<br /><br />Langkah Ke-5<br />Pengujian di sini untuk memastikan kebenaran isi tabel dan hubungan antara<br />tabel tersebut. Ujian bahwa setiap tabel haruslah punya hubungan dengan<br />tabel yang lainnya. Bila tidak ada penghubungan antar tabel maka dapat<br />dikatakan perancangan untuk membuat satu basis data adalah gagal.<br /><br />Langkah Ke-6 Relasi Antar tabel<br />Gambarkan hubungan relasi antar file yang ada sbb :<br />Pengertian relasi di atas adalah<br />• Satu supplier punya banyak nota<br />• Nota punya relasi dengan suplier bukan sebaliknya suplier punya relasi<br />terhadap nota.<br />• Satu nota punya banyak transaksi barang<br />• Satu barang terjadi beberapa kali transaksi pembelian barang.<br /><br />Langkah Ke-7<br />Permasalahan di atas hanya terbatas pada satu dokumen Faktur pembelian<br />barang, padahal pada kenyataannya tentu faktur tersebut mempunyai<br />dokumen pelengkap misalnya nota penjualan barang, laporan stok barang,<br />Materi Kuliah Basis Data<br /><br />laporan penjualan, laporan pembelian dan masih banyak lagi laporan dan<br />dokumen data enty lainya.<br />Dengan langkah-langkah perancangan seperti di atas maka diperoleh fieldfield<br />untuk melengkapi tabel-tabel yang ada dalam satu basis data. Misalnya<br />tabel barang dengan bertambahnya field yang lain menjadiiRene..http://www.blogger.com/profile/00246901616755567914noreply@blogger.com0