Djoni Darmawikarta

dokumen-dokumen yang mirip
Djoni Darmawikarta

Mudafiq Riyan Pratama

SEKOLAH TINGGI TEKNOLOGI INDONESIA TANJUNG PINANG

Contoh SQL Constraint

Cepat Mahir Visual Basic 6.0. Cepat Mahir Visual Basic 6.0. Bab 10 Penggunaan Kontrol Array. Krisna D. Octovhiana

DESAIN DATABASE. Pertemuan 06 3 SKS

STRUCTURE QUERY LANGUAGE (SQL)

MySQL Full-Text Searching

KETERAMPILAN KOMPUTER 2B** (IT :S1-SA) Pertemuan 7. Database Dbase IV AHMAD HIDAYAT

STORE PROCEDURE. Pemrograman Client Server Sarji, S.Kom Studi kasus pada

MODUL 4 INTERNET PROGRAMMING DATABASE

Apakah SQL? Membuat basis data dan struktur tabel Input, update, dan delete data dari tabel Membuat query sederhana dan kompleks SQL

SISTEM BASIS DATA 1. WAHYU PRATAMA, S.Kom., MMSI.

STRUCTURE QUERY LANGUAGE DDL & DML

Proses normalisasi model data dapat diringkas sebagai berikut: 3. Tentukan atribut yang dimiliki masing-masing entitas.

Perangkat Lunak Pengembangan Web

LAPORAN PRAKTIKUM MODUL 1 PENGENALAN MYSQL

Mudafiq Riyan Pratama Pendahuluan. Lisensi Dokumen:

PENGENALAN SINTAKS DASAR DALAM MySQL

Contoh SQL Constraint

Constraint dan Manajemen Data dalam Timezone Berbeda

LAMPIRAN. 1) Membuat database baru untuk menampung data warehouse, yang bernama

Administrasi Basis Data. Integritas Data. Yoannita

Apa yang akan dibahas? Pengertian SQL Penggolongan Statement SQL Aturan Gramatika SQL Struktur Dasar SQL Query Satu (1) Tabel

Basis Data Relational

Riyanto

MySQL J A M K E T I G A

Basis Data Spasial Modul 2

Menampilkan Data/Tabel MySQL di Ms.Access

Krisna D. Octovhiana. 1.1 Apa itu Array?

MODUL 6 JDBC (JAVA DATABASE CONNECTIVITY)

Database. Danu Wira Pangestu 1. Mengenal Database. Lisensi Dokumen:

Pertemuan 12 Pengenalan Structured Query Language

Mudafiq Riyan Pratama

Sistem Basis Data Danny Kriestanto, S.Kom., M.Eng

BAB VIII FUNGSI, PL/PGSQL dan TRIGER

Krisna D. Octovhiana. 1.1 Mengenal Struktur Kontrol.

Pengenalan Structured Query Language

Basis Data 2. Procedure dan Function Database. Arif Basofi, S.Kom. MT. Teknik Informatika, PENS

Modul Pembangunan Aplikasi Basis Data Lanjut 2014

Data Manipulation Language (DML) & Data Control Language (DCL) pada Database

SQL (Structure Query Language) Gentisya Tri Mardiani, S.Kom

Krisna D. Octovhiana. 1.1 Apa itu Operator?

TRIGGER TRIGGER 5/29/2017 HANI IRMAYANTI, S.KOM

Jobsheet SQL Dasar : Hari Zulianto, ST [Year]

Praktikum 9 Validasi A. T U J U A N Memvalidasi Data Menggunakan Properti Required

Pengantar basis data Manipulasi SQL

TRIGGER. Tujuan Mata Kuliah. Tools yang digunakan. Sesi7 : TRIGGER. Praktikum Pemrograman Client Server Database Hadi Kusumah, S.T.

BAB 2 LANDASAN TEORI

Menampilkan Data MySql Menggunakan Dreamweaver

Sejarah(1) Sejarah(2) STRUCTURE QUERY LANGUANGE (1) Definisi SQL

PRAKTIKUM PL/SQL (Trigger) OLEH : WIRATMOKO YUWONO, ST

