Anda di halaman 1dari 15

RANGKUMAN DATABASE

Perbaikan

Improvement
Setiap improvement akan ditandai oleh point berwarna biru

Nur Arifin Akbar


nur.arifin.akbar@gmail.com
1. Pengertian Database
Sebelum masuk kepada database, terlebih dahulu kita harus mengetahui pengertian Basis
Data atau Database, yaitu :
a. Himpunan kelompok data yang saling terhubung dan diorganisir sedemikian rupa
supaya kelak dapat dimanfaatkan kembali secara cepat dan mudah .
b. Kumpulan data dalam bentuk file/tabel/arsip yang saling berhubungan dan
tersimpan dalam media penyimpanan elektronis, untuk kemudahan dalam
pengaturan, pemilahan, pengelompokan dan pengorganisasian data sesuai tujuan
[1].

2. Tabel & Constraint


Database itu sendiri terdiri atas Tabel. Dimana tabel adalah Sekumpulan data terstruktur
terdiri dari baris dan kolom yang disimpan pada suatu media penyimpanan dimana data
tersebut dapat dimanipulasi (tambah, ubah, hapus) dan dapat dilihat dengan
menggunakan teknik tertentu untuk menghasilkan informasi yang lebih bermakna. Untuk
menjaga integritas data dalam tabel, diperlukan constraint, dimana constraint adalah
batasan atau aturan yang diaplikasikan terhadap kolom/field pada suatu table, yang
bertujuan menjaga integritas data. Dengan adanya Constraint, akan meminimalisir
kesalahan data akibat kesalahan memasukkan data oleh pengguna [2].

3. Kriteria DB
Database yang baik memiliki beberapa karakteristik atau kriteria sebagai berikut :

a. Bisa menyimpan segala macam data yang ada. database harus cukup kuat untuk
menyimpan semua jenis data yang ada disekitar kita.
b. Bisa menghubungkan entitas / tabel dalam database dengan cara relasi. yaitu.; dua tabel
harus terkait [1].
c. Data dan aplikasi harus diisolasi. Karena database adalah sistem yang memberi platform
untuk menyimpan data, dan datanya adalah database yang memungkinkan untuk bekerja.
Makanya harus ada perbedaan yang jelas antara keduanya.
d. Tidak ada duplikasi data dalam database. Data harus disimpan sedemikian rupa sehingga
tidak boleh diulang dalam banyak tabel. Jika diulang, maka akan sia-sia pemborosan
ruang DB dan data tersebut menjadi kacau.
e. Dapat membantu pengguna untuk mengambil dan memanipulasi data. Jika pengguna
ingin melihat data tertentu, dia bisa menerapkan sebanyak mungkin kondisi penyaringan
yang diinginkan dan menarik data yang dibutuhkan.
f. Dapat diakses secara bersamaan, tanpa mempengaruhi pengguna lain.
g. Harus menyediakan keamanan, yaitu; Ketika ada beberapa pengguna mengakses
database, setiap pengguna akan memiliki tingkat hak mereka sendiri untuk melihat
database. Beberapa dari mereka akan diizinkan untuk melihat keseluruhan database, dan
beberapa hanya akan memiliki hak parsial.

