Anda di halaman 1dari 76

DATABASE PENGIRIMAN OBAT

DENGAN SQL SERVER 2008

Disusun Oleh :

Nama : Ferra Fernanda


Kelas : 2/TIC/M
NPM : 43A87006150593

SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER


BANI SALEH BEKASI

Jl. Mayor Hasibuan No.68 Bekasi 17113


Telp (021) 8800992, Fax (021) 88348056
Website : www.stmik.banisaleh.ac.id
KATA PENGANTAR

Puji dan syukur saya panjatkan kehadirat ALLAH SWT karena atas berkat limpahan rahmat,
kesehatan dan kekuatan-Nya lah sehingga Makalah “Database Pengiriman Obat” dapat saya
selesaikan.
Makalah yang telah saya tulis ini dibuat dalam rangka memenuhi tugas harian dan juga
sebagai bahan pembelajaran bagi saya. Saya berharap makalah ini dapat berguna sebagai
pembelajaran bagi saya maupun bagi pembaca lainnya, sebagai salah satu manfaat dari di buatnya
makalah “Database Pengiriman Obat” ini.
Saya menyadari bahwa penyusunan Makalah ini masih jauh dari kesempurnaan. Untuk itu
kritik dan saran yang membangun dari pembaca sangat dibutuhkan untuk penyempurnaan tugas saya
yang selanjutnya.

Bekasi, 2 Juni 2016

Ferra Fernanda

i
DAFTAR ISI
KATA PENGANTAR ............................................................................................................................. i
DAFTAR ISI ........................................................................................................................................... ii
DAFTAR GAMBAR ............................................................................................................................. iv
DAFTAR TABEL .................................................................................................................................. vi
BAB I ...................................................................................................................................................... 1
KONSEP TEORI .................................................................................................................................... 1
1.1 Pengertian Basis Data ................................................................................................................... 1
1.2 Sistem Basis Data ........................................................................................................................ 2
1.3 Sistem Managemen Basis Data ..................................................................................................... 3
1.4 Operasi Dasar ................................................................................................................................ 3
1.5 Kegunaan Database ....................................................................................................................... 4
1.5.1 Redundansi dan inkonsistensi data ........................................................................................ 5
1.5.2 Kesulitan dalam pengaksesan data ......................................................................................... 5
1.5.3 Isolasi data untuk standarisasi ................................................................................................ 6
1.5.4 Multiple User (Banyak Pemakai) ........................................................................................... 6
1.5.5 Masalah keamanan (security)................................................................................................. 6
1.5.6 Masalah integritas (kesatuan)................................................................................................. 6
1.5.7 Masalah data independence (kebebasan data)........................................................................ 6
1.6 Bahasa Basis Data ......................................................................................................................... 7
1.6.1 Data Definition Language (DDL) .......................................................................................... 7
1.6.2 Data Manipulation Language ................................................................................................. 8
1.7 Basis Data Relasional ................................................................................................................... 8
1.8 Normalisasi Data ........................................................................................................................... 9
1.8.1 Atribut Table .......................................................................................................................... 9
1.8.2 Tahap Normalisasi ............................................................................................................... 11
1.9 SQL Server.................................................................................................................................. 13
1.9.1 Penulisan Komentar ............................................................................................................. 13
1.9.2 Cara Menyimpan dan Membuka file .SQL .......................................................................... 14
1.9.3 Alur Membangun Database Dalam Ms. SQL Server ........................................................... 14
1.9.4 Cara Mengeksekusi .............................................................................................................. 15
1.9.5 Tipe Data Pada Microsoft SQL Server ................................................................................ 15
BAB II................................................................................................................................................... 20
ANALISIS DAN PERANCANGAN.................................................................................................... 20
2.1 Analisis ....................................................................................................................................... 20
2.2 Normalisasi 1 (1NF) ................................................................................................................... 20
2.3 Normalisasi 2 (2NF) ................................................................................................................... 21
2.4 Normalisasi 3 (3NF) ................................................................................................................... 21

ii
2.5 ERD (Entity Relationship Diagram) Pengiriman Obat ............................................................... 22
2.6 Struktur Tabel ............................................................................................................................. 22
BAB III ................................................................................................................................................. 25
IMPLEMENTASI SQL SERVER ........................................................................................................ 25
3.1 Implementasi Basis Data dan Tabel ............................................................................................ 25
3.1.1 Membuat Database Pengiriman Obat .................................................................................. 25
3.1.2 Membuat Tabel Obat (langsung primary key) ..................................................................... 26
3.1.3 Membuat Tabel Merk (Primary Key dengan Alter) ............................................................. 27
3.1.4 Membuat Tabel Jenis (Primary Key dengan Constraint) ..................................................... 28
3.1.5 Membuat Tabel Customer .................................................................................................... 29
3.1.6 Membuat Tabel Salesman .................................................................................................... 30
3.1.7 Membuat Tabel Pengiriman ................................................................................................. 31
3.1.8 Membuat tabel detail pengiriman ........................................................................................ 32
3.2 Isi Data Tabel .............................................................................................................................. 33
3.2.1 Insert data pada tabel obat .................................................................................................... 33
3.2.2 Insert data pada tabel merk .................................................................................................. 34
3.2.3 Input data pada tabel jenis .................................................................................................... 35
3.2.4 Input data pada tabel customer............................................................................................. 36
3.2.5 Input data pada tabel salesman............................................................................................. 37
3.2.6 Input data pada tabel pengiriman ......................................................................................... 38
3.2.7 Input data pada tabel pengiriman ......................................................................................... 39
3.3 Relasi dan Diagram ..................................................................................................................... 40
3.3.1 Relasi tabel merk ke tabel obat ............................................................................................ 40
3.3.2 Relasi tabel jenis ke tabel obat ............................................................................................. 40
3.3.3 Relasi tabel obat ke tabel detail_pengiriman ....................................................................... 41
3.3.4 Relasi tabel salesman ke tabel pengiriman........................................................................... 41
3.3.5 Relasi tabel customer ke tabel pengiriman........................................................................... 42
3.3.6 Relasi tabel pengiriman ke tabel detail_pengiriman ............................................................ 42
3.3.7 Diagram database order_obat............................................................................................... 43
3.4 Query data ................................................................................................................................... 43
3.4.1 QUERY 1 TABEL (15 QUERY)......................................................................................... 43
3.4.2 QUERY 2 TABEL (10 QUERY)......................................................................................... 51
3.4.3 QUERY 3 TABEL (5 QUERY)........................................................................................... 56
BAB IV ................................................................................................................................................. 59
KESIMPULAN DAN SARAN ............................................................................................................. 59
4.1 Kesimpulan ................................................................................................................................. 59
4.2. Saran .......................................................................................................................................... 59
Daftar Pustaka ....................................................................................................................................... 60
LAMPIRAN .......................................................................................................................................... 61

iii
DAFTAR GAMBAR
Gambar 1.1. Sistem Basis Data ............................................................................................................... 3
Gambar 1.2. Create database dengan MS-SQL Server 2000 .................................................................. 7
Gambar 1.3. Create table mahasiswa dengan MS-SQL Server 2000...................................................... 8
Gambar 1.4. Relasi one to many ........................................................................................................... 11
Gambar 1.5. Langkah – langkah Normalisasi ...................................................................................... 13
Gambar 2.6. ERD Database Pengiriman Obat ...................................................................................... 22
Gambar 3.7. Membuat database Order_Obat........................................................................................ 25
Gambar 3.8. Menggunakan database order obat ................................................................................... 25
Gambar 3.9. Membuat tabel obat .......................................................................................................... 26
Gambar 3.10. Menampilkan Struktur Tabel Obat................................................................................. 26
Gambar 3.11. Membuat Tabel Merk ..................................................................................................... 27
Gambar 3.12. Menampilkan Struktur Tabel Merk ................................................................................ 27
Gambar 3.13. Membuat Tabel Jenis ..................................................................................................... 28
Gambar 3.14. Menampilkan Struktur Tabel Jenis ................................................................................ 28
Gambar 3.15. Membuat Tabel Customer .............................................................................................. 29
Gambar 3.16. Menampilan Struktur Tabel Customer ........................................................................... 29
Gambar 3.17. Membuat Tabel Salesman .............................................................................................. 30
Gambar 3.18. Menampilkan Struktur Tabel Salesman ......................................................................... 30
Gambar 3.19. Membuat Tabel Pengiriman ........................................................................................... 31
Gambar 3.20. Menampilkan Struktur Tabel Pengiriman ...................................................................... 31
Gambar 3.21. Membuat tabel detail pengiriman................................................................................... 32
Gambar 3.22. Menampilkan struktur tabel detail pengiriman .............................................................. 32
Gambar 3.23. Input data pada tabel obat .............................................................................................. 33
Gambar 3.24. Menampilkan isi dari tabel obat ..................................................................................... 33
Gambar 3.25. Input data pada tabel merk ............................................................................................. 34
Gambar 3.26. Menampilkan isi dari tabel merk.................................................................................... 34
Gambar 3.27. Input data pada tabel jenis .............................................................................................. 35
Gambar 3.28. Menampilkan isi dari tabel jenis .................................................................................... 35
Gambar 3.29. Input data pada tabel customer ....................................................................................... 36
Gambar 3.30. Menampilkan isi dari tabel customer ............................................................................. 36
Gambar 3.31. Input data pada tabel salesman ....................................................................................... 37
Gambar 3.32. Menampilkan isi dari tabel salesman ............................................................................. 37
Gambar 3.33. Input data pada tabel pengiriman ................................................................................... 38
Gambar 3.34. Menampilkan isi dari tabel pengiriman .......................................................................... 38
Gambar 3.35. Input data pada tabel detail pengiriman ......................................................................... 39
Gambar 3.36. Menampilkan isi dari tabel detail pengiriman ................................................................ 39

iv
Gambar 3.37. Relasi tabel merk ke tabel obat ...................................................................................... 40
Gambar 3.38. Relasi tabel jenis ke tabel obat ....................................................................................... 40
Gambar 3.39. Relasi tabel obat ke tabel pengiriman ............................................................................ 41
Gambar 3.40. Relasi tabel salesman ke tabel pengiriman ..................................................................... 41
Gambar 3.41. Relasi tabel customer ke tabel pengiriman ..................................................................... 42
Gambar 3.42. Relasi tabel pengiriman ke tabel detail_pengiriman ...................................................... 42
Gambar 3.43. Diagram database order obat .......................................................................................... 43
Gambar 3.44. Query 1 Tabel (No. 1) .................................................................................................... 43
Gambar 3.45. Query 1 Tabel (No. 2) .................................................................................................... 44
Gambar 3.46. Query 1 Tabel (No. 3) .................................................................................................... 44
Gambar 3.47. Query 1 Tabel (No. 4) .................................................................................................... 45
Gambar 3.48. Query 1 Tabel (No. 5) .................................................................................................... 45
Gambar 3.49. Query 1 Tabel (No. 6) .................................................................................................... 46
Gambar 3.50. Query 1 Tabel (No. 7) .................................................................................................... 46
Gambar 3.51. Query 1 Tabel (No. 8) .................................................................................................... 47
Gambar 3.52. Query 1 Tabel (No. 9) .................................................................................................... 47
Gambar 3.53. Query 1 Tabel (No. 10) .................................................................................................. 48
Gambar 3.54. Query 1 Tabel (No. 11) .................................................................................................. 48
Gambar 3.55. Query 1 Tabel (No. 12) .................................................................................................. 49
Gambar 3.56. Query 1 Tabel (No. 13) .................................................................................................. 49
Gambar 3.57. Query 1 Tabel (No. 14) .................................................................................................. 50
Gambar 3.58. Query 1 Tabel (No. 15) .................................................................................................. 50
Gambar 3.59. Query 2 Tabel (No. 1) .................................................................................................... 51
Gambar 3.60. Query 2 Tabel (No. 2) .................................................................................................... 51
Gambar 3.61. Query 2 Tabel (No. 3) .................................................................................................... 52
Gambar 3.62. Query 2 Tabel (No. 4) .................................................................................................... 52
Gambar 3.63. Query 2 Tabel (No. 5) .................................................................................................... 53
Gambar 3.64. Query 2 Tabel (No. 6) .................................................................................................... 53
Gambar 3.65. Query 2 Tabel (No. 7) .................................................................................................... 54
Gambar 3.66. Query 2 Tabel (No. 8) .................................................................................................... 54
Gambar 3.67. Query 2 Tabel (No. 9) .................................................................................................... 55
Gambar 3.68. Query 2 Tabel (No. 10) .................................................................................................. 55
Gambar 3.69. Query 3 Tabel (No. 1) .................................................................................................... 56
Gambar 3.70. Query 3 Tabel (No. 2) .................................................................................................... 56
Gambar 3.71. Query 3 Tabel (No. 3) .................................................................................................... 57
Gambar 3.72. Query 3 Tabel (No. 4) .................................................................................................... 57
Gambar 3.73. Query 3 Tabel (No. 5) .................................................................................................... 58