Pemrograman Basis Data dan SQL

Transaction dan Trigger. M. Saefudin SKom, MMSI

Pengertian Query. Query adalah perintah-perintah untuk mengakses data pada sistem basis data

IMPLEMENTASI CONSTRAINT UNTUK MENJAMIN KONSISTENSI DAN INTEGRITAS DATA DALAM DATABASE

Krisna D. Octovhiana. 1.1 Mengenal Data dan Variabel.

Pemrograman Web 1. Akademi Manajemen Informatika dan Komputer AMIK Royal Kisaran. Modul 2 Revisi 2. Tahun Akademik 2012/2013

Tutorial Singkat MySQL

Koneksi Visual Basic 6.0 dengan SQL SERVER 2000

DATABASE - MySQL. Muhammad Zen S. Hadi, ST. MSc.

INTEGRITAS BASIS DATA. OLEH : Slamet Sn Wibowo Wicaksono

Persiapan Table Untuk Latihan Sebelum kita berkenalan lebih jauh dengan Trigger, mari kita buat terlebih dahulu, struktur table yang dibutuhkan.

TUGAS 1 PRAKTIKUM SISTEM BASIS DATA

BAB II DASAR TEORI. 2.1 Konsep Dasar Sistem Aplikasi Pengertian Sistem. Pengertian sistem adalah kumpulan dari elemen-elemen yang berinteraksi

PRAKTIKUM SISTEM BASISDATA

PERINTAH DASAR MySQL

Operasi Dasar MySQL Menggunakan CLI(Command Line Interface)

BAB III MODEL DATA RELASIONAL DAN ALJABAR RELASIONAL

S Q L STRUCTURED QUERY LANGUAGE DEFINITION MANIPULATION C O N T R O L D M L SELECT INSERT UPDATE DELETE

MODUL III STRUCTURED QUERY ANGUAGE (SQL)

Sistem Basis Data. Pertemuan 13 SQL INSERT & SELECT TUJUAN

Budi Permana, S.Kom Pendahuluan. Lisensi Dokumen:

Konsep Dasar. Relatsional dan RDBMS User dan Schema Database Membuat Tabel dan Mendefinisikan Constraint Input Data ke dalam Tabel

MODUL PEMPROGRAMAN SQL TINGKAT DASAR 1 STANDAR KOMPETENSI: MENERAPKAN BAHASA PEMPROGRAMAN SQL TINGKAT DASAR SMK NEGERI 1 MAJALENGKA

DESIGN BASIS DATA SECARA FISIK

Rangga Praduwiratna

INTEGRITY CONSTRAINT BASIS DATA RELASIONAL DENGAN MENGGUNAKAN PL/PGSQL DAN CHECK CONSTRAINT

MODUL VII DATABASE DAN MICROSOFT SQL SERVER 2000

Structured Query Language

Djoni Darmawikarta

BAB 4 : Interaksi PL/SQL dengan Oracle Server

IMPLEMENTASI TRIGGER, STORED PROCEDURE, FUNCTION DAN VIEW PADA MYSQL DALAM PERANCANGAN SYSTEM INVENTORY CAFFE BOULEVARD JAYAPURA

Bab 5. Database Trigger POKOK BAHASAN: TUJUAN BELAJAR: 5.1. PENDAHULUAN

MODUL II. OBJECK, PROPERTY, METHOD dan EVENT

Konsep Sistem Informasi B. BAB 2 - SQL Overview

Aplikasi CRUD Sederhana Dengan PHP dan MySql

MUKADDIMAH TEORI ASUMSI TABEL. CREATE TABLE contoh ( kode CHAR(5), nama VARCHAR(50) )

BAB 5 ANOMALI DAN INTEGRITAS DATA PADA MODEL RELASIONAL

Berikut merupakan salah satu contoh dari pesan SOAP (SOAP Message):

MODUL 7 STRUCTURED QUERY LANGUAGE

Database Systems: Lab. Actvity 1: Database Design. Merancang Database. Merancang Database. Tipe Tabel MySQL.

CARA MENGGUNAKAN SELECT QUERY PADA MYSQL

