模式设计和动态表单输入约束

时间:2018-12-19 13:30:49

标签: mysql database database-design schema

我正在从事电子商务模式设计,其中要求卖方提交产品信息,并且该信息可以是通用信息,也可以是类别信息。也就是说,每个类别都应具有某些功能,其值可能会受到约束 以供选择。 This SO post总结了我提出的问题和设计。那就是:

产品

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.   
  3. 使用字符串数组是管理booleannumber这样的数据类型的值范围约束的正确方法吗?要么,   应该在应用和服务器级别上管理这些限制,   绝对不在DB中?
  4.   
  5. 由于数组的大小可能很大(例如“品牌”),类别功能的值是否应该保存在单独的表中?
  6.   

编辑:具体来说,通过问题1和2,我是说我是否应该考虑将所有可能性映射到enum和范围内?

编辑2:关于结案请求,至少让我在评论中知道这些问题有何明显或错误,因为对我而言,他们值得提出疑问?

0 个答案:

没有答案