@n199a
Java

Как правильно создать таблицу пользователей двух типов в БД?

Проектируется БД. На сайте должно быть типы аккаунтов со столбцами, перечисленными в скобках:
- Физическое лицо (фамилия, имя, email, password);
- Юридическое лицо (фамилия, имя, email, password + название компании, УНП компании).

Имеются общие данные: фамилия, имя, email, password, которые можно вынести в отдельную таблицу, назовем её accounts. Верно? Какие должны быть таблицы тогда в БД? Таблица accounts, таблица individuals и таблица company вот так:
60e6affbe2923344462976.jpeg

либо создать только одну таблицу accounts и там, где у юзера будет роль = "Физическое лицо" заполнятся null поля, которые должны быть заполнены у компании, а это поля название компании, УНП компании?
  • Вопрос задан
  • 479 просмотров
Решения вопроса 2
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
Из за 3-х полей абсолютно нет смысла создавать отдельные таблицы. Вы больше потеряете в производительности постоянно используя JOIN
Ответ написан
sarapinit
@sarapinit
Точу водой камень
предположу 1000

при таком количестве записей особо не играет роли структура. Можно и с джоинами, можно и без. Скорее всего все будет в кэшах и так постоянно.

Как вариант, сделать одну таблицу, сделать в ней поле account_type и строковое поле Details в которых будет храниться XML или JSON.
Если надо, добавляем вычисляемые поля и вешаем на них индексы. Но это только в случае если база поддерживает это. А какая база, кстати?

UPD
Можно создать разреженную таблицу где будут и поля для физиков и поля для юриков, в которых будет null если тип не тот. А на стороне приложения преобразовывать их в объекты соотвествующего типа и с ними работать.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы