很早以前做了一套信息发布系统,是做到客户可以自定义字段,无限级分类,后来发现在效率很低...
还是决定把方案写出来.
做客户自定义字段有两种方法,
一种就是客户每新增字段,就增加到数据一个字段
另一种就是 行转列的方式
我是用的第二种,设计三张表
l 功能表 t_sys_field 用户字段
字段名 |
类型 |
默认值 |
中文意义 |
关键表值 |
fieldid |
int |
identity primary key |
字段id |
|
categoryid |
int |
|
目录id |
|
fieldname |
nvarchar(50) |
|
字段名 |
|
fieldremark |
nvarchar(255) |
|
字段备注 |
|
fieldtype |
int |
|
1.输入框,2下拉,3单选,4多选 |
|
fieldsort |
int |
|
字段排序 |
|
isrequiredfield |
|
|
必选字段 |
|
fieldlength |
int |
50 |
字段长度 |
|
isnumber |
bit |
|
只有数字字段才能进行排序 |
|
l 功能表 t_sys_fieldoption 用户字段选项,只有不是输入框的时候
字段名 |
类型 |
默认值 |
中文意义 |
关键表值 |
optionid |
int |
identity primary key |
id |
|
fieldid |
int |
|
字段id |
|
optiontext |
nvarchar(50) |
|
字段选项文字 |
|
optionvalue |
nvarchart(50) |
|
字段选中文字 |
|
optionsort |
int |
|
字段选项排序 |
|
|
|
|
|
|
l 功能表 t_sys_fieldvalue 用户字段值
字段名 |
类型 |
默认值 |
中文意义 |
关键表值 |
valueid |
int |
identity primary key |
id |
|
fieldid |
int |
|
字段id |
|
valuetext |
nvarchar(250) |
|
字段值 |
|
postinformationid |
int |
|
发布信息id |
|
|
|
|
|
|
待续....