Access
 sql >> Teknologi Basis Data >  >> RDS >> Access

Proyek Database Salon Rambut

Diperbarui:22 Januari 2018 oleh Richard Holowczak

Materi berikut mendokumentasikan desain dan pengembangan aplikasi database untuk mendukung salon rambut kecil. Proyek dimulai dengan deskripsi bisnis dan dilanjutkan melalui pemodelan konseptual (ER), pemodelan logis (Relasional), pemodelan fisik dan akhirnya implementasi aplikasi database. Catatan (Komentar) disediakan di akhir setiap bagian untuk menjelaskan beberapa fitur khusus dari langkah-langkah yang dilakukan.

Daftar Isi

Aku. Skenario Bisnis
II. Model ER menggunakan Notasi UML
III. Konversi ke Model Relasional
IV. Normalisasi
V. Membuat Skema Database dengan SQL
VI. Aplikasi Basis Data
VII. Kesimpulan

.

Aku. Skenario Bisnis

Perusahaan kami telah memiliki dan mengoperasikan salon rambut dan kuku di tengah kota Manhattan selama 7 tahun. Kami telah menggunakan spreadsheet dan buku catatan kertas untuk melacak pelanggan, janji temu, dan pembayaran. Kami ingin mengganti metode manual pelacakan bisnis ini dengan database.

Dalam bisnis kami, Pelanggan membuat Janji dengan penata rambut favorit mereka (orang yang memotong dan menata rambut pelanggan) atau karyawan lain dan dapat menikmati sejumlah Layanan seperti potong/styling rambut dasar, warna rambut, highlight, perm, facial, manikur, pedikur, dll. Kita perlu melacak bahan (sampo, warna rambut) dan waktu yang dibutuhkan untuk menyelesaikan setiap layanan. Meskipun setiap layanan memiliki harga standar, promosi dan faktor lainnya dapat memengaruhi harga sebenarnya yang diberikan kepada Pelanggan untuk layanan yang diberikan.

Kita juga perlu melacak Karyawan kita termasuk alamat rumah mereka, informasi kontak, dan tingkat pembayaran. Kami perlu melacak informasi kontak setiap Pelanggan serta jenis kelamin mereka. Untuk Janji Temu, kami perlu mengetahui tanggal dan waktu janji temu dan untuk pelanggan mana janji temu tersebut.

Komentar

Berdasarkan uraian di atas, buat model Entity Relationship menggunakan notasi UML yang akan menangkap semua kebutuhan data bisnis.

II. Model ER menggunakan Notasi UML

Berdasarkan uraian di atas, kami mengembangkan model Entity Relationship berikut menggunakan notasi UML.

Komentar

Apa yang kami sukai dari model ini:

  • Semua garis hubungan berada dalam posisi horizontal atau vertikal. Tidak ada garis yang dilintasi.
  • Nama atribut dieja tanpa spasi pada namanya. Tidak ada singkatan yang digunakan.
  • Setiap hubungan memiliki dua frasa yang darinya kita dapat membuat kalimat hubungan (lihat bagian berikutnya).
  • Diagram juga memiliki “legenda” di pojok kanan atas sehingga kita dapat mengetahui apa yang diwakili diagram dan siapa yang terakhir memodifikasi diagram.

Kalimat Hubungan

Satu Pelanggan mungkin membuat satu atau beberapa Janji Temu

Satu Janji Temu harus reservasi untuk satu dan hanya satu Pelanggan

Satu Layanan Salon mungkin layanan yang diberikan sebagai satu atau beberapa ServiceRendered

Satu Layanan Diberikan harus rendering dari satu dan hanya satu SalonService

Satu Karyawan mungkin rendering satu atau lebih ServiceRendered

Satu Layanan Diberikan harus diberikan oleh satu dan hanya satu Karyawan
 

Satu Janji Temu mungkin reservasi untuk menyediakan satu atau lebih ServiceRendered

Satu Layanan Diberikan harus layanan tertentu yang diberikan selama satu dan hanya satu Janji Temu

Komentar

