Jumat, 04 Maret 2011

[Praktikum 1]Basisdata Relasional dan DDL

Basisdata relasional merupakan salah satu konsep penyimpanan data dalam bentuk relasi atau dua dimensi terdapat hubungan antara tabel satu dengan yang lainnya. Atau simpelnya “kumpulan dari sejumlah tabel yang saling berhubungan”.


Untuk memodelkan basisdata relasional digunakan diagram entitas atau sering disebut ERD (Entity Relationship Diagram). Berikut beberapa istilah yang digunakan dalam ERD:

1.    Entitas
Merupakan objek pada dunia nyata yang bersifat unik, dapat berupa benda, tempat, kejadian, dll. Entitas dibedakan menjadi dua :
·         Entitas kuat : entitas yang tidak bergantung pada entitas lain, biasanya memiliki primary key.
·         Entitas lemah : entitas yang bergantung pada entitas lain, biasanya tidak memiliki primary key.

2.    Atribut
Merupakan deskripsi sifat atau identitas yang melekat pada entitas.

3.    Relasi
Merupakan hubungan antarsatu entitas dengan entitas lainnya.

4.    Kardinalitas
Merupakan jumlah maksimum suatu entitas dapat berelasi dengan entitas lain. Kardinalitas ini memiliki beberapa kemungkinan yaitu:
·         One to one
Pada kardinalitas ini masing-masing record dalam entitas A hanya dapat berelasi dengan satu record dalam entitas B
·         One to many
Pada kardinalitas ini masing-masing record dalam entitas A dapat berelasi dengan banyak record dalam entitas B, tapi satu record pada entitas B hanya dapat berelasi dengan satu record pada entitas A.
·         Many to one
Pada kardinalitas ini masing-masing record dalam entitas B dapat berelasi dengan banyak record dalam entitas A, tapi satu record pada entitas A hanya dapat berelasi dengan satu record pada entitas B. (kebalikan dari One to Many)
·         Many to many
Pada kardinalitas ini masing-masing record dalam entitas A dapat berelasi dengan banyak record dalam entitas B, dan satu record pada entitas B dapat berelasi dengan banyak record pada entitas A.

Istilah lain yang sering digunakan pada ERD adalah Key(kunci). Berikut jenis-jenis key(kunci) pada database:

·         Super key : merupakan sekumpulan atribut yang dapat mengidentifikasikan secara unik sebuah entitas dalam satu set entity(satu atau lebih atribut yang dapat membedakan antara 1 record dengan record lain)
·         Kandidat key : merupakan satu atau beberapa atribut yang nilai-nilainya secara unik mengidentifikasikan entitas dalam satu set entitas
·         Primary key : merupakan atribut yang menjamin keunikan sebuah entitas.
·         Foreign Key : primary key sebuah tabel yang berada pada tabel lain yang berhubungan dengan tabel pemilik primary key tersebut.

Agregasi : relasi yang akan terbentuk setelah ada relasi lain, atau bisa dipahami relasi ini berhubungan dengan suatu himpunan relasi. Untuk lebih mudahnya lihat gambar dibawah.


Memetakan diagram entitas kedalam tabel:
1.    Entitas dengan kardinalitas one to one


Maka akan terbentuk 2 tabel, yaitu


Dimana id_petugas akan menjadi FK(Foreign key) pada tabel Login, atau bisa juga dibalik sehingga username menjadi FK pada tabel petugas.




2.    Entitas dengan kardinalitas one to many atau many to one


Maka akan terbentuk 2 tabel, dimana id_petugas akan menjadi FK pada tabel tiket dan tidak bisa dibalik, karena hubungan petugas dengan tiket adalah one to many.


3.    Entitas dengan kardinalitas many to many


Maka akan terbentuk 3 tabel yaitu sopir, mengendarai dan bus. Dimana pada tabel mengendarai terdapat id_supir(PK tabel supir) dan no_polisi(PK tabel bus) yang menjadi FK sekaligus PK(satu PK dengan dua atribut).





DDL(Data Definition Language)

Merupakan perintah-perintah pada SQL yang digunakan untuk menjelaskan objek dari database bisa membuat, memodifikasi, menghapus, dll

1.    CREATE
a)    CREATE TABLE
Digunakan untuk membuat dan mendefinisikan sebuah tabel baru.
Syntax :
CREATE TABLE nama_tabel(
nama_atribut1 tipe_data CONSTRAINT pd_nama_tabel PRIMARY KEY,
nama_atribut2 tipe_data [unique][null/not null][default]<nilai default>[check],
.....
);

Contoh :
Create table petugas(
Id_petugas char(6) constraint pk_petugas primary key,
nama varchar2(25)not null,
alamat varchar2(50),
telp varchar2(15)
);

b)    CREATE VIEW
Merupakan tabel semu yang dibuat untuk memudahkan user menampilkan data yang bersumber dari 1 atau lebih tabel.
Syntax :
CREATE [OR REPLACE][FORCE][NOFORCE] VIEW nama_view(
[alias1,alias2,alias3,...] AS
SUBQUERY []
);