Database MySql. Mata Pelajaran: Database SMK Qamarul Huda Jurusan TKJ Kelas XII. Disusun oleh: Heru Minandar,ST.

Basis Data. Bagian IV SQL (3) Fak. Teknik Jurusan Teknik Informatika Universitas Pasundan

Praktikum Basis Data 14 Structure Query Language 2

S Q L. Sejarah SQL. Penulisan Perintah SQL. SQL (Structure Query Language)

BAB IV IMPLEMENTASI DAN PENGUJIAN SISTEM

Transkripsi:

Keunikan Nilai Null Dalam Database Relasional Djoni Darmawikarta djoni_darmawikarta@yahoo.ca Lisensi Dokumen: Seluruh dokumen di IlmuKomputer.Com dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari IlmuKomputer.Com. Database relasional (relational database) seperti misalnya Oracle, DB2 (IBM), SQL Server (Microsoft), dan MySQL, memiliki fasilitas untuk menyimpan data bernilai null. Null disini bukan nol (angka nol) dan juga bukan space (untuk jenis data alpha, alphanumeric, dan string), melainkan mewakili nilai data tidak diketahui (unknown) atau tidak menentu (indeterminate) atau kosong (absence of value) Meskipun implementasi nilai null didalam database relasional, seperti beberapa yang disebutkan diatas, tidak sama percis satu dengan lainnya, kesemuanya mengacu pada hukum Codd ke-3 (sebagai persyaratan memenuhi kriteria database relasional) yang sudah menjadi standard ANSI SQL-92. Null memiliki keunikan-keunikan yang perlu dipahami untuk menghindari kesalahan pemakaiannya. Selanjutnya akan dibahas: Kebutuhan nilai null, keunikan sifat dan fasilitas, diakhiri dengan saran pemakaiannya Agar mudah disimak dan praktis, contoh-contoh akan menyertai pembahasan dan mengacu pada implementasi Oracle. Kebutuhan Nilai Null Berikut tiga contoh yang menunjukkan kebutuhan nilai null. Dalam aplikasi pekerjaan terkadang data kode pos tidak (belum) diberikan oleh pelamar (dalam formulir isian masih kosong). Bila kode pos tidak kritis, maka data yang sudah ada dimasukkan kedalam komputer agar aplikasi bersangkutan bisa diproses. Halaman 1 dari 7

Memasukkan nilai space kurang benar, karena ini berarti (bisa diartikan) pelamar tidak memiliki kode pos (terutama bila diolah komputer, space merupakan nilai data bersangkutan), padahal yang benar adalah bahwa dia memilikinya tetapi belum memberikannya. Dengan kata lain, dari sudut kita (pemroses data) kode pos bernilai belum diketahui (unknown). Melanjutkan contoh aplikasi pekerjaan diatas. Andaikan data gaji yang diinginkan juga kosong, tetapi profil pelamar sangat menarik, dan diputuskan untuk diproses, maka bila diisi angka nol tentu saja sangat salah, karena sudah pasti pelamar tidak mau tidak digaji! Data numerik seharusnya tidak berisi nol memberikan dampak negatif lain. Misalnya kita perlu menghitung angka rata-rata gaji yang dinginkan dari semua pelamar, untuk menentukan besarnya gaji yang akan ditawarkan. Kalau menyertakan yang masih berisi nol, hasil perhitungan rata-rata jelas akan salah. Kedua masalah diatas dapat diatasi dengan fasilitas null seperti akan diuraikan dibagian berikut (Keunikan dan Fasilitas pemakaian) Contoh ketiga, misalkan bonus merupakan bagian dari data karyawan tetapi hanya berlaku untuk salesman, maka untuk karyawan non-salesman data bonus-nya haruslah null, bukan nol, karena nol berarti berhak mendapat bonus (bonusnya nol mungkin karena prestasi penjualannya sangat jelek sehingga besar bonusnya nol) Ketiga contoh diatas merupakan kasus yang harus ditangani waktu merancang database. Dua contoh berikut semasa pemeliharaan (maintenance, dimana database sudah berisi data) Setelah terisi, diketahui bahwa sejumlah data yang baru selesai dimasukkan ternyata mengandung banyak kesalahan, dan diputuskan untuk untuk mengulang pengisiannya. Cara terbenar dan termudah adalah mengosongkan sekaligus (di-null-kan) semua yang salah terlebih dahulu, baru diisi kembali dengan data yang betul. Kalau caranya dengan menimpa yang salah (update in place), maka bila keseluruhan data dipakai termasuk yang belum sempat dikoreksi, hasilnya akan salah. Contoh terakhir sebagai berikut. Diperlukan tambahan data baru, misalnya jumlahanggota-keluarga. Pada saat ditambahkan ke tabel data jumlah-anggota-keluarga ini, yang benar, haruslah diisi nilai null; baru setelah itu diisi dengan nilai sesungguhnya. Dapat disimpulkan, bahwa dalam kenyataan penggunaan database memang ada kebutuhan nilai null. Keunikan dan Fasilitas pemakaian Agar data didalam tabel bisa bernilai null jangan dibatasi dengan NOT NULL. Pada contoh pembuatan tabel pelamar berikut, kolom kode_pos dan gaji_diinginkan boleh null. Halaman 2 dari 7

