Selasa, 25 Desember 2012

QUERY LANJUTAN

SUBQUERY
Subquery adalah statement SELECT yang dilampirkan sebagai klausa dalam SQL Statement yang lain. Untuk penulisan subquery pada SQL
Pada gambar diatas, subquery (inner query) dijalankan sekali sebelum main query. Kemudian hasil dari subquery digunakan oleh main query (outer query).

PENGGUNAAN SUBQUERY
Subquery mengembalikan nilai ke main query. Subquery digunakan untuk menyelesaikan persoalan dimana terdapat suatu nilai yang tidak diketahui (unknown values). Berikut ini diberikan contoh penggunaan subquery.

SELECT last_name
FROM mahasiswa
WHERE salary >
(SELECT salary
FROM mahasiswa
WHERE mahasiswa_id = 149);
Query diatas akan menampilkan nama pegawai yang gajinya lebih dari pegawai dengan nomer pegawai 149. Sebelumnya, gaji dari pegawai dengan nomer pegawai 149 tidak diketahui, untuk itu kita tempatkan sebagai subquery agar nilai yang tidak diketahui tersebut dapat diketahui dan pada ilustrasi gambar diatas nilai gaji dari pegawai 149 adalah 10500.

SUBQUERY BANYAK KOLOM
Pada subquery dengan banyak kolom, tiap baris dari main query dibandingkan dengan nilai dari subquery multiple-row dan multiple-column. Berikut ini contoh pembandingan dengan banyak kolom dan baris :

PEMBANDINGAN KOLOM
Pembandingan kolom dalam subquery banyak kolom dapat berupa :

1. Pembandingan berpasangan (Pairwise Comparison SubQuery)
contoh pembandingan berpasangan untuk menampilkan detail dari data mahasiswa yang mengambil mata kuliah dan dosen yang sama dengan yang dimiliki oleh nomer mahasiswa 10.

SELECT mahasiswa_id, makul_id, dosen_id FROM mahasiswa WHERE (makul_id, dosen_id) IN
(SELECT makul_id, dosen_id FROM
mahasiswa WHERE mahasiswa_id IN (10,18))
AND mahasiswa_id NOT IN (10,18);
2. Pembandingan tidak berpasangan (NonPairwise Comparison SubQuery)
Berikut contoh pembandingan tidak berpasangan untuk menampilkan detail dari data mahasiswa yang mengambil mata kuliah dan dosen yang sama dengan mahasiswa dengan nomer mahasiswa 157 dan 168 dan dosen yang sama dengan mahasiswa yang memiliki nomer pegawai 157 atau 168.

SELECT mahasiswa_id, makul_id, dosen_id
FROM mahasiswa WHERE makul_id IN
(SELECT makul_id FROM mahasiswa
WHERE mahasiswa_id IN (157,168))
AND dosen_id IN
(SELECT dosen_id FROM mahasiswa
WHERE mahasiswa_id IN (157,168))
AND mahasiswa_id NOT IN(157,168);

PENGGUNAAN QUERY DALAM KLAUSA FROM
Query bisa diletakkan di dalam klausa FROM untuk membentuk tabel temporer. Query semacam ini dikenal juga dengan istilah inline view, karena tidak membentuk object database.
Berikut ini contoh penggunaan Query dalam klausa FROM.

SELECT nama_mhs, nilai_uas, nilai_uts,FROM mahasiswa WHERE nilai_uas > nilai_uts;
 
Query diatas menampilkan nama mahasiswa, nilai uas, dan nilai uts, yang nilai UASnya lebih besar dari nilai UTS

EKSPRESI SCALAR SUBQUERY
Ekspresi scalar subquery adalah subquery yang mengembalikan hanya satu nilai kolom dari satu baris.
contoh penggunaan scalar subquery dalam ekspresi CASE :

SELECT mahasiswa_id, nama_mhs,(CASE WHEN makul_id = THEN 'SBD' ELSE 'Statistika' END) location FROM mahasiswa;
contoh penggunaan scalar subquery dalam klausa ORDER BY :

SELECT mahasiswa_id, mana_mhs FROM mahasiswa ORDER BY SELECT nama_dosen FROM dosen WHERE mahasiswa_id=dosen_id;

KORELASI SUBQUERY
Korelasi SubQuery digunakan untuk pemrosesan baris per baris. Tiap-tiap subquery dijalankan sekali untuk setiap baris dari outer query.
Prosesnya sebagai berikut :
proses korelasi dimulai dengan mengambil baris dari outer query, kemudian inner query dijalankan dengan menggunakan nilai baris kandidat, kemudian nilai dari inner query digunakan untuk melakukan kualifikasi atau mendiskualifikasi baris kandidat.
Berikut ini cara penulisan dari Korelasi SubQuery :

SELECT column1, column2, ... FROM table1 outer WHERE column1 operator (SELECT colum1, column2 FROM table2 WHERE expr1 = outer.expr2);
Korelasi Subquery juga dapat digunakan untuk meng-update baris pada satu table berdasarkan pada baris dari table yang lain, korelasi seperti itu dinamakan dengan Korelasi Update.
Berikut cara penulisan Korelasi Update :

