Saya mengetahui beberapa praktik umum umum saat merancang database untuk suatu aplikasi, tetapi bagaimana dengan mendesain ulang?
Saya berada di tim yang ditugaskan untuk mendesain ulang aplikasi bisnis internal, meskipun meskipun saya mengatakan "internal," Saya sayangnya banyak, banyak lapisan orang menjauh dari kontak dengan pengguna sebenarnya dari sistem.
Program saat ini adalah dalam Formulir Oracle, tersebar di banyak tabel non-normal, kadang-kadang dengan beberapa tabel hampir duplikat memegang sedikit varian pada data masing-masing. Kendala sering dalam bentuk prosedur yang disimpan dengan buruk. Bahkan jenisnya sepertinya tidak disimpan dengan benar. Saya telah menemukan segala macam data buruk yang tampaknya diabaikan oleh Oracle tetapi memberikan cocok (dan memang demikian) untuk Wisaya Impor / Ekspor SQL Server. (Misalnya, bilangan bulat dua digit bukan merupakan waktu yang lengkap!)
Program aslinya mungkin sudah ada dua puluh tahun yang lalu, dan semua pengembang asli telah pensiun sejak lama sehingga bahkan orang-orang tua di sini tidak tahu siapa mereka. Akibatnya, tidak ada persyaratan bersih yang harus dilewati - kami hanya harus menggandakan fungsi aplikasi yang ada dan menyimpan data yang ada.
Hasil akhir dari penulisan ulang akan menjadi versi berbasis web yang berjalan di ASP.NET dengan MS SQL Server untuk back end.
Dua rekan tim pengembang saya yang lain jauh, jauh lebih tua dari saya, keduanya dengan latar belakang bisnis / SIM sedangkan saya adalah CS. Pengalaman anggota senior hampir secara eksklusif adalah formulir Oracle dan anggota lainnya sebagian besar telah melakukan pekerjaan aplikasi bisnis di Visual Basic. Meskipun latar belakang basis data saya terbatas pada perancangan basis data baru untuk proyek-proyek di MySQL atau SQLite, sebagian besar untuk kelas sarjana saya, saya tampaknya menjadi satu-satunya yang berpengalaman dalam merancang basis data sama sekali.
Saya sudah menulis sebuah program kecil dalam C # yang membaca semua data yang ada ke format netral, siap untuk dicetak ulang dan ditempatkan ke dalam database baru. Saya berencana untuk menulis kode load-in setelah database tujuan dirancang, sehingga data dapat dibagi dengan benar di tabel dinormalisasi baru, ditambahkan dalam urutan yang benar untuk mengikuti kendala baru, dll. Program yang sama kemudian dapat dijalankan lagi nanti untuk menyalin data produksi ke desain ulang jadi baru benar-benar dikerahkan. Ini meninggalkan desain ulang database yang sebenarnya sebagai hal utama yang harus dicari tahu.
Jadi inti dari pertanyaan saya: apa saja praktik terbaik untuk melakukan pendesainan ulang dari tingkat basis data aplikasi yang ada?