Anda di halaman 1dari 77

PERBINCANGAN

GURU-GURU SAINS KOMPUTER


PERINGKAT DAERAH
Tajuk : Pangkalan Data
KHAMIS | 28 September 2017 | 8.30 Pagi 4.30 Petang
KERJA KURSUS SAINS KOMPUTER
#nyatakanPemasalahanYangJelas

#objektifSelesaikan
Masalah

#cakupan

#batasan

#pengguna
#fungsiSistemSediaAda
#kekuatan&kelemahan

#sebabPerluSistemBaharu

#namaSistem

#jadualPelaksanaan
#fasa&tempoh
#pseudokod@cartaAlirLengkap

#strukturKawalanYangBetul

#urutanPenyelesaianMasalahYgLogik

#semuaEntiti&ERD
#atributSetiapEntiti

#kunciPrimerSetiapEntiti

#garisanHubunganSemuaEntiti

#kardinalitiSemuaEntiti
#kebergantunganFungsi
#sebabKebergantungan

#penormalanDataHingga123NF

#SkemaHubunganLengkap
#rekabentukMenuSistem

#rekabentukBorang

#rekabentukLaporan
PANGKALAN DATA
PELANGGAN AKAUN BANK
IDPelanggan <KP> NoAkaun <KP>
Nama Pelanggan Jenis Akaun
Alamat IDPelanggan <KA>
Poskod
Notelefon

kedua-dua bentuk ini boleh menerangkan tentang skema hubungan


PELANGGAN (IDPelanggan, NamaPelanggan, Alamat, Poskod, NoTelefon)

AKAUN_BANK(noAkaun, jenisAkaun, IDPelanggan)


RUJUKAN
Beginning SQL, (2005), Paul Wilton and John W. Colby, Wiley Publishing,
Inc., 10475 Crosspoint Blvd., Indianapolis, United States of America.
Relational Database Design and Implementation Fourth
Edition, (2016), Jan L. Harrington, Elsevier, 50 Hampshire Street, 5th
Floor, Cambridge, United States of America.
Beginnning Database Design, (2006), Gavin Powell, Wiley Publishing,
Inc., 10475 Crosspoint Blvd., Indianapolis, United States of America.
https://www.sqa.org.uk/e-learning/DDFun01CD/page_01.htm
https://db.grussell.org/section006.html
Database design is probably
as much art as it is science,
and your own common sense
is important, too.

- Beginning SQL
Can Multiple Primary Keys Exist on a
Single Table?
<KP> <KP> . .

IDMurid . . IDPenjaga IDPenjaga


<KP> <KA> <KP>
JIKA kardinaliti yang dikenalpasti ialah KARDINALITI
hubungan 1:M, maka pada ERD, perlu :

- Tambah KUNCI ASING pada JADUAL yang dikenalpasti


sebagai hubungan M tersebut.
- Contoh hubungan : MURID daftar SUBJEK
- Kardinaliti yang disetkan : Seorang MURID boleh daftar
banyak SUBJEK

1 M
MURID daftar SUBJEK
JIKA kardinaliti yang dikenalpasti ialah KARDINALITI
hubungan M:N, maka pada ERD, perlu :

M N
MURID pinjam BUKU TEKS
JIKA kardinaliti yang dikenalpasti ialah KARDINALITI
hubungan M:N, maka pada ERD, perlu :

- Wujudkan JADUAL BARU. Jadual baru ini dikenali sebagai


JADUAL KOMPOSIT.
- Letakkan pada jadual baru ini, kunci primer dari jadual
jadual lain yang berhubungan. Maknanya perlu tengok
ENTITI dan HUBUNGAN yang digunakan / telah
dikenalpasti. Kunci Primer inilah yang membentuk
COMPOSIT PRIMARY KEY. Iaitu ada lebih dari satu kunci
primer dalam jadual komposit tersebut.
JIKA kardinaliti yang dikenalpasti ialah KARDINALITI
hubungan 1:1, maka pada ERD, perlu :

1 1
MURID daftar SUBJEK
JIKA kardinaliti yang dikenalpasti ialah KARDINALITI
hubungan 1:1, maka pada ERD, perlu :
- Tentukan OPTIONALITY entity : Mandatory atau Optional
- Letakkan KUNCI PRIMER pada JADUAL yang optionality
berjenis MANDATORY ke dalam jadual yang dikenalpasti
ada optionality berjenis OPTIONAL untuk dijadikan
sebagai KUNCI ASING.
- Contoh hubungan : MURID daftar SUBJEK
- Kardinaliti yang disetkan : Seorang MURID boleh daftar
banyak SUBJEK
- Ada 3 jenis optionality antara 2 ENTITI yang dihubungkan yang perlu dilihat dan
ditentukan.
- PERBINCANGAN TENTANG OPTIONALITY ADALAH LEBIH DETAIL, MAKA CUKUP
SEKADAR CIKGU TAHU BAGAIMANA NAK LETAK KUNCI ASING SAHAJA PADA
JADUAL YANG BETUL.

MANDATORY pada kedua-dua


1
entity yang berhubung
OPTIONALITY MANDATORI pada satu entity
- Mandatory 2 dan OPTIONAL pada satu lagi
- Optional entity yang berhubung
OPTIONAL pada kedua-dua
3
entity
Kesimpulan tentang KARDINALITI dan kaitan penggunaan KUNCI
ASING serta KUNCI PRIMER KOMPOSIT
1:1 relationships
Depending on the optionality of the relationship, the entities are either
combined or the primary key of one entity type is placed as a foreign key
in the other relation.

1:M relationships
The primary key from the `one side' is placed as a foreign key in the
`many side'.

M:N relationships
A new relation is created with the primary keys from each entity forming
a composite key.
PENORMALAN terdiri daripada beberapa
siri garis panduan yang boleh membantu kita
membina struktur pangkalan data hubungan
yang baik.
Zero Normal Form (0NF) or
Unnormalized Normal Form (UNF)
First Normal Form (1NF)
Untuk mencapai bentuk 1NF, pastikan pada peringkat 1NF, ada
perkara berikut telah disediakan :

1. Tentukan ATRIBUT-ATRIBUT SALING BERKAITAN dan letakkan


dalam sebuah JADUAL.
2. Pastikan tiada KUMPULAN DATA BERULANG
3. Wujudkan KUNCI PRIMER
1)Tentukan ATRIBUT-ATRIBUT SALING BERKAITAN dan
letakkan dalam sebuah JADUAL.

namaPelajar alamatPelajar tarikhLahirPelajar

Meera No.1, Jalan 23, Taman 45, 67000 Sepang, Selangor 1/2/2001

Lisa No. 9, Jalan 8, Taman 765, 43000 Bandar X, Selangor 3/4/2001

namaBuku jumlahMukaSurat tahunTerbit hargaBuku

Beginning SQL 501 2005 RM 89.90


1)Tentukan ATRIBUT-ATRIBUT SALING BERKAITAN dan
letakkan dalam sebuah JADUAL.

namaKereta kuasaKereta warnaKereta nomborPlat hargaKereta

Altis 2000 cc Metalic Silver B 7289 DW RM 123,456.78

Velfire 2500 cc Jet Black F 9827 RM 234,567.89

namaBuku jumlahMukaSurat tahunTerbit hargaBuku

Beginning SQL 501 2005 RM 89.90


1)Tentukan ATRIBUT-ATRIBUT SALING BERKAITAN dan
letakkan dalam sebuah JADUAL.

namaKereta kuasaKereta warnaKereta nomborPlat hargaKereta

Altis 2000 cc Metalic Silver B 7289 DW RM 123,456.78

Velfire 2500 cc Jet Black F 9827 RM 234,567.89


Adakah.. Adakah.. Adakah.. Adakah.. Adakah..

