Diagram E-R dan normalisasi
| English | Bahasa Indonesia |
|---|---|
| entity-relationship diagram/ˈentɪti rɪˈleɪʃənʃɪp ˈdaɪəɡræm/ | diagram entitas-relasi |
| normalisation/ˌnɔːməlaɪˈzeɪʃn/ | normalisasi |
| entity/ˈentɪti/ | entitas |
| cardinality/ˌkɑːdɪˈnælɪti/ | kardinalitas |
| one-to-many/wʌn tə ˈmeni/ | satu-ke-banyak |
| many-to-many/ˈmeni tə ˈmeni/ | banyak-ke-banyak |
| link table/lɪŋk ˈteɪbl/ | tabel penghubung |
| normal forms/ˈnɔːml fɔːmz/ | bentuk normal |
| atomic/əˈtɒmɪk/ | atom |
| transitive dependency/ˈtrænsɪtɪv dɪˈpendənsi/ | ketergantungan transitif |
Empat puluh baris untuk mengubah satu nomor telepon
- Sebuah sekolah menyimpan pendaftaran siswa dalam satu lembar kerja. Setiap baris mewakili satu siswa pada satu kursus, dan setiap baris juga memuat guru pembimbing kelas siswa serta nomor telepon guru tersebut.
- Guru tersebut mengubah nomornya. Empat puluh baris harus diedit. Tiga puluh sembilan berhasil diedit. Sisa dari tahun ajaran tersebut, daftar kursus satu kali menelepon orang asing.
- Tidak ada kesalahan ketik. Kesalahan ada pada desain: fakta yang seharusnya milik guru disimpan sekali per pendaftaran, sehingga bisa benar di satu tempat dan salah di tempat lain.
- Pelajaran ini membahas dua alat desain yang mencegah hal tersebut: diagram entitas-relasi, yang menggambarkan struktur, dan normalisasi, yang menghilangkan pengulangan.
Diagram entitas-relasi
- Sebuah diagram entitas-relasi (E-R diagram) mendokumentasikan desain basis data: setiap entitas digambarkan sebagai persegi panjang, setiap relasi adalah garis antara dua persegi panjang, dan karinalitas ditandai di setiap ujungnya.
- Dalam notasi kaki burung (crow's-foot), satu batang berarti "satu" dan kaki tiga dahan berarti "banyak". Baca setiap garis dalam kedua arah: setiap pelanggan membuat banyak pesanan; setiap pesanan dibuat oleh satu pelanggan.
- Diagram ini digambar sebelum tabel apa pun dibuat, dan relasi pada diagram tersebut menjadi kunci asing (foreign keys).

Satu persegi panjang untuk setiap entitas, satu garis untuk setiap relasi

Batang untuk satu, kaki untuk banyak
Dalam diagram E-R, jumlah satu entitas yang dapat berkaitan dengan satu dari yang lain, ditandai di setiap ujung garis, adalah ____.
Kardinalitas adalah satu atau banyak di setiap ujung; notasi kaki bangau menggambar batang untuk satu dan kaki untuk banyak.
Tiga jenis relasi
- Satu-ke-satu (1:1): setiap anggota memiliki satu kartu perpustakaan dan setiap kartu milik satu anggota. Jarang terjadi; kedua entitas sering digabungkan menjadi satu tabel.
- Satu-ke-banyak (1:M): satu pelanggan membuat banyak pesanan; setiap pesanan milik satu pelanggan. Diimplementasikan dengan memasukkan kunci utama sisi "satu" ke dalam tabel sisi "banyak" sebagai kunci asing.
- Banyak-ke-banyak (M:N): seorang siswa mengambil banyak mata kuliah dan sebuah mata kuliah memiliki banyak siswa. Tidak dapat diimplementasikan secara langsung; memerlukan tabel penghubung.
Setiap pelanggan dapat membuat banyak pesanan, tetapi setiap pesanan milik satu pelanggan. Hubungan ini adalah:
Satu pelanggan → banyak pesanan, setiap pesanan → satu pelanggan: hubungan satu-ke-banyak.
Cocokkan setiap hubungan dengan kardinalitasnya.
1:1 masing-masing sisi memiliki satu; 1:M satu sisi memiliki banyak; M:N kedua sisi memiliki banyak (memerlukan tabel penghubung).
Contoh terpecahkan: gambarlah diagram E-R
- Sebuah sekolah memiliki guru, kelas, dan siswa. Setiap guru mengajar banyak kelas; setiap kelas diajarkan oleh satu guru. Setiap kelas memiliki banyak siswa; setiap siswa berada di satu kelas. Siswa mungkin bergabung dengan banyak klub dan setiap klub memiliki banyak siswa.
- Empat persegi panjang:
TEACHER,CLASS,STUDENT,CLUB.TEACHER—CLASSadalah satu-ke-banyak, kakinya diCLASS.CLASS—STUDENTadalah satu-ke-banyak, kakinya diSTUDENT.STUDENT—CLUBadalah banyak-ke-banyak, kaki di kedua ujungnya. - Penilaian: setiap entitas yang ada, setiap relasi yang digambar, dan simbol karinalitas yang benar di setiap ujung. Garis tanpa simbol adalah setengah jawaban.
Tabel penghubung
- Relasi banyak-ke-banyak dipecah menjadi dua relasi satu-ke-banyak melalui tabel penghubung yang menampung dua kunci asing.
ENROLMENT(StudentID, CourseID, EnrolmentDate): satu siswa memiliki banyak pendaftaran, satu kursus memiliki banyak pendaftaran, dan setiap baris adalah satu siswa pada satu kursus. Kunci utamanya adalah komposit dari dua kunci asing tersebut.- Data tentang pasangan itu sendiri, tanggal, nilai, masuk ke dalam tabel penghubung; data tentang siswa atau mata kuliah tetap berada di tabel masing-masing.

Satu banyak-ke-banyak menjadi dua satu-ke-banyak
Bagaimana hubungan banyak-ke-banyak diimplementasikan dalam basis data relasional?
Tabel penghubung (junction) memegang kunci asing ke masing-masing sisi, mengubah M:N menjadi dua hubungan 1:M.
ENROLMENT(StudentID, CourseID, EnrolmentDate) adalah tabel penghubung. Pernyataan mana yang benar? Pilih semua yang berlaku.
Tabel penghubung memegang pasangan dan fakta tentang pasangan tersebut. Data siswa sendiri tetap di STUDENT, atau akan berulang di setiap pendaftaran.
Normalisasi
- Normalisasi mengorganisasikan tabel sehingga setiap fakta disimpan tepat sekali, mengurangi redundansi dan inkonsistensi. Proses ini melewati bentuk normal secara berurutan: pertama, kedua, ketiga.
- Prosedur: temukan entitas dan atributnya; pilih kunci utama untuk setiap entitas; hilangkan grup berulang dan nilai non-atomi (1NF); hilangkan atribut yang hanya bergantung pada sebagian dari kunci komposit (2NF); hilangkan atribut yang bergantung pada atribut non-kunci lainnya (3NF); tambahkan kunci asing untuk relasi.
- Biayanya adalah lebih banyak tabel dan lebih banyak join. Ujian meminta bentuk 3NF.
Lab layanan basis data
Lihat bagaimana DBMS mengubah query menjadi akses data bersama yang aman.
Susun bentuk normal sesuai urutan penerapannya.
Anda mencapai 3NF dengan melewati 1NF lalu 2NF — masing-masing membangun sebelumnya.
Tujuan utama normalisasi adalah untuk:
Menormalisasi hingga 3NF menyimpan setiap fakta sekali, menghapus anomali update/insert/delete (dengan biaya lebih banyak penggabungan).
Bentuk normal pertama
- Suatu tabel berada dalam 1NF ketika setiap bidang menyimpan nilai tunggal yang atomik, tidak ada grup berulang, dan terdapat kunci utama.
STUDENT(StudentID, Name, Phone)denganPhoneyang berisi0123, 0456bukan atomik.STUDENT(StudentID, Name, Course1, Course2, Course3)memiliki kelompok berulang.- Perbaiki keduanya dengan memindahkan data berulang ke tabel tersendiri dengan satu baris per nilai:
STUDENT_PHONE(StudentID, Phone),ENROLMENT(StudentID, CourseID).
Bidang Phone berisi "0123, 0456" untuk satu siswa. Bentuk normal mana yang gagal oleh tabel ini?
Dua nilai dalam satu sel adalah kegagalan 1NF. Pindahkan angka-angka tersebut ke STUDENT_PHONE(StudentID, Phone), satu per baris.
Contoh terpecahkan: bentuk normal kedua
ORDER(OrderID, CustomerID, CustomerName, ProductID, Quantity)memiliki kunci utama komposit(OrderID, ProductID). Apakah itu dalam 2NF?- Tes setiap bidang non-kunci terhadap keseluruhan kunci.
Quantitybergantung pada baikOrderIDmaupunProductID: urutan mana, produk mana. Baik-baik saja. CustomerIDdanCustomerNamebergantung padaOrderIDsaja, hanya sebagian dari kunci: ketergantungan parsial, sehingga tabel tidak dalam 2NF. Pisahkan:ORDER(OrderID, CustomerID, CustomerName)danORDER_LINE(OrderID, ProductID, Quantity).
Contoh terpecahkan: bentuk normal ketiga
- Apakah
ORDER(OrderID, CustomerID, CustomerName)dalam 3NF? - Suatu tabel berada dalam 3NF jika sudah dalam 2NF dan setiap bidang non-kunci hanya bergantung pada kunci utama, bukan pada atribut non-kunci lainnya.
CustomerNamebergantung padaCustomerID, yang bukan kunci: ketergantungan transitif, sehingga tabel tidak dalam 3NF. - Pisahkan lagi:
ORDER(OrderID, CustomerID)danCUSTOMER(CustomerID, CustomerName), denganCustomerIDsebagai kunci asing. Nama sekarang disimpan sekali, berapapun jumlah pesanan yang dilakukan pelanggan.

Setiap bentuk menghilangkan satu jenis ketergantungan
Menormalisasi hingga 3NF menyimpan setiap fakta sekali dan menghapus anomali update, dengan biaya lebih banyak tabel dan penggabungan.
Kompromi tersebut — data yang lebih bersih versus lebih banyak penggabungan — adalah mengapa 3NF menjadi target umum.
Menjelaskan mengapa suatu tabel, atau tidak, dalam 3NF
- Tidak dalam 3NF: sebutkan ketergantungannya. "
TEACHERtidak dalam 3NF karena atribut non-kunciDepartmentNamebergantung pada atribut non-kunciDepartmentID, bukan pada kunci utama." - Dalam 3NF: tutupi ketiga kondisi. "Setiap atribut bersifat atomik tanpa grup berulang; tidak ada ketergantungan parsial pada sebagian kunci; setiap atribut non-kunci hanya bergantung pada kunci utama, tanpa ketergantungan transitif."
- Kemudian, jika diminta, berikan tabel-tabel yang dinormalisasi dalam notasi standar dengan kunci asing yang ditandai.
Dalam TEACHER(TeacherID, Name, DepartmentID, DepartmentName), mengapa tabel tersebut tidak memenuhi 3NF?
Ini adalah ketergantungan transitif. Pisahkan DEPARTMENT(DepartmentID, DepartmentName) dan tetapkan DepartmentID di dalam TEACHER sebagai kunci asing.
⟦⟧ Nilai yang sering terlewat
- 2NF hanya menjadi masalah ketika kunci utama bersifat komposit. Kunci satu kolom tidak dapat memiliki ketergantungan parsial.
- 3NF memerlukan 2NF. Sebutkan keduanya saat memberikan justifikasi.
- Atomik berarti satu nilai per sel. "Dua nomor telepon dalam satu bidang" adalah kegagalan 1NF, bukan 3NF.
- Menyebut bentuk normal bukanlah jawapan; menyebut kebergantungan adalah jawapannya. Penambahan jadual selepas menormalisasi adalah matlamatnya, bukan kekurangan.
Anda telah memahaminya
- sebuah diagram E-R menampilkan entitas sebagai persegi panjang dan relasi sebagai garis dengan kartinalitas di setiap ujung: 1:1, 1:M, M:N
- sebuah relasi many-to-many disimpan melalui tabel penghubung dari dua kunci asing, kunci utamanya adalah komposit mereka
- 1NF nilai atomik, tanpa kelompok berulang, kunci utama · 2NF tanpa ketergantungan parsial pada sebagian kunci komposit · 3NF tanpa ketergantungan transitif antar atribut non-kunci
- justifikasi dengan menyebutkan ketergantungan, lalu berikan tabel-tabel yang dipisahkan beserta kunci asingnya