Sunday, 5 April 2015

Basis Data ( DDL , ERD dan AGREGASI & GROUPING )

DDL & DML

DDL atau Data Definition Language adalah kumpulan perintah SQL yang dapat digunakan untuk membuat dan mengubah struktur dan definisi tipe data dari objek-objek database seperti tabel, index, trigger, view, dan lain-lain.

Contoh perintah DDL :

Membuat tabel

CREATE TABLE
Digunakan untuk membuat tabel. Syntax umumnya sebagai berikut :

CREATE TABLE [schema, ] table ( column datatype [DEFAULT expr][,...]);
Contoh : 
create table mahasiswa(
nim varchar(20) primary key not null,
nama_mhs varchar(50) not null,
alamat varchar(50) not null,
no_hp varchar(20) not null
);

Menghapus tabel

DROP TABLE
Semua data dan struktur dari table akan dihapus Semua transaksi pending akan di-commit Semua indeks akan dihapus Perintah drop ini tidak bisa di-rollback Sebagai contoh, jika kita ingin menghapus tabel dept, maka yang harus dilakukan adalah :
DROP TABLE dept; 
Contoh :
Drop table mahasiswa;

Menambah /menghapus kolom
Statemen ALTER TABLE digunakan untuk :
~ Menambahkan kolom baru
Untuk menambah kolom baru, syntax umumnya sebagai berikut :
ALTER TABLE table ADD (column datatype [DEFAULT expr] [, column datatype]...);
Contoh :
alter table mhs add column (usia varchar(5) not null);--menambah kolom

~ Memodifikasi kolom yang sudah ada

Kita dapat memodifikasi kolom dengan mengubah tipe datanya, ukuran dan nilai defaultnya.
Sintaks dari perintah ALTER TABLE untuk memodifikasi kolom sebagai berikut :
ALTER TABLE table MODIFY (column datatype [DEFAULT expr] [, column datatype] ... );
Contoh :
alter table mhs modify usia int;-- mngganti deinisi kolom

DML atau Data Manipulation Language adalah kumpulan perintah SQL yang berhubungan dengan pekerjaan mengolah data di dalam table.

Contoh perintah DML :
Penambahan data pada sebuah tabel

Syntax:
INSERT INTO nama_tabel(field ke-1, ….. field ke-n) 
VALUES(nilai_field_ke-1, …. nilai_field_ke-n);

Pembaruan data pada sebuah tabel

Syntax:
UPDATE nama_tabel SET nama_field = data_baru WHERE nama_field = data_lama;

Penghapusan data pada sebuah tabel

Syntax:
DELETE FROM nama_tabel [ WHERE kondisi];


Pemilihan data dari satu atau beberapa tabel

Syntax : 
SELECT [DISTINCT] select_list 
FROM table_source [WHERE search_condition] 
[GROUP BY group_by_expression] 
[HAVING search_condition]
 [ORDER BY order_expression [ASC | DESC] ]


ERD

Bahasan Sistem Basis Data kali ini tentang Entity Relationship Diagram (ERD) salah satu bentuk pemodelan basis data yang sering digunakan dalam pengembangan sistem informasi.

Pengertian ERD

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 modelEntitiy-Relationship ini disebut Entitiy-Relationship diagram, ER diagram, atau ERD.

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.



Model ERD

Notasi-notasi simbolik yang digunakan dalam Entity Relationship Diagram adalah sebagai berikut :
Entitas, Adalah 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.
Atribut, Atribut merupakan pendeskripsian karakteristik dari entitas. Atribut digambarkan dalam bentuk lingkaran atau elips. Atribut yang menjadi kunci entitas atau key diberi garis bawah.
Relasi atau Hubungan, Relasi menunjukkan adanya hubungan diantara sejumlah entitas yang berasal dari himpunan entitas yang berbeda.
Penghubung antara himpunan relasi dengan himpunan entitas dan himpunan entitas dengan atribut dinyatakan dalam bentuk garis.

Contoh ERD


Derajat relasi atau kardinalitas

Menunjukkan jumlah maksimum entitas yang dapat berelasi dengan entitas pada himpunan entitas yang lain. Macam-macam kardinalitas adalah:

Satu ke satu (one to one), Setiap anggota entitas A hanya boleh berhubungan dengan satu anggota entitas B, begitu pula sebaliknya.

Satu ke banyak (one to many), Setiap anggota entitas A dapat berhubungan dengan lebih dari satu anggota entitas B tetapi tidak sebaliknya.

Banyak ke banyak (many to many), Setiap entitas A dapat berhubungan dengan banyak entitas himpunan entitas B dan demikian pula sebaliknya.



Agregasi Dan Grouping

Agregasi dalam SQL merupakan proses untuk mendapatkan nilai dari sekumpulan data yang telah
dikelompokkan. Pengelompokan data didasarkan pada kolom atau kombinasi kolom yang dipilih.
Beberapa fungsi untuk agregasi adalah:

MAX : mencari data terbesar dari sekelompok data
MIN : mencari data terkecil dari sekelompok data
COUNT : mencari cacah data (data NULL tidak akan dimasukkan dalam perhitungan,kecuali disebutkan secara khusus)
SUM : mencari jumlah dari sekumpulan data numeris
AVG : mencari rerata dari sekumpulan data numeris

Sintaks SQL untuk melakukan pengelompokan adalah:

SELECT [daftar-kolom-non-agregasi,] daftar-kolom-agregasi
FROM daftar-tabel
[WHERE kondisi-record-dalam-tabel]
[GROUP BY daftar-kolom-agregasi]
[HAVING kodisi-filter-hasil-agregasi]
[ORDER BY daftar-kolom-pengurutan]

Contoh nya kasus : 
create database pert3;

use pert3;

create table mahasiswa(
nim varchar(10) primary key,
nama varchar(25) not null,
alamat varchar(25) not null,
usia int not null,
angkatan int not null
);

create table dosen(
nip varchar(10) primary key,
nama_dosen varchar(25) not null,
alamat varchar(25) not null,
gelar varchar(20) not null
);

create table matkul(
kode_matkul varchar(10) primary key,
nip varchar(10) not null,
nama_matkul varchar(10) not null,
semester int(11) not null,
foreign key (nip) references dosen(nip)
);

create table nilai(
kode_nilai varchar(10) primary key,
nim varchar(10) not null,
kode_matkul varchar(10) not null,
nilai int not null,
foreign key(nim) references mahasiswa(nim),
foreign key(kode_matkul) references matkul(kode_matkul)
);

insert into mahasiswa values
("1300001","Abdul Aziz Priatna","Bandung","20","2013"),
("1300002","Andi Rahman Fauzi","Cikarang","19","2013"),
("1300003","Rizky Cahyana","Banten","19","2013"),
("1300004","Nurridayanti Fatmala","Bandung","19","2013"),
("1300005","Irsyad Riandri Dana Prawira","Bandung","20","2013");

insert into dosen values
("1005","Herbert","Medan","S2"),
("1818","Harsa Warsa","Klaten","S2"),
("2010","Enjun Junaeti","Solo","S2"),
("2013","Eka Fitrajaya","Indramayu","S2"),
("2210","Rosa Ariani Sukamto","Sidoarjo","S2")
;

insert into matkul values
("IK001","1005","Disweb",3),
("IK002","1818","Probstat",3),
("IK003","2013","Logif",2),
("IK004","2010","Kalkulus",2),
("IK005","1005","Promnet",4),
("IK006","2210","Alpro 2",2),
("IK007","2210","PB)",4)
;

insert into nilai values
("N001","1300001","IK001",85),
("N002","1300002","IK002",87),
("N003","1300003","IK003",70),
("N004","1300004","IK004",60),
("N005","1300005","IK005",100),
("N006","1300001","IK006",79),
("N007","1300002","IK007",64),
("N008","1300003","IK001",75),
("N009","1300004","IK002",70),
("N010","1300005","IK003",90),
("N011","1300001","IK004",90),
("N012","1300002","IK005",100),
("N013","1300003","IK006",100),
("N014","1300004","IK007",67),
("N015","1300005","IK001",95),
("N016","1300001","IK002",69),
("N017","1300002","IK003",65),
("N018","1300003","IK004",60),
("N019","1300004","IK005",100),
("N020","1300005","IK006",100);


select avg(nilai) as rata_rata from nilai;
+------------+
| avg(nilai) |
+------------+
|    81.3000 |
+------------+

select count(nama_dosen) from dosen;

select max(nilai) from nilai;

select min(nilai) from nilai;

select sum(nilai) from nilai;

select *from matkul order by nama_matkul desc;

select nim, kode_matkul, nilai from nilai group by nim,kode_matkul having avg(nilai)>80;

CREATE VIEW V_nilaMHS as Select a.nim, a.nama, b.nama_matkul, c.nama_dosen,
d.nilai
FROM mahasiswa as a, matkul as b, nilai as d,dosen as c
WHERE a.nim=d.nim and b.kode_matkul=d.kode_matkul and c.nip=b.nip;

create view v_mhs as select
mahasiswa.nim,
mahasiswa.nama,
matkul.nama_matkul,
nilai.nilai
from
mahasiswa,
matkul,
nilai
where
mahasiswa.nim=nilai.nim and matkul.kode_matkul=nilai.kode_matkul;

--tampilkan nama dosen yg memiliki huruf a , dan di asc

select nama_dosen from dosen 
where nama_dosen like '%a%' order by nama_dosen asc;

--rata2 usia
select avg(usia) from mahasiswa;

--
select *from nilai where nilai between 70 and 90 group by kode_matkul;

--buat dan tampilkan table semu dimana fieldnya terdiri dari nim, nama_matkul,nilai dimana lebih besar dari 75
create view terserahgue1 as
select mahasiswa.nim,matkul.nama_matkul,nilai.nilai
from mahasiswa,matkul,nilai
where 
mahasiswa.nim = nilai.nim and
nilai.kode_matkul = matkul.kode_matkul
having
nilai>75
;

0 komentar: