perbaikan tugas 1 database
A. PENGERTIAN DATABASE
Basis : dapat diartikan sebagai markas atau gudang, tempat bersarang atau berkumpul.
Data : representasi fakta dunia nyata yang mewakili suatu objek seperti manusia (pegawai, siswa, pembeli, pelanggan), barang, hewan peristiwa, konsep, keadaan, dan sebagainya yang direkam dalam bentuk angka, huruf, simbol, teks, gambar, bunyi, atau kombinasinya.
Dari kedua pengertian tersebut, maka dapat ditarik kesimpulan bahwa pengertian dari Basis Data adalah Kumpulan file / table yang saling berelasi (berhubungan) yang disimpan dalam media penyimpanan eletronik. Dapat dikatakan pengertian lain dari basis data adalah koleksi terpadu dari data yang saling berkaitan yang dirancang untuk memenuhi kebutuhan informasi suatu enterprise (dunia usaha). Dari pengertian tersebut dapat diambil kesimpulan pada masing – masing table / file didalam database berfungsi untuk menampung / menyimpan data – data, dimana masing – masing data yang ada pada table / file tersebut saling berhubungan dengan satu sama lainnya.
Pengertian database lainnya menurut para ahli yaitu :
Gordon C. Everest Database adalah koleksi atau kumpulan data yang mekanis, terbagi/shared, terdefinisi secara formal dan dikontrol terpusat pada organisasi.C.J. Date Database adalah koleksi "data operasional" yang tersimpan dan dipakai oleh sistem aplikasi dari suatu organisasi.Data input adalah data yang masuk dari luar sistemData output adalah data yang dihasilkan sistemData operasional adalah data yang tersimpan pada sistem
Toni Fabbri Database adalah sebuah sistem file-file yang terintegrasi yang mempunyai minimal primary key untuk pengulangan data.S. Attre Database adalah koleksi data-data yang saling berhubungan mengenai suatu organisasi/enterprise dengan macam-macam pemakaiannya.
Perangkat-perangkat Lunak Database
1. MySQL
MySQL adalah DBMS yang Multi-thread dan Multi-User, dengan 6 juta installasi di seluruh dunia, MySQL dikembangkan di MySQLAB, dan ditawarkan secara gratis dalam GNU General Public Lisence (GNU), namun mereka juga menjual dibawah lisensi komersial untuk kasus-kasus dimana penggunaannya tidak cocok dengan penggunaan GPL.Kedua orang Swedia dan satu orang Finlandia yang mendirikan MySQLAB adalah: David Axmark, Allan Larsson, danMichael “Monty” Widenius.
2. Oracle
Basis data Oracle adalah basis data relasional yang terdiri dari kumpulan data dalam suatu sistem manajemen basis data RDBMS. Perusahaan perangkat lunak Oracle memasarkan jenis basis data ini untuk bermacam-macam aplikasi yang bisa berjalan pada banyak jenis dan merk perangkat keras komputer (platform).Basis data Oracle ini pertama kali dikembangkan oleh Larry Ellison, Bob Miner dan Ed Oates lewat perusahaan konsultasinya bernama Software Development Laboratories (SDL) pada tahun 1977. Pada tahun 1983, perusahaan ini berubah nama menjadi Oracle Corporation sampai sekarang.
3. Microsoft SQL Server
Microsoft SQL Server Merupakan produk andalan microsoft untuk database server. Umum digunakan di dunia bisnis yang memiliki basis data berskala kecil hingga menengah, dan berkembang dengan digunakannya SQL Server pada basis data besar. Bahasa Query utamanya adalah Transact-SQL yang merupakan implementasi dari SQL standar ANSI/ISO yang digunakan oleh Microsoft dan Sybase. Microsoft SQL Server dan Sybase/ASE dapat berkomunikasi lewat jaringan dengan menggunakan protokol TDS (Tabular Data Stream). Selain dari itu, Microsoft SQL Server juga mendukung ODBC (Open Database Connectivity), dan mempunyai driver JDBC untuk bahasa pemrograman Java. Fitur yang lain dari SQL Server ini adalah kemampuannya untuk membuat basis data mirroring dan clustering.
4. Firebird
Firebird (juga disebut FirebirdSQL) adalah sistem manajemen basisdata relasional yang menawarkan fitur-fitur yang terdapat dalam standar ANSI SQL-99 dan SQL-2003. RDBMS ini berjalan baik di Linux, Windows, maupun pada sejumlah platform Unix. Firebird di diarahkan dan di-maintain oleh FirebirdSQL Foundation. Ia merupakan turunan dari Interbase versi open source milik Borland.
5. Visual Foxpro
Visual FoxPro adalah bahasa pemrograman berorientasi objek dan prosedural dari Microsoft. Awalnya bahasa pemrograman ini dikenal dengan nama FoxBASE yang diluncurkan oleh Fox Software pada awal 1984. Pada tahun 1989 foxbase berkembang menjadi foxpro dan memperkenalkan GUI. Fox Technologies kemudian bergabung dengan Microsoft pada 1992 sehingga di depan nama Foxpro ditambahkan awalan "Visual". Pada tahun 1995 Foxpro berkembang menjadi Visual Foxpro dan dilengkapi dengan pemrograman berorientasi objek, serta dapat membangun aplikasi berbasis web.
6. Postgre SQL
Postgre SQL adalah sebuah sistem basis data yang disebarluaskan secara bebas menurut Perjanjian lisensi BSD. Piranti lunak ini merupakan salah satu basis data yang paling banyak digunakan saat ini, selain MySQL dan Oracle. PostgreSQL menyediakan fitur yang berguna untuk replikasi basis data. Fitur-fitur yang disediakan PostgreSQL antara lain DB Mirror, PGPool, Slony, PGCluster, dan lain-lain. Awal tahun 1982 Michael Stonebraker dari University of California Barkeley membuat sebuah ORDBMS dan merupakan software open source yang gratis. PostgreSQL adalah sistem database yang kuat untuk urusan relasi.
7. dBase
dBASE adalah sebuah sistem manajemen basisdata (DBMS) yang secara luas digunakan pada mikrokomputer yang dikenalkan oleh Ashton-Tate untuk komputer CP/M, dan kemudian untuk platform Apple II, Apple Macintosh dan IBM PC dengan DOS yang menjadi salah satu perangkat lunak yang paling laris selama beberapa tahun pada saat itu. Ketidakmampuan dBASE untuk bertransisi dengan sistem operasi yang lebih baru, Microsoft Windows pada akhirnya membuat penggunaan dBASE tergantikan oleh produk-produk lainnya yang lebih baru seperti Paradox, Clipper, FoxPro, dan Microsoft Access.
8. IBM DB/2
IBM DB/2, DB2 memiliki sejarah panjang dan ditenggarai sebagai perangkat lunak basisdata pertama yang mengimplementasikan SQL, meski demikian, umumnya Oracle lebih dikenal sebagai perangkat lunak basisdata pertama yang dikomersilkan secara luas dengan menyertakan dukungan atas SQL. IBM DB2 Enterprise Server Edition merupakan sebuah perangkat lunak sistem manajemen basisdata relasional yang dikembangkan oleh IBM. Perangkat lunak tersebut utamanya berjalan pada sistem operasiUnix (sebut saja AIX), Solaris, Linux, IBM i/OS/400, z/OS, dan Microsoft Windows. DB2 juga diketahui digunakan sebagai sistem basis data pada IBM InfoSphere Warehouse edition.
9. Microsoft Access (atau Microsoft Office Access)
Microsoft Access (atau Microsoft Office Access) adalah sebuah program aplikasi basis data komputer relasional yang ditujukan untuk kalangan rumahan dan perusahaan kecil hingga menengah. Aplikasi ini merupakan anggota dari beberapa aplikasi Microsoft Office, selain tentunya Microsoft Word, Microsoft Excel, dan Microsoft Power Point. Aplikasi ini menggunakan mesin basis data Microsoft Jet Database Engine, dan juga menggunakan tampilan grafis yang intuitif sehingga memudahkan pengguna.
- Kelemahan Sistem Basis Data
Memerlukan tenaga spesialISKompleksMemerlukan tempat yang besarMahal
- Keuntungan Dan Kerugian Penggunaan basis data
Kelebihan Aplikasi Berbasis DataKeuntungan Sistem Basis DataTerkontrolnya kerangkapan dataTerpeliharanya keselarasan (ke-konsistenan) dataData dapat dipakai secara bersama (shared)Dapat diterapkan standarisasiKeamanan data terjaminTerpeliharanya integritas dataTerpeliharanya keseimbangan (keselarasan) antara kebutuhan data yang berbeda dalam setiap aplikasiData independence (kemandirian data)
Kelemahan Sistem Berbasis FileMemerlukan tenaga spesialisKompleksMemerlukan tempat yang besarMahal
perbaikan NORMALISASI
Normalisasi database biasanya jarang dilakukan dalam database skala kecil, dan dianggap tidak diperlukan pada penggunaan personal. Namun seiring dengan berkembangnya informasi yang dikandung dalam sebuah database, proses normalisasi akan sangat membantu dalam
menghemat ruang yang digunakan oleh setiap tabel di dalamnya, sekaligus mempercepat proses
permintaan data. Berikut ini dipaparkan metodologi logis sederhana untuk menormalkan model
data dalam sebuah database, diiringi contoh pembuatan database untuk tugas-tugas mata kuliah dalam sebuah fakultas (fiktif) dengan atribut yang disederhanakan.
Proses normalisasi model data dapat diringkas sebagai berikut:
1.Temukan entitas-entitas utama dalam model data.
2.Temukan hubungan antara setiap entitas.
3. Tentukan atribut yang dimiliki masing-masing entitas.
Normalisasi model data dilakukan dengan mengikuti langkah-langkah sederhana, mengubahnya agar memenuhi apa yang disebut sebagai bentuk normal pertama, kedua, lalu ketiga secaraberturutan.
Langkah-LangkahNormalisasi
1. Bentuk Normal Pertama (1NF)
Sebuah model data dikatakan memenuhi bentuk normal pertama apabila setiap atribut yang dimilikinya memiliki satu dan hanya satu nilai. Apabila ada atribut yang memiliki nilai lebih dari satu, atribut tersebut adalah kandidat untuk menjadi entitas tersendiri.
Entitas utama untuk database tugas matakuliah tentu saja Tugas Matakuliah. Sebagian atribut yang dimiliki entitas ini tertera dalam Gambar 1.
Gambar 1: Entitas pertama dalam contoh model data untuk database tugas matakuliah.
Atribut Nama Kelas mencantumkan kelas-kelas di mana tugas tersebut berlaku. Apabila
pendaftar untuk sebuah matakuliah melebihi kapasitas ruangan yang dimiliki fakultas, kebijakan
yang umum diambil Kepala Program Studi adalah membagi kegiatan perkuliahan untuk
matakuliah tersebut menjadi beberapa kelas. Karenanya atribut ini rentan memiliki nilai jamak,
dan lebih sesuai menjadi entitas baru atau atribut dari entitas lain. Untuk sementara kita
membuat entitas baru, Kelas, dimana sebagian atributnya berasal dari Tugas Matakuliah yang
secara logis lebih sesuai menjadi atribut entitas ini. Sementara itu, hampir semua atribut entitas
Tugas Matakuliah selain Nama Kelas memiliki nilai tunggal (dengan asumsi setiap matakuliah
diampu oleh satu dosen saja).
1.a Relasi Antar-Entitas dan Identifier
Masalah yang kita hadapi sekarang adalah menghubungkan Tugas Matakuliah dengan Kelas. Satu tugas dapat diberikan pada beberapa kelas yang berbeda; dalam terminologi pemodelan data, ini berarti antara entitas Tugas Matakuliah dan entitas Kelas terdapat relasi 1:N (atau 1-N) untuk nilai N lebih dari satu. Cara paling intuitif untuk menghubungkan kedua entitas tersebut adalah menyertakan identitas satu entitas sebagai atribut entitas lain. Identitas sebuah entitas haruslah unik untuk menghindarkan ambiguitas saat akan merujuk pada satu objek khusus dari entitas tersebut. Entitas Tugas Matakuliah akan menggunakan pengidentifikasi arbitrer berupa angka yang berbeda antara satu objek Tugas Matakuliah dengan objek Tugas Matakuliah lain.
Entitas Kelas dapat diidentifikasi dengan matakuliah dan kode kelas yang bersangkutan,
sehingga kita cukup menambahkan atribut pengidentifikasi (identifier) dalam kedua entitas.
Entitas ini beserta semua atribut baru dan hubungannya dengan Tugas Matakuliah diperlihatkan
dalam Gambar 2, dengan menggunakan notasi relasi crows foot (dengan simbol “kaki gagak”
Gambar 2: Hubungan antara Tugas Matakuliah dan entitas baru, Kelas.
Sejauh ini tidak ada atribut entitas yang memiliki nilai lebih dari satu, sehingga rasanya cukup aman mengatakan bahwa model ini memenuhi bentuk normal pertama.
2. Bentuk Normal Kedua (2NF)
Sebuah model data dikatakan memenuhi bentuk normal kedua apabila ia memenuhi bentuk normal pertama dan setiap atribut non-identifier sebuah entitas bergantung sepenuhnya hanya pada semua identifier entitas tersebut.
Apabila kita perhatikan kembali model data yang telah kita hasilkan di atas, segera terlihat bahwa atribut dari entitas Kelas tidak sepenuhnya bergantung pada identitas unik Kelas tersebut. Seorang dosen akan tetap ada meskipun kelas matakuliah yang ia ampu sudah tidak ada lagi. Dalam hal ini, dosen adalah entitas tersendiri (yang nantinya dapat dilekatkan pada entitas
Fakultas atau Universitas bilamana kedua entitas tersebut dirasa perlu ada, tergantung pada
kebutuhan pemodelan data kita).
2.a Sekali Lagi, Tentang Identifier
Dalam dunia nyata, anggapan yang umum adalah seseorang (“individu”) dapat diidentifikasi secara unik dengan namanya. Tentu saja anggapan ini tidak sepenuhnya benar, karena bisa saja sebuah nama (bahkan satu rangkaian nama lengkap) dimiliki oleh lebih dari satu orang; pemodelan data yang melibatkan informasi tentang individu jarang menggunakan nama
individu tersebut sebagai satu-satunya pengidentifikasi. Implementasi RDBMS tertentu juga
akan lebih cepat memproses query atas suatu tabel apabila tabel tersebut diindeks oleh nilai
integer unik daripada bila menggunakan indeks karakter (rangkaian karakter masih harus
diumpankan ke fungsi hash agar dapat digunakan sebagai indeks tabel, sementara untuk integer
unik tidak harus). Karena beberapa alasan tersebut, entitas Dosen pada model data kita akan menggunakan pengidentifikasi arbitrer berupa Nomor Induk Pegawai sebagaimana diperlihatkan dalam Gambar 3. Dalam notasi crows foot, relasi non-identifying digambarkan dengan garis putus-putus atau tersamar.
Gambar 3: Ketiga entitas utama dalam model data dan hubungan antar masing-masing entitas.
Setelah atribut-atribut dari semua entitas dalam sebuah model data hanya bergantung pada seluruh pengidentifikasi entitas yang memilikinya, model data tersebut dikatakan memenuhi bentuk normal kedua.
3. Bentuk Normal Ketiga (3NF)
Sebuah model data dikatakan memenuhi bentuk normal ketiga apabila ia memenuhi bentuk normal kedua dan tidak ada satupun atribut non-identifying (bukan pengidentifikasi unik) yang bergantung pada atribut non-identifying lain. Apabila ada, pisahkan salah satu atribut tersebut menjadi entitas baru, dan atribut yang bergantung padanya menjadi atribut entitas baru tersebut.
Dalam model data sederhana yang kita gunakan di sini, tidak ada satupun atribut non-identifying (seperti Deskripsi Tugas Matakuliah, atau Nama Dosen) yang bergantung pada atribut non-identifying lain. Namun demi adanya contoh, kita misalkan entitas Dosen memiliki atribut
informasi Alamat Rumah dan Nomor Telepon Rumah. Keduanya tidak dapat secara unik
mengidentifikasi objek tertentu dari entitas Dosen, namun keduanya saling bergantung.
Sebagaimana dalam dua langkah normalisasi sebelumnya, jenis kebergantungan seperti ini
dapat dihilangkan dengan membuat entitas baru lagi (yang tidak akan diciptakan karena tiga
entitas sudah cukup banyak untuk satu artikel).
Model terakhir yang kita dapat ini telah memenuhi bentuk normal ketiga (third normal form) dan siap dikonversi menjadi tabel. Namun sebelumnya, kita perlu membahas berbagai jenis relasi yang kerap ditemui dalam pemodelan data, termasuk yang kita temui dalam contoh model data kali ini.
Jenis-jenis Relasi Antar-Entitas
1.Relasi 1-1. Relasi ini jarang ditemui dalam model data yang benar, sehingga saat Anda
menemukannya, kemungkinan besar hal itu berarti masih ada yang belum sempurna dari model data Anda; relasi 1-1 sering berarti kedua entitas tersebut sebenarnya adalah kesatuan, satu entitas tunggal. Kemungkinan lain adalah relasi 1-1 ini adalah relasi turunan atau relasi non-identifying (identitas unik satu entitas tidak bergantung pada identitas unik entitas lain) namun jenis relasi kedua ini jarang ditemui.
2. Relasi 1-N. Relasi ini yang paling umum ditemui dalam model data.
3. Relasi M-N. Relasi ini juga sering ditemui dalam model data, dan sering pula dapat dinormalkan lebih jauh lagi. Langkah yang dapat ditempuh untuk menormalkan relasi
M-N:
a. Buat sebuah entitas baru sebagai penghubung antara kedua entitas dengan relasi M-
N tersebut. Entitas penghubung ini akan memiliki hubungan 1-M dengan masing-masing entitas awal. Identifier entitas penghubung dapat dibuat tersendiri, atau dengan cara mewarisi identifier kedua entitas awal dan membuat keduanya identifier unik entitas penghubung ini. Sering kali akan ada atribut lain yang dimiliki oleh entitas penghubung tersebut. Entitas Kelas dalam contoh model data kita dapat menjadi contoh entitas penghubung. Apabila tidak ada entitas penghubung yang dapat diciptakan, relasi M-N tetap harus diubah untuk menghindari kesulitan dalam konversi model data menjadi skema database fisik.
Menterjemahkan Model Data
Setelah sebuah model data dinormalisasikan dan siap diubah menjadi database fisik, ada
beberapa langkah penterjemahan yang harus dilakukan:
1. Setiap entitas menjadi tabel tersendiri.
2. Setiap atribut menjadi kolom-kolom tabel tersebut, dengan tipe data yang sesuai.
3. Identifier entitas tersebut menjadi kolom ID yang tidak boleh kosong (NOT NULL) dan berisi indeks yang unik. ID unik ini dalam database dinamakan primary key.
4. Relasi diterjemahkan menjadi foreign key.
Skema fisik model data yang dihasilkan tampak dalam Gambar 4. Perhatikan penghilangan spasi, penentuan tipe data dan penyeragaman kapitalisasi untuk portabilitas skema untuk digunakan dalam berbagai implementasi RDBMS yang mungkin berbeda dalam case-
sensitivity.
Gambar 4: Skema fisik final dari contoh model data.
Dan perintah SQL untuk menciptakan ketiga tabel tersebut adalah:
CREATE TABLE dosen (nip INTEGER NOT NULL AUTO_INCREMENT, nama_lengkapVARCHAR(20) NOT NULL, nomor_kontak VARCHAR(20) NULL, PRIMARY KEY(nip) )
TYPE=InnoDB; CREATE TABLE kelas ( kode INTEGER UNSIGNED NOTNULL AUTO_INCREMENT, nama_matakuliah INTEGER UNSIGNED NOT NULL,id_tugas_matakuliah INTEGER NOT NULL, id_dosen INTEGER NOT NULL, ruang_kuliah VARCHAR(5) NULL, PRIMARY KEY(kode, nama_matakuliah,id_tugas_matakuliah), INDEX kelas_FKIndex1(id_dosen), INDEXkelas_FKIndex2(id_tugas_matakuliah) )
TYPE=InnoDB; CREATE TABLE tugas_matakuliah ( INTEGER NOT NULL, deskripsi TEXT NULL, batas_penyerahan DATETIME NULL, PRIMARY KEY(id) )
TYPE=InnoDB;
Script SQL di atas menggunakan tipe data dan konfigurasi tabel yang didukung oleh MySQL. Deklarasi TYPE=InnoDB untuk setiap tabel adalah agar MySQL menggunakan InnoDB yang mendukung penggunaan foreign key. Tanpa deklarasi tersebut MySQL secara default akan menggunakan mesin penyimpan MyISAM yang tidak dapat mendukung foreign key.
1. Foreign Key
Beberapa catatan khusus mengenai penterjemahan relasi menjadi foreign key:
1. Relasi 1-1 diterjemahkan menjadi “identifier salah satu tabel menjadi foreign key dalam tabel lain”. Keputusan mengenai tabel mana yang harus menerima identifier tabel lain
dapat diambil sesuai keinginan, dan secara teori tidak begitu berpengaruh. Namun,
seringkali pertimbangan praktis yang akan menentukan tabel mana yang akan berisi
foreign key.
2. Khusus untuk penggunaan MySQL sebagai penyimpan database: sampai MySQL versi 5.0 hanya storage engine InnoDB yang mendukung penggunaan foreign key. Mesin penyimpanan lain yang digunakan MySQL versi 5.0 atau dibawahnya (seperti MyISAM atau BDB) tidak mendukung konfigurasi FOREIGN KEY dalam perintah SQL CREATE TABLE, dan akan mengabaikannya apabila ia ditemui.
Contoh Penggunaan Database Ternormalisasi
Untuk model data non-trivial, database ternormalisasi hampir selalu berisi lebih dari satu tabel, sehingga demi kemudahan pengelolaan, biasanya satu database hanya berisi tabel-tabel yang terkait dalam satu model data saja. Di bawah ini terdapat contoh query SQL untuk database
ternormalisasi untuk membedakan dengan model data yang hanya menggunakan satu tabel.
INSERT INTO dosen(nama_lengkap,nip) VALUES('Jusuf Kalla',127001);
INSERT INTO kelas(id_dosen, kode) VALUES(127001, 1);
INSERT INTO kelas(id_dosen, kode) VALUES(127001, 2);
Perintah INSERT di atas akan menambah data dosen baru dan dua kelas yang diampu beliau. INSERT INTO tugas_matakuliah(id, deskripsi,batas_penyerahan)
VALUES(102, 'Implementasikan sebuah compiler untuk bahasa Small-C, lengkap dengan detail grammar yang digunakan.
Compiler tersebut harus menghasilkan kode assembler 8086 yang dapat dikompilasi oleh Turbo Assembler atau NASM.', '2006-12-01');
UPDATE kelas,dosen SET id_tugas_matakuliah=102
WHERE kelas.id_dosen=dosen.nip AND dosen.nama_lengkap='Jusuf
Kalla';
Perintah INSERT dan UPDATE di atas menambah data tugas baru dari dosen tertentu dan memperbarui data untuk setiap kelas yang diampu dosen tersebut.
SELECT t.deskripsi, t.batas_penyerahan FROM tugas_matakuliah t, kelas k, dosen d WHERE k.id_tugas_matakuliah=t.id AND k.id_dosen=d.nip AND d.nama_lengkap='Jusuf
Kalla'; Perintah SELECT di atas akan menampilkan informasi tentang deskripsi sebuah tugas yang diberikan pada kelas-kelas matakuliah yang diampu oleh dosen tersebut, ditambah dengan
informasi tanggal penyerahan tugas terakhir.
Artikel Populer IlmuKomputer.Com
Copyright ©2003- 2006 IlmuKomputer.Com
Normalisasi
Normalisasi adalah suatu proses untuk mengubah suatu tabel yang memiliki masalah tertentu ke dalam dua buah tabel atau lebih, yang tidak lagi memiliki masalah tersebut (Abdul Kadir, 2002: 52). Masalah tersebut biasanya merupakan suatu ketidakkonsistenan (tidak normal) apabila dilakukan penghapusan (delete), pengubahan (update) dan pembacaan (retrieve) pada suatu basis data.
Bentuk normalisasi adalah suatu aturan yang dikenakan pada tabel-tabel dalam basis data dan harus dipenuhi oleh tabel-tabel tersebut pada level-level normalisasi. Ada macam-macam bentuk normalisasi, diantaranya adalah bentuk tidak normal, bentuk normal pertama, bentuk normal kedua dan bentuk normal ketiga.
Adapun bentuk Normal Kesatu, kedua dan ketiga adalah sebagai berikut:
a. Firts Normal Form (Normal Pertama)
Sebuah tabel dikatakan telah memenuhi bentuk normal pertama jika pada tabel tersebut tidak terdapat atribut yang multivalues. Berikut ini adalah contoh tabel yang tidak memenuhi bentuk normal pertama:
NIM |
TELP |
20111 |
085611111, 0812000, 022787 |
20112 |
0817898 |
20113 |
Tabel 2
Tabel 2, merupakan contoh tabel yang tidak memenuhi bentuk normal pertama karena terdapat atribut yang multivalues, yaitu atribut TELP. Supaya memenuhi bentuk normal pertama, harus dilakukan dekomposisi pada tabel tersebut sehingga menjadi seperti tabel 3. dibawah ini dimana tidak terdapat multivalues:
NIM |
TELP |
20111 |
085611111 |
20111 |
0812000 |
20111 |
022787 |
20112 |
0817898 |
Tabel 3.
b. Second Normal Form (Normal Kedua)
Sebuah tabel dikatakan memenuhi bentuk normal kedua jika telah memenuhi bentuk normal pertama dan semua atribut yang bukan primary key tergantung kepada atribut Primary Key.
c. Third Normal Form (Normal Ketiga)
Sebuah tabel dikatakan memenuhi bentuk normal ketiga jika telah memenuhi bentuk normal kedua dan tidak ada atribut yang tergantung bukan kepada Primary Key nya. Dengan kata lain, semua atribut yang mempunyai ketergantungan (functional dependency) harus pada atribut Primary Key.
Dengan memenuhi bentuk normal ketiga, sebuah tabel sudah bisa dikatakan tabel yang baik.
Sebuah tabel dikatakan baik (efisien) atau normal jika memenuhi 3 kriteria sbb
- Jika ada dekomposisi (penguraian) tabel, maka dekomposisinya harus dijamin aman (Lossless-Join Decomposition). Artinya, setelah tabel tersebut diuraikan / didekomposisi menjadi tabel-tabel baru, tabel-tabel baru tersebut bisa menghasilkan tabel semula dengan sama persis.
- Terpeliharanya ketergantungan fungsional pada saat perubahan data (Dependency Preservation).
- Tidak melanggar Boyce-Code Normal Form (BCNF) (-akan dijelaskan kemudian-)
Jika kriteria ketiga (BCNF) tidak dapat terpenuhi, maka paling tidak tabel tersebut tidak melanggar Bentuk Normal tahap ketiga (3rd Normal Form / 3NF).
Tabel Universal (Universal / Star Table) à sebuah tabel yang merangkum semua kelompok data yang saling berhubungan, bukan merupakan tabel yang baik.
Misalnya:
921411113tugas5 Tinggalkan Komentar...
TUGAS KELOMPOK
Entity Relational Diagram (ERD)
ERD merupakan kepanjangan dari Entity Relationship Diagram, yang artinya merupakan sebuah penggambaran data (diagram) yang menyatakan hubungan antar entitas. Dengan adanya ERD ini sebuah basis data dapat digambarkan secara terstruktur dan mudah dipahami. ERD sendiri memiliki beberapa unsur pembangun yaitu :
1. Entity / Entitas
Merupakan penggambaran sebuah objek nyata. Untuk lebih mudahnya bisa disebut juga sebagai jabatan / status dari suatu objek tersebut. Contoh : Mahasiswa, anak, petugas, dsb.
Dalam ERD entitas digambarkan dengan bentuk persegi panjang.
2. Attribut
adalah sifat / keunikan yang mendeskripsikan suatu entitas. Contoh Entitas Mahasiswa, attribute yang bisa diambil adalah : nama, nim, alamat, dsb
symbol yang digunakan untuk menandai atribut dalam ERD adalah oval.
3. Relasi (hubungan)
Relasi / relationship merupakan hubungan antar entitas.
Contoh : mahasiswa meminjam buku, disini mahasiswa dan buku sebagai entitas, dan meminjam merupakan sebuah relasi.
Relasi dalam ERD di gambarkan dengan bentuk belah ketupat.
921411113tugas4 Tinggalkan Komentar...
tipe data pada database
DBMS masa kini mendukung berbagai jenis data, dari teks, suara, hingga gambar. Contoh berbagai nama tipe data pada berbagai DBMS adalah sebagai berikut:
Contoh berbagai jenis data
Tipe Data | Keterangan |
Character (Visual dBASE)
Char (SQL) Text (Access) Alpha (Paradox) |
Menyatakan tipe data untuk menyimpan deretan karakter seperti nama orang atau nama mobil |
Memo (Access dan Visual dBASE)
Text (PostgresSQL) |
Untuk menyimpan deretan karakter dengan ukuran yang besar (melebihi 256 karakter) |
Number (Access)
Numeric (Visual dBASE) |
Untuk menyimpan data bilangan |
Date/Time (Access) | Untuk menyimpan data jam dan tanggal |
Date (Visual dBASE)
Date (PostgresSQL) |
Untuk menyimpan tanggal |
Time (PostgresSQL) | Untuk menyimpan data jam |
Currency (Access)
Money (Paradox) |
Untuk menyimpan data uang |
Yes/No (Access)
Logical (Visual dBASE) Bool (PostgresSQL) |
Untuk menyimpan data logika (benar atau salah) |
OLE (Visual dBASE)
OLE Object (Access) |
Untuk menyimpan OLE. Dapat berupa objek seperti gambar atau bahkan suara |
Binary (Visual dBASE) | Untuk menyimpan data gambar atau suara |
Graphics (Paradox) | Untuk menyimpan data gambar |
Hyperlink (Access) | Untuk menyimpan data hyperlink |
Adapun tipe data pada database yang lainnya adalah sebagai berikut:
tipe - tipe data yang didukung oleh MySQL. Pemilihan tipe data merupakan suatu hal yang cukup penting dalam mengelola server. Salah satu sebabnya adalah berkaitan dengan ruang di harddisk dan memori yang akan “digunakan” oleh data-data tersebut.
Berikut ini akan diberikan tipe-tipe data yang didukung oleh MySQL yang terambil dari dokumentasi MySQL. Tipe - tipe data ini diberikan dalam bentuk yang siap dituliskan pada sintaks-sintaks MySQL, misalnya Create Table. Pada tipe-tipe data tersebut terdapat beberapa atribut yang memiliki arti sebagai berikut:
- M, menunjukkan lebar karakter maksimum. Nilai M maksimum adalah 255.
- D, menunjukkan jumlah angka di belakang koma. Nilai maksimum D adalah 30 tetapi dibatasi oleh nilai M, yaitu tidak boleh lebih besar daripada M-2.
- Atribut yang diberi tanda [ dan ] berarti pemakaiannya adalah optional.
- Jika atribut ZEROFILL disertakan, MySQL akan otomatis menambahkan atribut UNSIGNED.
- UNSIGNED adalah bilangan tanpa tanda di depannya (misalnya tanda negatif).
Inilah tipe-tipe data tersebut:
- TINYINT[(M)] [UNSIGNED] [ZEROFILL]
Integer yang sangat kecil jangkauan nilainya, yaitu -128 hingga 127. Jangkauan unsigned adalah 0 hingga 255.
- SMALLINT[(M)] [UNSIGNED] [ZEROFILL]
Integer yang kecil jangkauan nilainya, yaitu -32768 hingga 32767. Jangkauan unsigned adalah 0 hinga 65535.
- MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
Integer tingkat menengah. Jangkauan nilainya adalah -8388608 hingga 8388607. Jangkauan unsigned adalah 0 hingga 16777215.
- INT[(M)] [UNSIGNED] [ZEROFILL]
Integer yang berukuran normal. Jangkauan nilainya adalah -2147483648 hingga 2147483647. Jangkauan unsigned adalah 0 hingga 4294967295.
- INTEGER[(M)] [UNSIGNED] [ZEROFILL]
Sama dengan INT.
- BIGINT[(M)] [UNSIGNED] [ZEROFILL]
Integer berukuran besar. Jangkauan nilainya adalah -9223372036854775808 hingga 9223372036854775807. Jangkauan unsigned adalah 0 hingga 18446744073709551615.
- FLOAT(precision) [ZEROFILL]
Bilangan floating-point. Tidak dapat bersifat unsigned. Nilai atribut precision adalah <=24 untuk bilangan floating-point presisi tunggal dan di antara 25 dan 53 untuk bilangan floating-point presisi ganda.
- FLOAT[(M,D)] [ZEROFILL]
Bilangan floating-point presisi tunggal. Tidak dapat bersifat unsigned. Nilai yang diijinkan adalah -3.402823466E+38 hingga -1.175494351E-38 untuk nilai negatif, 0, and 1.175494351E-38 hingga 3.402823466E+38 untuk nilai positif.
- DOUBLE[(M,D)] [ZEROFILL]
Bilangan floating-point presisi ganda. Tidak dapat bersifat unsigned. Nilai yang diijinkan adalah -1.7976931348623157E+308 hingga -2.2250738585072014E-308 untuk nilai negatif, 0, dan 2.2250738585072014E-308 hingga 1.7976931348623157E+308 untuk nilai positif.
- DOUBLE PRECISION[(M,D)] [ZEROFILL] dan REAL[(M,D)] [ZEROFILL]
Keduanya sama dengan DOUBLE.
- DECIMAL[(M[,D])] [ZEROFILL]
Bilangan floating-point yang “unpacked”. Tidak dapat bersifat unsigned. Memiliki sifat mirit dengan CHAR. Kata “unpacked'' berarti bilangan disimpan sebagai string, menggunakan satu karakter untuk setiap digitnya. Jangkauan nilai dari DECIMAL sama dengan DOUBLE, tetapi juga tergantung dai nilai atribut M dan D yang disertakan. Jika D tidak diisi akan dianggap 0. Jika M tidak diisi maka akan dianggap 10. Sejak MySQL 3.22 nilai M harus termasuk ruang yang ditempati oleh angka di belakang koma dan tanda + atau -.
- NUMERIC(M,D) [ZEROFILL]
Sama dengan DECIMAL.
- DATE
Sebuah tanggal. MySQL menampilkan tanggal dalam format 'YYYY-MM-DD'. Jangkauan nilainya adalah '1000-01-01' hingga '9999-12-31'.
- DATETIME
Sebuah kombinasi dari waktu (jam) dan tanggal. MySQL menampilkan waktu dan tanggal dalam format 'YYYY-MM-DD HH:MM:SS'. Jangkauan nilainya adalah '1000-01-01 00:00:00' hingga '9999-12-31 23:59:59'.
- TIMESTAMP[(M)]
Sebuah timestamp. Jangkauannya adalah dari '1970-01-01 00:00:00' hingga suatu waktu di tahun 2037. MySQL menampilkan tipe data TIMESTAMP dalam format YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD, atau YYMMDD, tergantung dari nilai M, apakah 14 (atau tidak ditulis), 12, 8, atau 6.
- TIME
Tipe data waktu. Jangkauannya adalah '-838:59:59' hingga '838:59:59'. MySQL menampilkan TIME dalam format 'HH:MM:SS'.
- YEAR[(2|4)]
Angka tahun, dalam format 2- atau 4-digit (default adalah 4-digit). Nilai yang mungkin adalah 1901 hingga 2155, 0000 pada format 4-digit, dan 1970-2069 pada format 2-digit (70-69).
- CHAR(M) [BINARY]
String yang memiliki lebar tetap. Nilai M adalah dari 1 hingga 255 karakter. Jika ada sisa, maka sisa tersebut diisi dengan spasi (misalnya nilai M adalah 10, tapi data yang disimpan hanya memiliki 7 karakter, maka 3 karakter sisanya diisi dengan spasi). Spasi ini akan dihilangkan apabila data dipanggil. Nilai dari CHAR akan disortir dan diperbandingkan secara case-insensitive menurut default character set yang tersedia, kecuali bila atribut BINARY disertakan.
- VARCHAR(M) [BINARY]
String dengan lebar bervariasi. Nilai M adalah dari 1 hingga 255 karakter. Jika nilai M adalah 10 sedangkan data yang disimpan hanya terdiri dari 5 karakter, maka lebar data tersebut hanya 5 karakter saja, tidak ada tambahan spasi.
- TINYBLOB dan TINYTEXT
Sebuah BLOB (semacam catatan) atau TEXT dengan lebar maksimum 255 (2^8 - 1) karakter.
- BLOB dan TEXT
Sebuah BLOB atau TEXT dengan lebar maksimum 65535 (2^16 - 1) karakter.
- MEDIUMBLOB dan MEDIUMTEXT
Sebuah BLOB atau TEXT dengan lebar maksimum 16777215 (2^24 - 1) karakter.
- LONGBLOB dan LONGTEXT
Sebuah BLOB atau TEXT dengan lebar maksimum 4294967295 (2^32 - 1) karakter.
- ENUM('value1','value2',...)
Sebuah enumerasi, yaitu objek string yang hanya dapat memiliki sebuah nilai, dipilih dari daftar nilai 'value1', 'value2', ..., NULL atau nilai special "" error. Sebuah ENUM maksimum dapat memiliki 65535 jenis nilai.
- SET('value1','value2',...)
Sebuah set, yaitu objek string yang dapat memiliki 0 nilai atau lebih, yang harus dipilih dari daftar nilai 'value1', 'value2', .... Sebuah SET maksimum dapat memiliki 64 anggota.
dengan mengenal tipe-tipe data yang didukung oleh MySQL, Anda dapat dengan tepat memilih tipe data yang Anda butuhkan dalam menyusun sebuah database.
Misalnya Anda hendak menyimpan data jumlah suatu stok barang yang tidak melebihi angka 200 misalnya, maka sebaiknya Anda memilih tipe data TINYINT yang diberi atribut UNSIGNED. Alasannya adalah jumlah stok tidak melebihi 200 dan tidak mungkin lebih kecil dari 0, dan tipe data TINYINT memiliki jangkauan 0 hingga 255, jadi memenuhi syarat untuk digunakan.
Contoh yang lain, misalnya Anda hendak membuat database nomor telpon dari teman-teman Anda. Memang nomor telpon seluruhnya terdiri dari angka, namun nampaknya tidak tepat bila disimpan dalam tipe data INT (atau bahkan BIGINT bila hendak menyimpan nomor handphone). Lebih baik dimasukkan ke dalam CHAR atau VARCHAR dengan M adalah 12. Mengapa 12? Karena nomor handphone terpanjang terdiri dari 12 digit. Sedangkan nomor telpon rumah terpanjang adalah 8 digit ditambah kode area terpanjang 4 digit, jadi angka 12 sangat pas.
Lalu bagaimana penerapannya dalam operasi MySQL? Misalnya Anda hendak membuat tabel stok barang dengan masing-masing field adalah kode barang, nama barang, harga barang, supplier, dan tanggal beli, maka kemungkinan perintah yang harus ditulis adalah sebagai berikut:
mysql> create table stok(
-> kode char(5),
-> nama varchar(20),
-> harga mediumint unsigned,
-> supplier char(5),
-> tanggal date);
Perintah tersebut di atas akan membuat tabel bernama stok dengan field-field sebagai berikut:
Nama field |
Tipe data |
Keterangan |
Kode |
Char(5) |
Kode barang biasanya memiliki jumlah karakter tetap, dalam contoh ini adalah 5. |
Nama |
Varchar(20) |
Nama barang kemungkinan besar memiliki jumlah karakter yang berbeda-beda, sehingga cocok menggunakan varchar. |
Harga |
Mediumint Unsigned |
Harga tergantung dari jenis barangnya, pada contoh ini dianggap harga barang tertinggi di bawah 100 jutaan. |
Supplier |
Char(5) |
Supplier biasanya juga dituliskan dalam kode tertentu yang jumlah karakternya tetap. |
Tanggal |
Date |
Tanggal pembelian. Umumnya waktu pembelian tidak perlu disertakan, hanya tanggalnya saja. |