Database is one of the biggest bottleneck of a Web App performance now a days.
A poorly designed database can make your life hell as a dev while optimizing an app.
On the other hand, A good design can speedup your development process along with the performance of the app.
I'm also learning the basics of database design, in that process here listing some basic tips.
- Actually draw the design on a big paper.
- List down all columns you may need.
- If you have confusion about a column (you may need or not), list it down.
- Now break those into multiple tables.
- Don't keep any irrelevant data on a table, better use additional table.
- As it's a relational database design, check your relations properly.
- For MySQL advanced engines like InnoDB supports relations inside database end, use them, This way you'll have to write less code and less query.
- Now run your design through Normalization Form (NF) rules.
As I always say, Database design is almost 30% of whole development process for me. With a solid design I can write code very confidently. So think before the design, don't be upset later.
If you have any other point, please let me know via comment. I'm eagerly waiting to learn something new.