Basis data (atau database) adalah kumpulan informasi yang disimpan di
dalam komputer secara sistematik sehingga dapat diperiksa menggunakan suatu program komputer untuk memperoleh informasi dari basis data tersebut (http://id.wikipedia.org/wiki/Database). Database digunakan untuk menyimpan informasi atau data yang terintegrasi dengan baik di dalam komputer. Database Management System (DBMS) atau Sistem Manajemen Basis Data (SMBD). Basis data adalah kumpulan data yang dihubungkan oleh beberapa aspek. Data adalah kumpulan fakta dan angka yang dapat diproses untuk menghasilkan informasi. Nama siswa, usia, kelas, dan mata pelajarannya dapat dihitung sebagai data untuk tujuan perekaman. Sebagian besar data mewakili fakta yang bisa direkam. Alat bantu data dalam menghasilkan informasi yang didasarkan pada fakta. Sebagai contoh, jika kita memiliki data tentang nilai yang diperoleh semua siswa, kita dapat menyimpulkan tentang nilai tertinggi dan nilai rata-rata dll. Sistem manajemen basis data menyimpan data, sedemikian rupa sehingga lebih mudah untuk mengambil, memanipulasi dan membantu menghasilkan informasi.
1.2 User/Pengguna
DBMS digunakan oleh berbagai pengguna untuk berbagai keperluan.
Beberapa mungkin terlibat dalam pengambilan data dan beberapa mungkin terlibat dalam membuat cadangannya. Beberapa pengguna dijelaskan sebagai berikut: A. Administrator Sekelompok pengguna mempertahankan DBMS dan bertanggung jawab untuk mengelola database. Mereka bertanggung jawab untuk menjaga penggunaannya dan oleh siapa penggunaannya. Mereka membuat akses pengguna dan menerapkan batasan. Administrator juga menjaga sumber daya DBMS seperti lisensi sistem, aplikasi perangkat lunak, dan peralatan yang diperlukan serta pemeliharaan terkait perangkat keras lainnya. Contoh : Sebagai seorang Oracle Database Administrator (DBA), Anda dapat terlibat dalam tugas-tugas umum oracle database administration berikut ini: (1) Menginstall perangkat lunak Oracle Database, (2) Membuat dan membangun database Oracle Database, (3) Melakukan upgrade dari database dan perangkat lunak untuk versi rilis yang baru, (4) Start dan stop database Oracle, (5) Mengelola struktur penyimpanan database oracle, (6) Mengelola pengguna dan keamanan di database oracle, (7) Mengelola object schema, seperti tabel, indeks, dan view, (8) Membuat backup database Oracle dan melakukan pemulihan/restore database bila diperlukan, (9) Proaktif memantau kesehatan database oracle dan mengambil tindakan preventif atau korektif yang diperlukan, (10) Monitoring dan tuning kinerja database oracle [1]. B. Designer Desainer adalah sekelompok orang yang benar-benar bekerja merancang bagian basis data. Basis data aktual dimulai dengan analisis kebutuhan yang diikuti oleh proses perancangan yang baik. Orang-orang mengawasi dengan cermat data apa yang harus disimpan dan dalam format apa. Mereka mengidentifikasi dan merancang seluruh rangkaian entitas, hubungan, kendala, dan views. Berikut ini merupakan point-point database sql, perhatikan dalam melakukan design database, baik menggunakan database oracle, database ms sql server, database mysql, dan beragam database dengan Relational Database Management System (RDBMS) lainnya. Berikut ini point-point penting database sql [1] :
1) Gunakanlah pendefinisian dengan baik dan konsisten untuk nama-nama
tabel dan kolom (misalnya sekolah, StudentCourse, CourseID ...). 2) Gunakan singular atau tunggal untuk nama tabel (yaitu menggunakan StudentCourse bukan StudentCourses). Pada design database ini, tabel merupakan koleksi entitas, tidak ada kebutuhan untuk nama plural atau jamak. 3) Usahakan saat melakukan design database untuk jangan pernah menggunakan spasi untuk nama tabel. Jika tidak, maka anda akan harus menggunakan tanda / karakter '{', '[', '"' dll untuk mendefinisikan tabel (yaitu untuk mengakses tabel Student Course Anda akan menulis " Student Course ". Akan jauh lebih baik apabila anda menuliskannya sebagai StudentCourse). 4) Jangan menggunakan awalan ataupun akhiran yang tidak perlu untuk nama tabel (yaitu menggunakan School bukannya TblSchool, SchoolTable dll). 5) Jagalah password agar tetap dalam keadaan dienkripsi, hal ini tentunya sangat penting untuk keamanan. Anda cukup mendekripsi mereka dalam aplikasi bila diperlukan. 6) Gunakan metadata integer untuk kolom id untuk semua tabel. Jika id tidak diperlukan untuk saat ini, mungkin diperlukan di masa depan (untuk tabel asosiasi, indexing, dll ...). 7) Pilih kolom dengan tipe data integer (atau variannya) untuk mengindeks. Mengindeks kolom dengan tipe data varchar akan menyebabkan masalah pada kinerja database anda. 8) Gunakan kolom dengan digit yang sedikit untuk nilai boolean. Menggunakan tipe data integer atau varchar hanya akan memakan penyimpanan yang tidak perlu. Juga mulailah nama-nama kolomnya dengan "Is". 9) Menyediakan otentikasi untuk akses database. Jangan memberikan peran admin untuk setiap pengguna. 10) Hindari query "select *" sampai memang benar-benar sangat diperlukan. Gunakan "select [required_columns_list]" untuk kinerja yang lebih baik. 11) Menggunakan kerangka atau framework ORM (object relational mapping) (contoh yaitu hibernate, iBATIS ...) jika kode aplikasinya yang cukup besar. Masalah kinerja framework ORM dapat ditangani oleh parameter konfigurasi secara detail. 12) Buat partisi yang besar dan table yang jarang digunakan atau tidak terpakai/bagian-bagian table ke penyimpanan fisik yang berbeda untuk kinerja query yang lebih baik. 13) Untuk system database yang besar, sensitif dan memiliki misi kritikal, disarankan untuk menggunakan system disaster recovery dan layanan keamanan seperti failover clustering, backup otomatis, replikasi dll 14) Gunakan constraint (foreign key, check, not null ...) untuk integritas data. Jangan memberikan seluruh kontrol untuk kode aplikasi. 15) Kurangnya dokumentasi database merupakan sesuatu yang jahat. Dokumentasikanlah desain database Anda dengan skema ER dan instruksi-instruksi. Juga tuliskan baris komentar untuk trigger yang anda buat, stored procedure dan skrip-skrip lainnya. 16) Menggunakan indeks untuk permintaan yang sering digunakan pada tabel besar. Tool Analyser dapat digunakan untuk menentukan di mana indeks akan ditentukan. Untuk query mengambil berbagai baris, clustered index biasanya lebih baik. Untuk query tertentu, indeks non-clustered biasanya lebih baik. 17) Database server dan server web harus ditempatkan dalam mesin yang berbeda. Ini akan memberikan keamanan (penyerang tidak dapat mengakses data secara langsung) dan server CPU dan kinerja memori akan lebih baik karena mengurangi jumlah permintaan dan penggunaan proses. 18) Gambar dan kolom data yang berbentuk blob tidak harus didefinisikan dalam tabel yang sering diquery karena masalah kinerja. Data ini harus ditempatkan dalam tabel terpisah dan pointer mereka dapat digunakan dalam tabel yang diquery. 19) Pada design database, secara best practice nya normalisasi harus digunakan sesuai dengan kebutuhan, untuk mengoptimalkan kinerja. Normalisasi yang kurang akan menyebabkan pengulangan berlebihan pada data, sebaliknya normalisasi yang berlebihan akan menyebabkan join yang berlebihan di begitu banyak tabel. Keduanya akan mendapatkan kinerja yang lebih buruk. C. End Users/Pengguna akhir. Grup ini berisi orang-orang yang benar-benar memanfaatkan sistem basis data. Pengguna akhir bisa hanya user yang memperhatikan log atau harga pasar atau pengguna akhir bisa secanggih analis bisnis yang memanfaatkannya sebaik mungkin.
1.3 Istilah Database
A. Table Sebuah tabel merupakan kumpulan data (nilai) yang diorganisasikan ke dalam baris (record) dan kolom (field). Masing-masing kolom memiliki nama yang spesifik dan unik. B. Field Field merupakan kolom dari sebuah table. Field memiliki ukuran type data tertentu yang menentukan bagaimana data nantinya tersimpan. C. Record Field merupakan sebuah kumpulan nilai yang saling terkait. D. Key Key merupakan suatu field yang dapat dijadikan kunci dalam operasi tabel. Dalam konsep database, key memiliki banyak jenis diantaranya Primary Key, Foreign Key, Composite Key, dll. E. SQL SQL atau Structured Query Language merupakan suatu bahasa (language) yang digunakan untuk mengakses database. SQL sering disebut juga sebagai query.
1.4 Hierarki Database
Dalam konsep database, urutan atau hierarki database sangatlah penting. Urutan atau hierarki database digambarkan dalam gambar sbb :
1.5 Pengertian Mysql
MySQL adalah sebuah perangkat lunak sistem manajemen basis data SQL (bahasa Inggris: database management system) atau DBMS yang multithread, multi-user, dengan sekitar 6 juta instalasi di seluruh dunia. MySQL AB membuat MySQL tersedia sebagai perangkat lunak gratis di bawah lisensi GNU General Public License (GPL), tetapi mereka juga menjual dibawah lisensi komersial untuk kasus-kasus dimana penggunaannya tidak cocok dengan penggunaan GPL. Tidak seperti PHP atau Apache yang merupakan software yang dikembangkan oleh komunitas umum, dan hak cipta untuk kode sumber dimiliki oleh penulisnya masing-masing, MySQL dimiliki dan disponsori oleh sebuah perusahaan komersial Swedia yaitu MySQL AB. MySQL AB memegang penuh hak cipta hampir atas semua kode sumbernya. Kedua orang Swedia dan satu orang Finlandia yang mendirikan MySQL AB adalah: David Axmark, Allan Larsson, dan Michael "Monty" Widenius. MySQL dapat didownload di situs resminya, http://www.mysql.com.
Fitur-fitur MySQL antara lain :
D. Relational Database System. Seperti halnya software database lain yang
ada di pasaran, MySQL termasuk RDBMS. E. Arsitektur Client-Server. MySQL memiliki arsitektur client-server dimana server database MySQL terinstal di server. Client MySQL dapat berada di komputer yang sama dengan server, dan dapat juga di komputer lain yang berkomunikasi dengan server melalui jaringan bahkan internet. F. Mengenal perintah SQL standar. SQL (Structured Query Language) merupakan suatu bahasa standar yang berlaku di hampir semua software database. MySQL mendukung SQL versi SQL:2003. G. Mendukung Sub Select. Mulai versi 4.1 MySQL telah mendukung select dalam select (sub select). H. Mendukung Views. MySQL mendukung views sejak versi 5.0 I. Mendukung Stored Prosedured (SP). MySQL mendukung SP sejak versi 5.0 J. Mendukung Triggers. MySQL mendukung trigger pada versi 5.0 namun masih terbatas. Pengembang MySQL berjanji akan meningkatkan kemampuan trigger pada versi 5.1. K. Mendukung replication. L. Mendukung transaksi. M. Mendukung foreign key. N. Tersedia fungsi GIS. O. Free (bebas didownload) P. Stabil dan tangguh Q. Fleksibel dengan berbagai pemrograman R. Security yang baik S. Dukungan dari banyak komunitas T. Perkembangan software yang cukup cepat.
1.6 Merancang Database
Merancang database merupakan hal yang pertama kali harus dilakukan sebelum membuat suatu aplikasi berbasis database. Rancangan database yang baik akan menentukan seberapa baik sebuah aplikasi dibangun. Orang yang bertanggung jawab dalam merancang database biasanya disebut sebagai seorang sistem analis. Berikut ini contoh sederhana sebuah rancangan database dalam pada Sistem Pemesanan Barang (ordering system). Rancangan database disajikan dalam bentuk class diagram. 1.7 Tipe-tipe Table MySQL Salah satu kelebihan dari MySQL adalah Anda dapat mendefinisikan tipe untuk tiap tabel. MySQL mendukung beberapa tipe tabel, tergantung konfigurasi saat proses instalasi MySQL. MySQL memiliki 3 (tiga) tipe data utama, yaitu MyISAM, InnoDB dan HEAP. Jika kita tidak menyebutkan tipe tabel saat membuat tabel, maka tipe tabel otomatis akan dibuat sesuai konfigurasi default server MySQL. Hal ini ditentukan oleh variabel default-table-type di file konfigurasi MySQL. A. MyISAM Tipe tabel MyISAM merupakan tipe tabel yang sederhana, stabil dan mudah digunakan. Jika kita akan menyimpan data sederhana yang tidak terlalu rumit, maka gunakanlah tipe tabel ini. Kelebihan utama MyISAM adalah kecepatan dan kestabilannya. Jika kita memilih tipe tabel MyISAM, maka MySQL secara otomatis akan menentukan salah satu dari tiga jenis tabel MyISAM, yaitu : a. MyISAM static. Jenis ini digunakan ketika semua kolom dalam tabel didefinisikan dengan ukuran yang pasti (fixed). Dengan kata lain, tidak ada kolom yang memiliki tipe seperti VARCHAR, TEXT dan BLOB. Karena sifatnya yang fixed, maka jenis ini akan lebih cepat, aman dan stabil. b. MyISAM dymanic. Jenis ini digunakan ketika terdapat kolom dengan tipe yang dinamis, seperti tipe kolom VARCHAR. Keuntungan utama dari jenis ini adalah ukuran yang dinamis. Jadi sifatnya lebih efektif karena ukuran data (file) menyesuaikan isi dari masing-masing kolom (field). c. MyISAM Compressed. Kedua jenis MyISAM, static dan dynamic dapat dikompresi menjadi satu jenis yaitu MyISAM Compressed dengan perintah myisamchk. Tentunya hasilnya lebih kecil dari segi ukuran. Tabel yang terkompresi tidak dapat dikenakan operasi seperti INSERT, UPDATE dan DELETE. B. InnoDB Tipe tabel InnoDB merupakan tipe tabel MySQL yang mendukung proses transaksi. Tipe ini memiliki beberapa keunggulan, antara lain: a. Mendukung transaksi antar tabel. b. Mendukung row-level-locking. c. Mendukung Foreign-Key Constraints. d. Crash recovery. C. HEAP Tabel dengan tipe HEAP tidak menyimpan datanya di hardisk, tetapi menyimpan di RAM (memori). Tipe tabel ini biasanya digunakan sebagai tabel sementara (temporary). Tabel secara otomatis akan dihapus (hilang) dari MySQL saat koneksi ke server diputus atau server MySQL dimatikan. D. Tipe Table yang Lain Selain 3 (tiga) tipe tabel diatas, yaitu MyISAM, InnoDB dan HEAP, MySQL juga mendukung tipe tabel yang lain, yaitu: a. BDB. Tipe tabel ini mirip tipe tabel InnoDB, namun penggunaannya belum maksimal. b. Archieve. Tipe ini tersedia sejak MySQL versi 4.1. Tipe ini digunakan untuk menyimpan tabel yang terkompresi, dimana biasanya digunakan dalam proses backup. c. CSV. Tipe ini digunakan untuk menyimpan data dalam bentuk file text yang dibatasi dengan koma (delimiter). Tipe ini tersedia sejak MySQL versi 4.1. d. NDB Table (MySQL Cluster). Tersedia sejak MySQL versi 4.1. e. Federated (External Tables). Tipe ini tersedia sejak MySQL versi 5.0.