v
DAFTAR TABEL
Tabel 2.1. Tabel Normalisasi 1 (1NF) Pengiriman Obat ...................................................................... 20
Tabel 2.2. Tabel Normalisasi 2 (2NF) Pengiriman Obat ...................................................................... 21
Tabel 2.3. Tabel Normalisasi 3 (3NF) Pengiriman Obat ...................................................................... 21
Tabel 2.4. Tabel Obat............................................................................................................................ 22
Tabel 2.5. Tabel Merk ........................................................................................................................... 23
Tabel 2.6. Tabel Jenis ........................................................................................................................... 23
Tabel 2.7. Tabel Customer .................................................................................................................... 23
Tabel 2.8. Tabel Salesman .................................................................................................................... 24
Tabel 2.9. Tabel Pengiriman ................................................................................................................. 24
Tabel 2.10. Tabel Pengiriman ............................................................................................................... 24

vi
BAB I

KONSEP TEORI

1.1 Pengertian Basis Data

Basis data atau database, berasal dari kata basis dan data, adapun pengertian dari
kedua pengertian tersebut adalah sebagai berikut :
Basis : Dapat diartikan sebagai markas atau gudang, tempat bersarang atau
berkumpul.
Data : Representasi fakta dunia nyata yang mewakili suatu objek seperti manusia
(pegawai, siswa, pembeli, pelanggan), barang, hewan peristiwa, konsep,
keadaan, dan sebagainya yang direkam dalam bentuk angka, huruf, simbol,
teks, gambar, bunyi, atau kombinasinya.
Dari kedua pengertian tersebut, maka dapat ditarik kesimpulan bahwa pengertian dari
Basis Data adalah Kumpulan file / table yang saling berelasi (berhubungan) yang disimpan
dalam media penyimpanan eletronik. Dapat dikatakan pengertian lain dari basis data adalah
koleksi terpadu dari data yang saling berkaitan yang dirancang untuk memenuhi kebutuhan
informasi suatu enterprise (dunia usaha). Dari pengertian tersebut dapat diambil kesimpulan
pada masing – masing table / file didalam database berfungsi untuk menampung /
menyimpan data – data, dimana masing – masing data yang ada pada table / file tersebut
saling berhubungan dengan satu sama lainnya. Tujuan dari dibentuknya basis data pada suatu
perusahaan pada dasarnya adalah kemudahan dan kecepatan dalam pengambilan kembali
data.
Menurut “Siberschatz, dkk.; (2002) mendefinisikan basisdata sebagai kumpulan data
berisi informasi yang sesuai untuk sebuah perusahaan. System manajemen basisdata (DBMS)
adalah kumpulan data yang saling berhubungan dan kumpulan program untuk mengakses
data. Tujuan utama system manajemen basisdata adalah menyediakan cara menyimpan dan
mengambil informasi basisdata secara mudah dan efisien”.
Menurut “Ramakrishnan dan Gehrke (2003) basisdata sebagai kumpulan data,
umumnya mendeskripsikan aktivitas satu organisasi atau lebih yang berhubungan”.
Menurut “McLeod, dkk., (2001) basisdata adalah kumpulan seluruh sumber daya
berbasis computer milik organisasi. System manajemen basisdata adalah aplikasi perangkat
lunak yang menyimpan struktur basisdata, hubungan antardata dalam basisdata, serta sebagai
formulir dan laporan yang berkaitan dengan basisdata. Basis data yang dikendalikan oleh

1
system manajemen basisdata adalah satu set catatan data yang berhubungan dan saling
menjelaskan”.

1.2 Sistem Basis Data

Sistem basis data dapat diartikan sebagai kumpulan file / table yang saling
berhubungan (dalam sebuah basis data di sebuah sistem komputer), dan sekumpulan program
(DBMS / Database Management System) yang memungkinkan beberapa user (pemakai), dan
/ atau program lain untuk mengakses dan memanipulasi file (table) tersebut. Komponen –
komponen utama dari sebuah sistem basis data adalah sebagai berikut :
1. Perangkat keras (hardware)
2. Sistem operasi (operating system)
3. Basis data (database)
4. Sistem (aplikasi/perangkat lunak) pengelola basis data (DBMS)
5. Pemakai (user)
6. Aplikasi (perangkat lunak) lain (bersifat optional)

Pada gambar 1.3. sistem basis data dapat dilihat bahwa basis data pada intinya adalah
disimpan pada media penyimpanan elektronik (hardisk), sedangkan database adalah terdiri
dari beberapa file / table yang saling berelasi (berhubungan). Basis data tersebut dikelola oleh
DBMS (database management system) dan database tersebut dapat dimanfaatkan oleh
beberapa user (pemakai) yang dapat melakukan manipulasi pada database. Tidak semua user
dapat melakukan manipulasi data didalam database, hal ini diatur sesuai dengan hak
aksesnya dari masing – masing user tersebut.

2
Basis Data
P
C

Basis Basis
Data X: Data Y:
Table Table J P
A Table C
Table K
B Table L
Table Table
P
Database management
C
system (DBMS)

Gambar 1.1. Sistem Basis Data

1.3 Sistem Managemen Basis Data

DBMS adalah koleksi terpadu dari program-program (sistem perangkat lunak) yang
digunakan untuk mendefinisikan, menciptakan, mengakses dan merawat database (basis
data). Tujuannya adalah menyediakan lingkungan yang mudah dan aman untuk penggunaan
dan perawatan database. Contoh daripada DBMS adalah Ms-Access, MS Sql Server dan
Oracle.

1.4 Operasi Dasar

Didalam sebuah disk (hard disk), basis data dapat diciptakan dan dapat pula
ditiadakan. Dalam sebuah disk kita dapat menempatkan beberapa (lebih dari satu) basis data
(Misalnya basis data nilaiMahasiswa, kepegawaian, keuangan, penjualan, pepustakaan dan
lainnya). Sementara dalam sebuah basis data kita dapat menempatkan satu atau lebih file /
table. Misalkan dalam basis data penjualan terdiri dari table barang, faktur, pelanggan dan
transaksi barang.

3
Operasi-operasi dasar yang dapat kita lakukan berkenaan dengan basis data adalah
sebagai berikut:
1). Pembuatan basis data baru (create database), identik dengan pembuatan lemari
arsip yang baru.
2). Penghapusan basis data (drop database), identik dengan perusakan lemari
arsip, sekaligus beserta isinya jika ada.
3). Pembuatan table baru ke suatu basis data (create table), yang identik dengan
penambahan map arsip baru ke sebuah lemari arsip yang telah ada.
4). Penghapusan table dari suatu basis data (drop table), identik dengan perusakan
map arsip lama yang ada di sebuah lemari arsip.
5). Penambahan / pengisian data baru di sebuah basis data (insert), identik dengan
penambahan lembaran arsip ke sebuah map arsip.
6). Pengambilan data dari sebuah table (retrieve / search), identik dengan
pencarian lembaran arsip dalam sebuah map arsip.
7). Pengubahan data dalam sebuah table (update), identik dengan perbaikan isi
lembaran arsip yang ada di sebuah map arsip.
8). Penghapusan data dari sebuah table (delete), identik dengan penghapusan
sebuah lembaran arsip yang ada di sebuah map arsip.
Operasi pembuatan basis data dan tabel merupakan operasi awal yang hanya
dilakukan sekali dan berlaku seterusnya. Sedangkan untuk operasi pengisian, perubahan,
penghapusan dan pencarian data merupakan operasi rutin yang berlaku berulang-ulang.

1.5 Kegunaan Database

Penyusunan satu basis data digunakan untuk mengatasi masalah – masalah pada
penyusunan data, antara lain:
1). Redundansi dan inkonsistensi data
2). Kesulitan pengaksesan data
3). Isolasi data untuk standarisasi
4). Multiple user (banyak pemakai)
5. Masalah keamanan (security)
6. Masalah integrasi (kesatuan)
7. Masalah data independence (kebebasan data)

4
Manfaat dalam bidang psikologi
Database biasa dimiliki pada setiap perusahaan atau lembaga yang berisikan tentang
No Induk beserta Nama individu yang menjadi anggota ataupun pernah menjadi anggota, itu
untuk mempermudah kita dalam mengetahui identitas, di bidang Human Recruitment pada
perusahaan biasa digunakan untuk mengetahui daftar karyawan yang akan diterima dan yang
bekerja tetap, mengetahui jumlah seluruh karyawan tersebut untuk di data dan dimasukkan
sebagai data Primary key serta menjadi suatu rahasia perusahaan, pada setiap nama diberi No
Induk agar dapat dibedakan secara khusus, mempermudah mencari identitas seseorang yang
bekerja maupun yang bekas pekerja dengan mensortir No Induknya atau Namanya, tanpa
harus mencari berkas-berkas secara manual yang dapat memakan banyak waktu, karena
biasanya di dalam suatu perusahaan besar yang memiliki banyak karyawan hal itu sangat
dapat membantu.

1.5.1 Redundansi dan inkonsistensi data


Jika table dan program aplikasi diciptakan oleh programmer yang berbeda dengan
waktu yang berselang cukup panjang, maka ada beberapa bagian data mengalami
penggandaan pada table yang berbeda pada suatu database.
Contoh:
Nama, alamat, dan telpon dari mahasiswa di sebuah Perguruan Tinggi tercatat pada
table Anggota (pada database Perpustakaan), KRS dan juga pada Keuangan. Apabila kita
berbicara sistem yang berbasis jaringan maka 1(satu) table mahasiswa bisa dimanfaatkan oleh
beberapa sub database yang menginginkannya.
Penyimpanan dibeberapa tempat untuk data yang sama ini disebut sebagai redundansi
dan mengakibatkan pemborosan ruang penyimpanan dan juga biaya untuk akses lebih tinggi.
Penyimpanan data yang sama berulang-ulang di beberapa tempat dalam database
dapat mengakibatkan juga inkonsistensi (tidak konsisten). Hal ini terjadi, bila suatu ketika
mahasiswa tersebut pindah alamat berubah, maka seluruh table yang memuat data tersebut
harus diubah / update. Bila salah satu saja yang diupdate, maka menjadi tidak konsisten.

1.5.2 Kesulitan dalam pengaksesan data


Pada suatu saat dibutuhkan untuk mencetak data siapa saja mahasiswa yang berada di
kota ‘Bekasi Timur’, padahal belum tersedia program yang telah ditulis untuk mengeluarkan
data tersebut. Maka kesulitan akan timbul, dan penyelesaian ke arah itu adalah DBMS yang

5
mampu mengambil data secara langsung dengan bahasa yang familiar dan mudah digunakan
(user frindly).

1.5.3 Isolasi data untuk standarisasi


Jika data tersebar dalam beberapa file / table dalam bentuk format yang tidak sama,
maka ini akan menyulitkan dalam menulis program aplikasi untuk mengambil dan
menyimpan data. Maka haruslah data dalam satu basis data dibuat satu format, sehingga
mudah dibuat program aplikasinya.

1.5.4 Multiple User (Banyak Pemakai)


Dalam rangka mempercepat semua daya guna sistem dan mendapat responsi waktu
yang cepat, beberapa sistem mengijinkan banyak pemakai untuk meng “update “ data secara
simultan. Salah satu alasan mengapa basis data dibangun karena nantinya data tersebut
digunakan oleh banyak orang dalam waktu yang sama atau berbeda, diakses oleh program
yang sama tapi berbeda orang dan waktu.
Semua itu memungkinkan terjadi, karena data yang diolah tidaklah tergantung dan
menyatu dalam program tapi ia terlepas dalam satu kelompok data.

