是这么设计的:1.对于一个表对象我们会需要用某个字段表示其属性或状态(如性别,业务类别等),一般我会使用一个int字段来表示(0,1,2...),但是我看到的设计是使用一个定长的char('0','1','2'...).2.对于多个状态组合表示一类大的数据信息(最典型的是公民的身份证号,是由地区号,出生日期,及序列多个数据组成),我看到比较多的是用多个字段表示多个子数据(如地区号,出生日期,序列各一个字段,身份证号由这几个数据拼接而成),但是这里会就用一个身份证号表示地区,出生日期,及序列,换句话说没有其他字段,只有身份证字段.我是看到我一个同事这么设计的,他是从其他部门调来的数据仓库专家,但是在我们这套Java系统中我完全不能理解这么设计的优点在哪里(至少从他的解释中不能明白).在我看来,至少这么设计有两个问题:1.int 比 char 轻而快,而且对应状态更灵活,因为没有位数限制,而且在业务层处理起来也更高效率简便2.其实从最基础的知识就可以知道,是先有地区,出生日期,及序列,再有身份证的,这种数据组合的做法个人感觉很不合逻辑,更重要的是对于数据映射也很不方便,想获得其中某个子数据必须得拆取...感觉我认为的问题都是业务层对数据库获得值以后的问题,而这都是他不能考虑的(我和他沟通过,感觉他对Java的理解只停留在用连接数据库获得结果集表现在界面上...)有可能是他对我们系统中数据库的定位不清,也有可能是这种设计我还没有领会这种优点,请高手指教