UPDATE table1 alias1 SET column = (SELECT expression FROM table2 alias2 WHERE alias1.column = alias2.column);
Korelasi Subquery juga dapat digunakan untuk menghapus baris pada satu table berdasarkan pada baris dari table yang lain, korelasi seperti itu dinamakan dengan Korelasi Delete.
Berikut cara penulisan Korelasi Delete :

DELETE FROM table1 alias1 WHERE column operator (SELECT expression FROM table2 alias2 WHERE alias1.column = alias2.column);

PENGGUNAAN OPERATOR EXIST DAN NOT EXIST
Operator EXISTS dan NOT EXIST digunakan untuk menguji keberadaan dari baris dalam himpunan hasil dari subquery. 
1. Jika ditemukan, maka pencarian tidak dilanjutkan dalam inner query dan kondisi ditandai TRUE.
2. Jika tidak ditemukan, maka : Kondisi ditandai FALSE dan kondisi pencarian dilanjutkan dalam inner query.
Berikut penggunaan operator EXISTS untuk mencari pegawai yang memiliki
sedikitnya satu orang bawahan.

PENGGUNAAN KLAUSA WITH
Dengan menggunakan klausa WITH, kita dapat menggunakan blok query yang sama dalam statement SELECT pada saat terjadi lebih dari sekali dalam complex query. Klausa WITH mendapatkan hasil dari blok query dan menyimpannya dalam tablespace temporer kepunyaan user. Klausa WITH dapat meningkatkan performansi.
Baca selengkapnya » 0 komentar

OPTIMASI QUERY

A.     Optimasi Pada Perintah SQL

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 nama, fakultas dan NIM dari tabel mahasiswa, sebagai berikut :
CREATE INDEX idx_nama_fakultas_nim ON mahasiswa(nama, fakultas, nim) TABLESPACE INDX;
Kemudian user melakukan query sebagai berikut :
SELECT * FROM mahasiswa WHERE fakultas=’teknik’;
Pada saat melakukan query ini, index tidak akan digunakan karena kolom pertama (nama) tidak digunakan dalam klausa WHERE. Jika user sering melakukan query ini, maka kolom index harus diurutkan menurut fakultas.
SELECT * FROM mahasiswa WHERE nim BETWEEN 5302411050 AND 5302411105;
Query ini akan melakukan “scan” terhadap sedikit data block jika tabel mahasiswa diatas diurutkan berdasarkan kolom nim.
Alternatif yang lain, bisa digunakan perintah untuk membuat tabel lain yang memiliki urutan yang berbeda dari tabel asal, seperti perintah SQL berikut :
CREATE TABLE mahasiswa_urut AS SELECT * FROM mahasiswa ORDER BY nim;
Pada SQL diatas, tabel mahasiswa_urut berisi data yang sama dengan tabel mahasiswa
hanya datanya terurut berdasarkan kolom nim.

B.      Faktor Lain yang Berpengaruh Terhadap Kecepatan Akses Data
1. Optimasi Aplikasi
Dalam pembuatan aplikasi, yang perlu mendapat perhatian adalah apakah akses terhadap data sudah efisien. Efisien dalam hal penggunaan obyek yang mendukung kecepatan akses, seperti index atau cluster. Kemudian juga bagaimana cara database didesain.
Apakah desain database sudah melakukan normalisasi data secara tepat. Kadangkala normalisasi sampai level yang kesekian, tidak menjamin suatu desain yang efisien. Untuk membuat desain yang lebih tepat, kadang setelah melakukan normalisasi perlu dilakukan denormalisasi. Misalnya tabel yang hubungannya one-toone dan sering diakses bersama lebih baik disatukan dalam satu tabel.
2. Cluster dan Index
Cluster adalah suatu segment yang menyimpan data dari tabel yang berbeda dalam suatu struktur fisik disk yang berdekatan. Konfigurasi ini bermanfaat untuk akses data dari beberapa tabel yang sering di-query. Penggunaan cluster secara tepat dilaksanakan setelah menganalisa tabel-tabel mana saja yang sering di-query secara bersamaan menggunaan perintah SQL join.
Jika aplikasi sering melakukan query dengan menggunakan suatu kolom yang berada pada klausa WHERE, maka harus digunakan index yang melibatkan kolom tersebut. Penggunaan index yang tepat bergantung pada jenis nilai yang terdapat dalam kolom yang akan diindex. Dalam RDBMS Oracle, index B-Tree digunakan untuk kolom yang mengandung nilai yang cukup bervariasi, sedangkan untuk nilai yang tidak memiliki variasi cukup banyak, lebih baik menggunakan index bitmap.
Baca selengkapnya » 0 komentar

STRUCTURED QUERY LANGUAGE (SQL)

A.   Pengenalan SQL
               Structured Query Languages (SQL) pertama kali diterapkan pada sistem R (sebuah proyek riset pada laboratorium riset San Jose, IBM). Kini SQL juga dijumpai pada berbagai platform, dari mikrokomputer hingga mainframe. SQL dapat digunakan baik secara berdiri sendiri maupun dilekatkan pada bahasa-bahasa lain seperti C dan Delphi. SQL juga telah menjadi bagian dari sejumlah DBMS, seperti Oracle, Sybase, MySQL dan Informix.