1.5.5 Masalah keamanan (security)


Tidak semua pemakai sistem basis data diperbolehkan untuk mengakses semua data.
Misalkan data mengenai gaji seorang karyawa hanya boleh dibuka oleh bagian keuangan dan
personalia, tidak diperkenankan bagian gudang membaca dan mengubahnya.

1.5.6 Masalah integritas (kesatuan)


Basis data berisi file / table yang saling terkait, masalah utama adalah bagaimana
kaitan antar table itu terjadi. Meskipun kita mengetahui table A berkaitan dengan table B,
namun secara teknis ada field / atribut kunci yang mengaitkan / merelasikan table tersebut.

1.5.7 Masalah data independence (kebebasan data)


Paket bahasa yang diciptakan oleh DBMS, perubahan pada struktur file / table, setiap
kali kita hendak melihat data cukup dengan utility list, menambah data dengan Append
(misal untuk DBMS Clipper atau Foxpro), merubah struktur table dengan Design Table,
melakukan penelurusan data dengan query (misal untuk Access, Sql Server, MySql atau
Oracle). Ini berarti perintah-perintah dalam paket DBMS bebas terhadap basis data. Apapun
perubahan dalam basis data semua perintah akan mengalami kestabilan tanpa mengalami
perubahan.

6
1.6 Bahasa Basis Data
Bahasa basis data umumnya dapat ditempelkan (embbeded) ke bahasa pemrogarman
lain, misalkan ditempelkan kedalam bahasa Java,C/C++, Pascal, Basic, Fortran, Ada dan
lainnya. Bahasa tempat ditempelkannya instruksi bahasa basisdata disebut sebagai inang
(host language). Pada program bahasa inag yang ditempeli kode-kode bahasa basisdata mka
saat source program dikompilasi maka source program terlebih dahulu dilewatkan ke pre-
kompilator (pre-compiler) yang menterjemahkan instruksi bahasa basisdata menjadi instruksi
asli bahasa pemrograman inang.
Setelah itu, kode-kode yang telah dalam bahasa inang dikompilaasi menggunakan
kompilator bahasa inang sehingga menghasilkan kode biner yang mengaitkan (link) instruksi
– instruksi bahasa basisdata ke pustaka (library) yang berfungsi menghubung DBMS. Hasil –
hasil instruksi bahasa basisdata segera ditangkap program bahasa inang dan diolah sesuai
keperluan aplikasi.

1.6.1 Data Definition Language (DDL)


Struktur / skema basis data yang menggambarkan / mewakili desain basis data secara
keseluruhan dispesifikasikan dengan bahasa khusus yaitu DDL. Dengan bahasa ini kita dapat
membuat tabel (create table) baru, indeks, mengubah table, menentukan struktur
penyimpanan table, dan lainnya. Hasil dari kompilasi perintah DDL, adalah kumpulan table
yang disimpan dalam file khusus yang disebut kamus data (data dictionary).
Kamus data merupakan suatu metadata (superdata), yaitu data yang mendiskripsikan
data sesungguhnya. Contoh perintah DDL dengan Foxpro adalah create matakuliah, modify
report, modify structure, dan lainnya, sedangkan perintah DDL dengan MS-SQl Server 2000,
contohnya adalah create new database Penjadwalan_mengajar_dosen dan contoh lainnya
adalah new table dosen dengan struktur sebagai berikut:

Gambar 1.2. Create database dengan MS-SQL Server 2000

7
Gambar 1.3. Create table mahasiswa dengan MS-SQL Server 2000

1.6.2 Data Manipulation Language


Bentuk bahasa basis data untuk melakukan menipulasi dan pengambilan data pada
suatu basis data. Manipulasi data pada dabase dapat berupa :
1). Penyisipan / penambahan data pada file / table dalam suatu basis data.
2). Penghapusan data pada file / table dalam suatu basis data.
3). Pengubahan data pada file / table dalam suatu basis data.
4). Penelusuran data pada file / table dalam suatu basis data.
Pada level phisik kita harus mendefinisikan alghoritma yang memungkinkan
pengaksesan yang efisien terhadap data. Pada level yang lebih tinggi yang dipentingkan
bukan efisien akses, tapi juga efisiensi interaksi pemakai dengan sistem.
DML merupakan bahasa yang bertujuan memudahkan pemakai untuk mengakses data
sebagaimana direpresentasikan oleh model data. Ada 2 (dua) jenis DML adalah sebagai
berikut :
Prosedural, yang mensyaratkan pemakai menentukan, data apa yang diinginkan serta
bagaimana cara mendapatkannya.
Nonprosedural, yang membuat pemakai dapat menentukan data apa yang diinginkan
tanpa menyebutkan bagaimana cara mendapatkannya.

1.7 Basis Data Relasional

Pada model relasional, basis data akan “disebar” (dipilah-pilah) kedalam berbagai
tabel 2 dimensi. Setiap tabel terdiri atas lajur mendatar yang disebut dengan baris data (row /
record), dan lajur vertical yang biasa disebut dengan kolom (columm / field). Di setiap
pertemuan baris data dan kolom itulah item-item data (satuan data terkecil) ditempatkan.

8
Tujuan dari model data relasional adalah
• Untuk menekankan kemandirian data.
• Untuk mengatasi ketidak konsistenan dan duplikasi data dengan menggunakan
konsep normalisasiUntuk meningkatkan kemampuan akses data.
Karakteristik Database Relasional
• Struktur Tabular
• Satu Bahasa digunakan untuk semua pemakai
• Data dihubungkan melalui nilai data
Kelebihan Database Relasional
• Tabular View
• Seluruh hasil operasinya berupa table
• Tidak terdapat pointer-pointer
• Memiliki kemampuan operator yang baik
• Fleksibel
• Mudah digunakan

1.8 Normalisasi Data

Proses Normalisasi, merupakan proses pengelompokan data elemen menjadi table-


table yang menunjukkan entity dan relasinya. Pada proses normalisasi selalu diuji pada
beberapa kondisi, apakah ada kesulitan pada saat menambah / insert, menghapus / delete,
mengubah / update, dan membaca / retrieve pada suatu Database.
Bila ada kesulitan pada pengujian tersebut, maka relasi tersebut dipecahkan menjadi
beberapa table lagi, sehingga diperoleh database yang optimal.

1.8.1 Atribut Table


Normalisasi lebih difokuskan pada tinjauan komprehensif terhadap setiap kelompok
data (table) secara individual. Lebih jauh tinjauan tersebut dititikberatkan pada data di
masing – masing kolom pembentuk tabel. Kita menggunakan istilah baru, yaitu atribut yang
sebenarnya identik dengan pemakaian istilah kolom data atau field.

Superkey
Superkey adalah merupakan satu atau lebih field / atribut (kumpulan atribut) yang
dapat membedakan setiap baris data dalam sebuah table secara unik. Bisa terjadi, ada lebih
dari 1 kumpulan atribut yang bersifat seperti itu pada sebuah table.

9
Candidate-Key
Candidate_key adalah merupakan kumpulan field / atribut minimal yang dapat
membedakan setiap baris data dalam sebuah table secara unik.Sebuah Candidate-key tidak
boleh berisi atribut atau kumpulan atribut yang telah menjadi superkey yang lain. Jadi sebuah
Candidate-key pasti superkey, tapi belum tentu sebaliknya.
Pada table Dosen tersebut diatas, yang dapat menjadi Candidate-key adalah :
♦ (nid).
♦ (nama_d), jika kita bisa menjamin tidak ada nilai yang sama untuk atribut ini.
Pada sebuah table dimungkinkan ada lebih dari satu Candidate-key, seperti contoh diatas.
Salah satu dari Candidate–key ini (jika memang lebih dari satu) dapat dijadikan sebagai Key
Primer (Primary key).

Primary-Key
Primary_key adalah candidate-key yang dipilih untuk mengidentifikasi tupel secara
unik pada suatu relasi. Kunci utama dapat terbentuk dari satu atribut atau lebih.
Pemilihan Key Primer dari sejumlah Candidate-key pada suatu table didasari pada ketiga hal
berikut ini:
1. Key tersebut lebih sering (natural) untuk dijadikan acuan.
2. Key tersebut lebih ringkas.
3. Jaminan keunikan Key tersebut lebih baik.
Dengan pertimbangan tersebut, kedua Candidate-key pada table dosen, yaitu nid dan
nama_d, yang lebih cocok sebagai Key Primer adalah (nid). Hal ini dikarenakan bahwa
jaminan keunikan daripada nid (nomor induk dosen) akan terjamin karena karena setiap nid
pada suatu perguruan tinggi pastinya tidak akan sama nilainya, sedangkan kenapa tidak
memilih nama_d, karena nama_d kemungkinan ada yang sama nilainya.

Foreign-Key
Kunci tamu adalah satu atribut (satu set atribut) yang melengkapi satu relationship
(hubungan) yang menunjukkan ke induknya. Kunci tamu ditempatkan pada relasi anak dan
sama dengan kunci primer induk direlasikan.

10
Hubungan antara relasi induk dengan anak adalah satu lawan banyak (one to many
relationship).

Gambar 1.4. Relasi one to many

Kunci tamu dari table / relasi mengajar adalah : nid, kdmk dan kode_jur karena
dalam table ini membutuhkan data – data yang ada dalam table dosen, matakuliah dan
jurusan.
Kunci primer untuk table / relasi mengajar adalah nid, thn_akademik, smt,hari,
jam_kei, karena unik dan mewakili entity.
Atribut Deskriptif
Atribut diskriptif adalah atribut – atribut yang tidak menjadi atau merupakan anggota
dari Key Primer pada suatu table didalam database. Pada table dosen diatas, yang menjadi
atribut diskriptif adalah nama_d, tempat_lhr, tgl_lahir, jkelamin, alamat, kota, kodepos,
gajipokok.

1.8.2 Tahap Normalisasi


1). Bentuk normal pertama (1NF)
1. Pada setiap data dibentuk dalam sebuah flat file, data dibentuk dalam satu
demi satu record, nilai dari field itu berupa “atomic value”.
2. tidak ada set atribute yang berulang(duplikat).
3. ditentukannya primary key untuk tabel / relasi.
4. tiap atribut hanya memiliki satu pengertian.
2). Benatuk normal kedua (2NF)
1. Bentuk data ini telah dapat memenuhi kriteria bentuk normal yang pertama.

11
2. Atribute bukan Primary key (bukan kunci utama) haruslah memiliki
ketergantungan fully functional dependency (fungsional sepenuhnya) pada
primary key.
3). Bentuk normal ketiga (3NF)
1. Bentuk data ini telah dapat memenuhi kriteria bentuk normal yang kedua.
2. Atribute bukan primary key harus tidak memiliki ketergantungan pada
transitif, artinya suatu atribut bukan primary key itu tidak boleh memiliki
ketergantungan fungsional (functional dependency) pada atribut yang bukan
Primary key lain, seluruh atribut bukan primary key pada suatu relasi hanya
memiliki ketergantungan fungsional terhadap primary key yang di relasikan
saja.
4). Bentuk normal Boyce-Codd (BCNF)
1. Bila dan hanya bila telah berada dalam bentuk BCNF dan tidak ada
multivalued dependency nontrivial.
2. Multivalued dependency (MVD) dipakai dalam bentuk normal keempat (
4NF ).
3. Dependensi ini dipakai untuk menyatakan hubungan satu ke bantak (one to
many).
5). Bentuk normal keempat (4 NF)
6). Bentuk normal kelima (5NF)

Kriteria dalam proses normalisasi adalah kebergantungan fungsional, kebergantungan


banyak nilai dan kebergantungan join. Ketiga tipe kebergantungan tersebut digunakan untuk
menilai relasi – relasi yang dihasilkan dari konversi diagram ER menjadi kumpulan relasi –
relasi. Proses normalisasi membentuk relasi – relasi bentuk normal menggunakan
dekomposisi yang memecah relasi menjadi relasi – relasi berbentuk normal lebih tinggi.
Berikut ini adalah gambar untuk langkah – langkah melakukan normalisasi data, seperti
tampak berikut ini:

12
Tabel dengan atribut
bernilai jamak
Menghilangkan
atribut bernilai
Tabel bentuk
normal pertama
Menghilangkan
ketergantungan
Tabel bentuk
normal kedua
Menghilangkan
ketergantungan
Tabel bentuk
normal ketiga
Menghilangkan anomali
tersisa disebabkan
ketergantungan
Tabel bentuk
Normal boyce-codd
Menghilangkan
ketergantungan

Tabel bentuk
Normal keempat
Menghilangkan
anomali tersisa

Tabel bentuk
Normal kelima

Gambar 1.5. Langkah – langkah Normalisasi

1.9 SQL Server

Microsoft SQL Server merupakan salah satu perangkat lunak Relational Database
Management System (RDBMS), pada kesempatan kali ini penulis menggunakan Microsoft
SQL Server 2008.

1.9.1 Penulisan Komentar


ada dua cara atau dua bentuk dalam menulis komentar pada SQL server khusus Editor
Query Analyzer, yaitu:
1. Dua tanda mines (--)
digunakan untuk komentar yang hanya satu baris, contoh:
--SQL Server 2008

2. Garis miring diikuti dengan tanda bintang (/*) dan diakhiri dengan tanda bintang dan
garis miring (*/). digunakan untuk komentar dalam jumlah baris yang banyak, contoh:
/* Belajar SQL Server dengan
editor Query Analizer.
INI ADALAH KOMENTAR...!
*/

13
1.9.2 Cara Menyimpan dan Membuka file .SQL
1. cara menyimpan
- pilih file, save atau
- klik menu save pada tool bar, kemudian pilih folder atau direktori dimana anda
akan menyimpan file SQL tersebut
- tekan tombol SAVE
2. cara membuka
- pilih file, open atau
- klik menu open pada tool bar, kemudian pilih folder atau direktori
dimana anda menyimpan file SQL.
- tekan tombol OPEN

1.9.3 Alur Membangun Database Dalam Ms. SQL Server


(Melalui editor Query Analyzer)
1. Buat database
2. Aktifkan database yang telah dibuat
3. Buat tabel
Beberapa perubahan-perubahan dilakukan jika terjadi kesalahan (hanya terhadap
struktur field)
1. perubahan type data dan size
2. menghapus field
3. menambah field
4. menghapus tabel
5. menghapus database
Beberapa hal yang perlu Anda ingat:
1. primary key
2. foregin key
3. Relationship
4. Mengisi data pada tabel
5. Memanipulasi data (Query)
6. Membuat VIEW
7. membuat trigger
8. membuat stored procedure
9. melakukan aktifitas keamanan database

14
1.9.4 Cara Mengeksekusi
1. Blok perintah yang akan dieksekusi
2. Untuk melihat apakah perintah SQL yang kita ketik atau buat benar atau salah,
setelah
diblok Anda tekan:
a. Ctrl + F5
b. Tekan tombol Parse Query pada tool bar
Ada dua cara untuk mengeksekusi hasil
1. setelah diblok tekan tekan F5
2. setelah diblok tekan tombol Execute pada tool bar

1.9.5 Tipe Data Pada Microsoft SQL Server


Beberapa tipe data yang dikenal pada database Ms. SQL Server, yaitu:

- Bit
Tipe data bit hanya bisa menerima input angka 1 dan 0 sebagai nilai (atau bisa juga
null, yang berarti tidak ada nilai). Tipe data ini sangat membantu jika Anda ingin
menghasilkan output yes/no, true/false, dsb.

- Int
Tipe data ini mungkin sudah banyak dikenal oleh Anda. Tipe data ini dapat menerima
nilai mulai dari -231 (-2,147,483,648) hingga 231-1 (2,147,483,647). Tipe data ini
menghabiskan 4 bytes untuk menyimpan data pada harddisk.

- Gint
Tipe data ini mirip dengan int, hanya saja nilai yang diterima lebih besar daripada int.
Tipe data ini dapat menerima nilai mulai dari -263 (-9,223,372,036,854,775,808) hingga 263-
1 (-9,223,372,036,854,775,807). Tipe data ini menghabiskan 8 bytes untuk menyimpan data
pada harddisk.

- Smallint
Tipe data ini juga mirip dengan int, hanya saja nilai yang diterima lebih kecil dari int.
Tipe data ini dapat menerima nilai mulai dari -215 (-32,768) hingga 215-1 (32767). Tipe data
ini hanya membutuhkan 2 bytes untuk menyimpan data pada harddisk.

15
- Tinyint
Tipe data ini menerima nilai yang lebih kecil dari smallint. Nilai yang bisa diterima
mulai dari 0 hingga 255, dan hanya membutuhkan 1 bytes untuk menyimpan data pada
harddisk.

- Decimal
Tipe data ini menerima nilai yang lebih presisi dibanding tipe data integer yang telah
dibahas sebelumnya. Tipe data ini menggunakan 2 parameter untuk menentukan tingkat
presisi nilai yang diterima; precision dan scale. Precision adalah jumlah digit yang bisa
diterima oleh field, sedangkan scale adalah jumlah angka di belakang koma yang bisa
diterima oleh field. Jadi, jika kita membuat parameter precision sebanyak 5 dan scale
sebanyak 2 maka field kita bisa menerima nilai seperti ini : 123,45. Tipe data ini bisa
menerima nilai mulai dari -1038 hingga 1038-1. Tipe data ini menghabiskan 5- 17 bytes
untuk menyimpan data pada harddisk, tergantung pada tingkat kepresisian nilai yang
dimasukkan.

- Numeric
Tipe data ini pada dasarnya sama dengan tipe data decimal. Jadi tipe data ini bisa
disebut sinonim dari decimal.

- Money
Tipe data ini dapat menerima nilai mulai dari -263 (-9,223,372,036,854,775,808)
hingga 263-1 (-9,223,372,036,854,775,807). Tipe data ini menghabiskan 8 bytes untuk
menyimpan data pada harddisk.

- Smallmoney
Tipe data ini pada dasarnya sama dengan tipe data money, hanya saja nilai yang
diterima lebih kecil, yaitu mulai dari -214,748.3648 hingga 214,748.3647. Tipe data ini
menghabiskan 4 bytes untuk menyimpan data pada harddisk.

- Float
Tipe data ini mirip dengan tipe data decimal, hanya saja paramater scale pada tipe
data ini bisa menerima nilai yang tak terhingga, seperti pada nilai pi. Tipe data ini bisa
menerima nilai mulai dari -1.79E + 308 hingga 1.79E +308. Jika Anda mendeskripsikan field
dengan tipe data seperti ini : float(2), maka nilai output dari pi (misalnya) adalah 3,14. Angka

16
2 di dalam kurung menjelaskan berapa banyak angka yang harus ditampilkan dibelakang
koma. Tipe data ini menghabiskan 4-8 bytes untuk menyimpan data pada harddisk.

- Real
Tipe data ini mirip dengan tipe data float, hanya saja menerima nilai yang lebih kecil
dibandingkan dengan float, yaitu mulai dari -3.40E +38 hingga 3.40E +38. Tipe data ini
menghabiskan 4 bytes untuk menyimpan data pada harddisk.

- Datetime
Tipe data ini dapat menerima nilai tanggal dan waktu mulai dari 1 Januari 1753
hingga 31 Desember 9999. Tipe data ini menghabiskan 8 bytes untuk menyimpan data pada
harddisk.

- Smalldatetime
Tipe data ini dapat menerima tanggal dan waktu mulai dari 1 Januari 1900 hingga 6
Juni 2079, dengan akurasi waktu yang digunakan adalah menit. Tipe data ini menghabiskan 4
bytes untuk menyimpan data pada harddisk.

- Timestamp
Tipe data ini digunakan untuk mencatat record ketika data baru dimasukkan dan
diupdate. Tipe data ini sangat berguna untuk mencari tahu perubahan yang terjadi pada
database Anda.

- Uniqueidentifier
Tipe data ini berfungsi untuk membuat nilai yang unik yang mungkin bisa tampil
seperti ini 6F9619FF-8B86-D011-B42D-00C04FC964FF. Tipe data ini berguna jika Anda
ingin membuat serial number atau id yang unik.

- Char
Tipe data ini dapat digunakan untuk memasukkan data karakter non-Unicode dengan
jumlah karakter yang fix. Tipe data ini bisa menerima hingga 8000 karakter, dan jumlah bytes
yang dibutuhkan tergantung jumlah karakter yang dimasukkan. 1 karakter membutuhkan 1
bytes, sehingga jika Anda mendefinisikan seperti ini : char(5) maka field tersebut hanya bisa

17
menerima karakter sebanyak 5 buah karakter dengan space yang dibutuhkan untuk
menyimpan data pada harddisk sebanyak 5 bytes.

- Varchar
Tipe data ini mirip dengan tipe data char, namun tipe data ini berguna bagi Anda yang
tidak mengetahui secara pasti jumlah karakter yang akan dimasukkan oleh user. Tipe data ini
juga bisa menerima nilai hingga 8000 karakter. Jadi, jika pada tipe data char, Anda
mendefinisikan char(5), maka Anda akan selalu membutuhkan 5 bytes untuk menyimpan data
pada harddisk, walaupun jumlah karakter yang dimasukkan hanya 1 hingga 4 karakter; maka
pada tipe data ini, jumlah bytes yang dibutuhkan akan lebih fleksibel. Misalnya jika Anda
mendefinisikan varchar(30) untuk sebuah field, maka field tersebut dapat menerima data
hingga 30 karakter (30 bytes), namun jika Anda hanya memasukkan 1 karakter, maka jumlah
bytes yang dibutuhkan hanya sebanyak 1 bytes.

- Varchar(max)
Tipe data ini juga mirip dengan varchar, hanya saja, nilai yang bisa diterima mencapai
231-1(2,147,438,67) bytes data.

- Nchar
Tipe data ini mirip dengan tipe data char, namun tipe data ini bisa menerima nilai atau
data Unicode (berbeda dengan tipe data char yang hanya bisa menerima nilai karakter non-
Unicode). Tipe data ini bisa menerima nilai hingga 4000 karakter. Tipe data ini
menghabiskan 2-8000 bytes untuk menyimpan data pada harddisk. Mengapa dibutuhkan 2-
8000 bytes? Karena tipe data ini mengkali 2 bytes untuk setiap karakternya. Jadi jika user
hanya memasukkan 1 karakter, maka dibutuhkan 2 bytes untuk menyimpan data pada
harddisk.

- Nvarchar
Tipe data ini mirip dengan tipe data varchar, namun tipe data ini bisa menerima nilai
atau data Unicode. Tipe data ini juga bisa menerima nilai hingga 4000 karakter.

- Nvarchar(max)
Tipe data ini mirip dengan tipe data varchar(max), namun tipe data ini bisa menerima
nilai atau data Unicode. Tipe data ini bisa menerima karakter hingga 231-1 (2,147,483,67)
bytes data.

18
- Binary
Tipe data ini dapat menerima data binary dengan maksimum 8000 bytes data. Tipe
data ini diinterpretasikan sebagai string dari bit misalnya (110011001011).

- Varbinary
Tipe data ini mirip dengan varchar, hanya saja nilai yang bisa diterima hanya data
binary. Tipe data ini berguna untuk menyimpan data binary yang tidak diketahui dengan pasti
jumlah bytes datanya.

- Xml
Tipe data ini berguna untuk menyimpan data dalam format XML Document. Tipe
data ini dapat menyimpan data hingga 2Gb.

- SQL_Variant
Tipe data ini disebutkan dapat digunakan untuk mengubah tipe data sesuai dengan apa
yang dimasukkan oleh user. Mungkin, ilustrasinya seperti ini : jika user memasukkan angka
ke dalam field dengan tipe data ini, maka SQL_Variant akan menyesuaikan menjadi int atau
tipe data lain yang lebih sesuai (seperti varchar), tapi jika kemudian user mengisi field
tersebut dengan tipe data char, sql_variant akan mengubahnya tipe data field untuk row
tersebut menjadi char. Tipe data ini sebenarnya kurang disarankan untuk digunakan karena
tidak adanya batasan yang jelas dalam penggunaannya, dan dapat menyebabkan collision
data.