Kalimat hubungan harus masuk akal. Dalam contoh ini, frasa kata kerja digarisbawahi. Nama entitas dicetak tebal. Kardinalitas minimum (mungkin untuk 0 dan harus untuk 1) ditulis miring. Kardinalitas maksimum ditulis sebagai “satu atau lebih” untuk * dan “satu dan hanya satu” untuk 1.

Dengan model ER selesai, kami melanjutkan ke langkah berikutnya – untuk mengubah model ER konseptual menjadi model relasional logis.

III. Konversi ke Model Relasional

Langkah selanjutnya adalah Mengkonversi diagram Entity Relationship menjadi Model Relasional. Selama langkah ini, Identifier dalam Entitas menjadi Kunci dalam Relasi. Hubungan Satu-ke-Banyak menghasilkan kunci asing yang disalin dari sisi Satu ke sisi Banyak hubungan.

Pelanggan ( ID Pelanggan (kunci), Nama Depan, Nama Belakang, Nomor Telepon, Jalan, Kota, Negara Bagian, Kode Pos )

Layanan Salon ( ServiceID (kunci), ServiceName, ServiceDuration, ServicePrice, ServiceMaterials )

Karyawan ( EmployeeID (key), FirstName, LastName, Street, City, State, ZipCode, PayRate )

Janji Temu ( AppointmentID (key), AppointmentDate, AppotinmentTime, CustomerID (fk) )

Layanan Diberikan ( AppointmentID (fk)(key), LineItemNumber(key), ServiceID (fk), ServiceExtendedPrice, EmployeeID(fk))

Ini adalah "kumpulan hubungan awal".

Komentar

  • Perhatikan bahwa ServiceRendered entitas dari model ER adalah ID-Dependent yang berarti memerlukan atribut selain LineItemNumber untuk membentuk kunci komposit.
  • Kunci ditunjukkan dengan penunjukan (kunci) dan kunci asing ditunjukkan dengan penunjukan (fk).

Langkah selanjutnya adalah menormalkan himpunan relasi awal.

IV. Normalisasi

Langkah selanjutnya adalah Menormalkan Hubungan.

Langkah-langkah yang harus diikuti untuk setiap relasi adalah:

  1. Tulis relasi termasuk semua nama atribut. Tunjukkan kunci dan kunci asing.
  2. Berikan beberapa contoh data untuk relasi tersebut.
  3. Nyatakan Kunci untuk relasi dan tuliskan semua Ketergantungan Fungsional .
  4. Pelajari definisi setiap bentuk normal yang dimulai dengan 1NF dan naik ke BCNF (atau 3NF tergantung pada persyaratan proyek Anda).
  5. Jika suatu relasi memenuhi definisi bentuk normal, pindah ke bentuk normal berikutnya yang lebih tinggi.
  6. Jika suatu relasi gagal memenuhi definisi bentuk normal (misalnya, mengandung dependensi kunci parsial atau mengandung ketergantungan transitif), maka bagi relasi menjadi dua relasi baru.
    Mulailah proses normalisasi dari awal dengan masing-masing dari dua hubungan baru ini.

Hubungan Pelanggan

Pelanggan ( CustomerID (kunci) , Nama Depan, Nama Belakang, CustPhone, Jalan, Kota, Negara Bagian, Kode Pos, Jenis Kelamin )

Contoh Data

ID Pelanggan Nama Depan Nama Belakang Nomor Telepon Jalan Kota Negara Kode Pos Jenis Kelamin
C101 Elia Fawcett 201-222-2222 8989 Smith Rd Garfield NJ 07026 B
C102 Ishwarya Robert 201-222-3333 65 Jalan Harapan Garfield NJ 07026 M
C103 Frederic Fawcett 201-222-2222 8989 Smith Rd Garfield NJ 07026 M
C104 Goldie Montand 201-222-4321 5235 Kayu Besi Ln Garfield NJ 07026 B
C105 Dheeraj Alexander 201-222-4545 666 22nd Ave Bergenfield NJ 07621 M
C106 Josie Davis 201-333-6789 4200 Bluejay Ave Bergenfield NJ 07621 B
C107 Faye Glenn 201-333-4242 1522 Jalan Utama Taman Tebing NJ 07010 B
C108 Lauren Hershey 2014444-1313 2360 Maxon Rd Englewood NJ 07631 B

