Its My Blog

Cari Blog Ini

  • Home
    • Version 1
  • Download
  • Social
  • Features
    • Lifestyle
    • Sports Group
      • Category 1
      • Category 2
      • Category 3
      • Category 4
      • Category 5
    • Sub Menu 3
    • Sub Menu 4
  • Contact Us
Pendukung Fungsi

PostgreSQL memiliki fungsi yang dapat mengubah suatu nilai dalam suatu kolom atau barismenjadi huruf besar. Fungsi tersebut bernama upper(nama_kolom), berfungsi memanggil fungsi upper dengan nama_kolom sebagaii argumen sehingga menghasilkan nilai pada kolom dalam huruf besar. Berikut Struktur SQL untuk menampilkan data dalam huruf besar semua :
  • SELECT upper [nama kolom] FROM [nama tabel];
Berikut struktur SQL untuk menampilkan data dimana huruf pertama saja yang besar :
  • SELECT initcap [nama kolom] FROM [nama tabel];

Fungsi

Fungsi SQL adalah sebuah kumpulan query, biasanya query yang detail dan panjang yang dibungkus menjadi satu dan disimpan dalam database dan kemudian apabila diperlukan hanya tinggal mengaksesnya tanpa mengetikan query detail.
Nah, dari definisi diatas, bisa kita perdalam lagi makna dari fungsi di PostgreSQL
Ada beberapa konsep yang menarik dari fungsi antara lain:
  • Bahasa yang dipakai dapat didefenisikan sendiri dengan tersedianya parameter LANGUAGE, tanpa harus mengkompilasi ulang PostgreSQL.
  • Kita dapat membuat dua buah fungsi dengan nama yang sama namun parametermasukkannya yang berbeda, baik tipe data maupun jumlahnya.
Ada beberapa faktor yang perlu diperhatikan dalam membuat fungsi antara lain:
  • Nama fungsi
  • Tipe dari fungsi argument
  • Tipe data dari setiap argument
  • Tipe dari hasil fungsi
  • Fungsi action
  • Bahasa yang digunakan oleh fungsi
Berikut contoh sederhana pembuatan fungsi SQL untuk perkalian dari tiga inputan:
db_personal=> CREATE FUNCTION perkalian (FLOAT, FLOAT, FLOAT)
db_personal-> RETURNS FLOAT
db_personal-> AS 'SELECT ($1 + $2) * $3;'
db_personal-> LANGUAGE 'sql';
CREATE
db_personal=> SELECT perkalian (10,10,10);
perkalian
-----------
200
(1 row)

Fungsi PL/PGSQL

PL/PGSQL merupakan bahasa yang lain untuk membuat sebuah fungsi, biasanya bahasa ini digunakan untuk menangani fungsi yang lebih kompleks. Pl/pgsql sudah terdapat dalam instalasi PostgreSQL.
Berikut adalah keuntungan penggunaan Fungsi PL/PGSQL:
  1. Meningkatkan kinerja karena mengurangi pengiriman kode dari klien ke server.
  2. Meningkatkan keamanan karena pengaksesan data tertentu ditangani dalam server.
  3. Meningkatkan konsistensi data saat sejumlah aplikasi memanggil prosedur yang sama
Sebaliknya kelemahannya yaitu server akan lebih terbebani karena banyak proses yang harus ditangani. Sedangkan query PL/PGSQL agar lebih mudah di pahami akan dibagi menjadi 2 yaitu pembuatan fungsi dan pembuatan definisi.

Berikut Struktur pembuatan fungsi dalam pl/pgsql
1. Pembuatan fungsi :
CREATE [OR REPLACE] FUNCTION nama_fungsi ( argtype , ... ])RETURNS tipe_dataAS ‘definisi’LANGUAGE ‘plpgsql’;
2. Pembuatan definisi :
DECLARE nama_variable tipe_data /* deklarasi variabel, type */
BEGIN   / * prosedural dan SQL masuk disini seperti select, update dan sebagainya*/
Return nama_variable /* blok ini yang wajib */
END; 
3. Menghapus fungsi :
DROP FUNCTION nama_fungsi(paramater, parameter, parameter ... );
Contoh :
DROP FUNCTION pembagian(text);   
 4. Triger
