• Tidak ada hasil yang ditemukan

2014

2

Basis Data Pusat Bahan Ajar dan eLearning

Sasaran Dalam DDL

 Tipe data yang didukung oleh SQL standard.

 Kegunaan dari integrity enhancement feature pada SQL.  Bagaimana menetapkanbatasan integritas menggunakan SQL.

 Bagaimana menggunakan integrity enhancement feature dalam perintah CREATE dan ALTER TABLE.

Integrity Enhancement Feature

 Data yang dibutuhkan (Required data)  Batasan domain (Domain constraints)  Integritas entitas (Entity integrity)

 Integritas referensial (Referential integrity)  Batasan enterprise (Enterprise constraints)

IEF-Required Data

 Beberapa kolom field harus memiliki nilai yang pasti (tidak diperkenankan bernilai NULL).

 NULL digunakan untuk merepresentasikan data yang tidak ada/ tidak tersedia, hilang atau tidak disertakan.

 Standar ISO menetapkan keyword NOT NULL untuk mengatasi hal tersebut.  Contoh format deklarasi :

 

2014

3

Basis Data Pusat Bahan Ajar dan eLearning

  Tim Dosen http://www.mercubuana.ac.id

IEF-Domain Constraints

 Setiap kolom mempunyai domain, atau dengan kata lain himpunan dari nilai-nilai yang benar.

 Misalkan dalam tabel Staff terdapat kolom Sex yang berisi nilai karakter tunggal ‘M’ atau ‘F’, maka dapat dideklarasikan CHECK (Search Condition);

 sehingga :

sex CHAR NOT NULL

CHECK (sex IN (‘M’, ‘F’));

 atau dieklarasikan secara eksplisit :

CREATE DOMAIN DomainName [AS] dataType [DEFAULT defaultOption]

[CHECK (searchCondition)]

 Sehingga :

CREATE DOMAIN SexType AS CHAR CHECK (VALUE IN (‘M’, ‘F’)); sex SexType NOT NULL

 searchCondition dapat mengandung table lookup, misalkan membuat domain Branchnumber untuk memastikan nilai yang akan dimasukan sesuai dengan branch number yang sudah ada pada tabel Branch :