B.    Elemen SQL
Elemen dasar SQL:
1. Pernyataan:  perintah SQL yang meminta sesuatu tindakan kepada DBMS. SQL memiliki kira-kira 30 pernyataan diantaranya: 
  • ALTER : Mengubah struktur table 
  •  COMMIT : Mengakhiri sebuah eksekusi transaksi
  • CREATE : Menciptakan table, indeks atau pandangan
  • DELETE : Menghapus baris pada tabel
  • DROP : Menghapus tabel, indeks atau pandangan
  • GRAND : Menugaskan hak terhadap basis data kepada pengguna atau grup pengguna
  • INSERT : Menambahkan sebuah baris pada table
  • REVOKE : Membatalkan hak terhadap basis data
  • ROLLBACK : Mengembalikan ke keadaan semula sekiranya suatu transaksi gagal dilaksanakan
  • SELECT : Memilih baris dan kolom pada tabel
  • UPDATE : Mengubah nilai pada sebuah baris
2. Nama digunakan sebagai identitas bagi objek-objek pada DBMS. Contoh objek pada DBMS adalah tabel, kolom dan pengguna.
3. Tipe Data Setiap data memiliki tipe data. Berikut ini adalah tipe data dalam MySQL :
  1. Tipe data untuk numerik : TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT, FLOAT, DOUBLE, DECIMAL(M,D).
  2. Tipe data string : CHAR(n), VARCHAR(n), TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB, TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT, ENUM, SET SET.
  3. Tipe data tanggal dan jam : DATE, TIME, DATETIME.
4. Konstanta menyatakan nilai yang tetap.
5. Ekspresi: segala sesuatu yang menghasilkan nilai. Ekspresi digunakan untuk menghitung nilai.
6. Aggregate Functions (Fungsi Agregat)
Fungsi adalah sebuah subprogram yang menghasilkan suatu nilai jika dipanggil. Fungsi agregat adalah fungsi standar di dalam SQL, suatu fungsi yang digunakan untuk melakukan summary, fungsi statistik standar yang dikenakan pada suatu tabel atau query.
  • AVG(ekspresi) : untuk mencari rata-rata nilai dalam suatu kolom
  • COUNT(x) : untuk menghitung jumlah record (baris) dari suatu kolom dari suatu tabel. X adalah nama kolom yang ingin dicari jumlah barisnya.
  • MAX(ekspresi) : untuk mencari nilai terbesar dari suatu kolom dari suatu tabel.
  • MIN(ekspresi) : untuk mencari nilai terkecil dari suatu kolom dari suatu table.
  • SUM(ekspresi) : untuk mendapatkan nilai total dari suatu kolom pada suatu tabel.
C.    Pernyataan SQL
1.    DDL(Data Definition Language)
       DDL merupakan kelompok perintah yang berfungsi untuk mendefinisikan atribut-atribut basis data, tabel, atribut(kolom), batasan-batasan terhadap suatu atribut, serta hubungan antar tabel. Yang termasuk dalam kelompok DDL ini adalah :
CREATE untuk menciptakan table ataupun indeks
ALTER untuk mengubah struktur table  
DROP untuk menghapus table ataupun indeks
2.    DML(Data Manipulation Language)
       DML adalah kelompok perintah yang berfungsi untuk memanipulasi data dalam basis data, misalnya untuk pengambilan, penyisipan, pengubahan dan penghapusan data. Perintah yang termasuk dalah kategori DML adalah : 
SELECT memilih data
INSERT menambah data
DELETE menghapus data 
UPDATE mengubah data
3.    DCL ( Data Control Language ) 
       Berisi perintah-perintah untuk mngendalikan pengaksesan data. Yang termasuk DCL adalah :
GRANT memberikan kendali pada pengaksesan data.
REVOKE mencabut kemampuan pengaksesan data
LOCK TABLE mengunci table
Baca selengkapnya » 0 komentar

Sabtu, 24 November 2012

DEPENDENCY DAN NORMALISASI

FUNCTIONAL DEPENDENCY
Functional Dependency menggambarkan hubungan attributes dalam sebuah relasi
Suatu attribute dikatakan functionally dependant pada yang lain jika kita menggunakan harga atribut tersebut untuk menentukan harga atribut yang lain.
Simbol yang digunakan adalah –> untuk mewakili functional dependency.
–> dibaca secara fungsional menentukan.
  • Notasi: A –> B
    A dan B adalah atribut dari sebuah tabel. Berarti secara fungsional A menentukan B atau B tergantung pada A, jika dan hanya jika ada 2 baris data dengan nilai A yang sama, maka nilai B juga sama 
  • Notasi: A –>  B atau  A   x–>  B
    Adalah kebalikan dari notasi sebelumnya
contoh tabel nilai :










Functional Dependency dari tabel nilai
  • NIM –> NamaMhs
    Karena untuk setiap nilai nim yang sama, maka nilai NamaMhs juga sama
  • {Matakuliah, NIM} –> NilaiHuruf
    Karena attribut NilaiHuruf tergantung pada Matakuliah dan NIM secara bersama-sama. Dalam arti lain untuk Matakuliah dan NIM yang sama, maka NilaiHuruf juga sama, karena Matakuliah dan NIM merupakan key (bersifat unik).
  • Matakuliah –> NIM
  • NIM –> NilaiHuruf