CREATE TABLE pelamar (nama_pelamar VARCHAR(20) NOT NULL, alamat_jalan VARCHAR(30) NOT NULL, kode_pos VARCHAR(6), gaji_diinginkan NUMERIC(10)); Pada waktu mengisi data, bila diinginkan isi kedua kolom tersebut null, dapat digunakan misalnya SQL statement sebagai berikut: INSERT INTO pelamar (nama_pelamar, alamat_jalan) VALUES ( Noah Jambu, 124 Burbank Dr ); Atau: INSERT INTO pelamar (nama_pelamar, alamat_jalan, kode_pos) VALUES ( Noah Jambu, 124 Burbank Dr, ); Kedua statement ini akan menghasilkan data yang sama didalam tabel pelamar, karena didalam statement yang terakhir, nilai kode_pos yang berupa string panjangnya nol (bukan space) diberi nilai null. nama_pelamar alamat_jalan kode_pos gaji_diinginkan Noah Jambu 124 Burbank Dr Andaikan tabel pelamar sudah kita isi dengan data sebagai berikut. nama_pelamar alamat_jalan kode_pos gaji_diinginkan Noah Jambu 124 Burbank Dr Alan Glasgow 69 Aussie Rd 4113 50000 Kian Lee Pekojan Tengah 17 Igor Kinosky Unit 24 Red Square X0Z8Y9 100000 Untuk membaca semua data yang kode-posnya null, kita gunakan IS NULL, sebagai berikut: SELECT * FROM pelamar WHERE kode_pos IS NULL; nama_pelamar alamat_jalan kode_pos gaji_diinginkan Noah Jambu 124 Burbank Dr Kian Lee 17 Pekojan Tengah Bila kita gunakan: SELECT * FROM pelamar WHERE kode_pos = NULL; Halaman 3 dari 7

hasilnya akan tidak seperti kita inginkan tidak ditemukan apa-apa. Ini disebabkan null nilainya tidak menentu (indeterminate), karenanya pembandingan null dengan null pun hasilnya tidak menentu (akibatnya, dalam contoh diatas, data yang dicari tidak ditemukan) Sekali lagi, gunakan fasilitas IS NULL untuk mencari (membandingkan dengan) nilai null. Ketidaktentuan nilai null ini juga ditunjukkan dari hasil program berikut: /* membandingkan a dan b yang keduanya bernilai null */ /* variabel yang dideklarasikan dan tidak diberi nilai akan bernilai null /* (diberi nilai awal null oleh oracle) */ DECLARE a INTEGER; b INTEGER; BEGIN IF a = b THEN DBMS_OUTPUT.PUT_LINE('a bernilai = b'); DBMS_OUTPUT.PUT_LINE('a bernilai <> b'); END; Hasil yang ditampilkan: a bernilai <> b Operasi pembanding yang lain, seperti > (lebih besar), <= (lebih kecil atau sama) dan <> (tidak sama), bila melibatkan null, hasilnya juga null (tidak menentu) Operasi perhitungan (arithmetic) yang melibatkan null menghasilkan null. Misalnya untuk perkalian sebagai berikut: SELECT nama_pelamar, (gaji_diinginkan * 1.10) gaji_ditawarkan FROM pelamar; nama_pelamar gaji_ditawarkan Noah Jambu Alan Glasgow 55000 Kian Lee Igor Kinosky 110000 Contoh fungsi aritmetik: rata-rata. SELECT AVG(gaji_diinginkan) rata_rata_gaji_diinginkan FROM pelamar; Halaman 4 dari 7