4. Key
Dalam database ada baiknya memberikan key agar pengorganisiran data dapat diakses
secara lebih terstruktur , dimana sejumlah atribut yang mengidentifikasi record/baris
dalam sebuah relation secara unique. Adapun jenis key terdiri dari :
a. Super Key –>> satu atribut atau kumpulan atribut yang secara unik mengidentifikasi
sebuah record di dalam relasi atau himpunan dari satu atau lebih entitas yang dapat
digunakan untuk mengidentifikasi secara unik sebuah entitas dalam entitas set.
b. Candidate Key –>> atribut-atribut yang menjadi determinan yang dapat dijadikan
identitas record pada sebuah relation bisa terdapat satu atau lebih candidate key.
c. Primary key –>> candidate key yang menjadi identitas record karena dapat
mengidentifikasi record secara unik
d. Alternate key –>> candidate key yang tidak dijadikan primary key
e. Composite key –>> key yang terdiri dari 2 atribut atau lebih. Atribut-atribut tersebut bila
berdiri sendiri tidak menjadi identitas record, tetapi bila dirangkaikan menjadi satu
kesatuan akan dapat mengidentifikasi secara unik
f. Foreign key –>> non key atribut pada sebuah relation yang juga menjadi key (primary)
atribut di relation lainnya. Foreign key biasanya digunakan sebagai penghubung antara
record-record dan kedua relation tersebut.
5. Abstraksi Data
Disisi lain Database sendiri juga terdapat abstraksi data, dimana abstraksi data merupakan
tingkatan-tingkatan pengguna dalam memandang bagaimana sebenarnya data diolah dalam
sebuah sistem database sehingga menyerupai kondisi yang sebenarnya dihadapi oleh
pengguna sehari-hari, dalam hal ini abstraksi data dibagi atas 3, yaitu :
a. Physical Level
Merupakan level terendah dalam abstraksi data, yang menunjukkan bagaimana sesungguhnya
suatu data disimpan. Melalui level ini, pemakai dapat melihat gambaran struktur datanya
secara terperinci.Pada level ini, pemakai melihat data sebagai gabungan dari struktur dan
datanya sendiri.
b. Conceptual Level
Merupakan level berikutnya yang menggambarkan data yang disimpan dalam basis data serta
hubungan antara data. Pada level ini pemakai dapat mengetahui misalnya data pegawai yang
disimpan atau direpresentasikan dalam beberapa file/tabel, seperti file pribadi, file
pendidikan, file pekerjaan.
c. User View
Merupakan level tertinggi dari abstraksi data yang hanya menunjukkan sebagian dari basis
data. Para user umumnya hanya membutuhkan sebagian data/informasi dalam basis data
yang kemunculannya di mata user (pemakai) diatur oleh aplikasi end [3].

6. Pengertian ERD
Perancangan database pada umumnya memerlukan ERD yang merupakan merupakan suatu
model untuk menjelaskan hubungan antar data dalam database berdasarkan objek-objek dasar
data yang mempunyai hubungan antar relasi, dimana ERD dibuat untuk menggambarkan atau
membuat model suatu database dengan diagram yang sederhana sehingga memudahkan
dalam membuat sebuah database yang kompleks maupun yang sederhana. Dengan ERD ini
juga akan memudahkan pengguna dalam hal ini orang yang merancang database [4] tersebut
dalam membuat perubahan di dalam database jika sewaktu-waktu terjadi.

7. Kardinalitas
Di dalam ERD sendiri biasanya terdapat relasi antar entitas yang sering disebut dengan
Kardinalitas Relasi yang menunjukkan jumlah maksimum entitas yang dapat berelasi dengan
entitas pada himpunan entitas yang lain.Ada empat jenis Kardinalitas/Derajat Relasi, yaitu :
a. Satu ke satu (One to One)
Suatu entitas di dalam himpunan entitas A dihubungkan dengan paling banyak satu
entitas di dalam himpunan entitas B, dan entitas di dalam himpunan entitas B
dihubungkan dengan paling banyak satu entitas dalam himpunan entitas A.
b. Satu ke banyak (One to Many)
Suatu entitas di dalam himpunan entitas A dihubungkan dengan lebih dari satu entitas di
dalam himpunan entitas B, dan entitas di dalam himpunan entitas B hanya dapat
dihubungkan dengan paling banyak satu entitas dalam himpunan entitas A [4].
c. Banyak ke satu (Many to One)
d. Suatu entitas di dalam himpunan entitas A dihubungkan dengan paling banyak satu
entitas di dalam himpunan entitas B, dan entitas di dalam himpunan entitas B dapat
dihubungkan dengan lebih dari satu entitas dalam himpunan entitas A.
e. Banyak ke banyak (Many to Many)
f. Suatu entitas di dalam himpunan entitas A dapat dihubungkan dengan lebih dari satu
entitas di dalam himpunan entitas B, dan entitas di dalam himpunan entitas B dapat
dihubungkan dengan lebih dari satu entitas dalam himpunan entitas A.

