Здравствуйте.
Долго пускал слюни на Yii и вот таки решился переписать свой кустарный фреймворк на чем-то более потребном и очевидном. В принципе, пролистал доки, вроде пока все понятно. Непонятно лишь, как лучше сделать БД. К слову, логические нестыковки были и ранее, а здесь захотелось сделать все сразу и красиво, оттого вопросов добавилось. В доке Yii пишут то так то эдак.
Итак, основной вопрос в организации реляционных таблиц. К примеру, есть модель User, есть модель Site. У User и Site может быть группа, у User может быть комментарий. Модели групп разные для юзера и сайта. Таким образом, если комментарий можно назвать Comment, т.к. он связан только с моделью User. То с группой не все так просто. Как я у себя это делаю: создаю две модели - UserGroup и SiteGroup
Вопрос №1. Логичнее ли модель Comment также жестко связывать с моделью User и называть ее в БД user_comment (ну и саму модель назвать UserComment), дабы не было путаницы? А то мало-ли, потом мне придется сделать другую модель, к примеру SiteComment и придется делать рефакторинг.
Вопрос №2. При условии связи user и user_group Внутри user должно быть поле с идентификатором PK user_group Так вот, как называть это поле? Есть два варианта, локальный и глобальный (это я их так назвал) Т.е. group_id и user_group_id С первым вариантом будет удобнее работать ($User->group_id вместо $User->user_group_id), но в последствии могут возникнуть коллизии, если будет какая-нибудь модель SiteGroup и в User надо будет прописывать и ее. Получится две group_id
Второй вариант универсальный, но громоздкий.
Вопрос №3. Если именовать таблицы как и модели, в единственном числе, то как именовать таблицы реляций MANY_TO_MANY? Есть таблицы user, есть user_group Какой таблицей их связать? Неужели user_user_group?
Я сейчас абстрагируюсь от Yii, а пытаюсь рассуждать логически. А здесь запостил, потому что здесь одно из самых рациональных комьюнити
Заранее спасибо за ответы.