Basis Data Lanjut [IF 605] Pertemuan – 1 Pengenalan Basis Data Materi yang akan dibahas : 1. 2. 3. 4. Database Tabel Tipe Data Kolom a. Identity b. Computed Column c. Constraint d. Sparse Column e. Null-able and Not Null Column 5. Key a. Primary Key b. Foreign Key 6. Database Diagram Tujuan : [Basic] Pembahasan 1. Database Creat Database Menambahkan sebuah database baru kedalam DBMS / SQL Server Instance. Script : CREATE DATABASE [Nama Database] ON [PRIMARY] ( NAME = ‘Name’, SIZE = X, MAXSIZE = Y, FILEGROWTH = Z, FILENAME = ‘FULLPATH’) LOG ON ( NAME = ‘Name’, SIZE = X, MAXSIZE = Y, FILEGROWTH = Z, FILENAME = ‘FULLPATH’) Keterangan : [Nama Database] = Nama Database yang diinginkan, selalu dimulai dengan huruf dan tidak boleh dimulai dengan angka, harus unix (tidak boleh terdapat 2 database dengan nama yang sama). NAME = diisi dengan [Nama Database] yang akan menjadi Logical Filename. SIZE = Ukuran Database awal ketika database tersebut dibuat, dapat berukuran dalam satuan [KB, MB, GB, TB]. Contoh : 10KB. MAXSIZE = Ukuran maksimal yang diperbolehkan untuk database yang dibuat. Satuannya sama seperti SIZE, jika tidak ingin dibatasi, dapat diinput UNLIMITED. FILEGROWTH = Jumlah pertumbuhan rata-rata dari database tersebut jika terdapat penambahan data atau pengurangan data. Dapat berukuran seperti SIZE, dapat juga dalam bentuk persen . Contoh 10%. Perlu diingat, jumlah pertumbuhan Database tidak dapat melebihi jumlah MAXSIZE yang diinput. FILENAME = berisi PHYSICAL PATH dari lokasi yang ingin disimpan didalam sebuah Hard Disk diikuti dengan nama File dari Database tersebut. Contoh : ‘C:\Database\MyDatabase1.mdf. PRIMARY = Setiap Database harus memiliki sebuah data utama sebagai tempat penyimpanan data-data. Memiliki ekstensi (.mdf). SECONDARY = Setiap Database dapat memiliki 0 atau lebih dari 1 buah file secondary. Fungsinya sebagai cadangan dari File PRIMARY. Memiliki ekstensi (.ndf). LOG ON = Setiap Database yang dibuat harus memiliki sebuah file yang berisi LOG dari Database tersebut. Jumlah file LOG dapat lebih dari 1. Fungsinya menyimpan informasi yang digunakan untuk proses attach atau dettach Database atau proses Database Recovery. Memiliki ekstensi (.ldf). Drop Database Membuang / menghapus sebuah database dari DBMS / SQL Server Instance. Script : DROP DATABASE [Nama Database] Attach Database Mengaitkan sebuah Database kedalam sebuah SQL Server Instance agar dapat digunakan. Script : CREATE DATABASE [Nama Database] ON (FILENAME = ‘Logical Path dari database primary file’) FOR ATTACH; 2. Tabel Tabel merupakan sebuah object yang terdapat didalam sebuah database. Tabel terdiri dari baris dan kolom, pada tabel inilah data-data disimpan. a. Create Berfungsi untuk menambahkan sebuah tabel baru kedalam sebuah database / schema. Script : CREATE TABLE [Nama Tabel] ( [Nama Kolom] [Tipe Data](panjang data), [Nama Kolom] [Tipe Data](panjang data) –Jika lebih dari 1 kolom Cara membuat sebuah tabel Mahasiswa dengan 2 kolom yaitu NRP dan Nama : CREATE TABLE Mahasiswa ( NRP VARCHAR(8), Nama VARCHAR(50) ); b. ALTER Digunakan untuk merubah nama kolom atau menambahkan kolom baru setelah sebuah table dibuat. Script – Menambahkan kolom baru : ALTER TABLE [Nama Tabel] ADD [Nama Kolom] [Tipe Data]; Script – Menghapus sebuah kolom : ALTER TABLE [Nama Tabel] DROP COLUMN [Nama Kolom]; Script – Merubah sebuah tipe data pada sebuah kolom : ALTER TABLE [Nama Tabel] ALTER COLUMN [Nama Kolom yang Akan Diubah] [Tipe Data Baru]; c. DROP Fungsi ini digunakan untuk menghapus sebuah tabel dari sebuah database. Script : DROP TABLE [Nama Tabel]; 3. Tipe Data Tipe data yang dikenal didalam SQL Server 2008 sebagai berikut : 4. Kolom a. Identity Tipe data yang diperbolehkan untuk kolom identity adalah INT atau yang berupa angka. Kolom identity memiliki karakteristik penambahan otomatis yang dapat diatur, serta nilai awal yang dapat diatur juga. Contoh IDENTITY(1,1) artinya kolom ini memiliki tipe data INT yang dimulai dari angka 1 dan setiap penambahan baris, angka ini bertambah 1. Tipe kolom ini tidak boleh dilakukan Transaksi INSERT. Contoh tabel Utilities dengan kolom ID sebagai IDENTITY dengan nilai awal 1 dan increment 1 serta sebagai kolom PRIMARY KEY CREATE TABLE Utilities ( ID INT IDENTITY(1,1) PRiMARY KEY Name VARCHAR(20) ); b. Computed Column Nilai dari kolom ini diperoleh dari perhitungan kolom-kolom lain pada tabel yang sama. Contoh : kolom total diperoleh dari perkalian kolom Qty dan Price CREATE TABLE Transaksi ( idTran INT PRiMARY KEY IDENTITY(1,1), ProductCode VARCHAR(10) NOT NULL, Qty INT NOT NULL, Price MONEY NOT NULL, Total AS (Qty * Price) --Computed Column ); c. Constraint Constraint dibagi menjadi beberapa bagian : a) Primary Key Constraint Constraint ini akan memastikan bahwa nilai yang diinput selalu unix (tidak ada yang sama didalam sebuah tabel). Contoh : tabel Product yang memiliki ProductCode sebagai constraint Primary Key. CREATE TABLE Product ( ProductCode VARCHAR(8), ProductDesc VARCHAR(50), CONSTRAINT pk_product PRIMARY KEY (ProductCode) ); b) Foreign Key Constraint Contraint ini akan memastikan bahwa nilai yang diinput sudah tersedia sebelumnya dan harus ada pada tabel Primary Key dari Foreign Key ini. Contoh : CREATE TABLE ProductType ( TypeCode VARCHAR(8) PRIMARY KEY, TypeDesc VARCHAR(50) ); CREATE TABLE Product ( ProductCode VARCHAR(5) PRIMARY KEY, TypeCode VARCHAR(8), ProductDesc VARCHAR(50) ); -- Penambahan Constraint Foreign Key Pada tabel Product ALTER TABLE Product ADD CONSTRAINT fk_productType FOREIGN KEY(TypeCode) REFERENCES ProductType(TypeCode); c) With Check Constraint Constraint ini akan memastikan bahwa nilai yang diinput memenuhi suatu kriteria. Contoh : tabel Order yang memiliki kolom ShippingDate yang harus lebih besar dari OrderDate CREATE TABLE Order ( OrderId INT IDENTITY(1,1), OrderDate DATE NOT NULL, ShippingDate NULL ); ALTER TABLE Order WITH CHECK ADD CONSTRAINT ck_shippingdate CHECK (ShippingDate > OrderDate); d. Sparse Column Berfungsi mengurangi space yang digunakan untuk kolom yang boleh memiliki nilai NULL. Contoh : tabel Mahasiswa yang memiliki alamat alternatif yang boleh diisi dengan nilai NULL CREATE TABLE Mahasiswa ( NRP VARCHAR(7) PRIMARY KEY, Alamat1 VARCHAR(50) NOT NULL, Alamat2 VARCHAR(50) SPARSE NULL ); e. Null-able Column and Not Null Column Attribut null dan not null digunakan untuk menentukan apakah suatu kolom pada suatu table dapat bernilai null atau tidak. Arti dari nilai null adalah tidak memiliki nilai alias kosong. Kolom primary key otomatis tidak boleh bernilai null. Contoh Table Mahasiswa dengan kolom nama yang tidak boleh null dan alamat yang boleh bernilai null. CREATE TABLE Mahasiswa ( NRP VARCHAR(7) PRIMARY KEY, Nama VARCHAR(50) NOT NULL, Alamat VARCHAR(100) NULL ); 5. Key a. Primary Key Ketika suatu tabel dibuat, kita dapat menentukan attribut yang harus memiliki attribut Primary Key. Attribut ini akan memastikan bahwa tidak ada nilai yang sama didalam suatu tabel. Sama halnya dengan Constraint Primary Key. Contoh : tabel Mahasiswa dengan NRP sebagai Primary Key. CREATE TABLE Mahasiswa ( NRP VARCHAR(8) PRIMARY KEY, Nama VARCHAR(25) NOT NULL ); b. Foreign Key Sama halnya dengan Constraint Foreign key Contoh : CREATE TABLE ProductType ( TypeCode VARCHAR(8) PRIMARY KEY, TypeDesc VARCHAR(50) ); CREATE TABLE Product ( ProductCode VARCHAR(5) PRIMARY KEY, TypeCode VARCHAR(8) FOREIGN KEY REFERENCES ProductType(TypeCode) ON UPDATE CASCADE ON DELETE CASCADE, ProductDesc VARCHAR(50) ); 6. Database Diagram Berisi diagram yang memetakan semua tabel berserta relasinya terdapat didalam sebuah Database. [Intermediate] 1. Temporary Table Temporary table merupakan tabel khusus. Tabel temporary ini tidak disimpan pada database primary, melainkan disimpan pada temporary data yang terdapat pada sistem SQL Server. Script untuk membuat temporary table sama dengan script yang digunakan untuk membuat table biasa, yang membedakan hanya terdapat pada penamaan tabel. Penamaan table selalu dimulai dengan tanda (#). Script : CREATE TABLE #temp1 ( ID INT PRIMARY KEY, Nama VARCHAR(20), ModifiedDate DATETIME ); Temporary table dapat dikategorikan menjadi : a. Local Temporary Table Local temporary table hanya berlaku didalam sebuah Stored procedure. Apabila sebuah Stored Procedure di eksekusi, maka secara otomatis table akan dibuat dan dibuang apabila Stored Procedure tersebut telah selesai dieksekusi. b. Global Temporary Table Berbeda dengan Local Temporary table, Global Temporary Table ini dapat diakses kapan saja selama tabel temporary ini belum dibuang. Untuk mengetahui sebuah table temporary sudah ada atau belum didalam sebuah sistem SQL Server, anda dapat menggunakan script dibawah ini : Script : SELECT * FROM tempdb.sys.tables WHERE Name LIKE ‘%%temp1%’ 2. Database Schema Schema digunakan untuk memudahkan proses development dan pembagian hak akses. Setiap table dikelompokan berdasarkan database schema. Database Schema dapat mengurangi pekerjaan dan meningkatkan fleksibilitas untuk hal-hal yang berhubungan dengan administrasi database. Setiap schema yang dibuat, berlaku otorisasi. CREATE SCHEMA [Nama Skema] Jika ingin mendapatkan informasi tambahan, mahasiswa dapat mengakses langsung ke link-link berikut : 1. Database (Definisi dan cara kerja) : http://msdn.microsoft.com/en-us/library/ms179422%28v=SQL.100%29.aspx 2. Database (Create, Attach and Detach) : http://msdn.microsoft.com/en-us/library/ms176061%28v=SQL.100%29.aspx 3. Database File dan Files Group : http://msdn.microsoft.com/en-us/library/ms179316%28v=SQL.100%29.aspx 4. Attaching and Dettaching database : http://msdn.microsoft.com/en-us/library/ms190794%28v=SQL.100%29.aspx 5. Temporary Tables (how To Create) : http://msdn.microsoft.com/en-us/library/ms174979.aspx 6. Database Schema : http://msdn.microsoft.com/en-us/library/dd283095%28v=sql.100%29.aspx 7. Alter Table : http://msdn.microsoft.com/en-us/library/ms190273.aspx 8. Drop Table : http://msdn.microsoft.com/en-us/library/ms173790.aspx