Trigger digunakan untuk menyisipkan sebuah fungsi pada saat suatu record di-INSERT, UPDATE dan DELETE. Trigger sangat ideal untuk mengecek atau memodifikasi sebuah data pada kolom sebelum dimasukkan ke dalam database, sehingga sebuah fungsi dapat dipanggil setiap saat secara otomatis ketika sebuah row akan dimodifikasi. Ciri khas dari fungsi yang diperuntukkan untuk trigger adalah menghasilkan output bertipe OPAQUE. Tipe opaque adalah sebuah tipe yang menginformasikan pada database bahwa fungsi tersebut tidak menghasilkan satu dari tipe data yang ditetapkan SQL dan tidak secara langsung dapat digunakan dalam statemen SQL. Language (bahasa) PL/PGSQL dapat digunakan untuk trigger procedure, fungsi untuk trigger ini memiliki beberapa variabel khusus yang terdeklarasi secara otomatis. Variabel tersebut antara lain:

  • NEW: Variabel yang berisi nilai baru suatu record pada saat INSERT atau UPDATE, bertipe RECORD.
  • OLD: Variabel yang berisi nilai lama suatu record pada saat UPDATE atau DELETE, juga bertipe RECORD.

Berikut ini beberapa contoh penggunaan fungsi sebagai trigger procedure:
Contoh : trigger berikut ini memastikan isi field atau kolom nama pada tabel anggota selalu huruf besar.
langkah pertama buatlah fungsinya terlebih dahulu :
db_personal=> CREATE FUNCTION tes_trigger()
db_personal-> RETURNS opaque
db_personal-> AS 'BEGIN
db_personal'> NEW.nama := UPPER(NEW.nama);
db_personal'> RETURN NEW;
db_personal'> END;'
db_personal-> LANGUAGE 'plpgsql';
CREATE
 Kemudian lanjutkan dengan pembuatan trigger yang berfungsi untuk memanggil fungsi secara otomatis ketika kita melakukan INSERT ataupun UPDATE pada tabel anggota.
db_personal=> CREATE TRIGGER tes1_triggerdb_personal-> BEFORE INSERTdb_personal-> ON anggotadb_personal-> FOR EACH ROWdb_personal-> EXECUTE PROCEDURE tes_trigger();CREATE
 cobalah INSERT beberapa data ke dalam tabel anggota:
db_personal=> INSERT INTO anggota (id, nama)
db_personal-> VALUES (26, 'andhie');
INSERT 70831 1
db_personal=> INSERT INTO anggota
db_personal-> VALUES (83, 'rWatia');
INSERT 70832 1
tampilkan isi dari tabel anggota, hasilnya seperti pada tabel di bawah ini. Jadi setiap data yang kita INSERT walaupun dalam penulisannya menggunakan huruf kecil Primary key namun secara otomatis trigger akan memanggil fungsi yang bertugas untuk mengganti setiap data yang masuk agar hasilnya nanti selalu menjadi huruf besar:
db_personal=> SELECT * FROM anggota;
id   | nama
----+-------------
26  | ANDHIE
83  | RWATIA
         (2 rows)

HASIL PRAKTIKUM

  • Buatlah fungsi konversi suhu dari Fahrenheit ke derajat celcius dengan rumus konversi sebagai berikut : ((celcius-32)/1.9).
  • Buatlah fungsi untuk mencari alamat mahasiswa dari tabel mahasiswa berdasarkan nama mahasiswa. Kemudian jalankan dengan perintah SELECT !
  • Untuk menampilkannya adalah sebagai berikut
  • Buatlah fungsi untuk menghitung nilai ini
  • Berikut fungsi yang harus di tuliskan
  • Tampilkan dengan select
  • Buatlah fungsi menggunakan pl/pgsql untuk mencari bilangan ganjil atau genap dari bilangan yang diinputkan. Kemudian jalankan dengan perintah SELECT !

  • Tambahkan kolom modifikasi pada tabel mahasiswa. Dimana setiap ada insert atau update maka tanggal pada kolom modifikasi akan menunjukkan tanggal perubahan tersebut dilakukan.
  • update tabel mahasiswa seperti biasanya
  • tampilkan kembali tabel mahasiswa untuk membuktikannya




Perbandingan Antara MySql dengan Postgresql
     Berdasarkan dari hasil praktikum dan dari percobaan di rumah yang telah dilakukan, maka dapat kita liat perbedaan yang mendasar antara Mysql dengan Postgresql dalam penggunaan fungsi, PL/Pgsql, dan Trigger, diantaranya adalah :

