Sub Query MySQL

Senin, 17 Desember 2012 6

Sub Query MySQL

Dulu kita pernah membahas tentang Query language, dimana query adalah kita meminta language adalah bahasa jadi kita meminta dengan bahasa query kepada database untuk memberikan apa yang kita minta. Sub Query adalah query nested atau sebuah query ada di dalam query. Sub query merupakan pernyataan SELECT yang merupakan bagian dari pernyataan INSERT, SELECT. Sub query digunakan untuk menangani masalah dalam query yang kompleks bahkan kita tidak tahu nilai berapa yang akan di select atau di insert.
Beberapa kegunaan dari Sub Query adalah
  1. Subquery digunakan untuk menyelesaikan persoalan dimana terdapat suatu nilai yang tidak diketahui (unknown values).
  2. Meng-copy data dari satu tabel ke tabel lain
  3. Menerima data dari inline view
  4. Mengambil data dari tabel lain untuk kemudian di update ke tabel yang dituju
  5. Menghapus baris dari satu tabel berdasarkan baris dari tabel lain

Sub Query

Bentuk umum dari Sub Query adalah
dapat di tulis sebagai berikut : SELECT SELECT_LIST FROM TABLE WHERE EXPRESI OPERATOR (select select_list from table WHERE EXPRESI OPERATOR 'VALUE')
Contoh beberapa penggunaan sub query pada MySQL :
Subquery digunakan untuk menyelesaikan persoalan dimana terdapat suatu nilai yang tidak diketahui (unknown values). Berikut ini diberikan contoh penggunaan subquery.

Misalnya kita ingin menampilkan nama yang mempunyai nilai matakuliah tertinggi pada matakuliah METODE NUMERIK dengan kode Matakuliah

MK3003.
Tabel Mahasiswa
NIM NM_Mhs
001 JONO
002 TAUFIK
003 ROHIM
004 ROZAQ

Tabel Nilai
NIM Kode_MataKuliah Value
001 MK303 80
002 MK302 90
003 MK303 89
004 MK302 90
001 MK302 90
004 MK303 90
002 MK302 90
003 MK303 80

Tabel Mata_Kuliah
Kode_MK Nama_Matkul
MK202 OOP
MK303 Basis Data

Untuk melakukan hal tersebut kita harus menggunakan sub Query jika tidak maka hasilnya akan salah. sub Query untuk menampilkan nama yang mempunyai nilai matakuliah tertinggi pada matakuliah METODE NUMERIK dengan kode Matakuliah MK3003. adalah

SELECT Mahasiswa.NM_Mhs,Nilai.Value FROM Mahasiswa,Nilai,Mata_Kuliah WHERE Mata_Kuliah.Kode_MK = "MK303" AND Nilai.Value = (SELECT max(Value) FROM Nilai WHERE Kode_MataKuliah = "MK303");

Bagian "SELECT Mahasiswa.NM_Mhs,Nilai.Value FROM Mahasiswa,Nilai,Mata_Kuliah WHERE Mata_Kuliah.Kode_MK = "MK303" AND Nilai.Value =" disebut dengan Main Query sedangkan "(SELECT max(Value) FROM Nilai WHERE Kode_MataKuliah = "MK303")" disebut dengan sub Query yang sedang kita pelajari.

Contoh :

Sub Query juga dapat digunakan untuk mengopy suatu tabel ke tabel lain dengan menggunakan klausa INSERT . . . SELECT. . . . Berikut ini adalah contohnya

Contoh :
INSERT INTO MAHASISWA1 (NIM,Nama) SELECT NIM,NAMA FROM MHS;
Operator Exist

Merupakan jenis operator boolean, yang mengahasilkan nilai benar (true) atau salah (false). Operator exists akan memberikan nilai benar (true) kalau sub query menghasilkan paling tidak sebuah baris / record.

Contoh :
Akan ditampilkan daftar nama pegawai yang sudah mempunyai departemen.

select nama from pegawai where exists (select*from departemen where id_departemen = pegawai.id_departemen);

Keterangan: Perintah pada sub query diatas berisi pengecekan id_departemen pada tabel pegawai.

Contoh 2:
Akan ditampilkan daftar nama pegawai yang tidak mempunyai departemen :

select nama from pegawai where not exists (select*from departemen where id_departemen = pegawai.id_departemen);

Keterangan: Perintah pada sub query diatas sama dengan contoh 1, hanya ditambahkan dengan not sebelum exists untuk pengecekan id_departemen di tabel pegawai.


Operator Any
Operator Any hampir sama penggunaannya seperti Exists. Tetapi operator relasi yang digunakan biasanya selain = (sama dengan). hal tersebut disebabkan apabila operator relasi = yang digunakan, maka sebetulnya fungsi operator Any (some) sama seperti operator IN, sehingga kondisi seperti itu tidak dianjurkan karena lebih mudah pemahamannya apabila menggunakan operator IN.

Contoh :
Akan menampilkan daftar nama pegawai dan gaji yang gajinya tidak paling sedikit :

select nama, gaji from pegawai where gaji > any (select gaji from pegawai);

Operator All
Operator all digunakan untuk melakukan pembandingan dengan sub query. Kondisi dengan all menghasilkan nilai benar jika pembandingan menghasilkan benar untuk setiap nilai dalam sub query.

Contoh :
Akan menampilkan nama dan gaji pegawai yang gajinya lebih rendah daripada semua pegawai yang pekerjaannya 'SALESMAN' :

select nama, gaji from pegawai where gaji > any (select gaji from pegawai);

Optimasi Query