Kunci:ID Pelanggan

FD1:ID Pelanggan -> Nama Depan, Nama Belakang, Nomor Telepon, Jalan, Kota, Negara Bagian, Kode Pos, Jenis Kelamin

FD2:Kode Pos -> Kota, Negara Bagian

1NF:Memenuhi definisi relasi

2NF:Tidak ada ketergantungan Key parsial

3NF:Ada ketergantungan transitif:CustomerID -> ZipCode dan ZipCode -> Kota, Negara Bagian

Solusi:Pisahkan relasi Pelanggan menjadi dua relasi baru bernama CustomerData dan ZipCodes:

Data Pelanggan (ID Pelanggan (kunci), Nama Depan, Nama Belakang, CustPhone, Jalan, Kode Pos (fk), Jenis Kelamin )

Kunci:ID Pelanggan

FD1:ID Pelanggan -> Nama Depan, Nama Belakang, Nomor Telepon, Jalan, Kode Pos (fk), Jenis Kelamin

1NF:Memenuhi definisi relasi

2NF:Tidak ada ketergantungan Key parsial

3NF:Tidak ada dependensi Transitif

BCNF:Semua determinan adalah kunci kandidat

ZipCodes( ZipCode (kunci), Kota, Negara Bagian)

Kunci:Kode Pos

FD1:Kode Pos -> Kota, Negara Bagian

1NF:Memenuhi definisi relasi

2NF:Tidak ada ketergantungan Key parsial

3NF:Tidak ada dependensi Transitif

BCNF:Semua determinan adalah kunci kandidat

Hubungan Layanan Salon

SalonService ( ServiceID (kunci), ServiceName, ServiceDuration, ServicePrice, ServiceMaterials )

Contoh Data:

ServiceID DurasiLayanan HargaLayanan Bahan Layanan
SV101 Potongan Rambut Pria 20 22.00 Tidak ada
SV102 Potongan Rambut Wanita 30 32.00 Tidak ada
SV103 Potongan Rambut Anak 20 15.00 Tidak ada
SV104 Warna Rambut Wanita 60 76.00 Warna, Reagen, Sarung Tangan, Kuas Reagen, Foil
SV105 Gaya Rambut Wanita 45 56.00 Sampo, Kondisioner
SV106 Gaya Rambut Pria 45 46.00 Sampo, Kondisioner

Kunci:ServiceID

FD1:ServiceID -> ServiceName, ServiceDuration, ServicePrice, ServiceMaterials

1NF:ServiceMaterials dapat diperlakukan sebagai atribut multi-nilai. Dalam hal ini SalonService tidak dalam 1NF.

Solusi:Pisahkan ServiceMaterials menjadi relasi terpisah.

Untuk contoh ini, bagaimanapun, kami akan menyimpan ServiceMaterials sebagai atribut dari relasi SalonService.

1NF:Memenuhi definisi relasi

2NF:Tidak ada ketergantungan Key parsial

3NF:Tidak ada dependensi Transitif

BCNF:Semua determinan adalah kunci kandidat

Hubungan Karyawan

Karyawan( EmployeeID (key), FirstName, LastName, Street, City, State, ZipCode, PayRate )

KaryawanID Nama Depan Nama Belakang Jalan Kota Negara Kode Pos PayRate
E300 Kegembiraan Aveda 46 Easton Ave. Garfield NJ 07026 18.00
E400 Geraldo Geraldo 12 Fortis Blvd. Tepat. 2A Garfield NJ 07026 22.00
E500 Koy Petruzzio 70 Wilard St. Garfield NJ 07026 20.00
E600 Tanah Monroe 73 Teras Holly Taman Tebing NJ 07010 18.00
E700 Tetap Reese 2 Tempat Lincoln Taman Tebing NJ 07010 23.00
E800 Musim Dingin Pewarna Kulit 215 Elm Ave Teaneck NJ 07665 23.00

Kunci:EmployeeID

FD1:EmployeeID -> FirstName, LastName, Street, City, State, ZipCode, PayRate