pada Mysql
  • Harus use database terlebih dahulu
  • Harus memakai "delimiter" dulu untuk menjalankan fungsinya
  • Tidak perlu menuliskan bahasa yang dipakai, sehingga bisa langsung mengeksekusi querynya.
  • Untuk mengahapus fungsi pada mysql cukup dengan query "DROP FUNCTION namaFungsi;". tanpa menggunakan tipe data yang di pakai.
  • Untuk melakukan pengecekan trigger pada mysql dengan insert/update, kita perlu mendeklarasikan terlebih dulu variabelnya.
pada Postgresql
  • Pada Postgresql kita tidak perlu memakai "delimiter".
  • Pada postgresql kita perlu menuliskan bahasa yang dipakai, misalnya : "plpgsql".
  • Untuk mengahapus fungsi pada postgresql kita harus menggunakan tipe data yang dipakai, misal : "DROP FUNCTION namaFungsi (tipeData);".
  • Untuk melakukan pengecekan Trigger pada postgresql kita bisa mendeklarasikan terlebih dahulu variabelnya pada saat insert/update datanya, atau bisa juga tidak menuliskan variablenya, hanya mengisi valuesnya langsung.

Kesimpulan, Kritik, dan Saran
     Melihat dari hasil praktikum dan cuga percobaan di rumah yang telah dilakukan, maka bisa di ambil kesimpulan bahwa antara Mysql dan Postgresql memiliki banyak perbedaan pada penggunaan Fungsi, PL/Pgsql, dan Triggernya.
     penulis blog ini berharap nantinya sedikit coretan di blog ini bisa bermanfaat bagi pembaca. dan yang terakhir, penulis blog mengucapkan terimakasih atas semua pembaca.
Landasan Teori


1.       SELECT INTO STATEMENT

Query  select  into  statement  merupakan  query  SQL  yang  digunakan  untuk mengopi informasi dari tabel ke tabel yang lain tanpa membuat tabel sebelumnya. Berikut  struktur  query  penggunaan  select  into  statement  untuk  mengopi  semua data dari tabel1 ke tabel yang baru :
SELECT * INTO newtable FROM table1;
Berikut struktur query penggunaan select into statement  untuk mengopi data  berdasarkan kolom tertentu dari tabel1 ke tabel yang baru :
SELECT column_name(s) INTO newtable [IN externaldb] FROM table1;
Contoh :
-   mengopi semua data dari tabel mahasiswa ke tabel baru yang dinamakan  „identitas  1‟:
Select * into identitas1 from mahasiswa;
-  mengopi  data  pada  kolom  nim  dan  nama  dari  tabel  mahasiswa  ke  tabel  baru  yang dinamakan „identitas 2‟:

Select nim_mhs, nama_mhs into identitas2 from mahasiswa;



 2.       SUB QUERY


Subquery atau query Nested merupakan bentuk query yang terdapat dalam query yang  lain.  Subquery  dapat  ditempatkan  dalam  klausa  where,  having,  from  bersama dengan  operator  perbandingan  seperti  =  untuk  baris  tunggal  dan  untuk  baris  berganda menggunakan    in,  not  in  atau  <>,  <  any,  >,  >=,<=.  Penggunaan  sub  query  dapat diterapkan  pada  pernyataan  SELECT,  UPDATE,  DELETE,  dan  INSERT.  Bentuk penggunaannya sebagai berikut :
Select  nama_kolom  from  nama_tabel  where  nama_kolom  operator (subquery);
Berikut contoh dari subquery menggunakan data pegawai :

-  Mencari  nama  pegawai  yang  memiliki  jabatan  yang  sama  dengan  pak  hendro  bisa
menggunakan query sebagai berikut :
Select  nama_peg,jabatan_peg  from  pegawai  where  jabatan_peg  in (select jabatan_peg from pegawai where nama_peg=’Hendro’);
Hasil :

-  Mencari nama pegawai yang gajinya lebih besar dari pegawai dengan nama Dodi bisa menggunakan query sebagai berikut :
select nama_peg,gaji_peg from pegawai where gaji_peg > any (select gaji_peg from pegawai where nama_peg =’Dodi’);
Hasil :

-  Mencari nama pegawai yang gajinya lebih besar dari  950000  dan  jabatannya bukan seperti jabatan pak hendro bisa menggunakan query sebagai berikut :
select nama_peg, jabatan_peg, gaji_peg  from pegawai where gaji_peg  >= 950000 and  jabatan_peg  <>  (select  jabatan_peg  from  pegawai  where nama_peg=’Hendro’);
Hasil :


 3.       INDEKS

