日期:2014-05-20  浏览次数:20788 次

使用Hibernate,建大表还是小表?
个人注册:
  1.基本信息:用户名 密码
  2.详细信息:真实姓名 性别 出生年月 籍贯 民族 政治面貌 联系电话 电子邮箱 掌握技能 个人简介
  3.学习经历:入学时间 毕业时间 学校名称 专业 学历 学位
  4.工作经历:开始时间 结束时间 公司名称 职务
现在有如上的数据源,想使用Hibernate操作数据库,是建一张大表将所有数据放进去,之后建4张视图;还是建4张小表?
刚刚入行的新手,大家多多指教,谢谢!


------解决方案--------------------
建立大表小表不是乱来的,要首先考虑业务情况,根据业务进行ER图设计,然后考虑范式问题,之后再考虑性能问题,适当的打破范式。

如果是简单应用,可以这么做,1,2放在一个主表A里面 ,3 放一个表B,4 放一个表C,A->B 1:N A->C 1:N 都是一对多的关系。这么做也很方便,
------解决方案--------------------
建两个表:
     1、2  表 A
     3、4  表 B

A对B:一对多
------解决方案--------------------
个人注册: 
1.基本信息:用户名 密码 
2.详细信息:真实姓名 性别 出生年月 籍贯 民族 政治面貌 联系电话 电子邮箱 掌握技能 个人简介 
3.学习经历:入学时间 毕业时间 学校名称 专业 学历 学位 
4.工作经历:开始时间 结束时间 公司名称 职务 

看你系统的访问量和数据量。

如果考虑效率的问题,我是指:
比如,用户多,登陆频繁, 那一般来说 都会有一些东西要放在session 里面
举个例子,可能要在用户登陆后把 用户名 密码 真实姓名 性别 放在session 里面
那就把这几个放在一个表里面,
然后把 第2项中 的剩余的放在一张表里面
3 和 4 不变

那么 这时候的结构就是:

1.基本信息:用户名 密码 真实姓名 性别 
2.详细信息:出生年月 籍贯 民族 政治面貌 联系电话 电子邮箱 掌握技能 个人简介 
3.学习经历:入学时间 毕业时间 学校名称 专业 学历 学位 
4.工作经历:开始时间 结束时间 公司名称 职务 

1 ---2 OneToOne
1 ---3 one2many
1 ---4 one2many

这样,用户频繁操作的只有表1 ——查询起来会很快的表格; 对于 2 , 3,4的数据,只在用户需要获取的时候再获取