When to be sure that your database design is perfect?
Your database design will never be perfect. IMHO, the goal is to develop a functionally working database that allows for scalability.
For example: Initial design built from a one-to-many perspective. (Each user has only one role) This will not scale well if requirements change so that each user can have more than one role.
Always keep scalability in mind when designing a database. Think about making you database design more like a power-strip than an extension cord with one plug.
Is returning to the data base design to change some issues...considered as a bad practice or is it normal?
No during development and beta testing. Requirements can be misunderstood or mirepresented and cause design changes. Reports may not give enough detail at first glance. This also leads to end user "Ah Ha!" moments. If Report-A gives us this information then Report-B and Report-C can give us this information. Perhaps the data does not exist in the design for Reports B & C.
Scope creep can also cause design changes. One way to prevent changes is to treat these new "Ah Ha" requirements that surface during development as Phase 2. (scalability once again)
Yes, if this is in production and there are several minor tweaks that were not part of scope changes but shortfalls or shortcomings.
Experience is the best teacher of these issues. Once you get burned buy a desing that is not scalable you will learn to think in terms that allow for easy integration of change.