Pangkalan Data Lanjutan

2.1 Bahasa Pertanyaan Berstruktur: SQL (Structured Query Language)
SAINS KOMPUTER • Tingkatan 5 • Bab 2: Pangkalan Data Lanjutan

2.1 Bahasa Pertanyaan Berstruktur: SQL (Structured Query Language)

Topik ini membincangkan kaedah mereka bentuk dan mengurus pangkalan data hubungan secara teratur. Murid didedahkan kepada Rajah Hubungan Entiti (ERD) sebagai teknik pemodelan data konseptual, proses penormalan data (0NF hingga 3NF) untuk menghapuskan anomali dan kelewahan data, serta sintaks Bahasa Pertanyaan Berstruktur (SQL) merangkumi DDL, DML, fungsi agregat, klausa pengisihan, dan pengelompokan data dalam persekitaran MySQL melalui phpMyAdmin.

Objektif Pembelajaran

  • Melakar ERD (Entity Relationship Diagram) yang mengandungi entiti, atribut, hubungan, dan kekardinalan bagi permasalahan yang diberikan.
  • Menghasilkan skema hubungan yang ternormal (sehingga 3NF) daripada permasalahan yang diberikan.
  • Membina pangkalan data hubungan menggunakan arahan SQL DDL (CREATE TABLE).
  • Menggunakan arahan SQL DML untuk memanipulasi data seperti menyisip (INSERT), memadam (DELETE), dan mengemas kini (UPDATE).
  • Menggunakan pernyataan SELECT untuk mencapai data semula dengan klausa GROUP BY, ORDER BY, dan HAVING.
  • Menggunakan fungsi agregat seperti AVG, SUM, MAX, MIN, dan COUNT.
  • Membina pangkalan data hubungan dengan menggunakan SQL bagi menyelesaikan masalah pengurusan maklumat.

Hierarki Penormalan Pangkalan Data Hubungan (0NF hingga 3NF)

Penormalan ialah proses berperingkat untuk menghapuskan kelewahan data dan anomali. Setiap tahap membuang satu jenis masalah sehingga skema hubungan menjadi ternormal sepenuhnya.

Tangga Penormalan: 0NF → 1NF → 2NF → 3NF

Tangga penormalan pangkalan data hubungan Empat anak tangga menaik dari kiri ke kanan. Anak tangga pertama ialah 0NF, bentuk tidak ternormal yang mengandungi kumpulan data berulang atau medan bernilai berganda. Anak panah ke anak tangga kedua menunjukkan tindakan menghapuskan data berulang dan menentukan kunci komposit. Anak tangga kedua ialah 1NF, tiada kumpulan berulang dan semua nilai atomik. Anak panah ke anak tangga ketiga menunjukkan tindakan menghapuskan kebergantungan separa. Anak tangga ketiga ialah 2NF, tiada kebergantungan separa. Anak panah ke anak tangga keempat menunjukkan tindakan menghapuskan kebergantungan transitif. Anak tangga keempat ialah 3NF, skema hubungan ternormal sepenuhnya dan bebas anomali. 0NF Data berulang / berbilang nilai Hapus data berulang 1NF Nilai atomik, tiada ulangan Hapus kebergantungan separa 2NF Tiada kebergantungan separa Hapus kebergantungan transitif 3NF Ternormal sepenuhnya

Setiap langkah menaik menghapuskan satu jenis anomali sehingga skema hubungan bebas daripada kelewahan data.

Penerangan Ringkas

ERD sebagai pelan biru, penormalan sebagai proses pembersihan struktur, dan SQL sebagai bahasa untuk membina serta memanipulasi pangkalan data.

Apakah itu Rajah Hubungan Entiti (ERD)?

Pangkalan data ialah himpunan data berkaitan yang boleh dikongsi bersama oleh pelbagai kategori pengguna. ERD (Entity Relationship Diagram) ialah rajah grafik pemodelan data konseptual yang menggambarkan entiti, atribut, dan perhubungan dalam organisasi.

ERD dilakar terlebih dahulu sebagai pelan biru struktur organisasi data sebelum jadual fizikal dibina dalam DBMS.

Komponen Asas ERD

1. Entiti

Entiti ialah objek atau konsep yang unik dan dikenal pasti dalam persekitaran, diwakili simbol segi empat tepat.

Entiti kuat boleh wujud tanpa bersandar pada entiti lain, contohnya MURID dan GURU. Entiti lemah kewujudannya bersandar pada entiti kuat, diwakili segi empat tepat bergaris dua, contohnya TANGGUNGAN, dan dihubungkan menggunakan hubungan lemah yang diwakili permata bergaris dua.

2. Atribut

Atribut ialah ciri-ciri atau sifat yang memerihalkan sesuatu entiti, diwakili simbol bujur.

Jenis atribut termasuk atribut mudah, atribut bernilai tunggal, atribut nilai gandaan, atribut terbitan, atribut kunci, dan atribut komposit.

Jenis-jenis atribut dalam ERD
Jenis atributSimbol / ciriContoh
Atribut mudahTidak boleh dibahagikan kepada bahagian kecilNama, NoKadPengenalan
Atribut bernilai tunggalSatu nilai sahaja bagi satu rekodTarikh lahir
Atribut nilai gandaanBoleh mengandungi lebih daripada satu nilai; bujur bergaris duaKemahiran
Atribut terbitanDihasilkan berasaskan atribut lain; bujur garis putus-putusGajiTahunan = gaji bulanan × 12
Atribut kunciUnik bagi setiap rekod; teks atribut digariskanNoKadPengenalan
Atribut kompositBoleh dipecahkan kepada komponen lebih kecilAlamat → Jalan, Bandar, Poskod

