• Senin, 15 Maret 2010

    Diposting oleh DANGER AREA

    Membuat Database dengan SQL Server (2005/2008)

    SQL Server merupakan suatu RDBMS (Relational Database Management System) yang dapat mengolah data. Software ini merupakan produk yang dibuat oleh raksasa software dunia,Microsoft. Hal pertama yang akan kita lakukan jika mengimpelentasikan suatu aplikasidatabase menggunakan SQL Server adalah membuat database itu sendiri. Pembuatan databasedengan arsitektur yang tepat akan berpengaruh terhadap performa database itu sendiri.

    Membuat Database Melalui SSMS Membuat Database di SQL Server bisa dilakukan melalui dua cara, yaitu dengan SSMS (SQL Server Management Studio) dan melalui script. Berikut ini adalah langkahlangkah membuat database menggunakan SSMS :
    1. Pada Object Explorer, pilih Databases. Klik kanan dan pilih New Database.
    2. Isikan Database name dengan nama yang sesuai. Maka Logical Name pada grid akan mengikuti nama yang didefinisikan.
    3. Secara default, kolom pada grid-grid tersebut sudah terisi. Tetapi, kita juga bisa mengubah data yang ada pada kolom tersebut sesuai kebutuhan kita.
    4. Klik tombol OK untuk membuat database.
    Langkah di atas merupakan langkah-langkah membuat database secara default. Secara default, SQL Server akan membuat dua filegroup, yaitu mdf dan ldf. Mdf merupakan master data file (disebut juga dengan filegroup primary), yang merupakan starting point dari SQL Server tersebut. Pada mdf ini, kita juga bisa menyimpan data kebutuhan aplikasi.
    Sedangkan ldf merupakan log data file (disebut juga dengan filegroup log), merupakan tempat penyimpanan log dari transaksi yang terjadi pada database tersebut. Selain dua filegroup tersebut, pada SQL Server bisa membuat file ndf. Ndf merupakan secondary data file, yang bisa ditambahkan ke dalam database kita. Biasanya digunakan untuk menyimpan data. Setelah database jadi, maka database tersebut akan terlihat pada Object Explorer. Database tersebut akan bisa diakses untuk kebutuhan aplikasi kita.

    Membuat Database Melalui Script Selain menggunakan SSMS, database juga bisa dibuat menggunakan script. Di bawah adalah cara untuk membuat database menggunakan script :

    CREATE DATABASE BuletindoDB

    BuletindoDB merupakan nama database yang kita definisikan. Script di atas adalah cara untuk membuat default database pada SQL Server. Hasilnya akan sama dengan database yang sudah kita buat sebelumnya dengan menggunakan SSMS. Hasil data file yang terbentuk akan tersimpan secara default, yaitu di C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data.

    Untuk membuat database secara advance (kita mendefinisikan sendiri kebutuhan kita), maka script yang kita gunakan adalah sebagai berikut :
    CREATE DATABASE BuletindoDB
    ON PRIMARY

    (
    NAME = N'FG_Primary',
    FILENAME = 'c:\Files\FG_Primary.mdf',
    SIZE = 2MB,
    MAXSIZE = UNLIMITED,
    FILEGROWTH = 100MB
    )
    LOG ON
    (
    NAME = N'FG_Log',
    FILENAME = 'c:\Files\Buletindo_Log.mdf' ,
    SIZE = 2MB,
    MAXSIZE = UNLIMITED,
    FILEGROWTH = 100MB
    )
    Pada script di atas, kita mendefinisikan beberapa property sesuai dengan kebutuhan kita sendiri. Jika sebelumnya propertyproperty tersebut diisi secara default oleh SQL Server, maka melalui script kita bisa mendefinisikannya sesuai kebutuhan. Hal ini sama jika kita mengubah data secara default saat membuat database menggunakan SSMS, namun terasa lebih mudah. Property tersebut adalah :
    • NAME
    Nama logikal dari data file tersebut.
    • FILENAME
    Nama fisik yang tersimpan di dalam disk pada server.
    • SIZE
    Nilai besarnya data file pada saat database dibuat.
    • MAXSIZE
    Nilai maximum dari data file yang didefinisikan tersebut.
    • FILEGROWTH
    Nilai dari data file tersebut yang akan ditambahkan saat data file yang didefinisikan tersebut telah terisi penuh.

    Membuat Secondary File dan Data File Secondary file bisa dibuat untuk menampung data-data transaksional lainnya. Filegroup primary biasanya tidak menampung data-data transaksi dari database tersebut, melainkan akan menjadi starting point dari suatu database. Filegroup secondary bisa dibuat lebih dari satu, hal ini berbeda dengan Filegroup primary dan Filegroup log.

    Berikut ini adalah script untuk membuat secondary file :

    CREATE DATABASE BuletindoDB
    ON PRIMARY
    (
    NAME = N'FG_Primary',
    FILENAME = 'c:\Files\FG_Primary.mdf' ,
    SIZE = 2MB,
    MAXSIZE = UNLIMITED,
    FILEGROWTH = 100MB
    ),
    FILEGROUP FG_Secondary1
    (
    NAME = N'FG_Secondary1',
    FILENAME = 'c:\Files\FG_Secondary1.ndf' ,
    SIZE = 2MB,
    MAXSIZE = UNLIMITED,
    FILEGROWTH = 100MB
    ),
    FILEGROUP FG_Secondary2
    (
    NAME = N'FG_Secondary2',
    FILENAME = 'c:\Files\FG_Secondary2.ndf' ,
    SIZE = 2MB,
    MAXSIZE = UNLIMITED,
    FILEGROWTH = 100MB
    )
    LOG ON
    (
    NAME = N'FG_Log',
    FILENAME = 'c:\Files\Buletindo_Log.mdf' ,
    SIZE = 2MB,
    MAXSIZE = UNLIMITED,
    FILEGROWTH = 100MB
    )

    Filegroup FG_Secondary1 dan FG_Secondary2 merupakan filegroup secondary, dimana datanya berupa ndf. Filegroup tersebut didefinisikan dengan property yang sama seperti filegroup primary dan log.

    Kita juga bisa mendefinisikan nilai dari property tersebut berbeda dengan filegroup primary dan log, tidak harus sama.

    Setiap filegroup (mdf, ldf, dan ndf) bisa memiliki lebih dari satu data file. Secara fisik, data file dengan extension mdf dan ldf hanya satu. Jika kita menambahkan data file pada filegroup primary, maka yang lainnya berupa ndf (secondary data file).

    Di bawah ini adalah script untuk membuat database dengan lebih dari satu data file:

    CREATE DATABASE BuletindoDB
    ON PRIMARY
    (
    NAME = N'FG_Primary',
    FILENAME = 'c:\Files\FG_Primary.mdf' ,
    SIZE = 2MB,
    MAXSIZE = UNLIMITED,
    FILEGROWTH = 100MB
    ),
    FILEGROUP FG_Secondary1
    (
    NAME = N'FG_Secondary11',
    FILENAME = 'c:\Files\FG_Secondary11.ndf' ,
    SIZE = 2MB,
    MAXSIZE = UNLIMITED,
    FILEGROWTH = 100MB
    ),
    (
    NAME = N'FG_Secondary12',
    FILENAME = 'c:\Files\FG_Secondary12.ndf' ,
    SIZE = 2MB,
    MAXSIZE = UNLIMITED,
    FILEGROWTH = 100MB
    ),
    FILEGROUP FG_Secondary2
    (
    NAME = N'FG_Secondary21',
    FILENAME = 'c:\Files\FG_Secondary21.ndf' ,
    SIZE = 2MB,
    MAXSIZE = UNLIMITED,
    FILEGROWTH = 100MB
    ),
    (
    NAME = N'FG_Secondary22',
    FILENAME = 'c:\Files\FG_Secondary22.ndf' ,
    SIZE = 2MB,
    MAXSIZE = UNLIMITED,
    FILEGROWTH = 100MB
    )
    LOG ON
    (
    NAME = N'FG_Log',
    FILENAME = 'c:\Files\Buletindo_Log.mdf' ,
    SIZE = 2MB,
    MAXSIZE = UNLIMITED,
    FILEGROWTH = 100MB
    )

    Dengan memiliki lebih dari satu data file, maka kita bisa menempatkan data file tersebut pada disk yang berbeda. Hal ini bisa meningkatkan performa disk I/O pada server tersebut karena bisa ditempatkan di beberapa disk yang berbeda, sehingga bottleneck pada I/O server tidak terjadi.

    Dengan dibuatnya database pada SQL Server dengan terstruktur dan arsitektur yang tepat, maka performa bisa kita tingkatkan. Selain me-reduce bottleneck pada I/O dengan menempatkan pada beberapa disk berbeda, arsitektur ini juga bisa me-reduce loading data yang akan diambil karena data yang di-load hanya satu bagian kecil (satu data file), bukan satu file mdf yang memiliki semua data pada database tersebut.

    Best Practice :
    Saat mendefinisikan filegroup, sebaiknya tempatkan filegroup primary dan filegroup log secara terpisah agar lebih optimal dalam I/O dan bisa menjalankan proses secara
    paralel.

    Sebaiknya Filegrowth didefinisikan dengan menggunakan MB (Megabyte) dan bukan percentage. Karena jika kita menggunakan percentage, semakin besar ukuran database semakin besar pula growth pada filegroup tersebut.

    Membuat Tabel pada Database SQL Server 2008

    Tabel merupakan suatu tempat untuk menyimpan data pada database SQL Server secara logikal. Secara fisik, data pada database SQL Server disimpan pada filegroup yang didefinisikan pada awal pembuatan database. Selanjutnya, setiap tabel yang dibuat didefinisikan pada filegroup mana akan disimpan. SQL Server 2008 mempunyai beberapa fitur baru dalam membuat tabel, seperti data compression dan sparse column. Untuk membuat tabel pada SQL Server 2008, kita bisa menggunakan SSMS (SQL Server Management Studio) dan script.


    Mengenal Data Type pada SQL Server 2008 Saat membuat tabel pada SQL Server 2008, kita akan selalu mendefinisikan suatu column yang kita definisikan pada tabel dengan data type. Data type ini akan menentukan apakah column tersebut bersifat string atau numeric. Contoh data type di antaranya adalah :

    INT : Data type ini digunakan untuk column yang menyimpan nilai numeric. Contohnya adalah 1,-1,2,3,-3 dst.
    DATETIME/DATE (khusus 2008) : Data type ini digunakan untuk column yang manampung nilai tanggal. Pada DATETIME akan menyimpan data berupa tanggal dan waktu,sedangkan untuk DATE hanya menyimpan tanggal saja.
    VARCHAR : Data type ini digunakan untuk column yang menyimpan nilai yang berupa karakter.
    CHAR : Data type ini juga digunakan untuk column yang menyimpan nilai karakter. Bedanya dengan VARCHAR adalah dengan CHAR akan tersimpan nilai yang fixed length, sedangkan VARCHAR akan lebih variatif.
    DECIMAL : Data type ini digunakan untuk column yang menyimpan nilai numeric dengan angka di belakang koma.

    Masing-masing data type tersebut memiliki karakteristik satu sama lainnya. kita sebaiknya menggunakan sesuai dengan data yang akan disimpan pada column tersebut.
    Yang menarik adalah dengan adanya data type baru, yaitu DATE. Dengan menggunakan data type DATE, maka SQL Server 2008 hanya akan menyimpan nilai yang berupa tanggal saja (dd/mm/yy). Ini akan membuat space lebih kecil dibandingkan menyimpan data dengan data type DATETIME, dimana menyimpan tanggal dan waktu.


    Membuat Tabel Menggunakan SSMS Pada SQL Server 2008, kita bisa menggunakan SSMS untuk membuat tabel. Berikut langkah-langkah membuat tabel menggunakan SSMS :
    1. Klik kanan ServerName > Databases > DatabaseName >Tables > New Table….
    2. Pada workspace bagian kanan, masukkan column-column yang akan didefinisikan. Di setiap column tersebut pilih data type yang sesuai dengan kebutuhan.
    3. Tentukan primary key dengan memfokuskan pada column tertentu dan pilih tombol primary key pada toolbox.
    4. Pada toolbox, klik Save dan tuliskan nama tabel.<
    5. Setelah tabel disimpan, maka pada Object Explorer akan terlihat tabel yang kita definisikan.


    Contoh di atas adalah pembuatan tabel PELANGGAN dimana tabel tersebut telah dibuat dan bisa dilihat Object Explorer SSMS. Secara defaultnya, kita membuat tabel dengan 5 langkah di atas menggunakan SSMS.

    Membuat Tabel Menggunakan Script

    Selain menggunakan SSMS, biasanya database developer lebih senang membuat tabel pada database menggunakan script, karena lebih mudah dan flexibel.

    Berikut contoh pembuatan tabel pelanggan menggunakan script :

    CREATE TABLE PELANGGAN
    (
    kd_plg VARCHAR(5) NOT NULL
    PRIMARY KEY,
    nm_plg VARCHAR(25) NULL,
    alamat VARCHAR(25) NULL,
    tgl_join DATE NULL
    )
    Jika kita tidak mendefinisikan filegroup saat membuat tabel, maka secara default ditempatkan pada primary filegroup. Untuk mendefinisikan filegroup yang akan menyimpan data pada suatu tabel, kita harus menambahkan suatu script saat membuat tabel.

    Berikut script untuk membuat tabel dengan mendefinisikan filegroup :

    CREATE TABLE BARANG
    (
    kd_brg VARCHAR(5) NOT NULL
    PRIMARY KEY,
    nm_brg VARCHAR(25) NULL,
    hrg_beli DECIMAL(29,2)
    NULL,
    hrg_jual DECIMAL(29,2)
    NULL,
    stok INT NULL
    ) ON [FG_SECONDARY1]

    FG_SECONDARY1 merupakan salah satu filegroup yang terdapat pada database dimana tabel tersebut dibuat. Dengan mendefinisikannya pada filegroup tersebut, maka data akan disimpan pada filegroup tersebut.

    Mendefinisikan Check Contraint

    Constraint merupakan suatu rule yang diterapkan pada suatu column di dalam tabel untuk memvalidasi data-data yang akan masuk ke dalam tabel tersebut. Contoh constraint yang sudah digunakan sebelumnya adalah NULL dan NOT NULL. Dengan didefinisikan suatu column dengan NOT NULL, maka data tidak boleh kosong (NULL).

    Berikut script untuk membuat tabel dengan menggunakan check constraint :
    CREATE TABLE BARANG

    (
    kd_brg VARCHAR(5) NOT NULL
    PRIMARY KEY,
    nm_brg VARCHAR(25) NULL,
    hrg_beli DECIMAL(29,2)
    NULL,
    hrg_jual DECIMAL(29,2)
    NULL,
    stok INT NULL,
    CONSTRAINT C_KdBrg CHECK
    (kd_brg LIKE
    '[B][0-9][0-9][0-9][0-9]')
    ) ON [FG_SECONDARY1]

    Dengan adanya constraint tersebut, maka data yang masuk ke column tersebut akan divalidasi terlebih dahulu. Ini akan mencegah masuknya data yang kurang diinginkan. Biasanya constraint untuk column-column yang bersifat fix.

    Mendefinisikan Foreign Key

    Foreign key merupakan suatu key yang menghubungkan antar satu tabel ke tabel lainnya. Di dalam suatu tabel boleh memiliki lebih dari satu foreign key. Foreign key juga merupakan salah satu constraint yang bisa digunakan untuk memvalidasi data yang masuk ke dalam suatu tabel.

    Berikut script untuk mendefinisikan foreign key pada saat membuat tabel :

    CREATE TABLE PENJUALAN
    (
    penj_id INT NOT NULL
    IDENTITY PRIMARY KEY,
    tgl_trx DATETIME NULL,
    kd_plg VARCHAR(5) NOT NULL
    FOREIGN KEY REFERENCES
    PELANGGAN (kd_plg),
    jml_penj DECIMAL(29,2)
    NULL,
    mtd_pemb VARCHAR(5) NULL
    ) ON [FG_SECONDARY1]

    Column yang memakai foreign key adalah column kd_plg. Column tersebut mempunyai relasi (hubungan) dengan tabel PELANGGAN yang dihubungkan dengan column kd_plg. Dengan menggunakan foreign key tersebut, maka data integrity pada masing-masing tabel tersebut lebih terjamin.

    Mendefinisikan Computed Column

    Computed column adalah suatu mekanisme yang digunakan untuk mendefinisikan suatu column menggunakan expression (+,-,*,/). Dengan ini maka akan memudahkan untuk bussines logic, karena tidak perlu melakukan perhitungan pada aplikasi karena sudah didefinisikan pada tabel tersebut.

    Berikut script untuk membuat computed column :

    CREATE TABLE DETAIL_PENJUALAN
    (
    det _id INT NOT NULL
    IDENTITY PRIMARY KEY,
    penj_id INT NOT NULL
    FOREIGN KEY REFERENCES
    PENJUALAN (penj_id),
    kd_brg VARCHAR(5) NOT NULL
    FOREIGN KEY REFERENCES
    BARANG (kd_brg),
    hrg_jual DECIMAL(29,2)
    NULL,
    jumlah INT NULL,
    total_harga
    AS hrg_jual * jumlah
    ) ON [FG_SECONDARY1]

    Column total_harga adalah contoh dari penggunaan computed column tersebut. Pada column tersebut digunakan hrg_jual * jumlah. Hasil dari kedua nilai tersebut akan disimpan pada column total_harga.

    Data Compression dan Sparse Column

    Data Compression dan Sparse Column merupakan fitur baru pada SQL Server 2008. Data Compression adalah suatu metode penyimpanan dimana data yang disimpan pada suatu tabel akan di-compress sehingga lebih kecil datanya. Sedangkan Sparse Column adalah suatu metode penyimpanan data dimana data yang bersifat NULL akan lebih kecil. Jika tidak menggunakan metode ini, nilai yang berisikan data NULL value akan disimpan sesuai tipe data yang didefinisikan.
    Contoh membuat tabel menggunakan Data Compression :

    CREATE TABLE PELANGGAN
    (
    kd_plg VARCHAR(5) NOT NULL
    PRIMARY KEY,
    nm_plg VARCHAR(25) NULL,
    alamat VARCHAR(25) NULL,
    tgl_join DATE NULL
    ) WITH (DATA_COMPRESSION = PAGE)

    Contoh membuat tabel menggunakan Sparse Column :

    CREATE TABLE PELANGGAN

    (
    kd_plg VARCHAR(5) NOT NULL
    PRIMARY KEY,
    nm_plg VARCHAR(25) NULL,
    alamat VARCHAR(25) NULL,
    tgl_join DATE NULL,
    kontak VARCHAR(25) SPARSE
    NULL
    )

    Kedua fitur baru tersebut sangat memungkinkan pada SQL Server 2008 untuk menyimpan data lebih kecil dibandingkan sebelumnya. Tetapi yang harus diingat adalah saat pengambilan data, akan sedikit mempengaruhi performa dari database itu sendiri. Untuk itu sebaiknya digunakan sesuai dengan kebutuhan.

    Tabel




    0 komentar:

    Posting Komentar

    Teman

    visitors

    free counters

    Labels