Category Archives: Dasar Basisdata (Database)

Pengetahuan Dasar VB.Net : Membuat laporan dengan Report Viewer dan Report Builder

[Draft]    test

Software yang digunakan pada artikel:  Visual Studio express 2013, database Sql Server express 2014 dan Report Builder 2014.

reportBuilder

Gambar 1. Aplikasi Report Builder untuk membuat dokument lamporan ( *.rdl )

 

Tahapan membuat Report dengan Report Viewer

  1. Buat dokumen Report  (*.rdl) dengan  Report Builder 2014
  2. Buat project baru dan drag and drop report viewer dari toolbox ke form
  3. tambahkan textbox dan button
  4. import namespace  untuk provider database yg dipakai dan report viwer
  5. Isi kode di artikel di bawah

report1

Gambar 2.  Tampilan Report viewer pada Form

kode program

Imports Microsoft.Reporting.WinForms
Imports System.Data.SqlClient

Public Class Form1

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

Me.ReportViewer1.RefreshReport()
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim CONN As New SqlConnection
CONN.ConnectionString = “Data Source=neng-pc\sqlexpress;Initial Catalog=dbPOS;Integrated Security=True ”
CONN.Open()

Dim DA As New SqlDataAdapter
Dim sql As New SqlCommand(“select * from TBLBARANG WHERE STOK >” + TextBox1.Text + “”, CONN)
Dim tabelDataku As New DataTable

DA.SelectCommand = sql
DA.Fill(tabelDataku)

Dim BS As New BindingSource
BS.DataSource = tabelDataku

Try
Dim RDS As New ReportDataSource(“DataSet1”, tabelDataku)

Me.ReportViewer1.LocalReport.ReportPath = “D:\reportku.rdl”
Me.ReportViewer1.LocalReport.DataSources.Clear()
Me.ReportViewer1.LocalReport.DataSources.Add(RDS)
Me.ReportViewer1.RefreshReport()
Catch ex As Exception
MsgBox(ex.Message)
End Try

CONN.Close()

End Sub

End Class


sumber : modul training VB.NET   MITRAFAY.COM

Advertisements

Pengetahuan Dasar pemrograman Database POSTGRESQL dengan VB.Net

[DRAFT]

Import Npgsql

Dim CONN As NpgsqlCONNection
Dim CMD As NpgsqlCMDand
Dim DA As NpgsqlDataAdapter

Dim DS As DataSet
DS = New DataSet
CONN = New NpgsqlCONNection(“Server=127.0.0.1;Port=5432;Userid=Test;password=test;SslMode=Disable”)
CMD = New NpgsqlCMDand
CMD.CONNection = CONN
CONN.Open()
CMD.CMDandType = CMDandType.Text
CMD.CMDandText = “SELECT * FROM “”Customers””;”
DA = New NpgsqlDataAdapter(CMD)
DA.Fill(DS)
dgCustomers.DataSource = DS
dgCustomers.DataBind()

CMD.Close()
CONN.Close()

Pengetahuan Dasar pemrograman Database dengan VB.Net

  • Apa itu ADO.net ?
  • Koneksi Database SQL Server dengan Sql Server data provider
  • Koneksi DataBase  dengan OLEDB Data Provider
  • Koneksi database dengan ODBC  data Provider

Mengenal ADO.NET

Pada pemrograman sebelum .NET (VB6), pengembang menggunakan teknologi akses data seperti ODBC, OLEDB, dan ActiveX Objek Data (ADO).  Untuk pemrograman VB.NET, Microsoft membuat teknologi baru menciptakan cara baru untuk bekerja  dengan database, yang disebut ADO.NET.  dan ADO.NET bukan kelanjutan ADO teknologi sebelum NET.

ADO.NET adalah sekumpulan Class  yang menyediakan  layanan akses data untuk programer .NET,  menyediakan seperangkat komponen  untuk membuat aplikasi  data yang didistribusikan.
ADO.NET adalah bagian integral dari .NET Framework yang menyediakan akses ke database .Class ADO.NET  ada di namespace  System.Data.dll

Didalam ADO.NET tersedia berrbagai  data provider spt OLEDB, ODBC dan data provider khusus untuk database tertentu spt untuk SQL server  dan oracle. Selain untuk database  juga tersedia data provider untuk XML.

XML digunakan untuk pertukaran data antar  system yg berbeda contoh sebuah system di linux dgn aplikasi  java dan mysql  akan bertukar data dgn system lain yg mengunakan  os windows dgn aplikasi  VB.NET dan MsAccess . Cara mudah pertukaran data antara dua system tsb  adalah data yg dipertukarkan  mempunyai format yang sama yaitu dlm  bentuk XML. Pada artikel ini sy tdk membahas tentang XML.

Arsitektur ADO.NET

Terdapat 2 kelompok  class utama dlm ADO.Net:
Pertama data provider :    digunakan  untuk koneksi  ke database .
Kedua adalah data set :  digunankan untuk menyimpan  sementara (catching) dan mengelola data . Dataset berupa tabel2 .  Lebih jelasnya bisa dilihat dlm arsitektur ADO.Net berikut ini:

adonet

gambar 1.  Arsitektur ADO.NET

Conected dan Disconected

ADO.NET  menyediakan mode conected dan disconected dlm mengelola database.  Pada Mode conected  client memodifikasi data dlm keadaan online  sedangkan mode disconected adalah fitur baru ADO.NET  gambaran mekanismenya antara lain  sbb: client membuka  koneksi ke server database kemudian   data disimpan di  buffer(dataset) client  lalu koneksi server diputus setelah  data diolah baru dibuat  lagi koneksi ke server untuk transfer data. model disconected  spt ini  sangat membantu karena bisa mengurangi trafik data dlm jaringan  terutama jika jumlah client sangat banyak

ARSITEKTUR

Gambar 2.   arsitektur ADO.NET
Object2 Dataprovider digunakan untuk menghubungkan aplikasi dgn database, mengeksekusi perintah dan mengambil data, menyimpannya dalam dataset, membaca data yang diambil dan memperbarui database.  object data provider  yang akan kita bahas adalah  bagian yg spt tampak berikut ini:

dataprovider

Melalui gambar  arsitektur diatas saya ingin memperjelas perbedaan cara mengases database dgn conected ( client dan server database tergubung terus selama  manipulasi data) dgn data reader. dan  disconected , pemilihan kedua  cara tsb tergantung  kebutuhan aplikasi yg kita buat. misalnya untuk mengisi datagridview maka kita gunakan data adafter dan data set sedangkan jika kita ingin mengambil satu baris atau beberapa baris data maka kita gunakan data reader.

berikut penjelasan singkat  bagian/object  yang ada di  ADO.NET

  1. Connection       :  Untuk koneksi ke database
  2. Command         :   melaksanakan perintah query sql
  3. DataReader      :   membaca data read only , data sedikit
  4. DataAdafter     :    membaca data dgn  membuat buffer/catch localy
  5. DataSet             :    tempat tampungan data output dataadafter

