现在要设计出一个功能,大致是用户想要申请信用卡,信用卡有额度,年费、职业这些选项需要填写,填写完信息提交给后台审核。我现在是设计出了三张表,一张是属性表,一张是属性值表,一张是填写的信息表,信用卡的额度、年费、职业这些文字就存在属性表,而额度的值(比如1万元、2万元)就放在了属性值表,填写的信息表记录的就是用户对应填写的属性值,比如职业有别的选项,诸如经营年限的,属性表有一个parentId,经营年限就跟着职业走了,如图。 而现在这么设计存在一个很致命的问题。假如用户的职业是学生、工人、公务员,这些值是存在属性值表的,而每个职业下面其实还有不同的属性,公务员有工作年限、学生就没有工作年限了。职业下面的属性其实是跟着属性值(学生,工人)走的。数据库表又是如何设计呢,有没有大神解答?
如果属性值(比如经营流水)是无限的,是无法List出来的,那就不能用于区分属性值。
attr_key attr_name
1 公司
2 学校
3 司龄
4 年级
5 学历
6 工资水平
........
比如张三是学生,李四是员工
则张三在子表信息
2 北京大学
4 大一
李四在子表信息
1 百度
3 3年
6 20K/月
连接子表和配置表得到的信息就是
张三 学校 :北京大学 年级 :大一
李四 公司 :百度 司龄 :3年 工资水平 :20K/月这只是思路,将列属性转化为列值存储,用一张配置表进行说明。