Apa yang datang lebih dulu, proses, atau data yang digunakan oleh proses itu? Saya tahu ini semacam pertanyaan "ayam atau telur", tetapi dalam hal perangkat lunak, saya percaya ini adalah prosesnya.
Misalnya, Anda dapat membangun model data Anda secara bertahap dengan menerapkan satu kasus penggunaan pada satu waktu hanya dengan ketekunan dalam memori (atau apa pun yang mudah diimplementasikan). Ketika Anda merasa telah menerapkan cukup kasus penggunaan untuk menguraikan entitas dasar, Anda dapat mengganti kegigihan dalam memori dengan database nyata, dan kemudian melanjutkan untuk memperbaiki skema saat Anda maju, satu kasus penggunaan pada satu waktu.
Ini mengeluarkan fokus dari database dan memindahkannya ke inti masalah: aturan bisnis. Jika Anda mulai dengan menerapkan aturan bisnis, pada akhirnya Anda akan menemukan (dengan proses yang sangat mirip dengan Seleksi Alam, omong-omong) data mana yang benar-benar dibutuhkan oleh bisnis. Jika Anda mulai dengan memodelkan database, tanpa umpan balik apakah data itu benar-benar diperlukan (atau dalam format itu, atau dalam tingkat normalisasi, dll ...), Anda akan berakhir dengan melakukan banyak penyesuaian terlambat di skema (yang mungkin memerlukan prosedur migrasi yang berat, jika bisnis sudah berjalan dengannya), atau Anda harus menerapkan "penyelesaian" dalam aturan bisnis untuk menebus model data yang tidak selaras.
TL; DR: Basis data tergantung pada bisnis - itu ditentukan oleh mereka. Anda tidak akan memerlukan data kecuali Anda memiliki proses yang beroperasi dengannya (laporan juga merupakan proses). Implementasikan proses terlebih dahulu, dan Anda akan menemukan data mana yang dibutuhkan. Modelkan dulu datanya, dan Anda mungkin bisa menghitung berapa banyak asumsi yang salah saat pertama kali memodelkannya.
Sedikit keluar dari topik tetapi sangat penting: alur kerja yang saya jelaskan sering digunakan bersama dengan praktik yang sangat penting seperti "Hal paling sederhana yang mungkin dapat bekerja", pengembangan yang digerakkan oleh tes, dan fokus pada memisahkan arsitektur Anda dari detail yang menghalangi jalan Anda (petunjuk: basis data). Tentang yang terakhir, ceramah ini merangkum gagasan dengan cukup baik.