1NF:Memenuhi definisi relasi

2NF:Tidak ada ketergantungan Key parsial

3NF:Ada ketergantungan transitif:EmployeeID -> ZipCode dan ZipCode -> Kota, Negara Bagian

Solusi:Pisahkan relasi Pelanggan menjadi dua relasi baru bernama EmployeeData dan ZipCodes:

EmployeeData(EmployeeID (key), FirstName, LastName, Street, ZipCode (fk), PayRate )

Kunci:EmployeeID

FD1:EmployeeID -> FirstName, LastName, Street, ZipCode (fk), PayRate

1NF:Memenuhi definisi relasi

2NF:Tidak ada ketergantungan Key parsial

3NF:Tidak ada ketergantungan transitif

BCNF:Semua determinan adalah kunci kandidat

Catatan:Kami sudah memiliki relasi ZipCodes sejak relasi Pelanggan dipecah. Jadi kami menggunakan kembali relasi ZipCodes tersebut. Tidak perlu membuat relasi ZipCodes kedua.

Hubungan Janji Temu

Janji Janji ( AppointmentID (key), AppointmentDate, AppotinmentTime, CustomerID (fk) )

Contoh Data:

AppointmentID Tanggal Janji Waktu Janji Temu ID Pelanggan
A400 22/10/2017 11:00:00 C101
A401 11/6/2017 12:45:00 C102
A402 12/7/2017 2:00:00 WIB C106
A403 18/12/2017 15:30:00 C106
A404 21/12/2017 11:30:00 C108
A405 31/12/2017 10:00:00 C107
A406 1/11/2018 15:15:00 C103
A407 1/12/2018 14:30:00 C104
A408 22/1/2018 4:00:00 WIB C105

Kunci:ID Janji Temu

FD1:AppointmentID -> AppointmentDate, AppotinmentTime, CustomerID (fk)

1NF:Memenuhi definisi relasi

2NF:Tidak ada ketergantungan Key parsial

3NF:Tidak ada dependensi Transitif

BCNF:Semua determinan adalah kunci kandidat

Relasi ServiceRendered

ServiceRendered ( AppointmentID (fk)(key), LineItemNumber(key), ServiceID (fk), ServiceExtendedPrice, EmployeeID(fk) )

Contoh Data:

AppointmentID LineItemNumber ID Layanan HargaPerpanjanganLayanan ID Karyawan
A400 1 SV104 75,00 E400
A400 2 SV102 25.00 E400
A401 1 SV101 22.00 E500
A402 1 SV104 75,00 E600
A402 2 SV102 30.00 E800
A403 1 SV105 50,00 E300
A404 1 SV105 55,00 E300
A405 1 SV102 30.00 E700
A405 2 SV104 70.00 E700
A405 3 SV105 50,00 E700

Kunci:AppointmentID, LineItemNumber

FD1:AppointmentID, LineItemNumber -> ServiceID (fk), ServiceExtendedPrice, EmployeeID(fk)

1NF:Memenuhi definisi relasi

2NF:Tidak ada ketergantungan Key parsial

3NF:Tidak ada dependensi Transitif

BCNF:Semua determinan adalah kunci kandidat

Set Hubungan Terakhir

Pelanggan ( ID Pelanggan (kunci) , Nama Depan, Nama Belakang, Nomor Telepon, Jalan, Kode Pos (fk), Jenis Kelamin )

Kode Pos (Kode Pos (kunci), Kota, Negara Bagian)

Layanan Salon ( ServiceID (kunci), ServiceName, ServiceDuration, ServicePrice, ServiceMaterials )

Karyawan ( EmployeeID (key), FirstName, LastName, Street, ZipCode (fk), PayRate )

Janji Temu ( AppointmentID (key), AppointmentDate, AppotinmentTime, CustomerID (fk) )

Layanan Diberikan ( AppointmentID (fk)(key), LineItemNumber(key), ServiceID (fk), ServiceExtendedPrice, EmployeeID(fk))

