penjelasan sql

18

Click here to load reader

Upload: arief-gunawan

Post on 24-Jun-2015

952 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Penjelasan SQL

PENJELASAN SQL

SQL, mungkin bagi yang ”bermain” di dunia komputer pernah mendengar istilah

tersebut, tapi sebenarnya apa sih SQL tersebut. Tidak sedikit juga orang yang

memandang SQL sama dengan MySQL, SQL Server, PostgreSQL, dan sebagainya.

SQL sebenarnya adalah bahasa universal yang digunakan dalam suatu software

database. Sedangkan MySQL, SQL Server, PostgreSQL adalah salah satu contoh dari

software database. Jadi pada software database, mulai dari Microsoft Access sampai

Oracle dan sebagainya kita dapat menggunakan ”bahasa” SQL didalamnya. Berikut

tulisan untuk mengenal secara umum tentang SQL.

Structured Query Language (SQL) adalah bahasa standar yang digunakan untuk

memanipulasi dan memperoleh data dari sebuah database relational. SQL mula-mula

dibuat pada tahun 1970 dengan istilah SEQUEL, standarisasi yang pertama kali

dibuat pada tahun 1986 oleh American National Standards Institute (ANSI), melalui

publikasi Database Language SQL (ANSI X3. 136 – 1986) dan International Standards

Organization (ISO) yang disebut sebagai SQL-86. SQL-86 ini diperbaharui pada tahun

1989 menjadi SQL-89. Standar terakhir yang dibuat dan digunakan hingga saat ini

adalah SQL-92 yang dikeluarkan pada tahun 1992.

SQL pertama kali diterapkan pada Sistem R, yaitu sebuah proyek riset pada

labotarium riset San Jose, IBM. Namun kini SQL juga dijumpai pada berbagai

platform, dari mikrokomputer hingga mainframe. SQL dapat digunakan baik secara

berdiri sendiri maupun dilekatkan pada bahasa-bahasa lain seperti COBOL dan C.

SQL juga telah menjadi bagian dari sejumlah DBMS, seperti Oracle, Sybase, MySQL

dan Informix.

Saat ini, ANSI dan ISO merupakan 2 organisasi yang membuat standarisasi terhadap

SQL.

SQL bukanlah satu-satunya bahasa query yang diterapkan pada basis data. QUELL

adalah contoh bahasa query yang lain, yang pertama kali diperkenalkan pada sistem

basis data Ingress.

SQL membuat pemograman dan seorang database administrator dapat melakukan

hal-hal sebagai berikut :

Page 2: Penjelasan SQL

1. Mengubah struktur sebuah database. 2. Mengubah pengaturan keamanan sistem. 3. Memberikan hak akses kepada pengguna untuk mengakses database atau

table. 4. Memperoleh informasi dari database. 5. Memutakhirkan isi database.

Pengertian SQLSQL (yang biasa dibaca sequel) merupakan kependekan dari Structured Query Language yaitu bahasa yang dirancang khusus untuk komunikasi dengan database. Tidak seperti bahasa-bahasa lainnya (seperti bahasa C, basic, pascal atau bahasa pemprograman yang lain) Bahasa SQL sengaja di rancang untuk melakukan hal secara sederhana dan efisien untuk membaca dan menulis data dari suatu database.Manfaat dari SQl antara lain :SQL bukanlah bahasa kepemilikan yang digunakan oleh vendor database perorangan. Hampir semua database besar mendukung SQL, sehingga dengan mempelajari bahasa SQL, anda dapat berinteraksi dengan hampir seluruh database besar yang beredar seperti Ms. SQL server, Oracle, Ms. Access, atau MySQL. SQL mudah dipelajari, karena semua statement dibuat berdasarkan kata-kata dalam bahasa inggris yang umum. SQL benar-benar suatu bahasa yang kuat, dan dengan kepandaian menggunakan unsur-unsur bahasa tersebut, anda dapat melakukan pengoperasian database yang kompleks dan sulit.

Sebelum anda masuk ke bahasa SQL, ada baiknya mengenal terlebih dahulu dasar-dasar database, apa sebenarnya SQL dan apa yang bisa dilakukannya.