3. Perhubungan dan Kekardinalan

Perhubungan (Relationship) ialah penyatuan yang menghubungkan antara entiti, dilabel dengan kata kerja dan diwakili simbol permata.

Kekardinalan menunjukkan kuantiti data antara entiti. Kekardinalan minimum ialah nilai minimum data suatu entiti berkait dengan entiti lain, manakala kekardinalan maksimum ialah nilai maksimum data suatu entiti berkait dengan entiti lain.

Jenis notasi kekardinalan (Jadual 2.1.3)
JenisSimbolMinimumMaksimum
Mandatori Satu11
Mandatori Banyak1Banyak
Opsyenal Satu01
Opsyenal Banyak0Banyak

Model Hubungan Data dan Pemetaan ERD

Model hubungan data diperkenalkan oleh E. F. Codd pada tahun 1970. Data disusun dalam bentuk jadual (hubungan) yang mengandungi medan (atribut) dan rekod.

Ciri-ciri hubungan yang menepati 1NF

Setiap jadual mempunyai nama yang unik; setiap data mempunyai nilai atomik; setiap medan mempunyai nama yang berbeza; setiap rekod adalah unik; susunan atribut dan rekod tidak mempunyai kepentingan logik.

Kunci primer dan kunci asing

Kunci primer ialah atribut unik pengenalan rekod, digaris penuh. Kunci asing ialah kunci primer satu hubungan yang muncul dalam hubungan lain untuk menghubungkan kedua-duanya, digaris putus-putus.

Tiga peraturan pemetaan

1:1 — kunci primer pada bahagian entiti mandatori dijadikan kunci asing pada jadual pihak yang satu lagi. 1:M — kunci primer entiti bahagian "Satu" dimasukkan sebagai kunci asing dalam entiti bahagian "Banyak". M:N — cipta jadual persimpangan baharu yang menggabungkan kunci primer kedua-dua entiti sebagai kunci asing dan membentuk kunci komposit.

Proses Penormalan Data

Matlamat penormalan ialah mengurangkan kelewahan data dan meminimumkan anomali, iaitu anomali sisipan, pemadaman, dan pengemaskinian.

0NF (Bentuk Tidak Ternormal) — terdapat kumpulan data berulang atau medan bernilai berganda.
1NF (Bentuk Normal Pertama) — menghapuskan kumpulan data berulang supaya semua atribut mengandungi nilai atomik, serta menentukan kunci primer, lazimnya kunci komposit.
2NF (Bentuk Normal Kedua) — memenuhi syarat 1NF dan memastikan tiada kebergantungan separa. Atribut yang bergantung sebahagian dipisahkan ke jadual baharu.
3NF (Bentuk Normal Ketiga) — memenuhi syarat 2NF dan memastikan tiada kebergantungan transitif. Atribut berkaitan dipisahkan ke jadual baharu.

SQL: Bahasa Pertanyaan Berstruktur

SQL digunakan untuk membina skema fizikal pada DBMS seperti MySQL melalui phpMyAdmin, serta memproses dan mencapai maklumat dengan tepat.

Kategori arahan SQL
KategoriFungsiArahan
DDLMencipta dan mengubah strukturCREATE, ALTER, DROP
DMLMemanipulasi dataSELECT, INSERT, UPDATE, DELETE
DCLMengawal capaian keselamatan pangkalan dataGRANT, REVOKE
Jenis data utama dalam MySQL
Jenis dataPenerangan
CHAR(n)Rentetan teks tetap (0–255 aksara)
VARCHAR(n)Rentetan teks boleh ubah (0–255 aksara)
INT(n)Nombor bulat
FLOAT(m, d) / DOUBLENombor perpuluhan
DATEFormat YYYY-MM-DD
DATETIMEFormat YYYY-MM-DD HH:MM:SS
TIMEFormat HH:MM:SS

Sintaks DDL Asas

Cipta jadual
CREATE TABLE NAMA_JADUAL (
  Medan1 JENIS_DATA(saiz) PRIMARY KEY,
  Medan2 JENIS_DATA(saiz) NOT NULL,
  ...
);
Tambah medan
ALTER TABLE NAMA_JADUAL ADD NamaMedan JENIS_DATA(saiz);
ALTER TABLE NAMA_JADUAL ADD NamaMedan JENIS_DATA(saiz) AFTER MedanTertentu;
Ubah suai medan
ALTER TABLE NAMA_JADUAL MODIFY NamaMedan JENIS_BAHARU(saiz);
ALTER TABLE NAMA_JADUAL CHANGE MedanLama MedanBaharu JENIS_DATA(saiz);
Hapus medan dan jadual
ALTER TABLE NAMA_JADUAL DROP NamaMedan;
DROP TABLE NAMA_JADUAL;

Sintaks DML Asas

Sisip data
INSERT INTO NAMA_JADUAL VALUES (nilai1, 'nilai2', ...);
INSERT INTO NAMA_JADUAL (medan1, medan2) VALUES (nilai1, 'nilai2');
Kemas kini dan padam rekod
UPDATE NAMA_JADUAL SET medan = nilai_baharu WHERE syarat;
DELETE FROM NAMA_JADUAL WHERE syarat;
Pertanyaan asas dan susunan
SELECT medan1, medan2 FROM NAMA_JADUAL WHERE syarat;
ORDER BY Medan ASC;   -- menaik (lalai)
ORDER BY Medan DESC;  -- menurun

Pengelompokan dan fungsi agregat

GROUP BY menggabungkan rekod dengan nilai sama kepada kumpulan kecil. HAVING menapis hasil kumpulan data agregat, berbeza dengan WHERE yang menapis rekod individu sebelum pengelompokan.