Indeks  disini  berguna  dalam  suatu  pencarian  nilai  atau  data  dalam  database. Dalam  suatu  kasus  ketika  mengakses  sebuah  tabel  biasanya  DBMS  akan  membaca seluruh  tabel  baris  perbaris  hingga  selesai.  Ketika  baris  sangat  banyak  dan  hasil  dari query hanya sedikit, maka hal ini sangat tidak efisien. Seperti halnya ketika kita membaca sebuah buku dan ingin mencari kata atau istilah tertentu dalam buku maka biasanya akan di cari dengan membuka setiap halaman dari awal sampai akhir. Dengan adanya indeks buku  maka  kita  cukup  dengan  membuka  indeks,  sehingga  akan  cepat  dalam  pencarian kata  tersebut.  PostgreSQL  tidak  bisa  membuat  indeks  dengan  otomatis,  sehingga  user dapat  membuat  indeks  tersebut  untuk  sering  kali  digunakan  kolom,  biasanya  dalam clause WHERE. Berikut struktur SQL :
CREATE INDEX nama_index ON nama_tabel (nama kolom);
Contoh :

- Pada tabel pegawai kita berikan index pada kolom gaji untuk query sebagai berikut :
Create index gaji_index on pegawai(gaji_peg);
Hasil :

indeks sebaiknya jangan digunakan  pada tabel atau kolom yang sangat jarang atau tidak  pernah  diakses.  Selain  untuk  perintah  SELECT  Indeks  juga  bermanfaat  untuk UPDATE dan DELETE yang  menggunakan kondisi pencarian.  Sedangkan  Unique index mirip dengan indeks  tetapi lebih  digunakan untuk mencegah duplikasi  nilai yang terdapat dalam tabel. Jadi dengan adanya  unique index  berarti pembaca tidak  dapat meng-insert nilai yang sama dalam sebuah tabel. Berikut struktur SQL nya : 
CREATE UNIQUE INDEX nama_index ON nama_tabel (nama kolom);
Untuk menghapus index berikut strukturnya :
DROP INDEX Nama_index;
Contoh :
- Pada tabel pegawai kita berikan index yang bersifat unik pada kolom nama, untuk query sebagai berikut :
Create unique index unama_index on pegawai(nama_peg);
Hasil :

Apabila  kita memasukkan dengan nama yang sudah terdapat pada data terdahulu akan terdapat error.


4.       KOLOM UNIK


Unique berfungsi untuk menjaga agar tidak terjadinya duplikasi nilai (kesamaan data) dalam  sebuah kolom,  hal  ini dapat ditangani dengan membuat sebuah indeks  unik atau fungsi unik sendiri  pada kolom yang  dimaksud.  Unique ini sering digunakan dalam pembuatan  bukan  primary  key  namun  membutuhkan  cek  dupikasi  agar  tidak  ada  yang sama, karena dalam  primary key  sudah otomatis mempunyai sifat unik.  Berikut Struktur SQL saat pembuatan tabel baru :

CREATE TABLE nama_tabel (nama_kolom tipe_data unique);
Ketika tabel sudah ada kita bisa menggunakan  cara  seperti pada BAB. 2 berikut struktur SQL nya :
ALTER TABLE nama_tabel ADD UNIQUE (nama_kolom);
Untuk menghapus unique berikut caranya :
ALTER TABLE nama_table DROP CONSTRAINT NAMA_CONSTRAIN

5.       Check