Optimasi query dapat kita gunakan untuk mempercepat eksekusi query dalam database. Jika data kita hanya sedikit, maka optimasi query tidak perlu dilakukan, karena eksekusi query tidak akan memakan waktu lama.  Tetapi jika data kita sudah mencapai ratusan atau  bahkan ribuan, maka akan terasa sekali eksekusi querinya  memakan waktu yang cukup lama. Untuk mengatasi hal ini maka query kita harus dioptimasi.

Salah satu cara optimasi query yaitu dengan membuat indeks pada database. Index pada database digunakan untuk meningkatkan kecepatan akses data. Pada saat query dijalankan, index mencari data dan menentukan nilai ROWID yang membantu menemukan lokasi data secara fisik di disk. Akan tetapi penggunaan index yang tidak tepat, tidak akan meningkatkan unjuk kerja dalam hal ini kecepatan akses data.

Misal digunakan index yang melibatkan tiga buah kolom yang mengurutkan kolom menurut kota, propinsi dan kode pos dari tabel karyawan, sebagai berikut :

CREATE INDEX idx_kota_prop_kodepos
ON karyawan(kota, propinsi, kode_pos)
TABLESPACE INDX;

Kemudian user melakukan query sebagai berikut :

SELECT * FROM karyawan WHERE propinsi=’Jawa Barat’;

Pada saat melakukan query ini, index tidak akan digunakan karena kolom pertama (kota) tidak digunakan dalam klausa WHERE. Jika user sering melakukan query ini, maka kolom index harus diurutkan menurut propinsi. Selain itu, proses pencarian data akan lebih cepat jika data terletak pada block tabel yang berdekatan daripada harus mencari di beberapa datafile yang terletak pada block yang berbeda.
Misal pada perintah SQL berikut ini :

SELECT * FROM karyawan
WHERE id BETWEEN 1010 AND 2010;

Query ini akan melakukan “scan” terhadap sedikit data block jika tabel karyawan diatas diurutkan berdasarkan kolom id. Untuk mengurutkan berdasarkan kolom yang berbeda-beda maka tabel disimpan dalam flat file, kemudian tabel diekspor dan diurutkan sesuai kebutuhan.
SELENGKAPNYA >>

Dependency dan Normalisasi

Senin, 26 November 2012 6

Untitled Document

Dependency dan Normalisasi

Setalah kemarin kita belajar tentang bagaimana mengirim request untuk meminta sistem agar melakukan apa yang kita inginkan, sekarang kita akan belajar dependency dan normalisasi. Dari katanya dependency sendiri berarti bergantung, ya memang ketergantungan itu yang akan kita bahas.

Functional dependency (ketergantungan fungsional) menggambarkan hubungan kaitan antara atribut-atribut dalam relasi, dikatakan fungsional dependent karena nilai dari suatu atribut digunakan oleh atribut yang lain. Simbol untuk menyatakan functional dependent adalah ⇒ dibaca secara fungsional menentukan.

Contoh : A ⇒ B (A secara fungsional menentukan B)

Artinya bahwa A secara fungsional menentukan B atau B bergantung pada A

FD



Contoh :

Tabel Nilai


Ketergantungan fungsional dari tabel Nilai di atas adalah :

  • NIM NamaMhs
    NIM menentukan Nama Mahasiswa karena NIM yang sama menunjukkan nama Mahasiswa yang sama.
  • {Matakuliah,NIM}NilaiHuruf
    Kenapa harus Matakuliah dan NIM kok tidak NIM saja atau Matakuliah saja. Karena kalau hanya NIM saja satu NIM dapat memiliki 2 nilai, Jika Matakuliah saja juga terdapat banyak nilai, oleh karena itu kita menggunakan Matakuliah dan NIM untuk menentukan Nilai Huruf.

MACAM-MACAM FUNCTIONAL DEPENDENCY

  1. Full functional dependency
  2. Partially dependency
  3. Transitive dependency

FULL DEPENDENCY

Ketergantungan penuh. Full dependency menunjukkan atribut A dan B dalam satu relasi, dimana B bergantung penuh terhadap A, maksudnya penuh disini adalah B hanya ditentukan oleh A dan hanya A saja yang menentukan B bukan subset dari A seperti contoh sebelumnya.

Contoh :

Dikatakan full dependency kalau hanya A yang menentukan B dalam hal ini adalah NIM ⇒ idRuang. Jika Nama dan NIM yang menentukan idRuang maka hal ini tidak dapat dikatakan sebagai full dependency.

PARTIALLY DEPENDENCY

Ketergantungan parsial atau sebagian. Partionally dependency ini memiliki 2 atribut dari A untuk menentukan B, namun untuk menentukan B tidak harus 2 atribut artinya jika salah satu atribut A yang menentukan B dapat dihilangkan namun tidak merubah arti relasi dan masih tetap berelasi ketergantungan.

Contoh :

Ketergantungan sebagian {NIM, Nama} ⇒ idRuang dimana jika Nama dihilangkan maka ketergantungan tetap ada.

TRANSITIVE DEPENDENCY

Transitive dependency biasanya terjadi pada tabel hasil relasi, atau kondisi dimana terdapat tiga atribut A,B,C. Kondisinya adalah A ⇒ B dan B ⇒ C. Maka C dikatakan sebagai transitive dependency terhadap A melalui B.

Contoh :

transitive

  • NIP ⇒ {Nama, Jabatan, Gaji, kdCabang, almCabang}
  • kdCabang ⇒ almCabang

NIP menentukan semua atribut dan atribut almCabang ditentukan oleh NIP namun melalui kdCabang.

NORMALISASI

