@SteepZero

Как лучше перепроектировать базу?

В системе есть два вида клиентов: Client Individuals (физ. лица) и Client Legals (юр. лица)

Предыдущий разработчик реализовал деление на типы следующим образом:

Есть таблица clients, которая содержит информацию о привязанном к клиенту менеджере и прочие бизнес-данные

Есть таблица client_individuals, которая хранит в себе связть с записью из таблицы clients (client_id) и набор полей, характерный для физ. лиц (дата рождения, паспортные данные и т.д.)

Есть таблица client_legals, которая хранит в себе связть с записью из таблицы clients (client_id) и набор полей, характерный для юр. лиц (ОГРН, вебсайт, дата ренистрации и т.д.)

Такой вариант не кажется мне самым удобным

У меня есть идея такой структуры:
таблица clients - хранит created_at, updated_at, type (физ/юр)
таблица client_fields - хранит символьный код поля (code), название поля (name), описание поля (description)
таблица client_values - хранит значение поля (value), связь с символьным кодом поля (client_field_code) и клиентом (client_id)

Но мне кажется такая вещь немного избыточной в силу того, что набор полей меняется редко

Уверен, можно придумать менее пухлый и более удобный варинат
  • Вопрос задан
  • 153 просмотра
Пригласить эксперта
Ответы на вопрос 5
@imhuman
Мне кажется существующий вариант вполне хорош и удобен. Чем он вам не угодил?
Ответ написан
Комментировать
@kn0ckn0ck
Продюсер
Предыдущий разработчик сделал все правильно, по классике.

Предложенный альтернативный вариант ничем не удобнее с точки зрения построения реляционных запросов, скорее даже наоборот - гораздо более неудобный и тормозной в перспективе.

Оставьте как было.
Ответ написан
Комментировать
sim3x
@sim3x
3НФ
Все ок
Ответ написан
Комментировать
yellow79
@yellow79
Senior Software Engineer
таблица clients - id, created_at, updated_at, type
таблица client_fields - client_id, field_name, field_value

Но я так понимаю у вас примерно тоже самое, просто описание полей вынесено в отдельную таблицу. Вполне себе достойное решение
Ответ написан
Комментировать
@d-stream
Готовые решения - не подаю, но...
В принципе есть еще клиенты-ИП...
Притом в половине случаев атрибуты ИП схожи с физиком, в другой половине - с юриком...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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