PERANCANGAN FISIK BASIS DATA Rajif Agung Yunmar, S.Kom., M.Cs.
PRETEST Sebutkan pentingnya normalisasi basis data? Jelaskan! Apa yang anda ketahui mengenai anomali. Apa yang anda ketahui mengenai ketergantungan? Jelaskan! Jelaskan langkah-langkah normalisasi.
TUJUAN PERKULIAHAN Mahasiswa dapat mengimplementasikan perancangan basis data kedalam bentuk tabel-tabel fisik. Mahasiswa dapat membangun basis data sesuai dengan kebutuhan organisasi dan memiliki standar-standar kualitas basis data. Mahasiswa dapat mengatur performasi dan keamanan dari sebuah basis data.
POKOK BAHASAN 1. Pendahuluan 2. SQL 3. Format data 4. Integritas data 5. Penentuan index 6. Pengaturan keamanan 7. Studi Kasus
PENDAHULUAN Tujuan perancangan fisik: Mendapatkan efisiensi dalam pemrosesan data. Efisiensi diharapkan membuat basis data dapat memberi respon yang cepat. Menghemat ruang penyimpanan, menghindari sia-sianya ruang penyimpanan.
SQL SQL (Structure Query Language) adalah sebuah bahasa pemrograman aras tinggi yang menjadi standar untuk pengolahan data pada sebagian besar DBMS. Secara umum, terdapat dua kelompok penggunaan perintah SQL : Data Definition Language (DDL) Data Manipulation Language (DML)
DATA DEFINITION LANGUAGE (DDL) Perintah SQL yang digunakan untuk mendefinisikan sebuah objek basis data. Misalnya : CREATE : Membuat sebuah tabel DROP : Menghapus sebuah tabel ALTER : Mengubah struktur tabel
CONTOH DDL Pembuatan tabel CREATE TABLE <nama_tabel> ( <nama_kolom1> <TIPE_DATA>, <nama_kolom2> <TIPE_DATA>, <nama_kolom3> <TIPE_DATA> ); Mengubah struktur tabel ALTER TABLE <nama_tabel> CHANGE <nama_kolom1> <nama_baru1> <TIPE_DATA>, <nama_kolom2> <nama_baru2> <TIPE_DATA> ; Menghapus tabel DROP TABLE <nama_tabel>;
DATA MANIPULATION LANGUAGE (DML)? Akan dibahas pada pertemuan selanjutnya!
SEBELUM PERANCANGAN FISIK.. Rancangan basis data dalam bentuk tabel dan kolom harus sudah normal. Penjelasan mengenai tempat, waktu, dan frekuensi dari data yang akan diolah. Meliputi: pembacaan data, pengubahan, dan penghapusan. Deskripsi mengenai teknologi yang digunakan dalam implementasi basis data, terutama mengenai DBMS.
TAHAPAN PERANCANGAN FISIK 1. Menentukan format data dan kekangan dari setiap atribut. 2. Perkiraan kebutuhan ruang penyimpanan. 3. Pemilihan index untuk kepentingan mempercepat pengambilan data. 4. Menentukan mekanisme pengontrolan keamanan data.
FORMAT DATA - TAHAP PERANCANGAN FISIK Setiap atribut dalam tabel perlu dilengkapi dengan format data: Tipe data Panjang maksimum data Kekangan terhadap data tertentu
FORMAT DATA - TAHAP PERANCANGAN FISIK Penentuan format data harus mengikuti aturan sebagai berikut: Menggunakan ruang sekecil mungkin Menampung semua kemungkinan terhadap data yang akan ditampung dalam atribut tersebut. Menolak nilai-nilai yang tidak absah.
FORMAT DATA - TAHAP PERANCANGAN FISIK Tipe data menyatakan suatu bentuk data yang telah didefinisikan oleh DBMS yang dapat menampung data sesuai dengan karakteristik tertentu. Setiap DBMS memiliki tipe data yang bisa jadi berbeda, namun menyiratkan jenis yang sama.
FORMAT DATA - TAHAP PERANCANGAN FISIK Tipe data standar pada DBMS populer Data type Access SQL Server Oracle MySQL PostgreSQL boolean Yes/No Bit Byte N/A Boolean integer Number (integer) Int Number float Number (single) Float Real Int Integer Int Integer Number Float Numeric currency Currency Money N/A N/A Money string (fixed) N/A Char Char Char Char string (variable) binary object Text (<256) Memo (65k+) OLE Object Memo Varchar Binary (fixed up to 8K) Varbinary (<8K) Image (<2GB) Varchar Varchar2 Long Raw Varchar Blob Text Varchar Binary Varbinary
FORMAT DATA - TAHAP PERANCANGAN FISIK Variasi tipe data string pada MySQL Data Size Descriptoin CHAR Length bytes A fixed-length field from 0 to 255 characters long. VARCHAR String length + 1 bytes A fixed-length field from 0 to 255 characters long. TINYTEXT String length + 1 bytes A string with a maximum length of 255 characters. TEXT String length + 2 bytes A string with a maximum length of 65,535 characters. MEDIUMTEXT String length + 3 bytes A string with a maximum length of 16,777,215 characters. LONGTEXT String length + 4 bytes A string with a maximum length of 4,294,967,295 characters.
FORMAT DATA - TAHAP PERANCANGAN FISIK Variasi tipe data integer pada MySQL Data Size Descriptoin TINYINT 1 byte Range of -128 to 127 or 0 to 255 unsigned. SMALLINT 2 bytes Range of -32,768 to 32,767 or 0 to 65535 unsigned. MEDIUMINT 3 bytes Range of -8,388,608 to 8,388,607 or 0 to 16,777,215 unsigned. INT 4 bytes Range of -2,147,483,648 to 2,147,483,647 or 0 to 4,294,967,295 unsigned. BIGINT 8 bytes Range of -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 or 0 to 18,446,744,073,709,551,615 unsigned.
FORMAT DATA - TAHAP PERANCANGAN FISIK Variasi tipe data date pada MySQL Data Size Descriptoin DATE 3 bytes In the format of YYYY-MM-DD. DATETIME 8 bytes In the format of YYYY-MM-DD HH:MM:SS. TIMESTAMP 4 bytes In the format of YYYYMMDDHHMMSS; acceptable range ends inthe year 2037. TIME 3 bytes In the format of HH:MM:SS
FORMAT DATA - TAHAP PERANCANGAN FISIK Variasi tipe data lain pada MySQL Data Size Descriptoin FLOAT 4 bytes A small number with a floating decimal point. DOUBLE 8 bytes A large number with a floating decimal point. DECIMAL Length + 1 or Length + 2 bytes A DOUBLE stored as a string, allowing for a fixed decimal point. ENUM 1 or 2 bytes Short for enumeration, which means that each column can haveone of several possible values. SET 1, 2, 3, 4, or 8 bytes Like ENUM except that each column can have more than one ofseveral possible values.
FORMAT DATA - TAHAP PERANCANGAN FISIK Contoh: tabel dosen NIP nama gol pangkat Kolom Tipe Data Kunci NIP INT Primer penentuan format data nama gol pangkat VARCHAR(25) VARCHAR(4) VARCHAR(15) CREATE TABLE dosen ( nip INT, nama VARCHAR(25), gol VARCHAR(4), pangkat VARCHAR(15), PRIMARY KEY (nip) ) Engine=InnoDB; implementasi perintah SQL
FORMAT DATA - TAHAP PERANCANGAN FISIK Contoh: tentukan format data dan perintah SQL yang digunakan untuk membentuk tabel berikut: Tabel Buku ISBN judul sinopsis Tabel Mahasiswa NIM nama tgl_lahir Jenis_kelamin RT_RW Desa Kecamatan...
INTEGRITAS DATA Integritas dalam basis data berhubungan dengan kepercayaan akan validnya sebuah informasi. Integritas menjamin konsistensi data yang telah memenuhi semua konstrain (batasan, disebut juga sebagai integrity constraint) yang ditentukan. Integritas menjamin akurasi, validitas, dan kualitas dari sebuah data.
JENIS-JENIS INTEGRITAS DATA 1. Integritas Entitas Mengatur agar sebuah baris data pada tabel bersifat unik. Tidak ada data serupa dalam satu tabel yang sama. CREATE TABLE dosen ( nip INT, nama VARCHAR(25), gol VARCHAR(4), pangkat VARCHAR(15), PRIMARY KEY (nip) ) Engine=InnoDB; Mendeskripsikan bahwa kolom nip merupakan kunci primer dari tabel dosen. Oleh karena kunci primer, maka tidak boleh ada data seupa lain dalam tabel ini.
JENIS-JENIS INTEGRITAS DATA 2. Integritas Domain Mengatur agar setiap data yang hendak dimasukkan dalam suatu tabel memenuhi batasan-batasan tertentu. Seperti: tipe data, range nilai, dan lain sebagainya. Komponen integritas domain: Nilai bawaan, nilai yang dengan sendirinya akan diberikan apabila nilai dari kolom tersebut tidak diberikan nilai secara eksplisit oleh pengguna. Jangkauan, mengatur isian dari sebuah kolom yang dinyatakan dalam rentang (jangkauan) tertentu, dimulai dari nilai yang paling kecil sampai nilai yang paling besar. Nilai Null, mengatur apakah sebuah kolom boleh dikosongkan atau tidak.
JENIS-JENIS INTEGRITAS DATA 2. Integritas Domain CREATE TABLE buku ( ISBN INT NOT NULL, judul VARCHAR(25) NOT NULL, sinopsis VARCHAR(255) NOT NULL DEFAULT 'Sinopsis belum ada', lampiran TEXT NULL, halaman SMALLINT NOT NULL, CONSTRAINT chk_halaman CHECK (halaman > 0), PRIMARY KEY(ISBN) ) Engine=InnoDB; Mengatur kolom tidak boleh kosong Mengatur kolom boleh kosong Mengatur nilai bawaan atau nilai default Mengatur agar data jumlah halaman lebih besar dari nol
JENIS-JENIS INTEGRITAS DATA 3. Integritas Referensial Memastikan bahwa seluruh nilai dari kunci tamu dapat menemukan pasangan yang tepat pada tabel asal.
JENIS-JENIS INTEGRITAS DATA 3. Integritas Referensial Tabel Barang kd_barang nama_barang harga_jual kd_pemasok B001 TV Sono Flat 27 2.700.000 P22 B002 HP Samsul G7 2.250.000 P33 B003 Komputer DULL i3 4.500.000 P11 B004 TV Polyback 32 3.300.000 P33 B005 HP Lehngopo A100 1.400.000 P44 Tabel Pemasok kd_pemasok nama_pemasok kota P22 PT Citra Jaya Bogor P33 PT Kartika Yogya P11 PT Amerta Bandung P44 PT Nidya Tangerang
JENIS-JENIS INTEGRITAS DATA 3. Integritas Referensial Penentuan format data yang tepat untuk setiap tabel Tabel Pemasok Kolom Tipe Data Kunci kd_pemasok CHAR(3) Kunci Primer nama_pemasok VARCHAR(25) kota VARCHAR(25) Tabel Barang Kolom Tipe Data Kunci kd_barang CHAR(3) Kunci Primer nama_barang VARCHAR(25) harga_jual FLOAT kd_pemasok CHAR(3) Kunci Tamu
JENIS-JENIS INTEGRITAS DATA CREATE TABLE pemasok ( kd_pemasok CHAR(3) NOT NULL, nama_pemasok VARCHAR(25) NOT NULL, kota VARCHAR(25) NULL, PRIMARY KEY(kd_pemasok) ) Engine=InnoDB; Keberadaan data kd_pemasok pada tabel asal akan terus dijamin. Apabila terdapat perubahan data kd_pemasok pada tabel asal, maka data kd_pemasok pada tabel referensi akan ikut berubah. Apabila pengguna ingin menghapus data pemasok, langkah ini akan dicegah oleh basis data. integritas referensial CREATE TABLE barang ( kd_barang CHAR(4) NOT NULL, nama_barang VARCHAR(25) NOT NULL, harga_jual FLOAT NOT NULL, kd_pemasok CHAR(3) NOT NULL, PRIMARY KEY (kd_barang), FOREIGN KEY (kd_pemasok) REFERENCES pemasok(kd_pemasok) ON UPDATE CASCADE ON DELETE RESTRICT ) Engine=InnoDB;
JENIS-JENIS INTEGRITAS DATA 4. Integritas Enterprise Mengatur agar integritas suata data ditentukan spesifik oleh database administrator. Contoh: CREATE DOMAIN gender VARCHAR(8) CONSTRAINT chk_gender CHECK (VALUE IN('Pria','Wanita')) CONSTRAINT chk_gender NOT NULL (gender);
BATASAN INTEGRITAS DATA Disebut juga sebagai integrity constraint, yaitu suatu aturan yang membatasi jenis data yang diijinkan untuk dimasukkan ke dalam tabel. Integrity constraint dapat didefinisikan pada saat pembuatan tabel, dapat juga dilakukan setelah tabel dibuat. Integrity constraint yang didefinisikan setelah pembuatan tabel, maka constraint tersebut akan memeriksa data yang ada. Jika ditemukan pelanggaran maka pembuatan constraint akan ditolak/error.
BATASAN INTEGRITAS DATA Jenis integrity constraint: NOT NULL : Menentukan suatu kolom tidak boleh berisi nilai NULL. UNIQUE : Mencegah terdapat beberapa data yang serupa. PRIMARY KEY : Kombinasi constraint NOT NULL dan UNIQUE dalam satu deklarasi. Mengidentifikasikan secara unik setiap baris pada tabel. FOREIGN KEY : Memaksakan nilai pada kolom tabel asal untuk bernilai sama dengan tabel referensi. CHECK : Menentukan suatu kondisi yang harus bernilai benar.
LATIHAN NIP nama gol pangkat Transformasi ERD berikut dalam bentuk tabel. Tentukan format datanya, tentukan batasan integritas datanya, kemudian implementasikan menggunakan SQL! Kerjakan secara berkelompok. Presentasikan dengan baik menggunakan slide PPT. Dosen Mengampu th_akademik Matakuliah kode_mk nama_mk SKS
LATIHAN Transformasi ERD berikut dalam bentuk tabel. Tentukan format datanya, kemudian implementasikan menggunakan SQL! Presentasikan dengan baik menggunakan slide PPT. th_akademik Dosen Mengampu Matakuliah Mengambil nilai Mahasiswa
INDEX Index merupakan struktur data yang digunakan untuk mempercepat pencarian dan pengurutan data. Pada umumnya, index akan diterapkan kedalam struktur data berbentuk pohon. Sebuah primary key merupakan gabungan dari unique, not null, dan index. Pencarian dan pengurutan dengan kunci primer akan berjalan lebih cepat.
INDEX Kolom non kunci primer dapat pula dipasangi index. Namun, menciptakan index untuk semua kolom pada tabel bukan ide yang baik. Meskipun pencarian dan pengurutan pada kolom ter-index menjadi lebih cepat, namun proses pemutakhiran index memerlukan biaya komputasi yang besar. Berlakukan index hanya pada kolom-kolom yang memang diperlukan.
PENENTUAN INDEX 1. DBMS modern secara otomatis mengindex kolom-kolom yang dijadikan sebagai kunci primer. 2. Ciptakan index kolom-kolom (selain kunci primer) yang sering menjadi kunci pencarian. Sebagai pegangan, kolom-kolom yang perlu diindex adalah kolom-kolom sering muncul dalam klausa SQL WHERE. 3. Ciptakan index kolom-kolom kunci tamu.
PENENTUAN INDEX 4. Ciptakan index pada kolom-kolom yang sering dilibatkan dalam klausa ORDER BY atau GROUP BY, dan perintah ini sering dieksekusi. 5. Hindari pemasangan index pada kolom-kolom yang nilainya sering diubah. Hal ini berkaitan dengan besarnya biaya komputasi apabila terdapat data yang berubah. 6. Hindari pemasangan index pada kolom yang mengandung string yang sangat panjang.
PENENTUAN INDEX Contoh: CREATE INDEX nama_index ON barang(kd_pemasok); CREATE INDEX nama_index ON tabel(kolom1,kolom2,kolom3);
KEAMANAN BASIS DATA Tidak semua orang diberikan wewenang yang sama dalam mengelola sebuah basis data. Setiap orang harus diberi hak akses yang berbeda. Pengaturan keamanan pengaksesan dan diatur melalui: Identitas pengguna dan password View Level hak akses
USERNAME PASSWORD KEAMANAN BASIS DATA Level pertama untuk menjaga keamanan akses basis data. Contoh: SET PASSWORD FOR rajiva@localhost = PASSWORD('itera'); FLUSH PRIVILEGES;
VIEW KEAMANAN BASIS DATA Dirancang untuk menentukan data maha saja yang boleh diakses. Kolom tertentu dalam tabel dapat diatur agar tidak terlihat oleh pemakai tertentu. Contoh: terdapat beberapa orang yang boleh melihat data gaji pegawai, tapi beberapa orang tidak diperbolehkan.
VIEW KEAMANAN BASIS DATA Tabel Pegawai NIP nama tlg_lahir alamat gaji View Info_Pegawai NIP nama dibuat view Syntax SQL CREATE VIEW info_pegawai AS SELECT NIP, nama FROM pegawai;
HAK AKSES KEAMANAN BASIS DATA Terkait dengan level hak akses, terdapat istilah wewenang atau privilege. Wewenang adalah tindakan yang dapat dilakukan oleh seorang pengguna terhadap tabel maupun view. Contoh: pengguna A dapat melihat isi tabel pegawai, pengguna B boleh mengubah data yang terdapat pada tabel pegawai Wewenang pengguna A dan B berbeda.
HAK AKSES KEAMANAN BASIS DATA GRANT hak_akses (daftar_kolom) ON objek TO pengguna; hak_akses, menerangkan akses yang diberikan (SELECT, INSERT, UPDATE, DELETE, atau gabungan). Pisahkan dengan tanda koma apabila terdapat lebih dari satu hak akses. daftar_kolom, menerangkan kolom yang ditentukan untuk diakses oleh pengguna. objek, menyatakan objek (tabel atau view), yang hak aksesnya akan diatur. Pengguna, nama yang hak aksesnya akan diubah
HAK AKSES KEAMANAN BASIS DATA Contoh: GRANT SELECT, INSERT, DELETE, UPDATE ON nama_database.pegawai TO rajiva@localhost; FLUSH PRIVILEGES;
HAK AKSES KEAMANAN BASIS DATA Contoh pemberian hak akses pada kolom tertentu: GRANT SELECT (NIK,nama), UPDATE (nama,alamat,gaji) ON nama_database.pegawai TO rajiva@localhost; FLUSH PRIVILEGES;
HAK AKSES KEAMANAN BASIS DATA Contoh pemberian hak akses tak terbatas pada suatu basis data: GRANT ALL PRIVILEGES ON nama_database.* TO rajiva@localhost; FLUSH PRIVILEGES;
STUDI KASUS Menggunakan tugas kelompok anda: Tentukan format data dari tabel-tabel yang telah normal, kemudian implementasikan menggunakan SQL! Buatlah minimal 4 pengguna dengan hak akses tertentu terhadap objek-objek basis data anda! Presentasikan dengan baik menggunakan slide PPT!
TERIMA KASIH
PR Instal software basis data pada komputer anda. Gunakan perangkat lunak MySQL atau Maria DB. Aplikasikan rancangan basis data anda (yang sudah dinormalisasi) pada perangkat lunak tersebut. Masukkan semua data riil yang anda miliki pada perangkat lunak basis data tersebut. Buatlah minimal 4 pengguna dengan hak akses tertentu terhadap objek-objek basis data anda! Simulasikan hak akses tersebut. Susun dalam sebuah laporan dan presentasikan!
PR Sebutkan jenis-jenis algoritma indexing database? Jelaskan dan sertai dengan contoh! Jelaskan cara kerja dari hashing? Serta dengan contoh! Pada suatu kasus, kapan kita memakai indexing, dan kapan pula kita menggunakan hashing? Susun dalam sebuah laporan dan presentasikan!