Fungsi agregat: SUM(medan) menghitung jumlah keseluruhan nilai angka; MIN(medan) mengembalikan nilai minimum; MAX(medan) mengembalikan nilai maksimum; AVG(medan) mengembalikan nilai purata; COUNT(medan / *) mengembalikan jumlah bilangan baris atau rekod. Kata kunci penamaan semula ialah AS NamaPilihan.

Kes Terpadu: Pangkalan Data Rekod Sukan Sekolah

Contoh berpandukan buku teks (Jadual 2.1.15 – 2.1.18, m/s. 113–115) yang menggabungkan ERD, penormalan, dan SQL bagi menyelesaikan satu masalah pengurusan maklumat sebenar.

1. Masalah dan pengenalan entiti

Sekolah perlu mengurus rekod penyertaan hari sukan: siapa pesertanya, acara yang diambil, dan pingat yang dimenangi. Daripada senarai rekod sukan sekolah dalam bentuk 0NF (Jadual 2.1.15), entiti PESERTA dan ACARA dikenal pasti. Seorang peserta boleh menyertai lebih daripada satu acara dan satu acara disertai oleh ramai peserta, maka hubungan PESERTA–ACARA ialah M:N yang dipecahkan melalui jadual gabungan KEDUDUKAN (menyimpan pingat).

Skema hubungan ternormal 3NF (Jadual 2.1.18) — kunci primer digaris, kunci asing ditanda
JadualAtributKunci
PESERTAIDPeserta, NamaPeserta, Jantina, RumahSukan, Kategori*Kunci primer: IDPeserta; kunci asing: Kategori*
ACARANoAcara, NamaAcaraKunci primer: NoAcara
KEDUDUKANIDPeserta, NoAcara, PingatKunci komposit: IDPeserta + NoAcara; kedua-duanya kunci asing
KATEGORI_PESERTAKategori, KelasKunci primer: Kategori

* Kebergantungan transitif Kategori → Kelas dipisahkan ke jadual KATEGORI_PESERTA dalam 3NF. KEDUDUKAN ialah jadual persimpangan hasil pemetaan hubungan M:N.

Cipta jadual (DDL)
CREATE TABLE PESERTA (
  IDPeserta VARCHAR(4) PRIMARY KEY,
  NamaPeserta VARCHAR(30) NOT NULL,
  Jantina CHAR(1),
  RumahSukan VARCHAR(10),
  Kategori VARCHAR(10),
  FOREIGN KEY (Kategori) REFERENCES KATEGORI_PESERTA(Kategori)
);

CREATE TABLE KEDUDUKAN (
  IDPeserta VARCHAR(4),
  NoAcara VARCHAR(4),
  Pingat VARCHAR(10),
  PRIMARY KEY (IDPeserta, NoAcara),
  FOREIGN KEY (IDPeserta) REFERENCES PESERTA(IDPeserta),
  FOREIGN KEY (NoAcara) REFERENCES ACARA(NoAcara)
);
Sisip dan capai semula data (DML)
INSERT INTO KEDUDUKAN VALUES ('1000', 'A01', 'Gangsa');
INSERT INTO KEDUDUKAN VALUES ('1000', 'A02', 'Emas');
INSERT INTO KEDUDUKAN VALUES ('2000', 'A02', 'Emas');

SELECT P.NamaPeserta, K.NoAcara, K.Pingat
FROM PESERTA P, KEDUDUKAN K
WHERE P.IDPeserta = K.IDPeserta
ORDER BY P.NamaPeserta;

SELECT IDPeserta, COUNT(*) AS BilanganAcara
FROM KEDUDUKAN
GROUP BY IDPeserta
HAVING COUNT(*) > 1;

Tafsiran hasil pertanyaan

Pertanyaan pertama menggabungkan jadual PESERTA dengan KEDUDUKAN melalui padanan kunci asing P.IDPeserta = K.IDPeserta, memaparkan nama peserta, acara, dan pingat yang disertai, disusun mengikut nama peserta. Pertanyaan kedua mengumpulkan rekod mengikut IDPeserta, mengira bilangan acara bagi setiap peserta menggunakan fungsi agregat COUNT, kemudian klausa HAVING menapis supaya hanya peserta yang menyertai lebih daripada satu acara dipaparkan — dengan data contoh di atas, hanya peserta 1000 (Komala) yang menyertai 2 acara, manakala peserta 2000 hanya menyertai satu acara. Keputusan ini menjawab persoalan asal: siapa peserta paling aktif dalam hari sukan.

Cuba Jawab Dulu

Cuba jawab sendiri dahulu, kemudian tekan butang untuk menyemak.

Apakah perbezaan utama antara atribut nilai gandaan dengan atribut komposit dalam lakaran ERD?

Atribut nilai gandaan mengandungi lebih daripada satu nilai bagi satu entiti, contohnya seorang guru mempunyai beberapa kemahiran, dengan simbol bujur bergaris dua. Atribut komposit ialah atribut tunggal yang boleh dipecahkan kepada sub-komponen yang lebih terperinci, contohnya alamat dipecahkan kepada jalan, poskod, dan bandar, dengan simbol bujur bercabang.

Nyatakan perbezaan antara fungsi klausa WHERE dan klausa HAVING dalam pertanyaan SQL.

Klausa WHERE digunakan untuk menapis rekod atau baris individu sebelum sebarang operasi pengelompokan berlaku. Klausa HAVING digunakan khusus untuk menapis kumpulan data selepas arahan GROUP BY dilaksanakan, terutamanya bersama fungsi agregat.

