BAB 3 ANALISIS DAN PERANCANGAN 3. 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, 24, p22) 3.. 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. Representasi Kebutuhan Fungsional dalam Diagram Use Case
5 Spesifikasi Use case Use case Create Project Use case ini menggambarkan proses user menggunakan sistem untuk membuat proyek baru.. 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.. User memilih menu Open Project. 2. User memilih proyek mana yang akan dibuka. 3. Sistem menjalankan use case view. Use case Import Table. 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. User membuat tabel secara manual. 2. Sistem menggunakan use case Entry Data. 3. Sistem menampilkan layar Entry Data.
5 Use case Entry Data Use case ini menggambarkan proses user menggunakan sistem untuk memasukkan data dalam tabel.. 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. Sistem menampilkan pilihan PK. 2. User memilih PK yang disediakan oleh sistem. Use case Selecting Functional Dependency. 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. User memilih algoritma yang diinginkan. 2. Sistem akan menampilkan layar Normal Form. Use case Create Normal Form. Sistem mendapatkan tabel dalam bentuk normal berdasarkan use case FD. 2. Sistem menampilkan tabel normal NF, 2 NF, dan 3NF. Use case Create ERD. Sistem mendapatkan diagram antar tabel berdasarkan use case Create Normal Form. 2. Sistem menampilkan diagram antar tabelnya.
52 Use case Create SQL Code. 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. Sistem menampilkan pilihan bagi user 2. User memilih untuk menggeneralisasi kode SQL ke dalam SQL Server Use case View Normal Form. 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..2 Kebutuhan non fungsional Sistem dikembangkan dengan platform desktop menggunakan Microsoft Visual Basic 6. dengan database Microsoft Access. Sistem memiliki respon time yang relatif cepat. Sistem memiliki tampilan layar yang user friendly.
53 3.2 Perancangan 3.2. 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.. 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..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..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 Tipe Data Panjang Keterangan prjid Long Int - Kode proyek prjname Text 2 Nama proyek prjdesc Text 5 Keterangan prjauthor Text 2 Nama pembuat prjcreatedate Date/Time - 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 NF, 2NF maupun 3NF. Nama Kolom Tipe Data Panjang Keterangan entid Long Int - Kode entiti prjid Long Int - Kode proyek entname Text 2 Nama entiti NF Yes/No - Entiti termasuk NF 2NF Yes/No - Entiti termasuk 2NF 3NF Yes/No - 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 Tipe Data Panjang Keterangan attrid Long Int - Kode atribut attrname Text 2 Nama atribut attrtotalvar Long Int - Jumlah variasi data NULLValue Yes/No - Terdapat nilai NULL datatype Text 2 Tipe data maxlength Integer - 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 Tipe Data Panjang Keterangan entid Long Int - Kode entiti attrid Long Int - Kode atribut primarykey Yes/No - Merupakan primary key atau bukan Nama Tabel = FD Primary Key = fdid Foreign Key = entid
57 kode entiti. Tabel FD digunakan untuk menyimpan kode ketergantungan fungsional dan Nama Kolom Tipe Data Panjang Keterangan fdid Long Int - Kode ketergantungan fungsional entid Long Int - 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 Tipe Data Panjang Keterangan fdid Long Int - Kode ketergantungan fungsional attrid Long Int - 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 Tipe Data Panjang Keterangan fdid Long Int - Kode ketergantungan fungsional attrid Long Int - 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 Tipe Data Panjang Keterangan DataID Long Int - Kode data entid Long Int - Kode entiti attrid Long Int - Kode atribut rownumber Long Int - Urutan baris Value Memo - 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. 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
6 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 Jika list tidak kosong maka Tombol next di aktifkan Selain itu Tombol next di nonaktifkan Akhir jika Akhir modul
6 Start Enter database name, username, and password Connect to Database End of Table? Yes List = empty? Yes Button Next non-active No No Input table to listbox Button Next 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 modul
Gambar 3.6 Diagram alir pencarian candidate key 63
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 field Jika jumlah variasi nilai field > 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 Jika jumlah field PK > maka Inisialisasi field determinant Lakukan perulangan sebanyak jumlah field dependent Baca field dependent Lakukan kombinasi sebanyak jumlah field PK - Lakukan perulangan sebanyak jumlah hasil kombinasi Jika ada jumlah variasi nilai field dependent > 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 jika Akhir modul
Gambar 3.7 Diagram Alir pencarian Functional Dependency 66
67 3.2.2.5 Rancangan Proses Bentuk Normal Kedua pada Dekomposisi Awal modul 2NF Baca tabel NF Cari FD yang determinant = PK atau bagian PK Jika jumlah FD = 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 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 jika Akhir modul
Gambar 3.8 Diagram Alir Bentuk Normal Kedua Pada Dekomposisi 68
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 = 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 jika Akhir modul
Gambar 3.9 Diagram Alir Bentuk Normal Ketiga Pada Dekomposisi 7
7 3.2.2.7 Rancangan Proses Bentuk Normal Ketiga pada Sintesis Awal modul 3NF Baca tabel NF Baca FD dari tabel NF Lakukan perulangan sebanyak jumlah FD Baca field determinantfd = PK If jumlah determinantfd > maka Lakukan perulangan sebanyak jumlah field determinantfd Ambil semua field determinant untuk dijadikan field tabel baru sebagai PK Baca field dependentfd If jumlah dependentfd > maka Lakukan perulangan sebanyak jumlah field dependentfd Ambil semua field dependent untuk dijadikan field berikutnya pada tabel tersebut Akhir jika Akhir jika Akhir modul
72 Start Read table NF Read FD from table NF Amount FD > = Yes Read DeterminantFD = PK Amount DeterminantFD >? Yes No End of field determinant? Yes Read DependentFD No Get all determinant as field of new table as PK Amount DependentFD >? Yes End of field dependent? No Get all dependent as field of new table Stop Yes Gambar 3. 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 NF Akhir jika Lakukan perulangan sebanyak jumlah tabel Baca semua field Buat node Lakukan perulangan sebanyak jumlah node Jika field pada node berada pada tabel lain sebagai PK maka hubungkan node tersebut Akhir jika Akhir modul
74 Gambar 3. 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 NF 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 Cetak sql dan sql_pk Akhir modul
Gambar 3.2 Diagram Alir Kode SQL 76
77 3.2.3 Perancangan Layar 3.2.3. Rancangan Layar pada Menu Utama Gambar 3.3 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.4 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.5 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.
8 3.2.3.4 Rancangan Layar pada Create Project Gambar 3.6 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.
8 3.2.3.5 Rancangan Layar pada Input Table Gambar 3.7 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.8 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.9 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.2 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.2 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. 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. 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.2 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 NF 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.3 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.
9 3.2.3.4 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.
9 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. Perancangan Algoritma pada Pencarian Candidate Key Statement 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 modul s/e Frequency Total steps n = n > n = n > O() O() O() O() O() O() O() O() n+ n+ n n n(n+) n(n+) O(n 2 ) O(n 2 ) n 2 n 2 n 2 n 2 n 2 O(n 2 ) O() n 2 O(n 2 ) O(n 2 ) O(n 2 ) O(n 2 ) O() O(n 2 ) O() O() O() O() O() O() O() O() Total 4n 2 + 3n + 4 4n 2 + 3n + 4 O(n 2 ) O(n 2 ) Tabel 3. 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 = n > n = n > Modul functional dependency O() O() Inisialisasi field dependent Lakukan perulangan sebanyak jumlah field n + n + dependent Baca field dependent n n Inisialisasi field determinant untuk Field n n Jika jumlah variasi nilai field > untuk n n setiap nilai field determinant maka Field dependent tidak n O() mempunyai ketergantungan fungsional terhadap field determinant Selain itu Field dependent mempunyai n O() ketergantungan fungsional terhadap field determinant Akhir jika O() O() O() O() Jika jumlah field PK > maka O() O() Inisialisasi field determinant O() O() Lakukan perulangan sebanyak n + n + jumlah field dependent Baca field dependent n n Lakukan kombinasi sebanyak n n jumlah field PK Lakukan perulangan sebanyak n(n+) n(n+) O(n 2 ) O(n 2 ) jumlah hasil kombinasi Jika ada jumlah variasi nilai n 2 n 2 O(n 2 ) O(n 2 ) field dependent > untuk setiap nilai field determinant maka Field dependent tidak n 2 O(n 2 ) O() Mempunyai ketergantungan
93 fungsional terhadap field determinant Selain itu Field dependent mempunyai n 2 O() O(n 2 ) ketergantungan fungsional terhadap field determinant Akhir jika O() O() O() O() O() O() Akhir jika O() O() Akhir modul O() O() Total 3n 2 + 9n + 5 3n 2 + 9n + 5 O(n 2 ) O(n 2 ) 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 > n = n > Awal modul 2NF O() O() Baca tabel NF O() O() Cari FD yang determinant = PK atau bagian PK O() Jika jumlah FD = maka O() tabel = tabel 2NF O() O() Selain itu Lakukan perulangan sebanyak jumlah FD n + O() Buat tabel baru n O() Lakukan perulangan sebanyak jumlah field n(n+) O() O(n 2 ) determinan Masukkan determinant jadi field tabel baru n 2 O() O(n 2 ) sebagai PK O() Lakukan perulangan sebanyak jumlah field n(n+) O() O(n 2 ) dependent Baca field dependent Masukkan dependent jadi field tabel baru Lakukan perulangan selama field dependent = n 2 n 2 n 2 (n+) O() O() O(n 2 ) O(n 2 ) O(n 3 ) determinan Ambil dependent untuk dijadikan field tabel n 3 O() O(n 3 ) baru O() O() O() O() O() O() Akhir jika O() O() Akhir modul O() O() Total 4 2n 3 +6n 2 + 4n + 3 O() O(n 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 Awal modul 3NF Baca tabel 2NF Lakukan perulangan sebanyak jumlah tabel Cari FD yang terdapat dalam tabel ke i Jika jumlah FD = maka 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 jika Akhir modul s/e Frequency Total steps n = n > n = n > n+ n n n n+ n n(n+) O() O() O() O() O() O() O() O(n 2 ) n 2 n 2 n 2 O() O(n 2 ) O() O(n 2 ) O() O(n 2 ) O() O() O() O() O() O() O() O() Total 4n+2 4n 2 +3n+2 O(n 2 ) 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 Baca Tabel NF Baca FD dari Tabel NF Lakukan perulangan sebanyak FN Baca Field determinant FD = PK If jumlah determinan FD > maka Lakukan perulangan sebanyak jumlah jumlah field determinanfd Ambil semua field determinan untuk dijadikan field tabel baru sebagai PK Baca field dependentfd If jumlah dependentfd > maka Lakukan perulangan sebanyak jumlah field dependentfd Ambil semua field dependent untuk dijadikan field berikutnya pada tabel tersebut Akhir jika Akhir jika n+ n n n(n+) n(n) n n n(n+) n O() O() O(n 2 ) O(n 2 ) O() O() O() O() O() Akhir modul O() Total 3n 2 +8n+3 O(n 2 ) Tabel 3.5 Tabel Perancangan Algoritma Bentuk Normal Ketiga dengan Sintesis
97 Big O yang didapat dari kedua algoritma yakni : Dekomposisi = O(n 3 ) Sintesis = O(n 2 ) Time Complexity : Dekomposisi = (4n 2 + 3n + 4) + (3n 2 + 9n + 5) + (2n 3 + 6n 2 + 4n + 3) + (4n 2 + 3n + 2) = 2n 3 + 7n 2 + 9n + 4 Sintesis = (4n 2 + 3n + 4) + (3n 2 + 9n + 5) + (3n 2 +8n+3) = n 2 + 2n + 2 Jadi algoritma sintesis membutuhkan waktu O(n 2 ), maka itu lebih cepat daripada waktu yang dibutuhkan oleh algoritma dekomposisi O(n 3 ).