Data Definition Language (DDL) adalah bahasa dalam DBMS yang digunakan untuk membuat atau mendefinisikan obyek-obyek di dalam database. Secara umum digunakan untuk membuat obyek table dan view.
Secara khusus, di dalam DBMS tertentu digunakan untuk :
- Membuat trigger
- Membuat stored procedure
- Membuat database, index, rule, schema dll (tergantung DBMS)
Contoh sintaks DDL :
DDL untuk tabel
* Untuk membuat tabel
CREATE TABLE <namatabel> (
<column_definition> | <table_constraint>
)
* Untuk menghapus tabel
DROP TABLE <namatabel>
* Untuk memodifikasi tabel
- Menambahkan kolom baru
ALTER TABLE <namatabel>
ADD <namakolom> <tipedata> <aturan>
- Menghapus kolom
ALTER TABLE <namatabel>
DROP <namakolom>
DDL untuk view
* Untuk membuat view
CREATE VIEW <namaview> AS <SQLQuery>
* Untuk menghapus view
DROP VIEW <namaview>
DDL untuk trigger
* Untuk membuat trigger
CREATE TRIGGER <namatrigger> ON TABLE <namatabel> ON [DELETE] [,] [INSERT] [,] [UPDATE] AS <perintahSQL>
Sebutkan dan jelaskan objek basis data yang termasuk DDL (minimal 3)! Masing-masing beri contoh!
Objek basis data yang termasuk DDL adalah :
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
);
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”
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’)
Dengan menggunakan sintaks SQL, buatlah DDL untuk rancangan berikut ini :
Keterangan :
- Emp_name dan dep_name tidak boleh dikosongi
- Isi default emp_name = pegawai baru
- Isi default emp_address = surabaya
create table DEP (
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)
);
Buatlah sebuah tabel barang yang atributnya kode barang, dan nama barang. Tulislah syntax DDL-nya, lalu dengan syntax alter table, tambahkan primary key pada kode barang. Dan tambahkan atribut jumlah barang pada tabel barang. Lalu, buatlah tabel pembelian dengan atribut id pembelian, id barang (merupakan foreign key dari tabel barang), jumlah barang barang transaksi, dan tanggal!
Membuat tabel barang dengan atribut kode barang dan nama barang :
CREATE TABLE BARANG(
KODE_BARANG CHAR(8),
NAMA_BARANG VARCHAR2(25)
);
Menambahkan primary key pada kode barang :
ALTER TABLE BARANG
ADD CONSTRAINT PK_BARANG PRIMARY KEY (KODE_BARANG)
Menambahkan atribut jumlah barang :
ALTER TABLE BARANG
ADD JUMLAH BARANG (NUMBER)
Membuat tabel pembelian :
CREATE TABLE PEMBELIAN (
ID_BELI CHAR(8),
KODE_BARANG CHAR(8),
JUMLAH_TRANSAKSI NUMBER,
TANGGAL DATE,
CONSTRAINT PK_PEMBELIAN PRIMARY KEY (ID_BELI),
CONSTRAINT FK_PEMBELIAN FOREIGN KEY (KODE_BARANG) REFERENCES BARANG(KODE_BARANG)
);
Jelaskan macam-macam aturan Referential Integrity dan beri contoh implementasinya!
Referential Integrity Constraint digunakan untuk menjaga konsistensi baris-baris data antara dua buah tabel. Pada umumnya, aturan ini mengharuskan sebuah baris pada sebuah tabel yang terelasikan pada tabel lain harus mengacu pada sebuah baris di dalam tabel tersebut.
Aturan untuk Referential Integrity biasanya digunakan jika terjadi proses modifikasi data (update, delete, dan insert).
Aturan untuk proses update : berlaku pada proses pengubahan data di parent table.
- Update cascade : pembaruan sebuah baris data diikuti dengan pembaruan baris data pada child table yang terelasikan
- Update restrict : mencegah proses pembaruan data jika terdapat baris data di child table yang terelasikan
- Update ignore : mengabaikan referensi. Boleh memperbarui data pada parent, tapi tidak memperbarui data yang berelasi pada child table.
Aturan untuk delete : berlaku pada proses modifikasi di parent table.
- Delete cascade : menghapus seluruh baris data pada child table yg terelasikan
- Delete restrict : mencegah penghapusan jika terdapat baris data yang berelasi pada child table
- Delete ignore : mengabaikan referensi. Boleh menghapus data, dan tidak ada efeknya bagi child table.
Aturan untuk insert : berlaku pada proses penambahan data pada child table.
- Insert restrict : tidak boleh menambah data pada child table, jika nilai yang dimasukkan pada kolom yang berelasi tidak terdapat pada parent tablenya.
- Insert ignore : mengabaikan referensi. Boleh menambah data pada child, walaupun nilai yang dimasukkan pada kolom yang berelasi tidak terdapat pada parent table.
Apa yang dimaksud dengan indexing pada database dan apa kegunaannya?
Index bisa dibuat secara otomatis (saat pembuatan primary key dan unique constraint) atau bisa secara manual.
Untuk mempercepat query dan mengurangi disk I/O diperlukan suatu index. Index digunakan pada :
- Satu / lebih kolom yang sering dipakai pada operasi WHERE atau JOIN
- Suatu kolom memiliki rentang nilai besar
- Suatu kolom banyak memiliki nilai NULL
- Jumlah row (baris) sangat besar dan sering retrieval cuma menghasilkan 2-4% data
- Index tidak disarankan untuk dicreate pada kasus-kasus berikut :
- Jika jumlah row sedikit
- Kolom-kolom tidak sering dipakai dalam query
- Query meretrieve lebih dari 4% data
- Jika tabel sering diremajakan (diupdate)
0 comments:
Post a Comment