现在要设计出一个功能,大致是用户想要申请信用卡,信用卡有额度,年费、职业这些选项需要填写,填写完信息提交给后台审核。我现在是设计出了三张表,一张是属性表,一张是属性值表,一张是填写的信息表,信用卡的额度、年费、职业这些文字就存在属性表,而额度的值(比如1万元、2万元)就放在了属性值表,填写的信息表记录的就是用户对应填写的属性值,比如职业有别的选项,诸如经营年限的,属性表有一个parentId,经营年限就跟着职业走了,如图。  而现在这么设计存在一个很致命的问题。假如用户的职业是学生、工人、公务员,这些值是存在属性值表的,而每个职业下面其实还有不同的属性,公务员有工作年限、学生就没有工作年限了。职业下面的属性其实是跟着属性值(学生,工人)走的。数据库表又是如何设计呢,有没有大神解答?

解决方案 »

  1.   

    因为是先有属性再有属性值,就是先有职业再有职业下的属性,所以不能在属性表设计属性值有关的东西,这样就不符合逻辑了,是一个循环了你这个区分只是按职业身份进行区分,而职业身份是有限的,是可以List出来的,用职业(属性值)对属性进行区分是没问题的。
    如果属性值(比如经营流水)是无限的,是无法List出来的,那就不能用于区分属性值。
      

  2.   

    感觉应该这样,思路是先将所有公有的信息放在一起,比如性别,年龄等,然后建立一张子表,attr_key和attr_value,然后建立一张配置表作为子表说明,attr_key和attr_name,比如现在配置表存放
    attr_key     attr_name
    1     公司
    2     学校
    3     司龄
    4    年级
    5    学历
    6    工资水平
    ........
    比如张三是学生,李四是员工
    则张三在子表信息
    2    北京大学
    4    大一
    李四在子表信息
    1    百度
    3    3年
    6     20K/月
    连接子表和配置表得到的信息就是
    张三   学校 :北京大学  年级 :大一
    李四   公司 :百度  司龄 :3年  工资水平 :20K/月这只是思路,将列属性转化为列值存储,用一张配置表进行说明。