19
BAB II

ANALISIS DAN PERANCANGAN

2.1 Analisis
Analisis merupakan kegiatan memahami ataupun mempelajari sebuah objek untuk
menemukan kekurangan ataupun masalah yang dihadapi yang kemudian ditemukan solusi
untuk mengatasi kekurangan atau permasalahan tersebut sehingga menjadi suatu kelebihan
lain lagi bagi objek yang diteliti, dalam hal ini menganalisis sebuah objek untuk sebuah
penelitian yang berkaitan dengan rekam medis pasien.

2.2 Normalisasi 1 (1NF)


Suatu relasi dikatakan sudah memenuhi bentuk normal kesatu bila setiap data bersifat
atomik yaitu setiap irisan baris dan kolom hanya mempunyai satu nilai data. Berikut tabel
Normalisasi 1 (1NF) pada database pengiriman obat.

Tabel 2.1. Tabel Normalisasi 1 (1NF) Pengiriman Obat

20
2.3 Normalisasi 2 (2NF)
Suatu relasi dikatakan sudah memenuhi bentuk normal kedua bila relasi tersebut
sudah memenuhi bentuk Normal kesatu, dan atribut yang bukan key sudah tergantung penuh
terhadap keynya. Berikut tabel Normalisasi 2 (2NF) pada database pengiriman obat.

Tabel 2.2. Tabel Normalisasi 2 (2NF) Pengiriman Obat

2.4 Normalisasi 3 (3NF)


Suatu relasi dikatakan sudah memenuhi bentuk normal ketiga bila relasi tersebut
sudah memenuhi bentuk normal kedua dan atribut yang bukan key tidak tergantung transitif
terhadap keynya. Berikut tabel Normalisasi 3 (3NF) pada database pengiriman obat.

Tabel 2.3. Tabel Normalisasi 3 (3NF) Pengiriman Obat

21
2.5 ERD (Entity Relationship Diagram) Pengiriman Obat
Gambaran hubungan antar entitas / relasi yang terbentuk dari database pengiriman
obat, adalah seperti terlihat pada gambar berikut ini :

Gambar 2.6. ERD Database Pengiriman Obat

2.6 Struktur Tabel


Perancangan basis data merupakan perancangan yang dibuat untuk menyimpan
datadata ke dalam tabel-tabel yang digunakan untuk mengelola sistem informasi pengiriman
obat ini. Adapun tabel-tabel tersebut adalah :
1. Tabel Obat
Nama Database : Pengiriman Obat
Nama File : Obat
Primary Key : Id_Obat
Foreign Key : Id_Merk, Id_Jenis
Nama Field Type Data Size Keterangan
Id_Obat Char 8 Not Null, Primary Key
Nama_Obat Varchar 30 Nama Obat
Harga_Obat Int Harga Obat
Id_Merk Varchar 8 Kode Merk Obat
Id_Jenis Char 8 Kode Jenis Obat
Tabel 2.4. Tabel Obat

22
2. Tabel Merk
Nama Database : Pengiriman Obat
Nama File : Merk
Primary Key : Id_Merk
Foreign Key :-
Nama Field Type Data Size Keterangan
Id_Merk Varchar 8 Not Null, Primary Key
Nama_Merk Varchar 30 Nama Merk Obat
Tabel 2.5. Tabel Merk

3. Tabel Jenis
Nama Database : Pengiriman Obat
Nama File : Jenis
Primary Key : Id_Jenis
Foreign Key :-
Nama Field Type Data Size Keterangan
Id_Jenis Char 8 Not Null, Primary Key
Nama_Jenis Varchar 30 Jenis / Kemasan Obat
Tabel 2.6. Tabel Jenis

4. Tabel Customer
Nama Database : Pengiriman Obat
Nama File : Customer
Primary Key : Id_Customer
Foreign Key :-
Nama Field Type Data Size Keterangan
Id_Customer Char 8 Not Null, Primary Key
Nama_Customer Varchar 30 Nama Customer
Alamat_Customer Varchar 30 Alamat Customer
Tabel 2.7. Tabel Customer

23
5. Tabel Salesman
Nama Database : Pengiriman Obat
Nama File : Salesman
Primary Key : Id_Salesman
Foreign Key :-
Nama Field Type Data Size Keterangan
Id_Salesman Char 8 Not Null, Primary Key
Nama_Salesman Varchar 30 Nama Salesman
No_HP Varchar 30 No HP Salesman
Tabel 2.8. Tabel Salesman

6. Tabel Pengiriman
Nama Database : Pengiriman Obat
Nama File : Pengiriman
Primary Key : No_Faktur
Foreign Key : Id_Customer, Id_Salesman
Nama Field Type Data Size Keterangan
No_Faktur Char 8 Not Null, Primary Key
Tgl_Kirim Date Tanggal Pengiriman
Id_Customer Char 8 Kode Customer
Id_Salesman Char 8 Kode Salesman
Tabel 2.9. Tabel Pengiriman

7. Table Detail Pengiriman


Nama Database : Pengiriman Obat
Nama File : Detail Pengiriman
Primary Key : No_Faktur
Foreign Key : Id_Obat

Nama Field Type Data Size Keterangan


No_Faktur Char 8 Not Null, Primary Key
Id_Obat Char 8 Kode Obat
Qty_Obat Int Jumlah Obat yg dikirim
Tabel 2.10. Tabel Pengiriman

24
BAB III

IMPLEMENTASI SQL SERVER

3.1 Implementasi Basis Data dan Tabel


Berikut penerapan database yang telah dirancang di bab II kemudian
diimplementasikan ke SQL Server 2008, terdiri dari membuat database dan tabel–tablenya
sesuai ERD (Entity Relationship Diagram) yang ada di bab II.

3.1.1 Membuat Database Pengiriman Obat


create database order_obat_ferra

Gambar 3.7. Membuat database Order_Obat

- Menggunakan Database Pengiriman Obat

use order_obat_ferra

Gambar 3.8. Menggunakan database order obat

25
3.1.2 Membuat Tabel Obat (langsung primary key)
create table obat
(
Id_Obat char(8)not null primary key,
Nama_Obat varchar(30),
Harga_Obat int,
Id_Merk Varchar(8),
Id_Jenis char (8),
)

Gambar 3.9. Membuat tabel obat

- Menampilkan Struktur Tabel Obat


sp_help obat

Gambar 3.10. Menampilkan Struktur Tabel Obat

26
3.1.3 Membuat Tabel Merk (Primary Key dengan Alter)
Create table Merk
(
Id_Merk Varchar(8) not null primary key,
Nama_Merk varchar(30)
)
alter table Merk add constraint PK_Merk primary key(Id_Merk)

Gambar 3.11. Membuat Tabel Merk

- Menampilkan Struktur Tabel Merk


sp_help Merk

Gambar 3.12. Menampilkan Struktur Tabel Merk

27
3.1.4 Membuat Tabel Jenis (Primary Key dengan Constraint)
create table Jenis
(
Id_Jenis char(8),
Nama_Jenis varchar(30),
constraint PK_Jenis primary key(Id_Jenis),
)

Gambar 3.13. Membuat Tabel Jenis

- Menampilkan Struktur Tabel Jenis

sp_help Jenis

Gambar 3.14. Menampilkan Struktur Tabel Jenis

28
3.1.5 Membuat Tabel Customer
create table Customer
(
Id_Customer char(8)primary key,
Nama_Customer varchar(30),
Alamat_Customer varchar(30),
)

Gambar 3.15. Membuat Tabel Customer

- Menampilkan Struktur Tabel Customer


sp_help Customer

Gambar 3.16. Menampilan Struktur Tabel Customer

29
3.1.6 Membuat Tabel Salesman

Create table Salesman


(
Id_Salesman char(8) not null,
Nama_Salesman varchar (30),
No_Hp varchar(30)
)
alter table Salesman add constraint PK_Salesman primary
key(Id_Salesman)

Gambar 3.17. Membuat Tabel Salesman

- Menampilkan Struktur Tabel Salesman

sp_help Salesman

Gambar 3.18. Menampilkan Struktur Tabel Salesman

30
3.1.7 Membuat Tabel Pengiriman

create table Pengiriman


(
No_Faktur char(8),
Tgl_Kirim date,
Id_Customer char(8),
Id_Salesman char (8),
Id_Obat char(8),
Qty_Obat int
constraint PK_Pengiriman primary key(No_Faktur)
)

Gambar 3.19. Membuat Tabel Pengiriman

- Menampilkan Struktur Tabel Pengiriman

sp_help Pengiriman

Gambar 3.20. Menampilkan Struktur Tabel Pengiriman

31
3.1.8 Membuat tabel detail pengiriman
create table detail_pengiriman
(
No_Faktur char(8)not null primary key,
Id_Obat char(8),
Qty_Obat int
)

Gambar 3.21. Membuat tabel detail pengiriman

- Menampilkan struktur tabel detail pengiriman

sp_help Detail_Pengiriman

Gambar 3.22. Menampilkan struktur tabel detail pengiriman

32
3.2 Isi Data Tabel
3.2.1 Insert data pada tabel obat

insert into Obat values


('Br01','Mycostatin','49000','Mr01','J01'),
('Br02','Imodium','663242','Mr02','J02'),
('Br03','Tonicard','1450000','Mr03','J02'),
('Br04','Telfas OD','572795','Mr04','J02'),
('Br05','Isoprinosine Tab','93000','Mr05','J02')

Gambar 3.23. Input data pada tabel obat

- Menampilkan Isi Tabel Obat

select*from Obat

Gambar 3.24. Menampilkan isi dari tabel obat

33
3.2.2 Insert data pada tabel merk

insert into Merk values


('Mr01','Taisho'),
('Mr02','Jansen'),
('Mr03','Escolab'),
('Mr04','Aventis'),
('Mr05','Newport')

Gambar 3.25. Input data pada tabel merk

- Menampilkan isi dari tabel merk


select*from Merk

Gambar 3.26. Menampilkan isi dari tabel merk

34
3.2.3 Input data pada tabel jenis

insert into Jenis values


('J01','Flash'),
('j02','Box')

Gambar 3.27. Input data pada tabel jenis

- Menampilkan isi dari tabel jenis

select *from Jenis

Gambar 3.28. Menampilkan isi dari tabel jenis

35
3.2.4 Input data pada tabel customer

insert into Customer values


('G046','Siloam Hospitals','Cikarang'),
('RS18','RS Awal Bross','Bekasi'),
('RS09','RS Mediros','Jakarta'),
('RS29','RS Hosana Lippo','Cikarang'),
('P008','Mitra Keluarga Barat','Bekasi')

Gambar 3.29. Input data pada tabel customer

- Menampilkan isi dari tabel customer

select *from Customer

Gambar 3.30. Menampilkan isi dari tabel customer

36
3.2.5 Input data pada tabel salesman

insert into Salesman values


('Q001','Ahmad Faisal','089712837598'),
('Y001','Muhammad Yusuf','085787595430'),
('Z001','Rizal Saputra','081832585902')

Gambar 3.31. Input data pada tabel salesman

- Menampilkan isi dari tabel salesman

select*from Salesman

Gambar 3.32. Menampilkan isi dari tabel salesman

37
3.2.6 Input data pada tabel pengiriman

insert into Pengiriman values


('16040019','2016-04-02','G046','Q001'),
('16040029','2016-04-02','G046','Q001'),
('16040279','2016-04-08','RS18','Y001'),
('16040865','2016-04-11','RS09','Z001'),
('16040875','2016-04-11','RS09','Z001'),
('16041149','2016-04-15','RS29','Q001'),
('16041139','2016-04-15','RS29','Q001'),
('16041220','2016-04-18','P008','Y001'),
('16041390','2016-04-19','G046','Q001'),
('16041603','2016-04-25','P008','Y001')

Gambar 3.33. Input data pada tabel pengiriman

- Menampilkan isi dari tabel pengiriman


select*from Pengiriman

Gambar 3.34. Menampilkan isi dari tabel pengiriman

38
3.2.7 Input data pada tabel pengiriman
insert into detail_pengiriman values
('16040019','Br01',10),
('16040029','Br02',8),
('16040279','Br03',5),
('16040865','Br01',18),
('16040875','Br04',2),
('16041149','Br02',17),
('16041139','Br05',20),
('16041220','Br03',2),
('16041390','Br04',12),
('16041603','Br05',19)