Macam-macam Dependency:
  1. Full Dependency
    Merupakan suatu ketergantungan dimana terdapat atribut A dan atribut B dalam satu relasi.
    Contoh:
    NIM –> Nilai (artinya yaitu Nilai tergantung pada atribut NIM)
    dari contoh di atas Dapat disimpulkan bahwa 1 atribut menetukan pada 1 atribut
  2. Partially Dependency
    Yaitu suatu functional Dependency yang mana beberapa atribut pada A dapat dihilangkan tetapi ketergantunga terhadap atribut B masih dapat dipertahankan.
    Contoh: NIM, nama –> idRuang (artinya idRuang tergantung pada NIM dan nama) sehingga apabila nama dihilangkan, NIM masih terdapat ketergantungan dengan idRuang.
  3. Transitive Dependency
    Merupakan salah satu functional dependency dimana keterhubungan anatara A,B,C saling berkaitan. Transitive Dependency dapat dinotasikan A –> B dan B –> C, sehingga apabila kita ingin mengaitkan A –> C maka membutuhkan relasi dari B.
    Contoh:
    Id_Pelanggan –> {Nama, Salesman, Area}
    Salesman –> Area
NORMALISASI
  • Merupakan suatu teknik untuk menghasilkan sekumpulan relasi dengan sifat-sifat yang diinginkan.
  • proses untuk mendapatkan struktur tabel atau relasi yang efisien dan bebas dari anomali dan mengacu pada cara data item dikelompokkan ke dalam struktur record.
  • proses pembentukan struktur basis data sehingga sebagian besar ambiguity bisa dihilangkan.
Alasan dilakukan normalisasi:
1. optimalisasi struktur-struktur tabel
2. meningkatkan kecepatan
3. menghilangkan pemasukan data yang sama
4. lebih efisien dalam penggunaan media penyimpanan
5. mengurangi redudansi
6. menghindari anomali
7. integritas data yang ditingkatkan

Proses Normalisasi
Ø  Suatu teknik formal untuk menganalisa relasi berdasarkan primary key atau candidate key-nya dan functional dependency antar atribut.
Ø  Dilakukan dalam beberapa langkah. Setiap langkah mengacu ke bentuk normal tertentu, sesuai dengan sifat yang dimilikinya.
Ø  Setelah normalisasi diproses, relasi secara bertahap menjadi lebih terbatas/kuat bentuk formatnya dan juga mengurangi tindakan update yang anomali.

Langkah-Langkah Normalisasi

1. Bentuk Tidak Normal (Unnormalized Form)
Merupakan kumpulan dari data yang akan direkam, tidak ada keharusan mengikuti suatu format tertentu, dapat saja data tidak lengkap atau terduplikasi, data dikumpulkan apa adanya sesuai dengan kedatangannya.

2. Bentuk Normal Kesatu (1NF / First Normal Form)
Menghilangkan beberapa elemen yang berulang agar menjadi suatu bernilai tunggal yang berinterigasi diantara setiap baris dan kolom pada suatu tabel.
Cara unttuk UNF ke 1NF:
- Tunjuk satu atau sekumpulan atribut sebagai kunci untuk tabel unnormalizied.
- Identifikasi grup yang berulang dalam tabel unnormalized yang berulang untuk kunci atribut
- Hapus grup yang berulang dengan cara memasukkan data yang semestinya ke dalam kolom yang kosong pada baris yang berisikan data yang berulang atau dengan cara menggantikan data yang ada dengan copy dari kunci atribut yang sesungguhnya  ke dalam relasi terpisah.

3. Bentuk Normal Kedua (2NF / Second Normal Form)
Normalisai bentuk kedua telah memenuhi normalisasi bentuk pertama, setiap atribut bukan kunci haruslah bergantung secara fungsi pada kunci utama (primary key), sehingga untuk membentuk normal kedua harus sudah ditentukan kunci field, kunci field haruslah unik dan tetap mewakili atribut yang lain yang menjadi anggotanya.
Langkah perubahan dari 1NF ke 2NF yaitu:
- Mengidentifikasi primary key untuk relasi 1NF.
- Mengidentifikasi functional dependency dalam relasi.
- Jika terdapat partial dependency terhadap primary key, maka hapus dengan menempatkannya dalam relasi yang baru bersama dengan salinan determinannya.

4.  Bentuk Normal Ketiga (3NF / Third Normal Form)
Untuk menjadi normal ketiga maka relasi haruslah dalam bentuk normal kedua dan semua atribut bukan primer tidak punya hubungan yang transitif dengan kata lain, setiap atribut bukan kunci haruslah bergantung pada primary key dan pada primary key  secara seluruh.
Langkah-langkah perubahan dari 2NF ke 3NF:
- Mengidentifikasi primary key dalam relasi 2NF.
- Mengidentifikasi functional dependency dalam relasi.
- Jika terdapat transitive dependency terhadap primary key, hapus dengan menempatkannya dalam relasi yang baru bersama dengan salinan determinannya.

