ERD ( Entity Relationship Diagram )
ERD
merupakan suatu model untuk menjelaskan hubungan antar data dalam
basis data
berdasarkan objek-objek dasar data yang mempunyai hubungan antar relasi
.
Pada dasarnya ada tiga simbol yang digunakan, yaitu :
a.
Entiti / Entitas : 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 : berfungsi untuk mendeskripsikan karakteristik
dari entitas tersebut. Isi dari atribut mempunyai sesuatu yang dapat
mengidentifikasikan isi elemen satu dengan yang lain. Gambar atribut diwakili
oleh simbol elips.
c.
Hubungan / Relasi : Hubungan antara sejumlah
entitas yang berasal dari himpunan entitas yang berbeda. Relasi dapat
digambarkan dengan notasi belah ketupat. Contoh : Relasi yang terjadi diantara
dua himpunan entitas (misalnya A dan B) dalam satu basis data.
d.
Kardinalitas : menggambarkan banyaknya jumlah maksimum
entitas yang dapat berelasi dengan entitas pada himpunan entitas yang lain.
Jenis dari Kardinalitas, yaitu :
- 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.
- 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.
- Banyak
ke banyak (Many to many): Setiap entitas pada himpunan entitas A
dapat berhubungan dengan banyak entitas pada himpunan entitas B.
Primary Key
Primary
key adalah sebuah constraint gabungan dari Contraint Unique dan Constraint Not
Null. Sehingga jika sebuah kolom diberikan constraint Primary Key, maka data
yang diberikan tidak boleh kosong dan
tidak boleh sama dengan baris yang lain. Misalnya pada tabel mahasiswa,
kolom no_mahasiswa diberikan constraint Primary Key, karena setiap mahasiswa
pasti memiliki no_mahasiswa, sehingga tidak kosong (Not Null) dan juga tidak
mungkin satu orang mahasiswa mempunyai no_mahasiswa yang sama dengan mahasiswa
yang lain (Unique). Hanya saja perbedaannya adalah constraint PRIMARY KEY
membentuk index untuk kolom tersebut. Konvensi nama Constraint-nya adalah :
PK_NamaTabel.
Deklarasi
Primary Key pada satu kolom saat CREATE TABLE adalah:
CREATE TABLE nama_tabel (nama_kolom tipe_kolom
PRIMARY KEY); atau
CREATE TABLE nama_tabel (nama_kolom tipe_kolom
CONSTRAINT nama_constraint PRIMARY KEY);
Foreign Key
Foreign
Key adalah kolom dalam sebuah tabel yang bukan primary key, tetapi kolom
tersebut merupakan primary key dalam tabel yang lain. Foreign key digunakan
untuk menjaga integritas data antara tabel parent dengan table child. Misalnya
pada tabel Mahasiswa, yang menjadi primary key adalah kolom no_mahasiswa. Dan
tabel mahasiswa ini berelasi dengan tabel nilai_mahasiswa, di dalam tabel
nilai_mahasiswa terdapat kolom no_mahasiswa yang menghubungkan kedua tabel
tersebut, tetapi kolom no_mahasiswa di dalam tabel nilai_mahasiswa bukan
sebagai primary key, akan tetapi menjadi foreign key.
Deklarasi
saat CREATE TABLE adalah :
CREATE TABLE nama_tabel (nama_kolom
tipe_data,..., nama_kolom_n tipe_data, CONSTRAINT nama_constraint FOREIGN KEY
(nama_kolom) REFERENCES nama_tabel_parent [ON
DELETE CASCADE]);
Data pada
tabel parent tidak dapat di update dan dibapus jika telah mempunyai child. Kecuali dengan pemberian pernyataan ON DELETE CASCADE saat deklarasi
Constraint FOREIGN KEY. Dengan pernyataan tersebut, jika data pada tabel parent dihapus, maka semua data pada tabel child
yang mengacu ke data tersebut juga akan ikut dihapus.
SQL (Structured Query Language )
SQL merupakan suatu bahasa (language)
yang digunakan untuk mengakses database. Terdapat 3 jenis
perintah SQL, yaitu :
DDL ( Data
Defenition Language)
DDL merupakan
perintah SQL yang berhubungan dengan pendefinisian suatu struktur database,
dalam hal ini database dan table. Beberapa perintah dasar yang
termasuk DDL ini antara lain :
1. CREATE
CREATE TABLE
mhs (
nim varchar(10) NOT NULL,
nama varchar(30) NOT NULL,
tgllahir date,
alamat text,
PRIMARY KEY(nim));
Keterangan Perintah diatas :
· CREATE TABLE merupakan perintah dasar dari
pembuatan table.
· mhs merupakan nama tabel yang akan dibuat.
· Nim, nama, tgllahir dan alamat merupakan nama
field
· Varchar, date dan text merupakan tipe data
dari field
· NOT NULL merupakan option untuk menyatakan
bahwa suatu field tidak boleh kosong.
· PRIMARY KEY merupakan perintah untuk
menentukan field mana yang akan dijadikan primary key pada tabel.
· 10 dan 30 di belakang tipe data merupakan
panjang maksimal dari suatu field
· Untuk tipe data date dan text (dan beberapa
tipe data lainnya) panjang karakter maksimalnya tidak perlu ditentukan.
· Jangan lupa akhiri perintah dengan titik-koma
(;)
2. ALTER
Perintah ini
digunakan untuk mengubah struktur table. Kita dapat menambah kolom, menghapus
kolom, memodifikasi panjang kolom, menambah atau menghapus constraints, dan
meng-enable-kan atau men-disable-kan constraints tersebut menggunakan perintah
ini.
TRUNCATE
digunakan untuk menghapus data dari table.
COMMENT digunakan untuk menambahkan komentar tentang
suatu objek database ke dalam data dictionary. Ketika kita mengeksekusi
statement-statement ini, akan terjadi proses commit otomatis. Kita tidak
dapat me-rollback perintah-perintah DDL.
Menambahkan
Kolom
Kita dapat
menambahkan kolom ke dalam table dengan menggunakan perintah ALTER TABLE dengan
klausa ADD.
Sintaks
ALTER TABLE table_name ADD (column_name
datatype (angka) NOT NULL );
ALTER TABLE mahasiswa ADD
(telepon varchar(14) NOT NULL);
dimana:
- datatype : tipe data dan
panjangnya
- NOT NULL: menambahkan contraint
NOT NULL untuk kolom baru
Memodifikasi Column
Kita dapat
memodifikasi kolom dengan menggunakan perintah ALTER TABLE dengan klausa
MODIFY. Modifikasi kolom dapat mengandung perubahan tipe data, panjang, nilai
default, dan constraint NOT NULL.
Sintaks
ALTER TABLE table_name MODIFY (column_name datatype [DEFAULT expr] NOT NULL);
Contoh :
ALTER TABLE matakuliah MODIFY ( sks numeric (1 ) NOT
NULL);
dimana:
- DEFAULT expr : menentukan nilai
default dari kolom
Aturan Penggunaan
· Memperbesar lebar kolom atau presisi untuk
kolom bertipe numerik
· Memperkecil lebar kolom jika kolom hanya
mengandung nilai null atau jika table tidak memiliki data
· Mengubah tipe data jika kolom mengandung nilai
null
· Mengkonversi tipe data CHAR menjadi VARCHAR2
atau sebaliknya, jika kolom mengandung nilai null atau jika kita tidak mengubah
panjang tipe datanya
· Perubahan ke nilai default akan berefek kepada
proses insert berikutnya, tidak terhadap data yang sudah ada
· Menambahkan constraint NOT NULL hanya jika
tidak terdapat nilai null pada kolom
Menambahkan dan
Menghapus Contraint
Kita dapat
menambah dan menghapus contraint pada table yang telah ada dengan menggunakan
perintah ALTER TABLE dengan klausa ADD atau DROP.
Sintaks Menambah
Constraint
ALTER TABLE table_name ADD [ CONSTRAINT
constraint_name ] type (column_name);
Contoh :
ALTER TABLE mahasiswa ADD CONSTRAINT PK_nomor
PRIMARY KEY (nomor);
ALTER TABLE
mahasiswa ADD CONSTRAINT PRIMARY KEY
PK_nomor (nomor);
dimana:
- type: tipe constraint ( contohnya
PRIMARY KEY dan FOREIGN KEY)
Aturan penggunaan
- Kita dapat menambah, menghapus,
mengaktifkan, dan menonaktifkan constraint, tetapi kita tidak dapat
memodifikasi strukturnya
- Kita dapat menambahkan contraint
NOT NULL terhadap kolom dengan menggunakan klausa MODIFY dari perintah
ALTER TABLE
Untuk menghapus
constraint, kita dapat mengidentifikasi nama constraint dari data dictionary
views USER_CONSTRAINTS dan USER_CONS_COLUMNS. Kemudian, kita dapat menggunakan
perintah ALTER TABLE dengan klausa DROP. Opsi CASCADE pada klausa DROP
menyebabkan seluruh constraint yang bergantung terhadap constraint yang kita
hapus akan ikut terhapus.
Sintaks
ALTER TABLE table_name
DROP PRIMARY KEY | UNIQUE (column_name) | CONSTRAINT constraint_name [CASCADE];
Contoh :
Menghapus Constraint -----> ALTER TABLE
employees DROP CONSTRAINT pk_idbrgdis;
Catatan:
Ketika kita
menghapus integrity constraint, constraint tersebut tidak lagi dijalankan oleh
Oracle dan tidak lagi tersedia di dalam data dictionary.
Menghidupkan dan
Mematikan Constraint
Kita dapat
menghidupkan dan mematikan constraint tanpa menghapus atau menciptakannya ulang
dengan menggunakan perintah ALTER TABLE dengan klausa ENABLE atau DISABLE.
Sintaks
ALTER TABLE table_name DISABLE | ENABLE
CONSTRAINT constraint_name [CASCADE];
Aturan penggunaan
- Jika kita menghidupkan
constraint, constraint tersebut terpakai pada seluruh data dalam table.
Seluruh data dalam table harus memenuhi ketetapan dari contraint tersebut.
- Jika kita menghidupkan contraint
UNIQUE atau PRIMARY KEY, maka UNIQUE dan PRIMARY KEY index otomatis
diciptakan.
- Kita dapat menggunakan klausa
ENABLE dan DISABLE baik pada perintah CREATE TABLE maupun perintah ALTER
TABLE.
- Klausa CASCADE mematikan
constraint yang bergantung dibawahnya
RENAME
ALTER TABLE table_name RENAME
COLUMN old_name TO new_name;
Mengubah
Nama dan Menghapus Isi Table
Perintah-perintah
DDL tambahan termasuk perintah RENAME, yang mana digunakan untuk mengubah nama
table, view, sequence, atau synonym, dan perintah TRUNCATE TABLE, yang mana
digunakan untuk menghapus seluruh data dari table dan untuk membebaskan tempat
penyimpanan yang digunakan oleh table tersebut.
Sintaks –
Perintah RENAME
RENAME old_name TO new_name;
Sintaks
– Perintah TRUNCATE (Menghapus Data pada tabel)
TRUNCATE TABLE table_name; Contohnya : truncate
table customer;
Catatan:
Perintah
DELETE dapat juga menghapus seluruh data dari table, tetapi ia tidak membebaskan
tempat penyimpanan yang digunakan oleh table tersebut.
Menambahkan
Komentar Terhadap Table
Kita dapat
menambahkan komentar hingga 2000 bytes, terhadap column, table, view, atau
snapshot dengan menggunakan perintah COMMENT. Komentar tersimpan didalam data
dictionary dan dapat dilihat didalam salah satu data dictionary views berikut
didalam kolom COMMENTS:
- ALL_COL_COMMENTS
- USER_COL_COMMENTS
- ALL_TAB_COMMENTS
- USER_TAB_COMMENTS
Sintaks
COMMENT ON TABLE
table_name | COLUMN table.column_name IS ‘isi_komentar’;
Contoh:
COMMENT ON TABLE employee IS ‘Employee
Information’;
Menghapus
komentar pada column.
COMMENT ON COLUMN employee.last_name IS ”;
DROP
Menghapus Table
Perintah DROP
TABLE menghapus definisi table. Ketika kita menghapus table, database akan
kehilangan seluruh data dalam table dan seluruh index yang terasosiasi
dengannya. Opsi CASCADE CONTRAINTS jika menghapus referential integrity
constraint yang bergantung kepada table tersebut.
Sintaks
DROP TABLE table_name [CASCADE CONSTRAINTS];
Aturan penggunaan
- Seluruh data dihapus dari table
- Seluruh view, synonym, stored
procedure, function, atau package tetap ada, tetapi statusnya menjadi
invalid
- Seluruh transaksi akan di-commit
- Hanya pencipta table tersebut
sajalah atau user dengan privilege DROP ANY TABLE yang dapat menghapus
table tersebut
Catatan:
Perintah DROP
TABLE, sekali dieksekusi, tidak dapat diputar balik. Oracle tidak memberikan
pertanyaan ketika kita menjalankan perintah DROP TABLE. Jika kita memiliki
table tersebut atau memiliki privilege dengan level tinggi, maka table segera
terhapus. Seluruh perintah-perintah DDL mengeksekusi commit, sehingga
menyebabkan transaksi menjadi permanen.
DML ( Data Manipulation Language )
DML merupakan
perintah SQL yang berhubungan dengan manipulasi atau pengolahan data atau record
dalam table. Perintah SQL yang termasuk dalam DML antara lain :
SELECT
INSERT
Insert digunakan
untuk memasukkan data ke sebuah tabel dalam user (schema) tertentu. Syntax
Insert dapat dituliskan sebagai berikut :
INSERT INTO nama_table ( nama_kolom1, nama_kolom2, . . .) VALUES ( nilai1, nilai2, . . .);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Contoh :
INSERT INTO MURID (NIS, NAMA, TGL_LAHIR, JENIS_KELAMIN,
ALAMAT, ORTU) VALUES ( ’000001′, ‘Tumbur
Josua’, TO_DATE(’23-04-1993′,‘DD-MM-YYYY’), ‘L’, ‘JL. P. DIPENOGORO,
TEGAL’, ‘UCOK’);
UPDATE
Update digunakan
untuk mengubah data pada sebuah tabel dalam user (schema) tertentu berdasarkan kondisi tertentu. Syntax Update dapat
dituliskan sebagai berikut :
UPDATE nama_table SET nama_kolom1 = nilai1, nama_kolom2 = nilai2, nama_kolom3 = nilai3 WHERE kondisi_update ;
|
|
|
|
Contoh :
UPDATE MURID SET NAMA = ‘MUKHTARUL UMAM
SHOLEH’, TGL_LAHIR =
TO_DATE(’25-04-1993′,‘DD-MM-YYYY’) WHERE
NIS = ’000001′;
DELETE
Delete digunakan
untuk menghapus data pada sebuah tabel dalam user (schema) tertentu berdasarkan kondisi tertentu. Syntax Delete dapat
dituliskan sebagai berikut :
DELETE nama_table WHERE kondisi_delete;
|
Contoh : DELETE MURID WHERE NIS = ’000001′;
DCL (Data Control
Language)
DCL merupakan
perintah SQL yang berhubungan dengan pengaturan hak akses user MySQL, baik
terhadap server, database, tabel maupun field. Perintah SQL yang termasuk dalam
DCL antara lain :
GRANT
Perintah ini digunakan untuk memberikan hak / izin akses oleh administrator
(pemilik utama) server kepada user (pengguna biasa). Hak akses tersebut berupa
hak membuat (CREATE), mengambil (SELECT), menghapsu (DELETE), mengubah (UPDATE)
dan hak khusus berkenaan dengan sistem databasenya.
SINTAKS : GRANT privileges ON tbname TO user
GRANT CONNECT, RESOURCE TO tumbur;
CONTOH : GRANT select, update, insert, delete ON perpustakaan.buku
TO 'ali'@'localhost';
Untuk membuat role
gunakan perintah CREATE ROLE seperti berikut ini:
Sintaks : CREATE ROLE
nama_role IDENTIFIED
BY password_role;
Contoh : CREATE ROLE
role_tumbur IDENTIFIED
BY tumbur_juga;
GRANT privilege TO
nama_role;
GRANT CREATE TABLE TO
role_tumbur;
GRANT SELECT , UPDATE TABLE ON barang TO role_tumbur;
GRANT UPDATE TABLE ON
barang TO
role_tumbur;
GRANT nama_role TO
nama_user;
GRANT role_tumbur TO tumbur;
REVOKE
Perintah ini memiliki kegunaan terbalik
dengan GRAND, yaitu untuk menghilangkan atau mencabut hak akses yang telah
diberikan kepada user oleh administrator.
SINTAKS : REVOKE
privileges ON
tbname FROM
user
CONTOH : REVOKE
select, update, insert, delete ON perpustakaan.buku
FROM 'ali'@'localhost';
REVOKE nama_role FROM nama_user;
REVOKE role_tumbur FROM tumbur;
CONSTRAINT PADA TABEL
a. Not Null
Deklarasi
saat CREATE TABLE adalah:
CREATE TABLE nama_tabel
(nama_kolom tipe_kolom
NOT NULL); atau
CREATE TABLE nama_tabel
(nama_kolom tipe_kolom CONSTRAINT nama_costraint NOT NULL);
Deklarasi
saat ALTER TABLE adalah:
ALTER TABLE nama_tabel
MODIFY (nama_kolom
tipe_kolom NOT
NULL); atau
ALTER TABLE nama_tabel MODIFY (nama_kolom
tipe_kolom CONSTRAINT nama_constraint NOT
NULL);
b. Unique
Deklarasi
saat CREATE TABLE adalah:
CREATE TABLE nama_tabel
(nama_kolom tipe_kolom UNIQUE); atau
CREATE TABLE nama_tabel
(nama_kolom tipe_kolom CONSTRAINT nama_constraint UNIQUE);
Deklarasi
saat ALTER TABLE adalah:
CREATE TABLE nama_tabel
ADD CONSTRAINT nama_constraint UNIQUE
(nama_kolom);
c. Primary Key
Deklarasi
Primary Key pada satu kolom saat CREATE TABLE adalah:
CREATE TABLE nama_tabel
(nama_kolom tipe_kolom PRIMARY KEY); atau
CREATE TABLE nama_tabel (nama_kolom tipe_kolom CONSTRAINT nama_constraint PRIMARY KEY);
Deklarasi
PRIMARY KEY pada beberapa kolom saat ALTER TABLE adalah:
ALTER TABLE nama_tabel
ADD CONSTRAINT nama_constraint PRIMARY
KEY (nama_kolom);
Deklarasi
PRIMARY KEY pada beberapa kolom saat ALTER TABLE adalah:
ALTER
TABLE nama_tabel ADD CONSTRAINT nama_constraint PRIMARY KEY (nama_kolom,...,nama_kolom_n);
d. Foreign Key
Deklarasi
saat CREATE TABLE adalah :
CREATE TABLE nama_tabel
(nama_kolom tipe_data,..., nama_kolom_n tipe_data,
CONSTRAINT nama_constraint
FOREIGN KEY (nama_kolom) REFERENCES nama_tabel_parent);
Deklarasi
saat ALTER TABLE adalah :
ALTER TABLE nama_tabel
ADD CONSTRAINT nama_constraint FOREIGN
KEY (nama_kolom_n) REFERENCES nama_tabel_parent);
e. Check
Deklarasi
saat CREATE TABLE adalah :
CREATE TABLE nama_tabel (nama_kolom tipe_kolom CHECK (syarat)); Atau
CREATE TABLE nama_tabel
(nama_kolom tipe_kolom CONSTRAINT nama_constraint CHECK (syarat));
Deklarasi
saat ALTER TABLE adalah :
ALTER TABLE nama_tabel ADD CONSTRAINT nama_constraint CHECK
(syarat);
f. Default
Deklarasi
saat CREATE TABLE adalah :
CREATE TABLE nama_tabel
(nama_kolom tipe_data DEFAULT nilai_default);
Deklarasi
saat ALTER TABLE adalah :
ALTER TABLE nama_tabel
MODIFY nama_kolom
tipe_data DEFAULT nilai _default;
Membuat Tabel Baru dan penerapan Constraint
Primary Key, Not Null, Unique
create
table mahasiswa (
no_mahasiswa
char(8) CONSTRAINT PK_mhs PRIMARY KEY,
nama
varchar2(50) CONSTRAINT nnull_mhs NOT NULL,
no_KTP
varchar2(20) CONSTRAINT unq_mhs UNIQUE, jenis_kelamin CHAR(1),
usia
number(3));
Contoh Penerapan Constraint Foreign Key dan
Check :
create
table nilai_mahasiswa (
no_mahasiswa
char(8),
id_matakuliah
varchar2(5),
nilai
number(3) CONSTRAINT ck_nilai (nilai>0),
CONSTRAINT
fk_nilai FOREIGN KEY (no_mahasiswa) REFERENCES mahasiswa(no_mahasiswa)) ;
SINTAKS JOIN
Two Table Inner Join
Traditional Joins
|
Nama Join
|
Sintaks
|
Contoh
|
Two
Table Inner Join
|
|
SELECT nama, nama_barang, b.id_barang
FROM karyawan
k,
barang b
WHERE k.id_barang = b.id_barang;
|
Three
Table Inner Join
|
|
SELECT nama,nama_barang, b.id_barang, k.no_konsumen, jumlah
FROM barang b, penjualan
p, konsumen k
WHERE b.id_barang = p.id_barang
AND p.no_konsumen= k.no_konsumen
ORDER BY b. id_barang;
|
Left
Outer Join
|
|
SELECT nama,nama_barang,
b.id_barang
FROM karyawan
k, barang b
WHERE k.id_barang = b.id_barang(+);
|
Right
Outer Join
|
|
SELECT nama,nama_barang,
b.id_barang
FROM karyawan
k, barang b
WHERE k.id_barang(+) = b.id_barang;
|
Self
Join
|
|
UPDATE barang
SET nama_barang = 'UPDATE2'
WHERE
id_barang = ‘0061’;
SELECT nama,nama_barang,
b.id_barang, k.no_konsumen, jumlah
FROM barang
b, penjualan p, konsumen k
WHERE b.id_barang = p.id_barang
AND p.no_konsumen= k.no_konsumen
|