Mengapakah kebergantungan transitif perlu dihapuskan dalam Bentuk Normal Ketiga (3NF)?

Untuk mengelakkan masalah anomali dan lewahan data apabila atribut bukan kunci bergantung kepada atribut bukan kunci yang lain. Jika data pada atribut penentu berubah atau dipadam, integriti data atribut yang bergantung padanya akan terjejas.

Kesalahan Biasa

  • Tertukar simbol atribut. Menggunakan bujur biasa untuk atribut terbitan, sedangkan atribut terbitan mesti menggunakan bujur bergaris putus-putus. Menggunakan bujur biasa untuk nilai gandaan, sedangkan nilai gandaan mesti menggunakan bujur bergaris dua.
  • Salah letak kunci asing pada hubungan 1:M. Meletakkan kunci primer bahagian "banyak" ke dalam entiti bahagian "satu". Peraturan yang betul ialah meletakkan kunci primer pihak "satu" sebagai kunci asing ke dalam jadual pihak "banyak".
  • Kekeliruan DROP dan DELETE. Menggunakan DELETE TABLE untuk membuang struktur jadual, sedangkan arahan yang betul ialah DROP TABLE. Menggunakan DROP untuk memadam baris rekod, sedangkan arahan yang betul ialah DELETE FROM.
  • Penggunaan tanda petikan pada SQL. Meletakkan tanda petikan tunggal pada nilai nombor (INT / FLOAT) atau terlupa meletakkan tanda petikan pada data teks (CHAR / VARCHAR / DATE).
  • Klausa WHERE tertinggal. Terlupa meletakkan klausa WHERE semasa menjalankan arahan UPDATE atau DELETE, menyebabkan seluruh rekod dalam jadual terubah suai atau terpadam serentak.

Salah Faham Konsep

Salah Faham

Entiti lemah tidak memerlukan kunci primer langsung.

Fakta Betul

Entiti lemah tidak mempunyai kunci primer sendiri yang mencukupi kerana kewujudannya bergantung kepada entiti kuat, tetapi ia memerlukan kunci primer daripada entiti kuat digabungkan dengan kunci pembeza atau separa untuk dikenal pasti secara unik.

Salah Faham

Fungsi COUNT(NamaMedan) dan SUM(NamaMedan) melakukan tugas yang sama.

Fakta Betul

COUNT membilang bilangan baris atau rekod yang wujud, manakala SUM menjumlahkan nilai angka berangka yang terkandung di dalam rekod medan tersebut.

Salah Faham

Skema jadual 1NF sudah bebas daripada lewahan data.

Fakta Betul

1NF hanya memastikan tiada atribut kumpulan berulang dan semua nilai adalah atomik. Jadual 1NF masih berisiko mengandungi kebergantungan separa dan transitif yang menyebabkan anomali.

Ringkasan

  • ERD ialah model asas pangkalan data yang menggabungkan Entiti (persegi), Atribut (bujur), Perhubungan (permata), dan Kekardinalan (minimum dan maksimum).
  • Penormalan ialah kaedah berstruktur mengasingkan jadual bagi mencapai 1NF (nilai atomik, tiada kumpulan berulang), 2NF (bebas kebergantungan separa), dan 3NF (bebas kebergantungan transitif).
  • Pemetaan: hubungan 1:1 menyerahkan kunci asing kepada pihak mandatori; hubungan 1:M meletakkan kunci asing pada pihak "banyak"; hubungan M:N menghasilkan jadual gabungan baharu.
  • SQL DDL mengurus struktur jadual: CREATE TABLE, ALTER TABLE ADD/MODIFY/CHANGE/DROP, DROP TABLE.
  • SQL DML mengurus data rekod: INSERT INTO, SELECT FROM WHERE, UPDATE SET WHERE, DELETE FROM WHERE.
  • Fungsi lanjutan SQL: GROUP BY untuk pengelompokan, ORDER BY (ASC/DESC) untuk susunan data, HAVING untuk penapisan kumpulan, dan 5 fungsi agregat: SUM, MIN, MAX, AVG, COUNT.

Aktiviti Ringkas

A. Kuiz Objektif

1 Antara pernyataan berikut, yang manakah menerangkan syarat utama bagi sesebuah jadual mencapai Bentuk Penormalan Kedua (2NF)?

2 Apakah arahan SQL yang betul untuk mengubah saiz jenis data bagi medan Alamat daripada saiz 15 kepada saiz 20 dalam jadual BARANG?

B. Isi Tempat Kosong

3 Hubungan lemah dalam Rajah Hubungan Entiti (ERD) diwakilkan menggunakan simbol bentuk permata yang bergaris .

4 Untuk menyusun paparan output data pertanyaan SQL daripada nilai tertinggi kepada nilai terendah, kata kunci mesti ditambah pada hujung klausa ORDER BY.

C. Padankan Fungsi Agregat dengan Keterangannya

Seret nama fungsi agregat ke keterangan yang betul. Jika menggunakan telefon, tekan pilihan jawapan dahulu, kemudian tekan kotak padanan.

Fungsi Agregat
COUNT
AVG
MIN
SUM
Keterangan
1 Mengembalikan jumlah bilangan baris rekod dalam sesuatu jadual.
2 Mengembalikan nilai purata bagi medan tertentu.
3 Mengembalikan nilai terendah daripada sesuatu medan berangka.
4 Menghitung hasil tambah keseluruhan nilai dari medan tertentu.
 

Kata Kunci

ERD Entiti Kuat Entiti Lemah Atribut Nilai Gandaan Atribut Terbitan Kekardinalan Kunci Primer Kunci Asing Kebergantungan Separa Kebergantungan Transitif Anomali DDL DML Fungsi Agregat