Normalisas merupakan proses untuk mendapatkan struktur tabel atau relasi yang efisien dan bebas dari anomali. Anomali adalah penyimpangan atau keanehan dari suatu data base dan mengacu pada cara item dikelompokkan ke dalam struktur record. Dengan normalisasi database yang ambigu akan dihilangkan sehingga tercipta suatu database yang efisien.

Kenapa harus ada normalisasi, memang apa dampaknya kalau tidak dilakukan normalisaasi? berikut ini adalah alasannya.

  • Optimalisasi struktur-struktur tabel
  • Meningkatkan kecepatan
  • Menghilangkan pemasukan data yang sama
  • Lebih efisien dalam penggunaan storage
  • Mengurangi redundansi (kesamaan data)
  • Menghindari anomali (keanehan / penyimpangan pada saat melakukan select, insert, delete, update).
  • Meningkatkan integritas data

Untuk melakukan normalisasi data base perlu dilakukan beberapa langkah berikut. Biasanya digunakan beberapa macam normalisasi berikut ini :

  • First normal form (1NF)
  • Second normal form (2NF)
  • Third normal form (3NF)
  • Boyce-codd normal form (BCNF)
  • Four normal form (4NF)
  • Five normal form (5NF)

LANGKAH-LANGKAH NORMALISASI

1NF-FIRST NORMAL FORM

Suatu keadaan dimana masing-masing atribut hanya boleh mempunyai satu nilai saja. Pada First Normal Form tidak diperbolehkan adanya atribut yang bernilai banyak (Multivalued Atribut), tidak diperbolehkan juga atribut berupa atribut komposit atau kombinasi keduanya.

Contoh :

1nf

2NF-SECOND NORMAL FORM

Bentuk 2NF terpenuhi jika sudah memenuhi bentuk 1NF dan memiliki atribut yang full dependency pada primary key. Tidak boleh memiliki ketergantungan parsial. Jika terdapat atribut yang tidak memiliki ketergantungan terhadap primary key, maka atribut tersebut harus dipindah atau dihilangkan.

Contoh :

Bentuk 1NF

{No_peg, No_Klien} {Nama_peg, Nama_klien}

Bentuk normal 2NF

3NF-THIRD NORMAL FORM

Bentuk 3NF terpenuhi jika sudah memenuhi bentuk normal 2NF, dan tidak ada atribut non-primary key memiliki ketergantungan dengan atribut non-primary key yang lain (ketrgantungan transitive)


Contoh:
Tabel Mahasiswa (2NF)
NIM ⇒ {NamaMhs, Jalan, Kota, Provinsi, KodePos}
KodePos ⇒ {Kota, Provinsi}

Tabel KodePos Tabel Mahasiswa

NIM ⇒ {NamaMhs, Jalan, KodePos}
KodePos ⇒ {Provinsi, Kota}

BCNF - Boyce-Codd Normal Form

Bentuk BCNF dapat terpenuhi apabila setiap dependensi fungsional A ⇒ B memiliki kondisi bahwa A merupakan superkey dari tabel bersangkutan. Tabel tersebut harus di-dekomposisi berdasarkan functional dependency yang ada, sehingga B menjadi super key dari tabel-tabel hasil dekomposisi.

Setiap tabel dalam BCNF merupakan 3NF. Akan tetapi setiap 3NF belum tentu termasuk BCNF. Perbedaannya, untuk functional dependency A ⇒ B, BCNF tidak membolehkan B sebagai bagian dari primary key.

4NF - Bentuk Normal Keempat

Bentuk normal 4NF terpenuhi dalam sebuah tabel jika tabel tersebut telah memenuhi bentuk BCNF, dan tabel tersebut tidak boleh memiliki lebih dari sebuah multivalued atribute. Untuk setiap multivalued dependencies (MVD) juga harus merupakan functional dependencies.

Contoh:
Tabel yang belum memenuhi 4NF

Setiap employee dapat bekerja di lebih dari project dan dapat memiliki lebih dari satu skill. Untuk kasus seperti ini tabel tersebut harus di-dekomposisi menjadi:
  • (Employee, Project)
  • (Employee, Skill)
Tabel (Employee, Project) Tabel (Employee, Skill)

5NF - Bentuk Normal Kelima

Bentuk normal 5NF terpenuhi jika dia tidak dapat mempunyai dekomposisi lossless menjadi sejumlah tabel lebih kecil. Empat bentuk normal pertama berdasarkan pada konsep ketergantungan fungsional, sedangkan bentuk normal kelima berdasarkan pada konsep ketergantungan gabungan (join dependence). Ketergantungan gabungan berarti bahwa sebuah tabel, setelah didekomposisi menjadi tiga atau lebih tabel yang lebih kecil, harus dapat digabungkan kembali untuk membentuk tabel asal. Dengan kata lain, 5NF menunjukkan ketika sebuah tabel tidak dapat didekomposisi lagi
SELENGKAPNYA >>

Query Language

Sabtu, 10 November 2012 0

