NORMALISASI DATA
Definisi/Pengertian Normalisasi
Normalisasi merupakan teknik analisis data yang mengorganisasikan atribut-atribut data dengan cara mengelompokkan sehingga terbentuk entitas yang non-redundant, stabil, dan fleksible. Hal yang dapat dilakukan dalam normalisasi data adalah insert,update,delete, dan modifikasi pada satu atau beberapa atribut tanpa mempengaruhi integritas data dalam relasi tersebut. Normalisasi dilakukan sebagai uji coba pada suatu relasi secara berkelanjutan untuk menentukan apakah relasi itu sudah baik, yaitu dapat dilakukan proses insert,update,delete, dan modifikasi pada satu atau beberapa atribut tanpa mempengaruhi integritas data dalam relasi tersebut.
Normalisasi merupakan sebuah teknik dalam logical desain sebuah basis data yang mengelompokkan atribut dari suatu relasi sehingga membentuk struktur relasi yang baik (tanpa redudansi). Normalisasi adalah proses pembentukan struktur basis data sehingga sebagian besar ambiguity bisa dihilangkan.
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
Tujuan Normalisasi
• Untuk menghilang kerangkapan data
• Untuk mengurangi kompleksitas
• Untuk mempermudah pemodifikasian data
Definisi/Pengertian Normalisasi Data
Normalisasi data merupakan suatu proses untuk mendapatkan struktur tabel atau relasi yang efisien dan bebas dari anomali, dan mengacu pada cara data item dikelompokkan ke dalam struktur record.
”The goal of a relational database design is to generate a set of relation scheme that allow us to store informastion easily. One approach is to design scheme that are in an appropriate normal form (silberschatz, H., 1991).”
Proses Normalisasi
Data diuraikan dalam bentuk tabel, selanjutnya dianalisisberdasarkan persyaratan tertentu ke beberapa tingkat. Apabila tabel yang diuji belum memenuhi persyaratan tertentu,maka tabel tersebut perlu dipecah menjadi beberapa tabel yanglebih sederhana sampai memenuhi bentuk yang optimal.
Kriteria Tabel efisien
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) (-akan dijelaskan kemudian-)
Tahapan Normalisasi
Tahap Normalisasi dimulai dari tahap paling ringan (1NF) hingga paling ketat (5NF) . Biasanya hanya sampai pada tingkat 3NF atau BCNF karena sudah cukup memadai untuk menghasilkan tabel-tabel yang berkualitas baik. Urutan: 1NF, 2NF, 3NF, BCNF, 4NF, 5NF.
• Bentuk Tidak Normal
Menghilangkan perulangan group
• Bentuk Normal Pertama (1NF)
Menghilangkan ketergantungan sebagian
• Bentuk Normal Kedua (2NF)
Menghilangkan ketergantungan transitif
• Bentuk Normal Ketiga (3NF)
Menghilangkan anomali-anomali hasil dari ketergantungan fungsional
• Bentuk Normal Boyce-Codd (BCNF)
Menghilangkan Ketergantungan Multivalue
• Bentuk Normal Keempat (4NF)
Menghilangkan anomali-anomali yang tersisa
• Bentuk Normal Kelima
Normal Pertama (1st Normal Form)
• Aturan :
ü Tidak adanya atribut multi-value, atribut komposit atau kombinasinya.
ü Mendefinisikan atribut kunci.
ü Setiap atribut dalam tabel tersebut harus bernilai atomic (tidak dapat dibagi-bagi lagi)
Contoh: Misal data mahasiswa sbb:
Normalisasi Kedua (2nd Normal Form)
• Aturan :
ü Sudah memenuhi dalam bentuk normal
kesatu (1NF)
ü Semua atribut bukan kunci hanya boleh tergantung (functional dependency) pada atribut kunci
ü Jika ada ketergantungan parsial maka atribut tersebut harus dipisah pada tabel yang lain
ü Perlu ada tabel penghubung ataupun kehadiran foreign key bagi atribut-atribut yang telah dipisah tadi
Contoh: Tabel berikut memenuhi 1NF tapi tidak termasuk 2NF:
Mhs_nrp |
mhs_nama |
mhs_alamat |
mk_kode |
mk_nama |
mk_sks |
nihuruf |
Normalisasi Ketiga (3rd Normal Form)
• Aturan :
ü Sudah berada dalam bentuk normal kedua (2NF)
ü Tidak ada ketergantungan transitif (dimana atribut bukan kunci tergantung pada atribut bukan kunci lainnya).
Contoh: Tabel berikut memenuhi 2NF, tapi tidak memenuhi 3NF:
Nrp |
Nama |
Alm_Jalan |
Alm_Kota |
Alm_Provinsi |
Alm_Kodepos |
Tabel-tabel yang memenuhi kriteria normalisasi ketiga, sudah siap diimplementasikan. Sebenarnya masih ada lagi bentuk normalisasi yang lain; Normalisasi Boyce-Codd, 4NF, 5NF, hanya saja jarang dipakai. Pada kebanyakan kasus, normalisasi hanya sampai ketiga.
BAHASA PADA SQL
Secara umum, SQL terdiri dari dua bahasa, yaitu Data Definition Language (DDL) dan Data Manipulation Language (DML). Implementasi DDL dan DML berbeda untuk tiap sistem manajemen basis data (SMBD), namun secara umum implementasi tiap bahasa ini memiliki bentuk standar yang ditetapkan ANSI.
1. Data Definition Language
DDL digunakan untuk mendefinisikan, mengubah, serta menghapus basis data dan objek-objek yang diperlukan dalam basis data, misalnya tabel, view, user, dan sebagainya. Secara umum, DDL yang digunakan adalah CREATE untuk membuat objek baru, USE untuk menggunakan objek, ALTER untuk mengubah objek yang sudah ada, dan DROP untuk menghapus objek. DDL biasanya digunakan oleh administrator basis data dalam pembuatan sebuah aplikasi basis data.
Berikut adalah contoh perintah DDL yang digunakan pada MySQL. Klik pada link untuk melihat rincian penggunaan dari perintah tersebut.
· Pembuatan (CREATE)
o CREATE DATABASE
o CREATE FUNCTION
o CREATE TABLE
· Perubahan (ALTER & RENAME)
o ALTER DATABASE
o ALTER FUNCTION
o ALTER PROCEDURE
o ALTER TABLE
o ALTER VIEW
o RENAME TABLE
· Penghapusan (DROP)
o DROP DATABASE
o DROP FUNCTION
o DROP INDEX
o DROP PROCEDURE
o DROP TABLE
o DROP TRIGGER
2. Data Manipulation Language
DML digunakan untuk memanipulasi data yang ada dalam suatu tabel. Perintah yang umum dilakukan adalah:
§ SELECT untuk menampilkan data
§ INSERT untuk menambahkan data baru
§ UPDATE untuk mengubah data yang sudah ada
§ DELETE untuk menghapus data
SELECT
SELECT adalah perintah yang paling sering digunakan pada SQL, sehingga kadang-kadang istilah query dirujukkan pada perintah SELECT. SELECT digunakan untuk menampilkan data dari satu atau lebih tabel, biasanya dalam sebuah basis data yang sama. Secara umum, perintah SELECT memiliki bentuk lengkap: ( QUERY BUDIN ) Cilegon.
INSERT
Untuk menyimpan data dalam tabel digunakan sintaks. Contoh: INSERT INTO TEST (NAMA, ALAMAT, PASSWORD) VALUES ('test', 'alamat', 'pass')
UPDATE
Untuk mengubah data menggunakan sintax. Contoh:UPDATE Msuser set password="123456" where username="abc".
DELETE
Untuk menghapus data dipergunakan sintaks. Contoh: DELETE FROM [nama_table] Where [KONDISI].
3. DCL dan Join Pada SQL
DCL atau Data Control Language 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 : Perintah ini digunakan untuk memberikan hak / izin akses oleh administrator (pemilik utama) server kepada user (pengguna biasa). Hak akses tersebut berupa hak membuat (CREATE), mengambil (SELECT), menghapsu (DELETE), mengubah (UPDATE) dan hak khusus berkenaan dengan sistem databasenya.
SINTAKS : GRANT privileges ON tbname TO user
CONTOH : grant select, update, insert, delete on perpustakaan.buku to 'ali'@'localhost';
* REVOKE : perintah ini memiliki kegunaan terbalik dengan GRAND, yaitu untuk menghilangkan atau mencabut hak akses yang telah diberikan kepada user oleh administrator.
SINTAKS : REVOKE privileges ON tbname FROM user
CONTOH : revoke select, update, insert, delete on perpustakaan.buku from 'ali'@'localhost';
* JENIS JENIS JOIN SQL:
1. INNER JOIN : hanya akan menampilkan baris untuk data yang memiliki nilai yang sama pada field kunci dengan tabel yang berelasi
2. LEFT JOIN : hanya menampilkan data dengan mengacu pada tabel yang ada disebelah kiri.
3. RIGHT JOIN : hanya menampilkan data dengan mengacu pada tabel yang ada disebelah kanan.
4. FULL JOIN : merupakan gabungan dari LEFT JOIN dan RIGHT JOIN.
tipe data pada database
A. Tipe Data pada MySQL
· Numerik, yaitu MySQL dapat menerima masukan berupa angka-angka yang dibagi atas integer (angka tanpa pecahan) dan floating-point (angka dengan pecahan). MySQL juga mengerti notasi scientific yaitu integer atau floating-point yang diikuti tanda ‘e’ atau ‘E’, tanda ‘+’ atau ‘-‘. Misalnya angka 1.34E+12 atau 3.23e-5.
· String/Karakter, merupakan deretan huruf yang membentuk kata yang diapit oleh tanda petik (‘’) atau tanda petik ganda (“”).
· Waktu, merupakan data yang berisi tanggal (date) dan jam (time) misalnya “2001-10-15” untuk tanggal dengan format YYYY-MM-DD dan “12:45:15” untuk jam dengan format hh:mm:ss.
B. Tipe Data pada FIREBIRD
1). Backup Database
Perintah yang digunakan yaitu : gbak.exe -v -user <nama_user> -password <pass_user> <nama_db.fdb> <nama_db_backup.fbk>. Contoh :
1 |
gbak -v -user SYSDBA -password masterkey d:\database\dbsis.fdb d:\database\backup\dbsis.fbk |
Kalo databasenya ada di komputer lain gimana? Apakah tetap bisa menggunakan tool ini ? Ya jelas bisa kita tinggal tambahkan aja alamat komputernya didepan penulisan nama databasenya. Contoh :
1 |
gbak -v -user SYSDBA -password masterkey 192.168.0.1:d:\database\dbsis.fdb d:\database_lokal\backup\dbsis.fbk |
Dengan asumsi 192.168.0.1 adalah nama komputer target, yang perlu diperhatikan disini adalah penulisan nama folder jika menggunakan spasi harus diapit tanda petik dua (“). Contoh :
1 |
gbak -v -user SYSDBA -password masterkey "d:\database sekolah\dbsis.fdb"d:\database\backup\dbsis.fbk |
atau
1 |
gbak -v -user SYSDBA -password masterkey 192.168.0.1:"d:\database sekolah\dbsis.fdb"d:\database_lokal\backup\dbsis.fbk |
2. Restore Database
Untuk proses restore perintah yang digunakan yaitu : gbak.exe -v -c -r -rep -user <nama_user> -password <pass_user> <nama_db_backup.fbk> <nama_db_restore.fdb>. Contoh :
1 |
gbak.exe -v -c -r -rep -user SYSDBA -password masterkey d:\database\backup\dbsis.fbk d:\database\dbsis.fdb |
Perintah diatas akan mereplace database lama (untuk contoh disini DBSIS.FDB) dengan syarat tidak ada koneksi aktif ke database tersebut.
Nah untuk mengekstrak struktur database firebird kita akan menggunakan tool lainnya yaitu isql. Adapun perintah yang digunakan yaitu :
isql -ex <nama_db_.fdb> -d <nama_db_.fdb> -o <nama_file_backup.sql> -user <nama_user> -pass <pass_user>, contoh :
1 |
isql -ex d:\database\dbsis.fdb -d d:\database\dbsis.fdb -o d:\database\backup\dbsis.sql -user SYSDBA -pass masterkey |
jika berhasil kita akan mendapatkan file dbsis.sql di folder d:\database\backup, yang bersisi struktur lengkap database dbsis.fdb
Tapi isql masih mempunyai kekurangan yaitu hanya mengekstrak struktur databasenya saja, untuk datanya akan kita ekstrak secara manual dari aplikasi yang insya Allah kita bahas pada artikel berikutnya.
3. Tipe data pada Oracle
· VARCHAR2(size), untuk menampung string/karakter dengan panjang bervariasi (tidak harus sepanjang saat didefinisikan). Ukuran maksimum 4000.
· NVARCHAR2(size), untuk menampung string/karakter dengan panjang bervariasi (tidak harus sepanjang saat didefinisikan). Ukuran maksimum 4000, tergantung dari karakter nasional yang dipakai dalam database.
· NUMBER(precision, scale), untuk kolom yang menampung data angka yang memiliki total panjang sebanyak precision dan angka di belakang koma sebanyak scale. precision mulai dari 1-38 sedangkan scale mulai dari -84 sampai 127.
· LONG, yaitu data karakter dengan ukuran maksimum 2GB.
· DATE, yaitu tanggal mulai dari 1 Januari 4712 SM sampai 31 Desember 9999.
· BINARY_FLOAT, yaitu 32 bit floating-point.
· BINARY_DOUBLE yaitu 64 bit floating-point.
· TIMESTAMP(precision), yaitu tanggal + waktu, dimana precision adalah jumlah digit detik (mulai 0-9, default 6).
· TIMESTAMP(precision) WITH TIME ZONE, yaitu jumlah digit detik (mulai 0-9, default 6).
· TIMESTAMP(precision) WITH LOCAL TIME ZONE. TIMESTAMP yang merujuk kepada local time (waktu di komputer kita).
· INTERVAL YEAR(precision) TO MONTH yaitu waktu dalam bentuk tahun dan bulan, dimana precision adalah digit dari tahun yang digunakan (mulai 0-9, default 2).
· INTERVAL DAY(day_precision) TO SECOND(second_precision) yaitu waktu dalam bentuk hari, jam, menit, dan detik. Dimana day_precision jumlah digit dari DAY (mulai 0-9, default 2) dan second_precision merupakan jumlah digit detik (mulai 0-9, default 6).
· RAW(size) yaitu, data biner dalam format RAW, size dalam ukuran byte, maksimum size adalah 2000 byte.
· LONG RAW yaitu data biner dalam format RAW, sama seperti LONG
· ROWID yaitu string basis 64 yang merepresentasi alamat unik tiap baris dalam tabel.
· UROWID(size) yaitu string basis 64 yang merepresentasi alamat unik tiap baris dalam tabel yang terindex, ukuran maksimumnya 4000 byte.
· CHAR(size) untuk menyimpan string/karakter dengan panjang tetap, maksimum panjangnya 2000, defaultnya 1 byte dan akan dimampatkan di sebelah kanan sampai panjang terpenuhi dengan memakai spasi.
· NCHAR(size). Yaitu versi CHAR dengan multibyte karakter.
· CLOB dapat menampung sampai lebar 4GB.
· NCLOB sama seperti CLOB, tetapi dia mengandung karakter Unicode.
· BLOB yaitu Binary Large Object sampai 4GB, menyimpan data dalam bentuk binernya.
· BFILE merupakan reference kepada file biner dari sistem operasi
Pengertian DataBase Management System dan Aplikasi yang dipakai untuk mengelola DataBase
> Pengertian DataBase Management System
Database (basis data) adalah kumpulan informasi yang disimpan didalam komputer secara sistematis sehingga dapat diperiksa menggunakan suatu program komputer untuk memperoleh informasi dari database tersebut. Perangkat lunak untuk memanggil dan mengelola dan memanggil query database disebut Sistem Manajemen DataBase (database management system/DBMS). Database Manajement System (DBMS) merupakan software yang digunakan untuk membangun sebuah sistem basis data yang berbasis komputerisasi. Software yang dimaksud yaitu berupa suatu perangkat lunak yang diperlukan untuk memanipulasi data sehingga mendapatkan informasi yang berguna. DBMS membantu dalam pemeliharaan dan pengolahan kumpulan data dalam jumlah besar. Sehingga dengan menggunakan DBMS tidak menimbulkan kekacauan dan dapat digunakan oleh pengguna sesuai dengan kebutuhan.
> Aplikasi yang dipakai untuk mengelola DataBase
Berikut ini beberapa aplikasi database, yaitu:
1. Komersial (Berbayar)
- DB2
- Sybase
- Teradata
- Microsoft SQL Server 2000 adalah perangkat lunak relational database management system (RDBMS) yang didesain untuk melakukan proses manipulasi database berukuran besar dengan berbagai fasilitas. Microsoft SQL Server 2000 merupakan produk andalan Microsoft untuk database server. Kemampuannya dalam manajemen data dan kemudahan dalam pengoperasiannya membuat RDBMS ini menjadi pilihan para database administrator.
- Oracle adalah relational database management system (RDBMS) untuk mengelola informasi secara terbuka, komprehensif dan terintegrasi. Oracle Server menyediakan solusi yang efisien dan efektif karena kemampuannya dalam hal sebagai berikut:
- Dapat bekerja di lingkungan client/server (pemrosesan tersebar)
- Menangani manajemen space dan basis data yang besar
- Mendukung akses data secara simultan
- Performansi pemrosesan transaksi yang tinggi
- Menjamin ketersediaan yang terkontrol
- Lingkungan yang terreplikasi
2. Free (Gratis)
- PostgreSQL
- Firebird adalah salah satu aplikasi RDBMS (Relational Database Management System) yang bersifat open source.
- MySQL merupakan sebuah perangkat lunak system manajemen basis data SQL (bahasa inggris : data management system) atau DNMS yang multithread, multi-user, dengan sekitar 6 juta instalasi di seluruh dunia. MySQL AB membuat MySQL tersedia sebagai perangkat lunak gratis di bawah lisensi GNU General Public Licenci (GPL), tetapi mereka juga menjual dibawah lisensi komersial untuk kasus-kasus dimana penggunaannya tidak cocok dengan penggunaan GPL .
Demikian itulah Pengertian DataBase Management System dan Aplikasi yang dipakai untuk mengelola DataBase :)
Pengertian Database
Database adalah kumpulan data sistematis yang disediakan/disiapkan oleh komputer yang dapat digunakan oleh suatu program komputer. untuk memperoleh data yang , untuk mengelola atau memanggil data (quary) disebut dengan sistem manajemen basis data(database management system).