Pengertian databaseSadar ataupun tidak sadar, sebenarnya anda selalu menggunakan database dalam kehidupan keseharian. Misalkan saja saat seorang guru mengisikan nilai-nilai be buku nilai, guru tersebut sudah menggunakan database, atau saat anda sedang mencari situs tertentu dengan menggunakan search engine seperti GOOGLE atau Yahoo, anda sedang menggunakan database, atau mungkin ketika anda menggunakan kartu ATM pada mesin ATM, saat memasukkan PIN dan melakukan transaksi, database-lah yang anda gunakan.Walaupun dalam kehidupan sehari-hari secara sadar ataupun tidak menggunakan database, masih saja terbesit dibenak apa itu database ?Secara sederhana database adalah kumpulan data yang disimpan dengan beberapa cara pengorganisasian. Coba anda bayangkan sebuah sebuah lemari berkas/filing kabinet, itu adalah lokasi fisik yang sederhana menyimpan data, tanpa memperhatikan jenisnya ataubagaimana diaturnya.

TabelTabel adalah daftar data yang terstruktur dengan tipe khusus. Misalkan dalam lemari berkas, untuk menyimpan informasi tentunya dengan membuat file-file yang diletakkan lemari kabinet dan setelah itu menempatkannya kedalam file khusus, dan file itulah dalam suatu database dikenal dengan tabel.

Page 3: Penjelasan SQL

Kolom dan Tipe dataBiasanya dalam suatu tabel terdiri dari satu atau lebih kolom. Kolom berisi bagian informasi dalam tabel. Misalkan dalam daftar nilai, terdapat kolom nama yang berisi seluruh nama-nama siswa, kolom nilai ulangan harian, berisi seluruh nilai harian siswa, kolom nilai ulangan Umum, berisi seluruh nilai ulangan umum, dan kolom-kolom lainnya.Setiap kolom memiliki jenis/tipe data tertentu dan saling terkait. pada contoh diatas kolom nilai ulangan harian berisi nilai yang berupa angka, dalam database dikenal dengan numerik. Kolom dalam database lebih dikenal dengan istilah field.

BarisKembali pada contoh daftar nilai, misalkan berisi data dengan nama siswa Andi, nilai ulangan hariannya 8, dan nilai ulangan umum 7, nama siswa Beni, nilai ulangan harian 8, dan nilai ulangan umum 7, begitu seterusnya dan data-data itulah diletakkan disetiap baris suatu kolom.Dalam dunia database, istilah baris dikenal dengan nama record

KunciDalam suatu baris yang terdiri dari beberapa kolom untuk melakukan pengindifikasian suatu baris. Misalkan pada tabel daftar nilai untuk pengindifikasian dengan kolom ID atau berupa no induk dari siswa tersebut.Kolom tersebut yang mengidentifikasikan secara unik setiap baris di dalam suatu tabel disebut primary key atau kunci primer. Tanpa kunci primer, proses pembaharuan (update) dan penghapusan baris-baris khusus pada tabel akan menjadi sulit.

Dalam kolom primary key, haruslah memenuhi syarat-syarat berikut :Dua baris tidak bisa memiliki nilai kunci primer yang sama Setiap baris harus memiliki nilai kunci primer artinya kolom tidak boleh ada yang kosong Kolom yang berisikan nilai kunci primer tidak pernah dapat dimodifikasi dan diperbaharui Nilai kunci primer tidak dapat digunakan kembali.Kunci primer biasanya ditempatkan pada kolom tunggal di dalam tabel. Tetapi ini tidak harus, karena banyak kolom yang digunakan bersama-sama sebagai kunci primer. Jika digunakan banyak kolom maka aturan diatas harus diterapkan pada semua kolom dengan nilai-nilai kolom yang unik.untuk memahami penjelasan diatas perhatikan contoh dibawah ini :Misalkan anda memiliki tabel dengan nama daftar_nilai, dengan data-data sebagai berikut :

Page 4: Penjelasan SQL
Page 5: Penjelasan SQL

Perbedaan MY SQL dan SQL

Jika kita sering membuat program database dengan perintah yang kita simpan didalam database seperti stored procedure, function, atau trigger kadang terdapat perbedaan bahasa pemrogramman antara di MySQL dengan SQL Server. Berikut kita akan membahas beberapa perbedaan antara aplikasi database tersebut.