8. Tahap Perancangan ERD


Dalam penerapan ERD, ada 2 garis besar tahapan dilakukan dalam pembuatan ERD, yaitu:
a. Tahap pembuatan ERD awal [4](preliminary design) sebagai implementasi→ rancangan
basis data minimal,
b. Tahap optimasi ERD (final design)→ koreksi terhadap tahap pertama (dekomposisi,
kardinalitas, penambahan relasi).
Adapun langkah rinci yang biasa dilakukan adalah sebagaimana berikut :
Gambar 8.1 Langkah Pembuatan ERD
9. Lossy vs Lossless Join Decomposition
Sebelum membahas mengenai Normalisasi, untuk kenormalan sebuah tabel diperlukan
proses bernama dekomposisi. Dekomposisi adalah teknik memecah sebuah relasi menjadi
beberapa relasi. Kemudian setelah relasi tersebut dipecah bila digabungkan kembali harus
mendapat hasil yang sama, tidak boleh record yang diulang maupun record tambahan. Bila
kondisi ini terpenuhi maka ini yang disebut Lossless-join decomposition, namun sebaliknya,
apabila hasil tidak sama maka dinamakan Lossy-Join decomposition [5].
10. Normalisasi Database
Normalisasi adalah salah satu pendekatan logical design dari suatu database relational, dan tampaknya
sedikit memiliki kemiripan dengan model ER.

Disain database relational dengan pendekatan normalisasi dan disain ER yang teliti akan menghasilkan
database relational yang hampir identik, pada kenyataannya dua pendekatan (normalisasi dan disain ER)
tersebut saling memperkuat.

a. Pendekatan Normalisasi
Berikut adalah yang dilakukan dengan pendekatan normalisasi:

1. Disainer membuat model berupa tabel (universal table) berdasarkan situasi sebenarnya,
dengan;
a. Memperhatikan aturan tentang keterkaitan item data tersebut.
b. Mengisikan data pada kolom‐kolomnya, nama kolom tersebut akan menjadi nama
kolom pada tabel‐tabel relational.
2. Membuat tabel‐tabel dalam bentuk normal (normal form tables), sesuai aturan normalisasi,
yaitu;
a. First normal form (1NF) → Bentuk normal pertama.
b. Second normal form (2NF) → Bentuk normal kedua.
c. Third normal form (3NF) → Bentuk normal ketiga.
d. Boyce‐Codd normal form (BCNF) → Bentuk normal Boyce‐Codd.
Ket: Sebenarnya masih ada bentuk normal 4NF dan 5NF, namun bentuk normal ini tidak umum
dilakukan, untuk itu tidak dibahas di sini.

Dari model berupa universal tabel (berdasarkan situasi sebenarnya) dibuat tabel‐tabel dari hasil
penerapan aturan 1NF. Setelah tabel‐tabel dalam bentuk 1NF, selanjutnya diterapkan aturan untuk
membuat tabel‐tabel dalam bentuk 2NF dan 3NF. Dikatakan 2NF dan 3NF, karena biasanya disainer
database melakukan tahap ini secara kontinyu (hingga bentuk 3NF dicapai) [6].

Database yang berisi item data awal yang semuanya di dalam satu tabel (universal table/tabel universal)
dan ketentuan keterkaitan pada item data tersebut, melalui prosedur‐prosedur sesuai ketentuan (1NF,
2NF dan 3NF) dihasilkan database yang terdiri dari beberapa tabel (equivalent tabel universalnya) yang
semua tabel dalam database tersebut sudah dalam bentuk 3NF.

b. 1NF
Suatu relasi/tabel dikatakan dalam 1NF jika dan hanya jika sifat dari setiap relasi atributnya bersifat
atomik. Atom adalah zat terkecil yang masih memiliki sifat induknya, bila dipecah lagi maka ia tidak
memiliki sifat induknya.

