Задать вопрос
Ответы пользователя по тегу SQL
  • Как корректно составить ERD?

    @robofox
    Создать таблицы с параметрами декораторов. Например:
    decor_text_params:
    id   product_id   text_value   text_position   text_param1   text_param2
    
    decor_paper_params:
    id product_id paper_type paper_size paper_param1 paper_param2

    В них же будет привязка к продукту. Да, добавится обработка на уровне кода.

    Если хочется обойтись без привязки к коду, можно завести таблицы параметров декораторов.
    decor_params_definition:
    id   decor_id   param_name  param_type  ...
    
    Заполнение:
    1   1   "Цвет бумаги"  "color"
    2   1   "Размер бумаги"   "int"

    В другой таблице хранить значения параметров в виде строк, на уровне кода преобразовывать их к нужным типам.
    Такая структура полезна, если параметры будут постоянно добавляться или изменяться, и они нужны только для отображения. Если с параметрами придется работать в коде, лучше жестко их привязать.
    Ответ написан
    Комментировать
  • Денормальна ли архитектура? Избыточна ли?

    @robofox
    Сама по себе избыточность ни на что не влияет (кроме затрат на хранение данных), и иногда бывает полезна. Нужно оценивать структуру с точки зрения здравого смысла и эффективности.

    Например, зачем делать 2 таблицы (a и b), если у них одинаковый набор полей? Можно сделать одну таблицу с полем ENUM('a','b').

    Если объекты будут добавляться (например "c"), то целесообразней сделать отдельную таблицу связей "пользователь-объект". Если при этом объекты "a", "b" и "c" будут в одной таблице, количество костылей заметно сократится, производительность увеличится (если будут индексы).

    Еще: поле `group` у пользователя NOT NULL. А если пользователь не будет состоять ни в одной группе?
    Ответ написан
    Комментировать