Connection
Komponen ini digunakan untuk mengatur koneksi dengan sebuah data source..

Command
command adalah pernyataan SQL atau prosedur yang tersimpan digunakan untuk mengambil, insert, delete atau update data dalam  sebuah data source. Method yang sering dipakai antara lain

  • ExcuteNonQuery : tdk menhasilkan output data (delete,insert,update)
  • ExcuteScalar : menghasilkan 1 data scalar (select count(*)  )
  • ExcuteReader : menghasilkan output 0 baris atau lebih (select )

DataReader
Datareader digunakan untuk mengambil data dari database dalam mode read-only dan mode forward.

DataSet
DataSet adalah representasi data di memori . dataset terputus dari database, ia menyimpan cached sejumlah record yang diambil dari database. Ketika sambungan dibuat dengan database, data adapter membuat dataset dan menyimpan data di dalamnya. Setelah data diambil dan disimpan dalam dataset, koneksi dengan database ditutup. Hal ini yg disebut  sebagai ‘arsitektur terputus/disconected’. dataset  bekerja sebagai database virtual yg berada di memori  yang berisi tabel.

DataAdapter
DataAdapter merupakan bagian integral dari kerja ADO.Net karena data ditransfer ke dan dari database melalui data adafter. Data adafter mengambil data dari database dan menyimpanya ke dalam dataset selain itu data adafter juga mengupdate database.
Ketika perubahan  terjadi di dataset, perubahan juga terjadi di dalam database yg  dilakukan oleh data adapter. berikut pilihan untuk membuat object dataadafter

Dim DA As SqlDataAdapter=New SqlAdapter
Dim DA As SqlDataAdapter=New SqlAdapter(cmd)
Dim DA As SqlDataAdapter=New SqlAdapter(sql,conn)
Dim DA As SqlDataAdapter=New SqlAdapter(sql,connstring)

dataprovider

Gambar 3.  blok diagram data provider

Tiap  data provider  mempunyai namespace masing2 yg ada di NET Framework antara lain :

  • data provider  untuk  SQL Server  namespacenya  : System.Data.SqlClient
  • data provider untuk  Oracle namespacenya              : System.Data.OracleClient
  • data provider untuk  ODBC namespacenya                : System.Data.Odbc
  • data provider  untuk  OLEDB namespacenya             : System.Data.OleDb

1. Data Provider  untuk  database SQL SERVER

Data Provider untuk database  SQL Server ada di namespace System.Data.SqlClient. Berikut ini  beberapa class class   yg sering digunakan   dlm namespace tsb :

  • SqlConnection: class yg digunakan untuk koneksi  ke database SQL Server
  •  SqlCommand   : class yg digunakan untuk mengeksekusi SQL query  atau  store procedures
  • SqlDataAdapter: class yg menghubungkan  dataset  dan  database SQL Server
  • SqlDataReader :  class yg digunakan untuk membaca database secara read only.

2. Data provider untuk  database ORACLE

Data provider  khusus  untuk database Oracle tersedia di namespace System.Data.OracleClient. Berikut ini  beberapa class class   yg disediakan  dlm namespace tsb  yg sering digunakan antara lain:

  • OracleConnection
  • OracleCommand
  • OracleDataAdafter
  • OracledataReader

3. Data provider  OLEDB  untuk database dg teknoogi yg lama ( ms access,  sql server versi < 7 )

OLEDB digunakan untuk database lama antara lain : Pradox, Dbase, MsAccess ,Mysql ,DB2 dan  sql server versi lama. selain itu  OLEDB juga digunakan ketika kita menggunakan 2 database yg berbeda   misal kita menggunakan MsAccess dan SQL server dlm satu aplikasi secara simultan.

Data provider OLEDB harus melalui beberapa layer untuk mengakses database. sehingga lebih efisien anda menggunakan data provider yg spesifik untuk tiap database. mial untuk Oracle gunakanlah data provider  yg ada di System.Data.OracleClient  bgitupun untuk SQL Server lebih efisien menggunakan data provider yg tersedia di System.Data.SqlClient dari pada anda menggunakan data provider OLEDB (System.Data.OleDb).

Class class yg digunakan oleh data provider OLEDB  (class class tsb ada di  namespace System.Data.OleDb)  antar lain:

  • OleDbConnection,  class untuk mengkoneksi  database
  • OleDbCommand,   class untuk  menjalankan  SQL query
  • OleDbDataAdapter, class untuk menghubungkan  dataset  dg database
  • OleDbDataReader,   membaca hasil output dari database

4. Data provider  ODBC  untuk berbagai database dg teknoogi yg lama

ODBC adalah teknologi akses data  “general purpose” asli Microsoft. ODBC masih banyak digunakan untuk sumber data yang tidak memiliki provider OLE DB atau data provider .NET Framework.
provider data ODBC ada di namespace System.Data.Odbc. Arsitektur ODBC pada dasarnya adalah proses tiga-tier. data provider ODBC kurang efisien daripada komunikasi langsung  dgn data provider  spesifik database  (sqlClient, mysqlClient, oracleClient ),  jadi  untuk kinerja lebih baik  hindari   provider data ODBC.
berikut ini beberapa class class  penting dalam namespace Odbc.

  • OdbcCommand
  • OdbcConnection
  • OdbcDataAdapter
  • OdbcDataReader
  • OdbcError
  • OdbcParameter
  • OdbcTransaction

Berikut tabel ringkasan class yang sering dipakai untuk tiap data provider

classdataprofider

Contoh  Kode Program

Sekarang waktunya kita akan lihat contoh konkrit  bagaimana aplikasi  VB.Net mengakses database secara “conected” dgn objek DataReader .


Contoh  aplikasi  mengakases database sql server dgn  data provider  SQL Server

Imports  System.Data.sqlClient

Dim CONN As New SqlConnection
conn.ConnectionString = “Data Source=.\sqlexpress;

Dim sql As String = “select * from tblKaryawan”
Dim DR As SqlDataReader = Nothing
CONN.Open()
Dim  CMD As New SqlCommand(sql, CONN)
DR = CMD.ExecuteReader()

While DR.Read()
Console.WriteLine(“{0} | {1}”,  DR(“FirstName”).ToString(),  DR(1).ToString())
End While

DR.Close()
CONN.Close()


Untuk menghubungkan aplikasi  vb.net  dg  database sql server selain dengan data provider  khusus untuk sql server spt diatas ( import System.Data.SqlClient) juga bisa dengan OLEDB ataupun dgn ODBC adapun  dimana letak perbedaan utamanya  bisa dilihat di table berikut ini:

perbedaan1

akan tetapi usahakan menggunakan provider spesifik untuk database   sebelum menetukan pilihan  kpd  data provider  OLEDB atau ODBC


Contoh Kode Program mengakses database SQL Server menggunakan data provider OLEDB

Import  System.Data.OLEDB