rata_rata_gaji_diinginkan 75000 Hasil 75000 ini diperoleh dari perhitungan (50000 + 100000)/2. Jadi, hanya 2 data diperhitungkan (yang tidak null), tidak 4 (null tidak diperhitungkan) Contoh operasi string (alphanumeric): penggabungan. SELECT nama_pelamar, (alamat_jalan kode_pos) alamat_lengkap FROM pelamar; alamat_lengkap 124 Burbank Dr 69 Aussie Rd 4113 Pekojan Tengah 17 Unit 24 Red Square X0Z8Y9 Terlihat dalam penggabungan diatas, bahwa nilai null adalah hampa (string yang panjangnya nol) Hukum operasi relasional yang berkenaan dengan null ditunjukkan dalam daftar berikut. Operator Operasi Hasil relasional AND true AND null null false AND null false null AND null null OR true OR null true false OR null null null OR null null NOT NOT null null Program berikut membuktikan operasi relasional OR diatas. BEGIN IF (true OR null) = true THEN DBMS_OUTPUT.PUT_LINE('true OR null is true'); /*menurut daftar diatas inilah yang benar ditampilkan */ IF ((true OR null) = false) THEN DBMS_OUTPUT.PUT_LINE('true OR null is not false'); Halaman 5 dari 7

IF ((true OR null) IS NULL) THEN DBMS_OUTPUT.PUT_LINE('true OR null is not null'); NULL; IF (false OR null) IS NULL THEN DBMS_OUTPUT.PUT_LINE('null'); /*menurut daftar diatas inilah yang benar ditampilkan */ IF ((false OR null) = true) THEN DBMS_OUTPUT.PUT_LINE('true'); IF ((false OR null) = false) THEN DBMS_OUTPUT.PUT_LINE('false'); NULL; IF (null OR null) IS NULL THEN DBMS_OUTPUT.PUT_LINE('null OR null is null'); /*menurut daftar diatas inilah yang benar ditampilkan */ IF ((null OR null) = true) THEN DBMS_OUTPUT.PUT_LINE('null OR null is not true'); IF ((null OR null) = false) THEN DBMS_OUTPUT.PUT_LINE('null OR null is not false'); NULL; END; Hasil yang ditampilkan: true OR null is true false OR null is null null OR null is null Oracle menyediakan fasilitas berkenaan dengan null, selain IS NULL yang sudah dibahas diatas, misalnya fungsi NVL(parameter1, parameter2). Fungsi NVL ini Halaman 6 dari 7

menghasilkan (returning) parameter kedua bila bonus bernilai null, bila tidak null maka nilai bonus yang dihasilkan. Berikut contohnya. /* bila nilai kode_pos null, tampilkan kode pos menyusul untuk visualisasi nilai nullnya */ DECLARE tampilan_kode_pos VARCHAR(20); BEGIN SELECT kode_pos INTO tampilan_kode_pos FROM pelamar WHERE nama_pelamar = 'Noah Jambu'; DBMS_OUTPUT.PUT_LINE(NVL(tampilan_kode_pos, 'kode pos menyusul')); END; Hasil yang ditampilkan: kode pos menyusul Saran Pemakaian Null Manfaatkan null pada tempatnya. Karena keunikan null (lain dari nilai data jenis yang normal), bila tidak betul-betul dibutuhkan, lebih baik dihindari. Pahami cara pemakaiannya, termasuk implementasi spesifik di database yang digunakan. Dan, jangan lupa mendidik pemakai data, terutama end-user (business user yang tidak memiliki keakhlian teknis memadai) Halaman 7 dari 7