Suatu tabel dikatakan sudah dalam first normal form (1NF) jika tabel tersebut tidak memiliki field
multivalue.
c. 2NF
Sebuah relasi/tabel dikatakan dalam 2NF jika tabel tersebut dalam 1NF dan setiap kolom bukan kunci
tergantung secara fungsional pada kunci utama/primary key (Functional Dependency/FD).

d. Definisi FD (Functional Dependency)


A→B ,dibaca: “A functionally determines B” atau “B is functionally dependent on A”.

Misal terdapat tabel T yang terdiri dari dua kolom (kolom A dan B), dikatakan A→B, “jika dan hanya jika
untuk setiap set baris yang mungkin ada pada tabel T, untuk nilai yang sama pada kolom A harus
terdapat nilai yang sama untuk kolom B”.

Atau secara formal dinyatakan:


jika terdapat 2 baris r1 dan r2 dalam T dikatakan A→B, “jika r1(A)= r2(A), maka r1(B)= r2 (B)”.

Contoh:

T1 T2 T3
Row # A B A B A B
1 x1 y1 x1 y1 x1 y1
2 x2 y2 x2 y4 x2 y4
3 x3 y1 x1 y1 x1 y1
4 x4 y1 x3 y2 X3 y2
5 x5 y2 x2 y4 X2 y4
6 x6 y2 x4 y3 X4 y4

Tabel T1
Apakah A→B ?
• Dengan memeriksa untuk setiap pasang baris r1 dan r2, jika r1(A)= r2(A), maka r1(B)= r2(B).
• Karena nilai tiap baris pada kolom A adalah unique maka sudah pasti untuk nilai A=x1 maka nilai
B=y1, demikian juga seterus‐nya untuk nilai A=x2 maka nilai B=y2, A=x3 maka B=y1.
Maka: A→B

Apakah B→A ?
• Dengan memeriksa untuk setiap pasang baris r1 dan r2, jika r1(B)= r2(B), maka r1(A)= r2(A).
• Perhatikan nilai tiap baris pada kolom B tidak unique berarti ada kemungkinan hasil
pemeriksaan tidak seperti yang diharapkan.
• Perhatikan nilai B dan A pada pasangan Row# 1 (sebagai r1) dan Row# 3 (sebagai r2), r1(B)=y1
dan r2(B)=y1, tetapi r1(A)=x1 dan r2(A)=x3, berarti prinsip “jika r1(B)= r2(B), maka r1(A)= r2(A)”
tidak terpenuhi,
Maka: B –/–> A

