Схема проектирования и ограничения ввода динамической формы - PullRequest
0 голосов
/ 19 декабря 2018

Я работаю над дизайном схемы электронной коммерции, где продавец обязан предоставить информацию о продукте, и эта информация может быть общей или производной от категории.То есть каждая категория должна иметь некоторые особенности, значения которых могут быть ограничены на выбор . Этот пост SO суммирует проблему и дизайн, который я тоже придумал.То есть:

Продукт

Product_ID, Name, Price, Photo, Category_ID

Категория

Category_ID, Name, Parent_ID, isLeafCategory (only a leaf category has products assigned)

Category_Field

Category_Field_ID, Category_ID, Name, Type, Values (range of values to choose from)

Product_Category_Field_Value

ID, Product_ID, Category_ID, Category_Field_ID, Value

Например, предположим, что для категории «Таблицы» имеются следующие особенности и ограничения:

| category_id (ID)  |   name (string)    | type (`enum` field) |             values (array of strings)             | isRequired (Boolean) |
|-------------------|--------------------|---------------------|---------------------------------------------------|----------------------|
|                 1 | "Color"            | SELECT              | ["red","black", "black gray", ... say 36 more]    | True                 |
|                 1 | "Shape"            | SELECT              | ["Rectangular","Round","Square", ... say 19 more] | True                 |
|                 1 | "Storage included" | BOOLEAN             | ["YES", "NO"]                                     | False                |
|                 1 | "Seating capacity" | INT                 | ["0","8"]                                         | False                |
|                 1 | "Brand"            | SELECT              | ["Ikea","Godrej", ... say 1024 more]              | True                 |
|                 1 | "Suitable for"     | SELECT_MULTIPLE     | ["ADULT","CHILDREN","DINING", ... say 6 more]     | False                |

Вопросы:

  1. Является ли использование столбца type (enum) правильным способом ограничения HTML-форм?Или, должны ли поля формы быть предметом только внешнего интерфейса разработчика, и это поле не нужно в БД?
  2. Является ли использование массива строк правильным способом управления ограничениями на диапазон значений для типов данных, таких какboolean и number?Или следует управлять этими видами ограничений на уровне приложений и серверов, а не в БД?
  3. Следует ли сохранять значения для элемента категории в отдельной таблице, поскольку размер массива может быть очень большим (например, "бренды")?

РЕДАКТИРОВАТЬ: По вопросам 1и, в частности, 2, я имею в виду, если мне следует подумать о сопоставлении всех возможностей с enum и диапазонами?

РЕДАКТИРОВАТЬ 2: Что касается заключительных запросов, по крайней мере, дайте мне знать в комментариях, что так очевидно илинеправильно об этих вопросах, потому что мне стоит их задавать?

...