这是一个关于,动态添加录入项的功能  例如,我要实现的对人员进行 基本信息,工作情况,管理   通常,设计库时要有两个表, table1 存基本信息    table2 存 工作情况 
  对于table1通常是定义 姓名,年龄,等字段 , 
  对于table2通常是定义 工作日期, 单位名 等字段,
  问题数据库一旦设计好,所要统计的信息也就是  姓名,年龄 这些字段了,  一但有一天客户说,我还要统计 身高,这个字段 ,由于数据库没设计这个字段,所以还要添加这个字段,修改代码
来完成,  我现在想要做的是 做一个表,存储用户要统计的字段,,用户可以随时添加,
  但是用户基本信息这个表又如何设计呢, 理论上它也要横向变纵向存数据,也就是说对于一个人,在这个基本信息表中他就要占多行记录,姓名一行,年龄一行,身高一行,这样对于查询又是一件很不方便的事,,  请问如何设计更好呢?????

解决方案 »

  1.   

    建议你还是老老实实加字段。弄成动态行后有得你烦,以后要什么都需要Sql行转列。
      

  2.   

    有偿求助:现有一段程序,原来是用PHP写的,涉及同时访问两个数据库(MS-SQL, MYSQL),要把他改成ASPX的,有哪位高手愿意帮一下忙(有偿的),请和我联系。程序的功能只是简单的统计,对数据库只读不写,内容显示出来就行了。
      

  3.   

    添加二个表,一个额外属性表(即需要动态统计的类型表),一个额外信息表(存储主表ID,额外属性ID,值)例:现在需要对员工增加身高属性统计
    额外属性表:
    ID Name
    1001 身高额外信息表
    EmployeeID PropertyID PropertyValue
    张三ID 1001 168CM如果后面需要再对员工增加,体重属性统计,同理,只需在额外属性表与额外信息表中添加记录即可,不必再更改表结构。
      

  4.   

    我做个工资套账的管理,和你的这个一样,思路是数据库的字段不用有意义的命名,而是命名成,col1,col2,col3之类的,设上需要的数据类型
    还有一个表是记录前面的字段名的解释,也就是
    colName,colDesc
    ---------------
    col1    姓名
    col2    单位
    检索的时候先查第二章表取字段名,根据字段名拼sql语句再查第一张表
    不知道我说的呢明白了吗?有点复杂,但代码并不难写
      

  5.   


    增加一个表储存 所属谁,字段的名,类型等属性后台增加字段写入上面的属性到新增加的表, 并且将这个字段和类型更新到实际的表.(这样做了就不能编辑字段名了,只能删除)然后添加内容的页面从存字段的表中刷新出来自定义字段,输出这个字段的html表示代码.执行添加的时候 也从字段表里筛选出来字段名for (int i 字段个数)
    {
    字段名[i] = request.form[字段名[i]]}然后将取到的字段名和字段值添加到真实的数据表这是思路. 我已经实现过. 也叫模型, CMS都有这个功能
      

  6.   

    To: demoooo
     这个方法理论也可行,
     需给连接uid 添加字段权限, 但是这个动态添加的字段可能会很多,,如果太多了,可能也有问题,需要根据多少来动态增加扩展表,,,,,,依然很麻烦,而且需要连接库的权限扩大,,,,,, 是否还有更好解决办法,, 等待高手,高手,高手,高手,高手,高手,高手,高手,
      

  7.   


    1个字的和几百个字段是一样道理,就是实现起来确实麻烦些.
    首先从字段表里面筛选出来,然后解析成html控件输出来,再for循环下这些字段的名称获得集合. 编辑赋值得用ajax.添加字段不需要额外的权限 ALTER TABLE ['+@TableName+'] ADD ['+@FieldName+'] text 即可删除字段需要权限,可以用存储过程来执行.现在大多数带模型的CMS都是这样操作的,你可以下载来直接用他们的代码