MODUL 1
Dasar-Dasar MYSQL dan Normalisasi
Tujuan
1. Mampu menentukan key yang tepat
2. Mampu melakukan normalisasi terhadap suatu sistem yang benar 3. ....
Tugas Pendahuluan
1. Sebutkan dan jelaskan dengan rinci tahapan-tahapan yang semestinya dilakukan dalam pembuatan suatu program basis data.
2. Sebutkan dan jelaskan dengan rinci tahapan-tahapan yang semestinya dilakukan dalam proses normalisasi, berikan contoh untuk menggambarkan proses yang terjadi di setiap tahapan normalisasi.
3.
Sebutkan macam-macam tipe data yang ada dalam MySQL serta kebutuhan memory dan penggunaannya dengan jelas.4.
Sebutkan kegunaan key dalam suatu tabel. Lalu sebutkan dan jelaskan macam - macam key yang ada dalam konsep basis data.5.
Sebutkan dan jelaskan macam-macam relationship (keterhubungan) yang ada dalam konsep basis data.6. Sebutkan dan jelaskan masing-masing relationship (keterhubungan) yang terdapat pada basis data.
Nama : Yoachim Fabio Marcello Tarong
NIM : 1705552026
Jawaban
1. Tahapan dalam pembuatan suatu program basis data :
1.1 Tahap 1 pengumpulan data dan analisa merupakan suatu tahap dimana kita melakukan proses indentifikasi dan analisa kebutuhan-kebutuhan data dan ini disebut pengumpulan data dan analisa. Untuk menentukan kebutuhan-kebutuhan suatu sistem database, kita harus mengenal terlebih dahulu bagian-bagian lain dari sistem informasi yang akan berinteraksi dengan sistem database, termasuk para user yang ada dan para user yang baru beserta aplikasi-aplikasinya. Kebutuhan-kebutuhan dari para user dan aplikasi-aplikasi inilah yang kemudian dikumpulkan dan dianalia :
1.1.1 Menentukan kelompok pemakai dan bidang-bidang aplikasinya 1.1.2 Peninjauan dokumentasi yang ada
1.1.3 Analisa lingkungan operasi dan pemrosesan data 1.1.4 Daftar pertanyaan dan wawancara
1.2 Tahap 2 Perancangan database secara konseptual
Pada tahap ini akan dihasilkan conceptual schema untuk database yang tergantung pada sebuah DBMS yang spesifik. Sering menggunakan sebuah
high-level data model seperti ER/EER modelselama tahap ini. Dalam
conceptual schema, kita harus merinci aplikasi-aplikasi database yang diketahui dan transaksi-transaksi yang mungkin. Tahap perancangan
database secara konseptual mempunyai 2 aktifitas pararel : 1.2.1 Perancangan skema konseptual
digunakan pada perancangan skema konseptual adalah
DBMS-independent dan langkah selanjutnya adalah memilih DBMS untuk melakukan rancangan tersebut
1.2.2 Perancangan Transaksi
Menguji aplikasi-aplikasi database dimana kebutuhan-kebutuhannya telah dianalisa pada fase 1, dan menghasilkan perincian transaksi-transaksi ini.Kegunaan tahap ini yang diproses secara paralel bersama tahapp perancangan skema konseptual adalah untuk merancang karakteristik dari transaksi-transaksi database yang telah diketahui pada suatu
DBMS-independent. Transaksi-transaksi ini akan digunakan untuk memproses dan memanipulasi database suatu saat dimana database tersebut dilaksanakan.
1.3 Tahap 3 pemilihan DBMS
Pemilihan database ditentukan oleh beberapa faktor diantaranya faktor teknik, ekonomi, dan politik organisasi.Contoh faktor teknik: Keberadaan DBMS dalam menjalankan tugasnya seperti jenis-jenis DBMS (relational, network, hierarchical, dan lain-lain), struktur penyimpanan, dan jalur akses yang mendukung DBMS, pemakai, dan lain-lain.Faktor-faktor ekonomi dan organisasi yang mempengaruhi satu sama lain dalam pemilihan DBMS :
1.3.1 Struktur data
Jika data yang disimpan dalam database mengikuti struktur hirarki, maka suatu jenis hirarki dari DBMS harus dipikirkan.
1.3.2 Personal yang telah terbiasa dengan suatu sistem
Jika staf programmer dalam suatu organisasi sudah terbiasa dengan suatu DBMS, maka hal ini dapat mengurangi biaya latihan dan waktu belajar. 1.3.3 Tersedianya layanan penjual
1.4 Tahap 4 Prancangan database secara logika (data model mapping)
Tahap selanjutnya adalah membuat sebuah skema konseptual dan skema eksternal pada model data dari DBMS yang terpilih. Tahap ini dilakukan oleh pemetaan skema konseptual dan skema eksternal yang dihasilkan pada tahap 2. Pada tahap ini, skema konseptual ditransformasikan dari model data tingkat tinggi yang digunakan pada tahap 2 ke dalam model data dari model data dari DBMS yang dipilih pada tahap 3.Pemetaan tersebut dapat diproses dalam 2 tingkat:
1.1.4 Pemetaan system independent
Pemetaan ke dalam model data DBMS dengan tidak mempertimbangkan karakteristik atau hal-hal yang khusus yang berlaku pada implementasi DBMS dari model data tersebut.
1.2.4 Penyesuaian skema ke DBMS yang spesifik
Mengatur skema yang dihasilkan pada langkah 1 untuk disesuaikan pada implementasi yang khusus di masa yang akan datang dari suatu model data yang digunakan pada DBMS yang dipilih.Hasil dari tahap ini memakai perintah-perintah DDL (Data Definition Language) dalam bahasa DBMS yang dipilih yang menentukan tingkat skema konseptual dan eksternal dari sistem database. Tetapi 10 dalam beberapa hal, perintah-perintah DDL memasukkan parameter-parameter rancangan fisik sehingga DDL yang lengkap harus menunggu sampai tahap perancangan database secara fisik telah lengkap.Tahap ini dapat dimulai setelah pemilihan sebuah implementasi model data sambil menunggu DBMS yang spesifik yang akan dipilih. Contoh: jika memutuskan untuk menggunakan beberapa
relational DBMS tetapi belum memutuskan suatu relasi yang utama. Rancangan dari skema eksternal untuk aplikasi-aplikasi yang spesifik seringkali sudah selesai selama proses ini.
1.5 Tahap 5 Perancangan database secara fisik
mencapai penampilan yang terbaik pada bermacam-macam aplikasi.Selama fase ini, dirancang spesifikasi-spesifikasi untuk database
yang disimpan yang berhubungan dengan struktur-struktur penyimpanan fisik, penempatan record dan jalur akses. Berhubungan dengan internal schema(pada istilah 3 level arsitektur DBMS).Beberapa petunjuk dalam pemilihan perancangan database secara fisik :
1.5.1 Response time
Waktu yang telah berlalu dari suatu transaksi database yang diajukan untuk menjalankan suatu tanggapan. Pengaruh utama pada response time
adalah di bawah pengawasan DBMS yaitu : waktu akses database untuk data item yang ditunjuk oleh suatu transaksi.Response time juga dipengaruhi oleh beberapa faktor yang tidak berada di bawah pengawasan DBMS, seperti penjadwalan sistem operasi atau penundaan komunikasi. 1.5.2 Space utility
Jumlah ruang penyimpanan yang digunakan oleh file-file database dan struktur-struktur jalur akses.
1.5.3 Transaction throughput
Rata-rata jumlah transaksi yang dapat diproses per menit oleh sistem
database, dan merupakan parameter kritis dari sistem transaksi (misal : digunakan pada pemesanan tempat di pesawat, bank, dll). Hasil dari fase ini adalah penentual awal dari struktur penyimpanan dan jalur akses untuk
file-file database.
1.6 Tahap 6 Implementasi Sistem database
Setelah perancangan secara logika dan secara fisik lengkap, kita dapat melaksanakan sistem database. Perintah-perintah dalam DDL dan SDL(Storage Definition Language) dari DBMS yang dipilih, dihimpun dan digunakan untuk membuat skema database dan file-file database
datanya yang kemudian dimasukkan ke database yang baru. Transaksi-transaksi database sekarang harus dilaksanakan oleh para programmmer aplikasi.Spesifikasi secara konseptual diuji dan dihubungkan dengan kode program dengan perintah-perintah dari embedded DML yang telah ditulis dan diuji. Suatu saat transaksi-transaksi tersebut telah siap dan data telah dimasukkan ke dalam database, maka tahap perancangan dan implementasi telah selesai, dan kemudian tahap operasional dari sistem
database dimulai.
2. Tahapan dalam proses normalisasi :
2.1 Bentuk Tidak Normal (UNNORMALIZED FORM)
Bentuk ini merupakan kumpulan data yang akan direkam, tidak ada keharusan
mengikuti format tertentu, dapat saja data tidak lengkap atau terduplikasi. Data dikumpulkan apa adanya sesuai dengan saat menginput.
Untuk mentransformasikan tabel yang belum ternomalisasi di atas menjadi tabel yang memenuhi kriteria 1NF adalah kita harus merubah seluruh atribut yang multivalue menjadi atribut single value, dengan cara menghilangkan repeating group pada tabel di bawah ini.
Tabel 2.1 Unnormalized Form
NomorPegawai NamaPegawai Nomor Klien Nama Klien
P27 Arif K01,K02,K04 Dian,Slamet,Widodo
P28 Syamsul K03,K07 JuntNatalia
P29 Siti K05 Vander
P30 Gary K01,K07 DianNatalia
Repeating Group (elemen data berulang) adalah Nomor Klien dan Nama Klien
2.2 Bentuk Normal Ke Satu (1NF)
memiliki sifat induknya, bila terpecah lagi maka ia tidak memiliki sifat induknya.
Syarat normal ke satu (1-NF) antara lain:
2.2.1 Setiap data dibentuk dalam flat file, data dibentuk dalam satu record demi satu record nilai dari field berupa atomic value.
2.2.2 Tidak ada set atribute yang berulang atau bernilai ganda.
2.2.3 Telah ditentukannya primarykey untuk tabel atau relasi tersebut. 2.2.4 Tiap atribut hanya memiliki satu pengertian.
Langkah pertama yang dilakukan pada Tabel 2.1 tersebut adalah menghilangkan elemen data yang berulang dengan data-data Pelanggan yang sesuai pada setiap baris. Hasil dari tabel yang telah memenuhi bentuk normal pertama dapat dilihat pada Tabel 2.2 kita dapat mengidentifikasi
primary key untuk relasi Pelayanan yang masih memiliki composite key
(Nomor_Pegawai, Nomor_Klien). Pada kasus ini kita akan memperoleh
primary key yang bersifat composite key. Relasi Pelayanan dapat didefinisikan sebagai berikut. Pelayanan =(NomorPegawai, NamaPegawai, NomorKlien, NamaKlien).
Tabel 2.2 1NF
NomorPegawai NamaPegawai Nomor Klien Nama Klien
P27 Arif K01 Dian
B dikatakan full functional dependency (memiliki ketergantungan fungsional terhadap A, tetapi tidak secara tepat memiliki ketergantungan fungsional dari subset (himpunan bagian) dari A.
Syarat normal kedua (2-NF) sebagai berikut:
2.3.1 Bentuk data telah memenuhi kriteria bentuk normal kesatu.
Walaupun relasi 2-NF memiliki redudansi yang lebih sedikit dari pada relasi 1-NF,namun relasi tersebut masih mungkin mengalami kendala bila terjadi anomali peremajaan (update) terhadap relasi tersebut
Syarat normal ketiga (Third Normal Form / 3 NF) sebagai berikut: 2.4.1 Bentuk data telah memenuhi kriteria bentuk normal kedua
2.4.2 Atribute bukan kunci (non-key) harus tidak memiliki ketergantungan transitif, dengan kata lain suatu atribut bukan kunci (non_key) tidak boleh memiliki ketergantungan fungsional (functional dependency) terhadap atribut bukan kunci lainnya, seluruh atribut bukan kunci pada suatu relasi hanya memiliki ketergantungan fungsional terhadap priamry key di relasi itu saja.
3. Secara garis besar, database MySQL mempunyai 3 macam tipe data, yaitu:Tipe Data Numeric,Tipe Data Date & Time,dan Tipe Data String.
3.1 Tipe Data Numeric
Tipe Data Numeric pada database MySQL terbagi atas beberapa macam tipe data, yaitu:
3.1.1 INT
Digunakan untuk menyimpan data yang berupa bilangan bulat positif dan negatif dengan jangkauan antara -2.147.483.648 s/d 2.147.483.647. Tipe data ini mempunyai ukuran 4 byte (32 bit).
3.1.2 TINYINT
Digunakan untuk menyimpan data yang berupa bilangan bulat positif dan negatif dengan jangkauan antara -128 s/d 127. Tipe data ini mempunyai ukuran 1 byte (8 bit).
3.1.3 SMALLINT
3.1.4 MEDIUMINT
Digunakan untuk menyimpan data yang berupa bilangan bulat positif dan negatif dengan jangkauan antara -8.388.608 s/d 8.388.607. Tipe data ini mempunyai ukuran 3 byte (24 bit).
3.1.5 BIGINT
Digunakan untuk menyimpan data yang berupa bilangan bulat positif dan negatif dengan jangkauan antara -8.388.608 s/d 8.388.607. Tipe data ini mempunyai ukuran 8 byte (64 bit).
3.1.6 FLOAT
Digunakan untuk menyimpan data yang berupa bilangan pecahan positif dan negatif presisi tunggal. Tipe data ini mempunyai ukuran 4 byte (32 bit).
3.1.7 DOUBLE
Digunakan untuk menyimpan data yang berupa bilangan pecahan positif dan negatif presisi ganda. Tipe data ini mempunyai ukuran 8 byte (64 bit). 3.1.8 DECIMAL
Digunakan untuk menyimpan data yang berupa bilangan pecahan positif dan negatif presisi ganda. Tipe data ini mempunyai ukuran 8 byte (64 bit).
3.1.9 REAL
Digunakan untuk menyimpan data yang berupa bilangan pecahan positif dan negatif. Tipe data ini mempunyai ukuran 8 byte (64 bit).
3.1.10 NUMERIC
Digunakan untuk menyimpan data yang berupa bilangan pecahan positif dan negatif. Tipe data ini mempunyai ukuran 8 byte (64 bit).
3.2 Tipe Data Date & Time
Tipe Data Date & Time pada database MySQL terbagi atas beberapa macam tipe data, yaitu:
3.2.1 DATE
3.2.2 DATETIME
Digunakan untuk menyimpan data tanggal dan waktu dalam format YY:MM:DD HH:MM:SS
3.2.3 TIME
Digunakan untuk menyimpan data waktu dalam format HH:MM:SS 3.2.4 YEAR
Digunakan untuk menyimpan data tahun.
3.3 Tipe Data String
Tipe Data String pada database MySQL terbagi atas beberapa macam tipe data, yaitu:
3.3.1 CHAR
Digunakan untuk menyimpan data karakter/string dengan ukuran tetap. Tipe data ini mempunyai jangkauan antara 0 sampai dengan 255 karakter. 3.3.2 VARCHAR
Digunakan untuk menyimpan data karakter/string dengan ukuran dinamis. Tipe data ini mempunyai jangkauan antara 0 sampai dengan 255 untuk MySQL versi 4.1. Dan mempunyai jangkauan antara 0 s/d 65.535 untuk MySQL versi 5.0.3.
3.3.3 BLOB
BLOB (Binary Large Object) adalah tipe data yang digunakan untuk menyimpan data biner seperti files, images, suara, dll. Tipe data ini mempunyai jangkauan 216-1 byte.
3.3.4 TINYBLOB
Digunakan untuk menyimpan data biner seperti file, image, dan suara. Tipe data ini mempunyai jangkauan 255 byte.
3.3.5 MEDIUMBLOB
Digunakan untuk menyimpan data biner seperti file, image, dan suara. Tipe data ini mempunyai jangkauan 244-1 byte.
Digunakan untuk menyimpan data biner seperti file, image, dan suara. Tipe data ini mempunyai jangkauan 232-1 byte
3.3.7 TEXT
Digunakan untuk meyimpan data text. Tipe data ini mempunyai jangkauan antara 0 sampai dengan 65.535 (216-1) karakter.
3.3.8 TINYTEXT
Digunakan untuk meyimpan data text. Tipe data ini mempunyai jangkauan antara 0 s/d 255 untuk MySQL versi 4.0, dan mempunyai jangkauan antara 0 s/d 65.535 untuk MySQL versi 5.0.3.
3.3.9 MEDIUMTEXT
Digunakan untuk meyimpan data text. Tipe data ini mempunyai jangkauan antara 0 sampai dengan 224-1 karakter
3.3.10 LONGTEXT
Digunakan untuk meyimpan data text. Tipe data ini mempunyai jangkauan antara 0 sampai dengan 232-1 karakter.
3.3.11 ENUM
Digunakan untuk menyimpan data enumerasi (kumpulan data) 3.3.12 SET
Digunakan untuk menyimpan data himpunan data.
4. Key di dalam database berfungsi sebagai suatu cara untuk mengidentifikasi dan menghubungkan satu tabel data dengan tabel yang lain.
Jenis-Jenis Key :
4.1 Primary Key (Kunci Primer)
Kunci primer adalah suatu atribut atau satu set minimal atribut yang tidak hanya mendefinisikan secara unik suatu kejadian spesifik tetapi juga dapat mewakili setiap kejadian dari suatu kejadian.
Nilai field yang menjadi primarykey harus: 4.1.1 Unik atau tidak boleh ganda
4.1.2 Tidak boleh Null (kosong, tidak diketahui, tidak dapat ditentukan)
Database tanpa data apapun yang asing. Setiap tabel dapat memiliki satu atau lebih candidate key.
Key boleh terdiri lebih dari satu field Key yang terdiri lebih dari satu kolom seperti ini disebut Composite Key.
Contoh Primary Key
Contoh:
File pegawai berisi attribute
No Induk No ktp Nama Tempat lahir Tanggal lahir Alamat Kota
No induk dan no ktp adalah kunci calon (Candidate Key) dan untuk kunci utama (primary key) adalah salah satu yang dipilih dari kunci calon. Misalnya No. induk di jadikan primary key, maka primary key nya adalah no induk.
Gambar 4.1 Primay Key
Nomor_pesanan sebagai primary key di tabel pesanan
4.2 Foreign Key (Kunci Tamu)
Foreign Key adalah satu set atribut atau set atribut sebagai key penghubung kedua tabel dan melengkapi satu relationship (hubungan) terhadap
primary key yang menunjukan keinduknya.
Jika sebuah primary key terhubungan ke table/entity lain, maka keberadaan
primary key pada entity tersebut di sebut sebagai foreign key. Contoh Foreign Key
Gambar 4.2 Foreign Key
Pada gambar diatas, nim pada table mhs adalah primary key. Sedangkan
primary key pada table matkul adalah id_matkul. Lalu id_matkul menempel pada table mhs yang kita sebut sebagai foreign key.
Biasanya disebut table yang berisi foreign key sebagai table anak karena
table tersebut mengait pada table lain. Sedangkan table yang terkait saya sebut sebagai table induk. Pada contoh table di atas, mhs sebagai table
anak sedangkan matkul sebagai table induk.
4.3 Candidat key (Kunci kandidat/kunci calon)
Candidat key adalah suatu atribut atau satu set minimal atribut yang hanya mengidentifikasikan secara unik untuk suatu kejadian spesifik dari entitas
Candidate key ini harus memenuhi syarat sbb:
4.3.2 Non Redudancy, tidak ada duplikasi candidate key untuk menjadi unique identifier, dimana tidak dapat dilakukan penghapusan pada candidate key
dimana tidak merusak sifat unique identifier. Contoh dari candidate key adalah:
Untuk entiti 'supplier' candidate key yang dapat kita pilih adalah atribut SNo, karena secara fungsional atribut SName, Status, dan City bergantung ke atribut SNo.
Contoh Candidate Key
File pegawai berisi attribute
No induk No ktp Nama Tempat lahir Tanggal lahir Alamat Kota
Kunci kandidat disini adalah: No induk
No ktp
4.4 Composite Key
Dalam desain database, composite key adalah kunci yang terdiri dari 2 atau lebih atribut yang secara unik mengidentifikasi suatu kejadian entitas. Setiap atribut yang membentuk kunci senyawa adalah kunci sederhana dalam haknya sendiri.
composite setidaknya satu atribut yang membentuk kunci komposit bukanlah kunci sederhana.
Contoh Composite Key:
suatu entitas yang mewakili masing-masing modul siswa hadir di Universitas. entitas ini memiliki nim dan kode_matakuliah sebagai kunci utama. Setiap atribut yang membentuk kunci utama adalah kunci sederhana karena masing-masing merupakan referensi unik ketika mengidentifikasi siswa dalam satu kasus dan modul yang lain.
Sebaliknya, dengan menggunakan contoh yang sama, bayangkan kita mengidentifikasi seorang mahasiswa oleh NamaBelakang + NamaDepan mereka. Di tabel siswa tersebut pada modul kunci utama yaitu NamaDepan + NamaBelakang + kode_matakuliah. Karena NamaBelakang + NamaDepan merupakan referensi unik untuk mahasiswa, itu bukanlah sebuah kunci sederhana, itu adalah kombinasi dari atribut yang digunakan untuk secara unik mengidentifikasi seorang mahasiswa. Oleh karena itu kunci utama untuk entitas ini adalah kunci komposit.
Tidak ada pembatasan diterapkan pada atribut tentang (awal) kepemilikan mereka dalam model data. Ini berarti bahwa setiap satu, tidak ada, atau semua, dari beberapa atribut dalam kunci senyawa dapat menjadi kunci asing. Dimana kunci asing mungkin sendiri dapat menjadi kunci majemuk.
4.5 Alternative Key adalah candidate key yang tidak dipilih sebagai primary key.
5. Relasi adalah hubungan antara tabel yang mempresentasikan hubungan antar objek di dunia nyata. Relasi merupakan hubungan yang terjadi pada suatu tabel dengan lainnya yang mempresentasikan hubungan antar objek di dunia nyata dan berfungsi untuk mengatur mengatur operasi suatu database. Hubungan yang dapat dibentuk dapat mencakup 3 macam hubungan, yaitu :
5.1 One-To-One (1-1)
Mempunyai pengertian "Setiap baris data pada tabel pertama dihubungkan hanya ke satu baris data pada tabel ke dua". Contohnya : relasi antara tabel mahasiswa dan tabel orang tua. Satu baris mahasiswa hanya berhubungan dengan satu baris orang tua begitu juga sebaliknya.
Gambar 5.1 One To One
5.2 One-To-Many (1-N)
Mempunyai pengertian "Setiap baris data dari tabel pertama dapat dihubungkan ke satu baris atau lebih data pada tabel ke dua". Contohnya : relasi perwalian antara tabel dosen dan tabel mahasiswa. Satu baris dosen atau satu dosen bisa berhubungan dengan satu baris atau lebih mahasiswa
Gambar 5.1 One To Many
Mempunyai pengertian "Satu baris atau lebih data pada tabel pertama bisa dihubugkan ke satu atau lebih baris data pada tabel ke dua". Artinya ada banyak baris di tabel satu dan tabel dua yang saling berhubungan satu sama lain. Contohnya : relasi antar tabel mahasiswa dan tabel mata kuliah. Satu baris mahasiswa bisa berhubungan dengan banyak baris mata kuliah begitu juga sebaliknya
Gambar 5.3 Many To Many