Pangkalan Data Lanjutan

2.1 Bahasa Pertanyaan Berstruktur: SQL (Structured Query Language)
SAINS KOMPUTER • Tingkatan 5 • Bab 2: Pangkalan Data Lanjutan

2.1 Bahasa Pertanyaan Berstruktur: SQL (Structured Query Language)

Topik ini membincangkan kaedah mereka bentuk dan mengurus pangkalan data hubungan secara teratur. Murid didedahkan kepada Rajah Hubungan Entiti (ERD) sebagai teknik pemodelan data konseptual, proses penormalan data (0NF hingga 3NF) untuk menghapuskan anomali dan kelewahan data, serta sintaks Bahasa Pertanyaan Berstruktur (SQL) merangkumi DDL, DML, fungsi agregat, klausa pengisihan, dan pengelompokan data dalam persekitaran MySQL melalui phpMyAdmin.

Objektif Pembelajaran

  • Melakar ERD (Entity Relationship Diagram) yang mengandungi entiti, atribut, hubungan, dan kekardinalan bagi permasalahan yang diberikan.
  • Menghasilkan skema hubungan yang ternormal (sehingga 3NF) daripada permasalahan yang diberikan.
  • Membina pangkalan data hubungan menggunakan arahan SQL DDL (CREATE TABLE).
  • Menggunakan arahan SQL DML untuk memanipulasi data seperti menyisip (INSERT), memadam (DELETE), dan mengemas kini (UPDATE).
  • Menggunakan pernyataan SELECT untuk mencapai data semula dengan klausa GROUP BY, ORDER BY, dan HAVING.
  • Menggunakan fungsi agregat seperti AVG, SUM, MAX, MIN, dan COUNT.
  • Membina pangkalan data hubungan dengan menggunakan SQL bagi menyelesaikan masalah pengurusan maklumat.

Hierarki Penormalan Pangkalan Data Hubungan (0NF hingga 3NF)

Penormalan ialah proses berperingkat untuk menghapuskan kelewahan data dan anomali. Setiap tahap membuang satu jenis masalah sehingga skema hubungan menjadi ternormal sepenuhnya.

Tangga Penormalan: 0NF → 1NF → 2NF → 3NF

Tangga penormalan pangkalan data hubungan Empat anak tangga menaik dari kiri ke kanan. Anak tangga pertama ialah 0NF, bentuk tidak ternormal yang mengandungi kumpulan data berulang atau medan bernilai berganda. Anak panah ke anak tangga kedua menunjukkan tindakan menghapuskan data berulang dan menentukan kunci komposit. Anak tangga kedua ialah 1NF, tiada kumpulan berulang dan semua nilai atomik. Anak panah ke anak tangga ketiga menunjukkan tindakan menghapuskan kebergantungan separa. Anak tangga ketiga ialah 2NF, tiada kebergantungan separa. Anak panah ke anak tangga keempat menunjukkan tindakan menghapuskan kebergantungan transitif. Anak tangga keempat ialah 3NF, skema hubungan ternormal sepenuhnya dan bebas anomali. 0NF Data berulang / berbilang nilai Hapus data berulang 1NF Nilai atomik, tiada ulangan Hapus kebergantungan separa 2NF Tiada kebergantungan separa Hapus kebergantungan transitif 3NF Ternormal sepenuhnya

Setiap langkah menaik menghapuskan satu jenis anomali sehingga skema hubungan bebas daripada kelewahan data.

Penerangan Ringkas

ERD sebagai pelan biru, penormalan sebagai proses pembersihan struktur, dan SQL sebagai bahasa untuk membina serta memanipulasi pangkalan data.

Apakah itu Rajah Hubungan Entiti (ERD)?

Pangkalan data ialah himpunan data berkaitan yang boleh dikongsi bersama oleh pelbagai kategori pengguna. ERD (Entity Relationship Diagram) ialah rajah grafik pemodelan data konseptual yang menggambarkan entiti, atribut, dan perhubungan dalam organisasi.

ERD dilakar terlebih dahulu sebagai pelan biru struktur organisasi data sebelum jadual fizikal dibina dalam DBMS.

Komponen Asas ERD

1. Entiti

Entiti ialah objek atau konsep yang unik dan dikenal pasti dalam persekitaran, diwakili simbol segi empat tepat.

Entiti kuat boleh wujud tanpa bersandar pada entiti lain, contohnya MURID dan GURU. Entiti lemah kewujudannya bersandar pada entiti kuat, diwakili segi empat tepat bergaris dua, contohnya TANGGUNGAN, dan dihubungkan menggunakan hubungan lemah yang diwakili permata bergaris dua.

2. Atribut

Atribut ialah ciri-ciri atau sifat yang memerihalkan sesuatu entiti, diwakili simbol bujur.

Jenis atribut termasuk atribut mudah, atribut bernilai tunggal, atribut nilai gandaan, atribut terbitan, atribut kunci, dan atribut komposit.

Jenis-jenis atribut dalam ERD
Jenis atributSimbol / ciriContoh
Atribut mudahTidak boleh dibahagikan kepada bahagian kecilNama, NoKadPengenalan
Atribut bernilai tunggalSatu nilai sahaja bagi satu rekodTarikh lahir
Atribut nilai gandaanBoleh mengandungi lebih daripada satu nilai; bujur bergaris duaKemahiran
Atribut terbitanDihasilkan berasaskan atribut lain; bujur garis putus-putusGajiTahunan = gaji bulanan × 12
Atribut kunciUnik bagi setiap rekod; teks atribut digariskanNoKadPengenalan
Atribut kompositBoleh dipecahkan kepada komponen lebih kecilAlamat → Jalan, Bandar, Poskod