Gambar 3.35. Input data pada tabel detail pengiriman

- Menampilkan isi dari tabel detail pengiriman


Select *from detail_pengiriman

Gambar 3.36. Menampilkan isi dari tabel detail pengiriman

39
3.3 Relasi dan Diagram
Berikut ini adalah relasi antar table dengan menggunakan query dan diagram yang
telah ada dari hasil relasi antar table yang telah dibuat pada database order_obat.

3.3.1 Relasi tabel merk ke tabel obat

alter table obat


add constraint fk1 foreign key(id_merk)
references merk(id_merk)

Gambar 3.37. Relasi tabel merk ke tabel obat

3.3.2 Relasi tabel jenis ke tabel obat


alter table obat
add constraint fk2 foreign key(id_jenis)
references jenis(id_jenis)

Gambar 3.38. Relasi tabel jenis ke tabel obat

40
3.3.3 Relasi tabel obat ke tabel detail_pengiriman

alter table detail_pengiriman


add constraint fk3 foreign key(id_obat)
references obat(id_obat)

Gambar 3.39. Relasi tabel obat ke tabel pengiriman

3.3.4 Relasi tabel salesman ke tabel pengiriman

alter table pengiriman


add constraint fk4 foreign key(Id_Salesman)
references salesman(Id_Salesman)

Gambar 3.40. Relasi tabel salesman ke tabel pengiriman

41
3.3.5 Relasi tabel customer ke tabel pengiriman

alter table pengiriman


add constraint fk5 foreign key(Id_Customer)
references customer(Id_Customer)

Gambar 3.41. Relasi tabel customer ke tabel pengiriman

3.3.6 Relasi tabel pengiriman ke tabel detail_pengiriman

alter table pengiriman


add constraint fk5 foreign key(Id_Customer)
references customer(Id_Customer)

Gambar 3.42. Relasi tabel pengiriman ke tabel detail_pengiriman

42
3.3.7 Diagram database order_obat

Gambar 3.43. Diagram database order obat

3.4 Query data

Berikut ini adalah query data untuk melakukan penelusuran data di database order
obat yang telah dibuat, query terdiri dari 1, 2 dan 3 table.

3.4.1 QUERY 1 TABEL (15 QUERY)


1. Menampilkan isi tabel obat dimana Id_Obat sama dengan J01,diurutkan berdasarkan
nama_obat secara ascending.

select *from Obat


where Id_Jenis = 'J01'
order by Nama_Obat Asc

Gambar 3.44. Query 1 Tabel (No. 1)

43
2. Menampilkan id_obat diganti menjadi ‘ID Obat’, nama_obat diganti menjadi ‘Nama Obat’,
dan harga_obat diganti dengan ‘Harga Obat’ dengan harga antara 100000 hingga 2000000,
diurutkan berdasarkan nama_obat.

select Id_Obat 'ID Obat', Nama_Obat 'Nama Obat', Harga_Obat


'Harga Obat' from Obat
where Harga_Obat between 100000 and 2000000 order by Nama_Obat

Gambar 3.45. Query 1 Tabel (No. 2)


3. Menampilkan id_obat diganti menjadi ‘ID Obat’, nama_obat diganti menjadi ‘Nama Obat’,
harga_obat diganti menjadi ‘Harga Obat’ dan harga discount 50%, dimana id_jenis = J02,
diurutkan berdasarkan nama_obat secara ascending dan hitung jumlah recordnya.

select Id_Obat 'ID Obat', Nama_Obat 'Nama Obat', Harga_Obat 'Harga


Obat',harga_obat*0.5 'harga discount 50%' from Obat where Id_Jenis =
'J02' order by Nama_Obat Asc
select COUNT (Nama_Obat) 'Jumlah Record' from Obat
where Id Jenis = 'J02'

Gambar 3.46. Query 1 Tabel (No. 3)

44
4. Menampilkan id_merk dan nama merk dimana nama merk memiliki huruf 'n', dan
diurutkan berdasarkan nama_merk secara ascending.

select id_merk, nama_merk


from merk
where nama_merk like '%[n]%'
order by nama_merk asc

Gambar 3.47. Query 1 Tabel (No. 4)

5. Menampilkan nama_customer dan alamat_customer dari tabel customer dan diurutkan


berdasarkan nama_customer.

select nama_customer,
alamat_customer
from customer
order by Nama_Customer asc

Gambar 3.48. Query 1 Tabel (No. 5)

45
6. Menampilkan isi tabel customer dimana alamat customer berada di bekasi dan diurutkan
berdasarkan nama customer.

select *from Customer


where Alamat_Customer ='bekasi'
order by nama_customer

Gambar 3.49. Query 1 Tabel (No. 6)

7. Menampilkan nama_salesman dan no_hp diganti dengan 'No_Handphone', diurutkan


berdasarkan nama_salesman secara ascending.
select *from Customer
where Alamat_Customer ='bekasi'
order by nama_customer

Gambar 3.50. Query 1 Tabel (No. 7)

46
8. Menampilkan jumlah record yang ada di dalam tabel salesman.

Select COUNT(nama_salesman)
from salesman

Gambar 3.51. Query 1 Tabel (No. 8)

9. Menampilkan no_faktur, id_customer, id_salesman, id_obat, qty_obat dimana qty_obat


lebih dari 10 dan diurutkan berdasarkan no_faktur secara ascending.

select no_faktur, tgl_kirim, id_customer from


Pengiriman
where No_Faktur like '%[3]%'
order by tgl_kirim asc

Gambar 3.52. Query 1 Tabel (No. 9)

47
10. Menampilkan seluruh field di dalam tabel dimana tgl_kirim antara '2016-04-11' dan
'2016-04-19', dan diurutkan berdasarkan tgl_kirim secara ascending.

select *from Pengiriman


where Tgl_Kirim between '2016-04-11' and '2016-
04-19' order by Tgl_Kirim asc

Gambar 3.53. Query 1 Tabel (No. 10)

11. Menampilkan isi dari tabel customer dimana alamat_customer bukan di cikarang,
diurutkan berdasarkan nama_customer secara ascending.
select *from Customer
where Alamat_Customer not in ('cikarang')
order by nama_customer asc

Gambar 3.54. Query 1 Tabel (No. 11)

48
12. Menampilkan no_faktur dan tgl_kirim dimana id_salesman adalah 'q001' dan 'z001',
diurutkan berdasarkan tgl_kirim secara ascending.

select no_faktur, tgl_kirim from pengiriman


where Id_Salesman in ('q001','z001')
order by Tgl_Kirim asc

Gambar 3.55. Query 1 Tabel (No. 12)

13. Menampilkan no_faktur dan id_obat dari detail_pengiriman dimana qty_obat kurang dari
10 dan diurutkan berdasar id_obat secara ascending, serta menampilkan total qty_obat
yang kurang dari 10.

select no_faktur, id_obat from detail_pengiriman


where Qty_Obat <=10 order by Id_Obat asc
select 'total qty_obat'=SUM(qty_obat) from detail_pengiriman
where Qty_Obat <=10

Gambar 3.56. Query 1 Tabel (No. 13)

49
14. Menampilkan jumlah obat, rata-rata, toal, qty tertinggi dan qty terendah pada tabel
detail_pengiriman.

select 'JUMLAH OBAT'=count(qty_obat),


'RATA-RATA'=AVG(qty_obat),
'TOTAL'=sum(qty_obat),
'QTY TERTINGGI'=max(qty_obat),
'QTY TERENDAH'=min(qty_obat)
from detail_pengiriman

Gambar 3.57. Query 1 Tabel (No. 14)


15. Menampilkan no_faktur, tgl_kirim, id_kustomer, id_salesman, dan batas pengiriman(tgl)
dari tabel pengiriman.
select No_Faktur, Tgl_Kirim,
Id_Customer, Id_Salesman,
datename(DD,tgl_kirim)+3'batas
pengiriman (tgl)' from pengiriman

Gambar 3.58. Query 1 Tabel (No. 15)

50
3.4.2 QUERY 2 TABEL (10 QUERY)
1. Menampilkan id_obat, nama_obat, harga_obat dari tabel obat dan nama_merk dari tabel
merk dimana id_jenis pada tabel obat sama dengan 'J02'.
select id_obat, nama_obat, nama_merk, harga_obat
from obat inner join Merk
on obat.Id_merk = merk.Id_Merk
where obat.Id_Jenis='j02'

Gambar 3.59. Query 2 Tabel (No. 1)

2. Menampilkan nama_obat, harga obat dari tabel obat dan nama_jenis dari tabel jenis
dimana id_jenis pada tabel obat sama dengan id_jenis pada tabel jenis.

select nama_obat, nama_jenis, harga_obat


from obat inner join jenis
on obat.Id_jenis = jenis.Id_jenis

Gambar 3.60. Query 2 Tabel (No. 2)

51
3. Menampilkan nama_obat, harga_obat dari tabel obat, dan qty_obat dari tabel detail
pengiriman dimana qty_obat dari detail pengiriman kurang dari 10.
select nama_obat, qty_obat, harga_obat
from obat inner join detail_pengiriman
on obat.Id_obat = detail_pengiriman.Id_Obat
where detail_pengiriman.qty_obat <10

Gambar 3.61. Query 2 Tabel (No. 3)

4. Menampilkan id_obat, tgl_kirim, id_customer dari tabel pengiriman dan qty_obat dari
tabel detail pengiriman dimana tgl_kirim dari tabel pengiriman antara '2016-04-08' dan
'2016-04-15'.
select id_obat, Qty_Obat, tgl_kirim, id_customer
from pengiriman inner join detail_pengiriman
on detail_pengiriman.No_Faktur = pengiriman.No_Faktur
where pengiriman.Tgl_Kirim between '2016-04-08' and
'2016-04-15'

Gambar 3.62. Query 2 Tabel (No. 4)

52
5. Menampilkan no_faktur, tgl_kirim dari tabel pengiriman dan nama_customer,
alamat_customer dari tabel customer. Diurutkan berdasarkan tgl_kirim dari tabel pengiriman
secara ascending.
select no_faktur, tgl_kirim, nama_customer,
alamat_customer
from pengiriman inner join customer
on pengiriman.Id_Customer = Customer.Id_Customer
order by Pengiriman.Tgl_Kirim asc

Gambar 3.63. Query 2 Tabel (No. 5)

6. Menampilkan no_faktur, tgl_kirim, id_customer dari tabel pengiriman dan


nama_salesman, no_hp dari tabel salesman dimana nama salesman dari tabel salesman adalah
'muhammad yusuf'.
select no_faktur, tgl_kirim, id_customer, nama_salesman, no_hp
from pengiriman inner join salesman on pengiriman.Id_salesman =
salesman.Id Salesman where salesman.Nama Salesman = 'muhammad yusuf'

Gambar 3.64. Query 2 Tabel (No. 6)

53
7. Menampilkan no_faktur, tgl_kirim, dari tabel pengiriman dan nama_customer,
alamat_customer dari tabel customer dimana no_faktur dari tabel pengiriman memiliki
akhiran '9', diurutkan berdasarkan tgl_kirim secara ascending.
select no_faktur, tgl_kirim, nama_customer, alamat_customer
from pengiriman inner join customer on pengiriman.Id_Customer =
Customer.Id_Customer where No_Faktur like '%[9]' order by
Pengiriman.Tgl_Kirim asc

Gambar 3.65. Query 2 Tabel (No. 7)


8. Menampilkan tgl_kirim, id_customer dari tabel pengiriman dan id_obat, qty_obat dari
tabel detail pengiriman. menampilkan jumlah record dan rata-rata dari field qty_obat
berdasarkan qty_obat dari detail pengiriman.
select no_faktur, tgl_kirim, nama_customer, alamat_customer
from pengiriman inner join customer on pengiriman.Id_Customer =
Customer.Id_Customer where No_Faktur like '%[9]' order by
Pengiriman.Tgl_Kirim asc

Gambar 3.66. Query 2 Tabel (No. 8)

54
9. Menampilkan id_obat, tgl_kirim, id_salesman, qty_obat dari tabel pengiriman dan tabel
detail pengiriman. qty_obat ditambah 3 berdasarkan tgl_kirim antara '2016-04-8' dan '2016-
04-15'.