Komentar

  • Perhatikan bahwa hanya satu relasi ZipCodes yang diperlukan. Ini dibagikan dengan hubungan Pelanggan dan Karyawan.
  • Seperti disebutkan sebelumnya, atribut ServiceMaterials belum dinormalisasi dalam contoh ini. Mungkin bisa dilakukan di masa depan tugas atau peningkatan model.

Sekarang setelah relasi dinormalisasi, skema dapat dibuat dalam sistem manajemen basis data menggunakan bahasa kueri terstruktur (SQL).

V. Membuat Skema Basis Data dengan Bahasa Query Terstruktur

Buat tabel dalam database untuk masing-masing relasi di set akhir relasi.

Kode SQL berikut membuat enam tabel dan menambahkan batasan PRIMARY KEY ke masing-masing tabel:

CREATE TABLE ZipCodes( zipcode VARCHAR(12) NOT NULL, city VARCHAR(36), state VARCHAR(4), CONSTRAINT pk_zipcodes PRIMARY KEY (zipcode))CREATE TABLE Customer( CustomerID VARCHAR(10) NOT NULL, FirstName VARCHAR( 35), LastName VARCHAR(35), PhoneNumber VARCHAR(15), Street VARCHAR(35), ZipCode VARCHAR(12), Gender VARCHAR(2), CONSTRAINT pk_customer PRIMARY KEY (CustomerID))CREATE TABLE Appointment( AppointmentID VARCHAR(10) NOT NULL, AppointmentDateTime DATE, CustomerID VARCHAR(10) NOT NULL, CONSTRAINT pk_appointment PRIMARY KEY (AppointmentID))CREATE TABLE SalonService( ServiceID VARCHAR(10) NOT NULL, ServiceName VARCHAR(35), ServiceDuration INTEGER, ServiceHARMaterials NUMBER ), CONSTRAINT pk_salonservice PRIMARY KEY (ServiceID))CREATE TABLE Employee ( EmployeeID VARCHAR(10) NOT N ULL, FirstName VARCHAR(35), LastName VARCHAR(25), Street VARCHAR(45), ZipCode VARCHAR(12), PayRate NUMBER, CONSTRAINT pk_employee PRIMARY KEY (EmployeeID))CREATE TABLE ServiceRendered ( AppointmentID VARCHAR(10) BUKAN NULL, INTEGER NOT NULL, ServiceID VARCHAR(10) NOT NULL, ServiceExtendedPrice NUMBER, EmployeeID VARCHAR(10) NOT NULL, CONSTRAINT pk_ServiceRendered PRIMARY KEY (AppointmentID, LineItemNumber))

Menambahkan Kunci Asing

Kode SQL berikut menambahkan batasan FOREIGN KEY untuk menghubungkan tabel bersama:

ALTER TABLE Pelanggan TAMBAHKAN KONSTRAIN fk_customer_zipcodes KUNCI ASING (Kode Pos) REFERENSI Kode Pos (Kode Pos)ALTER TABLE Karyawan TAMBAHKAN KONSTRAINT fk_employee_zipcodes KUNCI ASING (Kode Pos) REFERENCES REFERENCES ZipCodespointer FORID_Customer Appointment_Kode Pos Pelanggan ) Alter Table Servicerendered Add Constraint fk_servicerendered_service Kunci asing (serviceId) Referensi salonservice (serviceId) mengubah tabel servicerender add Constraint fk_servicerendered_employee Kunci Asing (Pegawai Referensi) REFERENSI PEKERJAAN (PEKERJAAN) PERLANJANGAN TABEL PERVICERENDERED PEMBAYARAN ADD PROGISIONEDED) /pra> 

Komentar tentang SQL:

  • Kebanyakan DBMS akan menyimpan DATE dan TIME di kolom yang sama. Jadi AppointmentDate dan AppointmentTime digabungkan menjadi satu kolom di database bernama AppointmentDateTime
  • Kunci dan kunci Asing harus memiliki nama dan tipe data yang sama persis. Misalnya, Key CustomerID adalah VARCHAR(10) di tabel Customer dan juga VARCHAR(10) di tabel Appointment.
  • Pembatasan diberi nama yang bermakna seperti pk_customer untuk kunci utama dan fk_customer_zipcodes untuk kunci asing.
  • Kolom seperti Nomor Telepon dan Kode Pos harus menggunakan tipe data VARCHAR. Jika tipe data NUMBER atau INTEGER digunakan, nol di depan akan hilang.

