我正在尝试创建一个用于存储汽车信息的数据库。
汽车可以分为新车、二手车和租车。每种汽车类别都有不同的属性,因为新车有不同的二手车不需要的功能,二手车和租车类别的情况相同。将来可以使用应用程序管理员侧的表单管理器为这三个类别添加、删除属性。
目前,我将这些存储在1个产品表中,其中包含这3个类别所需的所有属性。
PRODUCT(id,title,description,model,kilometer,enginsize,conditions,.....,.,...)由于每个类别的表单被提议从管理控制管理,我正在寻找一个新的可扩展的数据库。
current development:
all common attributes in Products
PRODUCT(pid,title,description,...)
CATEGORY(cid,cname) new,used,rent
form_field(formfield_id,name,type) to store all attributes that are not common
form_field_category(formfield_id,cid) to store category associated attributes
form_post_data(post_id,pid,formfield_id,value) to store submitted data有什么建议吗。
发布于 2012-12-31 02:52:22
您需要的是一个Entity-Attribute-Value model。
如果表form_post_data中的大多数值都是文本,只需将其设置为varchar字段。但是,如果您存储的是数值、选项和其他类型(您可能希望对其进行过滤),请查看本文An alternative way of EAV modelling。
对于可以有多个值的属性,请参阅后续文章EAV multi-value fields。
发布于 2012-12-17 19:59:05
据我所知,你有两种类型的属性:通用的和特定类别的。
所以做一些类似这样的事情:
PRODUCT(pid,title,description,...)
CATEGORY(cid,cname) new,used,rent
additional_info_category(aid, cid, name)
adition_info_data (adataid, aid, pid, data)应该足够了,你只需要加载所有的产品信息加上其他信息中的字段,这与类别相关。
如果添加新字段是特定于类别的,那么添加新字段应该没有问题,但我的问题是:您确定不需要添加公共字段吗?
https://stackoverflow.com/questions/13913642
复制相似问题