Ket :
OR REPLACE : Jika view sudah ada, maka view didefinisikan kembali.
FORCE : View akan dibuat walaupun table sumbernya belum ada
NOFORCE : View hanya akan dibuat bila table sumbernya sudah ada
With Check Option : View akan memeriksa data yang diinsert ataupun diupdate pada view
READ ONLY : Tidak diperbolehkan penambahan, pembaharuan, dan penghapusan melalui view.

Contoh :
Create view view_petugas(
(no_petugas, nama, alamat, telepon) AS
Select * from petugas;
);

c)    CREATE SEQUENCE
Digunakan men-generate angka-angka secara otomatis.
Syntax :
CREATE SEQUENCE nama_sequence
increment by integer
start with integer
[maxvalue integer | nomaxvalue]
[minvalue integer | nominvalue]
[cycle | nocycle]
[chace integer | nochace]
[order | noorder];

Ket :
INCREMENT BY. Untuk menyatakan interval/selisih nilai yang dihasilkan sequence
START WITH. Untuk menyatakan nilai awal yang dihasilkan sequence.
MAXVALUE. Untuk menyatakan nilai tertinggi yang dihasilkan sequence.
NOMAXVALUE berarti nilai tertinggi yang dihasilkan tidak dibatasi. MAXVALUE dan NOMAXVALUE bersifat optional.
MINVALUE. Untuk menyatakan nilai terendah yang dihasilkan sequence.
NOMINVALUE berarti nilai terendah yang dihasilkan tidak dibatasi. MINVALUE dan NOMINVALUE bersifat optional.
CYCLE. Untuk menyatakan sequence akan kembali ke nilai terendah yang ditetapkan.
NOCYCLE adalah kebalikan dari CYCLE.
CACHE. Untuk menentukan berapa banyak nilai dari sequence yang akan dialokasikan
ke memori. NOCACHE berarti tidak ada nilai sequence yang akan dialokasikan ke
memori.
ORDER | NOORDER berfungsi untuk menjamin atau tidak nilai yang di-generate
adalah berurut berdasarkan permintaan pada server parallel. Default dari klausa ini
adalah NOORDER.

Untuk penggunaan sequence : nama_sequence.nextval

Contoh :
create sequence seq_id_petugas
increment by 1
start with 1
maxvalue 99999
minvalue 0
nocycle
nochace
order;

d)    CREATE SYNONYM
Digunakan untuk membuat membuat nama alias bagi sebuah table, view, atau sequence.
Syntax :
CREATE [PUBLIC] SYNONIM nama_synonim
FOR nama_tabel/view/sequence;

Contoh :
create synonim next_id for seq_id_petugas;

e)    CREATE USER
Digunakan untuk membuat user baru dan passwordnya.
Syntax :
CREATE USER nama_user
IDENTIFIED BY password;

Supaya user dapat digunakan tambahkan syntax :
GRANT CONNECT, RESOURCE TO nama_user;

Contoh :
create user newbie identified by basdat;
grant connect, resource to newbie;

f)     CREATE INDEX
Digunakan untuk membuat index untuk mempercepat mengakses data dalam tabel.
Syntax :
CREATE INDEX nama_indeks
ON nama_table(nama_atribut-1, nama_atribut-2, nama_atribut-n);

Contoh :
create index nama_petugas on petugas(nama);

2.    ALTER
a)    ALTER TABLE
Digunakan untuk mengubah struktur tabel dan constraint. Ada beberapa perintah alter tabel:

·         ADD : untuk menambah kolom atau constrain pada tabel.

Syntax :
ALTER TABLE nama_tabel
ADD nama_atribut tipe_data constraint;
Contoh :
alter table petugas
add status varchar2(15) not null;

·         MODIFY : untuk mengubah definisi suatu kolom. Bisa tipe data, constraint maupun ukuran dari tipe data.

Syntax :
ALTER TABLE nama_tabel
MODIFY nama_atribut tipe_data constraint;

Contoh :
alter table petugas
modify status varchar2(20);

·         DROP : digunakan untuk menghapus kolom dan/atau constraint.

Syntax :
ALTER TABLE nama_tabel
DROP COLUMN/CONSTRAINT atribut_yang_hendak_dihapus;

Contoh :
alter table petugas
drop column status;

b)    ALTER VIEW
Digunakan mengkompilasi ulang view.
Syntax :
ALTER VIEW nama_view
COMPILE;

Contoh :
alter view view_petugas compile;

c)    ALTER SEQUENCE
Digunakan untuk memodifikasi sequence.
Syntax :
ALTER SEQUENCE nama_sequence
[INCREMENT by integer]
[MAXVALUE integer | NOMAXVALUE]
[MINVALUE integer | NOMINVALUE]
[CYCLE | NOCYCLE];

Contoh :
alter sequence seq_id_petugas
increment by 2
maxvalue 10000
minvalue 0;

d)    ALTER INDEX
Digunakan untuk memodifikasi alokasi penyimpanan dalam index.
Syntax :
ALTER INDEX nama_indeks
[INITRANS integer]
[MAXTRANS integer]
[STORAGE storage_clause];

Contoh :
alter index nama_petugas maxtrans 1000;

e)    ALTER USER
Digunakan untuk mengubah password user.
Syntax :
ALTER USER nama_user
IDENTIFIED BY password;

Contoh :
Alter user alip
Identified by basdat;

3.    DROP
a)    DROP TABLE
Digunakan untuk menghapus tabel pada database.
Syntax :
DROP TABLE nama_table [CASCADE CONSTRAINT];

Contoh :
drop table petugas;

b)    DROP VIEW
Digunakan untuk menghapus view.
Syntax :
DROP VIEW nama_view;

Contoh :
Drop view view_petugas;

c)    DROP SEQUENCE
Digunakan untuk menghapus sequence.
Syntax :
DROP SEQUENCE nama_sequence;

Contoh :
drop sequence seq_id_petugas;

d)    DROP SYNONYM
Digunakan untuk  menghapus synonym.
Syntax :
DROP SYNONYM nama_synonym;

Contoh :
drop synonim next_id for seq_id_petugas;

e)    DROP INDEX
Digunakan untuk menghapus index yang telah dibuat.
Syntax :
DROP INDEX nama_index;

Contoh :
drop index nama_petugas;

f)     DROP USER
Digunakan untuk menghapus user yang telah ada.
Syntax :
DROP USER nama_user;

Contoh :
drop user alip;

4.    RENAME
Untuk mengubah nama tabel, view, sequence dan synonim.
Syntax :
RENAME nama_lama TO nama_baru;

Contoh :
rename seq_id_petugas to next_petugas;

5.    TRUNCATE
Melakukan penghapusan isi tabel secara keseluruhan tanpa menghapus struktur tabel.
Syntax :
TRUNCATE TABLE [schema.]nama_tabel;

Contoh :
truncate table petugas;

6.    COMMENT
Manambahkan komentar pada tabel atau view.
Syntax :
COMMENT ON TABLE [schema.]nama_tabel IS ‘isi komentar’;

Contoh :
comment on table petugas is ‘daftar petugas aktif’;

CONSTRAINT
1.    Primary key
Merupakan constraint unik yang bernilai not null dan dalam satu tabel hanya dibolehkan satu primary key. Pada sebuah primary key tidak boleh diberikan constraint unique tapi boleh menggunakan constraint not null. Contoh :

create table petugas(
id_petugas char(6) constraint pk_petugas primary key,
nama varchar2(25)not null,
alamat varchar2(50),
telp varchar2(15)
);

create table petugas(
id_petugas char(6) not null,
nama varchar2(25)not null,
alamat varchar2(50),
telp varchar2(15),
constraint pk_mahasiswa primary key(id_petugas)
);

2.    Foreign key
Merupakan primary key pada tabel lain, digunakan untuk berhubungan. Contoh :

create table login(
username char(10) constraint pk_login primary key,
password char(10) not null,
last_login date,
id_petugas char(6),
constraint fk_login foreign key(id_petugas) references petugas on delete cascade
);

Ket : ON DELETE CASCADE artinya jika satu baris pada tabel petugas dihapus maka baris pada tabel login akan dihapus jika memiliki id_petugas pada tabel login sama dengan id_petugas yang berada pada tabel petugas yang dihapus.

3.    Null / Not Null
Jika dibuat aturan bahwa suatu kolom tidak boleh kosong maka diberikan constraint not null. Contoh :

create table petugas(
id_petugas char(6) constraint pk_mahasiswa primary key,
nama varchar2(25)not null,
alamat varchar2(50),
telp varchar2(15)
);

4.    Unique
Jika disertakan constraint ini maka nilai pada kolom tersebut harus unik tidak boleh ada yang sama. Contoh :

create table login(
username char(10) constraint pk_login primary key,
password char(10) not null,
email varchar2(20),
last_login date,
id_petugas char(6),
constraint fk_login foreign key(id_petugas) references petugas on delete cascade,
constraint unique_login unique(email)
);

5.    Check
Untuk memeriksa nilai suatu kolom apakah memenuhi suatu kriteria yang diinginkan, bisa berupa perbandingan, range, null, like, exists. Contoh :

create table bus(
no_polisi char(6) constraint pk_bus primary key,
kelas varchar2(15),
tipe varchar2(20),
tujuan varchar2(25),
kapasitas number,
constraint check_bus check(kapasitas<55)
);

Untuk referensi tetap pakai yang ada di modul, ini hanya tambahan jika ingin membaca.

Penyusun :






Sumber :
Modul praktikum basisdata S1 Teknik Informatika IT Telkom tahun ajaran 2009-2010
Modul praktikum basisdata S1 Ilmu Komputasi IT Telkom tahun ajaran 2010-2011
Modul GET CLOSER TO ORACLE
http://olasolahudin.blogspot.com

Tidak ada komentar:

Posting Komentar

Jangan lupa tinggalkan komentar anda, baik berupa koreksi, kritikan maupun saran...