Untuk parameter di dalam SQL Server selalu menggunakan awalan ‘@’, sedangkan pada MySQL kita dapat mengidentifikasikan parameter dengan karakter apapun dan kita bahkan dapat membuat parameter local tanpa mendeklarasikannya terlebih dahulu, yaitu dengan menambahkan karakter “@” pada awalan parameter yang dibuat.

Pada SQL Server kita dapat mengetikan perintah ‘DECLARE v1 [datatype], v2 [datatype], v3 [datatype]’tetapi pada MySQL kita harus mengetikan perintah‘DECLARE v1 [datatype]; DECLARE v2 [datatype]; DECLARE v3 [datatype]’

SQL Server tidak perlu mengetikan perintah ‘BEGIN … END’ untuk batasan sebuah Stored Procedure atau Function. Tetapi dalam MySQL kita perlu mengetikan perintah ‘BEGIN … END’ untuk Stored Procedure atau Function yang memiliki lebih dari satu baris perintah.

Pada SQL Server kita tidak perlu mengetikan karakter ‘;’ (titik koma) pada setiap akhir perintah. Tetapi pada MySQL membutuhkan karakter ‘;’ pada setiap akhir perintah, karena MySQL merupakan aplikasi console yang membutuhkan pembatas untuk setiap perintah yang dituliskan menjadi pembatas dengan perintah yang lainnya dalam satu Procedure atau Function.

SQL Server memiliki fungsi ‘SET NOCOUNT’ dan ‘@@ROWCOUNT’ untuk memperoleh jumlah row hasil execute. Sedangkan pada MySQL tidak memiliki perintah untuk ‘SET NOCOUNT’, tetapi memiliki fungsi ‘row_count()’ untuk mendapatkan jumlah row hasil execute dari query delete, insert, atau update, ‘found_rows()’ untuk mendapatakan jumlah row hasil execute dari query select.

SQL Server memiliki perintah perulangan ‘WHILE … BEGIN’. Sedangkan MySQL memiliki perintah perulangan ‘WHILE … DO’.

SQL Server dapat menggunakan perintah ‘SELECT’ atau ‘SET’ untuk mengisi data ke variable.Contoh:DECLARE @v1 int, @v2 intSELECT @v1 = 10, @v2 = 20Sedangkan MySQL hanya dapat menggunakan perintah ‘SET’ untuk mengisi data ke variable.Contoh:DECLARE v1 int;DECLARE v2 int;SET v1 = 10;SET v2 = 20;

Page 6: Penjelasan SQL

Bentuk Normalisasi

Teknik normalisasi banyak digunakan terutama pemula karena mudah dipahami dan diaplikasikan. 

Dasar-dasar normalisasi

Normal form (bentuk normal) adalah suatu klas dari skema database relasi yang didefinisikan untuk memenuhi tujuan dari tingginya integritas dan maintainability

Kreasi dari suatu bentuk normal disebut normalisasi Normalisasi dicapai dengan penganalisaan ketergantungan

diantara setiap individu attribut yang diassosiasikan dengan relasinya

First normal form

Suatu relasi ada dalam kondisi First Normal Form (1NF) jika dan hanya jika semua domain yang tercakup terdiri hanya atomic value, misalnya tidak ada pengulangan group (domain-domain) dalam suatu tuple 

Keuntungan dari 1NF dibanding Unnormalized relation (UNRs) adalah pada bentuk penyederhanaan representasi dan kemudahan dalam pengembangan menggunakan suatu query language

Kekuranannnya adalah kebutuhan terhadap duplikasi data  Sebagian besar sistem relasi (tidak semua) membutuhkan suatu

relasi dalam bentuk 1NF

 Second Normal Form

Suatu superkey adalah suatu himpunan dari satu atau lebih attribute, yang mana, dimana diambil secara khusus yang memmungkinkan kita untuk mengidentifikasikan secara unik satu entitas atau relasi

Suatu Candidate key adalah suatu subset dari attribut-attribut pada superkey yang juga merupakan superkey dan tidak reducible ke superkey yang lain 

Suatu primary key dipilih dari himpunan candidate key untuk digunakan pada suatu index untuk relasi yang bersangkutan 

Kepemilikan dari satu atau beberapa attribute yang dapat didefinisikan secara unik dari nilai satu atau beberapa attribute disebut functional dependency 

