2 个回答

建立三个表,车型表、属性表、车型属性表
车型表car
id car
属性表 attr
id attr
车型属性 car_attr
c_id a_id data

这样无论有后期添加多少属性,都不用修改表结构
车型表和属性表就不做过多介绍了吧,分别记录不同车型和不同的属性类型
车型属性中
每一行对应:某一车型+某一属性+该属性值

现在比如我要找所有带天窗的车型,逻辑如下:
先去属性表找到“天窗”属性的id,用该ID(a_id)带入车型属性表中找到所有带天窗的车型
select id from attr where attr = "天窗";
id = 2
select c_id from car_attr where a_id = 2 and data = 1
c_id = 1,3,6,9
select car from car where id = ......

每个属性对用一个字段,里面是个字典值,与之对应的是有个字典表
(为了速度,字典值也可能是静态的,直接放在配置文件中读取,因为了这些字段很少改动)
大多数的值都是单选框,只不过样式变了
已选条件是回传值,判断你选中了什么

我说的可能有点迷糊,这其实是对于数据库而言是简单的设计,对前端要求高点

宣传栏