select id_obat, tgl_kirim, id_salesman, qty_obat+3 'qty_obat(+3)'


from pengiriman join detail_pengiriman on pengiriman.No_Faktur =
detail_pengiriman.No_Faktur
where tgl_kirim between '2016-04-8' and '2016-04-15'

Gambar 3.67. Query 2 Tabel (No. 9)

10. Menampilkan no_faktur, nama_obat, qty_obat, harga_obat dari tabel obat dan detail
pengiriman qty_obat dikali dengan harga_obat menjadi total harga berdasarkan qty_obat
lebih dari 12.

select no_faktur, nama_obat, qty_obat, harga_obat,


qty_obat* harga_obat 'total harga' from obat join
detail_pengiriman
on obat.Id_Obat=detail_pengiriman.Id_Obat
where detail_pengiriman.Qty_Obat >12

Gambar 3.68. Query 2 Tabel (No. 10)

55
3.4.3 QUERY 3 TABEL (5 QUERY)
1. Menampilkan nama_merk, nama_obat, harga_obat, nama_jenis dari tabel merk, obat, dan
jenis. diurutkan berdasarkan nama_obat secara ascending.
select no_faktur, nama_obat, qty_obat, harga_obat, qty_obat*
harga_obat 'total harga' from obat join detail_pengiriman on
obat.Id_Obat=detail_pengiriman.Id_Obat
where detail_pengiriman.Qty_Obat >12

Gambar 3.69. Query 3 Tabel (No. 1)

2. Menampilkan no_faktur, nama_merk, nama_obat, qty_obat, harga_obat dari tabel merk,


obat, dan detail pengiriman. berdasarkan harga_obat lebih dari '100000' dan diurutkan secara
ascending.
select no_faktur, nama_merk, nama_obat, qty_obat, harga_obat
from obat join merk on obat.Id_Merk = merk.Id_Merk
join detail_pengiriman on obat.Id_Obat =
detail_pengiriman.Id_Obat
where Harga_Obat > '100000' order by obat.Harga_Obat asc

Gambar 3.70. Query 3 Tabel (No. 2)

56
3. Menampilkan nama_obat, qty_obat, harga_obat, tgl_kirim dari tabel obat, detail
pengiriman, dan pengiriman. qty_obat dikalikan dengan harga_obat menjadi total harga.

select nama_obat, qty_obat, harga_obat, tgl_kirim,


qty_obat*harga_obat 'total harga' from
detail_pengiriman
join obat on detail_pengiriman.Id_Obat = obat.Id_Obat
join Pengiriman on detail_pengiriman.No_Faktur =
Pengiriman.No_Faktur

Gambar 3.71. Query 3 Tabel (No. 3)

4. Menampilkan id_obat, tgl_kirim, nama_customer, alamat_customer dari tabel pengiriman,


detail_pengiriman, dan customer. berdasarkan alamat_customer sama dengan cikarang.
select id_obat, tgl_kirim, nama_customer, alamat_customer from
Pengiriman join detail_pengiriman on Pengiriman.No_Faktur =
detail_pengiriman.No_Faktur join Customer on
Pengiriman.Id_Customer = Customer.Id_Customer
where Customer.Alamat_Customer = 'cikarang'

Gambar 3.72. Query 3 Tabel (No. 4)

57
5. Menampilkan id_obat, tgl_kirim, nama_salesman, no_hp dari tabel pengiriman,
detail_pengiriman, dan salesman. menambahkan 3(hari) pada field tgl_kirim dan ditampilkan
pada field batas pengiriman(tgl). dipilih berdasarkan nama_salesman yang bernama 'Ahmad
Faisal'.

select id_obat, tgl_kirim, nama_salesman, no_hp,


datename(DD,tgl_kirim)+3'batas pengiriman (tgl)' from
pengiriman
join detail_pengiriman on Pengiriman.No_Faktur =
detail_pengiriman.No_Faktur
join Salesman on Pengiriman.Id_Salesman = Salesman.Id_Salesman
where Salesman.Nama_Salesman ='ahmad faisal'

Gambar 3.73. Query 3 Tabel (No. 5)

58
BAB IV

KESIMPULAN DAN SARAN

4.1 Kesimpulan
Kesimpulan dalam pembuatan makalah “Database Pengiriman Obat” adalah sebagai berikut:
1. Teori yang dijelaskan adalah meliputi teori basis data, normalisasi data dan
implementasi pada SQL Server.
2. Dalam makalah ini normalisasi yang digunakan ada 3 tahap, yaitu normalisasi 1NF,
normalisasi 2NF, dan normalisasi 3NF sehingga terbentuk ERD(Entity
Realtionship Diagram).
3. Implementasi database, tabel, dan relasi antar table mengunakan query dan object
explorer pada Microsoft SQL Server Management Studio.

4.2. Saran
Saran dari perancangan database pengiriman barang sampai implementasinya ke
database SQL Server adalah:
1. Dengan dibuatnya database ini, diharapkan dapat digunakan ke dalam beberapa
bahasa pemrograman lainnya.
2. Database ini dapat dilakukan pengembangan yang diharapkan akan menjadi lebih
sempurna dan aman saat diimplementasikan pada perusahaan.

59
Daftar Pustaka

- Materi kuliah "sistem basis data", STMIK Bani Saleh, Didik Setiyadi, 2010.
- http://maeami1211.blogspot.co.id/2013/03/data-base-basis-data.html
- http://informatika.web.id/pengertian-basis-data.htm
- http://www.gurupendidikan.com/pengertian-basis-data-dan-normalisasi-lengkap/
- http://novebri.blogspot.co.id/2011/04/kegunaan-database.html
- http://trikusum.blogspot.co.id/2012/10/basis-data-relasional.html

60
LAMPIRAN
Sintaks lengkap sql server :
--Membuat database pengiriman obat
create database order_obat_ferra

--Menggunakan database obat


use order_obat_ferra

--Membuat tabel Obat (primary key langsung)


create table obat
(
Id_Obat char(8)not null primary key,
Nama_Obat varchar(30),
Harga_Obat int,
Id_Merk Varchar(8),
Id_Jenis char (8),
)

--Menampilkan struktur tabel obat


sp_help obat

--Input data ke dalam tabel obat


insert into Obat values
('Br01','Mycostatin','49000','Mr01','J01'),
('Br02','Imodium','663242','Mr02','J02'),
('Br03','Tonicard','1450000','Mr03','J02'),
('Br04','Telfas OD','572795','Mr04','J02'),
('Br05','Isoprinosine Tab','93000','Mr05','J02')

--Menampilkan semua isi tabel obat


select *from Obat

--Membuat Tabel Merk (primary key dengan alter)


Create table Merk
(
Id_Merk Varchar(8) not null,
Nama_Merk varchar(30)
)
alter table Merk add constraint PK_Merk primary key(Id_Merk)

--Menampilkan Struktur Tabel Merk


sp_help Merk

--Input data ke dalam tabel merk


insert into Merk values
('Mr01','Taisho'),
('Mr02','Jansen'),
('Mr03','Escolab'),
('Mr04','Aventis'),
('Mr05','Newport')

--Menampilkan isi tabel merk


select *from Merk

--Membuat tabel jenis (primary key dengan constraint)


create table Jenis
(
Id_Jenis char(8),

61
Nama_Jenis varchar(30),
constraint PK_Jenis primary key(Id_Jenis),
)

--Menampilkan Struktur Tabel Jenis


sp_help Jenis

--Input data ke tabel jenis


insert into Jenis values
('J01','Flash'),
('j02','Box')

--Menampilkan isi tabel jenis


select *from Jenis

--Membuat tabel customer (primary key langsung)


create table Customer
(
Id_Customer char(8)primary key,
Nama_Customer varchar(30),
Alamat_Customer varchar(30),
)

--Input data ke dalam tabel customer


insert into Customer values
('G046','Siloam Hospitals','Cikarang'),
('RS18','RS Awal Bross','Bekasi'),
('RS09','RS Mediros','Jakarta'),
('RS29','RS Hosana Lippo','Cikarang'),
('P008','Mitra Keluarga Barat','Bekasi')

--Menampilkan isi tabel customer


select *from Customer

--Membuat tabel salesman (primary key dengan alter)


Create table Salesman
(
Id_Salesman char(8) not null,
Nama_Salesman varchar (30),
No_Hp varchar(30)
)
alter table Salesman
add constraint PK_Salesman primary key(Id_Salesman)

--Input data ke dalam tabel salesman


insert into Salesman values
('Q001','Ahmad Faisal','089712837598'),
('Y001','Muhammad Yusuf','085787595430'),
('Z001','Rizal Saputra','081832585902')

--Menampilkan isi tabel salesman


select *from Salesman

--Membuat tabel pengiriman (primary key dengan constraint)


create table Pengiriman
(
No_Faktur char(8),
Tgl_Kirim date,
Id_Customer char(8),
Id_Salesman char (8),
constraint PK_Pengiriman primary key(No_Faktur)

62
)

--Menampilkan struktur tabel pengiriman


sp_help pengiriman

--Input data ke dalam tabel pengiriman


insert into Pengiriman values
('16040019','2016-04-02','G046','Q001'),
('16040029','2016-04-02','G046','Q001'),
('16040279','2016-04-08','RS18','Y001'),
('16040865','2016-04-11','RS09','Z001'),
('16040875','2016-04-11','RS09','Z001'),
('16041149','2016-04-15','RS29','Q001'),
('16041139','2016-04-15','RS29','Q001'),
('16041220','2016-04-18','P008','Y001'),
('16041390','2016-04-19','G046','Q001'),
('16041603','2016-04-25','P008','Y001')

--Menampilkan isi tabel pengiriman


select *from Pengiriman

--Membuat tabel detail pengiriman


create table detail_pengiriman
(
No_Faktur char(8)not null primary key,
Id_Obat char(8),
Qty_Obat int
)

--Menampilkan struktur tabel detail_pengiriman


sp_help detail_pengiriman

--Input data kedalam tabel detail_pengiriman


insert into detail_pengiriman values
('16040019','Br01',10),
('16040029','Br02',8),
('16040279','Br03',5),
('16040865','Br01',18),
('16040875','Br04',2),
('16041149','Br02',17),
('16041139','Br05',20),
('16041220','Br03',2),
('16041390','Br04',12),
('16041603','Br05',19)

--Menampilkan isi tabel detail_pengiriman


select *from detail_pengiriman

/*
******** MEMBUAT RELASI ********
*/

--Membuat relasi tabel merk dengan tabel obat


alter table obat
add constraint fk1 foreign key(id_merk)
references merk(id_merk)

--Membuat relasi tabel jenis dengan tabel obat


alter table obat
add constraint fk2 foreign key(id_jenis)
references jenis(id_jenis)

63
--Membuat relasi tabel obat dengan tabel pengiriman
alter table detail_pengiriman
add constraint fk3 foreign key(id_obat)
references obat(id_obat)

--Membuat relasi tabel salesman dengan tabel pengiriman


alter table pengiriman
add constraint fk4 foreign key(Id_Salesman)
references salesman(Id_Salesman)

--Membuat relasi tabel customer dengan tabel pengiriman


alter table pengiriman
add constraint fk5 foreign key(Id_Customer)
references customer(Id_Customer)

--Membuat relasi tabel pengiriman dengan tabel detail_pengiriman


alter table detail_pengiriman
add constraint fk6 foreign key(No_Faktur)
references pengiriman(No_Faktur)

/*
******** QUERY DATA ********
--------1 Tabel-------
*/

/*
1. Menampilkan isi tabel obat dimana Id_Obat sama dengan J01,diurutkan
berdasarkan nama_obat secara ascending
*/
select *from Obat
where Id_Jenis = 'J01'
order by Nama_Obat Asc

/*
2. Menampilkan id_obat, nama_obat, dan harga_obat dengan harga antara
100000 hingga 2000000,
diurutkan berdasarkan nama_obat
*/
select Id_Obat 'ID Obat', Nama_Obat 'Nama Obat', Harga_Obat 'Harga Obat'
from Obat
where Harga_Obat between 100000 and 2000000
order by Nama_Obat