Diberikan suatu relasi (R), suatu himpunan (B) adalah functionally dependent pada himpunan attribut yang lain(A) jika,

Page 7: Penjelasan SQL

pada satu waktu tertentu, setiap nilai A diassosiasikan dengan satu nilai B, bentuk ini adalah suatu FD yang dinotasikan dengan A → B

• contohR : {paper-id, inst-name, isnt-addr, editor-id, publ-id, auth-id, auth-name,auth-addr}Fds : paper-id, auth-id → auth-namepaper-id,auth-id → auth-addrpaper-id, auth-id → inst-namepaper-id, auth-id → inst-addrauth-id → auth-nameauth-id → auth-addrinst-name → inst-addrpaper-id → editor-idpaper-id → publ-idbentuk sederhanapaper-id, auth-id → auth-name, auth-addr, inst-name, inst-addrauth-id → auth-name, auth-addrinst-name → inst-addr

paper-id → pub-id, editor-id Suatu relasi adalah dalam posisi second normal form (2NF) jika

dan hanya jika relasi tersebut juga dalam 1NF dan setiap nonkey attribute tergantung penuh pada primary key-nya

2NF membutuhkan bahwa FD apapun didalam relasi harus berisi semua komponen dari primary key sebagai determinant, baik secara langsung atau transitif 

contoh, primary key adalah paper_id, auth_id. Bagaimanapun, terdapat Fds yang lain (auth_Id → auth-name, auth-addr, and paper-id → pub-id, editor-id) yang berisi satu komponen dari primary key, tetapi tidak keduaduanya.

Mengapa harus 2NF, pertimbangkan keuntungan dari 1NF pada R. paper, pub-id dan editor-id dibuat duplikat. Untuk setiap author dari paper. Jika editor dari publikasi untuk suatu paper berubah, beberapa tuple harus pula di-update. Akhirnya, jika satu paper di ambil, semua tupple yang diassosiasikan harus dihapus. Bentuk ini akan memberikan efek samping pada penghapusan informasi yang mengassosiasikan suatu auth-id dengan auth-name dan auth-addr. 

Suatu cara yang dapat dilakukan untuk hal tersebut adalah dengan mentransformasikan relasi kedalam dua atau beberapa relasi 2NF

contohR1 : paper-id, auth-id → inst-name, inst-addrR2 : auth-id → auth-name, auth-addrR3 : paper-id → pub-id, editor-id

Third Normal Form 

Pada R1, inst_addr pasti diduplikat untuk setiap kombinasi paper_author yang mejelaskan satu inst_name. Juga, jika kita menghapus satu paper dari database, kita harus memberikan efek samping penghapusan assosiasi antara inst_name dan inst_addr.

Page 8: Penjelasan SQL

Suatu relasi dalam Third Normal Form (3NF) jika dan hanya jika relasi tersebut dalam 2NF dan setiap non key attribute adalah nontransitive dependent pada primary key

Contoh :R11 : paper-id, auth-id → inst-nameR12 : inst_name → inst_addrR2 : auth-id → auth-name, auth-addrR3 : paper-id → pub-id, editor-id 

Boyce-Codd Normal Form

Suatu Trivial FD adalah suatu bentuk YZ → Z Suatu relasi R dalam kondisi Boyce-Codd Normal Form (BCNF)

jika untuk semua nontrivial FD X → A, X adalah superkey BCNF adalah suatu bentuk yang lebih kuat dari normalisasi ke

tiga. 3NF equivalent dengan perkataan bahwauntuk setiap nontrivial FD X → A, dimana X dan A merupakan simple atau composite attribut, satu dari duakondisi harus dipenuhi.X adalah superkey, atauA adalah prime attribute

BCNF mengelimisasi kondisi kedua dari 3NF 

Penerapan Bentuk Normalisasi

Proses perancangan database menggunakan metode normalisasi dapat dimulai dari dokumen dasar yang pakai dalam sistem.

Menuliskan semua data yang akan direkam, bagian yang double tidak perlu dituliskan. Terlihat record record yang tidak lengkap, sulit untuk membayangkan bagaimana bentuk record yang harus dibentuk untuk merekam data tersebut.

