Yii best practice?
Компонент - это php класс с каким-нибудь функционалом, виджет набор компонентов + html код, модуль отдельный раздел на сайте, на пример аккаунт. вроде так в первом yii было. Во втором не знаю, но личное имхо лучше первый уже не использовать, не особо он гибок. А вот что на самом деле гибкое так это Symfony2 , но он и сложнее будет в изучении. В пользу симфони скажу что там есть автоматическая генерация таблиц в БД на основе моделей + миграции.
Можно ли сделать так чтобы таблицы в БД создавались автоматически, на основе тех же моделей?
Так не получится по целому ряду причин. Но главная - писать модель дольше, чем создать таблицу в БД, поэтому проще делать БД и генерить к ней модель