Syntax SQL, Inner Join, Left Join, Right Join, and Full Join
LEVEL DATABASE
Membuat database
Untuk membuat database baru, sehingga tidak berlaku jika database sudah ada atau anda tidak memiliki privilege.
Sintaksnya : CREATE DATABASE nama_db
Menghapus database
Untuk menghapus database beserta seluruh table di dalamnya. Perintah ini tidak berlaku jika database tidak ada atau anda tidak memiliki privilege.
Sintaksnya : DROP DATABASE nama_db
Menggunakan database
Untuk menjadikan database menjadi default dan referensi dari table yang nantinya anda gunakan. Perintah ini tidak berlaku jika database tidak ada atau anda tidak memiliki privilege.
Sintaksnya : USE nama_db
Menampilkan database
Untuk menampilkan daftar yang ada dalam system saat itu.
Sintaksnya : SHOW DATABASES
LEVEL TABEL
Membuat table
Untuk membuat table minimal anda harus menentukan namanya dan tipe kolom yang anda inginkan.
Sintaks yang paling sederhana (tanpa ada definisi lain) adalah :
CREATE TABLE nama_tbl (kolom1 tipekolom1(),kolom2 tipekolom2(), …)
Contoh : Anda ingin membuat table dengan nama profil yang memiliki kolom nama (bertipe char, lebar 20), kolom umur (bertipe integer), kolom jenis_kelamin (bertipe enum, berisi M dan F). Sintaksnya : CREATE TABLE profil (nama CHAR(20), umur INT NOT NULL, jenis_kelamin ENUM(‘F’,’M’) )
Sedangkan perintah yang agak lengkap dalam membuat sebuah table adalah dengan menyertakan definisi tertentu. Misalnya perintah seperti ini : CREATE TABLE peserta ( No SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT, Nama CHAR(30) NOT NULL, BidangStudi ENUM(‘TS’,’WD’) NOT NULL, PRIMARY KEY (No), INDEX (Nama, BidangStudi) )
Perintah di atas berarti membuat table peserta dengan kolom No sebagai PRIMARY KEY yaitu indeks table yang unik yang tidak bisa diduplikat dengan atribut AUTO_INCREMENT yaitu kolom yang otomatis dapat mengurutkan angka yang diisikan padanya. Sedangkan kolom Nama dan BidangStudi dijadikan indeks biasa.
Membuat indeks pada table
Menambahkan indeks pada table yang sudah ada baik yang unik ataupun yang biasa.
Sintaksnya : CREATE INDEX nama_index ON nama_tbl (nama_kolom) CREATE UNIQUE INDEX nama_index ON nama_tbl (nama_kolom)
Menghapus table
Untuk menghapus table dalam database tertentu. Jika dilakukan maka semua isi, indeks dan atribut lain akan terhapus.
Sintaksnya : DROP TABLE nama_tbl
Menghapus indeks
Untuk menghapus indeks pada suatu table.
Sintaksnya : DROP INDEX nama-index ON nama_tbl
Melihat informasi table
Untuk melihat table apa saja yang ada di database tertentu.
Sintaksnya : SHOW TABLES FROM nama_db
Sedangkan untuk melihat deskripsi table atau informasi tentang kolom gunakan sintaks : DESC nama_tbl nama_kolom atau SHOW COLUMNS FROM nama_tbl FROM nama_db
Mendapatkan atau menampilkan informasi dari table
Untuk menampilkan isi table dengan option-option tertentu. Misalnya untuk menampilkan seluruh isi table digunakan : SELECT * FROM nama_tbl
Untuk menampilkan kolom-kolom tertentu saja : SELECT kolom1,kolom2,… FROM nama_tbl
Untuk menampilkan isi suatu kolom dengan kondisi tertentu SELECT kolom1 FROM nama_tbl WHERE kolom2=isikolom Modifikasi struktur table Dapat digunakan untuk mengganti nama table atau mengubah strukturnya seperti manambah kolom atau indeks, menghapus kolom atau indeks, mengubah tipe kolom dsb. Sintaks umum : ALTER TABLE nama_tbl action
Untuk menambah kolom baru di tempat tertentu dapat menggunakan :
ALTER TABLE nama_tbl ADD kolom_baru type() definisi
Untuk menambah kolom_baru bertipe integer setelah kolom1 digunakan : ALTER TABLE nama_tbl ADD kolom_baru INT NOT NULL AFTER kolom1
Untuk menambah indeks baru pada table tertentu baik yang unik ataupun yang biasa: ALTER TABLE nama_tbl ADD INDEX nama_index (nama_kolom) ALTER TABLE nama_tbl ADD UNIQUE nama_indeks (nama_kolom) ALTER TABLE nama_tbl ADD PRIMARY KEY nama_indeks (nama_kolom)
Untuk mengubah nama kolom dan definisinya, misalnya mengubah nama kolom_baru dengan tipe integer menjadi new_kolom dengan tipe char dengan lebar 30 digunakan: ALTER TABLE nama_tbl CHANGE kolom_baru new_kolom CHAR(30) NOT NULL
Untuk menghapus suatu kolom dan seluruh atributnya, misal menghapus kolom1 : ALTER TABLE nama_tbl DROP kolom1
Untuk menghapus indeks baik yang unik ataupun yang biasa digunakan : ALTER TABLE nama_tbl DROP nama_index ALTER TABLE nama_tbl DROP PRIMARY KEY
Modifikasi informasi dalam table. Untuk menambah record atau baris baru dalam table, sintaksnya : INSERT INTO nama_tbl (nama_kolom) VALUES (isi_kolom) atau INSERT INTO nama_tbl SET nama_kolom=isi_kolom
Misalnya untuk menambah dua baris pada table profil dengan isi nama = deden & ujang dan isi umur = 17 & 18 adalah : INSERT INTO profil (nama,umur) VALUES (deden,17), (ujang,18) atau INSERT INTO profil SET nama=deden, umur=17 INSERT INTO profil SET nama=ujang, umur=18
Untuk memodifikasi record atau baris yang sudah ada yang bersesuaian dengan suatu kolom. Misalnya untuk mengubah umur deden menjadi 18 pada contoh di atas dapat digunakan sintaks : UPDATE profil SET umur=18 WHERE nama=qalit
Untuk menghapus record atau baris tertentu dalam suatu table. Misalnya untuk menghapus baris yang ada nama ujang digunakan
sintaks : DELETE FROM profil WHERE nama=ujang
Jika WHERE tidak disertakan maka semua isi dalam table profil akan terhapus.
SQL adalah kependekan dari Structured Query Language, merupakan sebuah bahasa yang digunakan untuk mengakses data dalam basis data (database) relasional. SQL banyak diterapkan pada pemrograman berbasis client-server seperti PHP, ASP, Java J2EE, dan sebagainya. Contoh software SQL yang terkenal adalah MySQL, MsSQL (Microsoft), Oracle SQL, Postgre SQL (open source). Masing-masing software mempunyai keunggulan sendiri-sendiri, sejauh yang saya tahu Oracle SQL handal dalam hal keamanan dan ukuran database yang bisa mencapai tera byte, sedang MsSQL lebih banyak bermain di Memory untuk processing. Dari ketiga software ini, Oracle SQl bisa dikatakan sebagai pemegang pertama. Perintah dasar SQL pada dasarnya hampir sama baik MySQL, Postgre SQL, MsSQL atau Oracle SQL.
Membuat Database Baru di SQL
DDL (Data Definition Language) digunakan untuk mendefinisikan, mengubah, serta menghapus database dan objek-objek yang diperlukan. Membuat basis data di SQL cukup mudah, syntaxnya sebagai berikut.
1 CREATE DATABASE nama_db;
Membuat Tabel di SQL
1 CREATE TABLE nama_tabel;
Sedangkan untuk membuat tabel lengkap dengan fieldnya, perhatikan contoh di bawah ini:
1 2 3 4 CREATE TABLE user ( user_name VARCHAR(30) CONSTRAINT PRIMARY KEY, password VARCHAR(20) NOT NULL, date_of_birth DATETIME );
DML (Data Manipulation Language), digunakan untuk memanipulasi data dalam tabel. Perintahnya adalah:
SELECT untuk menampilkan data
INSERT untuk menambahkan data baru
UPDATE untuk mengubah data yang sudah ada
DELETE untuk menghapus data
Menampilkan Seluruh Data
1 SELECT * FROM user;
Menyimpan Data ke Tabel SQL
1 INSERT INTO user (user_name, password, date_of_birth) VALUES ('ALIYA HASSAN', 'Cengkareng', 'qwe');
Menghapus Data di Tabel
1 DELETE FROM user WHERE nama='ALIYA HASSAN';
Catatan: Setiap syntax pada SQL selalu diakhiri dengan tanda semicolon atau titik koma (;), abaikan kode ini jika kamu menggunakan PHPMyAdmin untuk mengakses database. Tapi jika kamu menggunakan terminal, ssh, cmd, atau program remote server lainnya perintah ini wajib diperhatikan. Selalu gunakan tanda bintang (*) untuk melihat isi tabel, tanda ini akan membaca baris (row). Pada dasarnya, perintah dasar mysql sama dengan postgre sql maupun oracle sql.
Perintah SQL dan Pengunaannya - SQL (Structured Query Language) adalah sebuah bahasa yang digunakan untuk mengakses data dalam basis data relasional. Bahasa ini secara de facto merupakan bahasa standar yang digunakan dalam manajemen basis data relasional. Saat ini hampir semua server basis data yang ada mendukung bahasa ini untuk melakukan manajemen datanya.
Berikut perintah-perintah dari sql beserta contoh penggunaanya : 1. Create Database : Create database berguna untuk membuat database baru. Syntax dasar:
CREATE DATABASE database_nama
Contoh:
CREATE DATABASE databaseku
2. Create Table : Berguna untuk membuat tabel data baru dalam sebuah database. Syntax dasar:
CREATE TABLE ( Column_name1 table_nama data_type Column_name2 table_nama data_type Column_name3 table_nama data_type )
Contoh menggunakan perintah create table :
CREATE TABLE registrasi ( Id int, Nama varchar (255), Email varchar(50), Kota varchar(255) )
3. Select : Digunakan untuk memilih data dari table database. Syntax dasar :
SELECT column_name(s) FROM table_name
Atau
SELECT * FROM table_name
Contoh 1 :
SELECT nama,email FROM registrasi
Contoh 2 :
SELECT * FROM registrasi
4. Select Distinct : Digunakan untuk memilih data-data yang berbeda (menghilangkan duplikasi) dari sebuah table database. Syntax dasar :
SELECT DISTINCT column_name(s) FROM table_name
Contoh :
SELECT DISTINCT kota FROM registrasi
5. Where : Digunakan untuk memfilter data pada perintah Select Syntax dasar :
SELECT column name(s) FROM table_name WHERE column_name operator value
Contoh :
SELECT * FROM registrasi WHERE nama=’KONOE’
6. Order By : Digunakan untuk mengurutkan data berdasarkan kolom (field) tertentu. Secara default, urutan tersusun secara ascending (urut kecil ke besar). Anda dapat mengubahnya menjadi descending (urut besar ke kecil) dengan menambahkan perintah DESC. Syntax dasar :
SELECT column_name(s) FROM table_name ORDER BY column_name(s) ASC|DESC
Contoh 1 :
SELECT * FROMregistrasi ORDER BY email
Contoh 2 :
SELECT * FROM registrasi ORDER BY id DESC
8. Like : Digunakan bersama dengan perintah Where, untuk proses pencarian data dengan spesifikasi tertentu. Syntax dasar :
SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern
Contoh 1 :
SELECT * FROM registrasi WHERE nama LIKE ‘b%’
Keterangan Contoh di atas digunakan untuk pencarian berdasarkan kolom nama yang berhuruf depan “b”. Contoh 2 :
SELECT * FROM WHERE nama LIKE ‘b%’
Keterangan : Contoh di atas digunakan untuk pencarian berdasarkan kolom nama yang berhuruf belakang “b”. 9. In : Digunakan untuk pencarian data menggunakan lebih dari satu filter pada perintah Where. Syntax dasar :
SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2, . . .)
Contoh :
SELECT * FROM registrasi WHERE kota IN (‘Medan’,’Siantar’)
10. Between : Digunakan untuk menentukan jangkauan pencarian. Syntax dasar :
SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2
Contoh :
SELECT * FROM registrasi WHERE id BETWEEN 5 and 15
Keterangan : Contoh di atas digunakan untuk mencari data yang memiliki nomor id antara 5 dan 15. 11. Insert Into : Digunakan untuk menambahkan data baru di tabel database. Syntax dasar :
INSERT INTO table_name VALUES (value1,value2,value3, . . .)
Atau
INSERT INTO table_name (column1,column2,column3, . . .) VALUES (value1,value2,value3, . . .)
Contoh 1 :
INSERT INTO registrasi VALUES (1,’konoe’,’konoe@gmail.com’,’Medan’)
Contoh 2 :
INSERT INTO registrasi (id,nama,email,kota) VALUES (1,'konoe','konoe@gmail.com','Medan')
12. Update : Digunakan untuk mengubah/memperbarui data di tabel database. Syntax dasar:
UPDATE table_name SET column1=value,column2=value, . . . WHERE some_column=some_value
Contoh :
UPDATE registrasi SET email=’konoe@yahoo.com’, kota=’Medan’ WHERE
13. Delete : Digunakan untuk menghapus data di table database. Tambahkan perintah Where untuk memfilter data-data tertentu yang akan dihapus. Jika tanpa perintah Where, maka seluruh data dalam tabel akan terhapus. Syntax dasar :
DELETE FROM table_name WHERE some_column=some_value
Contoh :
DELETE FROM registrasi WHERE id=1
14. Inner Join : Digunakan untuk menghasilkan baris data dengan cara menggabungkan 2 buah tabel atau lebih menggunakan pasangan data yang match pada masing-masing tabel. Perintah ini sama dengan perintah join yang sering digunakan. Syntax dasar :
SELECT column_name(s) FROM table_name1 INNER JOIN table_name2 ON table_name1.column_name=table_name2 column-name
contoh :
SELECT registrasi.nama,registrasi.email,order.no_order FROM registrasi INNER JOIN order ON registrasi.id=order.id ORDER BY registrasi.nama
15. Left Join : Digunakan untuk menghasilkan baris data dari tabel kiri (nama tabel pertama) yang tidak ada pasangan datanya pada tabel kanan (nama tabel kedua). Syntax dasar :
SELECT column_name(s) FROM table_name1 LEFT JOIN table_name2 ON table_name1.column_name=table_name2. column_name
contoh :
SELECT registrasi.nama,registrasi.email,order.no_order FROM registrasi LEFT JOIN order ON registrasi.id=order.id ORDER BY registrasi.nama
16. Right Join : Digunakan untuk menghasilkan baris data dari tabel kanan (nama tabel kedua) yang tidak ada pasangan datanya pada tabel kiri (nama tabel pertama). Syntax dasar :
SELECT column_name(s) FROM table_name1 RIGHT JOIN table_name2 ON table_name1.column_name=table_name2 column_name
contoh :
SELECT registrasi.nama,registrasi.emailmorder.no_order FROM registrasi RIGHT JOIN order ON registrasi.id=order.i ORDER BY registrasi.nama
17. Full Join : Digunakan untuk menghasilkan baris data jika ada data yang sama pada salah satu tabel. Syntax dasar
SELECT column_name(s) FROM table_name1 FULL JOIN table_name2 ON table_name1.column_name=table_name2 column_name
Contoh :
SELECT registrasi.nama,registrasi.email,order.no_order FROM registrasi FULL JOIN order ON registrasi.id=order.id ORDER BY registrasi.nama
18. Union : Digunakan untuk menggabungkan hasil dari 2 atau lebih perintah Select. Syntax dasar :
SELECT column_name(s)FROM table_name1 UNION column_name(s) FROM table_name2
Atau
SELECT column_name(s) FROM table_name1 UNION ALL SELECT column_name(s) FROM table_name2
Contoh :
SELECT nama FROM mhs_kampus1 UNION SELECT nama FROM mhs_kampus2
18. Alter Table : Digunakan untuk menambah, menghapus, atau mengubah kolom (field) pada tabel yang sudah ada. Syntax untuk menambah kolom :
ALTAR TABLE table_name ADD column_name datatyoe
Contoh :
ALTER TABLE Persons ADD DateOfBirth date
Syntax untuk menghapus kolom :
ALTER TABLE table_name DROP COLUMN column_name
Contoh :
ALTER TABLE Persons DROP COLUMN DateOfBirth
Syntax untuk mengubah kolom :
ALTER TABLE table_name ALTER TABLE clumn_name datatype
Contoh:
ALTER TABLE Persons ALTER COLUMN DateOfBirth year
19. Now () : Digunakan untuk mendapatkan informasi waktu (tanggal dan jam saat ini.) Syntax dasar
Now()
Contoh :
SELECT NOW()
20. Curdate : Digunakan unutk mendapatkan informasi tanggal saat ini. Syntax dasar :
Curdate()
Contoh :
SELECT CURDATE()
21. Curtime() : Digunakan untuk mendapatkan informasi jam saat ini. Syntax dasar :
Curtime()
Contoh :
SELECT CURTIME()
22. Extract() : Digunakan untuk mendapatkan informasi bagian-bagian dari data waktu tertentu, seperti tahun, bulan, hari, jam, menit, dan detik tertentu. Syntax dasar
Extract(unit FROM date)
INNER JOIN
Jika Anda telah memahami fungsi join pada database relasional untuk menghubungkan berbagai table, maka artikel berikut akan menjelaskan dan menunjukkan contoh penggunaan variasi join pada MySQL versi 5.0. JOIN sendiri merupakan konstruksi bahasa yang tidak bisa berdiri sendiri, biasanya berupa klausa pada bagian referensi table pada SELECT, UPDATE atau DELETE statement. Tipe-tipe JOIN
Normalisasi Database
Normalisasi merupakan sebuah upaya untuk memperoleh sebuah database dengan struktur yang baik dengan cara menerapkan sejumlah aturan pada setiap tabel agar ruang penyimpanan efisien. Istilah normalisasi dapat disederhanakan menjadi memecah relasi menjadi beberapa tabel untuk mendapat database yang optimal.
Istilah penting dalam teknik normalisasi
Field / atribut kunci
Setiap file selalu terdapat kunci dari file berupa satu field atau satu field yang dapat mewakili record
Candidate key
Kumpulan atribut minimal yang secara unik mengidentifikasi sebuah baris fungsinya sebagai calon primary key.
Composite key
Kunci kandidat yang berisi lebih dari satu atribut
Primary key
Candidate key yang dipilih untuk mengidentifikasi baris secara unik
Alternate key
Candidate key yang tidak dipilih sebagai primary key
Foreign key.
Key di tabel lain yang terhubung dengan primary key pada sebuah tabel
Keterangan :
Atribut kunci : NIS
Candidate key : NIS dan Nama
Composit key : Nama bisa dibagi menjadi nama depan dan nama belakang. Alamat bisa dibagi menjadi jalan, kota, propinsi
Primary key : NIS
Alternate key : Nama
Foreign key : NIS pada tabel nilai merupakan foreign key
Sebuah tabel dikatakan baik (efisien) atau normal jika memenuhi 3 kriteria sbb:
- Jika ada dekomposisi (penguraian) tabel, maka dekomposisinya harus dijamin aman (Lossless-Join Decomposition). Artinya, setelah tabel tersebut diuraikan / didekomposisi menjadi tabel-tabel baru, tabel-tabel baru tersebut bisa menghasilkan tabel semula dengan sama persis.
- Terpeliharanya ketergantungan fungsional pada saat perubahan data (Dependency Preservation).
- Tidak melanggar Boyce-Code Normal Form (BCNF)
Syarat perlunyya normalisasi:
- Fleksibilitas
Struktur database harus menunjang semua cara untuk menampilan data, sehingga ketika user menjalankan aplikasi dan meminta sesuatu dalam datbase, database harus dapat berjlan memenuhi permintaan user.
- integritas data
Semua data dalam database yang berkaitan harus terhubung dalam suatu relationship. Sehingga ketika suatu data berubah,maka semua data yang berkaitan dengan data tersebut harus dapat berubah secara otomatis.
- Efficiency
Pada database, ukuran suatu database merupakan hal yang penting. Maka dalam database, kita harus mengurangi redudansi data yang bisa menyebabkan ukuran databse membengkak.
- Menghindari modification anomaly
Desain database yang baik menyajikan suatu keyakinan bahwa ketika user melakukan perubahan dalam database, maka tidak terjadi hal yang tidak diinginkan.
Kapan tidak memakai normalisasi
- ketika kita ingin mempertahankan kesederhanaan database, sehingga user dapat melakukan query sendiri
- jika tidak ingin melakukan query yang rumit. normalisasi biasanya akan membuat rumit query karena melibatkan banyak tabel
- tidak selamanya normalisasi membuat baik, malah akan menyebabkan database semakin buruk
Keuntungan dari normalisasi, yaitu :
1. Meminimalkan ukuran penyimpanan yang diperlukan untuk menyimpan data.
2. Meminimalkan resiko inkonsistensi data pada basis data
3. Meminimalkan kemungkinan anomali pembaruan
4. Memaksimalkan stabilitas struktur data
Dalam melakukan normalisasi, ada beberapa tahap yang harus dilakukan :
1. Unnormalized
Pada tahap ini, kita mengambil seluruh data yang ada dan diperlukan dalam database itu sendiri. Misalnya pada contoh bon faktur di bawah ini,
Kita ambil data-data yang diperlukan pada database nantinya, sperti * Nama Supplier * Alamat Supplier * No. Telp. * No. Nota * Tanggal Transaksi * Kode Barang * Nama Barang * Harga * Quantity * Total * Subtotal * Pemberi * Penerima
2. Normal Satu
Pada tahap ini, kita bagi seluruh data yang diperlukan menjadi beberapa bagian berdasarkan jenis data tersebut,
Supplier * Nama Supplier * Alamat * No. Telp.
Transaksi * No. Nota * Kode Barang * Tanggal Transaksi * Nama Barang * Harga Barang * Satuan * Quantity * Total * Sub Total
3. Normal Dua
Pada tahap ini, kita bagi berdasarkan jenis dan memberikan primary key pada masing-masing tabel,
Supplier * Kode Supplier * Nama Supplier * Alamat * No. Telp.
Master Barang * Kode Barang * Nama Barang * Harga * Satuan
Transaksi * No. Nota * Tanggal Transaksi * Kode Barang * Nama Barang * Harga * Satuan * Quantity * Pemberi * Penerima
4. Normal Tiga
Pada tahap ini, kita bagi menjadi lebih terperinci untuk menghindari terjadinya redudancy,
Supplier * Tetap
Master Barang * Tetap
Transaksi Dibagi menjadi: Header Transaksi * No. Nota * Tanggal Transaksi * Kode Supplier * Pemberi * Penerima
Detail Transaksi * No. Nota * Kode Barang * Quantity
Normalisasi model data dilakukan dengan mengikuti langkah-langkah sederhana, mengubahnya agar memenuhi apa yang disebut sebagai bentuk normal pertama, kedua, lalu ketiga secara berturutan.
Langkah-Langkah Normalisasi
1.Bentuk Normal Pertama ( 1NF )
Sebuah model data dikatakan memenuhi bentuk normal pertama apabila setiap atribut yang dimilikinya memiliki satu dan hanya satu nilai. Apabila ada atribut yang memiliki nilai lebih dari satu, atribut tersebut adalah kandidat untuk menjadi entitas tersendiri.
2.Bentuk Normal Kedua ( 2NF )
Tabel 1
Tabel 2
Tabel 3
Sebuah model data dikatakan memenuhi bentuk normal kedua apabila ia memenuhi bentuk normal pertama dan setiap atribut non-identifier sebuah entitas bergantung sepenuhnya hanya pada semua identifier entitas tersebut.
3.Bentuk Normal Ketiga (3NF)
Tabel 1 dan 2 sudah memenuhi criteria bantuk 3NF, namun tidak untuk tabel 3, karena bila kita ingin merubah value bobot dari nilai, maka kita akan melakukan perubahan pada banyak record/baris yang lainnya. Sehingga pada bentuk 3NF, tabel 3 dapat dipecah lagi menjadi 2 tabel agar memenuhi kriteria bentuk 3NF.
Tabel 3a
Tabel 3b
FIRST NORMAL FORM ( 1NF )
Implementasi 1-NF dari table data yang belum ternormalisasi di atas adalah dengan cara mengeliminasi keberadaan repeating groups dan dekomposisi relasi menjadi dua atau lebih dengan syarat “tidak boleh ada informasi yang hilang karena proses dekomposisi” Adapun caranya adalah :
1. Membuat 3 tabel yang memiliki fungsi sebagai berikut :
- TBFaktur, berfungsi untuk menyediakan atribut-atribut yang bersifat atomic dari tiap nomor faktur (ID_Faktur), seperti : Tanggal, Nama_Pelanggan, Total_Bayar, Diskon dan Nama_Petugas
- TBProduk, berfungsi untuk menyediakan atribut-atribut yang berulang atau tidak bernilai tunggal pada tiap nomor faktur (ID_Faktur), seperti : Nama_Barang dan harga
- TBTransaksiDetail, berfungsi sebagai penghubung antara nomor faktur (ID_Faktur) dengan kode barang (ID_Barang) agar proses dekomposisi tidak menyebabkan kerusakan informasi.
2. Menentukan type data dari tiap atribut dan membuat digram relasional sebagai berikut
3. Pada table TBTransaksiDetail terdapat atribut “Harga” yang berfungsi untuk menyimpan harga per transaksi, sedangkan atribut “Harga_Default” yang terdapat pada table TBProduk adalah atribut yang berfungsi untuk menyimpan harga barang terbaru dari tiap jenis barang.Hal ini berguna untuk mengantisipasi adanya perubahan harga dari waktu ke waktu.
4. Primary key yang digunakan pada TBTransaksiDetail adalah “ID_Transaksi”. Atribut kunci tersebut merupakan candidate key yang dibentuk dari superkey hasil penggabungan 2 atribut yaitu : ID_Faktur dan ID_Barang
SECOND NORMAL FORM( 2NF )
- Suatu relasi berada dalam 2nd normal form jika dan hanya jika:
- Berada dalam bentuk first normal form (1-NF)
- Semua atribut bukan kunci memiliki dependensi sepenuhnya dengan kunci primer (Primary Key)
Jika kita lihat kembali relasi bentuk 1-NF yang telah dibuat sebelumnya, maka atribut bukan kunci pada table TBFaktur yang tidak memiliki dependensi sepenuhnya dengan primary key (ID_Faktur), yaitu : “Nama_Petugas”. Oleh sebab itu dekomposisi relasi perlu dilakukan kembali dengan cara :
- Mengeliminasi atribut “Nama_Petugas” dari table TBFaktur
- Membuat tabel TBPetugas, menyediakan atribut-atribut yang terkait dengan identitas dan data pelanggan
THIRD NORMAL FORM ( 3NF )
Pada Second Normal Form (2-NF) atribut yang terkait dengan “Nama_Pelanggan” tidak didekomposisi dari table TBFaktur karena atribut tersebut masih memiliki dependensi fungsional dengan primary key (ID_Faktur) karena tiap nomor faktur akan berbeda untuk tiap pembeli/pelanggan. Tetapi pada tahap 3-NF (Third Normal Form), atribut “Nama_Pelanggan” harus didekomposisi relasi karena pada tahap ini atribut bukan kunci tidak boleh ada yang berdependensi transitif dengan kunci primer.
Atribut “Nama_Pelanggan” dikatakan berdependensi transitif terhadap primary key (ID_Faktur) karena :
- ID_Pelanggan → Nama_Pelanggan (Nama_Pelanggan berdependensi fungsional terhadap ID_Pelanggan)
- ID_Faktur → ID_Pelanggan (ID_Pelanggan berdependensi fungsional terhadap ID_Faktur, karena tiap nomor faktur akan dikeluarkan untuk suatu ID_Pelanggan tertentu)
- Sehingga dikatakan bahwa ID_Faktur memiliki dependensi transitif terhadap atribut Nama_Pelanggan
Entity Relationship Diagram
Model Entity Relationship merupakan suatu penyajian data dengan menggunakan Entity dan Relationship. Komponen-komponen ERD :
1. Entitas
Entity adalah obyek yang dapat dibedakan secara nyata , benar-benar ada secara fisik (contoh : orang) atau konsepsual (contoh : perusahaan) dan tidak saling bergantung keberadaannya.
a. Entitas kuat/strong
Entitas yang memiliki atribut kunci (key), yakni yang benar-benar dapat digunakan sebagai pembeda.
b. Entitas lemah/weak
Entitas yang keberadaan dari entitas tersebut tergantung dari keberadaan entitas lain, atau key-nya memiliki beberapa informasi yang mirip sehingga bersifat tidak penuh.
2. Relasi
Relasi adalah hubungan yang terjadi antara satu atau lebih entitas. Derajat relasi adalah jumlah entitas yang berpartisipasi pada suatu relasi, antara lain : relasi 1 entitas/berderajat 1 (unary), relasi 2 entitas/berderajat 2 (binary). relasi 3 entitas/berderajat 3 (ternary).
3. Atribut
Atribut adalah karakteristik dari/sesuatu yang dimiliki oleh entity atau relationship yang menyediakan penjelasan detail tentang entity atau relationship tersebut.
a. Key atribut,
Atribut yang digunakan untuk menentukan suatu entity secara unik/yang dapat membedakan satu dengan yang lainnya,
b. Partical key atribut
c. Atribut simple
Atribut yang bernilai simple.
d. Atribut multivalue
Atribut yang memiliki sekelompok nilai untuk setiap entitas.
e. Atribut composite
Atribut yang terdiri dari beberapa atribut yang lebih kecil yang mempunyai arti tertentu.
f. Atribut derifatif
Atribut yang dihasilkan dari atribut yang lain.
4. Kardinalitas
Kardinalitas adalah angka yang menjelaskan batasan jumlah keterhubungan satu entity dengan entitas lainnya.
a. One to One
b. One to Many
c. Many to Many
Partisipan/Modalitas
Partisipan/Modalitas menunjukkan partisipasi sebuah entitas pada suatu relasi.
a. Total partisipan:
Semua menjadi bagian dari relasi
b. Partical partisipan :
Tidak semua ikut dalam relasi.
Simbol Komponen ERD
Berikut ini contoh Entity Relationship Diagram.
Pada kasus ini terdapat entitas penghuni, kamar kost, dan pemilik kost. Penghuni menyewa kamar kost yang dimiliki oleh pemilik kost. Relasinya digambarkan sebagai berikut.
1 penghuni hanya bisa menyewa 1 kamar kost, dan 1 kamar kost hanya bisa disewa oleh 1 penghuni. 1 pemilik kost memiliki banyak kamar kost. Sehingga kardinalitasnya tampak pada gambar di bawah ini.
Untuk kelancaran penyewaan kamar kost ini, dibutuhkan identitas dari tiap penghuninya untuk didaftarkan dalam data adiministrasi kost. Identitas dari si penghuni ini merupakan atribut dari entitas penghuni tersebut. Identitas yang diperlukan dari si penghuni ini ialah nama, tempat, tanggal lahir pekerjaan, dan nomor handphone. Setiap penghuni bisa saja memiliki lebih dari 1 nomor handphone, sehingga no handphone digolongkan sebagai atribut multivalue.
Kost ini terdiri atas 3 lantai yang memiliki berbagai tipe kamar sesuai dengan fasilitas yang ada di dalamnya. Oleh karena itu kamar kost di kostan ini memiliki harga yang bervariasi. Setiap kamar diberi nomor sebagai identitas kamar tersebut. Atribut harga digolongkan sebagai atribut derifative, karena ia muncul dari atribut tipe kamar.
Pemilik kost memiliki atribut berupa nama, no handphone, dan alamat. No handphone digambarkan sebagai atribut multivalue karena bisa saja si pemilik kost memiliki no handphone lebih dari satu, dan alamat digambarkan sebagai atribut composite karena memiliki atribut lain berupa jalan, kelurahan, dan kecamatan.
Setiap penghuni yang menyewa kamar kost tersebut dicatat tanggal penyewaannya untuk kepentingan pembayaran. Dalam kost ini memiliki peraturan dimana jika ada penghuni yang terlambat membayar kamar kost (lebih dari 1 minggu) maka ia dikenai denda, sehingga denda dikategorikan sebagai atribut derifative. Selain itu jika ada teman, keluarga, atau relasi yang bermalam dikenai biaya charge.
Berikut ini diagram lengkap dari contoh Entity Relationship pada kasus ini.
Bahasa - Bahasa dalam DBMS
DQL (Data Query Language)
1. Bahasa Definisi Data (Data Definition Language/ DDL)
DDL adalah perintah-perintah yang biasa digunakan oleh administrator basis data (DBA) utnuk mendefinisikan skema ke DBMS. Skema adalah deskripsi lengkap tentang struktur medan, rekaman, dan hubungan data pada basis data.
Data Definition Language (DDL) digunakan untuk mendefinisikan, mengubah dan menghapus basis data dan objek-objek yang diperlukan, misalnya tabel, view, user, index dan sebagainya. DDL biasa digunakan oleh DBA dalam pembuatan sebuah aplikasi basis data. Secara umum DDL yang digunakan ada empat, yaitu
• CREATE untuk membuat objek baru.
• USE untuk menggunakan objek.
• ALTER untuk mengubah objek yang sudah ada.
• DROP untuk menghapus objek.
Perancangan Basis Data memiliki beberapa tujuan, diantaranya memenuhi informasi yang berisikan kebutuhan-kebutuhan pengguna secara khusus dan aplikasi-aplikasinya. Memudahkan pengertian struktur informasi. Mendukung kebutuhan-kebutuhan pemrosesan dan beberapa obyek penampilan (response time, processing time, dan storage space). Siklus hidup aplikasi basis data berhubungan dengan siklus hidup sistem informasi. Siklus kehidupan sistem informasi sering disebut macro life cycle, dimana siklus kehidupan basis data merupakan micro life cycle. Proses perancangan basis data merupakan bagian dari siklus hidup sistem informasi. Ada 6 fase proses perancangan basis data, yakni:
1. Pengumpulan data dan analisa Proses identifikasi dan analisa kebutuhan-kebutuhan data disebut pengumpulan data dan analisa. Untuk menentukan kebutuhan-kebutuhan suatu sistem basis data, pertama harus mengenal bagian-bagian lain dari sistem informasi yang akan berinteraksi dengan sistem basis data, termasuk para pemakai yang ada dan para pemakai yang baru serta aplikasi-aplikasinya. Kebutuhan-kebutuhan dari para pemakai dan aplikasi inilah yang kemudian dikumpulkan dan dianalisa. Ada 4 aktivitas pengumpulan data dan analisis, yaitu:
a. Menentukan kelompok pemakai dan bidang-bidang aplikasinya.
b. Peninjauan dokumentasi yang ada.
c. Analisa lingkungan operasi dan pemrosesan data.
d. Daftar pertanyaan dan wawancara.
2. Perancangan basis data secara konseptual Tujuan dari fase ini adalah menghasilkan conceptual schema untuk basis data yang tergantung pada sebuah DBMS yang spesifik. Sering menggunakan sebuah high-level data model seperti ERD (Entity Relationship Diagram) model selama fase ini. Dalam conceptual schema, kita harus memerinci aplikasi-aplikasi basis data yang diketahui dan transaksi-transaksi yang mungkin.
3. Pemilihan DBMS Pemilihan basis data ditentukan oleh beberapa faktor, diantaranya : faktor teknik, ekonomi dan organisasi.
4. Perancangan basis data secara logika (pemetaan model data) Fase selanjutnya dari perancangan basis data adalah membuat sebuah skema konseptual dan skema eksternal pada model data dari DBMS yang terpilih. Fase ini dilakukan oleh pemetaan skema konseptual dan skema eksternal yang dihasilkan pada fase 2. Pada fase ini, skema konseptual ditransformasikan dari model data tingkat tinggi yang digunakan pada fase 2 ke dalam model data dari DBMS yang dipilih pada fase 3.
5. Perancangan basis data secara fisik Perancangan basis data secara fisik merupakan proses pemilihan struktur-struktur penyimpanan dan jalur-jalur akses pada file-file basis data untuk mencapai penampilan yang terbaik pada bermacam-macam aplikasi. Selama fase ini, dirancang spesifikasi-spesifikasi untuk basis data yang disimpan yang berhubungan dengan struktur-struktur penyimpanan fisik, penempatan record dan jalur akses. Berhubungan dengan internal schema (pada istilah 3 level arsitektur DBMS). Beberapa petunjuk dalam pemilihan perancangan basis data secara fisik:
- Response time, ialah waktu akses basis data untuk data item yang ditunjuk oleh suatu transaksi. Response time juga dipengaruhi oleh beberapa faktor yang tidak berada di bawah pengawasan DBMS, seperti penjadwalan sistem operasi atau penundaan komunikasi.
- Space utility, ialah jumlah ruang penyimpanan yang digunakan oleh file-file basis data dan struktur jalur akses.
- Transaction throughput, ialah rata-rata jumlah transaksi yang dapat diproses per menit oleh sistem basis data dan merupakan parameter kritis dari sistem transaksi (misal : digunakan pada pemesanan tempat di pesawat, bank, dll). Hasil dari fase ini adalah penentual awal dari struktur penyimpanan dan jalur akses untuk file-file basis data.
6. Implementasi sistem basis data Setelah perancangan secara logika dan secara fisik lengkap, kita dapat melaksanakan sistem basis data. Perintah-perintah dalam DDL dan DML (Data Manipulation Language) dari DBMS yang dipilih, dihimpun dan digunakan untuk membuat skema basis data dan file-file basis data (yang kosong). Sekarang basis data tsb dimuat (disatukan) dengan datanya. Jika data harus dirubah dari sistem komputer sebelumnya, perubahan-perubahan yang rutin mungkin diperlukan untuk format ulang datanya yang kemudian dimasukkan ke basis data yang baru. Transaksi-transaksi basis data sekarang harus dilaksanakan oleh para programmer aplikasi. Spesifikasi secara konseptual diuji dan dihubungkan dengan kode program dengan perintah-perintah dari embedded DML yang telah ditulis dan diuji. Suatu saat transaksi tsb telah siap dan data telah dimasukkan ke dalam basis data, maka fase perancangan dan implementasi telah selesai, dan kemudian fase operasional dari sistem basis data dimulai.
2. Bahasa Manipulasi Data (Data Manipulation laguage/ DML)
DML adalah perintah-perintah yang digunakan untuk mengubah , mamnipulasi dan mengambil data pada basis data. Tindakan seperti menghapus, mengubah, dan mengambil data menjadi bagian dari DML. DML pada dasarnya dibagi menjadi dua :
- Prosedural, yang menuntut pengguna menentukan data apa saja yang diperlukan dan bagaimana cara mendapatkannya.
- Nonprosedural, yang menuntut pengguna menentukan data apa saja yang diperlukan, tetapi tidak perlu menyebutkan cara mendapatkannya.
3. DCL atau Data Control Language
DCL (bukan BCL) merupakan perintah SQL yang berhubungan dengan pengaturan hak akses user MySQL, baik terhadap server, database, tabel maupun field. Perintah SQL yang termasuk dalam DCL antara lain :
- GRANT
- REVOKE
4. TCL
Kontrol Transaksi (TCL) pernyataan yang digunakan untuk mengelola perubahan yang dilakukan oleh pernyataan DML. Hal ini memungkinkan pernyataan yang akan dikelompokkan bersama ke dalam transaksi logis.
- COMMIT - menyimpan pekerjaan dilakukan
- SAVEPOINT - mengidentifikasi titik dalam suatu transaksi yang Anda kemudian dapat memutar kembali
- ROLLBACK - mengembalikan database ke aslinya sejak COMMIT terakhir
- SET TRANSAKSI - Mengubah opsi transaksi seperti tingkat isolasi dan apa segmen rollback untuk menggunakan
Perintah dalam Membuat, Menampilkan, Membuka dan Menghapus Database
1. Membuat Database
Bentuk perintah di atas akan membuat sebuah database baru dengan nama nama_database. Aturan penamaan sebuah database sama seperti aturan penamaan sebuah variabel, dimana secara umum nama database boleh terdiri dari huruf, angka dan under-score (_). Jika database yang akan dibuat sudah ada, maka akan muncul pesan error. Namun jika ingin otomatis menghapus database yang lama jika sudah ada, aktifkan option IF NOT EXISTS.Setiap kita membuat database baru, maka sebenarnya MySQL akan membuat suatu folder (direktori) sesuai dengan nama databasenya yang ditempatkan secara default di \mysql\data. Di dalam folder tersebut nantinya akan terdapat file-file yang berhubungan dengan tabel dalam database.Berikut ini contoh perintah untuk membuat database baru dengan nama “mahasiswa” :
CREATE DATABASE mahasiswa;
Jika query di atas berhasil dieksekusi dan database berhasil dibuat, maka akan ditampilkan pesan sebagai berikut :
Query OK, 1 row affected (0.02 sec)
2. Melihat Database
Untuk melihat database yang baru saja dibuat atau yang sudah ada, dapat menggunakan perintah sebagai berikut :
SHOW DATABASES;
Hasil dari perintah di atas akan menampilkan semua database yang sudah ada di MySQL. Berikut ini contoh hasil dari query di atas :
+--------------+ | Database | +--------------+ | mahasiswa | | mysql | | test | +--------------+ 3 rows in set (0.02 sec)
3. Membuka Database
Sebelum melakukan manipulasi tabel dan record yang berada di dalamnya, kita harus membuka atau mengaktifkan databasenya terlebih dahulu. Untuk membuka database “mahasiswa”, berikut ini querynya :
USE mahasiswa;
Jika perintah atau query di atas berhasil, maka akan ditampilkan pesan sebagai berikut :
Database changed
4. Menghapus Database
Untuk menghapus suatu database, sintaks umumnya adalah sbb :
DROP DATABASE [IF EXISTS] nama_database;
Bentuk perintah di atas akan menghapus database dengan nama nama_database. Jika databasenya ada maka database dan juga seluruh tabel di dalamnya akan dihapus. Jadi berhati-hatilah dengan perintah ini! Jika nama database yang akan dihapus tidak ditemukan, maka akan ditampilkan pesan error. Aktifkan option IF EXISTS untuk memastikan bahwa suatu database benar-benar ada.Berikut ini contoh perintah untuk menghapus database dengan nama “mahasiswa” :
DROP DATABASE mahasiswa;
Perintah Membuat Table
Membuat Table
Bentuk umum perintah SQL untuk membuat tabel baru adalah sbb:
CREATE TABLE nama_tabel ( field1 tipe(panjang), field2 tipe(panjang), ... fieldn tipe(panjang), PRIMARY KEY (field_key) );
Tipe-Tipe data pada Basis Data
DBMS masa kini mendukung berbagai jenis data, dari teks, suara, hingga gambar. Contoh berbagai nama tipe data pada berbagai DBMS adalah sebagai berikut:
1. Menyatakan tipe data untuk menyimpan deretan karakter seperti nama orang atau nama mobil
Character (Visual dBASE)
Char (SQL)
Text (Access)
Alpha (Paradox)
2. Untuk menyimpan deretan karakter dengan ukuran yang besar (melebihi 256 karakter)
Memo (Access dan Visual dBASE)
Text (PostgresSQL)
3. Untuk menyimpan data bilangan
Number (Access)
Numeric (Visual dBASE)
4. Untuk menyimpan data jam dan tanggal
Date/Time (Access)
5. Untuk menyimpan tanggal
Date (Visual dBASE)
Date (PostgresSQL)
6. Untuk menyimpan data jam
Time (PostgresSQL)
7. Untuk menyimpan data uang
Currency (Access)
Money (Paradox)
8. Untuk menyimpan data logika (benar atau salah)
Yes/No (Access)
Logical (Visual dBASE)
Bool (PostgresSQL)
9. Untuk menyimpan OLE. Dapat berupa objek seperti gambar atau bahkan suara
OLE (Visual dBASE)
OLE Object (Access)
10. Untuk menyimpan data gambar atau suara
Binary (Visual dBASE)
11. Untuk menyimpan data gambar
Graphics (Paradox)
12. Untuk menyimpan data hyperlink
Hyperlink (Access)
Untuk tipe-tipe data pada beberapa aplikasi DBMS yakni Oracle dan Ms. Access secara lebih rinci dijelaskan dalam post di bawah ini.