3. Perhubungan dan Kekardinalan

Perhubungan (Relationship) ialah penyatuan yang menghubungkan antara entiti, dilabel dengan kata kerja dan diwakili simbol permata.

Kekardinalan menunjukkan kuantiti data antara entiti. Kekardinalan minimum ialah nilai minimum data suatu entiti berkait dengan entiti lain, manakala kekardinalan maksimum ialah nilai maksimum data suatu entiti berkait dengan entiti lain.

Jenis notasi kekardinalan (Jadual 2.1.3)
JenisSimbolMinimumMaksimum
Mandatori Satu11
Mandatori Banyak1Banyak
Opsyenal Satu01
Opsyenal Banyak0Banyak

Model Hubungan Data dan Pemetaan ERD

Model hubungan data diperkenalkan oleh E. F. Codd pada tahun 1970. Data disusun dalam bentuk jadual (hubungan) yang mengandungi medan (atribut) dan rekod.

Ciri-ciri hubungan yang menepati 1NF

Setiap jadual mempunyai nama yang unik; setiap data mempunyai nilai atomik; setiap medan mempunyai nama yang berbeza; setiap rekod adalah unik; susunan atribut dan rekod tidak mempunyai kepentingan logik.

Kunci primer dan kunci asing

Kunci primer ialah atribut unik pengenalan rekod, digaris penuh. Kunci asing ialah kunci primer satu hubungan yang muncul dalam hubungan lain untuk menghubungkan kedua-duanya, digaris putus-putus.

Tiga peraturan pemetaan

1:1 — kunci primer pada bahagian entiti mandatori dijadikan kunci asing pada jadual pihak yang satu lagi. 1:M — kunci primer entiti bahagian "Satu" dimasukkan sebagai kunci asing dalam entiti bahagian "Banyak". M:N — cipta jadual persimpangan baharu yang menggabungkan kunci primer kedua-dua entiti sebagai kunci asing dan membentuk kunci komposit.

Proses Penormalan Data

Matlamat penormalan ialah mengurangkan kelewahan data dan meminimumkan anomali, iaitu anomali sisipan, pemadaman, dan pengemaskinian.

0NF (Bentuk Tidak Ternormal) — terdapat kumpulan data berulang atau medan bernilai berganda.
1NF (Bentuk Normal Pertama) — menghapuskan kumpulan data berulang supaya semua atribut mengandungi nilai atomik, serta menentukan kunci primer, lazimnya kunci komposit.
2NF (Bentuk Normal Kedua) — memenuhi syarat 1NF dan memastikan tiada kebergantungan separa. Atribut yang bergantung sebahagian dipisahkan ke jadual baharu.
3NF (Bentuk Normal Ketiga) — memenuhi syarat 2NF dan memastikan tiada kebergantungan transitif. Atribut berkaitan dipisahkan ke jadual baharu.

SQL: Bahasa Pertanyaan Berstruktur

SQL digunakan untuk membina skema fizikal pada DBMS seperti MySQL melalui phpMyAdmin, serta memproses dan mencapai maklumat dengan tepat.

Kategori arahan SQL
KategoriFungsiArahan
DDLMencipta dan mengubah strukturCREATE, ALTER, DROP
DMLMemanipulasi dataSELECT, INSERT, UPDATE, DELETE
DCLMengawal capaian keselamatan pangkalan dataGRANT, REVOKE
Jenis data utama dalam MySQL
Jenis dataPenerangan
CHAR(n)Rentetan teks tetap (0–255 aksara)
VARCHAR(n)Rentetan teks boleh ubah (0–255 aksara)
INT(n)Nombor bulat
FLOAT(m, d) / DOUBLENombor perpuluhan
DATEFormat YYYY-MM-DD
DATETIMEFormat YYYY-MM-DD HH:MM:SS
TIMEFormat HH:MM:SS

Sintaks DDL Asas

Cipta jadual
CREATE TABLE NAMA_JADUAL (
  Medan1 JENIS_DATA(saiz) PRIMARY KEY,
  Medan2 JENIS_DATA(saiz) NOT NULL,
  ...
);
Tambah medan
ALTER TABLE NAMA_JADUAL ADD NamaMedan JENIS_DATA(saiz);
ALTER TABLE NAMA_JADUAL ADD NamaMedan JENIS_DATA(saiz) AFTER MedanTertentu;
Ubah suai medan
ALTER TABLE NAMA_JADUAL MODIFY NamaMedan JENIS_BAHARU(saiz);
ALTER TABLE NAMA_JADUAL CHANGE MedanLama MedanBaharu JENIS_DATA(saiz);
Hapus medan dan jadual
ALTER TABLE NAMA_JADUAL DROP NamaMedan;
DROP TABLE NAMA_JADUAL;

Sintaks DML Asas

Sisip data
INSERT INTO NAMA_JADUAL VALUES (nilai1, 'nilai2', ...);
INSERT INTO NAMA_JADUAL (medan1, medan2) VALUES (nilai1, 'nilai2');
Kemas kini dan padam rekod
UPDATE NAMA_JADUAL SET medan = nilai_baharu WHERE syarat;
DELETE FROM NAMA_JADUAL WHERE syarat;
Pertanyaan asas dan susunan
SELECT medan1, medan2 FROM NAMA_JADUAL WHERE syarat;
ORDER BY Medan ASC;   -- menaik (lalai)
ORDER BY Medan DESC;  -- menurun

Pengelompokan dan fungsi agregat

GROUP BY menggabungkan rekod dengan nilai sama kepada kumpulan kecil. HAVING menapis hasil kumpulan data agregat, berbeza dengan WHERE yang menapis rekod individu sebelum pengelompokan.

