Делаю сайт по объявлениям местечковый, изначально рассчитывал только на обычных пользователей, теперь понадобилось добавить компании. Так как поля отличаются, добавил для них отдельную таблицу. Продолжая, понял, что при публикации объявления (а автор объявления в бд это его айди) будет дубляж айдишников. Создавать две одинаковые таблицы для юзеров и компаний - считаю неправильно. Или нет?
Подумав, пришел к идее в три таблицы. Юзер с основными данными пароль-почта, extendsUser с данными как юзер и extendsCompany с данными компании.
Ну будет дубляжь и что дальше? В этом не чего такого нету. Если у вас где-то обращение в БД по ID, просто добавь условия, что бы сервер понимал где компания где пользователь.
Таблица users содержит только поля пользователей.
Таблица companies содержит только поля компаний и + поле user_id для связи с пользователями.
Юзеров связываем с компаниями c помощью связи hasMany (имеет много). Т.к. пользователь может иметь много компаний. Если непонятно гугли hasMany.
Объявление публикует юзер, делаешь поле в форме - "От компании" и выбор компаний пользователя из списка.
Таким образом у тебя пользователь может публиковать и от себя, как физлица, и от любой своей компании.
Ну а в самом объявлении проверяешь, заполнено ли поле "От компании" и если заполнено то показываешь данные компании.
юзеры (они же физлица)
кампании (много всяких, но для каждой одна запись, чтобы не было "Рога и копыта", "Рога и Копыта". и т.д.)
кампании-юзеры (разные юзеры в разное время могут работать в разных компаниях)
В таблице объявлений два поля: user_id, company_id