/*
3. Menampilkan id_obat, nama_obat, harga_obat dan harga discount 50%,
dimana id_jenis = J02,
diurutkan berdasarkan nama_obat secara ascending dan hitung jumlah
recordnya
*/
select Id_Obat 'ID Obat', Nama_Obat 'Nama Obat', Harga_Obat 'Harga Obat',
harga_obat*0.5 'harga discount 50%' from Obat
where Id_Jenis = 'J02'
order by Nama_Obat Asc
select COUNT (Nama_Obat) 'Jumlah Record' from Obat
where Id_Jenis = 'J02'

/*
4. Menampilkan id_merk dan nama merk dimana nama merk memiliki huruf 'n',
dan diurutkan berdasarkan
nama_merk secara ascending.

64
*/
select id_merk, nama_merk
from merk
where nama_merk like '%[n]%'
order by nama_merk asc

/*
5. Menampilkan nama_customer dan alamat_customer dari tabel customer dan
diurutkan berdasarkan
nama_customer.
*/
select nama_customer, alamat_customer
from customer
order by Nama_Customer asc

/*
6. Menampilkan isi tabel customer dimana alamat customer berada di bekasi
dan diurutkan berdasarkan nama customer
*/
select *from Customer
where Alamat_Customer ='bekasi'
order by nama_customer

/*
7. Menampilkan nama_salesman dan no_hp diganti dengan 'No_Handphone',
diurutkan berdasarkan nama_salesman secara ascending.
*/
select nama_salesman, no_hp 'No_Handphone'
from Salesman order by Nama_Salesman asc

/*
8. Menampilkan jumlah record yang ada di dalam tabel salesman.
*/
select COUNT(nama_salesman) from salesman

/*
9. Menampilkan no_faktur, tgl_kirim, dan id_customer dari tabel pengiriman,
dimana no_faktur terdapat angka 3,dan diurutkan berdasarkan tgl_kirim
secara ascending.
*/
select no_faktur, tgl_kirim, id_customer from Pengiriman
where No_Faktur like '%[3]%'
order by tgl_kirim asc

/*
10. Menampilkan seluruh field di dalam tabel dimana tgl_kirim antara '2016-
04-11' dan '2016-04-19',
dan diurutkan berdasarkan tgl_kirim secara ascending.
*/
select *from Pengiriman
where Tgl_Kirim between '2016-04-11' and '2016-04-19'
order by Tgl_Kirim asc

/*
10. Menampilkan seluruh field di dalam tabel dimana tgl_kirim antara '2016-
04-11' dan '2016-04-19',
dan diurutkan berdasarkan tgl_kirim secara ascending.
*/
select no_faktur, tgl_kirim, id_customer from Pengiriman
where No_Faktur like '%[3]%'
order by tgl_kirim

65
/*
11. Menampilkan isi dari tabel customer dimana alamat_customer bukan di
cikarang,
diurutkan berdasarkan nama_customer secara ascending
*/
select *from Customer
where Alamat_Customer not in ('cikarang')
order by nama_customer asc

/*
12. Menampilkan no_faktur dan tgl_kirim dimana id_salesman adalah 'q001'
dan 'z001',
diurutkan berdasarkan tgl_kirim secara ascending.
*/
select no_faktur, tgl_kirim from pengiriman
where Id_Salesman in ('q001','z001')
order by Tgl_Kirim asc

/*
13. Menampilkan no_faktur dan id_obat dari detail_pengiriman dimana
qty_obat kurang dari 10 dan diurutkan berdasar id_obat secara ascending,
serta menampilkan total qty_obat yang kurang dari 10.
*/
select no_faktur, id_obat from detail_pengiriman
where Qty_Obat <=10 order by Id_Obat asc
select 'total qty_obat'=SUM(qty_obat) from detail_pengiriman
where Qty_Obat <=10

/*
14. Menampilkan jumlah obat, rata-rata, toal, qty tertinggi dan qty
terendah pada tabel detail_pengiriman.
*/
select 'JUMLAH OBAT'=count(qty_obat),
'RATA-RATA'=AVG(qty_obat),
'TOTAL'=sum(qty_obat),
'QTY TERTINGGI'=max(qty_obat),
'QTY TERENDAH'=min(qty_obat)
from detail_pengiriman

/*
15. Menampilkan no_faktur, tgl_kirim, id_kustomer, id_salesman, dan batas
pengiriman(tgl) dari tabel pengiriman.
*/
select No_Faktur, Tgl_Kirim, Id_Customer, Id_Salesman,
datename(DD,tgl_kirim)+3'batas pengiriman (tgl)' from pengiriman

/*
-----2 tabel-----
*/
/*
1. Menampilkan id_obat, nama_obat, harga_obat dari tabel obat dan nama_merk
dari tabel merk
dimana id_jenis pada tabel obat sama dengan 'J02'.
*/
select id_obat, nama_obat, nama_merk, harga_obat
from obat inner join Merk
on obat.Id_merk = merk.Id_Merk
where obat.Id_Jenis='j02'

/*

66
2. Menampilkan nama_obat, harga obat dari tabel obat dan nama_jenis dari
tabel jenis
dimana id_jenis pada tabel obat sama dengan id_jenis pada tabel jenis.
*/
select nama_obat, nama_jenis, harga_obat
from obat inner join jenis
on obat.Id_jenis = jenis.Id_jenis

/*
3. Menampilkan nama_obat, harga_obat dari tabel obat, dan qty_obat dari
tabel detail pengiriman
dimana qty_obat dari detail pengiriman kurang dari 10.
*/
select nama_obat, qty_obat, harga_obat
from obat inner join detail_pengiriman
on obat.Id_obat = detail_pengiriman.Id_Obat
where detail_pengiriman.qty_obat <10

/*
4. Menampilkan id_obat, tgl_kirim, id_customer dari tabel pengiriman dan
qty_obat dari tabel detail pengiriman
dimana tgl_kirim dari tabel pengiriman antara '2016-04-08' dan '2016-04-
15'.
*/
select id_obat, Qty_Obat, tgl_kirim, id_customer
from pengiriman inner join detail_pengiriman
on detail_pengiriman.No_Faktur = pengiriman.No_Faktur
where pengiriman.Tgl_Kirim between '2016-04-08' and '2016-04-15'

/*
5. Menampilkan no_faktur, tgl_kirim dari tabel pengiriman dan
nama_customer, alamat_customer dari tabel customer
diurutkan berdasarkan tgl_kirim dari tabel pengiriman secara ascending.
*/
select no_faktur, tgl_kirim, nama_customer, alamat_customer
from pengiriman inner join customer
on pengiriman.Id_Customer = Customer.Id_Customer
order by Pengiriman.Tgl_Kirim asc

/*
6. Menampilkan no_faktur, tgl_kirim, id_customer dari tabel pengiriman dan
nama_salesman, no_hp dari tabel salesman
dimana nama salesman dari tabel salesman adalah 'muhammad yusuf'.
*/
select no_faktur, tgl_kirim, id_customer, nama_salesman, no_hp
from pengiriman inner join salesman
on pengiriman.Id_salesman = salesman.Id_Salesman
where salesman.Nama_Salesman = 'muhammad yusuf'

/*
7. Menampilkan no_faktur, tgl_kirim, dari tabel pengiriman dan
nama_customer, alamat_customer dari tabel customer
dimana no_faktur dari tabel pengiriman memiliki akhiran '9', diurutkan
berdasarkan tgl_kirim secara ascending.
*/
select no_faktur, tgl_kirim, nama_customer, alamat_customer
from pengiriman inner join customer
on pengiriman.Id_Customer = Customer.Id_Customer
where No_Faktur like '%[9]'
order by Pengiriman.Tgl_Kirim asc

67
/*
8. Menampilkan tgl_kirim, id_customer dari tabel pengiriman dan id_obat,
qty_obat dari tabel detail pengiriman.
menampilkan jumlah record dan rata-rata dari field qty_obat berdasarkan
qty_obat dari detail pengiriman.
*/
select id_obat, Qty_Obat, tgl_kirim, id_customer
from pengiriman inner join detail_pengiriman
on detail_pengiriman.No_Faktur = pengiriman.No_Faktur
select 'Jumlah Record'=COUNT(qty_obat), 'Rata-rata Qty_obat'=AVG(qty_obat)
from detail_pengiriman

/*
9. Menampilkan id_obat, tgl_kirim, id_salesman, qty_obat dari tabel
pengiriman dan tabel detail pengiriman.
qty_obat ditambah 3 berdasarkan tgl_kirim antara '2016-04-8' dan '2016-04-
15'.
*/
select id_obat, tgl_kirim, id_salesman, qty_obat+3 'qty_obat(+3)'
from pengiriman join detail_pengiriman on pengiriman.No_Faktur =
detail_pengiriman.No_Faktur
where tgl_kirim between '2016-04-8' and '2016-04-15'

/*
10. Menampilkan no_faktur, nama_obat, qty_obat, harga_obat dari tabel obat
dan detail pengiriman
qty_obat dikali dengan harga_obat menjadi total harga berdasarkan qty_obat
lebih dari 12.
*/
select no_faktur, nama_obat, qty_obat, harga_obat, qty_obat*harga_obat
'total harga'
from obat join detail_pengiriman on obat.Id_Obat=detail_pengiriman.Id_Obat
where detail_pengiriman.Qty_Obat>12

/*
-----3 tabel-----
*/
/*
1. Menampilkan nama_merk, nama_obat, harga_obat, nama_jenis dari tabel
merk, obat, dan jenis.
diurutkan berdasarkan nama_obat secara ascending.
*/
select nama_merk, nama_obat, harga_obat, nama_jenis from obat
join merk on obat.Id_Merk = merk.Id_Merk
join Jenis on obat.Id_Jenis = Jenis.Id_Jenis
order by obat.Nama_Obat asc

/*
2. Menampilkan no_faktur, nama_merk, nama_obat, qty_obat, harga_obat dari
tabel merk, obat, dan detail pengiriman.
berdasarkan harga_obat lebih dari '100000' dan diurutkan secara ascending.
*/
select no_faktur, nama_merk, nama_obat, qty_obat, harga_obat from obat
join merk on obat.Id_Merk = merk.Id_Merk
join detail_pengiriman on obat.Id_Obat = detail_pengiriman.Id_Obat
where Harga_Obat > '100000'
order by obat.Harga_Obat asc

/*
3. Menampilkan nama_obat, qty_obat, harga_obat, tgl_kirim dari tabel obat,
detail pengiriman, dan pengiriman.

68
qty_obat dikalikan dengan harga_obat menjadi total harga.
*/
select nama_obat, qty_obat, harga_obat, tgl_kirim, qty_obat*harga_obat
'total harga'
from detail_pengiriman
join obat on detail_pengiriman.Id_Obat = obat.Id_Obat
join Pengiriman on detail_pengiriman.No_Faktur = Pengiriman.No_Faktur

/*
4. Menampilkan id_obat, tgl_kirim, nama_customer, alamat_customer dari
tabel pengiriman, detail_pengiriman, dan customer.
berdasarkan alamat_customer sama dengan cikarang.
*/
select id_obat, tgl_kirim, nama_customer, alamat_customer from Pengiriman
join detail_pengiriman on Pengiriman.No_Faktur =
detail_pengiriman.No_Faktur
join Customer on Pengiriman.Id_Customer = Customer.Id_Customer
where Customer.Alamat_Customer = 'cikarang'

/*
5. Menampilkan id_obat, tgl_kirim, nama_salesman, no_hp dari tabel
pengiriman, detail_pengiriman, dan salesman.
menambahkan 3(hari) pada field tgl_kirim dan ditampilkan pada field batas
pengiriman(tgl).
dipilih berdasarkan nama_salesman yang bernama 'Ahmad Faisal'.
*/
select id_obat, tgl_kirim, nama_salesman, no_hp,
datename(DD,tgl_kirim)+3'batas pengiriman (tgl)'
from pengiriman
join detail_pengiriman on Pengiriman.No_Faktur =
detail_pengiriman.No_Faktur
join Salesman on Pengiriman.Id_Salesman = Salesman.Id_Salesman
where Salesman.Nama_Salesman ='ahmad faisal'

69

Anda mungkin juga menyukai