Pada pertemuan kemarin kita telah membahas tentang transformasi ERD ke dalam bentuk database fisik, dimana kita nanti akan menggunakannya dalam mengelola suatu sistem berbasis database. Nah sekarang kita akan belajar bahasa, yaitu sebuah bahasa perintah yang digunakan untuk mengambil data yang terdapat dalam database. Bahasa tersebut adalaah bahasa query (Query Language). Bahasa Query adalah sebuah bahasa dimana kita meminta
Terdapat dua bahasa dalam bahasa query yakni prosedural dan non prosedural. Salah satu contoh prosedural adalah operasi ALJABAR, dikatakan prosedural karena query ini membuat suatu urutan-urutan instruksi. Sedangkan untuk yang non-prosedural adalah operasi KALKULUS, dikatakan non-prosedural karena dia tidak menghendaki urutan-urutan instruksi.
Pada operasi relasi ALJABAR, terdapat dua operasi dasar yaitu Unary dan Binary. Dikatan Unary maksudnya adalah karena dia melakukan operasi pada satu relasi saja (relasi tunggal). Sedangkan operasi binary dia melibatkan sepasang relasi atau lebih.
Berikut ini adalah beberapa bentuk operasi dasar :
  • Selection (σ)
    Digunakan untuk memperoleh untuk menyeleksi baris-baris yang memenuhi syarat predikat dari penggunaan operator pembanding (<,>,=,=<,>=,#). Beberapa predikat menjadi majemuk dengan menggunakan AND (∧) OR (∨).
    Notasi umum : σ kolom = 'values required' (Tabel)

    Contoh
    1. Misalnya : Tampilkan data mahasiswa yang memiliki IP > 3
    2. Notasinya : σ IP>3 (Mahasiswa)
    3. SQL-nya : SELECT * FROM MAHASISWA WHERE IP>3;
  • Projection (π)
    Digunakan untuk mengambil nilai nilai dari kolom-kolom tertentu.
    Notasi umum : π kolom1, kolom2, …, kolomn (Tabel)

    Contoh
    1. Misalnya : Tampilkan NAMA MAHASISWA yang memiliki IP > 3
    2. Notasinya : π NAMA,σ IP>3 (Mahasiswa)
    3. SQL-nya : SELECT NAMA FROM MAHASISWA WHERE IP>3;
  • Union (∪)
    Digunakan untuk menghasilkan gabungan tabel dengan syarat memiliki atribut yang sama antara masing-masing tabel.
    Dalam notasi matematis adalah seperti berikut :

    R ∪ S = {x|x∈R atau x ∈ S}


    Contoh :
    1. Misalnya query : Tampilkan nid (dari relasi Dosen) Union dari nid (dari relasi Mengajar) .
    2. Notasinya : π nid(Dosen) ∪ nid(Mengajar)
    3. SQL-nya : SELECT nid FROM Dosen UNION SELECT Mengajar.nid FROM Mengajar;
  • Cartesian Product (X)
    Cratesian Product digunakan untuk memperoleh nilai dari atribut yang kita pilih dari hasil tabel yang berhubungan.
    Secara matematika notasinya adalah sebagai berikut :

    R X S = {(x,y)|x∈R dan y ∈ S}


    Contoh :
    1. Misalnya Querynya : Tampilkan nid,nama_d (dari relasi Dosen), nama_mk (dari relasi Matakuliah), thn_akademik,smt,hari,jam_ke,waktu,kelas (dari relasi Mengajar) dimana semester mengajar adalah pada semester '1'.
    2. Notasinya :
      π nid,nama_d,nama_mk, thn_akademik,smt,hari,jam_ke,waktu,kelas (σ smt=1 ∧ Dosen.nid = Mengajar.nid ∧ Mengajar.kdmk = Matakuliah.kdmkDosenXMatakuliahXMengajar)
    3. SQL-nya :
      SELECT nid,nama_d,nama_mk,thn_akademik,smt,hari,jam_ke,waktu,kelas where smt = '1' and Dosen.nid = Mengajar.nid and Mengajar.kdmk = Matakuliah.kdmk;
  • Set Difference (---)
    Digunakan untuk mendapatkan nilai darisuatu tabel relasi dimana nilai tersebut tidak terdapat dari tabel relasi yang lain.
    Notasi dalam himpunan matematika adalah sebagai berikut :

    R - S = { X | x∈R dan X ∉ R}

    adalah jika terdapat nilai dari atribut tabel 1 sama dengan nilai atribut dari tabel dua maka tidak ditampilkan. Dalam kasus ini hanya menampilkan nilai yang tidak ada di tabel lain.

    Contoh :
    1. Misalnya Query : Tampilkan nid (dari relasi Dosen) Set-difference dari nid (dari relasi Mengajar).
    2. Notasinya :π nid(Dosen) -- nid(Mengajar)
    3. SQL-nya : SELECT nid FROM Dosen EXCEPT SELECT nid FROM Mengajar;
      Atau bisa juga dengan
      SELECT DISTINCT * FROM Dosen WHERE NOT EXISTS (SELECT * FROM Mengajar WHERE Dosen.nid = Mengajar.nid);
      Atau bisa juga dengan
      SELECT DISTINCT * FROM Dosen WHERE NOT IN (SELECT * FROM Mengajar WHERE Dosen.nid = Mengajar.nid);
      Atau bisa juga dengan

      SELECT DISTINCT Dosen.* FROM (Dosen LEFT OUTER JOIN Mengajar on Dosen.nid = Mengajar.nid) WHERE Mengajar.nid IS NULL
  • Rename (ρ)
    adalah operasi untuk menyalin tabel lama ke dalam tabel baru.
    Notasinya adalah sebagai berikut :

    ρ[nama_tabel](tabel lama)

    Contoh :
    1. Misalnya quer : Salinlah table baru dengan nama DosenNew dari table Dosen, dimana jenis kelaminnya adalah 'Pria'.
    2. Notasinya : ρ[DosenNew]((σ jKelamin='pria')(Dosen))
    3. SQL-nya : INSERT INTO DosenNew SELECT * FROM Dosen WHERE jKelamin='pria';
SELENGKAPNYA >>

Transformasi ERD ke Basis Data Fisik (Model Data Relational Lanjut)

Kamis, 25 Oktober 2012 6


Pada pertemuan kemarin kita sudah belajar apa itu model data relational. Pada kali ini kita akan belajar transformasi model data ke basis data fisik yakni cara mengubah suatu model data menjadi bentuk basis data yang akan kita gunakan untuk membuat suatu sistem basis data yang sesungguhnya, serta implementasi entitas lemah dan sub entitas.
Varian Entitas
  • Entitas kuat : himpunan entitas yang dilibatkan dalam ERD yang mana memiliki sifat tidak memiliki ketergantungan terhadap himpunan entitas yang lainnya.
  • Entitas lemah : suatu entitas yang mana keberadaannya tergantung dari keberadaan entitas lainnya. Yang menjadi ciri utama dari entitas lemah ini adalah tidak memiliki atribut key yang berfungsi sebagai Primary Key.
Contoh Entitas kuat dan entitas lemah :

Gambar 1. Entitas kuat dan lemah
Entitas mahasiswa sebagai entitas kuat karena dia tidak bergantung pada entitas yang lain dan memiliki atribut key yang bertindak sebagai primary key yang ditandai dengan tulisan bergaris bawah yaitu nim.
Sedangkan entitas hobi merupakan entitas lemah karena dia keberadaannya tergantung pada entitas mahasiswa.Dan dia tidak memiliki atribut yang menyatakan bahawa itu primary key.
Agregasi
Agregasi adalah hubungan yang menggambarkan sebuah relasi yang berhubungan dengan relasi yang sudah ada dihasilkan dari hubungan antara 2 entitas pada ERD. jadi hubungan yang dihasilkan oleeh 2 entitas tersebut sebagai prasyarat untuk adanya relasi yang lain. Dengan kata lain, relasi tidak hanya terbentuk melalui entitas melainkan juga mengandung unsur dari relasi yang lain.

Gambar 2. Agregasi
TRANSFORMASI MODEL DATA KE BASIS DATA FISIK
Transformasi merupakan perubahan dari suatu bentuk kebentuk yang laing. Dalam pembahasan kita berubah bentuk menjadi basis data fisik yang kita gunakan untuk membangun suatu sistem basis data, yakni ERD (Entity Relationship Diagram) ditransformasikan dalam bentuk basis data secara fisik.
Komponen ERD (Entity Relationship Diagram) ditransformasikan dalam bentuk tabel yang merupakan komponen utama pembentukan basis data. Atribut yang terdapad pada masing-masing entitas akan dinyatakan sebagai field atau kolom dari tabel yang sesuai.
Teknis untuk melakukan tranformasi ERD ke dalam basis data fisik
  1. Setiap entitas akan diimplementasikan dalam bentuk sebagai sebuah tabel. contohnya seperti berikut ini :

    Gambar 3. Transformasi entitas menjadi sebuah tabel-tabel
  2. Relasi dengan derajat Relasi 1-1 yang menghubungkan 2 buah himpunan entitas yang direpresentasikan dalam bentuk penambahan/penyertaan atribut-atribut relasi ke tabel yang mewakili salah satu dari kedua himpunan entitas. contohnya seperti berikut ini :

    Gambar 4. Transformasi entitas dan relasinya yang mempunyai drajat relasi 1-1
  3. Relasi dengan derajat relasi 1-N yang menghubungkan 2 buah himpunan entitas, juga akan direpresentasikan dalam bentuk pemberian/pencantuman atribut key dari himpunan entitas berderajat 1 ke tabel yang mewakili himpunan entitas berderajat N.
    Atribut key dari himpunan entitas berderajat 1 menjadi atribut tambahan bagi himpunan entitas berderajat N.
    Contoh :

    Gambar 5. Transformasi entitas dan relasinya yang mempunyai drajat relasi N-1
  4. Relasi dengan derajat relasi N-N yang menghubungkan 2 buah himpunan entitas, diwujudkan dalam bentuk tabel khusus yang memiliki field (tepatnya foreign key) yang berasal dari key-key dari himpunan Entitas yang dihubungkannya.
    Contoh :

    Gambar 6. Transformasi entitas dan relasinya yang mempunyai drajat relasi N-N


    IMPLEMENTASI HIMPUNAN ENTITAS LEMAH DAN SUB ENTITAS
    Himpunan entitas lemah tidak dapat berdiri sendir tanpa entitas kuat. Dalam mentransformasikan dari ERD ke dalam bentuk basis data fisik keduanya sama akan terbentuk sebuah tabel. Namun yang membedakan adalah jika entitas kuat jika ditransformasikan ke dalam basis data fisik langsung menjadi tabel memiliki atribut key yang bertindak sebagai primary key dan atribut yang lain secara utuh, maka entitas lemah hanya dapat di transformasikan dalam bentuk tabel dengan menyertakan primary key dari entitas kuat dan atribut yang dimiliki oleh entitas lemah itu sendiri.
    Contoh : 

    Gambar 7. Bentuk ERD dari suatu himpunan entitas lemah dan kuat beserta relasinya
    Sehingga tabel dalan basis datanya adalah seperti gambar dibawah ini:

    Gambar 8. Bentuk Tabel yang terbentu dari transformasi ERD pada gambar noomer 7

    Pada gambar di atas jelas terlihat bahwa entitas kuat dapat langsung ditransformasikan membentuk tabel dengan atribut yang dimiliki oleh dirinya sendiri. Sedangkan kita lihat pada entitas orang tua yang merupakan entitas lemah setelah ditransformasikan ke bentuk tabel basis data atributnya harus mengambil primary key dari entitas mahasiswa yang merupakan entitas kuat karena memang entitas lemah tidak dapat berdiri sendiri. Begiut juga dengan entitas hobi.
    Kemudian untuk implementasi sub entitas contohnya seperti berikut :

    Gambar 9. Sub entitas dan super entitas
    Maksudnya gambar di atas adalah terdapat suatu relasi antara super entitas dengan sub-sub entitas di bawahnya namanya adalah hubungan ISA yang ber arti "is a", maksudnya hubungan ini hampir sama seperti hubungan "inheritance", yakni super entitas akan mewariskan atribut yang dimilikinya untuk digunakan pada sub entitasnya contoh seperti dosen memiliki atribut kode dos, apabila dia seorang dosen tetap dia mempunyai NIK dll. Disamping dia memiliki NIK dia juga akan memiliki kode dos karena dia termasuk turunan dari dosen begitu juga untuk dosen tidak tetap dia juga memiliki atribut yang berbeda juga namun dia juga turunan dari dosen karena dia memiliki kode dos. Ini yang dinamakan dengan hubungan antara sub entitas.
    STUDI KASUS
    Transformasikan ER model dari studi kasus rental VCD ke bentuk basis data fisik berikut :

    Gambar 10. ERD untuk Rental VCD
    1. Tabel untuk kelompokFilm
      jenisHarga_sewa
          
    2. Tabel untuk Film
      Kode_filmJudulJml_KepingJml_film
            
    3. Tabel untuk hubungan pengelompokan film
      Kode_filmJenisJudulJml_KepingJml_film
        
              
    4. Tabel untuk Customer
      No_IdentitasJenis_IdentitasNamaAlamat
                 
    5. Tabel untuk Menyewa
      Kode_SewaTgl_SewaTgl_KembaliTotal_filmTotal_hargaDenda
                       
      Pada relasi menyewa karena setiap Customer dapat meminjam lebih dari satu film, sehingga tabel ini menghubungkan antara entitas customer dengan entitas film sehingga relasi menyewa ini harus dapat mengubungkan antara 2 tabel tersebut. tabel relasinya untuk menghubungkan antara menyewa dengan costumer seperti berikut ini
      Kode_SewaNo_IdentitasTgl_SewaTgl_KembaliTotal_filmTotal_hargaDenda
                          
      Sedangkan untuk menghubungkan menyewa dengan jenis yang disewa dibutuhkan suatu tabel baru yaitu detil menyewa yang isinya seperti berikut ini:
      Kode_SewaKode_film
           

    Berikut ini adalah kira-kira gambaran dari keterhubungan tabel-tabel yang telah kita buat tadi :

    Gambar 11. Hasil tabel yang sudah terbentuk dari transformasi di atas
SELENGKAPNYA >>

Model Data Relational

Kamis, 04 Oktober 2012 0

UNTUK TUGASNYA DAPAT BACA DI HALAMAN INI

Model data relasional merupakan kumpulan dari tabel dua dimensi dengan masing-masing relasi (relation) tersusun atas tuple (baris) dan atribut (kolom) pada suatu basis data.
Model data relasional ini meletakkan sebuah relasi dalam bentuk suatu tabel baru. Masing-masing tabel memiliki struktur yang mirip dengan entitas basis data yang berhubungan.
Istilah istilah yang terdapat dalam model data relasional :
  1. Relasi : sebuah tabel yang terdiri dari beberapa kolom dan beberapa baris yang merupakan suatu bentuk tabel baru yang dapat menghubungkan beberapa tabel yang memang pada desainnya berhubungan.
  2. Atribut : merupakan kolom /field pada sebuah relasi.
  3. Tuple / baris : baris pada relasi. Merupakan elemen-elemen yang saling berkaitan yang dapat memberi informasi tentang suatu entitas sesuai atribut yang ada.
  4. Domain : merupakan suatu nilai yang dapat dimasukkan ke dalam atribut.
  5. Degree : merupakan jumlah atribut pada suatu relasi.
  6. Cardinality : jumlah seluruh tuple/ baris dalam sebuah relasi.
Relasi
Relasi menunjukkan adanya keterkaitan antara sejumlah entitas dari himpunan entitas yang berbeda. Relasi memiliki skema yang mendeskripsikan nama relasi dan atribut beserta tipenya.

Contoh :

Table keterrhubungannya adalah :
Domain
Cara mendefinisikan domain ada 3 :
  1. Memberi nama domain yang sesuai dengan nilai yang akan dimiliki domain tersebut.
  2. Menentukan tipe data dari nilai yang akan membentuk domain.
  3. Menentukan format domain.
Relational key
Merupakan suatu kunci hubungan yang terdapat pada sebuah relasi . ada 4 macam :
  1. Candidate key : atribut yang digunakan untuk membedakan baris yang satu dengan baris yang lain.
  2. Primary key : yaitu candidate key yang digunakan untuk membedakan tiap tuple/baris yang unik pada suatu relasi.
  3. Alternate key : yaitu candidate key yang bukan primary key.
  4. Foreing key : Sebuah atribut dalam suatu relasi yang merujuk pada primary key relasi yang lain.
   Contoh :

  • Candidat key : NIS, NAMA, TTL.
  • Primary key : NIS.
  • Alternate key : nama, ttl.
Integrity constraints( batasan-batasan integritas)
Meruakan suatu batasan yang diberikan terhadap suatu relasi ketika skema relasi didefinisikan batasan-batasan tersebut dicek ketika relasi-relasi dimanipulasi (dilakukan penambahan, pengubahan, penghapusan dan pencarian atau menampilkan data).

Berikut ini adalah aturan hubungan integritas :

  1. Null
    merupakan nilai suatu atribut yang tidak diketahui dan tidak cocok untuk baris (tuple) tersebut. digunakan untuk menyatakan atau mengisi atribut-atribut yang nilainya memang belum siap atau tidak ada.
  2. Entity integrity
    tidak ada satu komponen primary key yang benilai null.
  3. Referential integrity
    garis yang menghubungkan antara satu table dengan satu table yang lain.
  4. Domain constraints
    nilai yang mengsi atribut haruslah bersifat atomic.
  5. Key constraints
    Tidak boleh ada dua tuple yang isinya sama dalam satu relasi. Harus ada atribut yang membedakan antara tuple satu dengan tuple yang lain.
SELENGKAPNYA >>

Tugas Model Data Relasional

Senin, 01 Oktober 2012 0

UNTUK RESUME MATERINYA SILAKAN BACA DI HALAMAN INI

Soalny adalah sebagai berikut :




JAWAB :


latihan 1 :
Relation Key-nya
Candidate key
  1. Account
    • Account number
    • Balance
  2. Branch
    • Branch name
    • Asset
  3. Loan
    • Loan number
    • Amount
  4. Customer
    • Customer name
    • Customer city
Primari key
  1. Account : Account number
  2. Branch : Branch name
  3. Loan : Loan number
  4. Customer : Customer name
Alternate key
  1. Account : Balance
  2. Branch : Asset
  3. Loan : Amount
  4. Customer : Customer city
latihan 2 :
  1. Membuat Tabel Siswa, Pelajaran, Guru masing-masing tabel 5 baris
    • Tabel SISWA :
      SISWA
      NIS Nama TTL Alamat Jenis kelamin Kelas
      1201 Arul Pati,7-03-90 Bendol L XII
      1202 Erik Pati,7-05-93 Bamban L X
      1203 Atun Pati, 09-06-90 Tanjung P XII
      1204 Laras Jepara, 10-10-94 Tempur P XI
      1205 Fikri Jepara, 10-11-90 Kajen L XII

    • Tabel PELAJARAN
      Mapel
      KMP Pelajaran Pengampu
      K112 Fisika 11305123
      SL103 Matematik 11406110
      R114 Kimia 11305190
      SB123 Biologi 11509111
      S101 Bahasa inggris 11407221
    • Tabel GURU
      GURU
      NIP Nama TTl Alamat Alamat
      11305123 Syarif Pati, 1-02-78 Kayen L
      11406110 Ahmad Pati, 20-02-88 Puri L
      11305190 Ali Pati,21 -03-90 Tayu L
      11509111 Karyono Kajen, 10-10-88 Ngembal L
      11407221 Sulis Pati, 9-09-89 Runting L

  2. Membuat tabel baru dan keterhubungannya

    Tabel Nilai
    NIS KMP Pengampu Nilai Akhir
    1201 K112 11305123 90
    1202 K112 11406110 89
    1203 R114 11305190 80
    1204 SB123 11509111 87
    1205 SB123 11407221 97
  3. Atribut kunci yang ada
    Relation Key-nya
    Candidate key
    1. Siswa
      • NIS
      • Nama
    2. Mapel
      • KMP
      • Pelajaran
      • Pengaampu
    3. Guru
      • NIP
      • Nama
    4. Nilai
      • NIS
    Primari key
    1. Siswa : NIS
    2. Mapel : KMP
    3. Guru : NIP
    4. Nilai : NIS
    Alternate key
    1. Siswa : Nama
    2. Mapel : Pelajaran, pengampu
    3. Guru : Nama
    4. Nilai : -
  4. ERD (Entity Relationship Diagram) yang terbentuk ditunjukkan gambar berikut ini :
SELENGKAPNYA >>

ERD (Entity Relationship Diagram)

Sabtu, 22 September 2012 0

Minggu kemarin kita sudah belajar tentang lingkungan basis data, yakni terdapat beberapa komponen dalam lingkungan basis data di antaranya adalah ada bahasa basis data, arsitektur, DBMS, Komponen basis data.
Nah sekarang kita belajar untuk memodelkan bentuk basis data dengan ERD (Entity Relationship Diagram).  Untuk memudahkan kita kita sebut saja pembahasan kita dengan ERD. ERM (Entity Relationship Model) digunakan untuk menggambarkan entitas dan atribut yang berhubungan secara konseptual dan abstrak. Sedangkan ERD (Entity Relationship Diagram) merupakan diagram untuk menggambarkan hubungan antara entitas dan atribut yang berhubungan.
Sebelum kita lebih jauh terlebih dahulu kita pahami : (a) Entitas, (b) Atribut, (c) Relasi, (d) Cardinality Relationship. Setelah itu kita bahas bagaimana taham membuat ERD itu senditi.
  1. Entitas merupakan objek yang mewakili dari objek dalam dunia nyata serta dapat dibedakan dengan objek lainnya. Entitas ada 2 macam entitas kuat (strong entity) dan entitas lemah (weak entity). Entitas kuat adalah entitas yang tidak memilik dependensi (ketergantungan) kepada entitas lainnya. Sebaliknya entitas lemah adalah entitas yang keberadaannya tergantung dari entitas yang lainnya. Set entitas merupakan kumpulan dari entitas yang memiliki atribut yang sama.
    entitas digambarkan dalam ERD dengan persegi panjang.
    Contoh dari entitas :
    1. Mahasiswa
    2. Dosen
    3. Pelanggan
    4. Dll.
  2. Ngomong-ngomong tentang atribut, apa sih atribut itu. Atribut adalah merupakan perangkat yang melengkapi sebuah entitas. Contoh : Entitas MAHASISWA memiliki atribut no id, Nama, Jenis kelamin, Prodi, Jurusan. Atribut digambarkan dalam ERD dengan elips.
    Berikut ini adalah beberapa jenis dari atribut :
    1. Atomic Attribute : atribut yang tediri dari atas satu komponen tunggal dengan keberadaan yang independen, tidak bisa diuraikan lagi . Biasanya atribut ini merupakan kode unik yang tidak ada yang menyamabi, contoh : nim, no ID.
    2. Composit Attribute : atribut yang terdiri dari beberapa atribut yang telah mendasar, bisa diuraikan, contoh mahasiswa memiliki alamat, Atribut alamat terdiri dari atribut, nomer rumah, jalan, desa, kecamatan, kabupaten, rt, rw.
    3. Single-Value Attribute : atribut yang hanya mempunyai satu nilai dari suatu entitas tertentu. contoh :  jenis kelamin.
    4. Multi-Value Attribute : atribut yang terdiri dari sekumpulan nilai untuk suatu entitas tertentu. contoh : hobi, satu orang dapat memiliki hobi lebih dari satu.
    5. Derivat Attribute : atribut yang dihasilkan dari atribut lain yang tidak satu entitas. Contoh : atribut umur dapat dihasilkan dari atribut tanggal lahir, denda dapan dihasilkan dari atribut lama peminjaman.
  3. Relasi (Relationship) merupakan deskripsi dari hubungan yang terjadi antara satu entitas dengan entitas yang lain. Relasi juga dapat memiliki atribut dimana terjadi adanya transaksi yang menghasilkan suatu nilai tertentu. Dalam ERD relasi digambarkan dengan jajran genjang.
    Contoh : MAHASISWA dengan MATAKULIAH mempunyai relasi MENGAMBIL.

  4. Cardinality Ratio menjelaskan jumlah keterhubungan satu entitas dengan entitas yang lain, serta menjelaskan jumlah maksimum entitas yang dapat berelasi. Berikut ini adalam macam-macam kardinalitas suatu relasi :
    1. One to one : satu entitas paling banyak berhubungan dengan satu entitas saja. contoh : Mahasiswa dengan
    2. One to many : satu entitas berhubungan dengan berbagai entitas yang lain lebih dari satu entitas. Contoh : Dosen wali dengan mahasiswa, satu dosen wali dapat berhubungan (memiliki) beberapa mahasiswa
    3. Many to one : beberapa entitas hanya dapat berhubungan dengan satu entitas lain. Contoh : Mahasiswa dengan dosen wali, beberapa mahasiswa hanya memiliki satu dosen wali.
    4. Many to many : banyak entitas dapat berhubungan dengan banyak entitas yang berbeda. Contoh : peminjam berhubungan dengan buku, beberapa peminjam dapat meminjam buku yang berbeda
  5. Notas ERD notasi-notasi dari ERD dapat di jelaskan dengan simbol yang terdapat pada gambar dibawah ini :

    source : http://ocopflame.files.wordpress.com/2010/07/1notasi_dasar_erd.jpg
    Dari gambar di atas kita dapat merepresentasikan ERM yang telah kita buat menjadi sebuah ERD berbentuk diagram dengan simbol diatas. Untuk menghubungkannya kita menggunakan garis. Untuk merepresentasikan kardinalitinya kita dapat lihat seperti gambar dibawah ini :
    Gambar di atas merupakan salah satu contoh relasi satu entitas dengan entitas yang memiliki kardinalitas one to many.
Setelah kita mengetahui pengertian dasar ERD, kita akan belajar bagaimana tahapan tahapan untuk membuat suatu ER Diagram. Berikut ini adalah tahap-tahap untuk membuat ER Diagram :
  1. Mengidentifikasi entitas yang terlibat
  2. Mentukan atributnya
  3. Tentukan hubungannya
  4. Menentukan atribut dari relasinya (di kelompokkan, menyewa )
  5. Menentukan atribut setiap relasi (menyewa : tgl sewa, tgl kembali)
  6. Menentukan cardionaliti ratio
  7. Participation constraint

Studi kasus

Misalnya kita ingin membuat suatu program untuk perpustakaan, bagaimana desain dari tabel basis datanya dan coba kita identifikasikan entitas, atribut serta relasinya !!
Jawab :
  1. Kita tentukan entitas-entitas yang terlibat beserta atribut-atribut yang melengkapinya. Berikut adalah hasil dari identifikasinya :
    Entitas Atribut
    Buku No_ID, Judul, jml_halaman, Pengarang, tahun terbit,penerbit,jenis
    Peminjam No_ID, jenis ID, Nama, Alamat, tempat kerja
    Kelompok buku No_id RAK, Jenis kelompok, hargapinjam
  2. Setelah itu kita tentukan hubungan antara entitas tersebut. Hasilnya relasi yang mungkin terbentuk adalah seperti dibawha ini
    Entitas1 Relasi Entitas2
    Peminjam Meminjam Buku
    Buku Di kelompokkan Kelompok buku
  3. Setelah itu kita tentukan atribut yang terjadi dari Relasi yang terbentuk tersebut
    Relasi Atribut relasi
    Meminjam Tgl. Pinjam, Tgl. Kembali, Lama pinjam, Denda
    Dikelompokkan
  4. Kemudian kita tentukan kardinalitinya
    Entitas1 Relasi Entitas2 Kardinalitas
    Peminjam Meminjam Buku Many to many
    Buku Di kelompokkan Kelompok buku Many to one
  5. Kemudian kita gambarkan dalam bentuk diagram seperti dibawah ini
SELENGKAPNYA >>

Diberdayakan oleh Blogger.