Dim CONN As New OleDbConnection
conn.ConnectionString = “Provider=sqloledb;Data Source=.\sqlexpress;”
Dim sql As String = “select * from tblKaryawan”
Dim DR As OleDbDataReader = Nothing
conn.Open()
Dim CMD As New OleDbCommand(sql, CONN)
DR = CMD.ExecuteReader()

While DR.Read()
Console.WriteLine(“{0} | {1}”,  DR(“FirstName”).ToString(),  DR(1).ToString())

End While

DR.Close()
CONN.Close()


Contoh Kode Program mengakses database SQL Server menggunakan data provider ODBC 

sebelumnya buat dsn ODBC melalui control panel

odbc

gambar  4.  Menu Membuat ODBC di control panel

Adapun step step selanjut  adalah sebagai berikut pd gambar dibawah ini:

odbcStep

Gambar 5. Langkah langkah membuat koneksi dsn ODBC

setelah selesai membuat  koneksi dsnODBC dengan bantuan menu di control panel baru kita buat program untuk menggunakan nya yaitu sbb:

import  System.Data.ODBC

Dim connString As String = “dsn=namaDsnODBC”

Dim sql As String = “select * from tblKaryawan”
Dim DR As OdbcDataReader = Nothing
Dim CONN As New OdbcConnection(connString)
CONN.Open()
Dim CMD As New OdbcCommand(sql, CONN)
DR = CMD.ExecuteReader()

While DR.Read()
Console.WriteLine(“{0} | {1}”,  DR(“FirstName”).ToString(),  DR(1).ToString())
End While

DR.Close()


contoh kode program VB.Net mengakses  database MYSQL menggunakan data provider khusus MYSQL 

data provider khusus MYSQL  menggunakan namespace MySql.Data.MySqlClient

https://pccontrol.wordpress.com/2014/12/17/pengetahuan-dasar-koneksi-vb-net-dan-database-mysql/

Kesimpulan  

  • data provider ODBC dan OLEDB bisa digunakan untuk mengakses berbagai macam database
  • tapi prioritaskan penggunaan data provider khusus yg sdh disediakan untuk database tsb .
  • cara akses database menggunakan ODBC dan OLEDB membutuhkan waktu akses lebih lama dibanding data provider khusus untuk database tsb.
  • Contoh perbedaan  data provider Sql Server dgn data provider OLEDB dlm mengakses database SQL server bisa dilihat pada gambar dibawah ini

perbedaanDataprovider

source:

Pengetahuan Dasar Koneksi VB.Net dan Database MYSQL

artikel ini adalah lanjutan dari  artikel  dasar pemrograman database dengan VB.NET  https://pccontrol.wordpress.com/2018/09/20/pengetahuan-dasar-pemrograman-database-dengan-vb-net/

Pengetahuan Dasar Koneksi VB.Net dan Database MYSQL

adonet

 

