I've been building a web app for over a year now. It was the first thing I started building as I learnt PHP and MYSQL etc. It has grown from a very simple budgeting app coded in raw PHP to a full personal finance tracker that I use everyday running on Codeigniter. I have built a couple of other small web apps in the mean time and as a result I am 1 year more experienced than I was when I first started this project and I am think my development is starting to suffer as a result of the fundamental design decisions I made on day 1.
Although the code has been rewritten to work with codeigniter the database structure is still the same and I feel I am having to write more code than required to get round issues with my DB schema.
My questions are:
- Are there any good resources for learning how to effectively design databases? Books, courses etc.
- Back when I started this project I very much "designed as I coded" but I feel that perhaps the more sensible way is to design everything at the function level so that you can see what the flow and logic is before writing a single line of code. Is there a particular name for this type of development or is it just standard practice? (I have no formal training in web dev so I feel I may just be stumbling into something that everyone already knows)
- Should I design my logic and functions and then my database or start with database and then logic and functions?