人员基础表中的属性可以自定义,数据库表应该怎么设计

kgdxpr 2010-11-03 09:46:12
人员基础表中有姓名、性别、民族等属性。

但可能到用户那边,用户觉得有些属性是没用的,而且还缺少一些他们特有的属性。

这样我就想设计成属性可自定义,可以让用户自已维护。

不知道该怎么设计数据库表。

哪位高手能告诉一下,或有相关文章或例子也可以。

谢谢。
...全文
1955 48 打赏 收藏 转发到动态 举报
写回复
用AI写文章
48 条回复
切换为时间正序
请发表友善的回复…
发表回复
AcHerat 2011-01-18
  • 打赏
  • 举报
回复
这在SQL里实现效率不高吧!你建几个基本表,存要用到的属性,在程序里让用户来选择他想要用到的属性,插入到数据库时默认没选择的属性为空!基本这样的是在程序里设置为动态实现的,在SQL里应该够呛,而且不好维护吧!
Sphonix 2011-01-17
  • 打赏
  • 举报
回复
把你们的程序扩展成动态属性的。动态添加行如果数据量大的话,要搞死人的。
stepday 2011-01-15
  • 打赏
  • 举报
回复
只能够用属性扩展模式了的
回头是岸 2011-01-13
  • 打赏
  • 举报
回复
如果硬要这么做的话 你就必须的设计多表了

但是那将给你带来的是 行转列的问题

回头是岸 2011-01-13
  • 打赏
  • 举报
回复
对了 难道客户就没有给过你需求
叶子 2011-01-13
  • 打赏
  • 举报
回复
动态添加行,行列转换应该是正常思路。
回头不看 2011-01-13
  • 打赏
  • 举报
回复
用属性拓展模式 软件工程实际教程第一版有
sjt000 2011-01-11
  • 打赏
  • 举报
回复
把字段设置成列~
gogodiy 2011-01-04
  • 打赏
  • 举报
回复
绝对不要让客户能修改到数据结构,不然会死的很难看的。
南山明月 2010-12-28
  • 打赏
  • 举报
回复
建一张表如下
Code 是属性编号,type 是属性类型,name 属性名称
Code Type Name
1 1 汉族
2 1 苗族
3 1 侗族
4 2 高中
5 2 小学
6 3 男
7 3 女
GeBaGong 2010-12-24
  • 打赏
  • 举报
回复
两种方法:
1、一开始就搞一定数量的冗余列,col1,col2.。。。,微软自己project软件就是这种思想支持自定义
2、加一个属性表,用户要改的话让他改纪录而不是结构


强烈反对让用户修改数据库结构
南山明月 2010-12-22
  • 打赏
  • 举报
回复
建一张表如下
Code 是属性编号,type 是属性类型,name 属性名称
Code Type Name
1 1 汉族
2 1 苗族
3 1 侗族
birdmonster 2010-12-20
  • 打赏
  • 举报
回复
每个字段放一张表
再把列信息和对应表名存一下
pt1314917 2010-12-18
  • 打赏
  • 举报
回复
将属性建立成一张表。如:
属性表
属性ID 属性名称
1 姓名
2 性别
3 年龄
4 学历

用户表
用户ID 用户名...
1
2

用户属性表
ID 用户ID 属性ID 属性值
1 1 1 张三
2 1 2 男
3 1 3 34
Karual 2010-12-17
  • 打赏
  • 举报
回复
用户属性表单独建立一张,最好包含所有用户可能用到的属性;
然后建一张基础信息表用于保存通用的属性,如姓名性别等。
yongjinghuang 2010-12-09
  • 打赏
  • 举报
回复
如果只止于一般的属性增减问题,可以考虑alter table add aa varchar 这种形式 alter table drop column
fskjb01 2010-12-05
  • 打赏
  • 举报
回复
我认为前台用户看到的表和后台的表是不同的,后台有一堆表按需求存放数据,但有一张表来记录用户在前台表显示那些字段(姑且叫配置表),当用户打开页面要查看前台表的时候先根据配置表确定要显示那些字段这样拼接sql的select中的字段名,然后。。。不用我说了吧
ask_chang 2010-11-25
  • 打赏
  • 举报
回复
先转苦行僧的一段关于如何操作这样的需求:
SQL code1.首先设计一个表保存你要设置的自定义字段的信息,比如说,你要对哪个表 (假设为A)添加自定义字段,该自定义
字段的数据库的名称(这个一般都是系统按照一定的规则自动生成,否则会要重新判断是否是关键字,是否和表中其
他字段重合等等很麻烦.),页面显示的名称,是否要显示在页面上,数据类型(一般只提供几种简单的数据类型,如字
符,数字,日期),默认值(如果是默认的数组或者集合),当然也可以添加相应的说明信息.
如果是ERP或者相关的系统,还要设计一个字段定义这个表A是哪个模块的.这样方便分类.否则会乱套的.
2. 写几个公共函数,在每个Form或者页面加载的时候,判断是否需要将该自定义的列显示出来,在
SUID(Select,Update,Insert,Delete)的语句中,需要判断是否有自定义的列,然后产生相应的SUID修改语句.如果
是存储过程来完成SUID的操作话,还要稍微麻烦一点点.


不过个人认为LZ这样的做法是不太可取的,一是用户自定义字段,你不好控制表结构,程序中对表操作就相当
困难,其次,如果数据量大,用户随意添加或改动字段对系统影响太大。


yanguohua2008 2010-11-23
  • 打赏
  • 举报
回复
个人的观点是希望不要在表上做太多的想法,如果表结构设计的比较复杂,可能对库表的存储比较灵活,但会让后面的应用程序实现难度加大,如果数据量一大的话,查询的性能是个很大的挑战,谈谈本人的观点:
建立2张表:
1、user表:记录使用比较频繁的一些属性字段
2、user_profile:记录使用较少的一些属性字段

至于字段属性都加入表中,加入哪张表,看使用的频率,可以自行斟酌!
luoyefeng1022 2010-11-18
  • 打赏
  • 举报
回复
支持1楼,本人也是那么做的,还算比较方便!
加载更多回复(19)

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