Fungsi agregat: SUM(medan) menghitung jumlah keseluruhan nilai angka; MIN(medan) mengembalikan nilai minimum; MAX(medan) mengembalikan nilai maksimum; AVG(medan) mengembalikan nilai purata; COUNT(medan / *) mengembalikan jumlah bilangan baris atau rekod. Kata kunci penamaan semula ialah AS NamaPilihan.

Kes Terpadu: Pangkalan Data Rekod Sukan Sekolah

Contoh berpandukan buku teks (Jadual 2.1.15 – 2.1.18, m/s. 113–115) yang menggabungkan ERD, penormalan, dan SQL bagi menyelesaikan satu masalah pengurusan maklumat sebenar.

1. Masalah dan pengenalan entiti

Sekolah perlu mengurus rekod penyertaan hari sukan: siapa pesertanya, acara yang diambil, dan pingat yang dimenangi. Daripada senarai rekod sukan sekolah dalam bentuk 0NF (Jadual 2.1.15), entiti PESERTA dan ACARA dikenal pasti. Seorang peserta boleh menyertai lebih daripada satu acara dan satu acara disertai oleh ramai peserta, maka hubungan PESERTA–ACARA ialah M:N yang dipecahkan melalui jadual gabungan KEDUDUKAN (menyimpan pingat).

Skema hubungan ternormal 3NF (Jadual 2.1.18) — kunci primer digaris, kunci asing ditanda
JadualAtributKunci
PESERTAIDPeserta, NamaPeserta, Jantina, RumahSukan, Kategori*Kunci primer: IDPeserta; kunci asing: Kategori*
ACARANoAcara, NamaAcaraKunci primer: NoAcara
KEDUDUKANIDPeserta, NoAcara, PingatKunci komposit: IDPeserta + NoAcara; kedua-duanya kunci asing
KATEGORI_PESERTAKategori, KelasKunci primer: Kategori

* Kebergantungan transitif Kategori → Kelas dipisahkan ke jadual KATEGORI_PESERTA dalam 3NF. KEDUDUKAN ialah jadual persimpangan hasil pemetaan hubungan M:N.

Cipta jadual (DDL)
CREATE TABLE PESERTA (
  IDPeserta VARCHAR(4) PRIMARY KEY,
  NamaPeserta VARCHAR(30) NOT NULL,
  Jantina CHAR(1),
  RumahSukan VARCHAR(10),
  Kategori VARCHAR(10),
  FOREIGN KEY (Kategori) REFERENCES KATEGORI_PESERTA(Kategori)
);

CREATE TABLE KEDUDUKAN (
  IDPeserta VARCHAR(4),
  NoAcara VARCHAR(4),
  Pingat VARCHAR(10),
  PRIMARY KEY (IDPeserta, NoAcara),
  FOREIGN KEY (IDPeserta) REFERENCES PESERTA(IDPeserta),
  FOREIGN KEY (NoAcara) REFERENCES ACARA(NoAcara)
);
Sisip dan capai semula data (DML)
INSERT INTO KEDUDUKAN VALUES ('1000', 'A01', 'Gangsa');
INSERT INTO KEDUDUKAN VALUES ('1000', 'A02', 'Emas');
INSERT INTO KEDUDUKAN VALUES ('2000', 'A02', 'Emas');

SELECT P.NamaPeserta, K.NoAcara, K.Pingat
FROM PESERTA P, KEDUDUKAN K
WHERE P.IDPeserta = K.IDPeserta
ORDER BY P.NamaPeserta;

SELECT IDPeserta, COUNT(*) AS BilanganAcara
FROM KEDUDUKAN
GROUP BY IDPeserta
HAVING COUNT(*) > 1;

Tafsiran hasil pertanyaan

Pertanyaan pertama menggabungkan jadual PESERTA dengan KEDUDUKAN melalui padanan kunci asing P.IDPeserta = K.IDPeserta, memaparkan nama peserta, acara, dan pingat yang disertai, disusun mengikut nama peserta. Pertanyaan kedua mengumpulkan rekod mengikut IDPeserta, mengira bilangan acara bagi setiap peserta menggunakan fungsi agregat COUNT, kemudian klausa HAVING menapis supaya hanya peserta yang menyertai lebih daripada satu acara dipaparkan — dengan data contoh di atas, hanya peserta 1000 (Komala) yang menyertai 2 acara, manakala peserta 2000 hanya menyertai satu acara. Keputusan ini menjawab persoalan asal: siapa peserta paling aktif dalam hari sukan.

Cuba Jawab Dulu

Cuba jawab sendiri dahulu, kemudian tekan butang untuk menyemak.

Apakah perbezaan utama antara atribut nilai gandaan dengan atribut komposit dalam lakaran ERD?

Atribut nilai gandaan mengandungi lebih daripada satu nilai bagi satu entiti, contohnya seorang guru mempunyai beberapa kemahiran, dengan simbol bujur bergaris dua. Atribut komposit ialah atribut tunggal yang boleh dipecahkan kepada sub-komponen yang lebih terperinci, contohnya alamat dipecahkan kepada jalan, poskod, dan bandar, dengan simbol bujur bercabang.

Nyatakan perbezaan antara fungsi klausa WHERE dan klausa HAVING dalam pertanyaan SQL.

Klausa WHERE digunakan untuk menapis rekod atau baris individu sebelum sebarang operasi pengelompokan berlaku. Klausa HAVING digunakan khusus untuk menapis kumpulan data selepas arahan GROUP BY dilaksanakan, terutamanya bersama fungsi agregat.

