Kamus
Type
Data = Record
Nama,Alamat,Tujuan,Kelas:String
Jml_Beli:byte
Harga,Total_harga:longint
Penjualan=Array[1…100] of Data
Var
a : penjualan
i,j,Jumlah_data : Byte
Tukar : Data
Procedure input
{
With a[i] Do
readln(Nama,Alamat,Tujuan,Kelas,Jml_Beli)
}
Procedure process
{
With a[i] do
{
If(Tujuan=’Bandung’) and(Kelas=’VVIP’)then
Harga <-90.000
Else
If(Tujuan=’Bandung’) and(Kelas=’VIP’)then
Harga <-75.000
Else
If(Tujuan=’Jakarta’) and(Kelas=’VVIP’)then
Harga <-120.000
Else
If(Tujuan=’Jakarta’) and(Kelas=’VIP’)then
Harga <-90.000
Total_harga<-Harga*Jml_Beli
}
}
Procedure Urut
{
For i <-1 to Jumlah_data-1 do
For j a[j+1] then
Tukar <-a [j]
a[j] <- a[j+1]
a[j+1] <- Tukar
}
}
Procedure Output
{
Writeln(‘______________________________’)
Writeln(‘Nama Alamat Tujuan Kelas Jml_beli Harga Total_harga’)
Writeln(‘________________________________________________’)
For i <- 1 to jumlah_data do
With a[i] do
Writeln(Nama,Alamat,Tujuan,Kelas,Jml_beli,Harga,Total_harga)
}
Writeln(‘________________________________________________’)
}
Algo Utama
{
Readln(jumlah_data)
For i <-1 to jumlah_data do
{
Input
Process
}
Urut
Output
}
algoritma penjualan tiket
Kamus
Type
Data = Record
Nama,Alamat,Tujuan,Kelas:String
Jml_Beli:byte
Harga,Total_harga:longint
Penjualan=Array[1…100] of Data
Var
a : penjualan
i,j,Jumlah_data : Byte
Tukar : Data
Procedure input
{
With a[i] Do
readln(Nama,Alamat,Tujuan,Kelas,Jml_Beli)
}
Procedure process
{
With a[i] do
{
If(Tujuan=’Bandung’) and(Kelas=’VVIP’)then
Harga <-90.000
Else
If(Tujuan=’Bandung’) and(Kelas=’VIP’)then
Harga <-75.000
Else
If(Tujuan=’Jakarta’) and(Kelas=’VVIP’)then
Harga <-120.000
Else
If(Tujuan=’Jakarta’) and(Kelas=’VIP’)then
Harga <-90.000
Total_harga<-Harga*Jml_Beli
}
}
Procedure Urut
{
For i <-1 to Jumlah_data-1 do
For j a[j+1] then
Tukar <-a [j]
a[j] <- a[j+1]
a[j+1] <- Tukar
}
}
Procedure Output
{
Writeln(‘______________________________’)
Writeln(‘Nama Alamat Tujuan Kelas Jml_beli Harga Total_harga’)
Writeln(‘________________________________________________’)
For i <- 1 to jumlah_data do
With a[i] do
Writeln(Nama,Alamat,Tujuan,Kelas,Jml_beli,Harga,Total_harga)
}
Writeln(‘________________________________________________’)
}
Algo Utama
{
Readln(jumlah_data)
For i <-1 to jumlah_data do
{
Input
Process
}
Urut
Output
}
Tugas algoritma
ALGORITMA PENGURUTAN
Bubble Sort
Bubble sort adalah salah satu metode pengurutan exchanging yang bersifat langsung dan termasuk jenis pengurutan yang paling sederhana. Nama bubble sort sendiri berasal dari sifat nilai elemen terbesar yang selalu naik ke atas (ke akhir dari list) seperti gelembung udara(bubble). Ide dari bubble sort adalah sebagai berikut :
1. pengecekan dimulai dari elemen paling awal.
2. Elemen ke-1 dan ke-2 dari list dibandingkan.
3. Jika elemen pertama lebih besar dari elemen kedua, dilakukan pertukaran.
4. Langkah 2 dan 3 dilakukan lagi terhadap elemen kedua dan ketiga, seterusnya sampai elemen terakhir.
5. Bila sudah sampai di elemen terakhir dilakukan pengulangan lagi dari awal sampai tidak ada terjadi lagi pertukaran elemen.
6. Bila tidak ada pertukaran elemen lagi, maka elemen list terurut. Contoh psuedocode untuk algoritma bubble sort dengan urutan membesar :
procedure bubblesort( A : list of integer )
var
temp,i : integer
tukar :boolean
Algoritma
do
tukar := false
for i = 1 to length( A ) – 1 do
if A[ i ] > A[ i + 1 ] then
temp:=A[i]
A[i]:=A[i+1]
A[i+1]:=temp
tukar := true
end if
end for
while tukar
Pada setiap pengulangan (loop) dilakukan pengecekan terhadap tiap elemen mulai elemen pertama dan kedua, elemen kedua dan ketiga,
dan seterusnya sampai elemen sebelum terakhir. Bila masih terjadi pertukaran (tukar = true) dilakukan pengecekan lagi sampai tidak terjadi pertukaran (tukar = false) yang berarti semua elemen dalam list tersebut sudah terurut membesar.
Contoh:
5 3 8 7 9 1 awal (belum terurut )
3 5 7 8 1 9 pengulangan ke-1
3 5 7 1 8 9 pengulangan ke-2
3 5 1 7 8 9 pengulangan ke-3
3 1 5 7 8 9 pengulangan ke-4
1 3 5 7 8 9 pengulangan ke-5 (terurut)
Salah satu kelebihan algoritma bubble sort, terjadi saat semua elemen sudah terurut (kompleksitas = O(n) ) di mana hanya terjadi pengecekan pada setiap elemen, sehingga penelusuran hanya dilakukan satu kali saja. Ini merupakan kasus terbaik yang mungkin terjadi pada algoritma ini. Kelebihan lain dari algoritma ini adalah dapat dieksekusi dan dijalankan dengan cukup cepatdan efisien untuk sebuah kasus yang hanya mengurutkan list yang urutannya sudah hampir benar.Selain kasus terbaik tersebut, kompleksitas untuk algoritma ini akan menjadi O(n²). Karenanya algoritma ini sangat tidak efisien untuk dipergunakan dalam dunia pemrograman yang sesungguhnya, apalagi jika pengurutan dilakukan terhadap elemen yang berjumlah sangat besar. Kelebihan lain bubble sort adalah kemudahan untuk dimengerti. Umumnya algoritma ini sering digunakan untuk mengenalkan algoritma pengurutan dalam dunia komputer karena kesederhanaan idenya. Namun Owen Astrachan,seorang peneliti, mengutarakan sebaiknya algoritma bubble sort ini tidak diajarkan lagi di dunia komputer// Posisi setiap elemen pada bubble sort akan sangat menentukan performa saat eksekusi. Bila
elemen yang terbesar disimpan di awal, maka tidak akan menimbulkan persoalan sebab elemen tersebut secara cepat akan ditukar langsung ke
elemen paling terakhir. Sebaliknya jika elemen terkecil disimpan di bagian paling akhir elemen, maka akan mengakibatkan elemen tersebut akan bergerak sebanyak hanya satu pergeseran setiap masuk ke loop. Ini berarti harus dilakukan pengecekan sebanyak n kali dalam satu loop dan loop akan dijalankan sebanyak n kali juga. Kedua jenis ini biasa disebut rabbit dan turtle. Untuk menghilangkan masalah rabbit dan turtle ini, algoritma ini dikembangkan dengan menciptakan algoritma cocktail sort dan comb sort. Cocktail sort cukup baik untuk mengatasi
permasalahan ini namun untuk kasus terburuk kompleksitasnya sama dengan bubble sort yaitu O(n²). Comb sort cukup baik untuk mempercepat turtle pada elemen list dan juga memiliki kompleksitas yang cukup baik, yaitu n log n, namun comb sort pun memiliki kelemahan, yaitu tidak stabil pada saat pengurutan. Kedua algoritma di atas tidak akan dibahas pada makalah ini. Kelemahan yang lain adalah bubble sort
berinteraksi dengan buruk pada computer modern saat ini. Penulisanya menghabiskan tempat dua kali lebih banyak dari insertion sort dan juga sering melakukan cache misses dan lebih banyak terjadi branch missprediction. Penelitian yang dilakukan oleh Astrachan pada pengurutan string di java juga membuktikan bahwa bubble sort lima kali lebih lambat dari insertion sort. Karenanya pada implementasinya bubble sort jarang digunakan, meskipun banyak juga algoritma lain yang dikembangkan dari bubble sort ini. Dari analisis tersebut, algoritma ini sebaiknya tidak diimplementasikan sebab termasuk tidak efisien penggunaannya, hanya baik digunakan untuk mengurutkan list yang sudah hampir terurut. Selain itu pengurutan jenis ini sangat tidak efisien dan memakan banyak waktu saat dieksekusi. Namun karena algoritma ini termasuk sederhana membuatnya cukup mudah untuk diajarkan sebagai dasar dari algoritma pengurutan.
Normalisasi
|
FORMULIR SETORAN REKENING |
|
BSAM/F/07/KAS/1 |
|
BPR SYARIAH PNM AL MA’SOEM |
Tanggal : 22 Desember 2008
Nomor Rekening : 000100182549
Atas Nama : Purnomo
|
2.000.000,- |
Tunai : Rp. Terbilang : Dua juta rupiah
Untuk Jumlah Setoran di atas Rp. 100.000.000,- Jenis Setoran :
Sumber Dana : ……………………………. Tabungan Mudharabah
Keterangan : ……………………. Tabungan Wadiah
Deposito
|
Diisi Oleh Bank |
Back Office Teller
Penyetor : Purnomo
No.Telepon : 92317540
|
Formulir |
|
No.Formulir (Pk) |
|
Tanggal |
|
Nomor Rekening |
|
Nama |
|
Tunai |
|
Terbilang |
|
Sumber Dana |
|
Keterangan |
|
No.Telepon |
|
Teller |
|
Transaksi |
|
No.Trans (Pk) |
|
No.Formulir |
|
Kode_Setoran |
|
Setoran |
|
Kode_Setoran (Pk) |
|
Nama |
v 1 NF
|
Formulir |
|
No.Formulir (Pk) |
|
Nomor Rekening |
|
Tanggal |
|
Nama |
|
Tunai |
|
Terbilang |
|
Sumber Dana |
|
Keterangan |
|
No.Telepon |
|
Teller |
|
Transaksi |
|
No.Trans (Pk) |
|
No.Formulir |
|
Kode_Setoran |
|
Setoran |
|
Kode_Setoran (Pk) |
|
Nama |
v 2 NF
|
Formulir |
|
No.Formulir (Pk) |
|
Tanggal |
|
Tunai |
|
Terbilang |
|
Sumber Dana |
|
Keterangan |
|
Teller |
|
Transaksi |
|
No.Trans (Pk) |
|
No.Formulir |
|
Kode_Setoran |
|
Nomor Rekening |
|
Setoran |
|
Kode_Setoran (Pk) |
|
Nama |
|
Nasabah |
|
Nomor Rekening (Pk) |
|
Nama |
|
No.Telepon |
v 3 NF
|
Formulir |
|
No.Formulir (Pk) |
|
Tanggal |
|
Tunai |
|
Terbilang |
|
Sumber Dana |
|
Keterangan |
|
Transaksi |
|
No.Trans (Pk) |
|
No.Formulir |
|
Kode_Setoran |
|
Nomor Rekening |
|
Id Teller |
|
Setoran |
|
Kode_Setoran (Pk) |
|
Nama |
|
Teller |
|
Id Teller (Pk) |
|
Nama |
|
Nasabah |
|
Nomor Rekening (Pk) |
|
Nama |
|
No.Telepon |
v ERD
|
Layani |
|
Teller |
|
Nasabah |
1 N
|
Pilih |
|
Setoran |
|
Nasabah
|
1 N
v QUERY
· Menampilkan semua data Formulir
SELECT * FROM Formulir
· Menampilkan semua data Nasabah
SELECT * FROM Nasabah
· Menampilkan semua data Teller
SELECT * FROM Teller
Study Kasus Perancangan Database
Study Kasus Perancangan Database Sistem Informasi Inventaris
A. Permasalahan:
Suatu perusahaan software diminta membuatkan basis data yang akan menangani data-data inventaris sebuah toko kecil. Karena tokonya kecil, maka ada beberapa gudang yang khusus untuk menyimpan stock produk. Data-data yang akan ditanganinya adalah: data produk yang ditawarkan toko, data pemasok produk, data transaksi pembelian produk dari pemasok (nota pembelian), dan data gudang tempat penyimpanan produk. Satu produk yang sama bisa disimpan di beberapa gudang yang berbeda, dan tentu saja tiap gudang menyimpan berbagai macam produk. Di database harus ada data mengenai sisa stock yang ada di masing-masing gudang untuk semua produk.
B. Tahap 1: Penentuan Entities
· produk: menyimpan semua informasi mengenai semua produk yang ditawarkan
· pemasok: menyimpan semua informasi mengenai semua pemasok
· nota_pembelian: menyimpan semua informasi mengenai semua transaksi pembelian produk dari pemasok
· gudang: menyimpan semua informasi mengenai gudang untuk penyimpanan produk
C. Tahap 2: Penentuan Attributes
· produk:
· kode_produk: kode unik untuk tiap macam produk (string) PK
· nama_produk: nama lengkap untuk produk (string)
· harga_jual: harga jual produk di toko (integer)
· pemasok:
· kode_pemasok: kode unik untuk tiap pemasok (string) PK
· nama_pemasok: nama lengkap untuk pemasok (string)
· alamat_pemasok: alamat lengkap untuk pemasok (string)
· nota_pembelian:
· no_nota: kode untuk mata kuliah (integer) PK
· tanggal: tanggal transaksi dilakukan (date)
· gudang:
· kode_gudang: kode untuk ruang kelas (string) PK
· alamat_gudang: alamat lengkap untuk gudang (string)
D. Tahap 3: Penentuan Relationships