CREATE DOMAIN BranchNo AS CHAR(4) CHECK (VALUE IN (SELECT branchNo

 

2014

4

Basis Data Pusat Bahan Ajar dan eLearning

 Domain dapat dihapuskan dengan menggunakan perintah DROP DOMAIN, jika ditetapkan RESTRICT kemudian domain digunakan dalam tabel, view dan definisi penegasan (assertion definition), maka penghapusan domain akan ditolak. Jika ditetapkan CASCADE, maka kolom tabel yang menggunakan domain tersebut secara otomatis diganti dengan nilai default yang ada.

DROP DOMAIN DomainName [RESTRICT | CASCADE]

IEF - Entity Integrity

 Primary key dari suatu tabel harus berisi nilai yang unik, dan non-null untuk setiap barisnya.

 Standard ISO menyediakan clause FOREIGN KEY pada perintah CREATE dan ALTER TABLE :

PRIMARY KEY(staffNo)

PRIMARY KEY(clientNo, propertyNo)

->(Jika primary Key terdeiri dari beberapa kolom)

 Hanya dapat mempunyai 1 clause PRIMARY KEY untuk setiap table, tetapi masih dapat memastikan pemasukkan nilai yang unik untuk beberapa alternate key dengan menggunakan keyword UNIQUE:

UNIQUE(telNo)

IEF - Referential Integrity

 Foreign Key adalah kolom atau himpunan kolom yang menghubungkan setiap baris dalam child table yang berisi Foreign Key dengan baris dari parent table yang berisi Primary Key yang sesuai/match.

 Integritas referential berarti, jika FK berisi suatu nilai, maka nilai tersebut harus mengacu kesuatu baris dalam parent table.

 

2014

5

Basis Data Pusat Bahan Ajar dan eLearning

  Tim Dosen http://www.mercubuana.ac.id

 Standard ISO menyediakan pendefinisian untuk FK dengan clause FOREIGN KEY dalam CREATE dan ALTER TABLE:

FOREIGN KEY(branchNo) REFERENCES Branch

 Operasi INSERT/UPDATE yang berusaha untuk membuat nilai FK dalam child table tanpa nilai candidate key yang sesuai dalam parent table.

 Aksi yang dilakukan yang berusaha untuk merubah / menghapus (update/delete) nilai candidate key dalam parent table yang memiliki baris yang sesuai dalam child table tergantung pada referential action yang ditetapkan dengan subclause ON UPDATE dan ON DELETE. Terdapat 4 pilihan aksi, yaitu :

o CASCADE, menghapus baris dari parent table dan secara otomatis menghapus baris yang sesuai dalam child table, jika baris yang dihapus tadi merupakan candidate key yang digunakan sebagai foreign key pada tabel lainnya, maka aturan foreign key untuk tabel ini dihilangkan.

o SET NULL, menghapus baris pada parent table dan menetapkan nilai foreign key dalam child table menjadi NULL. Berlaku jika kolom foreign key mempunyai qualifier NOT NULL.

o SET DEFAULT, menghapus baris dari parent table dan menetapkan setiap komponen foreign key dari child table menjadi defaultyang telah ditetapkan. Berlaku jika kolom foreign key memliki nilai DEFAULT.

o NO ACTION, menolak operasi penghapusan dari parent table. Merupakan default jika aturan ON DELETE dihilangkan

Contoh 1 :

Pada tabel PropertyForRent, StaffNo merupakan foreign key yang mengacu ke tabel Staff. Untuk menetapkan aturan penghapusan, jika record staff dihapus dari tabel Staff, maka nilai StaffNo yang ada pada PropertyForRent akan diganti menjadi NULL. Sehingga dapat dituliskan :

FOREIGN KEY (staffNo) REFERENCES Staff ON DELETE SET NULL

 

2014

6

Basis Data Pusat Bahan Ajar dan eLearning

OwnerNo dalam tabel PropertyForRent merupakan foreign key yang mengacu ke tabel PrivateOwner. Untuk mendefinisikan aturan peng-update-an, jika OwnerNo dalam PrivateOwner di-update, maka kolom yang terkait dalam tabel PropertyForRent akan diganti dengan nilai baru, sehingga dapat dituliskan :

FOREIGN KEY (ownerNo) REFERENCES Owner ON UPDATE CASCADE

IEF - Enterprise Constraints

 Standard ISO memungkinkan untuk menetapkan pendefinisian enterprise constraint dengan menggunakan clause CHECK/UNIQUE dalam CREATE dan ALTER TABLE juga CREATE ASSERTION.

 Format pendeklarasian :

CREATE ASSERTION AssertionName CHECK (searchCondition)

 Contoh : Untuk mendefinisikan enterprise constraint yang menegaskan agar anggota staff tidak mengatur lebih dari 100 property pada waktu yang sama :

CREATE ASSERTION StaffNotHandlingTooMuch

CHECK (NOTEXISTS (SELECT staffNo FROM PropertyForRent

GROUP BY staffNo

Data Definition

 SQL DDL memungkinkan objek database seperti schema, domain, table, view, dan index untuk dibuat dan dihapuskan.

 Perintah-perintah SQL DDL yang utama adalah : o CREATE SCHEMA o DROP SCHEMA o CREATE/ALTER DOMAIN o DROP DOMAIN o CREATE/ALTER TABLE o DROP TABLE o CREATE VIEW o DROP VIEW

 Beberapa DBMS juga menyediakan : o CREATE INDEX

o DROP INDEX

 Relasi-relasi dan objek lain dari suatu database berada dalam sebuah environment.  Setiap environment mengandung saru atau lebih catalog, dan setiap catalog terdiri dari

sekumpulan/himpunan skema.

 Skema adalah suatu himpunan bernama yang terdiri dari oobjek-objek database yang saling berhubungan.

 Objek dalam sebuah skema dapat berupa table, view, domain, assertion, collation, translation, dan himpunan karakter. Seluruhnya memiliki owner yang sama.

Membuat Skema (CREATE SCHEMA)

 Perintah untuk mendefinisikan skema : CREATE SCHEMA [Name |

AUTHORIZATION CreatorId ]

 Perintah untuk menghapus skema :

DROP SCHEMA Name [RESTRICT | CASCADE ]

 Jika ditetapkan RESTRICT (default), maka skema harus kosong atau operasi akan digagalkan. Jika ditetapkan CASCADE, maka operasi berjalan berurut menghapus

2014

8

Basis Data Pusat Bahan Ajar dan eLearning

  Devi Fitrianah http://www.mercubuana.ac.id

   

seluruh objek yang terkait dengan skema yang telah didefinisikan sebelumnya. Jika terjadi kegagalan operasi, maka DROP SCHEMA akan gagal juga.

Membuat table (CREATE TABLE)

 Membuat tabel dasar digunakan format sbb : CREATE TABLE TableName

{(colName dataType [NOT NULL] [UNIQUE] [DEFAULT defaultOption]

[CHECK searchCondition] [,...]} [PRIMARY KEY (listOfColumns),] {[UNIQUE (listOfColumns),] […,]} {[FOREIGN KEY (listOfFKColumns)

REFERENCES ParentTableName [(listOfCKColumns)], [MATCH {PARTIAL|FULL}]

[ON UPDATE referentialAction] [ON DELETE referentialAction ]] [,…]} {[CHECK (searchCondition)] [,…] })

 Membuat tabel dengan satu atau lebih kolom dengan tipe data tertentu.

 Dengan NOT NULL, sistem akan menolak setia[ usaha untuk memasukan nilai NULL kedalam kolom.

 Dapat menspesifikasikan nilai DEFAULT untuk kolom.  Primary key harus selalu ditetapkan NOT NULL.

 Clause FOREIGN KEY menetapkan FK bersama dengan aksi referensial.

Contoh - CREATE TABLE

2014

9

Basis Data Pusat Bahan Ajar dan eLearning

  Devi Fitrianah http://www.mercubuana.ac.id

     

CHECK (VALUE IN (SELECT ownerNo FROM PrivateOwner));

CREATE DOMAIN StaffNumber AS VARCHAR(5)

CHECK (VALUE IN (SELECT staffNo FROM Staff));

CREATE DOMAIN BranchNumber AS VARCHAR(5)

CHECK (VALUE IN (SELECT branchNo FROM Branch));

CREATE DOMAIN PropertyNumber AS VARCHAR(5);

CREATE DOMAIN Street AS VARCHAR(25);

CREATE DOMAIN City AS VARCHAR(15); CREATE DOMAIN PostCode AS VARCHAR(8);

CREATE DOMAIN PropertyType AS VARCHAR(1); CHECK (VALUE IN (‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ’M’, ‘S’));

CREATE DOMAIN PropertyRooms AS SMALLINT; CHECK(VALUE BETWEEN 1 AND 15);

2014

10

Basis Data Pusat Bahan Ajar dan eLearning

  Devi Fitrianah http://www.mercubuana.ac.id

   

CHECK(VALUE BETWEEN 0 AND 9999.99);

CREATE TABLE PropertyForRent (

propertyNo PropertyNumber NOT NULL,

street Street NOT NULL,

city City NOT NULL,

postcode PostCode

type PropertyType NOT NULL DEFAULT 4, rooms PropertyRooms NOT NULL DEFAULT 4, rent PropertyRent NOT NULL, DEFAULT 600, ownerNo OwnerNumber NOT NULL,

staffNo StaffNumber

Constraint StaffNotHandlingTooMuch

CHECK (NOT EXIST( SELECT staffNo FROM PropertyForRent GROUP BY staffNo

HAVING COUNT(*) > 100)), branchNo BranchNumber NOT NULL,

PRIMARY KEY (propertyNo),

FOREIGN KEY (staffNo) REFERENCES Staff

ON DELETE SET NULL ON UPDATE CASCADE, FOREIGN KEY (ownerNo) REFERENCES PrivateOwner

2014

11

Basis Data Pusat Bahan Ajar dan eLearning

  Devi Fitrianah http://www.mercubuana.ac.id

     

ON DELETE NO ACTION ON UPDATE CASCADE, FOREIGN KEY (branchNo) REFERENCES Branch

ON DELETE NO ACTION ON UPDATE CASCADE);

Nilai default ‘F’ untuk ‘Flat’ ditetapkan untuk tipe property kolom Type. Batasan untuk kolom nomor staff ditetapkan untuk memastikan staff tidak menangani property lebih dari 100 unit. Primary key yang digunakan adalah PropertyNo.

StaffNo merupakan FK yang mengacu kepada tabel Staff, aturan penghapusan telah ditetapkan yaitu jika record dari tabel Staff dihapus, maka nilai yang terkait dengan kolom staff pada tabel PropertyForRent akan diisi dengan NULL. Untuk aturan peng-update-an, jika staffNo dalam tabel staff diupdate, maka nilai yang terkait dalam kolom staffNo pada tabel PropertyForRent akan di-update menjadi nilai yang baru.

OwnerNo merupakan FK yang mengacu pada tabel PrivateOwner. Aturan penghapusan NO ACTION berfungsi untuk mencegah penghapusan pada tabel PrivateOwner jika terdapat nilai OwnerNo yang sesuai dalam tabel PropertyForent. Untuk aturan peng-update-an, jika OwnerNo di-update, maka nilai yang terkait dalam kolom OwnerNo pada tabel PropertyForRent akan di-update menjadi nilai yang baru.

Merubah Table (ALTER TABLE)

 Menambahkan kolom pada tabel  Menghapus kolom dari tabel  Menambahkan batasan kolom  Menghapus batasan tabel  Menetapkan default untuk kolom  Menghapus default dari kolom

2014

12

Basis Data Pusat Bahan Ajar dan eLearning

  Devi Fitrianah http://www.mercubuana.ac.id

   

Contoh - ALTER TABLE

Ubah tabel Staff dengan menghapus default ‘Assistant’ untuk kolom position dan tetapkan default untuk kolom sex menjadi (‘F’).

ALTER TABLE Staff

ALTER position DROP DEFAULT; ALTER TABLE Staff

ALTER sex SET DEFAULT ‘F’;

Contoh - ALTER TABLE

Hapus batasan/constraint dari tabel PropertyForRent yang menetapkan bahwa tidak diperbolehkan menangani lebih dari 100 unit properti pada saat yang sama. Tambahkan kolom baru untuk tabel Client.

ALTER TABLE PropertyForRent

DROP CONSTRAINT StaffNotHandlingTooMuch; ALTER TABLE Client

ADD prefNoRooms PRooms;

Menghapus Tabel (DROP TABLE)

 Format penulisan : DROP TABLE

2014

13

Basis Data Pusat Bahan Ajar dan eLearning

  Devi Fitrianah http://www.mercubuana.ac.id

     

 Jika ditetapkan RESTRICT, maka operasi penghapusan akan ditolak jika terdapat objek lain yang terkait dengan objek yang akan dihapus. Sedangkan CASCADE, operasi penghapusan akan dilaksanakan dan seluruh objek terkait akan dihapus juga.

 Contoh :

Hapus sebuah tabel dan seluruh baris didalamnya DROP TABLE PropertyForRent;

Latihan

  1. MEMBUAT TABEL  Buatlah table dengan struktur sebagai berikut di dalam database                               TB_STAFF 

Field Name  Data type  Field Size  Keterangan 

IDSTAFF  Varchar2  5  Primary Key 

SNAMA  Varchar2  30   

SGAJI  Numeric  9,2   

TB_DIVISI 

Field Name  Data Type  Field Size  Keterangan 

IDDIVISI  Numeric  2  Primary Key 

2014

14

Basis Data Pusat Bahan Ajar dan eLearning

  Devi Fitrianah http://www.mercubuana.ac.id

    2. MENAMPILKAN STRUKTUR TABEL YANG SUDAH ADA  Gunakan perintah DESCRIBE    3. MENGINSERT DATA                                    4.  MEMODIFIKASI STRUKTUR DATA  Tambahkan field berikut sesuai dengan table yang sudah ditentukan dan definisikan constraintnya.      TB_STAFF 

IDSTAFF  SNAMA  SGAJI 

00011  YOLANDA TANTYA  5540000 00013  ARIEF RAHMAN  870000  00015  TUBAGUS ALDI  2540000 00017  ZIDAN  4540000 00019  HAFIRA AINI  1970000 00021  HALIZA  780000  00031  FAISAL RAFIF  5400000 00012  AQILA RASIYAH  7500000 00023  ALFATH MUBINAN 2300000 00014  SYARIFAH IZNA  1600000 TB_DIVISI  IDDIVISI DNAMA  10  PRODUKSI  20  KEUANGAN  30  PERSONALIA  40  HUMAS  50  PENJUALAN  60  IT 

2014

15

Basis Data Pusat Bahan Ajar dan eLearning

  Devi Fitrianah http://www.mercubuana.ac.id

                                  5. Masukkan data baru untuk field baru    TB_STAFF 

Field Name  Data Type  Field Size  Keterangan 

SDIVISI  Numeric  5  Foreign key (IDDIVISI) 

JENKEL  Varchar2  9   

TMPLHR  Varchar2  25   

TGLLHR  Date     

TB_DIVISI 

Field Name  Data Type  Field Size  Keterangan 

IDMANAGER  Numeric  5  Foreign key (IDSTAFF) 

TB_STAFF 

IDSTAFF  SNAMA  SGAJI  JENKEL  TMPLHR  TGLLHR  SDIVISI 

00011  YOLANDA TANTYA  5540000  PEREMPUAN  JAKARTA  12‐12‐1978  50 

00013  ARIEF RAHMAN  870000  LAKI‐LAKI  MEDAN  23‐04‐1965  20 

00015  TUBAGUS ALDI  2540000  LAKI‐LAKI  JAKARTA  03‐09‐1977  40 

00017  ZIDAN  4540000  LAKI‐LAKI  BANDUNG  09‐10‐1989  70 

00019  HAFIRA AINI  1970000  PEREMPUAN  SURABAYA  22‐10‐1987  40 

00021  HALIZA  780000  PEREMPUAN  BOGOR  08‐08‐1988  20 

2014

16

Basis Data Pusat Bahan Ajar dan eLearning

  Devi Fitrianah http://www.mercubuana.ac.id

                            6. Tampilkan hasil masing‐masing tabel dengan data setelah disisipkan data baru      7. Buatlah perintah‐perintah SQL untuk kebutuhan berikut dan tampilkan hasilnya.  a. Tampilkan nama dan gaji dari pegawai‐pegawai divisi tertentu.  b. Tampilkan nama dan gaji dari para manajer divisi.  c. Tampilkan jumlah pegawai di masing‐masing divisi.  d. Tampilkan rata‐rata gaji para pegawai di masing‐masing divisi.  e. Tampilkan gaji terendah, gaji tertinggi, dan gaji rata‐rata seluruh pegawai  f. Tampilkan nama pegawai beserta usianya diatas 30 tahun  g. Tampilkan gaji setahun dari divisi produksi     

00012  AQILA RASIYAH  7500000  PEREMPUAN  TANGERANG  24‐06‐1980  10 

00023  ALFATH MUBINAN  2300000  LAKI‐LAKI  JAKARTA  30‐07‐1984  30 

00014  SYARIFAH IZNA  1600000  PEREMPUAN  JAKARTA  26‐12‐1976  30 

TB_DIVISI 

IDDIVISI  DNAMA  IDMANAGER 

10  PRODUKSI  00012  20  KEUANGAN  00013  30  PERSONALIA  00023  40  HUMAS  00019  50  PENJUALAN  00011  60  IT  00031 

2014

17

Basis Data Pusat Bahan Ajar dan eLearning

  Devi Fitrianah http://www.mercubuana.ac.id

     

Daftar Pustaka

1. Database system: A Practical approach to design, implementation and management 2. Sistem Manajemen Basis Data

MODUL PERKULIAHAN

Basis Data

SQL:

DATA DEFINITION LANGUAGE

Dokumen terkait