Mengapakah kebergantungan transitif perlu dihapuskan dalam Bentuk Normal Ketiga (3NF)?

Untuk mengelakkan masalah anomali dan lewahan data apabila atribut bukan kunci bergantung kepada atribut bukan kunci yang lain. Jika data pada atribut penentu berubah atau dipadam, integriti data atribut yang bergantung padanya akan terjejas.

Kesalahan Biasa

  • Tertukar simbol atribut. Menggunakan bujur biasa untuk atribut terbitan, sedangkan atribut terbitan mesti menggunakan bujur bergaris putus-putus. Menggunakan bujur biasa untuk nilai gandaan, sedangkan nilai gandaan mesti menggunakan bujur bergaris dua.
  • Salah letak kunci asing pada hubungan 1:M. Meletakkan kunci primer bahagian "banyak" ke dalam entiti bahagian "satu". Peraturan yang betul ialah meletakkan kunci primer pihak "satu" sebagai kunci asing ke dalam jadual pihak "banyak".
  • Kekeliruan DROP dan DELETE. Menggunakan DELETE TABLE untuk membuang struktur jadual, sedangkan arahan yang betul ialah DROP TABLE. Menggunakan DROP untuk memadam baris rekod, sedangkan arahan yang betul ialah DELETE FROM.
  • Penggunaan tanda petikan pada SQL. Meletakkan tanda petikan tunggal pada nilai nombor (INT / FLOAT) atau terlupa meletakkan tanda petikan pada data teks (CHAR / VARCHAR / DATE).
  • Klausa WHERE tertinggal. Terlupa meletakkan klausa WHERE semasa menjalankan arahan UPDATE atau DELETE, menyebabkan seluruh rekod dalam jadual terubah suai atau terpadam serentak.

Salah Faham Konsep

Salah Faham

Entiti lemah tidak memerlukan kunci primer langsung.

Fakta Betul

Entiti lemah tidak mempunyai kunci primer sendiri yang mencukupi kerana kewujudannya bergantung kepada entiti kuat, tetapi ia memerlukan kunci primer daripada entiti kuat digabungkan dengan kunci pembeza atau separa untuk dikenal pasti secara unik.

Salah Faham

Fungsi COUNT(NamaMedan) dan SUM(NamaMedan) melakukan tugas yang sama.

Fakta Betul

COUNT membilang bilangan baris atau rekod yang wujud, manakala SUM menjumlahkan nilai angka berangka yang terkandung di dalam rekod medan tersebut.

Salah Faham

Skema jadual 1NF sudah bebas daripada lewahan data.

Fakta Betul

1NF hanya memastikan tiada atribut kumpulan berulang dan semua nilai adalah atomik. Jadual 1NF masih berisiko mengandungi kebergantungan separa dan transitif yang menyebabkan anomali.

Ringkasan

  • ERD ialah model asas pangkalan data yang menggabungkan Entiti (persegi), Atribut (bujur), Perhubungan (permata), dan Kekardinalan (minimum dan maksimum).
  • Penormalan ialah kaedah berstruktur mengasingkan jadual bagi mencapai 1NF (nilai atomik, tiada kumpulan berulang), 2NF (bebas kebergantungan separa), dan 3NF (bebas kebergantungan transitif).
  • Pemetaan: hubungan 1:1 menyerahkan kunci asing kepada pihak mandatori; hubungan 1:M meletakkan kunci asing pada pihak "banyak"; hubungan M:N menghasilkan jadual gabungan baharu.
  • SQL DDL mengurus struktur jadual: CREATE TABLE, ALTER TABLE ADD/MODIFY/CHANGE/DROP, DROP TABLE.
  • SQL DML mengurus data rekod: INSERT INTO, SELECT FROM WHERE, UPDATE SET WHERE, DELETE FROM WHERE.
  • Fungsi lanjutan SQL: GROUP BY untuk pengelompokan, ORDER BY (ASC/DESC) untuk susunan data, HAVING untuk penapisan kumpulan, dan 5 fungsi agregat: SUM, MIN, MAX, AVG, COUNT.

Aktiviti Ringkas

A. Kuiz Objektif

1 Antara pernyataan berikut, yang manakah menerangkan syarat utama bagi sesebuah jadual mencapai Bentuk Penormalan Kedua (2NF)?

2 Apakah arahan SQL yang betul untuk mengubah saiz jenis data bagi medan Alamat daripada saiz 15 kepada saiz 20 dalam jadual BARANG?

B. Isi Tempat Kosong

3 Hubungan lemah dalam Rajah Hubungan Entiti (ERD) diwakilkan menggunakan simbol bentuk permata yang bergaris .

4 Untuk menyusun paparan output data pertanyaan SQL daripada nilai tertinggi kepada nilai terendah, kata kunci mesti ditambah pada hujung klausa ORDER BY.

C. Padankan Fungsi Agregat dengan Keterangannya

Seret nama fungsi agregat ke keterangan yang betul. Jika menggunakan telefon, tekan pilihan jawapan dahulu, kemudian tekan kotak padanan.

Fungsi Agregat
COUNT
AVG
MIN
SUM
Keterangan
1 Mengembalikan jumlah bilangan baris rekod dalam sesuatu jadual.
2 Mengembalikan nilai purata bagi medan tertentu.
3 Mengembalikan nilai terendah daripada sesuatu medan berangka.
4 Menghitung hasil tambah keseluruhan nilai dari medan tertentu.
 

Kata Kunci

ERD Entiti Kuat Entiti Lemah Atribut Nilai Gandaan Atribut Terbitan Kekardinalan Kunci Primer Kunci Asing Kebergantungan Separa Kebergantungan Transitif Anomali DDL DML Fungsi Agregat