ERD, DDL, DML, AGGREGASI, Dan GROUPING
1.
ERD
( Entity Relationship Diagram )
Entity Relationship Diagram (ERD) adalah
menyediakan cara untuk mendeskripsikan perancangan basis data pada peringkat
logika.
Entity Relationship Diagram (ERD)
adalah gambaran mengenai berelasinya antarentitas.
- Sistem adalah kumpulan elemen yang
setiap elemen memiliki fungsi masing-masing dan secara bersama-sama mencapai
tujuan dari sistem tersebut.
- ‘Kebersama-sama’-an dari sistem di
atas dilambangkan dengan saling berelasinya antara satu entitas dengan entitas
lainnya
- Entitas (entity/ entity set),
memiliki banyak istilah di dalam ilmu komputer, seperti tabel (table), berkas
(data file), penyimpan data (data store), dan sebagainya
ERD merupakan suatu model untuk
menjelaskan hubungan antar data dalam basis data berdasarkan objek-objek dasar
data yang mempunyai hubungan antar relasi.ERD untuk
memodelkan struktur data dan hubungan antar data, untuk menggambarkannya
digunakan beberapa notasi dan simbol. Pada dasarnya ada tiga simbol yang
digunakan, yaitu :
a.
Entiti
Entiti merupakan objek yang mewakili
sesuatu yang nyata dan dapat dibedakan dari sesuatu yang lain. Simbol dari
entiti ini biasanya digambarkan dengan persegi panjang.
b.
Atribut
Setiap entitas pasti mempunyai
elemen yang disebut atribut yang berfungsi untuk
mendeskripsikan karakteristik dari entitas tersebut. Isi dari atribut mempunyai
sesuatu yang dapat mengidentifikasikan isi elemen satu dengan yang lain. Gambaratribut diwakili
oleh simbol elips.
c.
Hubungan / Relasi
Hubungan antara sejumlah entitas
yang berasal dari himpunan entitas yang berbeda. Relasi dapat digambarkan
sebagai berikut :
Relasi yang terjadi diantara dua himpunan entitas (misalnya A dan B) dalam satu basis data yaitu:
1). Satu ke satu (One to one)
Hubungan relasi satu ke satu yaitu setiap entitas pada himpunan entitas A berhubungan paling banyak dengan satu entitas pada himpunan entitas B.
2). Satu ke banyak (One to many)
Setiap entitas pada himpunan entitas A dapat berhubungan dengan banyak entitas pada himpunan entitas B, tetapi setiap entitas pada entitas B dapat berhubungan dengan satu entitas pada himpunan entitas A.
3). Banyak ke banyak (Many to many)
Setiap entitas pada himpunan entitas A dapat berhubungan dengan banyak entitas pada himpunan entitas B.
contoh ERD
Relasi yang terjadi diantara dua himpunan entitas (misalnya A dan B) dalam satu basis data yaitu:
1). Satu ke satu (One to one)
Hubungan relasi satu ke satu yaitu setiap entitas pada himpunan entitas A berhubungan paling banyak dengan satu entitas pada himpunan entitas B.
2). Satu ke banyak (One to many)
Setiap entitas pada himpunan entitas A dapat berhubungan dengan banyak entitas pada himpunan entitas B, tetapi setiap entitas pada entitas B dapat berhubungan dengan satu entitas pada himpunan entitas A.
3). Banyak ke banyak (Many to many)
Setiap entitas pada himpunan entitas A dapat berhubungan dengan banyak entitas pada himpunan entitas B.
contoh ERD
Contoh penggambaran ERD :
2.
DLL (Data Definition Language)
Data Definition Language (DDL) adalah bahasa dalam DBMS (DataBase Management system)
yang digunakan untuk membuat atau mendefinisikan obyek-obyek di dalam database.
Secara umum digunakan untuk membuat obyek table dan view.
DDL ddigunakan untuk mespesifikasikan struktur/skema
basis data yang menggambarkan/mewakili desain basis data secara keseluruhan.
Hasil kompilasi perintah DDL adalah kamus data >>File yang berisi
metadata (data yang mendeskripsikan data sesungguhnya). Sedangkan struktur
penyimpan dan metode akses yang digunakan oleh sistem basis data disebut dengan
data storage and definition language
1. Membuat trigger
2. Membuat stored procedure
3. Membuat database, index, rule, schema dll (tergantung
DBMS)
Contoh sintaks DDL :
DDL untuk tabel
*
Untuk membuat tabel
CREATE TABLE (
|
)
|
)
*
Untuk menghapus tabel
DROP
TABLE
* Untuk memodifikasi tabel
-
Menambahkan kolom baru
ALTER TABLE
ADD
ADD
-
Menghapus kolom
ALTER TABLE
DROP
DROP
Selain beberapa sintaks yang telah dicontohkan diatas masih
banyak lagi sintaks-sintaks yang digunakan dalam DDL.
Adapun beberapa objek basis data yang termasuk didalam DDL
diantarannya adalah :
1. Tabel
Tabel terdiri dari field-field atau kolom-kolom dengan tipe
data tertentu dan baris-baris yang digunakan sebagai penyimpan data. Contoh :
tabel Mahasiswa yang terdiri dari field-field : NRP (primary key), Nama,
Alamat, JenisKel, NIPDosen (foreign key dari field NIP pada tabel
Dosen).
Sintaks DDLnya :
CREATE TABLE Mahasiswa (
NRP char(8),
Nama varchar(20) NOT NULL,
Alamat varchar(30),
JenisKel char(1) DEFAULT “L”,
NIPDosen char(9),
PRIMARY KEY (NRP),
CONSTRAINT fk_mhs_dosen FOREIGN KEY (NIPDosen) REFERENCES Dosen(NIP) ON DELETE RESTRICT ON UPDATE CASCADE ON INSERT RESTRICT
);
NRP char(8),
Nama varchar(20) NOT NULL,
Alamat varchar(30),
JenisKel char(1) DEFAULT “L”,
NIPDosen char(9),
PRIMARY KEY (NRP),
CONSTRAINT fk_mhs_dosen FOREIGN KEY (NIPDosen) REFERENCES Dosen(NIP) ON DELETE RESTRICT ON UPDATE CASCADE ON INSERT RESTRICT
);
2. View
View adalah tabel bayangan. Tidak menyimpan data secara
fisik. Biasanya berupa hasil query dari tabel-tabel dalam sebuah database.
Contoh : view MahasiswaPria yang diambil dari tabel Mahasiswa di mana field
JenisKel = “L”.
Sintaks DDLnya :
CREATE VIEW MahasiswaPria AS
SELECT * FROM Mahasiswa WHERE JenisKel = “L”
SELECT * FROM Mahasiswa WHERE JenisKel = “L”
Trigger
Trigger adalah sebuah obyek dalam database
yang berupa prosedur yang merespon setiap kali terdapat proses modifikasi (insert,
update, dan delete) pada tabel.
Contoh : trigger tLogUbahNilai
melakukan penambahan data pada tabel LogHistoris untuk setiap penambahan / update
data pada tabel PesertaKul.
Sintaks DDLnya :
CREATE TRIGGER tLogUbahNilai ON
TABLE PesertaKul
FOR UPDATE, INSERT AS
INSERT INTO LogHistoris (Tanggal, Proses) VALUES (getdate(), ‘Terjadi proses perubahan data nilai’)
FOR UPDATE, INSERT AS
INSERT INTO LogHistoris (Tanggal, Proses) VALUES (getdate(), ‘Terjadi proses perubahan data nilai’)
Dengan menggunakan sintaks SQL yang ada maka kita bisa
membuatl DDL .
Keterangan
:
- Emp_name dan dep_name tidak boleh dikosongi
- Isi default emp_name = pegawai baru
- Isi default emp_address = surabaya
Dengan
sintaks DLLnya adalah :
create table DEP (
DEP_ID CHAR(6) not null,
DEP_NAME VARCHAR2(20),
constraint PK_DEP primary key (DEP_ID)
);
DEP_ID CHAR(6) not null,
DEP_NAME VARCHAR2(20),
constraint PK_DEP primary key (DEP_ID)
);
create table EMP (
EMP_ID CHAR(8) not null,
DEP_ID CHAR(6),
EMP_NAME VARCHAR2(25) default ‘pegawai_baru’,
EMP_ADDRESS VARCHAR2(35) default ’surabaya’,
constraint PK_EMP primary key (EMP_ID),
constraint FK_EMP_WORK_AT_DEP foreign key (DEP_ID) references DEP (DEP_ID)
);
EMP_ID CHAR(8) not null,
DEP_ID CHAR(6),
EMP_NAME VARCHAR2(25) default ‘pegawai_baru’,
EMP_ADDRESS VARCHAR2(35) default ’surabaya’,
constraint PK_EMP primary key (EMP_ID),
constraint FK_EMP_WORK_AT_DEP foreign key (DEP_ID) references DEP (DEP_ID)
);
3.
DML (Data manipulation Language)
DML atau Data manipulation Language merupakan
perintah-perintah yang berfungsi untuk melakukan manipulasi data ataupun
objek-objek yang ada didalam table. Definisi lainnya tentang DML adalah
Perintah-perintah untuk memanipulasi data pada basis data, misalnya perintah
untuk memilih data (query), menyisipkan, mengubah dan menghapus data dalam
basis data.
Bentuk manipulasi yang dapat dilakukan oleh DML diantaranya
adalah untuk keperluan pencarian kembali data lama, penyisipan data baru,
penghapusan data, pengubahan data, dll. Sedangkan DML sendiri menurut jenisnya
dapat dibagi menjadi 2 jenis yaitu procedural dan non procedural.
Beberapa manfaat atau kegunaan dari DLL diantaranya adalah
sebagai berikut :
1. Pengambilan informasi yang disimpan dalam basis data
2. Penyisipan informasi baru ke basis data
3. Penghapusan informasi dari basis data
4. Modifikasi informasi yang disimpan dalam basis data
5. Query adalah perintah yang ditulis untuk mengambil
informasi. Bagian dari DML yang menangani pengambilan informasi ini disebut
bahasa query.
Selanjutnya kita akan membahasa tentang sintaks dan contoh
dari penggunaan DML, yaitu :
1.
Insert
Berfungsi Untuk memasukkan sejumlah data kedalam table yang telah dibuat.
Syntax:
insert into table_name (column1, column2, …, column_n)
values (value1, value2, …, value_n);
Contoh:
insert into mahasiswa (nrp,nama)
values (‘5106100032′, ‘Fajri Aryuanda’);
Berfungsi Untuk memasukkan sejumlah data kedalam table yang telah dibuat.
Syntax:
insert into table_name (column1, column2, …, column_n)
values (value1, value2, …, value_n);
Contoh:
insert into mahasiswa (nrp,nama)
values (‘5106100032′, ‘Fajri Aryuanda’);
2.
Delete
Berfungsi untuk menghapus sejumlah data yang ada didalam table yang telah dibuat.
Syntax:
delete table_name where column_name=column_content;
Contoh:
delete mahasiswa where nrp=’5106100032′;
Berfungsi untuk menghapus sejumlah data yang ada didalam table yang telah dibuat.
Syntax:
delete table_name where column_name=column_content;
Contoh:
delete mahasiswa where nrp=’5106100032′;
3.
Update
Berfungsi untuk melakukan perubahan terhadap sejumlah data yang ada didalam table yang telah dibuat.Syntax:
update table_name
set column1_name=column1_content
where column2_name=column2_content;
Contoh:
update mahasiswa
set nama=’Fajri Aryuanda’, alamat=’U-144′
where nrp=’5106100032′;
Berfungsi untuk melakukan perubahan terhadap sejumlah data yang ada didalam table yang telah dibuat.Syntax:
update table_name
set column1_name=column1_content
where column2_name=column2_content;
Contoh:
update mahasiswa
set nama=’Fajri Aryuanda’, alamat=’U-144′
where nrp=’5106100032′;
4.
Select
Berfungsi untuk melakukan pengambilan sejumlah data yang ada di dalam table untuk ditampilkan ataupun dimanipulasi
Syntax:
Select column from table_name
Contoh:
Select * from mahasiswa;
Berfungsi untuk melakukan pengambilan sejumlah data yang ada di dalam table untuk ditampilkan ataupun dimanipulasi
Syntax:
Select column from table_name
Contoh:
Select * from mahasiswa;
4. Agregasi
Pengertian dari Agregasi yaitu hubungan langsung dalam ERD
antara himpunan entitas dengan himpunan relasi, mensyaratkan telah adanya
relasi lain. terbentuknya relasi tidak juga dari entitas tapi bisa juga
mengandung unsur relasi lainnya.Contoh Agregasi
Transformasi Model Data ke Basis Data Fisik
ERD dibentuk menjadi sebuah basis data dalam bentuk fisik. Komponan ERD (himpunan entitas dan relasi) diubah menjadi tabel komponen utama pembentuk basis data
. Attribute yang melekat di masing-masing himpunan entitas dan relasi akan disebut sebagai field dari tabel tersebut
Transformasi Dasar
Himpunan entitas akan dijadikan sebuah tabel
Relasi dengan derajat Relasi 1-1 yang menyambungkan 2 buah himpunann entitas yang dijadikan ke bentuk penambahan/penyertaan attribute-attribute relasi ke tabel yang mewakili dari salah satu kedua himpunan entitas
Relasi dengan derajat relasi 1-N yang mana 2 buah himpunan entitas dihubungkan, dan juga akan membentuk dalam pemberian/pencantuman attribute key dari hhimpunan entitas berderajat 1 ke tabel yang mewakili himpunan entitas derajat N. Himpunan entitas derajat N mempunyai attribute tambahan yaitu attribute key dari himpunan entitas derajat 1
Relasi dengan derajat relasi N-N yang mana 2 buah entitas dihubungkan dan direpresentasiakan kedalam bentuk tabel khusus yang mana field (foreign key) berasal dari key-key himpunan entitas yang dihubungkan
Implementasi Himpunan Entitas Lemah dan Sub Entitas
Penggunaan himpunan Entitas Lemah dan Sub Entitas dalam diagram ER diwujudkan dalambentuk tabel seperti entitas kuat. Mungkin bedanya jika himpunan entitas kuat sudah dapat langsung menjadi tabel sempurna meskipun tanpa relasi dengan himpunan entitas lainnya dilihat. Maka himpunan entitas lemah hanya dapat diubah jadi tabel dengan menyertakan pada attribute key dari hasil implementasi himpunan lemah.
Implementasi Himpunan Entitas Lemah
Implemantasi Himpunana Entitas Lemah dan Sub Entitas
Studi Kasus
Rental VCD ER MOdel ke Basis Data Fisik
Tabel KelompokFilm
Tabel film
Tabel Customer
Tabel menyewa, karena costomer dapat menyewa banyak film, maka relasi menyewa mempunyai attribute multivalue berupa kode_film, jadi relasi menyewa dipecah lagi jadi:
Tabel Menyewa, penambahan attribute kode_sewa sebagai alternatif
Tabel Detailmenyewa
Hasil Akhir (Basis Data Relational)
5. Grouping
1.
Order By
Order by adalah perintah yang digunakan untuk
menampilkan data secara
terurut berdasarkan nilai tertentu. Order by
dikelompok menjadi 2 jenis yaitu
ascending (data diurutkan dari yang terkecil ke
terbesar) dan descending(data
diurutkan dari yang terbesar ke terkecil).
Perintah umum : SELECT *FROM(nama_tabel) ORDER BY
atribut ASC/DESC
Contoh :
SELECT *FROM matkul ORDER BY matkul DESC;
2.
Group By
Group by merupakan perintah yang digunakan untuk
mengelompokan
beberapa data pada perintah SELECT;
Perintah Umum : SELECT *FROM(nama_tabel) GROUP BY
atribut;
Contoh:
SELECT * FROM nilai GROUP BY nim;
3.
Having
Fungsi Having terkait dengan GROUP BY dan AGREGASI.
Biasanya digunakan untuk
menentukan kondisi tertentu pada group by dan
kondisi tersebut berkaitan dengan fungsi
agrgasi. Fungsi HAVING sebenarnya memiliki kemiripan
dengan WHERE dalam
penggunaannya. HAVING digunakan dalam SQL karena
WHERE tidak dapat digunakan
dengan fungsi agregasi.
Perintah Umum: SELECT atribut FROM nama_tabel GROUP
BY atribut HAVING fungsi_agregasi:
Contoh:
SELECT nim, kode_matkul, nilai FROM nilai GROUP BY
nim, kode_matkul HAVING
AVG(nilai)>80;
4.
View
View dapat disebut sebagai sebuah table
semu/bayangan. Data-data pada
table view dapat merupakan gabungan dari data pada
tabe-tabel lain. View dapat
digunakan untuk membatasi pengaksesan atas sebuah
table tertentu, jadi user
hanya boleh melihat table yang berisi data-data secara
spesifik. Perintah
umum:CREATE VIEW NAMA_VIEW AS<QUERY>
Contoh:
CREATE VIEW V_nilaiMHS 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;
DATABASE RENTAL VCD
yangcreate database rental_VCD;
use rental_VCD;
create table customer(
no_id varchar(5) primary key,
jenis_id varchar(10) not null,
Nama varchar(20) not null,
Alamat varchar(30) not null
);
mysql> desc customer;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| no_id |
varchar(5) | NO | PRI | NULL |
|
| jenis_id | varchar(10) | NO |
| NULL | |
| Nama |
varchar(20) | NO | | NULL
| |
| Alamat |
varchar(30) | NO | | NULL
| |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.02 sec)
create table film (
kode_film varchar(10) primary key,
judul varchar(15) not null,
jml_keping int(3) not null,
jml_film int(3) not null
);
mysql> desc film;
+------------+-------------+------+-----+---------+-------+
| Field |
Type | Null | Key | Default |
Extra |
+------------+-------------+------+-----+---------+-------+
| kode_film |
varchar(10) | NO | PRI | NULL |
|
| judul |
varchar(15) | NO | | NULL
| |
| jml_keping | int(3)
| NO | | NULL
| |
| jml_film | int(3) | NO
| | NULL |
|
+------------+-------------+------+-----+---------+-------+
4 rows in set (0.02 sec)
create table kelompok_film (
jenis varchar(10) not null,
harga_sewa int(10) not null
);
mysql> desc kelompok_film;
+------------+-------------+------+-----+---------+-------+
| Field |
Type | Null | Key | Default |
Extra |
+------------+-------------+------+-----+---------+-------+
| jenis |
varchar(10) | NO | | NULL
| |
| harga_sewa | int(10)
| NO |
| NULL | |
+------------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)
create table sewa (
kode_sewa varchar(10) Primary key,
total_film int(10) not null,
total_harga int(10) not null,
denda int(10) not null,
tgl_sewa varchar(20) not null,
tgl_kembali varchar(20) not null
);
mysql> desc sewa;
+-------------+-------------+------+-----+---------+-------+
| Field |
Type | Null | Key | Default |
Extra |
+-------------+-------------+------+-----+---------+-------+
| kode_sewa |
varchar(10) | NO | PRI | NULL |
|
| total_film |
int(10) | NO |
| NULL | |
| total_harga | int(10)
| NO | | NULL
| |
| denda |
int(10) | NO |
| NULL | |
| tgl_sewa |
varchar(20) | NO | | NULL
| |
| tgl_kembali | varchar(20) | NO |
| NULL | |
+-------------+-------------+------+-----+---------+-------+
6 rows in set (0.01 sec)
create table detail_sewa (
kode_sewa varchar(10) primary key,
kode_film varchar(5) not null
);
mysql> desc detail_sewa;
+-----------+-------------+------+-----+---------+-------+
| Field |
Type | Null | Key | Default |
Extra |
+-----------+-------------+------+-----+---------+-------+
| kode_sewa | varchar(10) | NO | PRI | NULL |
|
| kode_film | varchar(5)
| NO | | NULL
| |
+-----------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)
insert into customer (no_id,jenis_id,nama,alamat) values
('001','KTP','Ajie stefan','Subang'),
('002','KTM','Ica Nur Anisha','Cianjur'),
('003','SIM','Haji Lulung','Jakarta'),
('004','SIM','Farhat Abbas','Pluto');
mysql> select*from customer;
+-------+----------+----------------+---------+
| no_id | jenis_id | Nama | Alamat |
+-------+----------+----------------+---------+
| 001 | KTP | Ajie stefan | Subang
|
| 002 | KTM | Ica Nur Anisha | Cianjur |
| 003 | SIM | Haji Lulung | Jakarta |
| 004 | SIM | Farhat Abbas | Pluto
|
+-------+----------+----------------+---------+
4 rows in set (0.00 sec)
insert into film (kode_film,judul,jml_keping,jml_film)
values
('A01','Pocong Push Up','2','4'),
('G01','DXD','2','5'),
('G02','DXD 2','2','3'),
('J01','Philisopher','2','4');
mysql> select*from film;
+-----------+----------------+------------+----------+
| kode_film | judul
| jml_keping | jml_film |
+-----------+----------------+------------+----------+
| A01 | Pocong
Push Up | 2 | 4 |
| G01 | DXD | 2 | 5 |
| G02 | DXD
2 | 2 | 3 |
| J01 |
Philisopher | 2 | 4 |
+-----------+----------------+------------+----------+
4 rows in set (0.00 sec)
insert into kelompok_film (jenis,harga_sewa) values
('Horor','3000'),
('Anime','4000'),
('Scifi','3500');
mysql> select*from kelompok_film;
+-------+------------+
| jenis | harga_sewa |
+-------+------------+
| Horor | 3000 |
| Anime | 4000 |
| Scifi | 3500 |
+-------+------------+
3 rows in set (0.00 sec)
insert into detail_sewa (kode_sewa,kode_film) values
('S0001','A01'),
('S0002','G01'),
('S0003','G02'),
('S0004','J01');
mysql> select*from detail_sewa;
+-----------+-----------+
| kode_sewa | kode_film |
+-----------+-----------+
| S0001 | A01 |
| S0002 | G01 |
| S0003 | G02 |
| S0004 | J01 |
+-----------+-----------+
4 rows in set (0.00 sec)
insert into sewa (kode_sewa,tgl_sewa,total_film,tgl_kembali,total_harga,denda)
values
('S0001','01/01/2015','2','02/01/2015','6000','0'),
('S0002','12/02/2015','1','14/02/2015','4000','0'),
('S0003','26/03/2015,','3','30/03/2015','10500','0');
mysql> select*from sewa;
+-----------+------------+-------------+-------+-------------+-------------+
| kode_sewa | total_film | total_harga | denda |
tgl_sewa | tgl_kembali |
+-----------+------------+-------------+-------+-------------+-------------+
| S0001 | 2 | 6000 | 0 | 01/01/2015 | 02/01/2015
|
| S0002 | 1 | 4000 | 0 | 12/02/2015 | 14/02/2015
|
| S0003 | 3 | 10500 | 0 | 26/03/2015, | 30/03/2015 |
+-----------+------------+-------------+-------+-------------+-------------+
3 rows in set (0.00 sec)
SUMBER :
Modul 3 Aggregasi dan grouping Pendidikan ilmu komputer UPI
Komentar