Setelah membuat tabel dan menambahkan batasan kunci asing, skema database sekarang terlihat seperti berikut:

Tampilan Hubungan

Menggunakan Tampilan Hubungan di bawah Alat Database, kita dapat melihat hubungan (kunci asing) antar tabel:

Menambahkan Data ke Tabel menggunakan Pernyataan SQL INSERT

INSERT INTO ZipCodes VALUES ('07026', 'Garfield', 'NJ');INSERT INTO ZipCodes VALUES ('07621', 'Bergenfield', 'NJ');INSERT INTO ZipCodes NILAI ('07010', 'Cliffside Park', 'NJ');INSERT INTO ZipCodes VALUES ('07631', 'Englewood', 'NJ');INSERT INTO ZipCodes VALUES ('07665', 'Teaneck', 'NJ');INSERT INTO Customer VALUES (' C101', 'Elia', 'Fawcett', '201-222-2222', '8989 Smith Rd', '07026', 'F');MASUKKAN KE NILAI Pelanggan ('C102', 'Ishwarya', 'Roberts' , '201-222-3333', '65 Hope Rd', '07026', 'M');MASUKKAN KE NILAI Pelanggan ('C103', 'Frederic', 'Fawcett', '201-222-2222', ' 8989 Smith Rd', '07026', 'M');MASUKKAN KE NILAI Pelanggan ('C104', 'Goldie', 'Montand', '201-222-4321', '5235 Ironwood Ln', '07026', ' F');INSERT INTO Customer VALUES ('C105', 'Dheeraj', 'Alexander', '201-222-4545', '666 22nd Ave', '07621', 'M');INSERT INTO Customer VALUES (' C106', 'Josie', 'Davis', '201-333-6789', '4200 Bluejay Ave', '07621', 'F');MASUKKAN KE NILAI Pelanggan ('C107', 'Faye', 'Glenn' , '201-333-4242', '1 522 Main St', '071010', 'F');MASUKKAN KE NILAI Pelanggan ('C108', 'Lauren', 'Hershey', '201-444-1313', '2360 Maxon Rd', '07631', ' F');INSERT INTO SalonService VALUES ('SV101', 'Pria's Haircut', 20, 22, 'None');INSERT INTO SalonService VALUES ('SV102', 'Women's Haircut', 30, 32 , 'Tidak Ada');INSERT INTO SalonService VALUES ('SV103', 'Child Haircut', 20, 15, 'None');INSERT INTO SalonService VALUES ('SV104', 'Warna Rambut Wanita', 60, 76 , 'Warna, Reagen, Sarung Tangan, Kuas Reagen, Foil');INSERT INTO SalonService VALUES ('SV105', 'Gaya Rambut Wanita', 45, 56, 'Shampoo, Conditioner');INSERT INTO SalonService VALUES (' SV106', 'Gaya Rambut Pria', 45, 46, 'Shampoo, Kondisioner');INSERT INTO Employee VALUEs ('E300', 'Joy', 'Aveda', '46 Easton Ave.', '07026' , 18);MASUKKAN KE NILAI Karyawan ('E400', 'Geraldo', 'Geraldo', '12 Fortis Blvd. Tepat. 2A', '07026', 22);INSERT INTO Employee VALUES ('E500', 'Koy', 'Petruzzio', '70 Wilard St. ', '07026', 20);INSERT INTO Employee VALUEs ('E600', 'Landry', 'Monroe', '73 Holly Terrace', '07010', 18);INSERT INTO Employee VALUES ('E700', 'Pat', 'Reese', '2 Lincoln Place', '07010', 23);INSERT INTO Employee VALUES ('E800', 'Winter', 'Tanner', '215 Elm Ave', '07665', 23);INSERT INTO Appointment VALUES ('A400', '10/22/2017 11:00:00 AM', 'C101');MASUKKAN KE NILAI Janji Temu ('A401', '11/06/2017 12:45:00 PM', 'C102');MASUKKAN KE NILAI Janji Temu ('A402', '12/07 /2017 02:00:00 PM', 'C106');INSERT INTO Appointment VALUES ('A403', '12/18/2017 03:30:00 PM', 'C106');INSERT INTO Appointment VALUES ('A404 ', '21/12/2017 11:30:00', 'C108');MASUKKAN KE NILAI Janji Temu ('A405', '31/12/2017 10:00:00', 'C107');INSERT INTO NILAI Janji Temu ('A406', '01/11/2018 03:15:00', 'C103');MASUKKAN KE NILAI Janji Temu ('A407', '01/12/2018 02:30:00', 'C104');MASUKKAN KE NILAI Janji Temu ('A408', '0 22/2/2018 04:00:00 PM', 'C105');INSERT INTO ServiceRendered VALUES ('A400', 1, 'SV104', 75, 'E400');INSERT INTO ServiceRendered VALUES ('A400', 2 , 'SV102', 25, 'E400');INSERT INTO ServiceRendered VALUES ('A401', 1, 'SV101', 22, 'E500');INSERT INTO ServiceRendered VALUES ('A402', 1, 'SV104', 75 , 'E600');INSERT INTO ServiceRendered VALUES ('A402', 2, 'SV102', 30, 'E800');INSERT INTO ServiceRendered VALUES ('A403', 1, 'SV105', 50, 'E300'); INSERT INTO ServiceRendered VALUES ('A404', 1, 'SV105', 55, 'E300');INSERT INTO ServiceRendered VALUES ('A405', 1, 'SV102', 30, 'E700');INSERT INTO ServiceRendered VALUES (' A405', 2, 'SV104', 70, 'E700');INSERT INTO ServiceRendered VALUES ('A405', 3, 'SV105', 50, 'E700');