Bentuklah menjadi bentuk normal kesatu dengan memisah misahkan data pada field field yang tepat dan benilai atomic, juga seluruh record harus lengkap adanya. Bentuk file adalah flat file.Dengan bentuk normal kesatu ini telah dapat dibuat satu file dengan 11 field yaitu nomor factur, kode supplier, nama supplier, kode barang, nama barang, tanggal, jatuh tempo, quantitas, harga, jumlah, total satu factur.

Page 9: Penjelasan SQL

abel -2

Tabel 2 adalah suatu relasi yang tak normal. Perpotongan antara baris dan kolom ada yang memiliki lebih dari satu nilai. Identifikasi unik (primary key) dari table 2 adalah NO PASIEN. Berdasankan nilai key ini kita tidak bisa memperoleh nilai atribut yang unik, karena terjadi group pengulangan pada kolom-kolom

NO DOKTER NAMA DOKTER TGL OPERASI JENIS OPERASI

Disain dengan group pengulangan seperti ini akan banyak menimbulkan masalah dalam melakukan pemrosesan, yaitu diperlukan program aplikasi yang sedikit kompleks, karena untuk kolom di mana terjadi group pengulangan diperlukan penanganan khusus.

1NF

Untuk mengatasi hal ini, kita transformasikan tabel pada table 2 menajdi tabel dengan relasi bentuk normal pertama table 3. Identifikasi unik pada tabel ini adalah NO PASIEN, NO DOKTER, TGL OPERASI. Dengan kata lain, jika kita mengetahui NO PASIEN, NO DOKTER dan TGL OPERASI maka kita bisa memperoleh nilai unik dan atribut-atnibut yang lainnya. Dalam hal ini dikatakan, semua atribut yang bukan sebagai key secara bersama-sama bergantung penuh kepada identifikasi unik. Identifikasi unik ini disebut sebagai primary key dari tabel 1NF.

Penyimpangan yang terjadi pada relasi bentuk normal ke pertama ini adalah sbb :Penyimpangan penyisipanJika ada pasien baru yang akan

Page 10: Penjelasan SQL

dioperasi, tapi kita belum tahu siapa dokternya dan kapan operasi dilakukan, maka kita tidak bisa menyisipkan data tentang pasien tersebut berdasarkan primary key yang ada. Untuk menyisipkan NAMA PASIEN dan ALAMAT PASIEN, kita hanya membutuhkan NO PASIEN sebagal key. Jadi kita tidak bisa menyisipkan data sebelum diketahui dokter siapa dan kapan operasi akan dilakukan. Jika kita plsahkan atribut NAMA PASIEN, ALAMAT PASIEN bersama-sama dengan NO PASIEN, maka penyisipan data pasien baru bisa dilakukan.Hal yang sama juga terjadi jika kita ingin menyisipkan dokter yang baru mulal bekerja pada rumah sakit tersebut. Selama dokter baru tersebut belum pemah melakukan operasi, maka kita tidak bisa menyisipkan data tentang dokter tersebut ke dalam entiti. Hal ini bisa diatasi dengan memisahkan atribut NAMA DOKTER bersama-sama dengan atribut NO DOKTER menjadi satu entiti baru.Penyimpangan perubahanPasien yang merupakan langganan rumah sakit tersebut yang beberapa kali dioperasi, seperti mlsalnya pasien dengan nama JOHN, setiap kali dilakukan operasi, data-data tentang JOHN, yaitu NAMA dan ALAMAT akan tercatat dalam satu rekord. Dalam contoh ini JOHN dioperasi sebanyak empat kali, maka JOHN memiliki empat rekord. Jika suatu saat, misahiya JOHN dioperasi untuk yang ke lima kalinya, sedangkan pada seat itu JOHN sudah pindah alamat. Jadi alamat-alamat yang tercatat sebelumnya tidak berlaku lagi dan perlu diperbaharui. karena alamat JOHN tercatat dibeberapa tempat, maka pembaharuan juga harus dilakukan dibeberapa tempat. ini adalah contoh penyimpangan perubaban yang muncul pada table dengan relasi bentuk pertama.Penyimpangan perubahan ini bisa diatasi, jika atribut-atribut NAMAPASIEN dan ALAMAT PASIEN tercatat hanya sekali untuk setiap pasien.Hal ini bias dilakukan dengan menempatkan atribut NAMA PASIEN danAIAMAT PASIEN bersama-sarna dengan NO PASIEN dalam satu entititerpisah.Penyimpangan-penghapusan yang teijadi pada relasi bentukpertama ini adalah sebagai berikut: Penyimpangan penghapusanMisalnya ada pasien yang dirawat meninggal dunia, misalnya pasien dengan nama BUD!. Ketika data-data tentang BUDI dihapus, secara tidak sengaja kita juga kehilangan data-data tentang dokter yang melakukan operasi terhadap BUDI, yaltu DR. A. Kebetulan. DR. A melakukan operasi baru sekali, sehingga data-data tentang DR. A tidak ada ditempat lain. Tentunya hal. ini tidak diinginkan karena data-data tentang DR. A masih dlbutuhkan di rumahsakit tersebut.Penyimpangan penghapusan seperti pada contoh ini, bisa diatasi dengan memisahkan data-data tentang dokter menjadi satu entili terpisah, dengan demikian setiap ada pasien yang meninggal dunia dan rekordnya Ingin dihapus, kita tidak akan kehilangan data-data tentang dokter yang merawatnya.Di samping penyimpangan di atas, pada relasi dengan bentuk normal pertama juga terjadi penyimpangan-penyimpangan tempat

