Beberapa jawaban lain untuk pertanyaan Anda:
1) Anda cukup tepat sasaran untuk seseorang yang menghadapi masalah seperti ini untuk pertama kalinya. Saya pikir petunjuk dari orang lain tentang pertanyaan ini sejauh ini cukup menutupinya. Kerja bagus!
2 &3) Hit kinerja yang akan Anda ambil sebagian besar akan bergantung pada memiliki dan mengoptimalkan indeks yang tepat untuk kueri/prosedur khusus Anda dan yang lebih penting volume catatan. Kecuali Anda berbicara tentang lebih dari satu juta catatan di tabel utama Anda, Anda tampaknya berada di jalur untuk memiliki desain yang cukup umum sehingga kinerja tidak akan menjadi masalah pada perangkat keras yang masuk akal.
Yang mengatakan, dan ini terkait dengan pertanyaan Anda 3, dengan permulaan yang Anda miliki, Anda mungkin tidak perlu terlalu khawatir tentang kinerja atau hipersensitivitas terhadap ortodoksi normalisasi di sini. Ini adalah server pelaporan yang Anda bangun, bukan backend aplikasi berbasis transaksi, yang akan memiliki profil yang jauh berbeda sehubungan dengan pentingnya kinerja atau normalisasi. Basis data yang mendukung pendaftaran langsung dan aplikasi penjadwalan harus memperhatikan kueri yang membutuhkan waktu beberapa detik untuk mengembalikan data. Fungsi server laporan tidak hanya memiliki lebih banyak toleransi untuk kueri yang kompleks dan panjang, tetapi strategi untuk meningkatkan kinerja jauh berbeda.
Misalnya, dalam lingkungan aplikasi berbasis transaksi, opsi peningkatan kinerja Anda mungkin mencakup pemfaktoran ulang prosedur tersimpan dan struktur tabel Anda ke tingkat ke-n, atau mengembangkan strategi caching untuk sejumlah kecil data yang biasanya diminta. Dalam lingkungan pelaporan, Anda tentu dapat melakukan ini, tetapi Anda dapat memiliki dampak yang lebih besar pada kinerja dengan memperkenalkan mekanisme snapshot di mana proses terjadwal berjalan dan menyimpan laporan yang telah dikonfigurasi sebelumnya dan pengguna Anda mengakses data snapshot tanpa tekanan pada tingkat db Anda di berdasarkan permintaan.
Semua ini adalah kata-kata kasar yang bertele-tele untuk menggambarkan bahwa prinsip dan trik desain apa yang Anda gunakan mungkin berbeda mengingat peran db yang Anda buat. Semoga bermanfaat.