Выбор подхода к созданию архитектуры зависит от требований и характеристик проекта. Однако в случае сайта объявлений с добавлением компаний предложенная вами структура базы данных может быть достаточно эффективной.
Если вы хотите избежать дублирования, то использование отдельной таблицы для компаний (например, extendCompany) является правильным подходом. Это позволит хранить данные, специфичные только для компаний, отдельно от данных для пользователей.
Однако вместо отдельной таблицы для пользователей (extendsUser) вы можете просто добавить дополнительные столбцы в таблицу пользователей, чтобы хранить данные, специфичные для них. Это может сэкономить некоторое количество времени и ресурсов при выполнении запросов соединения таблиц.
Вот пример структуры таблиц для модели сайта объявлений с добавлением компаний:
1. Таблица "users":
- id (первичный ключ)
- имя
- фамилия
- пароль
- почта
- роль (например, "пользователь" или "администратор")
2. Таблица "companies":
- id (первичный ключ)
- название компании
- адрес
- телефон
- пользователь_id (внешний ключ, ссылается на id в таблице "users")
Таким образом, каждая компания будет связана с соответствующим пользователем через столбец "пользователь_id".
Эта структура позволит вам эффективно хранить данные компаний и пользователей, а также обеспечит возможность связи между ними. Однако помните, что в конечном итоге выбор структуры базы данных будет зависеть от конкретной ситуации и требований вашего проекта.