Page 11: Penjelasan SQL

penyunpanan (storage Anomaly), yaftu pada kolom kolom NO PASIEN, NAMA PASIEN, ALAMAT PASIEN terdapat nilai yang ditulis berulang-ulang, ini  disebabkan karena pasien dengan NAMA dan ALAMAT tersebut menjalani beberapa kali operasi. Hal yang sama juga terjadi pada kolom NO DOKTER dan NAMA DOKTER yaitu untuk dokter-dokter yang telah melakukan beberapa kali operasi. Penyimpangan ini muncul karena ada atribut-atribut yang bergantung secara penuh kepada bagian dari key. Seperti mlsa]nya NAMA PASIEN dan M4MAT PASIEN bergantung secara penuh pada NO PASIEN, dan NO PASIEN adalah bagian dari key. Demikian juga untuk atribut NAMA DOKTER yang bergantung secara penuh pad NO DOKTER yang merupakan bagian dari key.Untuk mengatasi penyimpangan.penyimpangan yang terjadi pada bentuk normal pertama adalah pisahkan kolorn-kolom ditempat mana duplikasi data terjadi atau bangun enilti baru yang terdiri dari atribut atribut yang bergantung secara penuh pada bagian dari key, dengan keteutuan sebag benikut:I. Key dari tabel baru adalah key dari group dupilkasi.2. Key dari tabel asal adalah sebagai atribut pada tabel baru.3 Mungkin perlu menyertakan key atau bagian dar key pada tabel asalsebagai  key pada tabel baru Group duplikasi pada pembahasan kita adalah NO PASIEN, NAMA PASIEN ALAMAT PASIEN  dan key dari group ini adalah No PASIEN

Tabel-4

Sedangkan group duplikasi yang lain, yaitu NO DOKTER dan NAMA DOK. TER dipisahkan menjadi tabel DOKTER, dengan key NO DOKTER. Tabel. nya terlihat pada table-5

Page 12: Penjelasan SQL

  Tabel-5

Sedangkan entiti asal akan menjadi seperti benikut, kita sebut saja sebagal tabel MASTER.  Group duplikasi pada tabel yang klta bicanakan adalah NO PASIEN, NAMA PASIEN, ALAMAT PASIEN. Bentuk tabel barn dengan nama PASIEN

Tabel-6

Hasil proses normalisasi dan relasi normal bentuk pertama, yaltu pada table-4, table-5,Tabel-6 adálah relasi beniUk iormal kedua (2NF).

Untuk melakukan pengecekan, apakah relasi dalam suatu tabel bukan merupakan bentuk normal ke dua adalah jika primary key merupakan gabungan dan beberapa atnibut dan ada atribut lain yang bergantung secara penuh pada salah satu atau bagian dan primary key.Setiap relasi bentuk normal ice dna makaju merupakan relasi bentuk normal pertama. Sebaliknya, jika rebel bentuk normal pertama maka belum teutu merupakan relasi bentuk normal ice dua. Tabel yang ditunjukkan pada Gambar XWJ adalah relasi bentuk normal pertama, tapi bukan bentuk normal ke dna, sedangkan pada Gambar XWA, Gambar XW.5 dan Gambar XIV4 adeh relasi bentuk normal pertama dan juga relasi bentuk normal kedua.Penyunpangan-penyimpangan yang teqadi pada relasi bentuk normal pertama dapat diatasl dengan

