我正在从事电子商务模式设计,其中要求卖方提交产品信息,并且该信息可以是通用信息,也可以是类别信息。也就是说,每个类别都应具有某些功能,其值可能会受到约束 以供选择。 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 |
问题:
- 使用
type
列(enum
)是管理HTML表单约束的正确方法吗?或者,表单字段应仅是前端开发人员的关注点, 并且该字段在数据库中是不必要的?- 使用字符串数组是管理
boolean
和number
这样的数据类型的值范围约束的正确方法吗?要么, 应该在应用和服务器级别上管理这些限制, 绝对不在DB中?- 由于数组的大小可能很大(例如“品牌”),类别功能的值是否应该保存在单独的表中?
编辑:具体来说,通过问题1和2,我是说我是否应该考虑将所有可能性映射到enum
和范围内?
编辑2:关于结案请求,至少让我在评论中知道这些问题有何明显或错误,因为对我而言,他们值得提出疑问?