SQL JOIN
Bagian I
SQL BERGABUNG (SQL JOIN)
Kata kunci BERGABUNG digunakan dalam sebuah pernyataan SQL untuk query data dari dua atau lebih tabel, didasarkan pada hubungan antara kolom tertentu dalam tabel ini.
Tabel dalam database sering berhubungan satu sama lain dengan kunci.
Kunci utama adalah kolom (atau kombinasi dari kolom) dengan nilai unik untuk setiap baris. Setiap nilai kunci primer harus unik dalam tabel. Tujuannya adalah untuk mengikat data bersama-sama, di meja, tanpa mengulangi semua data di setiap meja.
Lihatlah tabel "Orang":
P_Id |
LastName |
FirstName |
Alamat |
Kota |
1 |
Hansen |
Ola |
Timoteivn 10 |
Sandnes |
2 |
Svendson |
Tove |
Borgvn 23 |
Sandnes |
3 |
Pettersen |
Kari |
Storgt 20 |
Stavanger |
Perhatikan bahwa "P_Id" kolom adalah kunci utama dalam tabel "Orang". Ini berarti bahwa tidak ada dua baris dapat memiliki P_Id yang sama. P_Id membedakan dua orang bahkan jika mereka memiliki nama yang sama.
Selanjutnya, kita memiliki "Perintah" tabel:
O_Id |
OrderNo |
P_Id |
1 |
77895 |
3 |
2 |
44678 |
3 |
3 |
22456 |
1 |
4 |
24562 |
1 |
5 |
34764 |
15 |
Perhatikan bahwa "O_Id" kolom adalah kunci utama dalam tabel "Orders" dan bahwa "P_Id" kolom mengacu pada orang-orang dalam tabel "Orang" tanpa menggunakan nama mereka.
Perhatikan bahwa hubungan antara dua tabel di atas adalah "P_Id" kolom.
SQL yang berbeda Bergabung
Sebelum kita lanjutkan dengan contoh-contoh, kami akan memberikan daftar jenis BERGABUNG dapat Anda gunakan, dan perbedaan di antara mereka.
- BERGABUNG : Kembali baris ketika ada setidaknya satu pertandingan di kedua tabel
- LEFT JOIN : Kembali semua baris dari tabel kiri, bahkan jika tidak ada pertandingan di tabel kanan
- RIGHT JOIN : Kembali semua baris dari tabel kanan, bahkan jika tidak ada pertandingan di tabel kiri
- FULL JOIN : baris Kembali ketika ada pertandingan di salah satu meja
SQL FULL JOIN Kata Kunci
The FULL JOIN baris kata kunci kembali ketika ada pertandingan di salah satu meja.
SQL FULL JOIN Sintaks
SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name
SQL FULL JOIN Contoh
The "Orang" tabel:
P_Id |
LastName |
FirstName |
Alamat |
Kota |
1 |
Hansen |
Ola |
Timoteivn 10 |
Sandnes |
2 |
Svendson |
Tove |
Borgvn 23 |
Sandnes |
3 |
Pettersen |
Kari |
Storgt 20 |
Stavanger |
The "Perintah" tabel:
O_Id |
OrderNo |
P_Id |
1 |
77895 |
3 |
2 |
44678 |
3 |
3 |
22456 |
1 |
4 |
24562 |
1 |
5 |
34764 |
15 |
Sekarang kita ingin daftar semua orang dan pesanan mereka, dan semua perintah dengan orang-orang mereka.
Kami menggunakan pernyataan SELECT berikut:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
FULL JOIN Orders
ON Persons.P_Id=Orders.P_Id
ORDER BY Persons.LastName
Hasil-set akan terlihat seperti ini:
LastName |
FirstName |
OrderNo |
Hansen |
Ola |
22456 |
Hansen |
Ola |
24562 |
Pettersen |
Kari |
77895 |
Pettersen |
Kari |
44678 |
Svendson |
Tove |
|
|
|
34764 |
Kata kunci BERGABUNG LENGKAP mengembalikan semua baris dari tabel kiri (Orang), dan semua baris dari tabel kanan (Pesanan). Jika ada baris dalam "Orang" yang tidak memiliki pertandingan di "Perintah", atau jika ada baris dalam "Pesanan" yang tidak memiliki pertandingan di "Orang", baris itu akan terdaftar juga.
SQL INNER JOIN Kata Kunci
Kata kunci INNER JOIN mengembalikan baris ketika ada setidaknya satu pertandingan di kedua tabel.
SQL INNER JOIN Sintaks
SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name
PS: INNER JOIN sama dengan JOIN.
SQL INNER JOIN Contoh
The "Orang" tabel:
P_Id |
LastName |
FirstName |
Alamat |
Kota |
1 |
Hansen |
Ola |
Timoteivn 10 |
Sandnes |
2 |
Svendson |
Tove |
Borgvn 23 |
Sandnes |
3 |
Pettersen |
Kari |
Storgt 20 |
Stavanger |
P_Id |
LastName |
FirstName |
Alamat |
Kota |
1 |
Hansen |
Ola |
Timoteivn 10 |
Sandnes |
2 |
Svendson |
Tove |
Borgvn 23 |
Sandnes |
3 |
Pettersen |
Kari |
Storgt 20 |
Stavanger |
The "Perintah" tabel:
O_Id |
OrderNo |
P_Id |
1 |
77895 |
3 |
2 |
44678 |
3 |
3 |
22456 |
1 |
4 |
24562 |
1 |
5 |
34764 |
15 |
Sekarang kita ingin daftar semua orang dan pesanan mereka - jika ada, dari tabel di atas.
Kami menggunakan pernyataan SELECT berikut:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.P_Id=Orders.P_Id
ORDER BY Persons.LastName
Hasil-set akan terlihat seperti ini:
LastName |
FirstName |
OrderNo |
Hansen |
Ola |
22456 |
Hansen |
Ola |
24562 |
Pettersen |
Kari |
77895 |
Pettersen |
Kari |
44678 |
Svendson |
Tove |
|
Kata kunci BERGABUNG KIRI mengembalikan semua baris dari tabel kiri (Orang), bahkan jika tidak ada pertandingan di tabel kanan (Pesanan).
SQL RIGHT JOIN Kata Kunci
Kata kunci BERGABUNG KANAN mengembalikan semua baris dari tabel kanan (table_name2), bahkan jika tidak ada pertandingan di tabel kiri (table_name1).
SQL RIGHT JOIN Sintaks
SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
PS: Dalam beberapa database RIGHT JOIN disebut KANAN Outer JOIN.
SQL RIGHT JOIN Contoh
The "Orang" tabel:
P_Id |
LastName |
FirstName |
Alamat |
Kota |
1 |
Hansen |
Ola |
Timoteivn 10 |
Sandnes |
2 |
Svendson |
Tove |
Borgvn 23 |
Sandnes |
3 |
Pettersen |
Kari |
Storgt 20 |
Stavanger |
The "Perintah" tabel:
O_Id |
OrderNo |
P_Id |
1 |
77895 |
3 |
2 |
44678 |
3 |
3 |
22456 |
1 |
4 |
24562 |
1 |
5 |
34764 |
15 |
Sekarang kita ingin daftar semua perintah dengan orang-orang yang mengandung - jika ada, dari tabel di atas.
Kami menggunakan pernyataan SELECT berikut:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
RIGHT JOIN Orders
ON Persons.P_Id=Orders.P_Id
ORDER BY Persons.LastName
Hasil-set akan terlihat seperti ini:
LastName |
FirstName |
OrderNo |
Hansen |
Ola |
22456 |
Hansen |
Ola |
24562 |
Pettersen |
Kari |
77895 |
Pettersen |
Kari |
44678 |
|
|
34764 |
Kata kunci BERGABUNG KANAN mengembalikan semua baris dari tabel kanan (Pesanan), bahkan jika tidak ada pertandingan di tabel kiri (Orang).
(www.w3schools.com/sql)
Normalisasi Database Relasi
NORMALISASI DATABASE RELASI
1. Normalisasi
Proses normalisasi merupakan metode yang formal/standar dalam mengidentifikasi dasar relasi bagi primary keynya (atau candidate key dalam kasus BCNF), dan dependensi fungsional diantara atribut-atribut dari relasi tersebut. Normalisasi akan membantu perancang basis data dengan menyediakan suatu uji coba yang berurut yang dapat diimplementasikan pada hubungnan individualshingga skema relasi dapat di normalisasi ke dalam bentuk yang lebih spesifik untuk menghindari terjadinya error atau inkonsistansi data, bila dilakuan update tehadap relasi tersebut dengan Abnomaly.
BEBERAPA DEFINISI NORMALISASI
- Normalisasi adalah suatu proses memperbaiki / membangun dengan model data relasional, dan secara umum lebih tepat dikoneksikan dengan model data logika.
- Normalisasi adalah proses pengelompokan data ke dalam bentuk tabel atau relasi atau file untuk menyatakan entitas dan hubungan mereka sehingga terwujud satu bentuk database yang mudah untuk dimodifikasi.
- Normalisasi dapat berguna dalam menjawab 2 pertanyaan mendasar yaitu: “apa yang dimaksud dengan desain database logical?” dan “apa yang dimaksud dengan desain database fisikal yang baik? What is phisical good logical database design?”.
- Normalisasi adalah suatu proses untuk mengidentifikasi “tabel” kelompok atribut yang memiliki ketergantungan yang sangat tinggi antara satu atribut dengan atrubut lainnya.
- Normalisasi bisa disebut jga sebagai proses pengelompokan atribut-atribut dari suatu relasi sehingga membentuk WELL STRUCTURED RELATION
WELL STRUCTURED RELATION adalah sebuah relasi yang jumlah kerangkapan datanya sedikit (Minimum Amount Of Redundancy), serta memberikan kemungkinan bagi used untuk melakukan INSERT, DELETE, MODIFY, terhadap baris-baris data pada relasi tersebut, yang tidak berakibat terjadinya ERROR atau INKONSISTENSI DATA, yang disebabkan oleh operasi-operasi tersebut.
Contoh
Terdapat sebuah relasi Mahasiswa, dengan ketentuan sebagai berikut.
· Setiap Mahasiswa hanya boleh mengambil satu mata kuliah saja.
· Setiap matakuliah mempunyai uang kuliah yang standar (tidak tergantung pada
mahasiswa yang mengambil matakuliah tersebut).
Tabel 9.1 Relasi Kuliah
NIM |
KODE MATA KULIAH |
BIAYA (Rp) |
521308001 |
Z-0321765 |
125000 |
521308002 |
L-0753098 |
350250 |
521308003 |
C-0534890 |
689000 |
521308004 |
R-0768931 |
126000 |
521308005 |
N-0956736 |
237900 |
Relasi Kuliah di atas merupakan sebuah relasi yang sederhana dan terdiri dari 3 kolom / atribut. Bila diteliti secara seksama, maka akan ditemukan redundancy pada datanya, dimana biaya kuliah selalu berulang pada setiap mahasiswa. Akibatnya besar kemungkinan terjadi error atau inkonsistensi data, bila dilakukan update terhadap relasi tersebut dengan Anomaly.
Anomaly merupakan penyimpangan-penyimpangan atau error atau inkonsistensi data
yang terjadi pada saat dilakukan proses delete, insert ataupun modify dalam suatu basis
data.
2. Teknik Normalisasi
Teknik normalisasi adalah proses pengelompokan data elemen menjadi tabel-tabel yang menunjukan entity dan relasi.
proses pembentukan tabel normal penuh ( normalisasi ) bertujuan untuk :
- membuat sekecil mungkin terjadinya data rangkap
- menghindari data yang tidak konstan terutama bila dilakukan penambahan dan penghapusan data sebagai akibat adanya data rangkap
- menjamin bahwa identitas tabel secara tunggal sebagai determinan semua attribute
proses normalisasi juga digunakan pada beberapa operasi yang berhubungan dengan data record yaitu :
- operasi penambahan ( insert )
- operasi penghapusan ( delete )
- operasi pengubahan ( update )
- operasi pembacaan data
apabila terjadi kesulitan saat proses data maka tabel-tabel dipecahkan menjadi beberapa tabel yang merupakan hasil pengelompokan data berdasarkan entity masing-masing
syarat dalam melakukan normalisasi
1) adanya field ( atribute kunci )
2) berdasarkan kepada ketergantungan fungsi
3. Bentuk-bentuk normalisasi
Proses normalisasi tabel secara umum dibagi dalam 5 tahap sehingga dikenal bentuk-bentuk tabel normal sesuai dengan tahapan normalisasi yang telah dilakukan yaitu bentuk normal pertama, kedua, ketiga, keempat, dan kelima.
3.1. bentuk tidak normal
Adalah kumpulan data yang tidak disimpan tidak mempunyai format tertentu, data disimpan apa adanya sesuai masukan yang diperoleh. Dalam bentuk ini data mungkin saja tidak lengkap tidak konsisten / terduplikasi
3.2. bentuk normal ke-1 ( 1NF = first normalized form )
Bentuk normal ke pertama dicapai apabila setiap nilai atribute adalah tunggal
ciri-cirinya:
- file dibentuk dalam bentuk plat file
- fieldnya berupa atomic value yang artinya data tidak bisa dipecah kebentuk yang lebih kecil
- tidak ada field yang sama
- setiap fieldnya mempunyai satu pengertian
3.3. bentuk normal ke-2 ( 2NF = second normalized form )
Bentuk normal ke-2 dicapai apabila atribute yang dijadikan adentitas benar-benar sebagai determinan dari semua atribute.
syarat-syarat :
- bentuk ke-2 dicapai jika tabel sudah membentuk normal ke-1
- atribut bukan kunci, harus bergantung secara fungsi pada kunci pertama
- menetukan field-field kunci-kunci bisa berupa primary key, kandidat key, dll.
3.4. bentuk normal ke-3 ( 3NF = third normalized form )
adalah bentuk normal ke-2 tanpa terjadi adanya ketergantungan transitif determinan
syarat:
- tabel sudah harus berbentuk normal ke-2
- atribut bukan primer tidak tergantung secara transitif determinan terhadap kunci primernya.
Beberapa ketentuan dan sifat model hirarki
- terdapat suatu kumpulan jenis record yang didalamnya masing-masing terdapat field yang berfungsi sebagai pengenal
- terdapat suatu kumpulan kaitan yang menghubungkan semua jenis record sehingga membentuk diagram struktur data
- kaitan tersebut membentuk suatu pohon yang semua ujungnya mengarah ke daun
- tidak mungkin ada elemen yang lebih dari satu parent
- setiap kaitan bersifat tunggal j
Studi Kasus ERD
ERD (ENTITY RELATIONSHIP DIAGRAM)
Studi Kasus
- Mahasiswa meminjam buku.
- Pada saat mendaftar menjadi anggota perpustakaan Fakultas, dicatatlah nama, nomor mahasiswa dan alamat mahasiswa. Setelah itu mereka baru bisa meminjam buku di perpustakaan. Buku-buku yang dimiliki perpustakaan banyak sekali jumlahnya. Tiap buku memiliki data nomor buku, judul, pengarang, penerbit, tahun terbit. Satu buku bisa ditulis oleh beberapa pengarang.
- Seorang mahasiswa boleh meminjam beberapa buku. Satu buku boleh dipinjam beberapa mahasiswa. Semua mahasiswa sangat perlu buku sehingga tidak ada yang tidak pernah meminjam ke perpustakaan. Ada buku yang sangat laris dipinjam mahasiswa, namun ada pula buku yang tidak pernah dipinjam sama sekali. Satu buku dapat memiliki beberapa copy, namun untuk copy yang sama memiliki satu nomor buku. Setiap peminjaman akan dicatat tanggal peminjamannya. Semua mahasiswa disiplin mengembalikan buku tepat satu minggu setelah peminjaman.
- Mahasiswa kadang-kadang terlambat mengembalikan buku, sehingga dikenakan denda.
- Fakultas memiliki 3 jurusan, dan tiap jurusan memiliki perpustakaan. Mahasiswa boleh meminjam dari perpustakaan manapun di jurusan tersebut. Setiap mahasiswa otomatis menjadi anggota pada ketiga perpustakaan tersebut. Setiap perpustakaan memiliki banyak buku. Buku yang sama hanya ada di satu perpustakaan.
Tugas.5.921410021
MODEL ENTITY RELATIONSHIP DIAGRAM
Basis data ERD
ERD digunakan untuk memodelkan struktur data dan hubungan antar data. Dengan ERD kita mencoba menjawab pertanyaan seperti : data apa yang kita perlukan? Bagaimana data yang satu berhubungan dengan yang lain.
Entity
Adalah objek dalam dunia nyata, berupa
- Object fisik : Rumah, manusia, Kendaraan, Peralatan, dll
- Object Konsep : Pekerjaan, Perusahaan, Rencana, kasus, dll
Adalah suatu objek yang dapat dibedakan atau dapat diidentifikasikan secara unik dengan objek lainnya, dimana semua informasi yang berkaitan dengannya dikumpulkan. Kumpulan dari entity yang sejenis dinamakan Entity Set
Atribut
Berfungsi untuk mendeskripsikan karakter entity atau relationship. Misal entity pegawai memiliki atribut nik, nama, alamat, nohp,dll
Varian Entitas
Entitas Lemah (Weak Entity)
Berisi entitas yang kemunculannya tergantung pada eksistensinya dalam sebuah relasi.misal entitas Mahasiswa -orang tua & hobby, pegawai - tanggungan.
Entitas kuat (Strong Entity)
Entitas yang berdiri sendiri, keberadaannya tidak tergantung dengan entitas lain.
Jenis Atribut
· Atribut Key
atribut yang digunakan untuk membedakan data secara unik.misal nik, nim, no_peserta.
· Atribut Simple
atribut bernilai tunggal, misal nama, harga, status.
· Atribut Multivalue
atribut memiliki sekelompok nilai yang banyak, misal gelar, hobby.
· Atribut Composite
atribut yang masih dapat diuraikan lagi, misal alamat, korban, waktu.
· Atribut Derivatif
atribut yang dihasilkan dari turunan atribut lain, misal umur dari tanggal lahir.
Simbol-simbol ER diagram
DERAJAT RELATIONSHIP
1. Unary ( Derajat Satu )
Adalah satu buah relationship menghubungkan satu buah entity.
Contoh :
Keterangan :
Manusia menikah dengan manusia, relationship menikah hanya menghubungkan entity manusia.
2. Binary ( Derajat Dua )
Adalah satu buah relationship yang menghubungkan dua buah entity.
Contoh :
Keterangan :
Pegawai memiliki kendaraan, sebuah relationship memiliki mengubungkan entity Pegawai dan entity Kendaraan.
3. Ternary ( Derajat Tiga )
Adalah satu buah relationship menghubungkan tiga buah entity.
Contoh :
Keterangan :
Pegawai pada kota tertentu mempunyai suatu Proyek.
Entity Bekerja mengubungkan Entity Pegawai, Proyek dan Kota
Cardinalitas Relasi
One to One
Hubungan satu ke satu. Contoh seorang Dosen mengepalai satu jurusan.
One to Many
Hubungan satu ke banyak. Contoh seorang Pelanggan membeli beberapa mobil.
Many to Many
Hubungan banyak ke banyak. Contoh mahasiswa mengambil matakuliah.