tjthink的gravatar头像
tjthink 2016-05-11 10:40:26

数据库用户表扩展字段方案哪个比较合理?

用户表扩展字段方案:
一、
    建立一个扩展字段表,管理扩展字段,字段如下
    id        主键
    fieldName 字段名称
    fieldDesc 字段中文名称
    fieldType 字段对应控件类型 1文本框,2文本域,3日期(yyyy-mm-dd),4时间(yyyy-mm-dd hh:mm:ss)
    userType  用户类型

    建立一个存储扩展字段值的表
    id         主键
    fieldId    字段主键
    fieldValue 字段值
    userId     用户id

    方案优点:可以删除字段,同时方便删除已储存的值
    方案缺点:字段是预先规定的与ldap中的属性一致,不能自由添加、修改,否则无法同步到ldap; 在用户量较大,扩展字段较多时,存储扩展字段值的表数量会很大


二、
    建立一个扩展字段表,管理扩展字段,字段如下
    id        主键
    fieldName 字段名称
    fieldDesc 字段中文名称
    fieldType 字段对应控件类型 1文本框,2文本域,3日期(yyyy-mm-dd),4时间(yyyy-mm-dd hh:mm:ss)
    userType  用户类型

    在用户表中添加一个字段以xml格式存储扩展值,同时定义一个ldap属性来存储它
    如
    <?xml version="1.0" encoding="UTF-8"?>
    <fieldValue>
    <field fieldName="字段名xxx1">字段值xxx1</field>
    <field fieldName="字段名xxx2">字段值xxx2</field>
    <field fieldName="字段名xxx3">字段值xxx3</field>
    <field fieldName="字段名xxx4">字段值xxx4</field>
    </fieldValue>

    方案优点:只需在ldap中定义一个属性,不需要另外建立表存储扩展值,可以自由添加扩展字段
    方案缺点:删除、修改扩展字段时操作较麻烦,涉及到操作xml的节点

 

    以上是个人的想法,有不对的地方欢迎帮忙纠正。大家选择哪种,或有什么更好的方法呢?感谢!!!

所有回答列表(2)
Chen.木难的gravatar头像
Chen.木难  LV11 2016年5月12日

帮顶,希望能学习一下。

最代码官方的gravatar头像
最代码官方  LV168 2016年5月12日

两种方案各有优缺。

主要看你的业务规则是那种方便,目前最代码的分享,问答,博客就是一张表实现的,扩展字段是通过一个单独的字段extend来实现的,其值是json数据。

如果业务只是通过扩展字段做显示的话那第一种合适,如果需要根据扩展字段做更复杂的业务实现,那第二种设计更合理。

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友