5.  Boyce-Code Normal Form (BCNF)
Bentuk yang mempunyai paksaan yang lebih kuat dari bentuk normal ketiga. Untuk menjadi BCNF, relasi dalam bentuk normal kesatu dan setiap atribut harus bergantung fungsi pada atribut super key.

6. Bentuk Normal Keempat (4NF / Fourth Normal Form)
Relasi R adalah bentuk normal keempat dan hanya relasi tersebut termasuk BCNF dan semua tergantung multi value adalah ketergantungan fungsional.

7. Bentuk Normal Kelima (5NF / Fifth Normal Form)
Berisi PJNF (Projection Join Normal Form) dan 4NF dilakukan dengan menghilangkan ketergantungan join yang bukan merupakan kunci kandidat.
Baca selengkapnya » 0 komentar

Kamis, 15 November 2012

QUERY LANGUAGES

Query languages adalah sebuah bahasa special yang meminta pertanyaan atau perintah yang akan melibatkan data dalam database.
Ada 2 jenis Query Languages, yaitu :
  • Procedural : user menginstruksikan ke sistem agar membentuk serangkaian operasi ke dalam  basis data untuk mengeluarkan hasil yang diinginkan. Contoh : Aljabar Relational yang terdiri dari operasi dasar dan operasi tambahan.
  • Non-Prosedural : hanya menampilkan informasi. Contoh : Kalkulus Relational.
ALJABAR RELASIONAL
Adalah kumpulan operasi terhadap relasi, dimana setiap operasi menggunakan satu atau lebih relasi untuk menghasilkan satu relasi yang baru.
Jenis Operasi dalam Aljabar Relational :
  • Operasi Unary
    Operasi-operasi select, project dan rename disebut operasi unary, karena operasi-operasi tersebut hanya memerlukan satu relasi.
  • Operasi Binary
    Operasi-operasi union, set difference dan cartesian product memerlukan sepasang relasi, disebut operasi binary.
Terdapat beberapa operasi dasar dalam aljabar relasional, yaitu: 
  1. Selection ( σ ) 
    Selection / Select (σ ), adalah operasi untuk menyeleksi tupel – tupel yang memenuhi suatu  predikat, kita dapat menggunakan operator perbandingan (<,>,>=,<=,=,#) pada predikat. Beberapa predikat dapat dikombinasikan menjadi predikat manjemuk menggunakan penghubung AND ( ∧ ) dan OR ( ∨ ).
    Sintaks : σnamafield=’kondisi penentu’ (nama relasi)
    Jika untuk menyeleksi tuple-tuple dari relasi Hutang dimana nama cabangnya adalah “Jakarta”,
    ditulis : σ nama-cabang = “Jakarta” (Hutang)

  2. Projection ( π )
    Projection / Project ( π ), adalah operasi untuk memperoleh kolom – kolom tertentu. Operasi project adalah operasi unary yang mengirim relasi argumen dengan kolom – kolom tertentu. Karena relasi adalah himpunan, maka baris – baris duplikasi dihilangkan.
    Sintaks yang digunakan dalam operasi proyeksi ini adalah sebagai berikut :
    π colum1,…,column ( tabel)
    Contoh : untuk menampilkan seluruh Cabang dan jumlah tanpa Nomor Pinjaman, maka dapat dituliskan :
    π nama-cabang, jumlah (hutang)
  3. Cartesian – product ( X, juga disebut sebagai cross product )
    Cartesian-product ( X ), adalah operasi untuk menghasilkan table hasil perkalian kartesian.
    Sintaks yang digunakan dalam operasi proyeksi ini adalah sebagai berikut :
    R X S = {(x,y) | x∈R dan y∈S}
    Operasi cartesian-product memungkinkan kita mengkombinasikan informasi beberapa relasi, operasi ini adalah operasi biner. Sebagaimana telah dinyatakan bahwa relasi adalah subset hasil cartesian-product dan himpunan domain relasi – relasi tersebut. Kita harus memilih atribut – atribut untuk relasi yang dihasilkan dari cartesian-product.
    Operasi Cartesian-product akan dihasilkan informasi yang merupakan kombinasi dari dua relasi.
    Jika kita memiliki relasi r1(R1) dan r2(R2), maka r1 x r2 adalah relasi yang skemanya merupakan gabungan dari R1 (atribut-atribut relasi r1) dan R2 (atribut-atribut relasi r2).
    Contoh : Jika diinginkan nama-nama dari semua nasabah yang mempunyai pinjaman (loan) di bank cabang Bogor, maka query-nya ditulis :
    σnama-cabang = “Bogor” (borrower x loan)

  4. Union ( ∪ )
    Union ( ∪ ), adalah operasi untuk menghasilkan gabungan table degan syarat kedua table memiliki atribut yangsama, yaitu domain atribut ke-i masing – masing table harus sama. Sintaks yang digunakan dalam operasi union ini adalah sebagai berikut :
                                 R ∪ S = {x | x∈R atau X ∈S}
    Operasi ini dapat dilaksanakan apabila R dan S mempunyai atribut yang sama sehingga jumlah komponennya sama.
    Operasi union dalam aljabar relasional sama halnya dengan operasi union pada aritmatika. Misal user menginginkan nama-nama semua nasabah bank yang memiliki sebuah account atau sebuah loan atau keduanya. Perhatikan bahwa relasi customer tidak mengandung informasi tersebut
    Untuk menjawab query ini diperlukan informasi dari relasi Depositor dan relasi Borrower. Dengan operasi union informasi yang diinginkan dapat diperoleh dengan menulis query sebagai berikut :
    πnama-nasabah(borrower) U πnama-nasabah(depositor)
  5. Set – difference ( - )
    Set-difference ( - ), adalah operasi untuk mendapatkan table pada suatu relasi, tapi tidak ada pada relasi yang lainnya. Sintaks yang digunakan dalam operasi union ini adalah sebagai berikut :
                    R – S = { x | x∈R dan X ∉ S}
    Operasi ini dapat dilaksanakan apabila R dan S mempunyai atribut yang tidak sama yang akan ditampilkan, artinya adalah atribut R yang tidak ada di S akan ditampilkan, sedangkan atribut yang sama tidak ditampilkan.
    Operasi ini akan menemukan tuple-tuple yang berada pada satu relasi tetapi tidak berada pada relasi yang lainnya.
    Contoh, untuk menemukan semua nasabah bank yang mempunyai account tetapi tidak mempunyai loan, ditulis:
    πnama-nasabah(depositor) - πnama-nasabah(borrower)
  6. Rename ( ρ )
    Rename ( ρ ), adalah operasi untuk menyalin table lama kedalam table yang baru. Sintaks yang digunakan dalam operasi union ini adalah sebagai berikut :
    ρ [nama_table] (table_lama)
    Dilambangkan dengan simbol rho (ρ).
    Sintaks penulisan rename : ρx(E)
    Operasi rename mengeluarkan hasil ekspresi E dengan nama x.
    Contoh :
    πaccount.balance(σaccount.balance
Berikut beberapa operator yang digunakan pada Bahasa Query Formal:
1.   Operator Himpunan
  • Union atau gabungan (disimbolkan dengan “u”)
    Union dari relasi A dan B dinyatakan sebagai A u B
  • Intersection atau Irisan (disimbolka dengan “n”)
    Misalkan intersection dari relasi A dan B dinyatakan sebagai A n B
  • Difference (disimbolkan dengan “-”)
    Misalkan difference dari relasi A dan B dinyatakan dengan A – B
  • Cartesian Product
    Produk cartesian dari relasi A dan B dinyatakan dengan A X B
2.   Operator Relasional
  • Restrict yaitu pemilihan tupel atau record
  • Project berfungsi dalam pemilihan attribute atau field
  • Divide berfungsi untuk membagi
  • Join berfungsi untuk menggabungkan
Pada operator Operational aljabar relational dibagi menjadi 2 kelompok, yaitu:
  1. Operator dasar untuk fundamental operational
    – Unary operators: Selection, projection, rename.
    – Binary operators (union compatibilty): union, set difference, Cartesian product
  2. Operator tambahan untuk additional operasional
    – rename, intersection, join, quotient (division)
Beberapa operator tambahan pada sistem Basis Data yaitu:
  • Set Intersection (n) yaitu operasi yang berfungsi untuk menghasilkan irisan dua tabel dengan domain atribut ke-i kedua tabel tersebut sama.
  • Theta Join yaitu operasi yang menggabungkan operasi cartesian product dengan operasi selection dengan suatu kriteria yang diinginkan.
  • Natural Join yaitu perasi yang digunakan untuk menggabungkan operasi selection dan cartesian product dengan suatu kriteria pada kolom yang sama.
  • Division yaitu operasi untuk pembagian atas baris-baris dari 2 relasi.
KALKULUS RELASIONAL
- Merupakan alternatif untuk aljabar relasional.
- Memungkinkan kita menggambarkan himpunan jawaban tanpa menyatakan secara eksplisit bagaimana jawaban tersebut dihitung.
- Memiliki pengaruh yang besar pada desain bahasa query komersial seperti SQL.
- Varian kalkulus yang disajikan secara detil disebut Tuple Relational Calculus (TRC) dimana pada TRC mengambil instan (tuple) sebagai nilainya.
  1. Tupel KalkulusRelational
    Variabel Tuple merupakan variabel yang nilainya diambil dari tuple skema relasi tertentu, sehingga nilai yang ditentukan untuk satu variabel tuple tertentu, punya jumlah dan tipe field yang sama
    Ekspresi :     {t |P(t) }     →    t  :  tupel
          P :  predikat terhadapt
    Bentuk-bentuk dari predikat :
    1. S ε R             →    S :   variabel, 
     R :  Relasi
    2. S[x] θ U [y]  →  S & U : variabel tupel

    θ : operator aritmatik <, =, >, ≥, ≤, ≠
    x : atribut padaS
    y : atribut padaU
    3. S[x] θ C      →   C : konstanta
    θ : operatorpenghubung∧(and), ∨(or)
    Contoh:
    Skema relasiDOSEN (nip,nama,alamat,kota,jkel)
    Dicari nama dosenyangberada di kota‘Bogor’
    {t |t ∈DOSEN ∧t [kota]= “Bogor”}

  2. Domain Kalkulus Relational
    Ekspresi {|P }
    xi : variabeldomain
    P : predikat terhadapx
    Bentuk-bentuk dari predikat:
    1. ∈R →  R : relasi
    x : variabeldomain

    2. x θ y → x & y : variabeldomain
        θ : operatoraritmatik
    3. x θ C→    C : konstanta
    Contoh:
    Skema relasiDOSEN (nip,nama,alamat,kota,jkel)
    Dicaridata-datamengenai dosenyangmempunyainip ‘87000650’
    {|∈DOSEN ∧n = ‘87000650’} 
Baca selengkapnya » 0 komentar

Kamis, 01 November 2012

TRANSFORMASI MODEL DATA

 TRANSFORMASI MODEL DATA
  1. Entitas kuat merupakan himpunan entitas yang dilibatkan dalam ERD dan tidak memiliki ketergantungan dengan himpunan entitas lainnya.
  2. Entitas yang mempunyai atribut kunci. Entitas ini bersifat mandiri,keberadaannya tidak bergantung paa entitas lainnya. Percepatan entitas kuat selalu memiliki karakteristik yang unik disebut identifier (sebuah atribut tunggal atau gabungan atribut-atribut yang secara unik dapat digunakan untuk membedakan dari entitas kuat yang lain).
  3. Entitas lemah adalah suatu entity yang mana keberadaannya tergantung dari keberadaan entity lain dan tidak memiliki atribut yang dapat berfungsi sebagai key attribute.
  4. Entitas yang tidak mempunyai atribut kunci. Entitas lemah diidentifikasikan dengan menghubungkan entitas tertentu dari tipe entitas yang lain ditambah atribut dari entitas lemah. Tipe entitas lain yang dipakai untuk mengidentifikasi suatu entitas kemah disebut identifying owner dan relasi yang menghubungkan entitas lemah dengan owner disebut identifying relationship.


Contoh entitas pegawai :

Gambar diatas merupakan contoh dari entitas lemah dan entitas kuat.
Entitas hobi merupakan entitas lemah dan entitas mahasiswa merupakan entitas kuat.
Dalam realitas dapat pula kita jumpai adanya relasi yang secara kronologis mensyaratkan telah adanya relasi lain. Dengan kata lain,sebuah relasi terbentuk tidak hanya dari entitas tapi juga mengandung unsur dari relasi lain. Fenomena demikian dapat diakomodasi dengan Agregasi. Menggambarkan sebuah himpunan relasi yang secara langsung menghubungkan sebuah himpunan entitas dengan sebuah himpunan relasi dalam diagram E-R, sebenernya tidak tepat atau bahkan ada yang dengan tegas tidakmemperbolehkannya. Karena itu,sebagai jalan tengah,kita menggunakan notasi khusus untuk menunjukan adanya agregasi semacam itu.

Contoh Agregasi :


Transformasi Model Data ke Basis Data Fisik

Aturan umum dalam pemetaan Model Data (Level Konseptual dalam Abstraksi Data) yang digambarkan dengan Diagram E-R menjadi Basis Data Fisik (Level Fisik dalam Abstraksi Data) adalah :
  • Setiap himpunan entitas akan diimplementasikan sebagai sebuah tabel (file data).
  • Relasi dengan Derajat relasi 1:1 (satu ke satu) yang menghubungkan 2 buah himpunan entitas akan direpresentasikan dalam bentuk penambahan/penyertaan atribut-atribut relasi ke tabel yang mewakili salah satu dari kedua himpunan entitas.
  • Relasi dengan Derajat 1-N (satu kebanyak) yang menghubungkan 2 buah himpunan entitas, juga akan direpresentasikan dalam bentuk pemberian/pencatuman atribut key dari himpunan entitas pertama (yang berderajat 1) ke tabel yang mewakili himpunan entitas kedua 9yang berderajat N). Atribut key dari himpunan entitas pertama ni menjadi atribut tambahan bagi himpunan entitas kedua.


Implementasi Himpunan Entitas Lemah dan Sub Entitas

Penggunaan Himpunan Entitas Lemah (Weak Entity Sets) dan Sub Entitas dalam diagram E-R diimplementasikan dalam bentuk tabel sebagamana Himpunan Entitas Kuat (Strong Entity Sets). Bedanya jika Himpunan Entity Kuat sudah dapat langsung menjadi sebuah utuh/sempurna walaupun tanpa melihat relasinya dengan himpunan entitas yang lain,sedangkan Himpunan Entitas Lemah dan Sub Entitas hanya dapat ditranformasikan menjadi sebuah tabel dengan menyertakan pula atribut key yang ada di himpunan entitas kuat yang berelasi dengannya.



Baca selengkapnya » 0 komentar

Rabu, 03 Oktober 2012

MODEL DATA RELATIONAL


Model Data Relational adalah kumpulan tabel berdimensi dua dengan masing-masing relasi tersusun atas tuple (baris) dan atribut (kolom) pada suatu basis data.
Relasi adalah tabel yang terdiri dari beberapa kolom dan beberapa baris.
Attribute adalah kolom pada suatu relasi.
Tuple adalah baris pada sebuah relasi atau kumpulan elemen-elemen yang saling berkaitan menginformasikan tentang suatu entitas secara lengkap.
Domain adalah seluruh kemungkinan nilai yang dapat diberikan ke suatu attribut.
Degree adalah jumlah attribut dalam suatu relasi.
Cardinality adalah jumlah tuple dalam suatu relasi.

RELASI
  • Relasi menunjukkan adanya hubungan antara sejumlah entitas yang berasal dari himpunan entitas yang berbeda.
  • Struktur data dasar untuk menyimpan informasi. Strukturnya sebagai table (kumpulan table-tabel)
  • Setiap relasi memiliki schema yang mendeskripsikan nama relasi dan atribut beserta tipenya.Contoh: Mahasiswa = (nim: string, nama_mhs: string).Keterangan:Mahasiswa adalah nama relasi.nim dan nama_mhs adalah nama atribut.String adalah tipe atribut.
MENDEFINISIKAN DOMAIN
  • Memberi nama domain yang sesuai dengan nilai yang akan dimiliki domain tersebut.
  • Menentukan tipe data dari nilai yang akan membentuk domain.
  • Menentukan format dari domain.
RELATIONAL KEY
  • Candidate Key adalah atribut yang digunakan untuk membedakan antara satu baris dengan baris yang lain.
  • Primary Key adalah Candidate Key yang digunakan untuk mengidentifikasikan tuple yang unik pada suatu relasi.
  • Alternate Key adalah Candidate Key yang tidak menjadi Primary Key.
  • Foreign Key adalah atribut dlam suatu relasi yang merujuk ke Primary Key relasi lain.
BATASAN- BATASAN INTEGRITAS
  • Suatu batasan-batasan yang diberikan terhadap suatu relasi.
  • Ditetapkan ketika schema didefinisikan.
  • Dicek ketika relasi-relasi dimodifikasi atau dimanipulasi (penambahan, pengubahan, penghapusan dan pencarian/ menampilkan data).
RELATIONAL INTEGRITY RULES


1.          Null
Nilai suatu atribut yang tidak diketahui dan tidak cocok untuk baris (tuple) tersebut.
Nilai (konstanta) Null digunakan untuk menyatakn / mengisi atribut-atribut yang nilainya belum siap/tidak ada.
2.          Entity Integrity
Tidak ada satu komponen Primary Key yang bernilai Null.
3.          Referential Integrity
Garis yang menghubungkan antara satu tabel dengan tabel lain.


Jawaban Latihan 1:

Relasi : [account, customer, branch, loan]
Attribute :  pada account : [account_number, balance]
pada branch : [branch_name, branch_city, assets]
pada loan: [loan_number, amount]
pada customer : [customer_name, customer_street,
customer_city]

Jawaban Latihan 2:
Primary Key : [No_absen, Kode_pelajaran, Mata_pelajaran, Kode_guru]
Alternate Key : [Nama_siswa, Jenis_kelamin, Alamat, Nama_guru, Nilai, Jadwal]
Candidate Key : [No_absen, Nama_siswa, Jenis_kelamin, Alamat, Kode_pelajaran, Mata_pelajaran, Kode_guru, Nama_guru, Nilai, Jadwal, Ruang]
Foreign Key : [No_absen, Kode_pelajaran, Kode_guru, Mata_pelajaran]

Tabel : Siswa
No_Absen
Nama_Siswa
Jenis_Kelamin
Alamat
1
Silvia Aprely H.
Perempuan
Tegal
2
Firman Kurniawan
Laki-laki
Bekasi
3
Alivia Ratu Cahyani
Perempuan
Tegal
4
Fitriana
Perempuan
Pemalang
5
M. Fariz Alfarie
Laki-laki
Cirebon

Tabel : Pelajaran
Kode_Pelajaran
Mata_Pelajaran
TE-145
Elektronika
TE-146
Struktur Data
TE-147
Sistem Basis Data
TE-148
Metode Numerik
TE-149
Teknik Digital
TE-150
Sistem Operasi
TE-151
Matematika

Tabel : Mengambil
No_Absen
Kode_Pelajaran
Mata_Pelajaran
Nilai
1
TE-145
Elektronika
80
2
TE-146
Struktur Data
77
3
TE-147
Sistem Basis Data
65
4
TE-148
Metode Numerik
85
5
TE-149
Teknik Digital
76

Tabel : Guru
Kode_Guru
Nama_Guru
2-111
Suharto
2-112
Heris Samekto
2-113
Imron Rosyadi
2-114
Nailina Farahati
2-115
Ratna Vika Setya

Tabel : Mangajar
Kode_Guru
Kode_Pelajaran
Mata_Pelajaran
Jadwal
Ruang
2-111
TE-145
Elektronika
101
E8-201
2-112
TE-146
Struktur Data
203
E8-101
2-113
TE-147
Sistem Basis Data
405
E6-244
2-114
TE-148
Metode Numerik
303
E6-345
2-115
TE-149
Teknik Digital
105
E2-209

ERD



Baca selengkapnya » 0 komentar

Copyright © Aulia Fitriyani PTIK UNNES 2011