Komentar tentang Sampel Data

  • Kami menambahkan data yang cukup untuk dapat menguji hubungan antara tabel dan memberi pengembang aplikasi sesuatu untuk dikerjakan.
  • Berhati-hatilah dengan urutan penambahan data. Misalnya, semua ZipCode harus dimasukkan terlebih dahulu, sebelum Pelanggan atau Karyawan (yang keduanya menggunakan ZipCode sebagai kunci asing) dapat dimasukkan.
  • Saat menambahkan data VARCHAR dengan tanda kutip yang disematkan, gunakan dua tanda kutip bersamaan. misalnya, 'Gaya Rambut Wanita'
  • Pada titik ini, skema database siap bagi pengembang aplikasi untuk mulai mendesain formulir, laporan, dan kueri.

Sekarang skema database telah dibuat dan diisi dengan beberapa data sampel, aplikasi database dapat dikembangkan.

VI. Aplikasi Basis Data

Aplikasi database terdiri dari sekumpulan Formulir, Laporan, dan Kueri yang dihubungkan bersama pada Formulir Navigasi.

Form Navigasi adalah form pertama yang muncul ketika database dibuka.

Formulir Navigasi

Formulir dan laporan entri data yang berbeda dapat ditampilkan dengan mengklik pilihan di sisi kiri.

Formulir Entri Data Pelanggan

Formulir Entri Data Pelanggan digunakan untuk mencari pelanggan yang sudah ada dan untuk memasukkan informasi pelanggan baru. Bidang Kota dan Negara Bagian secara otomatis diisi dengan memilih kode pos dari Kotak Kombo. Formulir memiliki beberapa kode VBA khusus untuk mengonversi Nama Depan dan Belakang menjadi huruf besar dan untuk menghasilkan ID pelanggan baru yang unik ketika bidang ID Pelanggan kosong muncul setelah membuat rekor baru.

Formulir Entri Data Layanan Salon

Formulir Entri Data Layanan Salon digunakan untuk menanyakan, memperbarui, dan menambahkan layanan salon baru.

Formulir Entri Data Janji Temu

