laporan modul 5 basisdata
TRANSCRIPT
LAPORAN PRAKTIKUM V
“RELASI DAN JOIN”
Disusun untuk Memenuhi Matakuliah Praktikum Basis DataYang Dibimbing oleh IbuTriyanaWidiyaningTyas
Disusun Oleh:
Badria (140533606090)
Istu Purnamasari (140533601886)
S1 PTI 2014 OFF A
UNIVERSITAS NEGERI MALANG
FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
PRODI PENDIDIKAN TEKNIK INFORMATIKA
MARET 2015
MODUL V
“RELASI DAN JOIN”
A. Tujuan
1. Memahami keterhubungan entitas didalam basis data
2. Memahami jenis-jenis operasi pengambilan data di beberapa entitas
3. Mampu menyelesaikan kasus-kasus retrieval yang melibatkan lebih dari satu
entitas
B. Dasar Teori
1. ERD (Entity Relationship diagram)
Brady dan Loonam (2010), Entity Relationship diagram (ERD) merupakan
teknik yang digunakan untuk memodelkan kebutuhan data dari suatu organisasi,
biasanya oleh System Analys dalam tahap analisis persyaratan proyek pengembangan
system. ERD bersama-sama dengan detail pendukung merupakan model data yang
pada gilirannya digunakan sebagai spesifikasi untuk database.
Dalam rekayasa perangkat lunak, sebuah Entity-Relationship Model (ERM)
merupakan abstrak dan konseptual representasi data. Entity-Relationship adalah salah
satu metode pemodelan basis data yang digunakan untuk menghasilkan skema
konseptual untuk jenis/model data semantik sistem. Dimana sistem seringkali
memiliki basis data relasional, dan ketentuannya bersifat top-down. Diagram untuk
menggambarkan model Entitiy-Relationship ini disebut Entitiy-Relationship diagram,
ER diagram, atau ERD.
a. Notasi ERD
Ada sejumlah konvensi mengenai Notasi ERD. Notasi klasik sering digunakan
untuk model konseptual. Berbagai notasi lain juga digunakan untuk menggambarkan
secara logis dan fisik dari suatu basis data, salah satunya adalah IDEF1X
Notasi-notasi simbolik yang digunakan dalam Entity Relationship Diagram
terdiri dari Entitas, atribut dan relasi atau hubungan.
b. Entitas
Entitas dalah segala sesuatu yang dapat digambarkan oleh data. Entitas juga
dapat diartikan sebagai individu yang mewakili sesuatu yang nyata (eksistensinya)
dan dapat dibedakan dari sesuatu yang lain (Fathansyah, 1999). Ada dua macam
entitas yaitu entitas kuat dan entitas lemah. Entitas kuat merupakan entitas yang
tidak memiliki ketergantungan dengan entitas lainnya. Contohnya entitas anggota.
Sedangkan entitas lemah merupakan entitas yang kemunculannya tergantung pada
keberadaaan entitas lain dalam suatu relasi.
c. Atribut
Atribut merupakan pendeskripsian karakteristik dari entitas.
Atributdigambarkan dalam bentuk lingkaran atau elips. Atribut yang menjadi kunci
entitas atau key diberi garis bawah. Jenis-jenis atribut terdiri dari atribut keys,
atribut simple, atribut multivalue,atribut composite atribut derivatif.
Atribut keys, juga disebut atribut yang dapat membedakan semua baris data
( Row/Record ) dalam tabel secara unik. Dikatakan unik jika pada atribut
yang dijadikan key tidak boleh ada baris data dengan nilai yang samaContoh :
Nomor pokok mahasiswa (NPM), NIM dan nomor pokok lainnya
Atribut simple, atribut yang bernilai atomic, tidak dapat dipecah/ dipilah
lagi .Contoh : Alamat, penerbit, tahun terbit, judul buku.
Atribut Multivalue,nilai dari suatu attribute yang mempunyai lebih dari satu
(multivalue) nilai dari atrribute yang bersangkutan. Contoh : dari sebuah
buku, yaitu terdapat beberapa pengarang.
Atribut Composite,Atribut composite adalah suatu atribut yang terdiri dari
beberapa atribut yang lebih kecil yang mempunyai arti tertentu yang masih
bisah dipecah lagi atau mempunyai sub attribute. Contoh : dari entitas nama
yaitu nama depan, nama tengah, dan nama belakang
Atribut Derivatif, Atribut yang tidak harus disimpan dalam database Ex.
Total. atau atribut yang dihasilkan dari atribut lain atau dari suatu
relationship. Atribut ini dilambangkan dengan bentuk oval yang bergaris
putus-putus
d. Relasi atau Hubungan
Relasi menunjukkan adanya hubungan diantara sejumlah entitas yang berasal
dari himpunan entitas yang berbeda
e. Tahapan ERD
Tahap pertama pada desain sistem informasi menggunakan model ER adalah
menggambarkan kebutuhan informasi atau jenis informasi yang akan disimpan
dalam database. Teknik pemodelan data dapat digunakan untuk menggambarkan
setiap ontologi (yaitu gambaran dan klasifikasi dari istilah yang digunakan dan
hubungan anatar informasi) untuk wilayah tertentu.
Tahap berikutnya disebut desain logis, dimana data dipetakan ke model
data yang logis, seperti model relasional. Model data yang loguis ini kemudian
dipetakan menjadi model fisik , sehingga kadang-kadang, Tahap kedua ini disebut
sebagai “desain fisik”.
Simbol-simbol untuk membuat ERD :
Secara umum metodologi ERD sebagai berikut:
2. Join
Join dapat didefinisikan sebagai kombinasi record dari dua atau lebih tabel di
dalam basis data relasional dan menghasilkan sebuah tabel (temporary) baru yang
disebut sebagai joined table.
Jenis-jenis join dalam basis data sebagai berikut :
a. Inner Join
Inner join pada dasarnya adalah menemukan persimpangan (intersection)
antara dua buah tabel. Penggunaan relasi INNER JOIN adalah untuk
menampilkan kedua table yang direlasikan dengan menampilkan record –
record yang bersesuaian saja. Sedangkan syntak ON berfungsi menampilkan
kedua table lengkap dengan semua fieldnya tanpa menyingkat tampilan field
yang direlasikan dengan menampilkan satu kali (field yang berelasi
ditampilkan dua kali yaitu saat di deret table pertama lalu di deret table kedua)
seperti contoh di bawah
Syntax : select*from [Tabel_1] inner join [Tabel_2] on [Tabel_1].
[field yang berelasi] = [Tabel_2].[field yang berelasi];
Inner Join disebut juga EQUIJOIN - join yang berdasarkan pengujian
persamaan antara dua tabel (Forta, 2002:93).
b. Outer Join
Outer Join mirip dengan Equijoin, perbedaannya terletak pada adanya
tambahan operasi berlambang (+) yang artinya memaksakan nilai kolom di sisi
kiri untuk “dianggap sama” dengan nilai kolom di sisi kanan (Hutabarat,
2002:75).
Outer join dibagi menjadi tiga jenis :
- Left Outer Join
Left outer join (atau left join) mengembalikan semua nilai dari tabel kiri
ditambah dengan nilai dari tabel kanan yang sesuai (atau NULL jika tidak
ada nilai yang sesuai).
- Right Outer Join
Memberikan semua baris table kanan walaupun harga kolom yang
terhubung dengan kolom di table kirinya tidak cocok.
- Full Outer Join
Memberikan semua baris table kiri dan kanan walaupun harga kolom yang
terhubung tidak cocok satu sama lain. Penggunaan FULL JOIN adalah
untuk menampilkan kedua table dengan record – record yang bersesuaian
saja. Field yang berelasi ditampilkan sekali di awal table atau paling kiri
Penggunaan kondisi join adalah keharusan untuk outer join, tetapi merupakan
pilihan untuk inner join (Nugroho, 2011:308).
C. Latihan
Relationship
Pada latihan ini kita akan menggunakan dua buah tabel bernama Karyawan dan
Departemen dengan relationship bekerja pada. Struktur tabelnya diperlihatkan
sebagai berikut:
CREATE TABLE karyawan (
nama varchar(30) NOT NULL,
id_dep int(5) NOT NULL
) ENGINE=MyISAM;
CREATE TABLE departemen (
id_dep int(5) NOT NULL,
nama_dep varchar(30) NOT NULL,
PRIMARY KEY (id_dep)
) ENGINE=MyISAM;
Syntax tersebut kita ketikkan pada Notepad kemudian simpan dengan nama
yang diinginkan dan jangan lupa menggunakan ekstensi sql (*.sql)
Seperti berikut :
Setelah tersimpan dengan ekstensi *.sql kita tinggal memanggil file tersebut
pada program MySQL. Dan membuka program Mysql dapat dengan cara Start
button All Programs MySQL MySQL Server 5.2 MySQL Command
Line Client.
Setelah itu kita harus membuat/menggunakan database yang sudah ada, dengan
cara mengetikkan script use [nama_databasenya], seperti dibawah :
Setelah terdapat keterangan “Database changed” maka database tersebut sudah
bisa digunakan.
Kemudian kita akan memanggil file sql yang telah kita buat dengan menggunakan
syntax “ \. [alamat file berada]“.
a. Copy alamat tempat file berada.
b. Kemudian paste di MySQL Command Line nya (dan jangan lupa di tambahi
dengan mengetik slash “\” kemudian nama file nya) Enter .
c. Setelah muncul keterangan Query OK, maka itu tandanya berhasil.
d. Kemudian masukkan data tabelnya, dengan cara mengetikkan syntax berikut
dengan notepad.
INSERT INTO karyawan values
("Agus",10),
("Budi",16),
("Citra",12),
("Dani",17);
INSERT INTO departemen values
(10,"Penelitian"),
(11,"Pemasaran"),
(12,"SDM"),
(13, "Keuangan");
e. Simpan dengan langkah sebelumnya. Kemudian panggil pada MySQL CL nya.
Inner Join
a. Ketikkan syntax dibawah ini di notepad dan simpan dengan nama inner1.sqlSELECT * FROM karyawan INNER JOIN departemen
ON karyawan.id_dep= departemen.id_dep ;
b. Panggil pada MySQL CL
c. Setelah itu kita akan mencoba menggunakan syntax bentuk Implisit. Bentuk
Bentuk implisit dari inner join diperlihatkan sebagai berikut:SELECT * FROM karyawan, departemen
WHERE karyawan.id_dep= departemen.id_dep ;
d. Simpan dengan nama inner2.sql dan panggil melalui MySQL CL nya.
Dalam pengambilan data ini, kita juga bisa menspesifikasikan field terkait.
Sebagai contoh, hanya mengambil nama karyawan dan namadepartemen saja.
e. Ketikkan syntax dibawah ini di notepad dan simpan dengan nama inner3.sqlSELECT karyawan.nama, departemen.nama_dep FROM karyawan
INNER JOIN departemen
ON karyawan.id_dep= departemen.id_dep ;
f. Panggil melalui MySQL CL nya.
Agar penulisan SQL lebih efisien, kita dapat memanfaatkan fitur
“derivedtable” (atau alias).
g. Ketikkan syntax dibawah ini di notepad dan simpan dengan nama inner4.sqlSELECT k.nama, d.nama_dep FROM karyawan k
INNER JOIN departemen d
ON k.id_dep= d.id_dep ;
h. Panggil melalui MySQL CL nya.
Pada pernyataan SQL di atas, tabel karyawan dinotasikan dengan huruf kdan
tabel departemen menggunakan huruf d.
Outer Join
Left Outer Join
a. Ketikkan syntax dibawah ini di notepad dan simpan dengan nama
outer1.sqlSELECT * FROM karyawan k
LEFT OUTER JOIN departemen d
ON k.id_dep= d.id_dep ;
b. Panggil melalui MySQL CL nya.
Apabila diperlukan, kita juga dapat menggunakan klusa WHERE di
dalamjoin. Sebagai contoh, untuk mendapatkan data karyawan yang
tidakmemiliki departemen.
c. Ketikkan syntax dibawah ini di notepad dan simpan dengan nama
outer2.sqlSELECT * FROM karyawan k
LEFT OUTER JOIN departemen d
ON k.id_dep= d.id_dep
WHERE d.id_dep IS NULL ;
d. Panggil melalui MySQL CL nya.
Right Outer Join
a. Ketikkan syntax dibawah ini di notepad dan simpan dengan nama
router.sql
SELECT * FROM karyawan k
RIGHT OUTER JOIN departemen d
ON k.id_dep= d.id_dep ;
b. Panggil melalui MySQL CL nya.
Full Outer Join
a. Ketikkan syntax dibawah ini di notepad dan simpan dengan nama
router.sqlSELECT * FROM karyawan k
RIGHT OUTER JOIN departemen d
ON k.id_dep= d.id_dep
UNION
SELECT * FROM karyawan k
RIGHT OUTER JOIN departemen d
ON k.id_dep= d.id_dep ;
b. Panggil melalui MySQL CL nya.
Cross Join
a. Ketikkan syntax dibawah ini di notepad dan simpan dengan nama cross.sql
SELECT * FROM karyawan
CROSS JOIN departemen ;
b. Panggil melalui MySQL CL nya.
Cross join juga dapat direpresentasikan dalam bentuk implisit.
c. Ketikkan syntax dibawah ini di notepad dan simpan dengan nama cross1.sqlSELECT * FROM karyawan, departemen ;
d. Panggil melalui MySQL CL nya.
D. Tugas Praktikum
1. Dapatkan data mahasiswa yang mengambil matakuliah. Selesaikandengan
pendekatan join eksplisit dan implisit. Hindari duplikasi data.
Pendekatan secara join ekspisit
Ketikkan syntax dibawah ini di notepad dan simpan dengan nama prak1.sqlSELECT DISTINCT m.nim, m.nama
FROM mahasiswa m
INNER JOIN ambil_mk a
ON m.nim=a.nim ;
Panggil melalui MySQL CL nya.
Pendekatan secara join Implisit
Ketikkan syntax dibawah ini di notepad dan simpan dengan nama prak1b.sqlSELECT DISTINCT m.nim, m.nama
FROM mahasiswa m, ambil_mk a
WHERE m.nim=a.nim ;
Panggil melalui MySQL CL nya.
Analisis :
Syntax dari SQL diatas menggunakan distinct agar menghindari dari
duplikasi data. Kemudian karena perintah yang dibuat melibatkan dua tabel,
mahasiswa dan ambil_mk. Maka menggunakan INNER JOIN karena kita akan
mengambil data yang berada pada persimpangan antara kedua tabel.
Menggunakan WHERE m.nim=a.nim karena pada dasarnya perintah tersebut
akan mengambil/menampilkan NIM dan NAMA yang nim pada tabel
mahasiswa juga terdapat atau sama dengan nim pada tabel ambil_mk. Hal itu
akan mendefinisikan bahwa yang terdapat pada tabel ambil_mk merupakan
mahasiswa yang mengambil mata kuliah. Pendekatan secara Ekplisit dan
Implisit pada dasarnya akan memunculkan output yang sama hanya saja
bahasa yang digunakan sedikit ada perbedaan. Pendekatan secara eksplisit
lebih spesifik bahasa yang digunakan, sedangkan pendekatan secara implisit
lebih umum bahasa yang digunakan.
2. Kelompokkan data mahasiswa yang tidak mengambil matakuliahberdasarkan jenis
kelaminnya, kemudian hitung banyaknya.
Ketikkan syntax dibawah ini di notepad dan simpan dengan nama prak2.sqlSELECT m.JK, COUNT(m.JK) AS jumlah
FROM mahasiswa m
LEFT JOIN ambil_mk a
ON m.nim=a.nim
WHERE a.nim IS NULL
GROUP BY m.JK;
Panggil melalui MySQL CL nya.
Anilisis :
Dalam syntax diatas akan menghitung jumlah mahasiswa yang tidak
mengambil mata kuliah berdasarkan jenis kelaminnya. Pada proses
penghitungan, kita menggunakan fungsi agregat COUNT untuk menghitung
banyaknya. Kita menggunakan jenis LEFT OUTER JOIN karena yang akan
dihitung berada pada tabel sebelum ambil_mk (sebelah kiri). Pendeteksian
untuk mahasiswa yang tidak mengambil mata kuliah terdapat pada syntax
WHERE a.nim IS NULkarena pada field nim tabel ambil_mk null value
(kosong/tidak ada). Pengambilan data yang akan dihitung dimuat pada tabel
mahasiswa field nim yang tidak terdapat pada field nim tabel ambil_mk.
3. Dapatkan nim dan nama mahasiswa yang mengambil matakuliah beserta kode_mk
dan nama_mk yang diambilnya. Selesaikan dengan pendekatanjoin eksplisit dan
implisit.
Pendekatan secara Eksplisit
Ketikkan syntax dibawah ini di notepad dan simpan dengan nama prak3b.sqlSELECT m.nim, m.nama, k.kode_mk, k.nama_mk
FROM mahasiswa m
INNER JOIN ambil_mk a
ON m.nim=a.nim
INNER JOIN matakuliah k
ON a.kode_mk=k.kode_mk ;
Panggil melalui MySQL CL nya.
Pendekatan secara Implisit
Ketikkan syntax dibawah ini di notepad dan simpan dengan nama prak3b.sqlSELECT m.nim, m.nama, k.kode_mk, k.nama_mk
FROM mahasiswa m, matakuliah k, ambil_mk a
WHERE m.nim=a.nim AND a.kode_mk = k.kode_mk ;
Panggil melalui MySQL CL nya.
Analisis :
Syntax menampilkan 4 field yaitu nim, nama, kode_mk, dan nama_mk dari
relasi antara tabel mahasiswa, ambil_mk dan matakuliah dimana nim pada
tabel mahasiswa sama dengan nim pada tabel ambil_mk (untuk deteksi
mahasiswa yang mangambil matakuliah), dengan kode_mk pada tabel
ambil_mk sama dengan kode_mk pada tabel matakuliah (untuk deteksi mata
kuliah yang diambil). Pada pendekatan Implisit menggunakan dua INNER
JOIN karena prosesnya melibatkan 3 tabel sekaligus.
4. Dapatkan nim, nama, dan total sks yang diambil oleh mahasiswa, di manatotal
sksnya lebih dari 4 dan kurang dari 10.
Ketikkan syntax dibawah ini di notepad dan simpan dengan nama prak4.sqlSELECT m.nim, m.nama, SUM(sks) AS total_sks
FROM mahasiswa m, ambil_mk a, matakuliah k
WHERE m.nim=a.nim AND a.kode_mk=k.kode_mk
GROUP by nama
HAVING SUM(sks) >4 AND SUM(sks) <10;
Panggil melalui MySQL CL nya.
Analisis :
Pada syntax diatas terdapat 3 field yang dimunculkan yaitu nim nama dan
total_sks yang di ambil dari gabungan dari 3 tabel : mahasiswa, ambil_mk
dan matakuliah dimana nim pada tabel mahasiswa terdapat atau sama
dengan nim pada tabel ambil_mk dan kode_mk pada ambil_mk sama dengan
atau terdapat pada tabel matakuliah dengan di group berdasarkan nama
mahasiswa dan menggunakan HAVING karena persyaratan terdapat fungsi
agregat.
5. Dapatkan matakuliah yang tidak diambil oleh mahasiswa terdaftar(mahasiswa di
tabel mahasiswa)
Ketikkan syntax dibawah ini di notepad dan simpan dengan nama prak.sqlSELECT k.kode_mk, k.nama_mk, sks, semester
FROM mahasiswa m
LEFT JOIN ambil_mk a
ON m.nim=a.nim
RIGHT JOIN matakuliah k
ON a.kode_mk=k.kode_mk
WHERE nama IS NULL ;
Panggil melalui MySQL CL nya.
Analisis :
Pada syntax tersebut terdapat dua jenis outer yang digunakan yaitu LEFT dan
RIGHT OUTER JOIN karena mengakses dari 3 tabel. Pada LEFT JOIN
mengakses data nim dengan tabel mahasiswa yang sama dengan pada field
nim tabel ambil_mk kemudian pada syntax RIGHT JOIN mengakses kode_mk
pada tabel ambil_mk dengan kode_mk pada tabel matakuliah dimana nama
bernilai NULL VALUE (bernilai kosong/tidak ada). Hal ini akan
memunculkan matakuliah yang tidak diambil oleh mahasiswa terdapat pada
tabel mahsiswa.
E. Kesimpulan
1. Relationship adalah salah satu metode pemodelan basis data yang digunakan
untuk menghasilkan skema konseptual untuk jenis/model data semantik sistem.
2. Relationship bersifat top-down
3. Relationship pada basis data terdiri dari entitas.
4. Tahap pertama pada desain sistem informasi menggunakan model
ERD(relationship) adalah menggambarkan kebutuhan informasi atau jenis
informasi yang akan disimpan dalam database.
5. Tahap berikutnya disebut desain logis, dimana data dipetakan ke model data
yang logis, seperti model relasional.
6. Entitas merupakan segala sesuatu yang dapat digambarkan oleh data
7. Ada dua macam entitas yaitu entitas kuat dan entitas lemah.
Entitas kuat : merupakan entitas yang tidak memiliki ketergantungan dengan
entitas lainnya. Contohnya entitas anggota.
Entitas lemah merupakan entitas yang kemunculannya tergantung pada
keberadaaan entitas lain dalam suatu relasi
8. Atribut merupakan pendeskripsian karakteristik dari entitas.
9. Atributdigambarkan dalam bentuk lingkaran atau elips.
10. Atribut terdiri dari atribut keys, atribut simple, atribut multivalue,atribut
composite atribut derivatif.
Atribut keys adalah atribut yang tidak boleh ada baris data dengan nilai
yang sama
Atribut simple, atribut yang bernilai atomic, tidak dapat dipecah/ dipilah
lagi
Atribut Multivalue,nilai dari suatu attribute yang mempunyai lebih dari satu
(multivalue) nilai dari atrribute yang bersangkutan.
Atribut Composite, Atribut composite adalah suatu atribut yang terdiri dari
beberapa atribut yang lebih kecil yang mempunyai arti tertentu yang masih
bisah dipecah lagi atau mempunyai sub attribute.
Atribut Derivatif, Atribut yang tidak harus disimpan dalam database Ex.
11. Join adalah sebagai kombinasi record dari dua atau lebih tabel di dalam basis data
relasional dan menghasilkan sebuah tabel (temporary) baru yang disebut sebagai
joined table.
12. Ada dua jenis Join inner join dan outer join.
13. Inner join pada dasarnya adalah menemukan persimpangan (intersection) antara
dua buah tabel.
14. Outer join merupakan join yang dasarkan pada penempatan data, outer join memilki jenis Left Outer Join, Right Outer Join, Full Outer Join
F. Daftar Rujukan
Forta, Ben. 2002. Belajar Sendiri : SQL dalam 10 Menit. Yogyakarta : ANDI.
Hutabarat, Bernaridho I. 2002. Pemrograman Oracle PL/SQL. Yogyakarta :
ANDI OFFSET.
Nugroho, Adi. 2011. Perancangan dan Implementasi SISTEM BASIS DATA.
Yogyakarta : ANDI.
Tim Penulis Jurusan Teknik Elektro Fakultas Teknik Universitas Negeri
Malang 2012. Modul III, Fungsi Agregat. Universitas Negeri Malang.
Tim Penulis Jurusan Teknik Elektro Fakultas Teknik Universitas Negeri
Malang 2012. Modul V, Fungsi Agregat. Universitas Negeri Malang.
https://herlinnairine.wordpress.com/2014/02/06/entity-relationship-diagram-
erd-dan-contoh-kasus/diakses pada 02 Maret 2015
https://fairuzelsaid.wordpress.com/2010/03/16/sistem-basis-data-entity-
relationship-diagram-erd/ diakses pada 02 Maret 2015
http://i-maulidina.blogspot.com/2013/04/join-basis-data.html diakses
pada 02 maret 2015
https://www.google.com/url?
sa=t&rct=j&q=&esrc=s&source=web&cd=6&ved=0CDUQFjAF&url=http%3A%2F
%2Felearning.amikom.ac.id%2Findex.php%2Fdownload%2Fmateri%2F555043-
ST022-13%2FModul
%252010.pdf&ei=ogj3VI3tHYPjuQTh9ILIBw&usg=AFQjCNHjev_OLueya7Xzan4F
0gOvT7-
5CQ&sig2=zR0v4pGS_sBAins4Xe0yKQ&bvm=bv.87519884,d.c2E&cad=rja
diakses pada 3 maret 2015