99
PERANCANGAN SISTEM BASIS DATA
4.1 Perancangan Sistem Basis Data
Perancangan basis data yang dirancangan untuk aplikasi website “MENU MAKANAN SEHAT”
1. Perancangan basis data konseptual (conceptual database design).
2. Perancangan basis data logical (logical database design).
3. Perancangan basis data fisikal (physical database design).
4.1.1 Perancangan Basis Data Konseptual
Perancangan konseptual perlu dilakukan disamping perancangan
basic data logical dan fisikal. Perancangan konseptual akan menunjukan
entitas dan relasinya berdasarkan proses yang akan dirancang dari data
yang diberikan perusahaan. Data yang ada akan dikembangkan dengan
representasi secara konseptual yang mencakup :
1. Mengidentifikasi tipe entitas.
2. Mengidentifikasi tipe relationship.
3. Mengidentifikasi dan mengasosiasikan atribut sesuai dengan tipe
entitas dan relationship.
4. Menentukan domain atribut.
5. Menentukan atribut candidate key dan Primary key.
7. Memeriksa model terhadap redudansi.
8. Me-review model data konseptual local terhadap kebutuhan user.
4.1.1.1 Mengidentifikasi Tipe Entitas
Tahap pertama adalah mengidentifikasi jenis entitas.
Mengidentifikasi dapat dilakukan dengan cara memeriksa
spesifikasi kebutuhan dari pengguna. entitas utama yang
Nama Entitas Deskripsi Kejadian
Member
Entitas yang berisi informasi user yang
sudah menjadi member
Setiap member dapat melakukan
kegiatan seperti upload
resep,video,tips,dan pembelian barang
Admin
Entitas yang berisi
informasi kegiatan admin
Admin dapat melakukan upload
tips, info, resep, video,dan dapat melakukan delete member.
Buku
Entitas yang berisi informasi buku yang
dijual
Setiap buku akan dilakukan pembaruan
dalam jumlah quantity, harga, dan
diskon.
InfoKesehatan
Entitas yang berisi informasi tentang
artikel kesehatan
Setiap artikel mempunyai ID dan
artikel dibuat hanya dibuat oleh admin
namun dapat dilihat oleh member dan
non member.
Promo
Entitas yang berisi informasi tentang
promo atau diskon pada setiap tempat
makan
Setiap tempat makan dapat melakukan
promo.
Berita
Entitas yang berisi informasi berita
kesehatan
Hanya admin yang dapat melakukan
upload berita .
Tips
Entitas yang berisi informasi tips
kesehatan
Hanya admin yang dapat melakukan
upload tips.
Tabel 4.1 Tabel Tipe Entitas
kesehatan upload resep, admin dapat melakukan
delete dan edit resep dan insert.
Video
Entitas yang berisi informasi video
tutorial resep kesehatan
Admin dapat melakukan delete dan edit
video dan juga insert.
Pesan
Entitas yang berisi informasi tentang
pesanan member
Setiap member dapat melakukan lebih
dari satu kali pemesanan.
TarifKirim
Entitas yang berisi informasi yang
berisi harga ongkos kirim tiap kota
Pada entitas ini memberikan informasi
detail tentang tarif barang antar kota
untuk mempermudah admin dalam
mengirimkan barang.
Feedback
Entitas yang berisi informasi kritik dan
saran dari peserta
Pada entitas ini menyimpan informasi
kritik dan saran dari peserta.
Foto Entitas ini berisi semua foto-foto
Pada entitas ini menyimpan semua foto
4.1.1.2 Mengidentifikasi Tipe Relationship
Mengidentifikasi tipe relationship bertujuan sebagai
mengidentifikasi hubungan-hubungan yang penting dan yang
terdapat di tiap-tiap entitas.
Langkah-langkah penting dalam identifikasi tipe relational adalah
1. Membuat ERD
2. Menentukan pembatas multiplicity dari tipe relational
Nama Entity Multipl icity
Relationship Multipl icity
Nama entity
Member 1..* Memberikan 1..1 Feedback
1..* Memasukan 1..* Resep
1..1 Melakukan 1..* Pesan
Admin 1..* Memperbaruhi 1..1 Buku
1..* Memasukan 1..* Resep
1..* Mengunggah 1..1 Video
1..* Memasukan 1..1 Tips
1..* Memasukan 1..1 Info
1..* Mengisi 1..1 Promo
1..* Memperbaruhi 1..1 TarifKirim
Pesan 1..* Dilakukan 1..1 Member
1..1 Memiliki 1..* TarifKirim
1..* Memiliki 1..1 Buku
TarifKirim 1..* Dimiliki 1..1 Pesan
1..1 Diperbaruhi 1..* Admin
Buku 1..1 Diperbaruhi 1...* Admin
1..1 Dimiliki 1..* Pesan
Resep 1..* Dimasukan 1..* Member
1..* Dimasukan 1..* Admin
Video 1..1 Diunggah 1..* Admin
Tips 1..1 Dimasukan 1..* Admin
Berita 1..1 Dimasukan 1..* Admin
Promo 1..1 Diisi 1..* Admin
Tabel 4.2 Tabel Tipe Relationship
4.1.1.3 Mengidentifikasi Atribut tiap Entitas
Pada sub bab ini akan ditentukan atribut tiap entitas, tipe
data, dan panjangnya. Berikut ini merupakan tabel yang
menggambarkan atribut dari entity.
Nama Entity
Atribut Deskripsi Tipe data
dan
panjangnya
Null Multi-Valued
Admin IdAdmin Admin ID Int(10) No No
Username Nama Admin Varchar(50) No No
Password Password
admin
Varchar(7) No No
Buku IdBuku Buku ID Int(10) No No
IdAdmin Admin ID Int(10) No No
IdKategoriBuku Kategori Buku
ID
Int(10) No No
NamaBuku Nama buku Varchar(50) No No
NamaKategoriBuku Nama kategori
buku
Varchar(50) No No
Harga Harga buku Bigint No No
Stok Stok buku Int(50) No No
IdPenerbit Penerbit ID Int(10) No No
IdPengarang Pengarang ID Int(10) No No
NamaPengarang Nama
Pengarang
Varchar(50) No No
Berita IdBerita Berita ID Int(10) No No
IdAdmin Admin ID Int(10) No No
JudulBerita Judul berita Varchar(50) No No
IsiBerita Isi berita Longtext No No
Foto Foto Varchar (50) No No
FeedBack IdFeedBack Feedback ID Int(10) No No
IdMember Member ID Int(10) No No
Username Nama user Varchar(50) No No
Komentar Komentar
member
Longtext No No
Info IdInfo Info ID Int(10) No No
IdAdmin Admin ID Int(10) No No
JudulInfo Judul info Varchar(50) No No
IsiInfo Isi info Longtext No No
Foto Foto Varchar (50) No No
Member IdMember Member ID Int(10) No No
Username Nama user Varchar(50) No No
Password Password
member
ConfPass Confrim Password Member Varchar(7) No No Phone Nomor telephone user Int(15) No Yes Alamat Alamat member Varchar(50) No No
Foto Foto Varchar(50) No No
Email Email member Varchar(50) No No
Gender Jenis Kelamin ENUM
(‘F’,’M’)
No No
Kota Kota tempat
tinggal ember
Varchar(50) No No
KodePost Kode Post
member
Int(15) No No
IdCaptcha Captcha ID Int(10) No No
CaptchaTime Captcha Time Int(15) No No
IpAddress IP Address Varchar(20) No No
Word Word Varchar(50) No No
Tarif
Kirim
IdTarif
Kirim
Tarif kirim ID Int(10) No No
Kota Nama kota Varchar(50) No No
KodePost Kode Pos Char(15) No No
Harga Harga kirim Bigint No No
Lama Lama
pengiriman
DATE No No
Pesan IdPesan Pesan ID Int(10) No No
IdMember Member ID Int(10) No No
IdBuku Buku ID Int(10) No No
IdTarifKirim Tarif Kirim ID Int(10) No No
Username Nama member Varchar(50) No No
Alamat Alamat member Varchar(50) No No Phone Nomor telephone member Int(15) No Yes HargaTotal Hasil perkalian dari quantity(qty) dengan harga Bigint No No Total Pembayaran Total Pembayaran Bigint No No
Pemesanan KodePembayaran Nomor pembayaran Int(10) No No TanggalPembayaran Tanggal Pembayaran DATE No No
KodePost Kode Pos Int(15) No No
NamaBuku Nama buku Varchar(50) No No
Qty Jumlah buku
yang dibeli
Int(50) No No
harga Harga tiap
buku
Bigint No No
diskon Diskon dari
seluruh total
pembayaran
Tinyint No No
Status Status dari
pesanan
Varchar(50) No No
Promo IdPromo Promo ID Int(10) No No
IdAdmin Int(10) No No IdNama TempatMakan Nama tempat makan ID Int(10) No No
DeskripsiPromo Deskripsi dari
promo
Longtext No No
NamaTempatMakan Nama tempat
makan
Varchar(50) No No
Harga Harga Tempat
makan Bigint No No Diskon Diskon Tempat makan Tinyint No No Deskripsi Keterangan promo tempat makan Longtext No No TanggalDiskon Tanggal Diskon Date No No
Resep IdResep Resep ID Int(10) No No
IdAdmin Admin ID Int(10) No No
IdMember Member ID Int(10) No No
NamaResep ResepNama Varchar(50) No No
IsiResep Deksripsi
Resep
Longtext No No
Foto Foto Varchar(50) No No
IdKategori
Resep
Kategori
Resep ID
Tabel 4.3 Atribut tiap Entitas
NamaKategoriResep Nama
Kategori
Resep
Varchar(50) No No
Tips IdTips Tips ID Int(10) No No
IdAdmin Admin ID Int(10) No No
JudulTips Judul tips Varchar(50) No No
Foto Foto Varchar(50) No No
IsiTips Isi tips Longtext No No
Video IdVideo Video ID Int(10) No No
IdKategori
Video
Kategori video
ID
Int(10) No No
IdAdmin Admin ID Int(10) No No
JudulVideo Judul Video Varchar(50) No No
NamaKategoriVideo Nama kategori
video
Varchar(50) No No
Deskripsi Deskripsi
Video
4.1.1.4 Menentukan Domain Atribut
Pada tahap ini ditentukan nilai-nilai legal dari tiap
atribut. Nilai tesebut dapat dilihat pada tabel berikut ini :
Name Entity
Atribut Domain Atrribute
Admin IdAdmin Berupa integer, dengan auto-incremeant
Username Berupa variant karakter dengan
maksimal 50 karakter
Password Berupa variant karakter dengan
maksimal 7 karakter
Buku IdBuku Berupa integer, dengan auto-incremeant
IdAdmin Berupa integer, dengan auto-incremeant
IdKategoriBuku Berupa integer, dengan auto-incremeant
NamaBuku Berupa variant karakter dengan
maksimal 50 karakter
NamaKategoriBuku Berupa variant karakter dengan
maksimal 50 karakter
Harga Berupa angka
Stok Berupa angka
IdPenerbit Berupa integer, dengan auto-incremeant
maksimal 50 karakter
IdPengarang Berupa integer, dengan auto-incremeant
NamaPengarang Berupa variant karakter dengan
maksimal 50 karakter
Berita IdBerita Berupa integer, dengan auto-incremeant
IdAdmin Berupa integer, dengan auto-incremeant
JudulBerita Berupa variant karakter dengan
maksimal 50 karakter
IsiBerita Berupa text
Foto Berupa variant karakter dengan
maksimal 50 karakter
FeedBack IdFeedBack Berupa integer, dengan auto-incremeant
IdMember Berupa integer, dengan auto-incremeant
Username Berupa variant karakter dengan
maksimal 50 karakter
Komentar Berupa text
Info IdInfo Berupa integer, dengan auto-incremeant
IdAdmin Berupa integer, dengan auto-incremeant
JudulInfo Berupa variant karakter dengan
maksimal 50 karakter
IsiInfo Berupa text
maksimal 50 karakter
Member IdMember Berupa integer, dengan auto-incremeant
IdRegistrasi Berupa integer, dengan auto-incremeant
IdCaptcha Berupa integer, dengan auto-incremeant
Username Berupa variant karakter dengan
maksimal 50 karakter
Password Berupa variant karakter dengan
maksimal 7 karakter
Phone Berupa angka
Alamat Berupa variant karakter dengan
maksimal 50 karakter
Foto Berupa variant karakter dengan
maksimal 50 karakter
Email Berupa variant karakter dengan
maksimal 50 karakter termasuk ”@”,”.”
Gender Berupa pilihan antara “Female(F)” atau
“Male(M)”
MyHealty Berupa text
CaptchaTime Berupa integer dengan maksimal 15
karakter
IpAddress Berupa variant karakter dengan
Word Berupa variant karakter dengan maksimal 50 karakter Tarif Kirim IdTarif Kirim
Berupa integer, dengan auto-incremeant
IdAdmin Berupa integer, dengan auto-incremeant
Kota Berupa variant karakter dengan
maksimal 50 karakter
KodePost Berupa integer karakter dengan
maksimal 15 karakter
Harga Berupa angka
Lama Berupa variant karakter dengan
maksimal 50 karakter
Pesan IdPesan Berupa integer, dengan auto-incremeant
IdMember Berupa integer, dengan auto-incremeant
IdBuku Berupa integer, dengan auto-incremeant
IdTarifKirim Berupa integer, dengan auto-incremeant
Username Berupa variant karakter dengan
maksimal 50 karakter
Alamat Berupa variant karakter dengan
maksimal 50 karakter
Phone Berupa interger karakter dengan
HargaTotal Berupa angka
Total
Pembayaran
Berupa angka
TanggalPesan Berupa tanggal (DD/MM/YYYY)
KodePembayaran Berupa integer, dengan auto-incremeant
TanggalPembayaran Berupa tanggal (DD/MM/YYYY)
KodePost Berupa interger karakter dengan
maksimal 15 karakter
NamaBuku Berupa variant karakter dengan
maksimal 50 karakter
Qty Berupa interger karakter dengan
maksimal 50 karakter
harga Berupa angka
diskon Berupa angka
status Berupa variant karakter dengan
maksimal 50 karakter
Promo IdPromo Berupa integer, dengan auto-incremeant
IdNama
TempatMakan
Berupa integer, dengan auto-incremeant
NamaPromo Berupa variant karakter dengan
maksimal 50 karakter
DeskripsiPromo Berupa text
NamaTempatMakan Berupa variant karakter dengan
maksimal 50 karakter
Harga Berupa angka
Diskon Berupa angka
DeskripsiTempatMakan Berupa variant karakter dengan
maksimal 50 karakter
Resep IdResep Berupa integer, dengan auto-incremeant
IdAdmin Berupa integer, dengan auto-incremeant
IdMember Berupa integer, dengan auto-increament
NamaResep Berupa variant karakter dengan
maksimal 50 karakter
IsiResep Berupa text
Foto Berupa integer, dengan auto-incremeant
IdKategori
Resep
Berupa integer, dengan auto-incremeant
NamaKategoriResep Berupa variant karakter dengan
Tips IdTips Berupa integer, dengan auto-incremeant
IdAdmin Berupa integer, dengan auto-incremeant
JudulTips Berupa variant karakter dengan
maksimal 50 karakter
IsiTips Berupa text
Foto Berupa variant karakter dengan
maksimal 50 karakter
Video IdVideo Berupa integer, dengan auto-incremeant
IdKategori
Video
Berupa integer, dengan auto-incremeant
IdAdmin Berupa integer, dengan auto-incremeant
JudulVideo Berupa variant karakter dengan
maksimal 50 karakter
NamaKategoriVideo Berupa variant karakter dengan
maksimal 50 karakter
Deskripsi Berupa text
4.1.1.5 Menentukan Candidate Key dan Primary key
Tujuan dari sub bab ini adalah untuk mengidentifikasi
Candidate key dari setiap entitas dan jika memang terdapat lebih dari satu candidate key, pilihlah salah stau untuk menjadi
Primary key.
Nama Entity Candidate key Primary key
Admin IdAdmin IdAdmin
Username
Buku IdBuku IdBuku
IdAdmin IdKategoriBuku NamaBuku NamaKategoriBuku IdPenerbit IdPengarang
Berita IdBerita IdBerita
IdAdmin
JudulBerita
FeedBack IdFeedBack IdFeedback
IdMember
Username
IdAdmin
JudulInfo
Member IdMember IdMember
IdRegistrasi IdCaptcha Username Tarif Kirim IdTarif Kirim IdTarifKirim IdAdmin Kota
Pesan IdPesan-IdBuku IdPesan-IdBuku
IdPesan-IdMember IdPesan-Telp IdPesan- IdTarifKirim IdPesan-Username IdPesan-KodePembayaran
Promo IdPromo IdPromo
IdAdmin
IdNamaTempatMakan
Resep IdResep IdResep
IdAdmin
IdMember
IdKategoriResep
NamaResep
Tips IdTips IdTips
IdAdmin
JudulTips
Video IdVideo IdVideo
IdKategori
Video
IdAdmin
JudulVideo
Admin IdAdmin Member IdMember Pesan - IdPesan - IdBuku feedback IdFeedBack memberi 1..* 1..1 melakukan 1..* 1..* Resep IdResep memasukan memasukan 1..* 1..* 1..* 1..* Video IdVideo Buku IdBuku TarifKirim IdTarifKirim memiliki 1..* 1..* memiliki 1..* 1..1 memasukan 1..1 1..* memperbaruhi 1..1 1..* Berita IdBerita Info IdInfo Tips IdTips Promo IdPromo mengunggah 1..* 1..1 memasukan 1..1 1..* memasukan 1..* 1..1 memasukan 1..* memasukan 1..* 1..1 1..* 1..* 1..*
Gambar 4.2 Model Konseptual dengan Primary key
4.1.1.6 Pertimbangan Penggunaan EERD (Optional)
Pada tahap ini bertujuan untuk mempertimbangkan penggunaan
model Enhanced Relationship Diagram dimana dalam ini memiliki 3 konsep yaitu specialization-generalization, aggregation, dan
composition. Pada ERD yang dibuat tidak tedapat 3 konsep utama tersebut maka tahap ini tidak perlu dilakukan.
4.1.1.7 Cek Model Terhadap Redudansi
Pada tahap ini digunakan untuk melakukan pemerikasaan apakah
terdapat redudansi dalam model basis data, langkah ini bertujuan untuk
menghindari dua entitas yang memiliki object yang sama sehingga kedua
entitas itu harus digabungkan menjadi satu. Dari pemeriksaan ulang yang
dilakukan terhadap relasi one-to-one tidak ditemukan adanya redudansi,
sehingga tidak diperlukan penghilangan relasi yang redudansi
.
4.1.1.8 Validasi Model Konseptual dengan Transaksi User
Untuk memastikan rancangan konseptual dari basis data ynag
dibangun sesuai dengan transaksi yang dibutuhkan pengguna maka
digunakan dua buah pendekatan :
• Mendeskripsikan transaksi
• Menggambarkan panah transaksi pada ERD
Adapun transaksi-transaksinya adalah sebagai berikut
a. Admin memasukan data buku
b. Admin memasukan data resep
c. Admin memasukan data video
d. Admin memasukan data promo
e. Admin memasukan info
f. Admin memasukan berita
h. Memperbaruhi data tarif kirim barang
i. Member melakukan upload resep
j. Member melakukan pemesanan barang
k. Dapatkan data tarif kirim barang untuk melakukan pengiriman barang
l. Member memberikan feedback
m. Pesan memiliki data buku
4.1.2 Perancangan Basis Data Logical
4.1.2.1 Hilangkan fitur-fitur yang tidak Kompatibel
Dalam menghilangkan fitur yang tidak kompatibel dengan model
relational maka langkah-langkah yang akan digunakan antara lain:
1. Menghilangkan many to many (*:*)
a. Hubungan many to many (*:*) Member dengan Resep
Gambar 4.4 menghilangkan (*:*) Member dengan Resep
b. Hubungan many to many (*:*) Admin dengan Resep
G
Gambar 4.5 menghilangkan (*:*) Admin dengan Resep Resep Member 0..* 0..* Resep Member 0..* 0..* Detail_Resep Id_Kategori_Resep 1..1 1..1 Admin Resep 1..* 1..* Detail_Resep Id_Kategori_Resep 1..1 1..1
2. Menghilangkan attribute Multivalue
Tidak terdapat attribute Multivalue dalam tabel “menu
makanan sehat”.
4.1.2.2 Bentuk Tabel atau Relasi untuk Model Data Logikal 4.1.2.2.1 Identifikasi Strong Entity
1. Admin (IdAdmin, Password, Username)
Primary key : IdAdmin
2. Member (IdMember, Username, Password, Telp, AlamatMember, Foto,
MyHealty, gender, Kota, KodePost, IdCaptcha, CaptchaTime, IpAddress, Word)
Primary key : IdMember
3. Pesan (IdPesan, IdMember, IdBuku, IdTarifKirim, Username, Alamat, Telp,
TotalPembayaran, TanggalPesan, KodePembayaran, TanggalPembayaran,
NamaBuku, Qty, harga, diskon, status)
Primary key : IdPesan
4. Buku (IdBuku,IdAdmin, IdKategoriBuku, NamaBuku, NamaKategoriBuku,
Harga, Stock, Diskon, IdPenerbit, NamaPenerbit, IdPengarang, NamaPengarang)
Primary key : IdBuku
5. Resep (IdResep,IdAdmin, IdMember, NamaResep, NamaKategoriResep, Foto,
Deskripsi, IdKategoriResep)
Primary key : IdResep
6. Video (IdVideo, IdAdmin, JudulVideo, Deskripsi, IdKategoriVideo,
Primary key : IdVideo
7. Tarif Kirim Barang (IdTarifKirim, IdAdmin, Kota, KodePost, Harga, Lama)
Primary key : IdTarifKirim
8. Promo (IdPromo, IdAdmin, IdNamaTempatMakan, NamaPromo,
DeksripsiPromo, NamaTempatMakan, DeskripsiTempatMakan, Harga, Diskon,
TanggalDiskon)
Primary key : IdPromo
9. Tips (IdTips, IdAdmin, NamaTips, Foto, Deskripsi)
Primary key : IdTips
10. Berita (IdBerita, IdAdmin, JudulBerita, IsiBerita, Foto)
Primary key : IdBerita
11. Info (IdInfo, IdAdmin, Judul, IsiInfo, Foto)
Primary key : IdInfo
12. Feedback (IdFeedback, IdMember, Username, Komentar)
4.1.2.2.2 Identifikasi Weak Entity
Tidak terdapat weak entity dalam rancangan entity ini.
4.1.2.2.3 Relasi biner one to many (1:*)
a. Admin mengunggah Video
Admin (IdAdmin,
Password, Username)
Primary key : IdAdmin
Video (IdVideo, IdAdmin,
JudulVideo, Deskripsi,
IdKategoriVideo,NamaKateg
oriVideo)
Primary key : IdVideo Foreign key : IdAdmin
b. Admin memasukan berita
Admin (IdAdmin,
Password, Username)
Primary key : IdAdmin
Berita (IdBerita, IdAdmin,
JudulBerita, IsiBerita, Foto)
Primary key : IdBerita Foreign key : IdAdmin
c. Admin memasukan tips
Admin (IdAdmin,
Password, Username)
Tips (IdTips, IdAdmin,
Primary key : IdAdmin Primary key : IdTips Foreign key : IdAdmin
d. Admin mengisi promo
Admin (IdAdmin,
Password, Username)
Primary key : IdAdmin
Promo (IdPromo, IdAdmin,
IdNamaTempatMakan,
NamaPromo, DeksripsiPromo,
NamaTempatMakan,
DeskripsiTempatMakan, Harga,
Diskon, TanggalDiskon)
Primary key : IdPromo Foreign key : IdAdmin
e. Admin memperbaruhi buku
Admin (IdAdmin,
Password, Username)
Primary key : IdAdmin
Buku (IdBuku,IdAdmin,
IdKategoriBuku,
NamaBuku,
NamaKategoriBuku, Harga,
Stock, Diskon, IdPenerbit,
NamaPenerbit, IdPengarang,
Primary key : IdBuku
Foreign key : IdAdmin
f. Admin memperbaruhi tarif kirim barang
Admin (IdAdmin,
Password, Username)
Primary key : IdAdmin
Tarif Kirim Barang
(IdTarifKirim, IdAdmin,
Kota, Harga, Lama)
Primary key : IdTarifKirim Foreign key : IdAdmin
g. Admin memasukan info
Admin (IdAdmin,
Password, Username)
Primary key : IdAdmin
Info (IdInfo, IdAdmin, Judul,
IsiInfo, Foto)
Primary key : IdInfo Foreign key : IdAdmin
h. Member memberikan Feedback
Member (IdMember,
Username, Password,
Telp, AlamatMember,
Foto, MyHealty, gender,
kota, kode pos, IdCaptcha)
Primary key : IdMember
Feedback (IdFeedback,
IdMember, Username,
Komentar)
Primary key : IdFeedback Foreign key : IdMember
i. Buku dimiliki Pesan
Buku (IdBuku,IdAdmin,
IdKategoriBuku,
NamaBuku,
NamaKategoriBuku,
Harga, Stock, Diskon,
IdPenerbit, NamaPenerbit,
IdPengarang,
NamaPengarang)
Primary key : IdBuku
Pesan (IdPesan, IdMember,
IdBuku, IdTarifKirim,
Username, Alamat, Telp,
TotalPembayaran,
TanggalPesan,
KodePembayaran,
TanggalPembayaran,
NamaBuku, Qty, harga,
diskon, status)
Primary key : IdPesan Foreign key : IdBuku
j. Member melakukan pesan
Member (IdMember,
Username, Password,
Telp, AlamatMember,
Foto, MyHealty, gender,
kota, kode pos, IdCaptcha)
Primary key : IdMember
Pesan (IdPesan, IdMember,
IdBuku, IdTarifKirim,
Username, Alamat, Telp,
TotalPembayaran,
TanggalPesan,
KodePembayaran,
TanggalPembayaran,
NamaBuku, Qty, harga,
diskon, status)
Primary key : IdPesan Foreign key : IdMember
4.1.2.2.4 Relasi biner one to one (1:1)
Tidak terdapat relasi relasi one to one yang perlu
digabungkan agar basis sata menjadi lebih efektif dan efisien
4.1.2.2.5 Relasi biner many to many (*:*)
Admin (IdAdmin,
Password, Username)
Primary key : IdAdmin
Resep (IdResep, IdAdmin,
IdMember, NamaResep,
NamaKategoriResep, Foto,
Deskripsi, IdKategoriResep)
Primary key : IdResep
Foreign key : IdAdmin
Detail Resep (IdResep, IdAdmin, IdMember,
IdKategoriResep)
Primary key : (IdVideo, IdAdmin)
b. Member mengunggah Resep
Member (IdMember,
Username, Password,
Telp, AlamatMember,
Foto, MyHealty, gender,
KodePost, Kota,
IdCaptcha)
Primary key : IdMember
Resep (IdResep,IdAdmin,
IdMember, NamaResep,
NamaKategoriResep, Foto,
Deskripsi, IdKategoriResep)
Primary key : IdResep
Detail Resep (IdResep,IdMember,
IdMember,IdKategoriResep)
Primary key : (IdResep, IdMember)
c. Member melakukan Pesan
Member (IdMember,
Username, Password,
Telp, AlamatMember,
Foto, MyHealty, gender,
KodePost, Kota,
IdCaptcha)
Primary key : IdMember
Pesan (IdPesan, IdMember,
IdBuku, IdTarifKirim,
Username, Alamat, Telp,
HargaTotal,
TotalPembayaran,
TanggalPesan,
KodePembayaran,
TanggalPembayaran,
NamaBuku, harga, diskon,
Qty, status)
Primary key : IdPesan Foreign Key : IdMember
Detail Pesan (IdPesan, IdMember, IdBuku, IdTarifKirim,
KodePembayaran)
4.1.2.2.6 Tipe Hubungan Kompleks
Pada tahap ini tidak terdapat relasi yang kompleks.
Sehingga tidak dapat dibuatkan Tipe Hubungan Kompleks.
4.1.2.3 Memvalidasi Relasi Menggunakan Normalisasi
Bertujuan untuk menentukan apakah model data logical tidak
terdapat redudansi, konsistensi dan sudah mewakili sistem yang sudah
1. Member
Member (IdMember, Username, Password, Phone, Alamat, Foto,
MyHealty, gender, KodePost, Kota, IdCaptcha, CaptchaTime, IpAddress,
Word)
1NF : Tidak terdapat repetition groups pada tabel member, maka tabel
member sudah memenuhi 1NF
2NF : Tidak terdapat partial dependency pada tabel member ini. Maka
tabel member sudah memenuhi 2NF.
3NF : Member (IdMember, Username, Password, Phone, Alamat, Foto,
MyHealty, gender, KodePost, Kota)
Captcha : (IdCaptcha, CaptchaTime, IpAddress, Word)
IdMember Username Password Phone Alamat Foto MyHealty Gender KodePost Kota IdCaptcha CaptchaTime IpAddress Word
2. Admin
Admin (IdAdmin, Password, Username)
1NF : Tidak terdapat repetition groups pada tabel admin. Maka tabel
admin sudah memenuhi 1NF.
2NF : Tidak terdapat partial dependency pada tabel admin. Maka tabel
admin sudah memenuhi 2NF.
3NF : Tidak terdapat transitive dependency pada tabel admin. Maka tabel
admin sudah memenuhi 3NF
3. Pesan
Pesan (IdPesan, IdMember, IdBuku, IdTarifKirim, Username,
Alamat, Telp, HargaTotal, TanggalPesan, KodePembayaran,
TanggalPembayaran, NamaBuku, harga, diskon, Qty, status)
1NF : Pesan (IdPesan, IdMember, IdBuku, IdTarifKirim,
Username, Alamat, Telp, TanggalPesan, KodePembayaran,
TanggalPembayaran, NamaBuku, harga, diskon, Qty, status)
2NF : Buku = (IdBuku, NamaBuku, harga,diskon)
IdAdmin
Username
Pesan =( IdPesan, IdMember, IdTarifKirim, Username, Alamat,
Telp, TanggalPesan, KodePembayaran, TanggalPembayaran, status )
Pesan Detail = (IdPesan, IdBuku, Qty)
3NF : Buku = (IdBuku, NamaBuku, harga, diskon)
Pesan = (IdPesan, IdMember, IdTarifKirim, IdBuku,
KodePembayaran TanggalPesan, status )
Member = (IdMember, Username, Alamat, Telp)
Pembayaran = (KodePembayaran, TanggalPembayaran) Pesan Detail = (IdPesan, IdBuku, Qty)
IdPesan Username Phone Alamat KodePost KodePem bayaran TotalPembayaran TanggalPesan IdMember IdTarifKirim IdBuku NamaBuku Qty Diskon Harga TanggalPem bayaran Status HargaTotal
4. Buku
Buku (IdBuku,IdAdmin, IdKategoriBuku, NamaBuku, NamaKategoriBuku, Harga, Stock, Diskon, IdPenerbit, NamaPenerbit,
IdPengarang, NamaPengarang)
1NF : Tidak terdapat repetition groups pada tabel buku. Maka tabel buku
sudah memenuhi 1NF.
2NF : Tidak terdapat partial dependency pada tabel buku. Maka tabel
buku sudah memenuhi 2NF.
3NF : Buku (IdBuku,IdAdmin, IdKategoriBuku, NamaBuku, Harga,
Stock, Diskon, IdPenerbit, IdPengarang)
Kategori Buku (IdKategoriBuku, NamaKategoriBuku) Penerbit (IdPenerbit, NamaPenerbit)
Pengarang (IdPengarang, NamaPengarang)
IdBuku NamaBuku IdKategoriBuku Stock Diskon NamaKategori Buku Harga IdAdmin NamaPengarang IdPenerbit IdPengarang NamaPenerbit
5. Resep
Resep (IdResep,IdAdmin, IdMember, NamaResep, NamaKategoriResep,
Foto, Deskripsi, IdKategoriResep)
1NF : Tidak terdapat repetition groups pada tabel resep. Maka tabel
resep sudah memenuhi 1NF.
2NF : Tidak terdapat partial dependency pada tabel resep. Maka tabel
resep sudah memenuhi 2NF.
3NF : Resep (IdResep, IdMember,IdAdmin NamaResep, Foto,
Deskripsi)
Kategori Resep : (IdKategoriResep, NamaKategoriResep)
IdResep Nama Resep Foto Deskripsi IdMember IdAdmin IdKategoriResep NamaKategori Resep
6. Video
Video (IdVideo, IdAdmin, IdMember, JudulVideo, Deskripsi,
IdKategoriVideo, NamaKategoriVideo)
1NF : Tidak terdapat repetition groups pada tabel video. Maka tabel
video sudah memenuhi 1NF.
2NF : Tidak terdapat partial dependency pada tabel video. Maka tabel
video sudah memenuhi 2NF.
3NF :
Video (IdVideo, IdMember, IdAdmin, JudulVideo, Deskripsi) Kategori Video : (IdKategoriVideo, NamaKategoriVideo)
IdVideo JudulVideo Deskripsi IdMember IdAdmin IdKategoriVideo NamaKategori Video
7. Tarif Kirim Barang
Tarif Kirim Barang (IdTarifKirim, IdAdmin, Kota, Harga, Lama)
1NF : Tidak terdapat repetition groups pada tabel tarif kirim barang.
Maka tabel tarif kirim barang sudah memenuhi 1NF.
2NF : Tidak terdapat partial dependency pada tabel tarif kirim barang.
Maka tabel tarif kirim barang sudah memenuhi 2NF.
3NF : Tidak terdapat transitive dependency pada tabel tarif kirim barang.
Maka tabel tarif kirim barang sudah memenuhi 3NF.
IdTarifKirim
Kota
Harga
Lama
8. Promo
Promo (IdPromo, Id_admin, IdNamaTempatMakan, NamaPromo,
DeksripsiPromo, NamaTempatMakan, DeskripsiTempatMakan, Harga,
Diskon, TanggalDiskon)
1NF : Tidak terdapat repetition groups pada tabel promo. Maka tabel
promo sudah memenuhi 1NF.
2NF : Tidak terdapat partial dependency pada tabel promo. Maka tabel
promo sudah memenuhi 2NF.
3NF :
Promo (IdPromo, IdAdmin, NamaPromo, DeksripsiPromo,)
Nama Tempat Makan (IdNamaTempatMakan, NamaTempatMakan,
DeskripsiTempatMakan, Harga, Diskon, TanggalDiskon)
IdPromo NamaPromo DeskripsiPromo IdAdmin IdTempatMakan NamaTempatMakan DeskripsiTempat Makan Harga Diskon TanggalDiskon
9. Tips
Tips (IdTips, IdAdmin, NamaTips, Foto, Deskripsi)
1NF : Tidak terdapat repetition groups pada tabel tips. Maka tabel
tips sudah memenuhi 1NF.
2NF : Tidak terdapat partial dependency pada tabel tips. Maka tabel
tips sudah memenuhi 2NF.
3NF : Tidak terdapat transitive dependency pada tabel tips. Maka
tabel tips sudah memenuhi 3NF.
IdTips
NamaTips
Foto
Deskripsi
10. Berita
Berita (IdBerita, IdAdmin, JudulBerita, IsiBerita, Foto)
1NF : Tidak terdapat repetition groups pada tabel berita. Maka tabel
berita sudah memenuhi 1NF.
2NF : Tidak terdapat partial dependency pada tabel berita. Maka
tabel berita sudah memenuhi 2NF.
3NF : Tidak terdapat transitive dependency pada tabel berita. Maka
tabel berita sudah memenuhi 3NF.
IdBerita
JudulBerita
IsiBerita
Foto
11. Info
Info (IdInfo, IdAdmin, JudulInfo, IsiInfo, Foto)
1NF : Tidak terdapat repetition groups pada tabel info. Maka tabel info
sudah memenuhi 1NF.
2NF : Tidak terdapat partial dependency pada tabel info. Maka tabel info
sudah memenuhi 2NF.
3NF : Tidak terdapat transitive dependency pada tabel info. Maka tabel
info sudah memenuhi 3NF.
IdInfo
JudulInfo
IsiInfo
Foto
12. FeedBack
Feedback (IdFeedback, IdMember, Username, Komentar)
1NF : Tidak terdapat repetition groups pada tabel feedback. Maka
tabel feedback sudah memenuhi 1NF.
2NF : Tidak terdapat partial dependency pada tabel feedback. Maka
tabel feedback sudah memenuhi 2NF.
3NF : Tidak terdapat transitive dependency pada tabel feedback.
Maka tabel feedback sudah memenuhi 3NF.
4.1.2.4 Validasi Relasi terhadap Transaksi User
Tujuan pada subbab ini adalah untuk memastikan bahwa relasi
dalam model data logical mendukung transaksi yang dibutuhkan, yang
telah dijabarkan pada spesifikasi kebutuhan pengguna. Relasi-relasi yang
dihasilkan dari model data logical sudah memenuhi kebutuhan data
pengguna dan mendukung transaksi yang digunakan. IdMember
Username
Komentar IdFeedBack
4.1.2.5 Menentukan Integriti Constrains
a. Required data
Beberapa atribut harus memiliki nilai valid dengan kata lain
atribut-atribut itu tidak diperkenankan memiliki nilai null. Aturan-aturan
tersebut sudah diidentifikasikan pada subbab 4.1.1.3
b. Atribut Domain Constraint
Setiap atribut memiliki domain yaitu sekumpulan nilai yang
legal/diperbolehkan/diizinkan. Constrain seperti sudah
diidentifikasikan pada saat memiliki atribut-atribut domain untuk data
model dan terdapat pada subbab 4.1.1.4
c. Entity Integrity
Setiap primary key dari sebuah entitas tidak boleh memiliki nilai null.
Aturan-aturan ini sudah dipertimbangkan pada setiap entitinya dengan
mengidentifikasikannya dan terdapat pada subbab 4.1.1.5
d. Refentrial Integrity
Apabila suatu foreign key mengandung suatu nilai, maka nilai itu
1. Admin (IdAdmin, Password, Username)
Primary key : IdAdmin
2. Member (IdMember, Username, Password, Telp, AlamatMember, Foto, MyHealty,
Gender, KodePost, Kota, IdCaptcha, CaptchaTime, IpAddress, Word)
Primary key : IdMember
Foreign key : IdCaptcha REFRENCES
Captcha (IdCaptcha) ON UPDATE CASCADE ON DELETE CASCADE
3. Pesan (IdPesan, IdMember, IdBuku, IdTarifKirim, Username, Alamat, Phone,
KodePos, HargaTotal, TanggalPesan, KodePembayaran, TanggalPembayaran,
NamaBuku, Qty, harga, diskon, status)
Primary key : IdPesan, IdBuku
Foreign key : IdPesan REFRENCES
PesanDetail(IdPesan) ON UPDATE CASCADE ON DELETE CASCADE
Foreign key : IdBuku REFRENCES
PesanDetail(IdBuku) ON UPDATE CASCADE ON DELETE CASCADE
Foreign key : IdMember REFRENCES
Member(IdMember) ON UPDATE CASCADE ON DELETE CASCADE
Foreign key : IdBuku REFRENCES
Foreign key : IdTarifKirim REFRENCES
Tarif Kirim(IdTarifKirim) ON UPDATE CASCADE ON DELETE CASCADE
4. Buku (IdBuku,IdAdmin, IdKategoriBuku, NamaBuku, NamaKategoriBuku Harga,
Stock, Diskon, IdPengarang, NamaPengarang, IdPenerbit, NamaPenerbit)
Primary key : IdBuku
Foreign key : IdAdmin REFRENCES
Admin(IdAdmin) ON UPDATE CASCADE ON DELETE CASCADE
Foreign key : IdKategoriBuku REFRENCES
KategoriBuku (IdKategoriBuku) ON UPDATE CASCADE ON DELETE
CASCADE
Foreign key : IdPengarang REFRENCES
Pengarang(IdPengarang) ON UPDATE CASCADE ON DELETE CASCADE
Foreign key : IdPenerbit REFRENCES
Penerbit (IdPenerbit) ON UPDATE CASCADE ON DELETE CASCADE
5. Resep (IdResep,IdAdmin, IdMember, NamaResep, NamaKategoriResep, Foto,
Deskripsi, IdKategoriResep)
Primary key : IdResep
Foreign key : IdAdmin REFRENCES
Admin(IdAdmin) ON UPDATE CASCADE ON DELETE CASCADE
Foreign key : IdMember REFRENCES
Member(IdMember) ON UPDATE CASCADE ON DELETE CASCADE Foreign key : IdKategoriResep REFRENCES
Kategori Resep(IdKategoriResep) ON UPDATE CASCADE ON DELETE
CASCADE
6. Video (IdVideo, IdAdmin, JudulVideo, Deskripsi,
Id_KategoriVideo,NamaKategoriVideo)
Primary key : IdVideo
Foreign key : IdAdmin REFRENCES
Admin(IdAdmin) ON UPDATE CASCADE ON DELETE CASCADE
Foreign key : IdKategoriResep REFRENCES
Kategori Resep(IdKategoriResep) ON UPDATE CASCADE ON DELETE
CASCADE
7. Tarif Kirim Barang (IdTarifKirim, IdAdmin, Kota, Harga, Lama)
Primary key : IdTarifKirim
Foreign key : IdAdmin REFRENCES
Admin(IdAdmin) ON UPDATE CASCADE ON DELETE CASCADE
8. Promo (IdPromo, IdAdmin, IdNamaTempatMakan, NamaPromo, DeksripsiPromo,
NamaTempatMakan, DeskripsiTempatMakan, Harga, Diskon, TanggalDiskon)
Primary key : IdPromo
Foreign key : IdAdmin REFRENCES
Admin(IdAdmin) ON UPDATE CASCADE ON DELETE CASCADE
Foreign key : IdTempatMakan REFRENCES
Tempat Makan(IdTempatMakan) ON UPDATE CASCADE ON DELETE
CASCADE
Primary key : IdTips
Foreign key : IdAdmin REFRENCES
Admin(IdAdmin) ON UPDATE CASCADE ON DELETE CASCADE
10. Berita (IdBerita, IdAdmin, JudulBerita, IsiBerita, Foto)
Primary key : IdBerita
Foreign key : IdAdmin REFRENCES
Admin(IdAdmin) ON UPDATE CASCADE ON DELETE CASCADE
11. Info (IdInfo, IdAdmin, Judul, IsiInfo, Foto)
Primary key : IdInfo
Foreign key : IdAdmin REFRENCES
Admin(IdAdmin) ON UPDATE CASCADE ON DELETE CASCADE
12. Feedback (IdFeedback, IdMember, Username, Komentar)
Primary key : IdFeedback
Foreign key : IdMember REFRENCES
Member(IdMember) ON UPDATE CASCADE ON DELETE CASCADE
4.1.2.6 Membentuk dan Memvalidasi Model Data Global
ERD model dirancang berdasarkan hasil normalisasi 4.1.2.3. Model Data
Global dibuat untuk merepresentasikan sistem keseluruhan aplikasi web
Admin PK IdAdmin Username Password Member PK IdMember FK2 IdFoto FK1 IdCaptcha Username Password ConfrimPassword Phone Alamat Email Gender KodePost Kota Berita PK IdBerita FK1 IdAdmin FK2 IdFoto JudulBerita IsiBerita 1..1 1..* Buku PK IdBuku FK1 IdAdmin FK2 IdKategoriBuku FK3 IdPenerbit FK4 IdPengarang NamaBuku Harga Stock 1..1 1..* Captcha PK IdCaptcha CaptchaTime IpAddress Word FeedBack PK IdFeedBack FK1 IdMember Username Komentar 1..1 1..1 1..1 1..1 Foto PK IdFoto Path 1..* 1..* Info PK IdInfo IdAdmin JudulInfo IsiInfo FK1 IdFoto 1..* KategoriBuku PK IdKategoriBuku NamaKategoriBuku 1..1 1..1 KategoriResep PK IdKategoriResep NamaKategoriResep KategoriVideo PK IdKategoriVideo NamaKategoriVideo KodePembayaran PK KodePembayaran TotallPembayaran Penerbit PK IdPenerbit NamaPenerbit 1..1 1..1 Pengarang PK IdPengarang NamaPengarang 1..1 1..1 Pesan PK IdPesan FK1 IdMember FK2 KodePembayaran FK3 IdTarifKirim TanggalPesan TanggalPembayaran Status HargaTotal 1..1 1..* 1..1 1..1 Promo PK IdPromo FK1 IdAdmin FK2 IdTempatMakan NamaPromo Deskripsi 1..1 1..* Resep PK IdResep FK1 IdMember FK2 IdKategoriResep IdFoto NamaResep IsiResep 1..* 1..* 1..1 0..* 1..* 1..1 1..1 TarifKirim PK IdTarifKirim FK1 IdAdmin Kota KodePos Harga Lama 1..1 1..1 1..* 1..1 TempatMakan PK IdTempatMakan NamaTempatMakan Harga Diskon Deskripsi TanggalDiskon 1..1 1..1 Tips PK IdTips IdFoto JudulTips IsiTips 1..* 1..1 Video PK IdVideo FK1 IdAdmin FK2 IdKategoriVideo JudulVideo Deskripsi 1..* 1..1 1..1 1..* 1..* Pesan Detail PK,FK2 IdPesan PK,FK1 IdBuku Qty 1..* 1..1 1..1 1..1 Detail Resep PK Id Resep PK Id Member PK Id Admin FK1 IdResep FK2 IdAdmin FK3 IdMember 1..1 1..* 0..* 1..1
4.1.3 Phisical Design
Tahapan perancangan fisikal database yang merupakan tahapan terakhir
dalam perancangan sistem basis data.
4.1.3.1 Menerjemahkan Model data logikal untuk DBMS yang digunakan.
1. Rancangan Dasar.
• Admin
Domain IdAdmin integer, length 10
Domain Username variable length character string, length 50
Domain Password character string, length 7
Admin(
IdAdmin
IdAdmin NOT NULL
Username
Username NOT NULL
Password
Password NOT NULL,
PRIMARY KEY (`IdAdmin`)
);
• Buku
Domain IdBuku integer, length 10
Domain IdAdmin integer, length 10
Domain IdPengarang integer, length 10
Domain IdPenerbit integer, length 10
Domain NamaBuku variable length character string, length 50
Domain NamaKategoriBuku variable length character string, length
50
Domain NamaPengarang variable length character string, length 50
Domain NamaPenerbit variable length character string, length 50
Domain Harga Bigint
Domain Stock int
Domain Diskon Tinyint
Buku(
Buku
IdBuku NOT NULL
Admin
IdAdmin NOT NULL
KategoriBuku
IdKategoriBuku NOT NULL
Pengarang
IdPengarang NOT NULL
Penerbit
IdPenerbit NOT NULL
NamaBuku
NamaKategoriBuku
NamaKategoriBuku NOT NULL
NamaPengarang
NamaPengarang NOT NULL
NamaPenerbit
NamaPenerbit NOT NULL
Harga
Harga NOT NULL
Stock
Stock NOT NULL
Diskon
Diskon NOT NULL
PRIMARY KEY (`IdBuku`)
FOREIGN KEY (IdAdmin) REFERENCES Admin (IdAdmin) ON UPDATE CASCADE ON DELETE CASCADE
FOREIGN KEY (IdKategoriBuku) REFERENCES KategoriBuku (IdKategoriBuku) ON UPDATE CASCADE ON DELETE CASCADE
FOREIGN KEY (IdPengarang) REFERENCES Pengarang
(IdPengarang) ON UPDATE CASCADE ON DELETE CASCADE
FOREIGN KEY (IdPenerbit) REFERENCES Pengarang (IdPenerbit) ON UPDATE CASCADE ON DELETE CASCADE
);
• Berita
Domain IdBerita integer, length 10
Domain IdAdmin integer, length 10
Domain JudulBerita variable length character string, length 50
Domain IsiBerita longtext
Domain Foto variable length character string, length 50
Berita (
Berita
IdBerita NOT NULL
Admin
IdAdmin NOT NULL
Foto
Foto NOT NULL
JudulBerita
JudulBerita NOT NULL
IsiBerita
PRIMARY KEY (`IdBerita`)
FOREIGN KEY (`IdAdmin`) REFERENCES Admin (`IdAdmin`) ON UPDATE CASCADE ON DELETE CASCADE
• Captcha
Domain IdCaptcha integer, length 10
Domain CaptchaTime integer, length 15
Domain IpAddress variable length character string, length 20
Domain Word variable length character string, length 50
Captcha (
Captcha
IdCaptcha NOT NULL
CaptchaTime
CaptchaTime NOT NULL
IpAddress
IpAddress NOT NULL
Word
Word NOT NULL
PRIMARY KEY (`IdCaptcha`) );
• Feedback
Domain IdMember integer, length 10
Domain Username variable length character string, length 50
Domain Komentar longtext
Feedback (
Feedback
IdFeedback NOT NULL
Member
IdMember NOT NULL
Username
Username NOT NULL
Komentar
Komentar NOT NULL
PRIMARY KEY (`IdFeedback`)
FOREIGN KEY (`IdMember`) REFERENCES Member (`IdMember`) ON UPDATE CASCADE ON DELETE CASCADE
);
• Info
Domain IdInfo integer, length 10
Domain IdAdmin integer, length 10
Domain JudulInfo variable length character string, length 50
Domain IsiInfo longtext
Info (
Info
IdInfo NOT NULL
Admin
IdAdmin NOT NULL
Foto
Foto NOT NULL
JudulInfo
JudulInfo NOT NULL
IsiInfo
IsiInfo NOT NULL
PRIMARY KEY (`IdInfo`)
FOREIGN KEY (`IdAdmin`) REFERENCES Admin (`IdAdmin`) ON UPDATE CASCADE ON DELETE CASCADE
);
• KategoriBuku
Domain IdKategoriBuku integer, length 10
Domain NamaKategoriBuku variable length character string, length
50
KategoriBuku (
KategoriBuku
NamaKategoriBuku
NamaKategoriBuku NOT NULL
PRIMARY KEY (IdKategoriBuku) );
• Kategori Resep
Domain IdKategoriResep integer, length 10
Domain NamaKategoriResep variable length character string, length
50
KategoriResep(
IdKategoriResep
IdKategoriResep NOT NULL
NamaKategoriResep
NamaKategoriResep NOT NULL
PRIMARY KEY (IdKategoriResep) );
• Kategori Video
Domain IdKategoriVideo integer, length 10
Domain NamaKategoriVideo variable length character string, length
50
KategoriVideo(
IdKategoriVideo
IdKategoriVideo NOT NULL
NamaKategoriVideo NOT NULL
PRIMARY KEY (IdKategoriVideo) );
• Kode Pembayaran
Domain KodePembayaran integer, length 10
Domain TanggalPembayaran date
KodePembayaran (
KodePembayaran
KodePembayaran NOT NULL
TanggalPembayaran
TanggalPembayaran NOT NULL
PRIMARY KEY (KodePembayaran) );
• Member
Domain IdMember integer, length 10
Domain IdCaptcha integer, length 10
Domain Username variable length character string, length 50
Domain Password character string, length 7
Domain Phone int
Domain Alamat variable length character string, length 50
Domain MyHealty longtext
Domain Gender Enumeration, ‘F’ or ‘M’
Domain Foto variable length character string, length 50
Member ( IdMember
IdMember NOT NULL
IdCaptcha
IdCaptcha NOT NULL
Foto
Foto NOT NULL
Username
Username NOT NULL
Password
Password NOT NULL
Phone
Phone NULL
Alamat
Alamat NOT NULL
MyHealty
MyHealty NOT NULL
Gender
Gender NOT NULL
TanggalLahir
TanggalLahir NOT NULL
FOREIGN KEY (`IdCaptcha`) REFERENCES Captcha(`IdCaptcha`) ON UPDATE CASCADE ON DELETE CASCADE
);
• Pesan
Domain IdPesan integer, length 10
Domain IdMember integer, length 10
Domain IdTarifKirim integer, length 10
Domain KodePembayaran integer, length 10
Domain KodePost integer, length 15
Domain TanggalPembayaran date
Domain TanggalPesan date
Domain TotalHarga bigint
Domain Status variable length character string, length 50
Pesan (
IdPesan
IdPesan NOT NULL
IdMember
IdMember NOT NULL
TarifKirim
IdTarifKirim NOT NULL
KodePembayaran
TanggalPembayaran
TanggalPembayaranNOT NULL
TanggalPesan
TanggalPesan NOT NULL
IdTarifKirim
IdTarifKirim NOT NULL
TotalHarga
TotalHarga NOT NULL
PRIMARY KEY (IdPesan)
FOREIGN KEY (`IdMember`) REFERENCES Member(`IdMember`) ON UPDATE CASCADE ON DELETE CASCADE
FOREIGN KEY (`KodePembayaran`) REFERENCES
KodePembayaran(`KodePembayaran`) ON UPDATE CASCADE ON
DELETE CASCADE
FOREIGN KEY (`IdTarifKirim`) REFERENCES
KodePembayaran(`IdTarifKirim`) ON UPDATE CASCADE ON
DELETE CASCADE
FOREIGN KEY (` IdPesan`) REFRENCES
PesanDetail(IdPesan) ON UPDATE CASCADE ON DELETE
CASCADE
PesanDetail(IdBuku) ON UPDATE CASCADE ON DELETE
CASCADE
);
• Pesan Detail
Domain IdPesan integer, length 10
Domain IdBuku integer, length 10
Domain Qty integer
Pesan Detail (
Pesan
IdPesan NOT NULL
Buku
IdBuku NOT NULL
Qty
Qty NOT NULL
PRIMARY KEY (`IPesan`. `IdBuku`)
FOREIGN KEY (`IdPesan`) REFERENCES Pesan (`IdPesan`) ON UPDATE CASCADE ON DELETE CASCADE
FOREIGN KEY (`IdBuku`) REFERENCES Buku (`IdBuku`) ON UPDATE CASCADE ON DELETE CASCADE
• Promo
Domain IdPromo integer, length 10
Domain IdAdmin integer, length 10
Domain IdTempatMakan integer, length 10
Domain NamaPromo variable length character string, length 50
Domain DeskripsiPromo longtext
Promo (
Promo
IdPromo NOT NULL
Admin
IdAdmin NOT NULL
TempatMakan
IdTempatMakan NOT NULL
NamaPromo
NamaPromo NOT NULL
Deskripsi
DeskripsiPromo NOT NULL
PRIMARY KEY (`IdInfo`)
FOREIGN KEY (`IdAdmin`) REFERENCES Admin (`IdAdmin`) ON UPDATE CASCADE ON DELETE CASCADE
FOREIGN KEY (`IdPromo`) REFERENCES Promo (`IdPromo`) ON UPDATE CASCADE ON DELETE CASCADE
• Resep
Domain IdResep integer, length 10
Domain IdAdmin integer, length 10
Domain IdMember integer, length 10
Domain IdKategoriResep integer, length 10
Domain NamaResep variable length character string, length 50
Domain IsiResep longtext
Domain Foto variable length character string, length 50
Resep (
Resep
IdResep NOT NULL
Admin
IdAdmin NOT NULL
Member
IdMember NOT NULL
KategoriResep
IdKategoriResep NOT NULL
Foto
Foto NOT NULL
NamaResep
NamaResep NOT NULL
IsiResep NOT NULL
PRIMARY KEY (`IdResep`)
FOREIGN KEY (`IdAdmin`) REFERENCES Admin (`IdAdmin`) ON UPDATE CASCADE ON DELETE CASCADE
FOREIGN KEY (`IdMember`) REFERENCES Member (`IdMember`) ON UPDATE CASCADE ON DELETE CASCADE
FOREIGN KEY (`IdKategoriResep`) REFERENCES Kategori Resep (`IdKategoriResep`) ON UPDATE CASCADE ON DELETE
CASCADE );
• Tarif Kirim
Domain IdTarifKirim integer, length 10
Domain IdAdmin integer, length 10
Domain KodePost integer, length 15
Domain Kotavariable length character string, length 50
Domain Harga bit
Domain Lama variable length character string, length 50
TarifKirim (
TarifKirim
IdTarifKirim NOT NULL
Admin
KodePost
KodePost NOT NULL
Kota
Kota NOT NULL
Harga
Harga NOT NULL
Lama
Lama NOT NULL
PRIMARY KEY (`IdTartifKirim`)
FOREIGN KEY (`IdAdmin`) REFERENCES Admin (`IdAdmin`) ON UPDATE CASCADE ON DELETE CASCADE
);
• Tempat Makan
Domain IdTempatMakan character string, length 10
Domain NamaTempatMakan variable length character string, length
50
Domain Deskripsi longtext
Domain Harga bit
Domain Diskon tinyint
Domain TanggalDiskon date
TempatMakan (
TempatMakan
NamaTempatMakan
NamaTempatMakan NOT NULL
Deskripsi
Deskripsi NOT NULL
Harga
Harga NOT NULL
Diskon
Diskon NOT NULL
TanggalDiskon
TanggalDiskon NOT NULL
PRIMARY KEY (`IdTartifKirim`) );
• Tips
Domain IdTips integer, length 10
Domain IdTips integer, length 10
Domain JudulTips variable length character string, length 50
Domain IsiTips longtext
Domain Foto variable length character string, length 50
Tips (
Tips
IdTips NOT NULL
IdAdmin NOT NULL
Foto
Foto NOT NULL
JudulTips
JudulTips NOT NULL
IsiTips
IsiTips NOT NULL
PRIMARY KEY (`IdTips`)
FOREIGN KEY (`IdAdmin`) REFERENCES Admin (`IdAdmin`) ON UPDATE CASCADE ON DELETE CASCADE
);
• Video
Domain IdVideo integer, length 10
Domain IdAdmin integer, length 10
Domain IdKategoriVideo integer, length 10
Domain JudulVideo variable length character string, length 50
Domain DeskripsiVideo longtext
Video (
Video
IdVideo NOT NULL
Admin
KategoriVideo
IdKategoriVideo NOT NULL
JudulVideo
JudulVideo NOT NULL
DeskripsiVideo
DeskripsiVideo NOT NULL
PRIMARY KEY (`IdVideo`)
FOREIGN KEY (`IdAdmin`) REFERENCES Admin (`IdAdmin`) ON UPDATE CASCADE ON DELETE CASCADE
FOREIGN KEY (`IdKategoriVideo`) REFERENCES Kategori Resep (`IdKategoriResep`) ON UPDATE CASCADE ON DELETE
CASCADE );
4.1.3.2 Representasi physical Design
1. Menganalisa Transaksi
Tujuan dari menganalisa transaksi adalah untuk mengerti
kegunaan dari transaksi-transaksi yang dijalankan pada basis data.
Informasi yang dapat dipergunakan untuk menentukan pemilihan
index yang tepat.
a. Melakukan pemesanan barang
b. Melihat data tips
d. Melihat data video
e. Melihat data promo
f. Melihat data info
g. Melihat data buku
h. Melihat tarif kirim barang
i. Mengunggah data resep
j. Mengunggah data video
k. Memasukan data buku
l. Memasukan data tips
m. Memasukan data berita
n. Memasukan data feedback
o. Memasukan data promo
p. Memasukan data info
q. Memperbaruhi dan menghapus data buku
r. Memperbaruhi dan menghapus data tarif pengiriman
barang
s. Memperbaruhi dan menghapus data tips
t. Memperbaruhi dan menghapus data berita
u. Memperbaruhi dan menghapus data info
v. Memperbaruhi dan menghapus data promo
w. Memperbaruhi dan menghapus data resep
Tabel Matriks Referensi Silang dengan Relasi dengan Metode IRUD No Nama Entitas a b c d I R U D I R U D I R U D I R U D 1. Admin X X X 2. Buku 3. Tarif Pengiriman Barang 4. Pesan X X 5. Member X X X X X X 6. Resep 7. Video 8. Feedback 9. Tips 10. Berita 11. Info 12. Promo
Keterangan : I=Insert R=Read U=Update D=Delete Tabel 4.6 Tabel Pemasukan IRUD
No Nama Entitas e f g h I R U D I R U D I R U D I R U D 1. Admin X X X X 2. Buku X 3. Tarif Pengiriman Barang X 4. Pesan 5. Member X X X 6. Resep 7. Video 8. Feedback 9. Tips 10. Berita 11. Info 12. Promo
Keterangan : I=Insert R=Read U=Update D=Delete Tabel 4.7 Tabel Pemasukan IRUD (lanjutan)
No Nama Entitas i j k l I R U D I R U D I R U D I R U D 1. Admin X X X X 2. Buku X 3. Tarif Pengiriman Barang 4. Pesan 5. Member X 6. Resep X 7. Video X 8. Feedback 9. Tips X X 10. Berita 11. Info 12. Promo
Keterangan : I=Insert R=Read U=Update D=Delete Tabel 4.8 Tabel Pemasukan IRUD (lanjutan)
No Nama Entitas m n o p I R U D I R U D I R U D I R U D 1. Admin X X X 2. Buku 3. Tarif Pengiriman Barang 4. Pesan 5. Member X 6. Resep 7. Video X X 8. Feedback X 9. Tips 10. Berita X 11. Info X 12. Promo X
Keterangan : I=Insert R=Read U=Update D=Delete Tabel 4.9 Tabel Pemasukan IRUD (lanjutan)
No Nama Entitas q r s t I R U D I R U D I R U D I R U D 1. Admin X X X X X X X X 2. Buku X X 3. Tarif Pengiriman Barang X X 4. Pesan 5. Member 6. Resep 7. Video 8. Feedback 9. Tips X X 10. Berita X X 11. Info 12. Promo
Keterangan : I=Insert R=Read U=Update D=Delete Tabel 4.10 Tabel Pemasukan IRUD (lanjutan)
No Nama Entitas v w x I R U D I R U D I R U D 1. Admin X X X X X X 2. Buku 3. Tarif Pengiriman Barang 4. Pesan 5. Member X 6. Resep X X 7. Video X X 8. Feedback 9. Tips 10. Berita 11. Info 12. Promo X X
Keterangan : I=Insert R=Read U=Update D=Delete Tabel 4.11 Tabel Pemasukan IRUD (lanjutan)
4.1.3.3 Pemilihan Index
Tujuan dari pemilihan index ini adalah apakah dengan
penambahan index dapat meningkatkan kemampuan sistem, karena index
merupakan struktur file secondary yang menyediakan jalan lain untuk
Tabel Entitas Index Admin IdAdmin Buku IdBuku IdAdmin IdKategoriBuku IdPengarang IdPenerbit Berita IdBerita IdAdmin Captcha IdCaptcha Feedback IdFeedback IdMember HelpFAQ IdHelpFAQ IdMember Info IdInfo IdMember KategoriBuku IdKategoriBuku KategoriResep IdKategoriResep KategoriVideo IdKategoriVideo KodePembayaran KodePembayaran Member IdMember IdCaptcha
Pesan IdPesan IdMember KodePembayaran IdTarifKirim PesanDetail IdPesan IdBuku Promo IdPromo IdTempatMakan IdAdmin Resep IdResep IdKategoriResep IdAdmin IdMember IdBuku TarifKirim IdTarifKirim IdAdmin TempatMakan IdTempatMakan Tips IdTips IdAdmin IdBuku Video IdVideo IdKategoriVideo IdAdmin
4.1.3.4 Estimasi Kebutuhan Disk
1. Estimasi tabel admin
Field Type Size
IdAdmin Int 4
Username Varchar 51
Password Varchar 8
Kapasitas tabel admin 63 byte
2. Estimasi tabel buku
Field Type Size
IdBuku Int 4 IdAdmin Int 4 IdKategoriBuku Int 4 IdPenerbit Int 4 IdPengarang Int 4 NamaBuku Varchar 51 NamaKategoriBuku Varchar 51 NamaPengarang Varchar 51 NamaPenerbit Varchar 51 Harga Bigint 2 Stock Varchar 51
Kapasitas tabel buku 277 byte
Diperkirakan dalam 1 bulan terjadi penambahan buku sebanyak
25 buku.
Dalama 1 tahun pertumbuhan tabel buku adalah 25*12*277=
83.100 byte atau 81,2 kbyte
3. Estimasi tabel berita
Field Type Size
IdBerita Int 4
IdAdmin Int 4
JudulBerita Varchar 51
IsiBerita Longtext -
Foto Varchar 51
Kapasitas tabel berita 110 byte
4. Estimasi tabel Captcha
Field Type Size
IdCaptcha Int 4
CpatchaTime Varchar 51
IpAddress Varchar 51