Jika saya memahami ini dengan benar, log adalah untuk merekam detail tindakan pengguna secara otomatis, dan profile menyimpan detail pengguna.
Untuk log tabel, Anda tampaknya berusaha menyimpan data yang diringkas, yang perlu diperbarui dengan setiap pengiriman formulir. Saya sarankan Anda hanya memasukkan entri log baru [mis. log_id , log_date , profile_id , amount ] saat penyerahan dan menyerahkan agregasi ke laporan. Untuk mengaktifkan bergabung dari log ke profile , kami menyertakan profile_id .
Untuk profile tabel, Anda mungkin harus mengizinkan entri duplikat first_name |last_name |dob dan coba temukan cara lain untuk membuatnya unik (baik dengan menggunakan profile_id , atau melalui email, atau nomor paspor).
Saya tidak yakin dengan niat Anda untuk rowone , rowtwo , rowthree . Jika Anda tahu apa itu, sebutkan secara eksplisit; jika itu untuk item yang berulang kali tidak diketahui, pertimbangkan untuk memindahkannya ke tabel terpisah (yaitu normalisasi).
Untuk laporan Anda, Anda kemudian akan menulis kueri untuk bergabung dengan log dan profile tabel bersama-sama, dengan agregasi (yaitu GROUP BY dengan SUM dan/atau COUNT pada bidang yang diperlukan. "Jumlah Kunjungan" akan menjadi COUNT entri log untuk profil itu, "Jumlah" akan menjadi SUM dari amount .