Page 13: Penjelasan SQL

membanin entfti-entiti barn, yaltu entiti MASTER, entiti PASIEN dan entiti DOKTER. Proses nornalisasi di aim menghasm relasi bentuk normal kedua,. Relasi antara ketiga entiti dapat digambarkan sebagai benlkut PASIEN < —— >> MASTER << ———- > DOKTERyaita antara PASIEN dan MASTER satu-ke-banyak dan antara DOKTER dan MASTER satu-ke-banyak.Jika kita ingin menyisipkan data-data tentang pasien baru, pada relasi bentuk normal kedua kita melakukannya dengan menyisipkan data teisebut ke entiti PASIEN. Demikian juga, jika data-data tentang dokter yang ingin dimasukkannya, kita bisa menyisipkarmya pada entiti DOKTER. Untuk melakukan perubahan.pembakan alamat pasien, kita tidak penlu lagi melakukan perubahan dibeberapa tempat, tapi cukup mengadakan perubahan satu rekord pada entiti PASIEN. Apabila ada rekord yang harus dihapus pada entiti MASTER, kita tidak akan kehilangan data-data tentang dokter yang dihapus pada entiti MASTER, karena semua data-data tentang dokter berada dalam entiti DOKTER.Penyirnpangan..penyimpangan yang tenjadi pada relasi bentuk normal pertama telah dapat diatasi dengan mentransformasikan menjadi relasi bentuk normal kedua. Walaupun demikian, bukan berarti pada relasl bentuk normal kedua sudah tidak ada lagi penyimpangan-penyimpangan tersebut. Berikut ini kita lihat penyimpangan..penyimpg yang teijadi pada relasi bentuk normal kedua, perhatjkan Garnbar XW.6. Penyimpangan penyisipan Kita tidak bisa menyisipkan data-data tentang obat dan efek sarnpi. ngannya, kecuali jika obat tersebut diberikan kepada pasien. Dengan kata lain, jika kita ingin menyisipican data-data tentang obat, maka kita tenlebih dahulu hams membangun suatu relasi dengan primary key pada entiti MASTER. Penyimpangan penghapusan Penyimpangan penghapusan teijadi jika ada atribut bukan key yang bergantung penuh pada atnibut yang juga bukan key. Path gambar XIV.6, atnibut EFEK SAMPINGAN di samping bergantung path primary key, juga bergantung path atnbut OBAT YANG DJBERJK yang bukan sebagai k. Jika misainya ada pasien yang dlbCdkan PENICILLIN tapi efek sampin ya bukan DEMAM, maka EFEK SAMPINGAN liii harus dthapus atan diperbahanihi. Jika PENICILLIN dengan EFEK SAMPINGAN DEMAM mlsalnya tercatat hanya sekali, maka penghapusan ml akan mengiilangkan informasi teñtang PENICILLIN dengan EFEK SAMI’INGAN DEMAM. Hal ini mungkin tidak diinginkan.Penyimpangan perubahan Jika EFEK SAMPINGAN yang dibicarakan dalam kasus penyimpangan penhapusan muncul dibeberapa tempat, maka perubahan harus dilakukan dibeberapa tempat. Hal ini tentunya akan membutuhkan lebih banyak waktu dibandingkan dengan melakukan perubahan hanya pada satu tempat saja.Penyimpangan-penyimpangan yang terjadi pada relasi bentuk normal kedua sebagai akibat dari kebergantungan atribut bukan key (EFEK SAMPINGAN) pada atribut lain yang juga bukan sebagai key (OBAT YANG DIBERIKAN). Ketergantungan semacam ini disebut

Page 14: Penjelasan SQL

ketergantungan transitif (transitive Dependency).Untuk mengatasi ketergantungan transitif ini, pisahkan atribut-atribut bukan key yang bergantung pada atribut lain yang juga bukan key. Dalam catoh ini, kita bangun entiti baru, yaitu entiti OBAT dengan atribut-atribut OBAT YANG DIBERIKAN dan EFEK SAMPINGAN. Entiti MASTER sekarang tampak pada table 7 dan entiti OBAT pada table 8