bergantung kepada
1NF
Pada keadaan 0NF, kita akan dapati banyak baris rekod sama telah muncul
DARI
berulang-ulang disebabkan ada data pada lajur atribut yang juga telah direkod
0NF
masuk lebih dari satu nilai ataupun nilai yang sama direkod masuk beberapa kali.
Maka untuk mencapai kriteria 1NF, kita perlu bahagikan Jadual 0NF itu kepada 2
atau lebih jadual. Tujuan dibahagi / dipecahkan / diasingkan semua kumpulan data
BAHAGI
berulang pada Jadualnya yang tersendiri adalah supaya kumpulan data berulang
JADUAL
itu boleh duduk dalam jadual khas serta boleh dibuangkan data-data yang
berulang tersebut.
Pada setiap jadual yang ada, tetapkan satu atribut menjadi KUNCI PRIMER. Jika
KUNCI
tiada atribut yang boleh menjadi kunci primer, maka ciptakan satu atribut baru
PRIMER
yang boleh bertindak sebagai kunci primer.
SATU Every row-and-column intersection contains exactly one value from the applicable domain (and
DATA nothing else).
a1 a2 a3 a4 IDz a1 a2

Dari 0NF
A001 Q J
Q J R,T A,S JADUAL A002 W K
W K R,U H AAA A007 E L

E L I,R,P F,G,H Kodx a3


Pecahkan / bahagikan entity dan kumpulan atribut B100 R
yang ada data berulang saja kepada jadualnya yang B101 T
tersendiri. Kemudian, buang data yang berulang. B102 U
JADUAL B103 I

a1 a2 A3 a4
BBB B109 P

Q J R A ID_c a4
W K T S C900 A
Wujudkan KUNCI
E L R H C901 S
PRIMER pada
U F
setiap jadual
C903 F 1NF
I G JADUAL C904 G
R H CCC C905 H
P
JADUAL AAA JADUAL BBB JADUAL CCC Semua Jadual dah
IDz a1 a2 Kodx a3 ID_c a4 capai 1NF
A001 Q J B100 R C900 A Data dalam jadual dah
jadi atomik
A002 W K B101 T C901 S
Tiada kumpulan data
A007 E L B102 U C903 F berulang
B103 I C904 G Kunci Primer diwujudkan
Atribut dalam Jadual
B109 P C905 H
entitinya
BAGAIMANA dengan
2NF : kita nak binakan relationship
JADUAL AAA-BBB JADUAL BBB-CCC JADUAL CCC? Untuk
bagi jadual jadual yang ada dengan
IDz Kodx . Kodx ID_c hubungkan jadual, maka
menggunakan Jadual Komposit
A001 B100 kita perlu lihat hubungan
2NF : Jadual Komposit akan
A001 B101 jadual CCC itu dengan
menghubungkan Jadual2 lain. Maka
jadual lain. Jika patut
sila faham HUBUNGAN utama yang A002 B100
hubungkan dengan JADUAL
dikenalpasti bagi sistem yang nak A002 B102
BBB maka binalah Jadual
dibangunkan. Dari kefahaman A007 B103
Komposit BBB-CCC. Jika
hubungan itu, bolehlah kita bina A007 B100 patut hubungkan dengan
JADUAL KOMPOSIT yang A007 B109 JADUAL AAA maka binalah
menerangkan tentang hubungan itu.
Jadual Komposit AAA-CCC.
INSERT Situasi memasukkan data yang sama berulang kali bagi setiap rekod akan menyebabkan penggunaan storan data
ANOMALY bertambah dan tidak efisyen. Situasi ini dikenali sebagai masalah INSERTION ANOMALY.

{
rekod sedia
noKP namaMurid kelas hobi ..
ada yang 010203-45-6789 Hanif 4A Menjahit manik
telah
dimasukkan 020304-56-7890 Zahidah 4A Main gitar
sebelum ini
030405-67-8900 Khaireen 4B Main basikal

Katakan KHAIREEN ada 2 hobi yang nak dimasukkan dalam pangkalan data. hobi
Tapi, hanya satu data sahaja yang boleh diletakkan dalam satu atribut HOBI Menjahit
pada satu masa. manik
Maka untuk menambah hobi kedua, kita terpaksa masukkan baris rekod baru bagi Main gitar
rekod si KHOIREEN ini yang sama iaitu nokp, nama dan kelas, dan diikuti hobi Main basikal,
keduanya! Membuat kek
Tambahan data

{
baru yang nak
dimasukkan 030405-67-8900 Khaireen 4B Membuat kek
bagi rekod yang
sama
Jika storan rekod noKP namaMurid kelas hobi ..
sebegini dibenarkan, 010203-45-6789 Hanif 4A Menjahit manik
maka jadual ini telah
merekodkan data 020304-56-7890 Zahidah 4A Main gitar
yang tidak atomik. 030405-67-8900 Khaireen 4B Main basikal,
Dan tidak jadi 1NF Membuat kek
noKP namaMurid kelas hobi ..
Jadual ini telah
010203-45-6789 Hanif 4A Menjahit manik
merekodkan data 020304-56-7890 Zahidah 4A Main gitar
yang berulang
030405-67-8900 Khaireen 4B Main basikal
030405-67-8900 Khaireen 4B Membuat kek
Kumpulan Data Berulang
Kumpulan data berulang ialah atribut yang menyimpan lebih dari
satu nilai pada setiap baris rekod dalam jadual.
1. Contoh di atas menunjukkan satu jadual yang ada maklumat tentang senarai nama anak-
anak bagi seorang pekerja.
2. HUBUNGAN = PEKERJA mempunyai ANAK.
3. KARDINALITI = (1:M) Seorang PEKERJA boleh mempunyai 0, 1 atau ramai ANAK
4. Kenapa nak buang kumpulan data berulang dalam jadual diatas?
BAGAIMANA NAK URUSKAN KUMPULAN DATA
YANG BERULANG INI?

Cara yang BETUL


Cara yang SALAH
Second Normal Form (2NF)
Untuk mencapai bentuk 2NF, pastikan pada peringkat 1NF, ada
perkara berikut telah disediakan :

1. Jadual berada pada bentuk 1NF dan memenuhi ciri-ciri 1NF.


2. Semua atribut bukan kunci (atribut biasa) mestilah mempunyai
kebergantungan fungsi penuh terhadap atribut kunci primer.
3. there must be no partial dependences of any of the columns on
the primary key. If there are, split into new table and link them
For example, imagine that you decide to store a list of films and people who starred in
them. The data being stored is film ID, film name, actor ID, actor name, and date of
birth.
Third Normal Form (3NF)
Mesti dah capai 2NF

[Atribut biasa] bergantung fungsi kepada


[atribut biasa yang lain] yang bergantung fungsi pula kepada
[atribut kunci / PRIMARY KEY]
PRIMARY ATRIBUTE ATRIBUT
KEY, W X Y
Atribut Atribut Atribut
kunci biasa yg biasa
lain

[Atribut biasa] bergantung fungsi kepada


[atribut biasa yang lain] yang bergantung fungsi pula kepada
[atribut kunci / PRIMARY KEY]
Contoh Perbincangan
PENORMALAN
Tahu : apakah SISTEM yang nak dibangunkan?
Sistem Pendaftaran Pinjaman Buku
Perpustakaan SMKPSP
Faham : apa ENTITI dan HUBUNGAN yang asas
bagi sistem itu?
MURID pinjam BUKU
ERD ini hanyalah peringkat Faham : apa KARDINALITI yang asas bagi
permulaan sahaja. Setelah
penormalan dilakukan, maka
perhubungan yang dinyatakan
ERD dan skema hubungan
juga boleh diubahsuai
M N
supaya selaras dengan
MURID pinjam BUKU
PENORMALAN
0NF

(nama, kelas, alamat, poskod, daerah, jantina, notel,


namaBuku, jenisBuku, kodBuku, pengarang, penerbit,
jumlahMS, tarikhPinjam, tarikhPulang)
1NF

MURID (IDMurid <KP> , nama, kelas, alamat, poskod, daerah, jantina,


notel, namaBuku, jenisBuku, kodBuku, pengarang, penerbit, jumlahMS,
tarikhPinjam, tarikhPulang)

1NF

MURID (IDMurid <KP>, nama, kelas, alamat, poskod, daerah, jantina,


notel)
BUKU (IDBuku <KP>, namaBuku, jenisBuku, kodBuku, pengarang,
penerbit, jumlahMS, tarikhPinjam, tarikhPulang)
2NF
MURID (IDMurid <KP>, nama, kelas, alamat, poskod, daerah, jantina,
notel)
BUKU (IDBuku <KP>, namaBuku, jenisBuku, kodBuku, pengarang,
penerbit, jumlahMS,)
PINJAM (IDMurid <KK>, IDBuku <KK>, tarikhPinjam, tarikhPulang)

2NF
MURID (IDMurid <KP>, nama, kelas, alamat, poskod, daerah, jantina,
notel)
BUKU (IDBuku <KP>, namaBuku, jenisBuku, kodBuku, pengarang,
penerbit, jumlahMS,)
PINJAM (IDMurid <KK>, IDBuku <KK>, tarikhPinjam, tarikhPulang)
3NF
MURID (IDMurid <KP>, nama, kelas, alamat, poskod <KA>, jantina, notel)
POSKOD (poskod <KP>, daerah)
BUKU (IDBuku <KP>, namaBuku, jenisBuku, kodBuku, pengarang, penerbit,
jumlahMS)
PINJAM (IDMurid <KK>, IDBuku <KK>, tarikhPinjam, tarikhPulang)

3NF
MURID (IDMurid <KP>, nama, kelas, alamat, poskod <KA>, jantina, notel)
POSKOD (poskod <KP>, daerah)
BUKU (IDBuku <KP>, namaBuku, jenisBuku, kodBuku, pengarang, penerbit,
jumlahMS)
PINJAM (IDMurid <KK>, IDBuku <KK>, tarikhPinjam, tarikhPulang)
M N
MURID pinjam BUKU

Pada asalnya, set hubungan yang dikenalpasti pada


peringkat awal adalah seperti berikut :
nama
IDMurid
namaBuku
kelas kodBuku
alamat
IDMurid namaBuku
jantina

notel
1 M M 1
MURID pinjam BUKU

1
kodBuku
setelah
ada
PENORMALAN namaBuku jumlahMs

dilakukan, maka jenisBuku penerbit


poskod 1
ubahsuai ERD anda
pengarang
POSKOD agar selaras dengan
daerah
3NF yang terhasil
BENGKEL PHP IAB NILAI
11 13 September 2017
index.html

include header.php

include
include
sidebar.
menupublic.php
php

include footer.php
index.html

html
css
php
mySQL
javascript
LATIHAN
SISTEM PENDAFTARAN 3 UNIT KOKURIKULUM SMKPSP

MURID daftar UNIT KOKURIKULUM

Seorang murid boleh daftar 3 UNIT


KOKURIKULUM berbeza kategori
(M:N)
0NF
(nama, kelas, ic, jantina, ,
unitKoku, kategoriKoku,
tarikhDaftar)
1NF
MURID (IDMurid<KP>, nama, kelas,
ic, jantina, , unitKoku,
kategoriKoku, tarikhDaftar)
2NF
MURID (IDMurid<KP>, nama, kelas, ic, jantina, , )

UNITKOKU (IDUnit<KP>, unitKoku, kategoriKoku,)

MURID_UNITKOKU (IDMurid<KK>, IDUnit<KK>,


tarikhDaftar)
3NF
MURID (IDMurid<KP>, nama, kelas, ic,
IDjantina<KA>, , )
UNITKOKU (IDUnit<KP>, unitKoku, kategoriKoku,)

MURID_UNITKOKU (IDMurid<KK>, IDUnit<KK>,


tarikhDaftar)
JANTINA (IDJantina<KP>, Jantina)
RUMUSAN