Karena Net Framework tdk menyediakan data provider untuk database MYSQL maka  untuk menghubungkan VB.Net dengan Database MYSQL  kita membutuhkan  mysql connector  untuk  aplikasi .NET (C# atau VB.Net)  yg bisa anda download di  http://dev.mysql.com/downloads/file.php?id=454512

Contoh Program

  • Buat tabel tabelContoh di database MYSQL
  • Buatlah project baru VB.Net
  • Tambahkan referensi  mysql.data.dll (klik menu add reference arahkan ke mysql.data )  lokasi  mysql.data.dll ada di C:\Program Files\MySQL\MySQL Connector Net 6.3.5\Assemblies\v2.0mysqladdref
  • buat modul (dgn  mengklik menu Project->Add Module) isi dgn code  sbb:

Imports MySql.Data.MySqlClient

Module Module1
Public CONN As MySqlConnection
Public DA As MySqlDataAdapter
Public DS As New DataSet
Public CMD As MySqlCommand
Public DR As MySqlDataReader
Public connString As String

Sub Koneksi()
connString= “server=” & “localhost” & “;” & “user id=” & “pccontrol” & “;” & “password=” & “xyz1234” & “;” & “database=test”

CONN = New MySqlConnection(connString)
CONN.Open()
End Sub
End Module

  • Pada form1 buat:
  • 3 tombol  ganti namanya menjadi  simpan , edit  dan hapus
  • 2 buah textbox : TextBox1 dan TextBox2
  • 1 buah Datagridview ganti namanya menjadi DGV
  • contohvbmysql
  • tambahkan kode berikut ke form1

Private Sub simpan_Click( ….)
Call Koneksi()
Dim simpan As String = “insert into tblKaryawan values(‘” & TextBox1.Text & “‘,'” & TextBox2.Text & “‘)”
CMD = New MySqlCommand(simpan, CONN)
CMD.ExecuteNonQuery()
End sub

Private Sub edit_Click( ….)

Dim edit As String = “update  tblKaryawan set  no='” & TextBox1.Text & “‘, nama='”TextBox2.Text & “‘ where no='” & TextBox1.Text & “‘”
CMD = New MySqlCommand(edit, CONN)
CMD.ExecuteNonQuery()

End sub

Private Sub hapus_Click( ….)

Call Koneksi()
Dim hapus As String = “delete from tblKaryawan where no='” & TextBox1.Text & “‘”
CMD = New MySqlCommand(hapus, CONN)
CMD.ExecuteNonQuery()

End sub

  • tambahkan kode untuk mengisi datagridview DGV sbb pada form1_load saat awal aplikasi dijalankan:

Call Koneksi()
DA = New MySqlDataAdapter(“select * from tblKaryawan”, CONN)
DS = New DataSet
DA.Fill(DS)
DGV.DataSource = DS.Tables(0)
DGV.ReadOnly = True

Lihat hasilnya dengan menekan tombol  F5

Sekarang kita tambahkan textbox3.text  untuk pencarian nama, setelah nama ditemukan maka data tsb ditampilkan di gridview DGV,    tambahkan kode berikut:

Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
Call Koneksi()
CMD = New MySqlCommand(“select * from tblKaryawan where nama = ‘ ”  & TextBox2.Text & ” ‘ “, CONN)
DR = CMD.ExecuteReader
DR.Read()
If DR.HasRows Then
Call Koneksi()
DA = New MySqlDataAdapter(“select * from tblkaryawan where nama = ‘ ” & TextBox2.Text & ” ‘ “, CONN)
DS = New DataSet
DA.Fill(DS)
DGV.DataSource = DS.Tables(0)
Else
MsgBox(“tidak ditemukan”)
End If
End Sub

Lihat hasilnya dengan menekan tombol  F5

referensi :

https://dev.mysql.com/doc/connector-net/en/

http://www.konsultasivb.com

http://www.tutorialspoint.com/vb.net/vb.net_database_access.htm

Pengetahuan Dasar Normalisasi Tabel Basis Data

Tulisan ini adalah bagian dari : Pengetahuan dasar Pengembangan Basis Data

Setelah Tabel tabel dibuat berdasar ER diagram maka tahap selanjutnya Tabel tabel tsb diperiksa validasinya  dan diperbaiki (normalisasi) struktur tabelnya.

Definisi Normalisasi 

Normalisasi adalah suatu teknik untuk memperbaiki struktur tabel dengan ketergantungan fungsional(KF) dan primary key . Perbaikan dengan memecah struktur tabel  ke dalam tabel-tabel  lebih kecil  secara bertahap untuk memenuhi kebutuhan pemakai di dalam suatu organisasi. Pemecahan tabel menjadi tabel tabel yg lebih kecil disebut dekomposisi.

Tujuan dari normalisasi

  • Untuk menghilangkan redudan( rangkap data) yg menyebabkan pemborosan memori. Data rangkap bisa dlm 1 tabel atau dalam banyak tabel.
  • Untuk mengurangi kompleksitas.
  • Untuk  menghindari anomali (ketidak konsistenan)  saat  update  data.

Proses Normalisasi

  1. Data diuraikan dalam bentuk tabel, selanjutnya dianalisis/diperiksa berdasarkan persyaratan tertentu ke beberapa tingkat (1NF, 2NF, 3NF  dst..).
  2. Apabila tabel yang diuji belum memenuhi persyaratan tertentu, maka tabel tersebut perlu dipecah menjadi beberapa tabel yang lebih sederhana sampai memenuhi bentuk yang optimal.

Pemeriksaan Normalitas Tabel

Tabel yang dikategorikan normal hanya tabel yg berisi kolom kolom  yg berkaitan erat. Erat tidaknya antara kolom-kolom dalam satu tabel dinyatakan dalam ketergantungan fungsional (KF).

Misal dalam satu tabel kolom kolom B ditentukan nilainya oleh kolom kolom A, maka ini disebut B tergantung dengan A atau dengan kata lain A menentukan nilai B disimbolkan dengan A -> B.  contoh

—————————————
|noKtp  |  nama     | tempatLahir    |
—————————————-
|10001   | Abdullah |   Jakarta |
|10002   | Fatih        |   Yogya    |
|10003   | Abdullah |  Makasar |
|10004  | Dadan       | Bandung |
————————————

Beberapa KF yg ada di tabel diatas antara lain

noKtp –> nama
kolom  nama ditentukan oleh no_ktp

noKtp –> alamat
kolom alamat ditentukan oleh no_ktp

noKtp,nama –> tempatLahir
kolom tempatLahir ditentukan oleh kolom noKtp dan kolom nama

Kolom-kolom  sebelah kiri tanda panah disebut determinan (penentu) dan kolom-kolom disebelah kanan tanda panah disebut non-determinan.

Jenis jenis Ketergantungan fungsional (KF)

1. Ketergantungan penuh (KF penuh) ,   jumlah determinannya memiliki jumlah minimum yg diperlukan untuk menjaga KF terhadap kolom non-determinannya.

Yang dimaksud dengan jumlah  kolom minimal  adalah “untuk menjaga suatu KF” adalah jika  satu kolom saja dihapus dari kolom kolom determinan maka maka KF tidak berlaku lagi.

nim       nama         matakuliah     nilai

1002   Abdullah     matematika       C

1003   Putri             statistik                A

1004   Budi              kalkulus               D

nim,matakuliah –>  nilai

adalah KF penuh karena jika salah satu kolom dari determinan dihilangkan  KF tsb tdk lagi  menjadi KF penuh. Nilai bergantung (ditentukan) oleh nim dan mataKuliah.

2. Ketergantungan Sebagian (KF parsial), kolom  non determinannya bergantung kepada minimal  satu kolom determinan, KF parsial bisa ditemukan  jika suatu tabel mengandung composite key.

3. Ketergantungan Transitif (KF transitif),  misal A,B,C adalah himpunan kolom , jika A–>B  dan B–>C   maka  C bergantung secara transitif terhadap A  .   B–>C  adalah KF transitif. contoh pada tabel diatas :

noktp–>nama  dan nama–>tempatLahir  maka

noKtp–>tempatLahir adalah KF transitif.

Tabel yang baik atau  normal adalah tabel yg hanya memiliki Kf penuh ( tidak terdapat KF parsial dan KF transitif) .

Tingkatan /level  sebuah tabel

  • Bentuk Tidak Normal,  pada level  ini tabel mempuyai kolom yg berisi nilai ganda .
  • Bentuk Normal Pertama (1NF), pada level ini tabel sudah tdk ada lagi kolom yg berisi nilai ganda. Bisanya tabel hasil pemetaan dari ERD sudah dlm bentuk 1NF.
  • Bentuk Normal Kedua (2NF), pada level ini tabel tdk ada KF parsial
  • Bentuk Normal Ketiga (3NF), pada level ini tabel tdk ada KF transitif
  • Bentuk Normal Boyce-Codd (BCNF)
  • Bentuk Normal Keempat (4NF)

Untuk perancangan sebuah database minimal level 3NF sudah cukup memadai

contoh 1. Tabel daftar nilai mahasiswa .

contohkf

Tabel diatas sudah dlm bentuk 1NF karena setiap cell  (perpotongan baris dan kolom) hanya terdiri dari 1 data.

KF yang ada di tabel tsb bisa kita lihat dengan diagram KF sbb:

contohdiagramkf

tabel tersebut mengandung composite key idMahasiswa dan kodeMatakuliah yg menyebabkan adanya KF parsial.

Daftar KF  yg ada pada tabel tsb antara lain :

1.  idMahasiswa –>nama,jurusan

2.  kodeMatakuliah –> mataKuliah, idDosen, namaDosen

3.  idMahasiswa, kodeMatakuliah –>nilai

Normalisasi   bentuk 1NF  tabel diatas ke bentuk 2NF .

Tabel 2NF adalah tabel tanpa adanya  KF parsial. jadi tahapan merubahnya

  1.  Cari  kunci gabungan (composite key) jika ada  kemudian periksa KF parsial.
  2.  Untuk tiap KF parsial buat tabel baru  dgn kolom kolomnya terdiri dari kolom determinan dan non determinan dari KF parsial dan jadikan kolom determinan sebagai key.

contohdiagramkf0

Contoh 2  merubah bentuk norml  tabel 1NF ke bentuk normal 3NF, tabel berikut mempunyai composite key noFaktur dan kodeBarang.

contohdiagramkf2

KF parsial yg ada di tabel tsb antara lain

1. kodeBarang–>namaBarang,qtyBarang,harga,unit

2. noFaktur–>tgl, idPelanggan, pelanggan, idPegawai, Pegawai

Tabel 1NF  di dekomposisi menjadi 5 buah tabel 3NF  yaitu tabel tabel dgn KF penuh.

Contoh 3

contohdiagramkf1

Membuat Tabel dari Diagram Relasi Entitas (ERD diagram)

Tulisan ini adalah bagian dari : Pengetahuan dasar Pengembangan Basis Data

Setelah kita selesai membuat diagram relasi antar entitas (ERD)  selanjutnya kita akan membuat tabel tabel yg saling berhubungan berdasarkan ERD tsb.

Untuk Membuat tabel dari ERD ada beberapa aturan (rule) yg sudah ditetapkan antara lain

  • Untuk setiap Entitas buatlah sebuah tabel , nama entitas menjadi nama tabel dan rubah setiap atributnya menjadi kolom. Atribut komposit  rubahlah atribut penyusunnya menjadi kolom. Atribut key jadi kolom primary key. contoh :
  • Untuk relasi  satu ke banyak tambahkan kolom primary key ke tabel pada sisi banyak(child). Jika relasi ada atributnya tambahkan Atribut tsb menjadi kolom di tabel child. contoh:
  •  Untuk relasi entitas  satu ke satu  (kedua  entitas  nilai minimal multiplicity =1 ) gabungkan ke dua entitas menjadi satu tabel  dan salah satu atribut keynya menjadi nprimary key. contoh :
  • Untuk relasi entitas  satu ke satu  (salah satu atau kedua entitas bernilai  minimal multiplicity nya   =0) . Buatlah masing masing entitas menjadi tabel , primary key entitas yg menpunyai multiplicity 0 di copy ke tabel lainya. contoh:
  • Untuk relasi entitas banyak ke banyak , rubahlah/buatlah masing masing entitas menjadi tabel  dan atributnya menjadi kolom. kemudian tambahkan 1 tabel  dgn kolomnya adalah gabungan primary key ke dua kolom sebelumnya ditambah kolomdari atribut dari relationships . contoh:

to be continue

Pengetahuan Dasar ER-Diagram (Diagram Relasi Entitas)

Artikel ini adalah bagian dari

 https://pccontrol.wordpress.com/2014/01/26/pengetahuan-dasar-pengembangan-basis-data-database-development/

Skema pemodelan data adalah metode(cara cara) yang memungkinkan kita untuk memodelkan atau menggambarkan Database. Perangkat permodelan ini sering dalam bentuk diagram grafis misalnya diagram ER atau ER diagram (ERD) .Diagram ER (ERD) adalah tool grafis yang memfasilitasi pemodelan data.

ERD adalah bagian dari “model semantik ” dalam database. model Semantik mengacu pada model yang bertujuan untuk memperoleh inti dari data. ERD bukan satu-satunya alat pemodelan semantik, tetapi ERD  yang sudah umum dan populer .  Alat bantu diagram database yg juga sudah banyak dipakai yaitu Diagram relasi database yg dipakai oleh database microsoft Access pada akhir artikel akan kita lihat perbedaanya dgn ER-diagram .

Istilah istilah yg akan dipakai dlm membuat ERD

* Entitas : objek objek yg memiliki karakteristik yg sama.

Entitas dikategorikan ada 2 jenis :

  • Entitas kuat, yitu entitas yg keberadaanya tdk tergantung entitas lain
  • Entitas lemah, yaitu entitas yg bergantung oleh keberadaan entitas lain.

* Atribut : karakteristik dari entitas .  misal atribut mahasiswa antara lain  nim,nama,umur,alamat dll.

Atribut dapat digolongkan menjadi

  • Atribut sederhana atau  atribut tunggal , memiliki komponen tunggal .
  • Atribut campuran, atribut yg disusun dari beberapa atribut. misal  atribut alamat terdiri dari no rumah, kode pos, kota dll.
  • Atribut bernilai tunggal, atribut yg mempuyai 1 nilai saja. misal nama,nim,umur dll.
  • Atribut bernilai jamak, atribut yg mempuyai lebih dari 1 nilai. misal no hp, nama anak dll.
  • Atribut Turunan, atribut yg nilainya berdasar atribut lain.
  • Atribut kunci, atribut bernilai unik  untuk membedakan antara 1 objek  dgn objek  lain misal nim, no ktp dll.

Jika satu entitas tdk punya atribut kunci maka atribut kunci bisa dibentuk dari dua atribut yg bukan kunci . atribut kunci yg seperti ini disebut atribut kunci  komposit. Contoh atribut kunci komposit  terdiri dari atribut nama dan tglLahir, kemungkinannya kecil orang yg bernama sama mempunyai tgl lahir yg sama. jadi dua  atribut ini kemungkinan selalu berbeda pada  tiap objek entitas.

* Multiplicity:  jumlah suatu objek yg mungkin diasosiasikan dgn objek entitas yg lain. yang menentukan multiplicity bukan desainer database tapi penentu kebijakan organisasi  atau user. multiplicity terdiri dari 2 jenis:

1. Batasan kardinalitas /nilai maksimal multiplicity   yaitu  one (satu) atau many (banyak)

2. Batasan partisipasi / nilai minimal multiplicity ()  yaitu mandatory (satu)  atau optional (nol)

*Relationships: hubungan diantara entitas.

Penulisan ERD  bisa dilakukan dgn beberapa notasi diantaranya notasi UML, Crows’s foot dan notasi Chen , pada artikel ini saya menggunakan notasi Crows’s foot karena tools yg  digunakan yaitu ER assistant menggunakan notasi tsb. Contoh ERD dgn notasi Crow’s Foot spt gambar dibawah ini:

erddiagram

gambar 1

multiplicity

gambar 2

Tahap tahap membuat ERD

1. Tentukan entitas utama

Cari kata benda yg menjadi perhatian utama pemakai dlm dokumen spesifikasi kebutuhan pemakai (dokumen ini adalah hasil dari  tahapan analisa kebutuhan database ).

Buatlah daftar entitas yg ditemukan.

2. Tentukan hubungan/relationships entitas.

– Carilah kata kerja yg menjadi perhatian utama dari pemakai dlm dokumen spesifikasi kebutuhan pemakai.

-Untuk setiap entitas periksa apakah ada hubungan yg menjadi perhatian pemakai.

Buatlah daftar relationships antar entitas yg telah ditemukan.

3. Tentukan multiplicity ( yg menentukan nilai ini adalah user bukan database desiner, didapat lewat interview)

4. Tuliskan masing masing atribut

5. Menggambar ERD  (dlm artikel  ini menggunakan ER assistant)
Contoh aplikasi gratis untuk  membuat ERD adalah ER asisstant

istilaherdgambar 3

Contoh sederhana  ER diagram universitas :

erdgambar 4

Contoh pembuatan ERD dgn bantuan ER asisstant

Kita akan membuat  diagram entitas sebuah universitas.

langkah pertama  klik menu insert->entities ,

tentukan entitas utama yg ada di universitas  antara lain  dosen,mahasiswa, matakuliah,

erdstep1gambar 5

Langkah kedua membuat atribut dgn cara klik menu insert->atributes

Form untuk membuat Atribut dari entitas yg sudah dibuat

formatributgambar 6

Langkah ketiga membuat relasi antara entitas, klik menu insert-relationships

relasi yg akan anda buat  spt ini :

contohrelasi

gambar 7

relasi

gambar 8

Pada menu pembuatan relationships anda juga harus menentukan

 -Nilai maksimal multiplicity (batasan kardinalitas)  yaitu  one (satu) atau many (banyak)  dan

– Nilai minimal multiplicity (batasan partisipasi)  yaitu mandatory (satu)  atau optional (nol)

erddiagramrelasi

gambar 9

Cara baca gambar diatas bisa dari arah kiri maupun dari arah kanan spt sudah dijelaskan pada gambar 2.

Klasifikasi kardinalitas

1.  One to many  1-M maksimum kardinalitas =1 pada satu sisi dan maksimum kardinalitas > 1 disisi yg lain.

2.  Many to many M-N ,maksimum kardinalitas > 1 dikedua sisi.

3. One to one  1-1   , maksimum kardinalitas =1 dikedua sisi.

Perbedaan ERD dgn diagram relasi pada MS Access

1. Diagram relasi ms access tdk menggunakan nama untuk relationship tapi menggunakan nama primary key sebagai penamaan relatuonshipnya.

2. Diagram relasi ms access hanya menampilkan nilai maksimum kardinalitasnya (satu-kebanyak,banyak kebanyak, dsb).

3. ERD mengijinkan entitas dan relationship mempunyai atribut, Diagram relasi ms access hanya mengijinkan antitas memiliki kolom2.

Pengetahuan Dasar Pengembangan Basis Data (Database Development)

untuk pemula sebaiknya baca dulu artikel https://pccontrol.wordpress.com/2011/06/14/mengenal-dasar-database/  https://pccontrol.wordpress.com/2011/08/18/dasar-merancang-tabel-relasi-antar-tabel-dan-data-integrity-dgn-mysql-c/

Dasar Pengembangan Basis Data

Tahapan Pengembangan Basis Data

1. Analisa Kebutuhan Basis data.

2. Perancangan Basis data.

3. Pembuatan Basis data.

********************************************

1. Analisa kebutuhan basis data

Untuk menganalisa  kebutuhan basis data dapat dilakukan dengan cara

*  Mengetahui bagian mana saja  dari organisasi yang membutuhkan basis data ,  untuk  hal ini kita bisa melihat dari struktur organisasi.

* Mengetahui Siapa saja pemakai basis data dari tiap bagian dari organisasi tsb , untuk hal ini kita bisa dapatkan dgn cara interview.

* Mengetahui Fakta-fakta aktualdilapangan terkait dgn :

–  sebenarnya apa sih tujuan dibangunnya basis data di organisasi tsb. Untuk apa (keuntungan)  dibangunya basis data  ?

– Kebutuhan pemakai terhadap basis data. Data apa saja yg perlu disimpan?

– Kebutuhan transaksi . Data akan diapakan ?   record, edit,  cari, lihat ?

– Kebutuhan sistem basis data .  spesifikasi  sistim basis data spt apa yg dibutuhkan sistem yg akan dibangun?

untuk hal  tsb diatas kita bisa dapatkan dgn cara interview , observasi dilapangan dan  pemeriksaan dokumen dokumen yg digunakan dilapangan dll

2. Perancangan Basis Data

-Membuat Hubungan antara Entitas  dgn ER-diagram (ERD)  , caranya baca disini

Membuat tabel tabel berdasarkan ER diagram (pemetaan ERD ke tabel).

Normalisasi  (perbaikan) Tabel tabel .

perbaikan tabel disini bertujuan menghilangkan  data redudan  (data yg sama ) dan anomali  data ( data yg membingungkan pada saat update data).

3. Tahap Implementasi

-Pembuatan basis data dan tabel tabelnya menggunakan aplikasi client atau tool dari RDBMS (mysql,oracle,posgresql ,MsAccess dll).   Satu contoh client mysql adalah phpmyadmin. Antara lain membuat database dan tabel  di dlm DBMS dgn SQL   “CREATE  ”

contoh membuat database dan tabel di DBMS   MySql

Nama database yg akan kita buat : perpustakaan

[root@host]# mysqladmin -u root -p create perpustakaan
Enter password:******

Nama tabel yg akan kita buat di dlm  database perpustakaan :  databuku_tbl

root@host# mysql -u root -p
Enter password:*******
mysql> use perpustakaan;
Database changed
mysql> CREATE TABLE databuku_tbl(
   -> buku_id INT NOT NULL AUTO_INCREMENT,
   -> buku_title VARCHAR(100) NOT NULL,
   -> buku_author VARCHAR(40) NOT NULL,
   -> PRIMARY KEY ( buku_id )
   -> );

to be continue

sumber:

Beginning Database Design  , Copyright © 2007 by Clare Churcher

http://www.esp.org/db-fund.pdf

Tujuh langkah praktis pembangunan basis data , Dr Said .MP

Pengetahuan Dasar ADO.NET C# untuk Pemrograman Database

Aplikasi yang kita buat seringkali menyertakan database  untuk menyimpan data  misalnya aplikasi monitoring temperatur , data temperatur harian atau per menit kita simpan di MsAccess , Mysql  atau yg lainya.  Untuk menghubungkan aplikasi berbasisi .NET (dot net) spt  C#, VB.net, ASPX dll  dengan berbagai database  dibutuhkan suatu penghubung  yaitu   ADO.NET . Pada masa sebelumnya  untuk menghubungkan aplikasi dgn database kita  menggunakan  ADO , OLEDB dan ODBC.

Mengenal ADO.NET

ADO.NET merupakan    kumpulan  class yang memberikan  akses ke database serta XML  ditujukan   buat para  programmer  .NET.   Class class  tsb merupakan bagian dari framework .NET  yg terletak  di namespace   system.data.dll

Didalam ADO.NET tersedia berrbagai  data provider spt OLEDB, ODBC dan data provider khusus untuk database tertentu spt untuk SQL server  dan oracle. Selain untuk database  juga tersedia data provider untuk XML.

XML digunakan untuk pertukaran data antar  system yg berbeda contoh sebuah system di linux dgn aplikasi  java dan mysql  akan bertukar data dgn system lain yg mengunakan  os windows dgn aplikasi  C# dan MsAccess . Cara mudah pertukaran data antara dua system tsb  adalah data yg dipertukarkan  mempunyai format yang sama yaitu dlm  bentuk XML. Pada artikel ini sy tdk membahas tentang XML.

Arsitektur ADO.NET

Terdapat 2 kelompok  class utama dlm ADO.Net:
Pertama data provider :    digunakan  untuk koneksi ke database .
Kedua adalah data set :  digunankan untuk menyimpan dan mengelola data. Lebih jelasnya bisa dilihat dlm arsitektur ADO.Net berikut ini:

adonet

Conected dan Disconected

ADO.NET  menyediakan mode conected dan disconected dlm mengelola database.  Pada Mode conected  client memodifikasi data dlm keadaan online  sedangkan mode disconected adalah fitur baru ADO.NET  gambaran mekanismenya antara lain  sbb: client membuka  koneksi ke server database kemudian   data disimpan di  buffer(dataset) client  lalu koneksi server diputus setelah  data diolah baru dibuat  lagi koneksi ke server untuk transfer data. model disconected  spt ini  sangat membantu karena bisa mengurangi trafik data dlm jaringan  terutama jika jumlah client sangat banyak

conected_disconected

Melalui gambar  arsitektur diatas saya ingin memperjelas perbedaan cara mengases database dgn conected ( client dan server database tergubung terus selama  manipulasi data) dgn data reader. dan  disconected , pemilihan kedua  cara tsb tergantung  kebutuhan aplikasi yg kita buat. misalnya untuk mengisi datagridview maka kita gunakan data adafter dan data set sedangkan jika kita ingin mengambil satu baris atau beberapa baris data maka kita gunakan data reader.

Connection
Komponen ini digunakan untuk mengatur koneksi dengan sebuah data source..

Command
command adalah pernyataan SQL atau prosedur yang tersimpan digunakan untuk mengambil, insert, delete atau update data dalam  sebuah data source.

DataReader
Datareader digunakan untuk mengambil data dari database dalam mode read-only dan mode forward.

DataSet
DataSet adalah representasi data di memori . dataset terputus dari database, ia menyimpan cached sejumlah record yang diambil dari database. Ketika sambungan dibuat dengan database, data adapter membuat dataset dan menyimpan data di dalamnya. Setelah data diambil dan disimpan dalam dataset, koneksi dengan database ditutup. Hal ini yg disebut  sebagai ‘arsitektur terputus/disconected’. dataset bekerja sebagai database virtual yg berada di memori  yang berisi tabel.

DataAdapter
DataAdapter merupakan bagian integral dari kerja ADO.Net karena data ditransfer ke dan dari database melalui data adafter. Data adafter mengambil data dari database dan menyimpanya ke dalam dataset selain itu data adafter juga mengupdate database.
Ketika perubahan  terjadi di dataset, perubahan juga terjadi di dalam database yg  dilakukan oleh data adapter

Data Provider
Dataprovider digunakan untuk menghubungkan aplikasi dgn database, mengeksekusi perintah dan mengambil data, menyimpannya dalam dataset, membaca data yang diambil dan memperbarui database.

sedangkan yang dimaksud data provider  adalah  bagian yg spt tampak berikut ini:

dataprovider

Tiap  data provider  mempunyai namespace masing2 yg ada di NET Framework antara lain :

– System.Data.SqlClient  :  data provider  untuk  SQL Server
– System.Data.OracleClient :   data provider untuk  Oracle
– System.Data.Odbc   :  data provider untuk  ODBC
-System.Data.OleDb  :  data provider  untuk  OLEDB

1. Data Provider  untuk  database SQL SERVER

Data Profider SQL Server ada di namespace System.Data.SqlClient. Berikut ini  beberapa class class   yg disediakan  dlm namespace tsb :
– SqlConnection: class yg digunakan untuk koneksi  ke database SQL Server
– SqlCommand   : class yg digunakan untuk mengeksekusi SQL query  atau  store procedures
– SqlDataAdapter: class yg menghubungkan  dataset  dan  database SQL Server
– SqlDataReader :  class yg digunakan untuk membaca database secara read only.

2. Data provider untuk  database ORACLE

Data provider  khusus  untuk database Oracle tersedia di namespace System.Data.OracleClient. Berikut ini  beberapa class class   yg disediakan  dlm namespace tsb :
– OracleConnection
– OracleCommand
– OracleDataAdafter
– OracledataReader

3. Data provider  OLEDB  untuk database dg teknoogi yg lama

OLEDB digunakan untuk database lama antara lain : Pradox, Dbase, MsAccess ,Mysql ,DB2 dan  sql server versi lama. selain itu  OLEDB juga digunakan ketika kita menggunakan 2 database yg berbeda   misal kita menggunakan MsAccess dan SQL server dlm satu aplikasi secara simultan.

Data provider OLEDB harus melalui beberapa layer untuk mengakses database. sehingga lebih efisien anda menggunakan data provider yg spesifik untuk tiap database. mial untuk Oracle gunakanlah data provider  yg ada di System.Data.OracleClient  bgitupun untuk SQL Server lebih efisien menggunakan dataprovider yg tersedia di System.Data.SqlClient dari pada anda menggunakan data provider OLEDB (System.Data.OleDb).

Class class yg digunakan oleh data provider OLEDB  (class class tsb ada di  namespace System.Data.OleDb)  antar lain:

–  OleDbConnection,  class untuk mengkoneksi  database
–  OleDbCommand,   class untuk  menjalankan  SQL query
–  OleDbDataAdapter, class untuk menghubungkan  dataset  dg database
–  OleDbDataReader,   membaca hasil output dari database

classdataprofider
=================teori end=========================

Sekarang waktunya kita akan lihat contoh konkrit  bagaimana aplikasi C# mengakses database secara “conected” dgn objek DataReader .

Contoh1 :   aplikasi console  C#  mengkases database sql server dgn  data provider  SQL Server (using System.Data.SqlClient )  :

using System;
using System.Data.SqlClient;   // namespace data provider sql server
namespace  ContohAksesSqlServer
{
  class ContohSqlServerProvider
  {
   static void Main(string[] args)
    {
   // buat string untuk koneksi
     string  stringKoneksi = @ &amp;quot; server =  .\sqlexpress;  integrated security = true;  database = perpustakaan &amp;quot; ;

    // buat query
    string SQL = @ &amp;quot; select * from  data_buku &amp;quot;;

    // deklarasikan objek  connection dan  data reader
    SqlConnection  koneksi_database = null;
    SqlDataReader  baca_data = null;
   try
    {
  // 1. buka koneksi ke database
     koneksi_database  = new SqlConnection(stringkoneksi);
   koneksi_database.Open();

    // 2. jalankan query
    SqlCommand cmd = new SqlCommand(SQL, koneksi_database);
    // tampilkan judul kolom data
      Console.WriteLine(&amp;quot;Judul buku \t  Pengarang\n&amp;quot;);

    // 3. proses output table

     baca_data = cmd.ExecuteReader();
    while(baca_data.Read())
     {
    Console.WriteLine(&amp;quot;{0} | {1}&amp;quot;, baca_data[0].ToString(baca_data[1].ToString());
     }
    }
  catch (Exception e)
     {
     Console.WriteLine(&amp;quot;Error: &amp;quot; + e);
      }

finally
    {
     //4.  Tutup Koneksi
   koneksi_database.Close();
    }
}
}

Untuk menghubungkan aplikasi C# dng  database sql server selain dengan data provider  khusu untuk sql server spt diatas ( using System.Data.SqlClient) juga bisa dengan OLEDB ataupun dgn ODBC adapun  dimana letak perbedaan utamanya  bisa dilihat di table berikut ini:

perbedaan1

Contoh2 :  Koneksi Aplikasi C#  dg database MsAccess  menggunakan data provider OLEDB (using System.Data.OleDb;)

 https://pccontrol.wordpress.com/2011/08/05/contoh-koneksi-c-dengan-ms-access-2003-mdb-dan-2007-accdb/

contoh3 : koneksi aplikasi C# dengan MYSQL  menggunakan data provider milik mysql  (using MySql.Data.MySqlClient;)

https://pccontrol.wordpress.com/2011/04/28/pemrograman-c-dengan-mysql/

contoh4:  VB.Net dengan database MYSQL

https://pccontrol.wordpress.com/2014/12/17/pengetahuan-dasar-koneksi-vb-net-dan-database-mysql/

Dasar Merancang Tabel , Relasi antar Tabel dan Data Integrity dgn MYSQL – C#

Buat anda yang sedang atau pernah  kuliah di informatika mungkin artikel ini tdk terlalu berguna. Artikel ini saya tujukan buat anda yang belum pernah mempelajari dasar membuat  tabel di dalam sebuah database.

Merancang Tabel

Penjelasan tujuan perancangan tabel di dalam database diantaranya bisa dilihat pada contoh berikut:

Misalnya pada sebuah manufacture yang memproduksi  Televisi , mempunya tabel output produksi sbb:

no LINE TGL WAKTU MODEL SIZE Tujuan
 1 A  4/27/2010  09:03:22 AAA 14 Australia
2 A 4/27/2010  09:04:21 AAA 14 Australia
3 B 4/27/2010  09:05:13 ABC 21 Pilipina
4 B 4/28/2010  09:05:34 ABC 21 Pilipina
5 B 4/28/2010  09:06:22 ABC 21 Pilipina

TABEL 1

Tabel diatas sepertinya tampak biasa saja bagi anda yang belum pernah mempelajari dasar dasar merancang tabel / database. Tapi sebenarnya tabel diatas bukanlah tabel yang baik.  Kekurangan dari tabel diatas antara lain:

– Jika pada hari itu tdk ada produksi di line B , maka kita akan kehilangan informasi ttg model ABC.   ini disebut anomali.

– Jika saya ingin mengganti  data kolom  Tujuan  untuk  model ABC  dari Pilipina ke Banglades maka semua tujuan pd tiap  baris harus diganti satu persatu. begitu juga  jika size ingin dirubah maka semua data size  tiap baris harus dirubah. hal ini tentu bukan cara  yg efisien.

– Adanya  data yang sama di input berulang,   data size dan tujuan  untuk model yg sama akan diinput kembali  pada tiap baris  hal ini disebut redudant .  ini memboroskan  lokasi memori tempat menyimpan data.

Tabel yang baik tdk mengandung anomali ataupun redudant.

Untuk  memperbaiki tabel diatas,   hilangkan anomali dan redudant. Salah satu caranya adalah dengan membuat tabel di atas menjadi 2 tabel sbb:

Tabel MasterModel :

idmodel MODEL SIZE Tujuan
 01A AAA 14 Australia
01B AAA 14 Belgia
02A ABC 21 Jepang
02B ABC 21 Rusia
02C ABC 21 Pilipina

TABEL 2

Tabel OutputProduksi :

idmodel TGL WAKTU LINE
 01A   4/27/2010  09:03:22 A
01B  4/27/2010   09:04:21 A
02C  4/27/2010 09:05:13  B
02C  4/28/2010   09:05:34 B
02C  4/28/2010 09:06:22 B
02C  4/29/2010 09:06:22 A
02C  4/29/2010 09:06:22 A
02B  4/29/2010 09:06:22 B
02B  4/30/2010 09:06:22 B
01A  4/30/2010 09:06:22 A
02C  4/30/2010 09:06:22 A

TABEL 3

Setelah tabel 1 dipecah menjadi  dua tabel yaitu tabel 2 dan tabel 3 maka :

– Jika kita ingin merubah data pada model , size  atau  data pd kolom tujuan kita cukup sekali saja merubahnya yaitu pada tabel 2.

–  Jika tdk ada produksi pada tgl berapapun data informasi model tdk  akan hilang  dan tetap ada di tabel 2.

– Data output produksi menjadi lebih hemat memori karena kolom  model size dan tujuan tdk diikutkan dalam tabel output produksi.

Yang  jadi pertanyaan  sekarang adalah dari mana aplikasi tahu kalau tabel 3 mempunyai hubungan /relasi dengan tabel 2?

Pada contoh di atas idmodel pada tabel 3 mengacu pada idmodel pada tabel2.

kesimpulan yg bisa diambil dari  hubungan/relasi   antara tabel 2 dan tabel3 :

  • pertama : data dalam kolom  idmodel pada tabel2 tdk boleh kosong ( ketika kolom lain ada isinya) atau istilahnya NOT NULL.  contoh  pada baris kedua data pada tabel dibawah ini.
idmodel MODEL SIZE Tujuan
 01A AAA 14 Australia
AAA 14 Belgia
02A ABC 21 Jepang


  • kedua :  data dalam kolom idmodel tabel2  tidak boleh ada yg sama. contoh pada tabel dibawah ini data kolom idmodel ada yg sama hal ini tdk di izinkan.
idmodel MODEL SIZE Tujuan
 01A AAA 14 Australia
 01A AAA 14 Belgia
 02A ABC 21 Jepang
  • kolom idmodel pada tabel 3 mengacu pada idmodel tabel 2 dan isinya boleh kosong  atau NULL.

Dalam istilah database,  kolom  idmodel pada  tabel 2 disebut  Primary Key  yaitu  kolom yang unik sebagai indentitas record dlm sebuah tabel  dan idmodel pada tabel 3 disebut Foreign Key.

Untuk membuat  Tabel2  dengan Primary key dan tabel 3 dgn  Foreign Key  perintah nya  SQL untuk database mysql seperti dibawah ini:

CREATE TABLE MasterModel(
idmodel  INT  NOT NULL PRIMARY KEY,
MODEL    VARCHAR(50),
SIZE     VARCHAR(50),
Tujuan   VARCHAR(50),
);

Sedangkan untuk membuat tabel 3 dengan idmodel sebagai Foreign key
CREATE TABLE OutputProduksi(
idmodel FOREIGN KEY REFERENCES MasterModel(idmodel))
TGL    DATE,
WAKTU  TIME,
LINE   VARCHAR(10)
);
Baris perintah diatas memberitahu DBMS bahwa terjadi hubungan antara tabel sbb:

Relasi antara tabel

Data Integrity (integritas data) 

Data integrity  artinya data di database  benar dan konsisten. Ada dua aspek yang membentuk data integrity yaitu:

  • Entity Integrity  (EI) :  Bahwa nilai data pada primary key harus ada dan nilainya tdk boleh ada yang sama. DBMS (database managamen system spt SQL Server, MYSQl dll)  memberlakukan  EI  dgn tdk mengijinkan operasi INSERT atau UPDATE dan  menghasilkan pesan kesalahan jika ada Nilai kosong atau sama. Untuk membuat EI anda harus mendefinisikan kolom yg dijadikan Primary Key.
  • Referensial Integrity  adalah konsep database yang memastikan bahwa hubungan antara tabel tetap konsisten.  Misalnya Pada contoh hubungan tabel MasterModel dan OutputProduksi. Kita tidak bisa menghapus data model di tabel MasterModel, karena data tsb terkait ke tabel OutputProduksi.

to be continyu

referensi:

http://functionx.com/mysqlnet/csharp/Lesson12.htm