Tabel T2
Apakah A→B ?
• Dengan memeriksa untuk setiap pasang baris r1 dan r2, jika r1(A)= r2(A), maka r1(B)= r2(B).
• Perhatikan nilai tiap baris pada kolom A tidak unique (terdapat duplikat nilai kolom A pada Row#
1 dengan Row# 3 dan pada Row# 2 dengan Row# 5), berarti ada kemungkinan hasil pemeriksaan
tidak seperti yang diharapkan.
• Perhatikan nilai A dan B pada pasangan Row# 1 (sebagai r1) dan Row# 3 (sebagai r2), r1(A)=x1
dan r2(A)=x1, dengan r1(B)=y1 dan r2(B)=y1,
Perhatikan nilai A dan B pada pasangan Row# 2 (sebagai r1) dan Row# 5 (sebagai r2), r1(A)=x2
dan r2(A)=x2, dengan r1(B)=y4 dan r2(B)=y4
berarti prinsip “jika r1(A)= r2(A), maka r1(B)= r2(B)” terpenuhi.
Maka: A→B

Apakah B→A ?
• Dengan memeriksa untuk setiap pasang baris r1 dan r2, jika r1(B)= r2(B), maka r1(A)= r2(A).
• Perhatikan nilai tiap baris pada kolom B tidak unique (terdapat duplikat nilai kolom B pada Row#
1 dengan Row# 3 dan pada Row# 2 dengan Row# 5), berarti ada kemungkinan hasil pemeriksaan
tidak seperti yang diharapkan.
• Perhatikan nilai A dan B pada pasangan Row# 1 (sebagai r1) dan Row# 3 (sebagai r2), r1(B)=y1
dan r2(B)=y1, dengan r1(A)=x1 dan r2(A)=x1,
Perhatikan nilai A dan B pada pasangan Row# 2 (sebagai r1) dan Row# 5 (sebagai r2), r1(B)=y4
dan r2(B)=y4, dengan r1(A)=x2 dan r2(A)=x2,
berarti prinsip “jika r1(B)= r2(B), maka r1(A)= r2(B)” terpenuhi
Maka: B→A

Tabel T3
Apakah A→B ?
• Dengan memeriksa untuk setiap pasang baris r1 dan r2, jika r1(A)= r2(A), maka r1(B)= r2(B).
• Perhatikan nilai tiap baris pada kolom A tidak unique (terdapat duplikat nilai kolom A pada Row#
1 dengan Row# 3 dan pada Row# 2 dengan Row# 5), berarti ada kemungkinan hasil pemeriksaan
tidak seperti yang diharapkan.
• Perhatikan nilai A dan B pada pasangan Row# 1 (sebagai r1) dan Row# 3 (sebagai r2), r1(A)=x1
dan r2(A)=x1, dengan r1(B)=y1 dan r2(B)=y1,
Perhatikan nilai A dan B pada pasangan Row# 2 (sebagai r1) dan Row# 5 (sebagai r2), r1(A)=x2
dan r2(A)=x2, dengan r1(B)=y4 dan r2(B)=y4
berarti prinsip “jika r1(A)= r2(A), maka r1(B)= r2(B)” terpenuhi.
Maka: A→B

Apakah B→A ?
• Dengan memeriksa untuk setiap pasang baris r1 dan r2, jika r1(B)= r2(B), maka r1(A)= r2(A).
• Perhatikan nilai tiap baris pada kolom B tidak unique (terdapat duplikat nilai kolom B pada Row#
1 dengan Row# 3 dan pada Row# 2, Row# 5 dengan Row# 6), berarti ada kemungkinan hasil
pemeriksaan tidak seperti yang diharapkan.
• Perhatikan nilai A dan B pada pasangan Row# 1 (sebagai r1) dan Row# 3 (sebagai r2), r1(B)=y1
dan r2(B)=y1, dengan r1(A)=x1 dan r2(A)=x1,
Perhatikan nilai A dan B pada pasangan Row# 2 (sebagai r1) dan Row# 5 (sebagai r2), r1(B)=y4
dan r2(B)=y4, dengan r1(A)=x2 dan r2(A)=x2,
Perhatikan nilai A dan B pada pasangan Row# 2 (sebagai r1) dan Row# 6 (sebagai r2), r1(B)=y4
dan r2(B)=y4, dengan r1(A)=x2 dan r2(A)=x4,
berarti prinsip “jika r1(B)= r2(B), maka r1(A)= r2(B)” tidak terpenuhi
Maka: B –/–> A

e. 3NF
Sebuah relasi/tabel dikatakan dalam 3NF jika tabel tersebut dalam bentuk 2NF dan setiap kolom bukan
kunci (primary key) tidak memiliki hubungan yang transitif terhadap kolom kunci (primary key).

Ini berati bahwa setiap kolom yang bukan kunci harus tergantung pada kolom kunci utama/primary key
secara menyeluruh. Maksudnya;

• Jika ada kolom (misal; kolom D) bukan kunci sebenarnya tergantung kepada kolom lain yang
bukan kolom kunci (misal; kolom N), tapi karena kolom N tergantung pada kolom kunci (misal;
kolom K), maka kolom D dikatakan memiliki hubungan transitif terhadap kolom K.
Atau secara formal dituliskan;
K → N, D
K→N
N→D
• jika primary key adalah berupa kombinasi kolom maka kolom yang bukan primary key tidak
boleh tergantung hanya pada salah satu kolom primary key (no transitif dependency).
K1, K2 → L, M
K1 → N

Contoh Kasus
1. Perhatikan formulir faktur berikut;

PT. Mutiara Mukti


Jalan MM I No. 01

Faktur Pembelian Barang

Nomor Faktur : 273 Tanggal : 02 / 05 / 87


Kode Supplier : 335 Nama Supplier : PT. Indah

Kode Barang Nama Barang Jumlah


B2 Meja 3
B3 Kursi 2
B4 Lemari 4
B5 Rak Buku 4
B6 Televisi 2
Pendekatan normalisasi:
1. Model berupa tabel berdasarkan situasi sebenarnya, kemudian model ini digunakan sebagai ilustrasi
untuk pembahasan normalisasi dengan aturan normalisasi (1NF, 2NF, 3NF dan BCNF), kita gunakan
data dari formulir faktur pembelian di atas. Dari sebanyak 3 Faktur pembelian tersebut diperoleh
data pembelian sebagai berikut:

kode_ nama_bar
nomor_faktur tanggal nama_supplier kode_brg jumlah
supplier ang
273 020587 335 PT. Indah B2 Meja 3
B3 Kursi 2
B4 Lemari 4
B5 Rak Buku 4
B6 Televisi 2
274 020587 275 PT. Permai B2 Meja 3
B3 Kursi 5
275 020687 223 PT. Asri B6 Televisi 2

2. Membuat tabel‐tabel dalam bentuk normal (normal form tables), sesuai aturan normalisasi (1NF,
2NF, 3NF, BCNF)

1NF
Suatu tabel dikatakan sudah dalam bentuk first normal form (1NF) jika tabel tersebut tidak memiliki field
multivalue. Jika ada kolom multivalue, maka kolom harus dipisah dengan membuat tabel lain.

Perhatikan tabel pembelian di atas, pada tabel tersebut terdapat kolom yang memiliki multivalue (yaitu;
kode_brg, nama_barang, jumlah), maka kolom tersebut harus dipisah dengan membuat tabel lain dan
menyertakan kolom primary key dari tabel asal sebagai foreign key pada tabel baru tersebut.

pembelian
nomor_f kode_ nama_sup kode_b nama_bar
tanggal jumlah
aktur supplier plier rg ang
273 020587 335 PT. Indah B2 Meja 3
B3 Kursi 2
B4 Lemari 4
B5 Rak Buku 4
B6 Televisi 2
274 020587 275 PT. Permai B2 Meja 3
B3 Kursi 5
275 020687 223 PT. Asri B6 Televisi 2
pembelian daftar_barang_pembelian
nomor_f kode_ nama_sup kode_b nama_bar nomor
tanggal jumlah _faktur
aktur supplier plier rg ang
273 020587 335 PT. Indah B2 Meja 3 273
274 020587 275 PT. Permai B3 Kursi 2 273
275 020687 223 PT. Asri B4 Lemari 4 273
B5 Rak Buku 4 273
B6 Televisi 2 273
B2 Meja 3 274
B3 Kursi 5 274
B6 Televisi 2 275

2NF
Sesuai aturan Functional Dependency (FD), tabel/relasi dalam 1NF dan setiap kolom bukan kunci
tergantung secara fungsional pada kunci utama/primary key. Ini berati bahwa setiap kolom yang bukan
kunci harus tergantung secara fungsional pada kolom kunci utama/ primary key.

jika ada kolom yang tidak tergantung secara fungsional terhadap primary key, maka kolom harus
dipisah dengan membuat tabel lain (tabel baru) dan pada tabel baru tersebut juga tambahkan kolom
untuk primary key dari tabel asal (sebagai relasi terhadap tabel asal).

Perhatikan tabel yang sudah dalam 1NF berikut;

pembelian daftar_barang_pembelian
nomor_f kode_ nama_sup kode_b nama_bar nomor
tanggal jumlah _faktur
aktur supplier plier rg ang
273 020587 335 PT. Indah B2 Meja 3 273
274 020587 275 PT. Permai B3 Kursi 2 273
275 020687 223 PT. Asri B4 Lemari 4 273
B5 Rak Buku 4 273
B6 Televisi 2 273
B2 Meja 3 274
B3 Kursi 5 274
B6 Televisi 2 275

Pada tabel pembelian terlihat dengan jelas bahwa nomor_faktur adalah unique, sehingga bisa dipastikan
bentuk FD‐nya;

Nomor_faktur → tanggal, kode_suplier, nama_suplier


Pada tabel daftar_barang_pembelian bentuk FD (Functional Dependency)‐nya adalah;

Kode_brg → nama_barang

Kode_brg –/–> jumlah , karena untuk setiap set baris dimungkinkan untuk suatu nilai yang sama pada
kolom kode_brg, terdapat nilai yang berbeda pada kolom jumlah. (untuk barang yang sama,
dimungkinkan untuk dibeli dengan jumlah pembelian yang berbeda).

Perhatikan nilai pada Row 2 dan Row 7, kolom kode_brg Row 2 = kode_brg Row 7 = B3, tetapi kolom
jumlah Row 2 ≠ kolom jumlah Row 7 (nilai jumlah Row 2 = 2 , nilai jumlah Row 7 = 5).

Kode_brg –/–> nomor_faktur , karena untuk setiap set baris dimungkinkan untuk suatu nilai yang sama
pada kolom kode_brg, terdapat nilai yang berbeda pada kolom nomor_faktur. (untuk barang yang
sama, dimungkinkan untuk dibeli beberapa kali dan tercatat pada faktur yang berbeda).

Perhatikan nilai pada Row 2 dan Row 7, kolom kode_brg Row 2 = kode_brg Row 7 = B3, tetapi kolom
nomor_faktur Row 2 ≠ kolom nomor_faktur Row 7 (nomor_faktur Row 2 = 273 , jumlah Row 7 = 274).

Maka berarti kolom jumlah dan nomor_faktur tidak tergantung secara fungsional terhadap primary key.
Dengan demikian;
• jumlah dan nomor_faktur harus dipindahkan ke tabel baru, dan tambahkan primary key tabel
asal (kode_brg) ke tabel baru tersebut (sebagai relasi dengan tabel asal).
• Pada tabel baru tersebut tentukan primary key nya, sehingga atribut non primary key akan
tergantung secara fungsional pada primary key. Dalam hal ini primary key‐nya adalah kombinasi
dari kolom kode_brg dan nomor_faktur, sehingga FD:
kode_brg, nomor_faktur → jumlah
• Berikan nama tabel baru dan tabel yang mengalami perubahan dengan nama yang sesuai
dengan ini datanya.
Sehingga tabel‐tabel sekarang akan menjadi seperti berikut:

pembelian daftar_barang daftar_pembelian


nomor_f kode_ nama_sup kode_ nama_bar kode nomor
tanggal jumlah
aktur supplier plier brg ang _brg _faktur

273 020587 335 PT. Indah B2 Meja B2 273 3

274 020587 275 PT. Permai B3 Kursi B3 273 2

275 020687 223 PT. Asri B4 Lemari B4 273 4


B5 Rak Buku B5 273 4
B6 Televisi B6 273 2
B2 274 3
B3 274 5
B6 275 2
3NF
Sesuai aturan 3NF, tabel/relasi dalam bentuk 2NF dan setiap kolom bukan kunci tidak memiliki
hubungan yang transitif terhadap primary key. Ini berati bahwa setiap kolom yang bukan kunci harus
tergantung pada kolom kunci utama/primary key secara menyeluruh.

Maksudnya;
• Jika ada kolom (misal; kolom D) bukan kunci sebenarnya tergantung kepada kolom lain yang
bukan kolom kunci (misal; kolom N), tapi karena kolom N tergantung pada kolom kunci (misal;
kolom K), maka kolom D dikatakan memiliki hubungan transitif terhadap kolom K.
Atau secara formal dituliskan;
• jika primary key adalah berupa kombinasi kolom maka kolom yang bukan primary key tidak
boleh tergantung hanya pada salah satu kolom primary key (no transitif dependency).

Jika ada kolom yang memiliki hubungan secara transitif terhadap primary key, maka kolom tersebut
harus dipisah dengan membuat tabel lain (tabel baru) dan pada tabel baru tersebut juga tambahkan
kolom sebagai tempat bagi kolom ketergantungannya dan menjadi primary key pada tabel baru,
kolom tersebut akan menjadi relasi yang menghubungkan tabel asal dengan tabel baru.

Perhatikan tabel yang sudah dalam 2NF berikut;

pembelian daftar_barang daftar_pembelian


nomor_f kode_ nama_sup kode_ nama_bar kode nomor
tanggal jumlah
aktur supplier plier brg ang _brg _faktur

273 020587 335 PT. Indah B2 Meja B2 273 3

274 020587 275 PT. Permai B3 Kursi B3 273 2

275 020687 223 PT. Asri B4 Lemari B4 273 4


B5 Rak Buku B5 273 4
B6 Televisi B6 273 2
B2 274 3
B3 274 5
B6 275 2

Pada tabel pembelian, jelas terlihat bahwa kolom nama_suppler sebenarnya tergantung pada kolom
kode_supplier, karena kolom kode_supplier tergantung pada nomor_faktur (primary_key) maka
nama_supplier juga tergantung pada nomor_faktur tetapi ketergantungannya hanya transitif, melalui
kolom kode_supplier.

nomor_faktur →kode_supplier, nama_supplier


kode_supplier →nama_supplier

Karena nama_supplier tergantung pada kode_supplier, maka pada tabel baru harus disertakan kolom
kode_supplier sebagai primary key pada tabel baru. Sedangkan kolom kode_supplier pada tabel
pembelian tidak dihapus (tetap ada, sebagai relasi dengan tabel baru).
Sehingga tabel‐tabel tersebut sekarang akan menjadi seperti berikut:

pembelian supplier
nomor_f kode_ kode_ nama_sup
tanggal
aktur supplier supplier plier
273 020587 335 335 PT. Indah
274 020587 275 275 PT. Permai
275 020687 223 223 PT. Asri

daftar_barang daftar_pembelian
kode_ nama_bar kode nomor
jumlah
brg ang _brg _faktur
B2 Meja B2 273 3
B3 Kursi B3 273 2
B4 Lemari B4 273 4
B5 Rak Buku B5 273 4
B6 Televisi B6 273 2
B2 274 3
B3 274 5
B6 275 2

Daftar Pustaka

[1] Maxmanroe, "Pengertian Database dan Contohnya, Fungsi, Manfaat, Jenis, dan Komponen,"
[Online]. Available: https://www.maxmanroe.com/vid/teknologi/komputer/pengertian-
database.html.
[2] A. Sukarto, "Constraint pada Basis Data (Database)," [Online]. Available:
https://blog.ub.ac.id/agungksukarno/2014/09/27/constraint-pada-basis-data-database/.
[3] M. F. SETIADI. [Online]. Available: Konsep Dasar Sistem Basis Data Untuk Pemula.
[4] M. F. SETIADI, "Kupas Tuntas Konsep Model Data Entity Relationship Diagram atau ERD,"
[Online]. Available: http://mfikri.com/artikel/kupas-tuntas-konsep-model-data-entity-relationship-
diagram-atau-erd.html.
[5] Tutorials Point, "Lossless and Lossy Decomposition in DBMS," [Online]. Available:
https://www.tutorialspoint.com/Lossless-and-Lossy-Decomposition-in-DBMS.
[6] M. F. SETIADI, "Aturan dan Teknik dalam Melakukan Normalisasi Data," [Online]. Available:
http://mfikri.com/artikel/aturan-dan-teknik-dalam-melakukan-normalisasi-data.html.

Anda mungkin juga menyukai