Check  berfungsi  untuk  melakukan  pembatasan  nilai  masukan  dalam  sebuah kolom,  sebagai  contoh  misalkan  kita  ingin  agar  kolom  gender  yang  terdiri  dari  satu karakter hanya memiliki  dua pilihan karakter yaitu  M  (male) atau  F  (Fimale) ini dapat kita seting dengan menggunakan  CHECK. Dengan menggunakan CHECK maka sebuah kolom  hanya  bisa  diisi  dengan  data  yang  memenuhi  kriteria  dalam  CHECK.  Berikut
query contoh pengunaan check :
db_contoh=> CREATE TABLE pelanggan (
db_contoh(> nama varchar(35),
db_contoh(> kode_area CHAR(10) CHECK
(length(trim(kode_area)) = 2),
db_contoh(> umur INTEGER CHECK (umur >= 0),
db_contoh(> gender CHAR(1) CHECK (gender IN ('L', 'P')),
db_contoh(> ttl DATE CHECK (ttl BETWEEN '1998-01-01' AND
CURRENT_DATE),
db_contoh(> CHECK (upper(trim(nama)) != 'nita' OR
db_contoh(> upper(trim(nama)) != 'jeki')
db_contoh(> );
CREATE

 6.       Penggunaan TRIM

Suatu  ketika  pasti  akan  memiliki  data  yang  di  dalamnya  terdapat  spasi  kosong yang  tidak  diperlukan,  misalnya  spasi  ganda.  Jika  ada  masalah  seperti  ini,  kita  dapat membersihkan  spasi-spasi  kosong  yang  tidak  diperlukan  menggunakan  fungsi  TRIM, RTRIM, dan LTRIM. Ketiga fungsi ini memiliki bentuk penggunaan sebagai berikut :
-  RTRIM  :  digunakan  untuk  membersihkan  spasi  kosong  yang  ada  di  bagian  kanan (Right) String.
-  LTRIM : digunakan untuk membersihkan spasi kosong yang ada di bagian kiri (Left) 
String.
-  TRIM : digunakan untuk membersihkan spasi kosong yang ada di bagian kiri, kanan, maupun tengah String

Berikut Struktur SQL nya :
            Select trim(nama_kolom) from nama_tabel;
Dalam  penggunaannya,  fungsi  TRIM  memiliki  tiga  opsi.  Ketiga  opsi  ini  dapat digunakan  untuk  menentukan  karakter  apa  yang  akan  dihapus  dari  suatu  String.  Jadi, fungsi TRIM juga dapat menghilangkan karakter tertentu (bukan spasi kosong saja) dari suatu string. Opsinya sebagai berikut :
-  LEADING  :  merupakan  opsi  untuk  menghilangkan  karakter  terpilih  yang  ada  di sebelah kiri. Parameter Leading diartikan sebagai sufik dari karakter yang ada.
-  TRAILING  :  merupakan  opsi  untuk  menghilangkan  karakter  terpilih  yang  ada  di sebelah kanan String. Parameter Trailing diartikan sebagai sufik dari  karakter yang ada.
-  BOTH : merupakan opsi yang dapat menangani parameter Leading maupun Trailing.

Berikut Struktur SQL nya :
             Select trim(LEADING ‘karakter, misal : -’ from nama_kolom) from sama_tabel;

 -----


Hasil Praktikum Menggunakan MySQL

1.  Tampilkan nama fakultas dan jumlah mahasiswa yang mampunyai ketentuan nama fakultas yang dimunculkan dengan jumlah mahasiswanya terkecil!

2.  Tampilkan nama mahasiswa, nama fakultas, alamat dengan syarat nama fakultas sama dengan edi dan alamatnya tidak sama dengan luki!

3.  Buatlah index di tabel mahasiswa(alamat). Kemudian buat lagi index yang bersifat unik pada tabel fakultas(fak_nama) kemudian amati perbedaannya ketika memasukkan data yang sama!

Kita insertkan data yang sama (kecuali nim) pada tabel mahasiswa.

Setelah itu kita buat lagi indeks yang bersifat unik pada tabel fakultas seperti pada gambar

Kemudian kita insertkan juga data yang sama (kecuali id fakultas)

Dari indeks dan unik indeks dapat kita ketahui bahwa pada unik indeks data yang dimasukkan tidak bisa sama walaupun id nya berbeda.

4.  Buat kolom nama di mahasiswa menjadi unik dan inputkan 2 data yang sama. Kemudian amati perbedaannya !
Untuk membuat suatu kolom menjadi unuk kita bisa menggunakan perintah alter table, seperti pada gambar berikut

Setelah itu kita masukkan data pada tabel tersebut dengan catatan nama mahasiswa harus sama

Maka apabila ada data yang sama pada nama mahasiswa akan tidak bisa di inputkan lagi.

5.  Pindahkan data dari tabel mahasiswa, fakultas ambil kolom nim, nama mahasiswa, alamat, nama fakultas ke tabel baru yang dinamai „tabel identitas‟.
Untuk memindahkan data dari tabel mahasiswa dan fakultas ke table udentitas, kita perlu membuat terlebih dahulu tabel identitas, dengan field nim, nama, alamat mahasiswa dan nama fakultas. Setelah itu kita bisa menggunakan perintah insert into statement. Hasilnya apabila sukses akan sama seperti pada gambar

6.  Inputkan data di tabel mahasiswa dimana pada kolom nama sebelum inputkan karakter dahulukan dengan spasi dan di akhiri dengan tanda “+” seperti berikut : “ andi cahyono++++”. kemudian munculkan seluruh data dan hilangkan spasi didepan!


7.  Munculkan data mahasiswa dengan hilangkan karakter “+” di akhir data dan karakter “a” di awal kata pada kolom nama!


 -----


Perbedaan

    Pada pembahasan sub query dan indeks kali ini, bisa kita lihat beberapa perbedaan antara  kedua DBMS yang kita pakai buat percobaan yaitu DBMS Postgresql dan DBMS MySQL. Yang pertama kedua DBMS ini memiliki perbedaan yang sudah kita pernah bahas sebelum-sebelumnya, yaitu ketika koneksi database yang kita pakai missal pada Mysql kita bisa menggunakan “USE nama_database” sedangkan pada Postgresql kita bisa menggunakan “\c nama_database”. yang kedua, yaitu pada Postgresql kita bisa melakukan perintah CHECK seperti yang di contohkan pada modul sedangkan pada Mysql kita bisa mebuat CHECK namun CHECK yang sudah kita buat tidak ada pengaruhnya, karena pada Mysql tidak ada perintah CHECK, sehingga yang terjadi pada mysql adalah ketika kita memasukkan data yang tidak sesuai dengan CHECK, data tersebut akan tetap masuk (terInsert).   

      
Kesimpulan, Kritik dan Saran

Sub Query merupakan query yang digunakan untuk menspesifikasikan perintah yang memiliki kondisi tertentu dengan cara memberikan perintah SELECT di dalam SELECT. Perintah tersebut akan sangat membantu kita apabila memiliki banyak sekali data, sehingga kita bisa menemukan data tersebut dengan cepat. Tetapi kita juga harus melihat suatu DBMS tersebut macam-macam query yang variatif atau tidak, karena apabila suatu DBMS tersebut terdapat satu SQL yang tidak ada sementara pada DBMS lain ada maka kita akan kekurangan satu fungsi perintah untuk mendapatkan data yang tepat. Jadi juga perhatikan DBMS yang digunakan agar kita bisa mendapatkan data yang tepat untuk di tampilkan.
Pengertian Normalisasi

Istilah Normalisasi berasal dari E. F.Codd, salah seorang perintis teknologi basis data. selain dipakai sebagai metodologi tersendiri untuk menciptakan struktur tabel 9relasi) dalam basis data (dengan tujuan utnuk mengurangi kemubaziran data) , normalisasi terkadang hanya diipakai sebagai perangkat verifikasi terhadap tabel-tabel yang dihasilkan oleh metodologi lain ( misalnya E-R). Normalisasi memberikan panduan yang sangat membantu bagi pengembang untuk mencegah penciptaan struktur tabel yang kurang fleksibel atau mengurangi keflekxibelan.

Kroenke mendefinisikan normalisasi sbagai proses untuk mengubah suatu relasi yang memiliki masalah tertentu ke dalam dua buah relasi atau lebih yang tida memiliki masalah tersebut. Masalah yang dimaksud olej kroenke ini sering disebut dengan istilah anomali.

( Pada beberapa literatur, istilah relasi yang digunakan pada bab ini terkadang digantikan dengan tabel. Istilah relasi digunakan pada bab ini dikarenakan definisi tentang normalisasi memang menggunakan istilah relasi).

Langkah – langkah Normalisasi
  1. Unnormalization Form
  2. Bentuk yang tidak normal dimaksudkan suatu kumpulan data yang akan diolah yang diperoleh dari format – format yang beraneka ragam, masih terdapat duplikasi, bisa saja tidak sempurna atau tidak lengkap, dan sesuai fakta lapangan. Bentuk ini didapat dari dokumen yang ada dilapangan atau manual dengan atribut bukan nilai sederhana.
  3. First Normal Form (1NF)
  4. Suatu tabel dianggap normal ke satu (1NF) jika : - Tidak terdapat baris yang bernilai ganda atau duplikat. - Masing - masing baris bernilai tunggal dan tidak bernilai null. Langkah – langkah : - Isikan setiap data bernilai tunggal dan tidak null - Membuang perulangan data dalam satu baris dengan baris yang lain.
  5. Second Normal Form (2NF)
  6. Bentuk normal kedua (2NF) terpenuhi jika : - Harus telah berbentuk normal pertama (1NF). - pada sebuah tabel semua atribut yang tidak termasuk dalam primary key memiliki ketergantungan fungsional pada primary key secara utuh. Suatu atribut dikatakan ketergantungan fungsional jika harga pada atribut tersebut menentukan harga dari atribut yang lain. Misalnya, nim → mhs_nama. Langkah – langkah : - Jika terdapat atribut yang bergantung terhadap atribut bukan kunci utama dan merupakan atribut kunci maka pecah menjadi table baru.
  7. Third Normal Form (3NF)
  8. Bentuk normal ketiga (3NF) terpenuhi jika : - Harus telah berbentuk normal kedua (2NF). - Tidak terdapat anomali – anomali hasil dari ketergantungan transitif. ketergantungan transitif adalah ketergantungan fungsional antara 2 atau lebih atribut bukan kunci. Langkah – langkah : - Pastikan semua atribut non kunci bergantung penuh terhadap atribut kunci. - Pisahkan menjadi tabel baru jika menemukan ketergantungan transitif dalam tabel tersebut.
  9. Boyce Codd Normal Form (BCNF)
  10. Secara praktis tujuan analisis database cukup sampai pada 3NF, Akan tetapi dalam suatu kasus tertentu lebih baik bila dapat mencapat BCNF. Beberapa pemikir menyamakan antara 3NF dengan BCNF. Bentuk normal BCNF terpenuhi jika : - Masing-masing atribut utama bergantung fungsional penuh pada masing kunci dimana kunci tersebut bukan bagiannya. - Setiap determinan atribut-atribut relasi adalah kunci relasi atau kandidat kunci. - BCNF dapat memiliki lebih dari satu kunci. - BCNF hampir sama dengan 3NF. Langkah – langkah : - Hilangkan dependensi pada bukan kunci kandidat.
  11. Fourth Normal Form (4NF)
  12. Dilakukan jika terdapat anomali pada (3NF)
  13. Fifth Normal Form (5NF)
  14. Langkah ini untuk memecah relasi menjadi dua sehingga relasi tersebut tidak digabungkan kembali manjadi satu dan jika terdapat anomali pada (5NF)

Contoh permasalahan dalam Normalisasi

Terdapat suatu hasil kartu studi yang bersifat manual dan akan kita anilisis menggunakan teknik Normalisasi sebagai berikut :

Tahap First Normal Form (1NF)




Adapun kelemahan dari 1NF ini sebagai berikut :
  1. Inserting (Memasukkan data)
  2. Kita tidak dapat memasukkan kode dan nama supplier saja tanpa ada transaksi pembelian, sehingga supplier baru dapat masuk bila ada transaksi pembelian.
  3. Deleting (Menghapus data)
  4. Bila satu baris data transaksi dihapus, maka akan berakibat menghapus pada data supplier. Padahal data suplier masih diperlukan pada transaksi berikutnya. Misalkan transaksi di hapus berdasarkan no_faktur =6, maka akan menghapus supplier=4(rodi).
  5. Updating (Mengubah data)
  6. Kode dan nama pada supplier terlihat tertulis berulang-ulang 3(biti). Jika kita ingin merubah nama supplier tersebut maka harus mengganti disemua baris yang mengandung supplier 3(biti), jika ada yang terlewat data tidak konsisten lagi.
Karena masih terdapat kesalahan maka perlu dilakukan tahap berikutnya.

Tahap Second Normal Form (2NF)

Pembentukan bentuk normal kedua ini dilakukan dengan mencari kunci-kunci field yang dapat dipakai sebagai patokan dalam pencarian dan sifatnya unik. Berdasarkan kondisi di atas dapat diambil kunci kandidat yaitu : No_faktur, Kode_supplier, dan kode_barang.


Tahap Third Normal Form (3NF)

Syarat :
Setiap atribut yang bukan kunci harus bergantung hanya pada atribut kunci (primary key) secara menyeluruh. Hilangkan juga anomali – anomali yang masih mempunyai ketergantungan fungsional. Pada tabel supplier terdapat kolom kota, perubahan kota milik supplier dapat menyebabkan data tidak konsisten sekiranya hanya satu baris yang diubah sementara seharusnya ada beberapa baris. Relasi tersebut juga terkena anomaly penyisipan dan penghapusan.


Tugas Praktikum

Sistem informasi toko serba_ada

Unnormalization Form

Seperti teori yang telah dijelaskan sebelumnya, pertama kita akan mengubah struk tersebut kedalam bentuk UNNORMALISASI, dengan cara menuliskan semua kumpulan data yang ada di nota tersebut.


First Normal Form (1NF)

Pada tahap 1NF data-data tunggal yang belum memiliki isi kita isikan nilainya.


Second Normal Form (2NF)

Setelah 1NF selesai kita beralih ke 2NF yaitu dengan memisahkan tabel tabel yang memiliki ketergantungan fungsional. Dan nantinya pada tabel tersebuta akan memiliki atribut atribut sendiri yang didasarkan pada tabel 1NF. Dari tabel nota tersebut dapat kita pilah.


Thrid Normal Form (3NF)
Walaupun relasi 2-NF memiliki redudansi yang lebih sedikit dari pada relasi 1-NF, namun relasi tersebut masih mungkin mengalami kendala bila terjadi anomaly peremajaan (update) terhadap relasi tersebut. Untuk itu kita memisahkan lagi ketergantungan transitif pada tiap tiap tabel yang berhubungan.


setelah itu dibuat tabel relasi antar tabel


Sumber
http://fairuzelsaid.wordpress.com/2010/01/24/sistem-basis-data-normalisasi/
Postingan Lebih Baru Postingan Lama Beranda

ABOUT ME

I could look back at my life and get a good story out of it. It's a picture of somebody trying to figure things out.

SUBSCRIBE & FOLLOW

POPULAR POSTS

  • Modul 9 - Koneksi PostgreSQL pada Java (Netbeans)

Categories

  • Laporan Praktikum 10

Advertisement

Formulir Kontak

Nama

Email *

Pesan *

What's Awesome

  • Modul 9 - Koneksi PostgreSQL pada Java (Netbeans)
    MATERI Langkah-langkah Koneksi database Terdapat beberapa langkah yang secara umum harus dilakukan sehingga aplikasi yang berbasi...
  • Modul 10 - pembuatan laporan dengan ireport
    A. Landasan Teori      Untuk membuat report di Java-Netbeans dengan menggunakan JasperReport dan iReport, sebelumnya kita perlu mengeta...
  • Modul 6 - Normalisasi
    Pengertian Normalisasi Istilah Normalisasi berasal dari E. F.Codd, salah seorang perintis teknologi basis data. selain dipakai sebagai met...
  • Modul 5 - Agregasi SQL dan View
    A. DASAR TEORI Desain Basis Data memiliki banyak sekali perintah yang bisa kita gunakan untuk mendesain Basis Data tersebut. Intinya ki...
  • Modul 3 - Perintah Dasar SQL
    pertemuan ketiga, tentang perintah dasar SQL.. sebelum kita lanjut, sebaiknya kita memahami lebih mendalam tentang modul sebelumnya, kalau...
  • Dasar Macromedia/Adobe Flash
    Langkah-langkah Pembuatan Background Langkah-langkah pembuatan background pada media pembelajaran adalah sebagai berikut: a. Membuka...
  • Bahasa Indonesia
    Pemakaian huruf: · Huruf abjad · Huruf vokal · Huruf konsonan : selain huruf fokal · Huruf gabungan konsona...
  • KARYA TULIS ILMIAH
    KARYA TULIS ILMIAH PERANAN GADGET       OLEH : ANAS ABDUR ROHIM K. ( ...
  • Langkah Dasar Notepad++
    Tutorial: 1. Install Notepad++ 2. Klik new file, pilih HTML 3. Save as ex. ‘Weboender.html’ 4. Setelah itu ketik script code dibawah ini ...
  • Modul 7 - SUB QUERY dan INDEKS
    Landasan Teori 1.       SELECT INTO STATEMENT Query  select  into  statement  merupakan  query  SQL  yang  digunakan  untuk mengo...

Explore The Archive

  • ▼  2014 (10)
    • ►  Desember (2)
    • ▼  November (3)
      • Modul 8 - Fungsi, PL/PGSQL, dan Trigger
      • Modul 7 - SUB QUERY dan INDEKS
      • Modul 6 - Normalisasi
    • ►  Oktober (3)
    • ►  September (2)
  • ►  2013 (9)
    • ►  September (9)
Diberdayakan oleh Blogger.

Oddthemes

Copyright © Its My Blog. Designed by OddThemes