如何设计数据库表?
1.
发现领域中的概念,理清领域中的概念,将其映射成表‘
2.
尽量遵循数据库设计范式:
1.
第一范式:有主键,具有原子性,列不可分割;
2.
第二范式:完全依赖,没有部分依赖;
3.
第三范式:没有传递依赖;
3.
主键尽量采用单一主键,避免符合主键,尽量使用没有业务予以的字段作为主键(如, oracle 的 Sequence 来维护一个主键),主键一般建
议使用数值型,会提高检索的效率;
4.
冗余的字段,应该根据需要的具体情况是否加入;
5.
最好加入外键约束
使用Hibernate作为ORM,设计数据库的时候,一般说的是不要选取自然主键(有业务含义的主键)
按常理来论,关联都应该是双向的,确实如此,hibernate 建议用双向关联,在建立表的时候设置表间的联系(通过forigen key关联),在数据设计中表之间多对多的关系,需要新建一个表,存储双方的主键,在hibernate方向工程中就可以自动建立双向关联了。双向关联中联系多对多的关系。
记住在hibernate 实体中存放的是表实体,而不是关系实体。
6.
如果做通用性产品,最好不是使用数据库特性的功能;
7.
如果数据量非常庞大,并且频繁使用相关字段的查询,最好建立索引;
示例
表 product和brand
一个brand对应多个product
在product中游brand的外键 brand_id
hibernate逆向工程后生成hbx
<class name="com.Product" table="product" catalog="shopxx">
<id name="id" type="java.lang.String">
<column name="id" length="32" />
<generator class="increment" />
</id>
<many-to-one name="brand" class="com.Brand" fetch="select">
<column name="brand_id" length="32" />
</many-to-one>
<property name="createDate" type="java.util.Date">
<column name="createDate" length="19" />
</property>
brand 映射
<class name="com.Brand" table="brand" catalog="shopxx">
<id name="id" type="java.lang.String">
<column name="id" length="32" />
<generator class="increment" />
</id>
<property name="createDate" type="java.util.Date">
<column name="createDate" length="19" />
</property>
<property name="modifyDate" type="java.util.Date">
<column name="modifyDate" length="19" />
</property>
<property name="introduction" type="java.lang.String">
<column name="introduction" length="65535" />
</property>
<set name="products" inverse="true">
<key>
<column name="brand_id" length="32" />
</key>
<one-to-many class="com.Product" />
</set>
分享到:
相关推荐
hibernate数据库访问接口设计
课程设计来的,原创品,非网络转载,好东西!
struts2 hibernate MySQL数据库有脚本,自己改改可变成s2sh的,可运行
jsp 新闻管理系统毕业设计 代码简单易懂 并且还有大量的注释
ODL数据库设计PPT,花了不少心思制作的相关内容,供中级数据库设计参考! 由于只能上传15MB的数据,所以案例中的Hibernate类库没有上传(参加入Hibernate3.2 类库,案例方可运行)代码是全的。
odl 数据库设计PPT ,花费了不少精力整理了一篇有关ODL数据库建模的PPT+案例,由于LIB太大,请大家自行加入Hibernate 3.2类库
可运行,看效果可运行,看效果可运行,看效果可运行,看效果可运行,看效果可运行,看效果可运行,看效果可运行,看效果
里面有所有的项目所需要的文件,包括实验报告 e-r图等,主要包括1) 公司简介 2) 查询广场:向用户提供查询界面。如输入房产类型(两室一厅)、阳台的方向、房产的价格范围、房产的建筑面积范围、使用面积范围、楼层...
本源码提供了一个基于Spring MVC、CXF和Hibernate的Web服务与数据库操作设计。项目包含53个文件,其中包括15个XML文件、13个Java源文件、10个属性文件、3个YAML文件、3个JSP页面、2个MF文件、1个Gitignore文件、1个...
JSP SSH辅助教学系统 是一套完善的WEB设计系统(struts2+spring+hibernate),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 二、功能介绍 系统主要有三类用户角色...
用到知识是webwork做表现层 spring的事务层,IOC AOP hibernate 数据库的映射 Model view control传说中的三层+service 数据库是sqlserver 2005 更重要的是提供所有的.jar框架包
许多人在设计网上商城时,对如何使用hibernate映射数据库而忙无头绪,这是本人经历的一个设计过程,贡献出来大家学习,借鉴。。
1.8javaEE_SSH_oracle土地档案管理系统(源码+数据库sql+lun文+...基于三层架构的思想,前台使用jsp技术,后台使用了Oracle 11g平台,主要使用Hibernate的设计模式访问数据库,采用B/S架构,实现此土地档案管理系统。
本设计为“基于Ajax的博客应用系统的设计与实现”,本博客系统的开发基于Ajax技术,采用异步通信,在不刷新整个页面的前提下局部更新页面数据,带给用户...(4) 系统数据库设计:设计数据库并实现数据表之间的联系。
无论是从设计草案还是从一个遗留数据库开始,开发人员都可以采用Hibernate。 Hibernate不仅负责从Java类到数据库表的映射(还包括从Java数据类型到SQL数据类型的映射),还提供了面向对象的数据查询检索机制,从而...
针对Hibernate 4,感谢无私的奉献者,不要积分。...还深刻阐述了数据库设计、ORM和优化等方面的基本原则、策略和最佳实践。书中处处闪烁着作者超凡的真知灼见,将大大升华读者对ORM乃至企业级应用开发的理解。
03 03Hibernate_Component : 实体细粒度的划分,数据库中的一张表在程序中划分为几个部分的实体,配置文件和增、删、改、查的使用。 04 04Hibernate_Composite : 复合主键的使用,在开发中很少用到,一般良好的设计...
基于SSH设计的网上订餐系统(struts+spring+hibernate)源码+数据库.zip
java网上书店 struts1 hibernate mysql,带数据库文件,适合当课程作业,可以当做毕业设计,适合初学者学习
书中图文并茂地介绍了数据库设计和优化技术的实践。在本书中,作者详尽介绍了具有Java持久化2.1标准的Hibernate 5(JSR 338)。所有的示例都已经被更新,以便用于新的Hibernate和Java EE规范版本。