Nama : Oktava Nur Hidayat
NIM : 23100273
A. LANDASAN TEORI
BASIS DATA (Bahasa Inggris: database), atau sering pula dieja basisdata, adalah kumpulan informasi yang disimpan di dalam komputer secara sistematik sehingga dapat diperiksa menggunakan suatu program komputer untuk memperoleh informasi dari basis data tersebut. Perangkat lunak yang digunakan untuk mengelola dan memanggil kueri (query) basis data disebut sistem manajemen basis data (database management system, DBMS). Sistem basis data dipelajari dalam ilmu informasi. Istilah "basis data" berawal dari ilmu komputer. Meskipun kemudian artinya semakin luas, memasukkan hal-hal di luar bidang elektronika, artikel ini mengenai basis data komputer
Dalam database (mysql) dikenal beberapa istilah yaitu primary key, foreign key, unique dan index. Menurut Om Wiki, Primary Key atau Unique Key merupakan kunci yang secara unik mengidentifikasi baris pada tabel. Primary Key atau Unique Key dapat diterapkan pada satu atau lebih field. Apabila primary key / unique key diterapkan pada satu atau lebih field maka pada field tersebut tidak boleh bernilai sama untuk seluruh baris pada tabel. Kemudian yang membedakan primary key dan unique key adalah setiap kita memberikan constraint primary key pada field maka constraint NOT NULL akan diberikan pada field tersebut secara otomatis, sedangkan pada unique key tidak.
Selain kedua istilah diatas, terdapat juga istilah foreign key. Dengan adanya foreign key dapat terlihat adanya hubungan antara satu tabel dengan tabel lain. Foreign key mengidentifikasi satu atau lebih kolom pada satu tabel (tabel referensi) mengarah dari satu atau lebih tabel lainnya (tabel induk). Dengan adanya constraint foreign key pada satu kolom maka data pada kolom tabel referensi harus terdapat pada tabel induk. Pada mysql 5.0, foreign key hanya dapat diterapkan pada tabel dengan type InnoDB namun pada versi selanjutnya dapat diterapkan juga pada MyIsam. Kemudian field dengan tipe BLOB atau TEXT tidak dapat diberikan contraint foreign key.
Untuk mengoptimasi database kita dapat menggunakan index, karena index mampu meningkatkan kecepatan operasi pada suatu tabel (terutama operasi SELECT). Pada mysql, index dan data dari suatu tabel tersimpan secara terpisah, dengan kata lain membutuhkan ruang penyimpanan yang lebih banyak, kesalahan pemberian index pada suatu kolom dapat memperlambat operasi pada suatu tabel, karena index dibaca terlebih dahulu untuk mendapatkan data. Gunakan foreign key pada kolom yang sering digunakan untuk pencarian data.
B. PERMASALAHAN
1. Membuat tabel akun, barang, jenisbarang, beli, detailbeli, jual, detailjual, jurnal, detailjurnal, pelanggan, suplier
2. Membuat relasi antar tabel
3. Membuat Index
4. Membuat Foreignkey
C. PEMBAHASAN
-- --------------------------------------------------------
--
-- Table structure for table `akun`
--
CREATE TABLE `akun` (
`kodeakun` varchar(6) NOT NULL,
`namaakun` varchar(50) default NULL,
`saldonormal` enum('D','K') default NULL,
`jenisrekening` enum('Real','Nominal') default NULL,
`kodeparent` varchar(6) default NULL,
`kelompokrekening` enum('AKTIVA','HUTANG','MODAL','PENDAPATAN','BIAYA') default NULL,
PRIMARY KEY (`kodeakun`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `akun`
--
-- --------------------------------------------------------
--
-- Table structure for table `barang`
--
CREATE TABLE `barang` (
`kodebarang` varchar(10) NOT NULL,
`kodejenis` smallint(6) NOT NULL,
`barcode` varchar(20) NOT NULL,
`namabarang` varchar(50) NOT NULL,
`hargajual` double NOT NULL,
`hargabeli` double NOT NULL,
`diskon` double NOT NULL,
PRIMARY KEY (`kodebarang`),
KEY `kodejenis` (`kodejenis`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `barang`
--
-- --------------------------------------------------------
--
-- Table structure for table `beli`
--
CREATE TABLE `beli` (
`nomorbeli` int(10) NOT NULL auto_increment,
`tanggal` date NOT NULL,
`carapembayaran` varchar(10) NOT NULL,
`statusbayar` varchar(10) NOT NULL,
`diskon` double NOT NULL,
`kodesupply` int(10) NOT NULL,
PRIMARY KEY (`nomorbeli`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
-- Dumping data for table `beli`
--
-- --------------------------------------------------------
--
-- Table structure for table `detailbeli`
--
CREATE TABLE `detailbeli` (
`nomorbeli` int(10) NOT NULL,
`kodebarang` varchar(20) NOT NULL,
`harga` double NOT NULL,
`qty` int(2) NOT NULL,
`diskon` double NOT NULL,
KEY `nomorbeli` (`nomorbeli`),
KEY `kodebarang` (`kodebarang`),
KEY `nomorbeli_2` (`nomorbeli`),
KEY `kodebarang_2` (`kodebarang`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `detailbeli`
--
-- --------------------------------------------------------
--
-- Table structure for table `detailjual`
--
CREATE TABLE `detailjual` (
`nomorjual` int(10) NOT NULL,
`kodebarang` varchar(10) NOT NULL,
`harga` double NOT NULL,
`qty` int(2) NOT NULL,
`diskon` double NOT NULL,
KEY `kodebarang` (`kodebarang`),
KEY `nomorjual` (`nomorjual`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `detailjual`
--
-- --------------------------------------------------------
--
-- Table structure for table `detjurnal`
--
CREATE TABLE `detailjurnal` (
`nojurnal` int(11) NOT NULL default '0',
`kodeakun` varchar(6) NOT NULL,
`dk` enum('D','K') default NULL,
`jumlah` int(11) default NULL,
PRIMARY KEY (`nojurnal`,`kodeakun`),
KEY `kodeakun` (`kodeakun`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `detjurnal`
--
-- --------------------------------------------------------
--
-- Table structure for table `jenisbarang`
--
CREATE TABLE `jenisbarang` (
`kodejenis` smallint(6) NOT NULL auto_increment,
`namajenis` varchar(30) NOT NULL,
`keterangan` varchar(256) NOT NULL,
PRIMARY KEY (`kodejenis`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
--
-- Dumping data for table `jenisbarang`
--
INSERT INTO `jenisbarang` (`kodejenis`, `namajenis`, `keterangan`) VALUES
(1, 'alat', 'kjokhki');
-- --------------------------------------------------------
--
-- Table structure for table `jual`
--
CREATE TABLE `jual` (
`nomorjual` int(10) NOT NULL,
`tanggal` date NOT NULL,
`carapembayaran` varchar(10) NOT NULL,
`statusbayar` varchar(10) NOT NULL,
`diskon` double NOT NULL,
`kodepelanggan` varchar(10) NOT NULL,
PRIMARY KEY (`nomorjual`),
KEY `nomorjual` (`nomorjual`),
KEY `kodepelanggan` (`kodepelanggan`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `jual`
--
INSERT INTO `jual` (`nomorjual`, `tanggal`, `carapembayaran`, `statusbayar`, `diskon`, `kodepelanggan`) VALUES
(0, '2012-02-28', 'tunai', 'sd', 0, 'P001');
-- --------------------------------------------------------
--
-- Table structure for table `jurnal`
--
CREATE TABLE `jurnal` (
`nojurnal` int(11) NOT NULL,
`keterangan` varchar(255) default NULL,
`notransaksi` int(11) default NULL,
`nobukti` varchar(20) default NULL,
`jenistransaksi` enum('Jual','Beli') default NULL,
PRIMARY KEY (`nojurnal`),
KEY `notransaksi` (`notransaksi`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `jurnal`
--
-- --------------------------------------------------------
--
-- Table structure for table `pelanggan`
--
CREATE TABLE `pelanggan` (
`kodepelanggan` varchar(10) NOT NULL,
`namapelanggan` varchar(50) NOT NULL,
`alamat` text NOT NULL,
`notelp` varchar(15) NOT NULL,
`jenispelanggan` int(11) NOT NULL,
PRIMARY KEY (`kodepelanggan`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `pelanggan`
--
INSERT INTO `pelanggan` (`kodepelanggan`, `namapelanggan`, `alamat`, `notelp`, `jenispelanggan`) VALUES
('P001', 'Adi', 'Jogja', '97587436', 0);
-- --------------------------------------------------------
--
-- Table structure for table `suplier`
--
CREATE TABLE `suplier` (
`kodesupply` int(10) NOT NULL auto_increment,
`namasupply` varchar(50) NOT NULL,
`alamat` text NOT NULL,
`notelp` varchar(15) NOT NULL,
PRIMARY KEY (`kodesupply`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Tidak ada komentar:
Posting Komentar