很早以前做了一套信息发布系统,是做到客户可以自定义字段,无限级分类,后来发现在效率很低...
还是决定把方案写出来.
做客户自定义字段有两种方法,
一种就是客户每新增字段,就增加到数据一个字段
另一种就是 行转列的方式
我是用的第二种,设计三张表
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 |
|
|
|
|
|
|
待续....