BAB 3 ANALISIS DAN PERANCANGAN
3.1 Analisis Kebutuhan Sistem Hal pertama yang perlu dilakukan dalam analisis kebutuhan sistem adalah menentukan dan mengungkapkan kebutuhan sistem. Kebutuhan sistem terbagi menjadi dua yaitu kebutuhan sistem fungsional dan kebutuhan sistem non-fungsional, yang diperlukan untuk menemukan tujuan yang hendak dicapai. (Whitten, 2004, p212) 3.1.1 Kebutuhan Fungsional •
Sistem menerima masukan data secara manual atau dari disk.
•
Sistem dapat menentukan Candidate Key.
•
Sistem menerima penentuan Primary Key oleh user untuk beberapa Candidate Key.
•
Sistem dapat menentukan Functional Dependency.
•
Sistem menyediakan pilihan Functional Dependency untuk ditentukan oleh user.
•
Sistem menyediakan pilihan algoritma dekomposisi dan sintesis untuk dipilih oleh user.
•
Sistem dapat melakukan proses normalisasi bentuk pertama, kedua dan ketiga.
•
Sistem dapat menggambarkan diagram hubungan atau relasi antar entiti.
•
Sistem dapat menghasilkan kode SQL untuk tabel-tabel yang terbentuk.
•
Sistem dapat mengintegrasikan kode SQL langsung ke SQL Server.
48
49
Database Normalization Tool Open Project
Create Project
Import Table
Input Table Manual
Entry Data
Selecting Primary Key
Selecting FD User
Selecting Normalization Algorithms
Create Normal Form
Create ERD
Create SQL Code
Generate to SQL Server
View Normal Form
Gambar 3.1 Representasi Kebutuhan Fungsional dalam Diagram Use Case
50 Spesifikasi Use case •
Use case Create Project Use case ini menggambarkan proses user menggunakan sistem untuk membuat proyek baru. 1. User memilih menu New Project. 2. Sistem menampilkan layar Create Project. 3. User memasukkan nama proyek, deskripsi proyek dan pembuat proyek. 4. Sistem menampilkan pilihan input tabel.
•
Use case Open Project Use case ini menggambarkan proses user menggunakan sistem untuk membuka proyek yang pernah dibuat sebelumnya. 1. User memilih menu Open Project. 2. User memilih proyek mana yang akan dibuka. 3. Sistem menjalankan use case view.
•
Use case Import Table 1. User memilih basis data yang akan diimport. 2. Sistem menggunakan use case Entry Data. 3. Sistem menampilkan layar Entry Data.
•
Use case Input Table Manual 1. User membuat tabel secara manual. 2. Sistem menggunakan use case Entry Data. 3. Sistem menampilkan layar Entry Data.
51 •
Use case Entry Data Use case ini menggambarkan proses user menggunakan sistem untuk memasukkan data dalam tabel. 1. Sistem menampilkan data yang diimport dari disk atau user memasukkan data secara manual ke dalam tabel yang pernah dibuat sebelumnya. 2. Sistem menampilkan layar Primary Key.
•
Use case Selecting Primary Key 1. Sistem menampilkan pilihan PK. 2. User memilih PK yang disediakan oleh sistem.
•
Use case Selecting Functional Dependency 1. Sistem mendapatkan FD berdasarkan use case PK dan use case entry data. 2. User memilih FD yang sesuai. 3. Sistem menampilkan pilihan FD.
•
Use case Selecting Normalization Algorithms 1. User memilih algoritma yang diinginkan. 2. Sistem akan menampilkan layar Normal Form.
•
Use case Create Normal Form 1. Sistem mendapatkan tabel dalam bentuk normal berdasarkan use case FD. 2. Sistem menampilkan tabel normal 1NF, 2 NF, dan 3NF.
•
Use case Create ERD 1. Sistem mendapatkan diagram antar tabel berdasarkan use case Create Normal Form. 2. Sistem menampilkan diagram antar tabelnya.
52 •
Use case Create SQL Code 1. Sistem membuat kode SQL berdasarkan use case Create Normal Form. 2. Sistem menampilkan kode SQL untuk membuat tabel yang sudah normal.
•
Use case Generate to SQL Server 1. Sistem menampilkan pilihan bagi user 2. User memilih untuk menggeneralisasi kode SQL ke dalam SQL Server
•
Use case View Normal Form 1. Sistem menampilkan tabel normal berdasarkan use case Create NF 2. Sistem menampilkan ERD berdasarkan use case Create ERD 3. Sistem menampilkan kode SQL berdasarkan use case Create SQL 4. User dapat memilih tampilan yang diinginkan.
3.1.2 Kebutuhan non fungsional •
Sistem dikembangkan dengan platform desktop menggunakan Microsoft Visual
Basic 6.0 dengan database Microsoft Access. •
Sistem memiliki respon time yang relatif cepat.
•
Sistem memiliki tampilan layar yang user friendly.
53
3.2 Perancangan 3.2.1 Perancangan Basis Data Salah satu tahap utama dalam siklus hidup aplikasi basis data adalah perancangan basis data, yang dilakukan setelah menyelesaikan tahap analisa kebutuhan sistem. Proses perancangan basis data terbagi dalam tiga tahap yaitu: 3.2.1.1 Rancangan Basis Data Konseptual Rancangan basis data konseptual dibuat berdasarkan kebutuhan sistem yang telah dianalisis sebelumnya. Rancangan ini tidak tergantung pada detil-detil implementasi program. Rancangan basis data konseptual pada sistem normalisasi ini dapat dilihat pada gambar 3.2.
Gambar 3.2 Rancangan Basis Data Konseptual
54
3.2.1.2 Rancangan Basis Data Logikal Rancangan basis data logikal dirancang berdasarkan rancangan basis data tahap sebelumnya, yaitu rancangan konseptual. Rancangan logikal ini merupakan sumber informasi untuk tahap rancangan selanjutnya (rancangan fisikal) dan mempunyai peranan penting dalam proses maintenance suatu aplikasi basis data. Rancangan basis data logikal pada sistem normalisasi ini dapat dilihat pada gambar 3.3.
Gambar 3.3 Rancangan Basis Data Logikal
55
3.2.1.3 Rancangan Basis Data Fisikal Rancangan basis data fisikal dirancang berdasarkan detil-detil implementasi sehingga menghasilkan deskripsi implementasi basis data pada penyimpanan sekunder. Nama Tabel = Project Primary Key = prjID Tabel Project digunakan setiap kali user membuat sebuah proyek baru untuk menyimpan kode proyek, nama proyek beserta keterangannya, nama pembuat proyek dan tanggal pembuatan proyek.
Nama Kolom prjID prjName prjDesc prjAuthor prjCreateDate
Tipe Data Long Int Text Text Text Date/Time
Panjang 20 50 20 -
Keterangan Kode proyek Nama proyek Keterangan Nama pembuat Tanggal pembuatan
Nama Tabel = Entity Primary Key = entID Foreign Key = prjID Tabel Entity digunakan untuk menyimpan kode dan nama tabel yang dibuat dan memberikan tanda apakah tabel tersebut berada dalam 1NF, 2NF maupun 3NF. Nama Kolom entID
Tipe Data Long Int
prjID entName 1NF 2NF 3NF
Long Int Text Yes/No Yes/No Yes/No
Panjang 20 -
Keterangan Kode entiti Kode proyek Nama entiti Entiti termasuk 1NF Entiti termasuk 2NF Entiti termasuk 3NF
56 Nama Tabel = Attribute Primary Key = attrID Tabel Attribute digunakan untuk menyimpan semua atribut yang digunakan beserta tipe datanya, jumlah variasi data untuk setiap atribut dan memberi tanda apakah atribut tersebut terdapat nilai null.
Nama Kolom attrID attrName attrTotalVar NULLValue dataType maxLength
Tipe Data Long Int Text Long Int Yes/No Text Integer
Panjang 20 20 -
Keterangan Kode atribut Nama atribut Jumlah variasi data Terdapat nilai NULL Tipe data Panjang Maximum untuk tipe data Text
Nama Tabel = AttrEntity Primary Key = entID, attrID Foreign Key = entID, attrID Tabel AttrEntity digunakan untuk menghubungkan tabel Entity dan tabel Attribute, dan memberikan tanda apakah atribut dari entiti yang bersangkutan merupakan primary key atau bukan. Nama Kolom entID attrID primaryKey
Tipe Data Long Int Long Int Yes/No
Nama Tabel = FD Primary Key = fdID Foreign Key = entID
Panjang -
Keterangan Kode entiti Kode atribut Merupakan primary key atau bukan
57 Tabel FD digunakan untuk menyimpan kode ketergantungan fungsional dan kode entiti. Nama Kolom fdID entID
Tipe Data Long Int
Panjang -
Long Int
-
Keterangan Kode ketergantungan fungsional Kode entiti
Nama Tabel = DependentFD Primary Key = fdID, attrID Foreign Key = fdID, attrID Tabel DependentFD digunakan untuk menyimpan kode ketergantungan fungsional dan kode atribut agar dapat mengetahui atribut-atribut yang menjadi dependent dari masing-masing ketergantungan fungsional. Nama Kolom fdID
Tipe Data Long Int
attrID
Long Int
Panjang -
Keterangan Kode ketergantungan fungsional Kode atribut
Nama Tabel = DeterminantFD Primary Key = fdID, attrID Foreign Key = fdID, attrID Tabel DeterminantFD digunakan untuk menyimpan kode ketergantungan fungsional dan kode atribut agar dapat mengetahui atribut-atribut yang menjadi determinant dari masing-masing ketergantungan fungsional. Nama Kolom fdID
Tipe Data Long Int
Panjang -
attrID
Long Int
-
Keterangan Kode ketergantungan fungsional Kode atribut
58 Nama Tabel = Data Primary Key = DataID Foreign Key = entID, attrID Tabel Data digunakan untuk menyimpan semua data (Value) secara perbaris (rowNumber) untuk masing-masing atribut (attrID) dari tiap entiti (entID). Nama Kolom DataID entID attrID rowNumber Value
Tipe Data Long Int Long Int Long Int Long Int Memo
Panjang -
Keterangan Kode data Kode entiti Kode atribut Urutan baris Nilai data
3.2.2 Perancangan Proses Perancangan proses ini menggunakan pseudocode dan diagram alir (flowchart). Proses yang dirancang meliputi proses pembentukan UNF menjadi 3NF, pencarian candidate key dan ketergantungan fungsional, bentuk normal kedua dan ketiga pada dekomposisi serta bentuk normal ketiga pada sintesis, diagram hubungan antar tabel dan kode SQL.
59
3.2.2.1 Rancangan Proses UNF menjadi 3NF
Start Input data / import data Unormalized Form (UNF) Search for candidate key Search for Functional Dependency Synthesis or Decomposition? Synthesis Algorithm
Decomposition Algorithm
Normal Form (3NF) Stop
Gambar 3.4 Diagram alir proses UNF menjadi 3NF
60
3.2.2.2 Rancangan Proses Import Table Modul import table Minta input database name Minta input database username Minta input database password Lakukan koneksi ke database Query untuk mengambil schema tabel dari database Lakukan perulangan sebanyak tabel yang ada Jika tipe tabel = tabel maka Masukkan nama tabel kedalam list Akhir jika Akhir perulangan Jika list tidak kosong maka Tombol next di aktifkan Selain itu Tombol next di nonaktifkan Akhir jika Akhir modul
61 Start
Enter database name, username, and password
Connect to Database End of Table ?
No
Input table to listbox
Yes
List = empty ?
No
Button Next Active
Yes
Button Next non-Active
Stop
Gambar 3.5 Diagram Alir Import Table
62
3.2.2.3 Rancangan Proses Pencarian Candidate Key Modul candidate key Inisialisasi field candidate key Minta input minimum kombinasi Minta input maksimum kombinasi Lakukan perulangan dari minimum kombinasi sampai dengan maksimum kombinasi Lakukan kombinasi Lakukan perulangan sebanyak jumlah kombinasi yang dihasilkan Baca field ke i hasil kombinasi Jika jumlah variasi record = jumlah record maka Field ke i = candidate key Selain itu Field ke i bukan candidate key Akhir jika Akhir perulangan Akhir perulangan Akhir modul
63
Gambar 3.6 Diagram alir pencarian candidate key
64
3.2.2.4 Rancangan Proses Pencarian Functional Dependency Modul functional dependency Inisialisasi field dependent Lakukan perulangan sebanyak jumlah field dependent Baca field dependent Inisialisasi field determinant untuk 1 field Jika jumlah variasi nilai field > 1 untuk setiap nilai field determinant maka Field dependent tidak mempunyai ketergantungan fungsional terhadap field determinant Selain itu Field dependent mempunyai ketergantungan fungsional terhadap field determinant Akhir jika Akhir perulangan Jika jumlah field PK > 1 maka Inisialisasi field determinant Lakukan perulangan sebanyak jumlah field dependent Baca field dependent Lakukan kombinasi sebanyak jumlah field PK - 1 Lakukan perulangan sebanyak jumlah hasil kombinasi Jika ada jumlah variasi nilai field dependent > 1 untuk setiap nilai field determinant maka
65 Field dependent tidak mempunyai ketergantungan fungsional terhadap field determinant Selain itu Field dependent mempunyai ketergantungan fungsional terhadap field determinant Akhir jika Akhir perulangan Akhir perulangan Akhir jika Akhir modul
66
Gambar 3.7 Diagram Alir pencarian Functional Dependency
67
3.2.2.5 Rancangan Proses Bentuk Normal Kedua pada Dekomposisi Awal modul 2NF Baca tabel 1NF Cari FD yang determinant = PK atau bagian PK Jika jumlah FD = 1 maka tabel = tabel 2NF Selain itu Lakukan perulangan sebanyak jumlah FD Buat tabel baru Lakukan perulangan sebanyak jumlah field determinant Masukkan determinant jadi field tabel baru sebagai PK Akhir perulangan Lakukan perulangan sebanyak jumlah field dependent Baca field dependent Masukkan dependent jadi field tabel baru Lakukan perulangan selama field dependent = determinant Ambil dependent untuk dijadikan field tabel baru Akhir perulangan Akhir perulangan Akhir perulangan Akhir jika Akhir modul
68
Gambar 3.8 Diagram Alir Bentuk Normal Kedua Pada Dekomposisi
69
3.2.2.6 Rancangan Proses Bentuk Normal Ketiga pada Dekomposisi Awal modul 3NF Baca tabel 2NF Lakukan perulangan sebanyak jumlah tabel Cari FD yang terdapat dalam tabel ke i Jika jumlah FD = 1 maka Tabel = tabel 3NF Selain itu Lakukan perulangan sebanyak jumlah FD Buat tabel baru Ambil semua field determinant untuk dijadikan field tabel baru sebagai PK Ambil semua field dependent untuk dijadikan field tabel baru Akhir perulangan Akhir jika Akhir perulangan Akhir modul
70
Gambar 3.9 Diagram Alir Bentuk Normal Ketiga Pada Dekomposisi
71
3.2.2.7 Rancangan Proses Bentuk Normal Ketiga pada Sintesis Awal modul 3NF Baca tabel 1NF Baca FD dari tabel 1NF Lakukan perulangan sebanyak jumlah FD Baca field determinantFD = PK If jumlah determinantFD > 0 maka Lakukan perulangan sebanyak jumlah field determinantFD Ambil semua field determinant untuk dijadikan field tabel baru sebagai PK Akhir perulangan Baca field dependentFD If jumlah dependentFD > 0 maka Lakukan perulangan sebanyak jumlah field dependentFD Ambil semua field dependent untuk dijadikan field berikutnya pada tabel tersebut Akhir perulangan Akhir jika Akhir jika Akhir perulangan Akhir modul
72 Start
Read table 1NF
Read FD from table 1NF
Amount FD > = 1
Yes
Read DeterminantFD = PK
Amount DeterminantFD > 0 ? Yes End of field determinant ?
No
Get all determinant as field of new table as PK
Yes No
Read DependentFD
Amount DependentFD > 0 ? Yes End of field dependent ? Stop
No
Get all dependent as field of new table
Yes
Gambar 3.10 Diagram Alir Bentuk Normal Ketiga Pada Sintesis
73
3.2.2.8 Rancangan Proses Diagram Hubungan antar Entiti (ERD) Awal modul ERD Jika ada tabel pada 3NF maka Ambil semua tabel 3NF Selain itu ada tabel pada 2NF maka Ambil semua tabel 2NF Selain itu Ambil tabel 1NF Akhir jika Lakukan perulangan sebanyak jumlah tabel Baca semua field Buat node Akhir perulangan Lakukan perulangan sebanyak jumlah node Jika field pada node berada pada tabel lain sebagai PK maka hubungkan node tersebut Akhir jika Akhir perulangan Akhir modul
74
Gambar 3.11 Diagram Alir ERD 3.2.2.9 Rancangan Proses Kode SQL Awal modul kodeSQL Jika ada tabel pada 3NF maka Ambil semua tabel 3NF Selain itu ada tabel pada 2NF maka Ambil semua tabel 2NF Selain itu Ambil tabel 1NF Akhir jika Lakukan perulangan sebanyak jumlah tabel sql = ””
75 sql_PK = “PRIMARY KEY” Tambahkan “CREATE TABLE” ke dalam sql Lakukan perulangan sebanyak jumlah field Tambahkan field dan tipe data ke dalam sql Jika tipe data = “TEXT” tambahkan panjang maksimal tipe data ke dalam sql Jika tidak ada field yang bernilai NULL maka Tambahkan “NOT NULL” ke dalam sql Akhir jika Jika field = PK maka Tambahkan field ke dalam sql_PK Akhir jika Jika field sebagai foreign key maka Tambahkan “REFERENCE” ke dalam sql Tambahkan nama tabel referensi ke dalam sql Akhir jika Akhir perulangan Cetak sql dan sql_PK Akhir perulangan Akhir modul
76
Gambar 3.12 Diagram Alir Kode SQL
77 3.2.3 Perancangan Layar 3.2.3.1 Rancangan Layar pada Menu Utama
Gambar 3.13 Rancangan Layar Menu Utama Rancangan ini berjudul Database Normalization Tool. Layar ini terdiri dari layar yang masih kosong dengan dua pilihan menu yaitu menu File dan Help.
78 3.2.3.2 Rancangan Layar pada Menu File
Gambar 3.14 Rancangan Layar Menu File Rancangan ini berjudul Database Normalization Tool untuk pilihan menu File yang terdiri dari empat pilihan menu drop-down yaitu New Project, Open Project, Close Project dan Exit.
79 3.2.3.3 Rancangan Layar pada Menu Help
Gambar 3.15 Rancangan Layar Menu Help Rancangan ini berjudul Database Normalization Tool untuk pilihan menu Help yang terdiri dari dua pilihan menu drop-down yaitu Help dan About.
80 3.2.3.4 Rancangan Layar pada Create Project
Gambar 3.16 Rancangan Layar Create Project Rancangan ini berjudul Create Project. Layar ini terdiri atas lima text box dimana text box untuk project ID otomatis terisi dan user hanya memasukkan Project Name, Project Description, Project Author, dan Project Date setelah itu tekan tombol OK atau Cancel.
81 3.2.3.5 Rancangan Layar pada Input Table
Gambar 3.17 Rancangan Layar Input Table Rancangan ini berjudul Input Table. Layar ini terdiri dari dua pilihan yaitu Input Table Manually dan Import Table serta tombol OK dan Cancel.
82 3.2.3.6 Rancangan Layar pada Menu Import Data
Gambar 3.18 Rancangan Layar Menu Import Data Rancangan ini berjudul Import Data. Layar ini terdiri atas empat masukan untuk Data Source, Database Name, User Name dan Password serta tombol Connect dan Next.
83 3.2.3.7 Rancangan Layar pada Menu Create Table
Gambar 3.19 Rancangan Layar Menu Create Table Rancangan ini berjudul Create Table. Layar ini terdiri atas text box untuk masukan Table Name dan Number of fields. Tombol OK akan menampilkan field-field sebanyak jumlah number of. Tombol Prev Fields untuk menampilkan field-field sebelumnya yang telah diinput, tombol Next Fields untuk menampilkan field-field selanjutnya dan tombol Next Step akan melanjutkan ke layar Input Table.
84 3.2.3.8 Rancangan Layar pada Menu Input Data
Gambar 3.20 Rancangan Layar Menu Input Data Rancangan ini berjudul Input Data. Layar ini terdiri atas tabel untuk memasukkan data. Tombol Next Step akan melanjutkan ke layar Primary Key.
85 3.2.3.9 Rancangan Layar pada Menu Primary Key
Gambar 3.21 Rancangan Layar Menu Primary Key Rancangan ini berjudul Primary Key. Layar ini terdiri dari
text box untuk
masukan nilai maksimum dan minimum kombinasi candidate key yang diinginkan user. Tombol Analyze menjalankan proses analisa data. List Box untuk menampilkan hasil candidate key. Tombol next untuk melanjutkan ke layar Functional Dependency.
86 3.2.3.10 Rancangan Layar pada Menu Functional Dependency
Gambar 3.22 Rancangan Layar Menu Functional Dependency Rancangan ini berjudul Functional Dependency. Layar ini terdiri dari tab-tab yang didalamnya terdiri atas list box untuk menampilkan functional dependency yang telah dianalisa. Pada layar ini juga terdapat dua pilihan algoritma yaitu Dekomposisi dan Sintesis yang dapat dipilih oleh user. Tombol Next Step akan melanjutkan ke layar Normal Form.
87 3.2.3.11 Rancangan Layar pada Menu Normal Form dengan Algoritma Dekomposisi
Gambar 3.23 Rancangan Layar Menu Normal Form dengan Dekomposisi Rancangan ini berjudul Normal Form. Layar ini terdiri dari tab-tab yang didalamnya terdapat combo box untuk memilih entiti normal form dan text box untuk menampilkan primary key serta tabel-tabel untuk normal form. Tombol Next Step melanjutkan ke layar ERD.
88 3.2.3.12 Rancangan Layar pada Menu Normal Form dengan Algoritma Sintesis
Gambar 3.24 Rancangan Layar Menu Normal Form dengan Sintesis Rancangan ini berjudul Normal Form. Layar ini terdiri dari dua tab saja yang didalamnya terdapat combo box untuk memilih entiti normal form yakni 1NF dan 3NF serta text box untuk menampilkan primary key serta tabel-tabel untuk normal form. Tombol Next Step melanjutkan ke layar ERD.
89 3.2.3.13 Rancangan Layar pada Menu ERD
Gambar 3.25 Rancangan Layar Menu ERD Rancangan ini berjudul ERD. Layar ini menampilkan diagram hubungan antar entity. Tombol Next akan melanjutkan ke layar SQL Code.
90 3.2.3.14 Rancangan Layar pada Menu SQL Code
Gambar 3.26 Rancangan Layar Menu SQL Code Rancangan ini berjudul SQL Code. Layar ini terdiri dari list box untuk menampilkan kode–kode SQL, tombol Generate untuk menghasilkan kode-kode SQL serta tombol Save untuk menyimpan hasil analisa.
91
3.2.4 Perancangan Algoritma Untuk menilai dua algoritma yang berbeda dapat diukur dengan menghitung kompleksitas waktu yang dibutuhkan komputer untuk mengeksekusi algoritma. Proses untuk menghitung kompleksitas algoritma ini terbagi dalam beberapa tahap, antara lain: 3.2.4.1 Perancangan Algoritma pada Pencarian Candidate Key Statement
s/e
Frequency
Total steps
n=0
n >0
n=0
n>0
0
0
0
O(0)
O(0)
Inisialisasi field candidate key
1
1
1
O(1)
O(1)
Minta input minimum kombinasi
1
1
1
O(1)
O(1)
Minta input maksimum kombinasi
1
1
1
O(1)
O(1)
Lakukan perulangan dari
1
n+1
n+1
O(n)
O(n)
Lakukan kombinasi
1
n
n
O(n)
O(n)
Lakukan perulangan sebanyak
1
n(n+1)
n(n+1)
O(n2)
O(n2)
Baca field ke i hasil kombinasi
1
n2
n2
O(n2)
O(n2)
Jika jumlah variasi record =
1
n2
n2
O(n2)
O(n2)
1
n2
0
O(n2)
O(0)
1
0
n2
O(0)
O(n2)
0
0
0
O(0)
O(0)
0
0
0
O(0)
O(0)
0
0
0
O(0)
O(0)
0
0
0
O(0)
O(0)
4n2 + 3n
4n2 + 3n
O(n2)
O(n2)
+4
+4
Modul candidate key
minimum kombinasi sampai dengan maksimum kombinasi
jumlah kombinasi yang dihasilkan
jumlah record maka Field ke i = candidate key Selain itu Field ke i bukan candidate key Akhir jika Akhir perulangan Akhir perulangan Akhir modul
Total
Tabel 3.1 Tabel Perancangan Algoritma Pada Pencarian Candidate Key
92
3.2.4.2 Perancangan Algoritma pada Pencarian Functional Dependency Statement
s/e
Frequency
Total steps
n=0
n >0
n=0
n>0
Modul functional dependency
0
0
0
O(0)
O(0)
Inisialisasi field dependent
1
1
1
O(n)
O(n)
Lakukan perulangan sebanyak jumlah field
1
n+1
n+1
O(n)
O(n)
Baca field dependent
1
n
n
O(n)
O(n)
Inisialisasi field determinant untuk 1 Field
1
n
n
O(n)
O(n)
Jika jumlah variasi nilai field > 1 untuk
1
n
n
O(n)
O(n)
1
n
0
O(n)
O(0)
1
0
n
O(0)
O(n)
0
0
0
O(0)
O(0)
Akhir perulangan
0
0
0
O(0)
O(0)
Jika jumlah field PK > 1 maka
1
1
1
O(1)
O(1)
Inisialisasi field determinant
1
1
1
O(1)
O(1)
Lakukan perulangan sebanyak
1
n+1
n+1
O(n)
O(n)
Baca field dependent
1
n
n
O(n)
O(n)
Lakukan kombinasi sebanyak
1
n
n
O(n)
O(n)
1
n(n+1)
n(n+1)
O(n2)
O(n2)
1
n2
n2
O(n2)
O(n2)
1
n2
0
O(n2)
O(0)
dependent
setiap nilai field determinant maka Field dependent tidak mempunyai ketergantungan fungsional terhadap field determinant Selain itu Field dependent mempunyai ketergantungan fungsional terhadap field determinant Akhir jika
jumlah field dependent
jumlah field PK – 1 Lakukan perulangan sebanyak jumlah hasil kombinasi Jika ada jumlah variasi nilai field dependent > 1 untuk setiap nilai field determinant maka Field dependent tidak Mempunyai ketergantungan
93 fungsional terhadap field determinant Selain itu 1
0
n2
O(0)
O(n2)
Akhir jika
0
0
0
O(0)
O(0)
Akhir perulangan
0
0
0
O(0)
O(0)
0
0
0
O(0)
O(0)
0
0
0
O(0)
O(0)
0
0
0
O(0)
O(0)
3n2 + 9n
3n2 + 9n
O(n2)
O(n2)
+5
+5
Field dependent mempunyai ketergantungan fungsional terhadap field determinant
Akhir perulangan Akhir jika Akhir modul
Total
Tabel 3.2 Tabel Perancangan Algoritma Pada Pencarian Functional Dependency
94
3.2.4.3 Perancangan Algoritma pada Bentuk Normal Kedua (Dekomposisi) Statement
s/e
Frequency
Total steps
N = n >0
n=0
n>0
0 Awal modul 2NF
0
0
0
O(0)
O(0)
Baca tabel 1NF
1
1
1
O(1)
O(1)
Cari FD yang determinant = PK atau bagian PK
1
1
0
O(1)
O(n)
Jika jumlah FD = 1 maka
1
1
0
O(1)
O(n)
tabel = tabel 2NF
1
1
0
O(1)
O(0)
1
0
n+1
O(0)
O(n)
Buat tabel baru
1
0
n
O(0)
O(n)
Lakukan perulangan sebanyak jumlah field
1
0
n(n+1)
O(0)
O(n2)
1
0
n2
O(0)
O(n2)
Akhir perulangan
0
0
0
O(0)
Lakukan perulangan sebanyak jumlah field
1
0
n(n+1)
O(0)
O(n2)
Baca field dependent
1
0
n2
O(0)
O(n2)
Masukkan dependent jadi field tabel baru
1
0
n2
O(0)
O(n2)
Lakukan perulangan selama field dependent =
1
Selain itu Lakukan perulangan sebanyak jumlah FD
determinan
Masukkan determinant jadi field tabel baru sebagai PK
dependent
n2(n+1)
O(n3)
determinan Ambil dependent untuk dijadikan field tabel
1
0
n3
O(0)
O(n3)
0
0
0
O(0)
O(0)
0
0
0
O(0)
O(0)
0
0
0
O(0)
O(0)
0
0
0
O(0)
O(0)
0
0
0
O(0)
O(0)
4
2n3 +6n2 +
O(1)
O(n3)
baru Akhir perulangan Akhir perulangan Akhir perulangan Akhir jika Akhir modul
Total
4n + 3
Tabel 3.3 Tabel Perancangan Algoritma Bentuk Normal Kedua dengan Dekomposisi
95 3.2.4.4 Perancangan Algoritma pada Bentuk Normal Ketiga (Dekomposisi) Statement
s/e
Frequency
Total steps
n=0
n >0
n=0
n>0
0
0
0
O(0)
O(0)
Baca tabel 2NF
1
1
1
O(1)
O(1)
Lakukan perulangan sebanyak jumlah tabel
1
n+1
n+1
O(n)
O(n)
Cari FD yang terdapat dalam tabel ke i
1
n
n
O(n)
O(n)
Jika jumlah FD = 1 maka
1
n
0
O(n)
O(0)
1
n
0
O(n)
O(0)
1
0
n(n+1)
O(0)
O(n2)
1
0
n2
O(0)
O(n2)
1
0
n2
O(0)
O(n2)
1
0
n2
O(0)
O(n2)
0
0
0
O(0)
O(0)
0
0
0
O(0)
O(0)
0
0
0
O(0)
O(0)
0
0
0
O(0)
O(0)
4n+2
4n2+3n+2
O(n)
O(n2)
Awal modul 3NF
Tabel = tabel 3NF Selain itu Lakukan perulangan sebanyak jumlah FD Buat tabel baru Ambil semua field determinan untuk dijadikan field tabel baru sebagai PK Ambil semua field dependent
untuk
dijadikan field tabel baru Akhir perulangan Akhir jika Akhir perulangan Akhir modul
Total
Tabel 3.4 Tabel Perancangan Algoritma Bentuk Normal Ketiga dengan Dekomposisi
96
3.2.4.5 Perancangan Algoritma pada Bentuk Normal Ketiga (Sintesis) Statement
s/e
Frequency
Total steps
Awal modul 3 NF
0
0
O(0)
Baca Tabel 1 NF
1
1
O(1)
Baca FD dari Tabel 1NF
1
1
O(n)
Lakukan perulangan sebanyak FN
1
n+1
O(n)
Baca Field determinant FD = PK
1
n
O(n)
If jumlah determinan FD > 0 maka
1
n
O(n)
1
n(n+1)
O(n2)
1
n(n)
O(n2)
Akhir perulangan
0
0
O(0)
Baca field dependentFD
1
n
O(n)
If jumlah dependentFD > 0 maka
1
n
O(n)
Lakukan perulangan sebanyak jumlah field dependentFD
1
n(n+1)
O(n)
Ambil semua field dependent untuk dijadikan field
1
n
O(n)
0
0
O(0)
0
0
O(0)
0
0
O(0)
0
0
O(0)
0
0
O(0)
3n2+8n+3
O(n2)
Lakukan perulangan sebanyak jumlah jumlah field determinanFD Ambil semua field determinan untuk dijadikan field tabel baru sebagai PK
berikutnya pada tabel tersebut Akhir perulangan Akhir jika Akhir jika Akhir perulangan Akhir modul
Total
Tabel 3.5 Tabel Perancangan Algoritma Bentuk Normal Ketiga dengan Sintesis
97 Big O yang didapat dari kedua algoritma yakni : Dekomposisi = O(n3) Sintesis
= O(n2)
Time Complexity : Dekomposisi = (4n2 + 3n + 4) + (3n2 + 9n + 5) + (2n3 + 6n2 + 4n + 3) + (4n2 + 3n + 2) = 2n3 + 17n2 + 19n + 14 Sintesis
= (4n2 + 3n + 4) + (3n2 + 9n + 5) + (3n2+8n+3) = 10n2 + 20n + 12
Jadi algoritma sintesis membutuhkan waktu O(n2), maka itu lebih cepat daripada waktu yang dibutuhkan oleh algoritma dekomposisi O(n3).