Formulir entri data janji temu digunakan untuk membuat janji temu baru untuk pelanggan. Seperti formulir Pelanggan, ID Janji Temu baru dapat dibuat dengan mengklik di bidang ID Janji Temu kosong setelah catatan baru dibuat. Pelanggan dapat dipilih dari kotak kombo ID Pelanggan seperti yang ditunjukkan di bawah ini:

Jika ini adalah Pelanggan baru yang membuat janji, pengguna dapat mengklik tombol Pelanggan Baru untuk membuka formulir Entri Data Pelanggan. Setelah informasi pelanggan baru disimpan, pengguna dapat kembali ke formulir Entri Data Janji Temu dan membuat janji.

Formulir Janji Temu dan Layanan

Tujuan formulir ini adalah untuk memasukkan layanan berbeda yang terkait dengan janji temu. Formulir ini juga dapat digunakan untuk membuat tagihan untuk pelanggan. Layanan dan Karyawan dapat dipilih dari kotak kombo masing-masing seperti yang ditunjukkan di bawah ini:

Laporan Total Janji Temu Pelanggan

Laporan ini memberikan ringkasan jumlah janji temu dan jumlah total yang dihabiskan oleh setiap pelanggan.

Berdasarkan kueri:

SELECT Customer.CustomerID, FirstName, LastName, SUM(q.TotalSpent) AS TotalSpent, COUNT(q.AppointmentID) AS NumberOfAppointmentsFROM Customer, Appointment, Query_Total_Spent_Each_Appointment AS qWHERE Customer.CustomerID =Appointment.CustomerID AND Appointment ID =.q. AppointmentIDGROUP BY Customer.CustomerID, FirstName, LastNameORDER BY LastName, FirstName;

Dan Kueri Total_Spent_Each_Appointment

SELECT Appointment.AppointmentID, SUM(ServiceExtendedPrice) AS TotalSpentFROM Appointment, ServiceRenderedWHERE Appointment.AppointmentID =ServiceRendered.AppointmentIDGROUP BY Appointment.AppointmentIDORDER BY Appointment.AppointmentID;

Laporan Layanan dan Diskon

Laporan ini menunjukkan setiap layanan dengan total harga layanan reguler, harga perpanjangan, dan indikasi jumlah diskon yang diterapkan pada layanan yang diberikan di masa lalu.

Berdasarkan kueri:

SELECT SalonService.ServiceID, ServiceName, SUM(ServicePrice) AS TotalServicePrice, SUM(ServiceExtendedPrice) AS TotalExtPrice, FORMAT(1.0 - (SUM(ServiceExtendedPrice) / SUM(ServicePrice)), "0,00%") SEBAGAI DiscountFROM SalonService, ServiceRenderedWHERE SalonService.ServiceID =ServiceRendered.ServiceIDGROUP OLEH SalonService.ServiceID, ServiceNameORDER OLEH SalonService.ServiceID, ServiceName;

Laporan Alamat Pelanggan

Laporan ini menunjukkan nama dan alamat lengkap setiap Pelanggan.

VII. Kesimpulan

Mengembangkan aplikasi database mengikuti siklus hidup pengembangan sistem yang dimulai dengan pemodelan konseptual dan dipindahkan melalui serangkaian langkah terstruktur yang mencakup pemodelan logis, normalisasi, implementasi fisik, dan pengembangan aplikasi. Contoh proyek Hair Salon mengilustrasikan setiap langkah utama ini. Namun beberapa detail belum sepenuhnya didokumentasikan. Misalnya, beberapa pekerjaan tambahan mungkin diperlukan untuk menormalkan hubungan Layanan Salon untuk memperhitungkan bahan berbeda yang digunakan untuk setiap layanan. Detail implementasi Aplikasi tambahan seperti kode VBA lainnya dan deskripsi yang lebih detail tentang penggunaan setiap formulir dan laporan juga dapat ditambahkan.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Proyek Database Salon Rambut

  2. Cara Melindungi Database dengan Kata Sandi di Access 2016

  3. Periksa Sumber Kontrol dari Semua Kontrol di Proyek MS Access Anda

  4. Fitur Tersembunyi:Seret dan Jatuhkan Objek Akses Antar File

  5. Kelas Dasar VBA dan Objek Turunan-2