Hubungan:
· produk disimpan di gudang:
· Tabel utama: produk, gudang
· Tabel kedua: stok_produk
· Relationship: Many-to-many (m:n)
· Attribute penghubung: kode_produk, kode_gudang (FK kode_produk, kode_gudang di stok_produk)
· produk tercatat di nota_pembelian:
· Tabel utama: produk, nota_pembelian
· Tabel kedua: rincian_nota_pembelian
· Relationship: Many-to-many (m:n)
· Attribute penghubung: kode_produk, no_nota (FK kode_produk, no_nota di rincian_nota_pembelian)
· pemasok tercatat di nota_pembelian:
· Tabel utama: pemasok
· Tabel kedua: nota_pembelian
· Relationship: One-to-many (1:n)
· Attribute penghubung: kode_pemasok (FK kode_pemasok di nota_pembelian)
E. Tahap 4: Pembuatan ERD
EER (Enhanced Entity Relationship) Diagram:
F. Tahap Implementasi
CREATE TABLE produk (
kode_produk varchar(20) PRIMARY KEY,
nama_produk varchar(45) UNIQUE,
harga_jual integer
);
CREATE TABLE pemasok (
kode_pemasok varchar(20) PRIMARY KEY,
nama_pemasok varchar(20) NOT NULL,
alamat_pemasok varchar(45) NOT NULL,
CHECK(nama_pemasok!=” AND alamat_pemasok!=”)
);
CREATE TABLE gudang (
kode_gudang varchar(20) PRIMARY KEY,
alamat_gudang varchar(45)
);
CREATE TABLE nota_pembelian (
no_nota serial PRIMARY KEY,
kode_pemasok varchar(20) REFERENCES pemasok(kode_pemasok),
tanggal date DEFAULT current_date
);
CREATE TABLE rincian_nota_pembelian (
kode_produk varchar(20) REFERENCES produk(kode_produk),
no_nota integer REFERENCES nota_pembelian(no_nota),
harga_satuan integer,
jumlah integer NOT NULL,
CHECK(jumlah>=20),
PRIMARY KEY(kode_produk, no_nota)
);
CREATE TABLE stok_produk (
kode_produk varchar(20) REFERENCES produk(kode_produk),
kode_gudang varchar(20) REFERENCES gudang(kode_gudang),
jumlah_stok integer NOT NULL,
CHECK(jumlah_stok<=200),
PRIMARY KEY(kode_produk, kode_gudang)
);
Model Dan Study Kasus Perancangan Database
PENGARUH DESAIN TERHADAP PENERAPAN EFEKTIFITAS
DATABASE MELALUI BEBERAPA CONTOH KASUS
Dalam suatu sistem informasi, landasan yang utama adalah database dan implementasi prgoram. Database yang tidak efektif dan implementasi program yang tidak terstruktur dapat mempengaruhi performansi sistem informasi tersebut. Pengaruh desain terhadap database sangatlah besar, termasuk desain data, tipe data maupun relasinya. Pembuatan desain yang tidak dibangun dengan cermat dapat menyebabkan hilangnya data yang dibutuhkan, data yang tidak konsisten, redundansi data, proses update yang lambat dan banyak hal lain. Untuk menghindari hal tersebut, dibuatlah beberapa contoh kasus yang dapat menunjukkan betapa pentingnya desain sebelum pembuatan database yaitu pembuatan logical data model. Dari contoh kasus yang diberikan, dapat dilihat bahwa desain mempengaruhi database yang akan dibentuk.
Salah satu langkah dalam membangun suatu sistem informasi adalah melakukan perancangan
database. Database merupakan jantung dari system informasi. Data harus tersedia ketika user ingin
menggunakan, data juga harus akurat dan konsisten. Selain dari requirement tersebut, tujuan dari desain database adalah efisiensi penyimpanan data dan efisiensi pembacaan maupun update data.
Database merupakan suatu koleksi data. Efektifitas dari database harus dapat memenuhi kebutuhan :
· memastikan data agar dapat diakses oleh banyak user pada banyak aplikasi,
· maintain data secara akurat dan konsisten,
· memastikan data yang dibutuhkan baik sekarang maupun yang akan datang dapat tersedia,
· database dapat memenuhi kebutuhan sesuai dengan pertumbuhan user dan
· database dapat memenuhi kebutuhan pembacaan data tanpa memperdulikan bagaimana data secara fisik tersimpan.
Dari pengamatan yang dilakukan penulis, masih ada beberapa orang yang memiliki tidak mempertimbangkan efektifitas dalam mendesain database. Untuk menjelaskan lebih lanjut pentingnya efektifitas database, dibuatlah beberapa contoh kasus dalam desain logical data model.
LOGICAL DATA MODEL
Logical data model merupakan pemodelan dari proses bisnis yang berfokus pada analisis data. Logical data model dibangun oleh tiga notasi yaitu entiti, atribut dan relasi. Entiti adalah tempat, obyek, kejadian maupun konsep pada lingkungan user dimana diperlukan maintain data pada organisasi tersebut. Atribut adalah karakteristik yang dimiliki tiap entiti. Relasi adalah hubungan asosiasi data antar entiti.
Beberapa hal yang perlu diperhatikan dalam pembuatan logical data model menurut Moss Larissa :
- Memeriksa definisi, semantik dan tipe data pada tiap entiti untuk mencari duplikasi obyek bisniskarena dapat tidak terlihat apabila nama yang digunakan berbeda.
- Memastikan tiap data pada entiti bahwa hanya memiliki satu pengenal yang unik (primary key), dimana termasuk apabila ada data lama yang dihapus dari database.
- Menggunakan aturan normalisasi untuk memastikan bahwa sebuah atribut hanya dimiliki oleh satu entiti saja.
- Mengadopsi aturan bisnis dengan obyek pada dunia nyata. Aturan bisnis ini memperlihatkan relasi data antar entiti.
Beberapa hal yang perlu diperhatikan dalam pembuatan logical data model menurut Elmasri Ramez :
- Semantic atribut
Bagaimana menggambarkan relasi yang dapat menggambarkan fakta yang ada.
- Memperkecil terjadinya data redundansi
Tujuan dalam pembuatan database adalah mengoptimalkan penyimpanan data.
- Memperkecil terjadinya nilai null pada data
Null value dapat menyebabkan penyimpanan data yang besar dan dapat terjadi kesalahpahaman dalam mengartikan suatu atribut. Null value dapat diinterpretasikan sebagai :
(1) atribut ini tidak dimiliki oleh data tersebut,
(2) nilai atribut tidak diketahui dan
(3) nilai atribut diketahui tetapi belum dicatat.
- Tiap entiti memiliki definisi/semantik yang jelas.
PENERAPAN LOGICAL DATA MODEL DALAM CONTOH KASUS
Contoh kasus 1
Gambar 1 menunjukkan relasi kepala departemen antara entiti Pegawai dengan Departemen adalah 1 : 1 yang berarti satu orang pegawai hanya dapat mengepalai satu departemen dan satu departemen hanya boleh dikepalai oleh satu orang pegawai. Dilihat dari kenyataan yang terjadi, relasi tersebut adalah benar karena tidak mungkin pada satu waktu, ada lebih dari satu pegawai yang mengepalai suatu departemen dan begitu pula sebaliknya.
Gambar 1. Relasi entiti Pegawai dan entitiDepartemen
Namun ternyata ketika terjadi pergantian kepala departemen, data kepala departemen yang lama sudah tidak dapat lagi diketahui. Dengan kata lain, database tidak menyediakan penyimpanan data masa lampau. Oleh karena itu, desain gambar 1 ditambahkan suatu entiti yang mencatat tanggal seorang pegawai menjabat suatu departemen, sehingga dapat ditelusuri siapa saja yang pernah menjabat menjadi kepala departemen suatu departemen (gambar 2).
Gambar 2. Penambahan entiti History Kepala Departemen
Apabila ruang lingkup ditambah dengan pencatatan setiap jabatan yang dipegang selama seorang pegawai, maka gambar 2 harus diubah lagi dengan memasukkan informasi pilihan jabatan yang mungkin dijabat seorang pegawai selain kepala departemen. Sebagai seorang pegawai pasti mempunyai sebuah jabatan, sehingga dari entiti history jabatan dapat diketahui departemen yang saat itu menaunginya. Oleh karena itu, relasi antara entiti Pegawai dengan entiti Departemen dapat dihilangkan.
Gambar 3. Perubahan entiti History Jabatan
Moss poin (d) dan Elmasri poin (a) menyatakan bahwa pembuatan model harus disesuaikan dengan fakta. Contoh kasus 1 memperlihatkan bahwa dalam melakukan desain perlu memastikan data apa saja yang dibutuhkan baik sekarang maupun yang akan datang dapat tersedia. Pada gambar 1 terdapat permasalahan yaitu tidak menyediakan penyimpanan data masa lampau. Kemudian yang kedua adalah apakah database dapat memenuhi kebutuhan sesuai dengan pertumbuhan user sebagaimana yang digambarkan pada gambar 3 yaitu bahwa jenis jabatan dapat semakin beragam, oleh karena itu dibuat sebuah entiti tersendiri.
Contoh kasus 2
Pada suatu database yang diakses oleh banyak user, perlu diperhatikan data mana saja yang boleh diakses seorang pegawai, data mana yang tidak boleh diakses oleh seorang pegawai. Seperti yang dilihat pada gambar 4, setiap pegawai berhak melihat history jabatannya masing-masing maupun milik pegawai lain, namun setiap pegawai (kecuali bagian penggajian) hanya boleh melihat data gaji miliknya sendiri.
Gambar 4. Pengaksesan history jabatan
Untuk memastikan data agar dapat diakses oleh banyak user pada banyak aplikasi maka perlu diperhatikan pemilihan database yang digunakan. Apabila ternyata database yang digunakan tidak mendukung management user, maka perlu disediakan entiti Hak Akses dan entiti Menu (gambar 5).
Gambar 5. Penambahan hak akses menu
Contoh kasus 2 memperlihatkan bahwa pemilihan database juga mempengaruhi desain database, antara lain adalah management user atau pemilihan tipe data, dimana tiap database menyediakan tipe data yang berbeda.
Contoh kasus 3
Seorang pegawai berprestasi akan dikaitkan dengan jabatan apa yang dimiliki pada saat itu, sehingga pada gambar 6 digambarkan bahwa entity Prestasi direlasikan dengan entiti History Jabatan.
Gambar 6. Entiti Prestasi berleasi dengan entity Jabatan
Ternyata prestasi tidak sepenuhnya melekat pada prestasi, namun sebenarnya lebih tepat apabila entiti Prestasi direlasikan dengan entiti Pegawai. Untuk mengetahui prestasi seorang pegawai didapat pada saat pegawai tersebut menjabat menjadi apa, dapat dilakukan proses query. Contoh kasus 3 memperlihatkan bahwa ketika mengadopsi aturan bisnis dengan obyek pada dunia nyata harus dilakukan dengan cermat, sehingga relasi yang dibuat menjadi tepat (Moss poin (d) dan Elmasri poin (a) dan memastikan bahwa tiap definisi/semantik menempel pada data yang sesuai (Moss (a) dan Elmasri (d)).
Gambar 7. Entiti Prestasi berelasi dengan entity Pegawai
Contoh kasus 4
Normalisasi penting dilakukan untuk memastikan bahwa sebuah atribut hanya dimiliki oleh satu entiti saja sehingga maintain data dapat dilakukan secara akurat dan konsisten. Data yang tidak ternormalisasi juga menyebabkan lambatnya proses update. Setiap prestasi seorang pegawai dinilai oleh beberapa penilai. Jumlah penilai tergantung pada jabatan yang dimiliki oleh pegawai yang berprestasi tersebut. Dilihat dari gambar 8, ternyata terjadi redundansi data, dimana terjadi perulangan data atribut No Urut, Nama Prestasi dan Tanggal Prestasi tiap ada nilai dari seorang penilai.
Gambar 8. Redundansi data pada entiti Prestasi
Gambar 8 dapat diubah menjadi gambar 9 untuk menghilangkan redundansi data.
Gambar 9. Pemisahan redundansi data pada entiti Penilaian Prestasi
Contoh kasus 4 memperlihatkan bahwa dalam melakukan desain perlu memperhatikan aturan normalisasi (Moss poin (c) dan Elmasri poin (b)), sehingga konsistensi data dapat terjamin. Proses update data akan menjadi lebih sulit apabila dilakukan pada desain database seperti gambar 8. Contoh data pada tabel Prestasi dari gambar 8 dapat dilihat pada tabel 1.
Tabel 1. Contoh data tabel Prestasi
Apabila terjadi kesalahan dalam pemasukan data atribut Nama Prestasi dari ’Technology Award 2003’ menjadi ’Technology Award 2004’, maka update harus dilakukan pada tiga record) dalam table Prestasi. Berbeda dengan data yang tersimpan dengan desain pada gambar 9, proses update hanya perlu dilakukan pada satu record saja.
Contoh kasus 5
Hal lain yang perlu diperhatikan adalah pemilihan atribut sebagai primary key (Moss poin (b)). Antara gambar 9 dengan gambar 10 terdapat perbedaan primary key untuk entiti Prestasi. Gambar 9 menghasilkan tabel Prestasi dengan primary key NIP pegawai dan No Urut. Sedangkan gambar 10 menghasilkan tabel prestasi dengan primary key Kode Prestasi. Pemilihan desain tergantung daripada desainer database. Apabila dicermati, Kode Prestasi pada tabel prestasi dapat dihilangkan karena dengan NIP Pegawai dan No Urut tidak menyebabkan kesulitan proses update data pada tabel Prestasi.
Gambar 10. Primay Key Tabel Prestasi adalah Kode Prestasi
Contoh kasus 6
Pendapat yang mengatakan bahwa semua table dalam suatu sistem informasi harus memiliki relasi adalah tidak sepenuhnya benar. Ada beberapa table yang memang harus berdiri sendiri karena table tersebut hanya sebagai tabel bantu.
Gambar 11. Entiti Range Nilai tidak harus berelasi dengan entiti lain
Hasil dari penilaian prestasi dari tiap penilai akan dikalkulasi sehingga menghasilkan nilai akhir (disimpan pada atribut Nilai Akhir pada entity Prestasi). Pada gambar 11 terdapat entiti Range Nilai yang menyimpan informasi ’arti’ tiap nilai akhir pada tiap prestasi. Entiti Range Nilai tidak perlu direlasikan dengan entiti Prestasi karena yang disimpan pada entiti Range Nilai merupakan informasi range nilai dan arti nilai, bukan menyimpan tiap nilai dan arti nilai. Sehingga entiti Range Nilai cukup berdiri sendiri.
Contoh kasus 7
Pembuatan relasi yang berlebihan juga menyebabkan redundasi data (Elmasri poin (b)). Gambar 12 memperlihatkan bahwa ada redundasi relasi dimana pada tabel Penilaian Prestasi disimpan atribut NIP Pegawai, padahal dari relasi dinilai (antara entiti Prestasi dengan entiti Penilaian Prestasi) dapat dicari pula NIP Pegawai yang dinilai prestasinya dengan menggunakan proses query. Sehingga relasi pegawai berprestasi harus dihilangkan untuk menghilangkan redundansi data.
Gambar 12. Redundasi relasi pada relasi pegawai berprestasi
Contoh kasus 8
Pemilihan bentuk desain dapat juga mempengaruhi penyimpanan nilai null pada data (Elmasri poin (c)). Pada gambar 13 terlihat bahwa Pegawai dibedakan menjadi dua jenis yaitu pegawai tidak tetap dan pegawai tetap. pegawai tidak tetap tidak akan memiliki history jabatan seperti pegawai tetap. Oleh karena itu, relasi menjabat seharusnya tidak direlasikan antara entiti Pegawai dengan entiti History Jabatan melainkan direlasikan antara entiti Pegawai Tetap dengan entiti History Jabatan.
Gambar 13. Redundasi relasi pada relasi pegawai berprestasi
Contoh kasus 9
Pemilihan tipe data juga merupakan hal yang penting dalam melakukan desain. Salah satu contohnya adalah tipe data antara character dengan variable character. Character(n) berarti menyimpan data sejumlah n karakter. Variable character(n) berarti menyimpan data sejumlah karakter yang dimasukkan. Oleh karena itu, untuk jumlah karakter data yang sama, digunakan tipe data character, seperti atribut NIP Pegawai. Sedangkan untuk atribut Nama Pegawai digunakan tipe data variable character.
Gambar 14. Pemilihan tipe data
Penggunaan tipe data pada gambar 14 untuk atribut Nama Prestasi pada entiti Prestasi menyebabkan penggunaan space yang tidak perlu setiap kali terjadi penambahan data dari tabel Prestasi. Tipe data atribut tersebut harus diubah dari Variable Character(50) menjadi Character(50).
KESIMPULAN
Berdasarkan dari pembahasan sebelumnya, maka dapat diambil kesimpulan yaitu :
1. Kesalahan yang sering terjadi dalam melakukan desain adalah
a. tidak mempersiapkan desain yang dapat digunakan pada perkembangan system di masa yang akan datang,
b. pembuatan relasi yang salah,
c. pembuatan relasi yang redundansi,
d. adanya redundansi data,
e. pemilihan primary key untuk suatu tabel dan
f. pemilihan tipe data.
2. Dalam mendesain logical data model harus memperhatikan database yang akan digunakan, proses bisnis pada sistem dan mempersiapkan desain yang dapat digunakan pada perkembangan sistem di masa yang akan datang.
Sumber : http://www.petra.ac.id/~puslit/journals/pdf.php?PublishedID=INF05060101.
PeRancaNgan Database
Posted on April 11, 2008 by krida
Pendahuluan perancangan Database :
Ø Tantangan dalam merancang database adalah bagaimana merancang sehingga database dapat memenuhi keperluan saat ini dan masa mendatang
Ø Perancangan Model Konseptual perlu dilakukan disamping perancangan model fisik
Proses perancangan basis data , dibagi menjadi 3 tahapan yaitu :
Ø Perancangan basis data secara konseptual, tahapan ini merupakan upaya untuk membuat model yang masih bersifat konsep..
Ø Perancangan basis data secara logis, merupakan tahapan untuk memetakan model konseptual kemodel basis data yang akan dipakai (modal relasional, hirarkis, atau jaringan). Perancangan ini tidak bergantung pada DBMS yang akan dipakai, itulah sebabnya perancangan basis data secara logis terkadang disebut pemetaan model data.
Ø Perancangan basis data secara fisis, merupakan tahapan untuk menuangkan perancangan basis data yang bersifat logis menjadi basis data fisis yang tersimpan pada media penyimpanan eksternal (yang spesifik terhadap DBMS yang dipakai ).
Pengembangan Sistem
Pengembangan system terdiri atas sederetan kegiatan yang dapat dikelompokan menjadi beberapa tahapan. Ada berbagai pembagian tahapan dalam pengembangan system yaitu :
Ø Metodologi yang disebut Waterfall atau air terjun yang membagi daur pengembangan system menjadi 6 tahapan : konsepsi, pendahuluan, analisis, perancangan, implementasi dan pengujian.
Ø McLeod mengemukakan 4 tahapan : perencanaan, analisis, perancangan dan implementasi.
Ø Fabbri dan Schwab membaginya menjadi 5 tahapan : studi kelayakan, rencana pendahuluan, analisis system, perancamgan system danimplementasi system.
Tahapan studi kelayakan
Tahapan ini merupakan identifikasi terhadap kebutuhan system baru, identifikasi tidak hanya didasarkan oleh kebutuhan-kebutuhan baru tetapi harus memperhatikan kebutuhan pada system yang sudah ada. Hasil tahapan ini berupa daftar kebutuhan, perkiraan biaya untuk membuat system baru dan juga solusi yang dikehendaki.
Tahapan rencana pendahuluan
Tahapan ini menentukan lingkup proyek atau system yang akan ditangani, hal ini digunakan untuk menentukan jadwal proyek. Biasanya dijabarkan dalam diagram aliran data (DAD). DAD menunjukan fungsi-fungsi dalam system, cara menggunakan informasi yang tersimpan dan pemindahan informasi antar fungsi didalam system.
Tahapan analisis system
Analis system sering berdialog dengan pengguna untuk memperoleh informasi detil kebutuhan pengguna. Kemudian hasil yang didapat dipakai sebagai bahan untuk menyusun DAD system baru. Untuk memperinci DAD, item-item yang terdapat pada aliran data dan juga yang terdapat pada penyimpanan data dijabarkan dalam bentuk kamus data. Kamus data adalah deskripsi formal mengenai seluruh elemen yang tercakup dalam DAD.
Tahapan perancangan system
Tahapan perancangan system dibagi menjadi 2 bagian :
- Perancangan basis data, merupakan langkah untuk menentukan basis data yang diharapkan dapat mewakili seluruh kebutuhan pengguna berdasarkan kamus aliran data yang telah dibuat. Proses perancangan basis data diantaranya adalah perancangan basis data konseptual yang terdiri atas 3 langkah yaitu :
Ø Penentuan entitas pada basis data
Ø Pendefinisian hubungan antarentitas
Ø Penerjemahan hubungan kedalam entitas
Entitas/tipe entitas/kelas entitas menyatakan objek atau kejadian.
Atribut/properti adalah item data yang menjadi bagian dari suatu entitas.
Hubungan adalah asosiasi atau kaitan antara dua entitas.
Kekangan digunakan untuk melindungi integritas data.
Domain adalah himpunan nilai yang berlaku bagi suatu atribut .
Integritas referensial adalah aturan-aturan yang mengatur hubungan antara kunci primer dengan kunci tamu milik tabel-tabel yang berada dalam suatu basis data relasional untuk menjaga kekonsistensian data.tujuan integritas referensial adalah untuk menjamin agar elemen dalam suatu tabel yang menunjuk kesuatu pengenal unik pada suatu baris pada tabel lain benar-benar menunjuk kesuatu nilai yang benar-benar ada. Macamnya ada 3 yaitu :
1. penambahan
2. penghapusan
3. peremajaan (update)
- Perancangan proses
Ada 3 hal yang perlu diperhatikan tentang entitas :
Ø Sebuah atribut bisa jadi merupakan suatu pengulangan(berisi sejumlah nilai, bukan hanya satu nilai)
Ø Sebuah atribut muncul pada beberapa entitas.
Ø Sebuah atribut barangkali sebuah karakteristik dari entitas atau atribut lain.
Selain diagram E-R, diagram lain yang sering dipakai adalah diagram struktur data yang menyerupai E-R. cirinya dengan adanya 2 panah identik. Setelah hubungan antar entitas diketahui maka akan diterjemahkan kedalam table, melalui 3 langkah :
1.. Penentuan kunci untuk entitas
2. Penerjemahan hubungan kedalam kunci tamu
3. Penormalisasian basis data
Penentuan kunci tidak sekedar metode untuk mengakses suatu baris tertentu tapi harus menjadi pengenal yang unik. Kunci terdiri dari beberapa macam, yaitu sebagai berikut :
Candidate Key
Ø Satu atribut atau satu set minimal atribut yang mengidentifikasikan secara unik dari sebuah entitas.
Ø Misalnya: File Karyawan (No Induk, Nama, Tempat Lahir, Tanggal Lahir, Alamat, Kota )
Ø Kunci Kandidat:
o No Induk, pasti unik
o Nama, sering dipakai sbg kunci pencarian tetapi tidak cocok utk key karena bisa ada nama yg sama
o Nama+Tanggal Lahir
o Nama+Tanggal Lahir+Tempat Lahir
o Alamat, Kota , tidak cocok untuk kunci
Primary Key
Ø Satu atribut atau satu set minimal atribut yg dapat mengidentifikasikan secara unik suatu kejadian spesifik dan dapat mewakili entitas
Ø Dipilih dari Candidate Key yang paling mewakili sebuah entitas secara unik
Ø Contoh: No Induk, karena unik tidak mungkin ada satu No Induk untuk lebih dari satu pegawai
Alternate Key (Kunci Alternatif)
Adalah kunci kandidat yang tidak dipakai sebagai primary key
Foreign Key (Kunci Tamu)
Ø Adalah satu (atau satu set) atribut yang melengkapi satu relationship yang menunjukkan ke induknya.
Ø Misalnya: File Transaksi Gaji (No Induk, Nomor Bukti, Tanggal, Gaji Kotor, Potongan, Gaji Bersih, Pajak)
o Foreign Key: No Induk
o Primary Key: Nomor Bukti
o Alternate Key: No Induk + Nomor Bukti
Teknik Normalisasi
Ø Proses normalisasi merupakan proses pengelompokkan data elemen menjadi tabel-tabel yang menunjukkan entity dan relasinya sehingga membentuk struktur relasi yang baik (tanpa redudansi).
Ø Pada proses normalisasi selalu diuji pada bbrp kondisi, apakah ada kesulitan dalam:
· Add/insert data; delete data; update data; dan retrieve data;
· Jika ada problem maka relasi perlu dipisahkan
Bentuk Normalisasi
Ø Unnormalized Form
Ø 1st Normal Form (1 NF)
Ø 2nd Normal Form (2 NF)
Ø 3rd Normal Form (3 NF)
Ø Boyce-Codd Normal Form (BCNF)
BENTUK-BENTUK NORMALISASI
Bentuk Tidak Normal (Unnormalized Form):
Ø merupakan kumpulan data yang akan direkam,
Ø tanpa format tertentu,
Ø bisa saja data tidak lengkap atau ada duplikasi
Ø Dikumpulkan apa adanya
Normal Pertama (1st Normal Form)
Aturan :
Ø Mendefinisikan atribut kunci
Ø Tidak adanya group berulang
Ø Semua atribut bukan kunci tergantung pada atribut kunci
Normalisasi Kedua (2nd Normal Form)
Aturan :
Ø Sudah memenuhi dalam bentuk normal kesatu
Ø Sudah tidak ada ketergantungan parsial, dimana seluruh field hanya tergantung pada sebagian field kunci.
Normalisasi Ketiga (3rd Normal Form)
Aturan :
Ø Sudah berada dalam bentuk normal kedua
Ø Tidak ada ketergantungan transitif (dimana field bukan kunci tergantung pada field bukan kunci lainnya).
Normalisasi Keempat
Ø Dikenal dengan nama: Boyce-Codd Normal Form (BCNF)
Ø Relasi harus dalam bentuk normal kesatu dan setiap atribut harus bergantung fungsi pada atribut superkey
Ø Relatif jarang digunakan
Tahapan implementasi system
Tahapan implementasi system mencakup pengkodean program, pengujian program, pemasangan program dan pelatihan pada pengguna. Setelah tahap ini berakhir maka akan sampai pada tahapan penggunaan aplikasi oleh pengguna.
Hello world!
Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!















