http://www.2cto.com/database/201310/248690.html

mysql数据库对象关系映射

1.对“对象关系映射”的理解

a.对象:可以理解为java中的类

b.关系:可以理解为数据库的表

c.映射:这是因为java中的数据的类型与数据库的数据类型是有些不同的,如何将java中的类型的数据用数据库中的数据类型来存储起来,这就映射。

同时,还有当java中的两个对象之间是有关系的,那么在存储在数据库中时,也需要用一种方式来体现出这种存在的关系,而不能是两个

不相关的两张表,这也需要映射出来这种关系。

2.表与表之间的关系类型可以分为以下四种:

多对一,一对多,多对多,一对一

3.分别对这四处种关系进行示例说明

a.多对一(一对多和多对一,其实是看的角度不同,实际上可以看成同一种)员工与部门之间的关系

有以下两个java对象:

对象类:

[java]
Department
int id;
String name;
Set employees=new HashSet();  Employee
int id;
String name;
Department dept;  
员工与部门,这两者是典的多对一的关系,多个员工可以属于同一个部门,一个部门中可以有多个员工。

注意:在实际开发时,如果要设计一个员工管理系统,那么在进行对象实体类的设计时,就是按照上面

设计方式来设计员工类和部门类。在员工 类中有一个Department dept属性,而没有直接用int dept_no,

因为样更加符面象对象的设计思想。

对应的数据库的表为:

[sql]
create department(
id int primary key,
name varchar(20)
);
[sql]
create employee(
id int primary key,
name varchar(20),
dept_id int,
constraint dept_id_FK foreign key(dept_id) references department(id)
);  
注:两个表之间的关系,多对一,用外键来体现。一般外键的应该放在多的一方,在这里也就是放在employee员工表中。

b.多对多的关系 学生与老师之间的关系

java类对象:

[java]
Teacher
int id;
String name;
Set students=new HashSet();  Student
int id;
String name;
Set teachers=new HashSet();  
对应的数据库中的表:

[sql]
create table teacher(
id int primary key,
name varchar(20)
);
create table student(
id int primary key,
name varchar(20)
);  
注:对于多对多的关系,应该创建第三张表来保存两张表的映射关系

[sql]
create table student_teacher(
student_id int,
teacher_id int,
constraint student_teacher_PK primary key(student_id,teacher_id),
constraint student_id_FK foreign key(student_id) references student(id),
constraint teacher_id_FK foreign key(teacher_id) references teacher(id)
);  
第三张中的主键是以前两张表的主键作为复合主键,并分别以两张表的主键作为外键。

c.一对一的关系 人与身份证之间的关系

java类对象:

[java]
Person
int id;
String name;
IdCard ic;  IdCard
int id;
String address;  
对应的数据库表为:

[sql]
create table person(
id int primary key,
name varchar(20)
);  create table idcard(
id int primary key,
address varchar(40),
constraint id_FK foreign key(id) references person(id)
);  
注:对于一对一关系的两张表,分主表与从表,从表的存在必须依赖于主

表,主表可以不依赖于从表。从表的设计上其主键字段同时也是外键字段。

备注:有时在设计表时,会特意把两张表合在一张表中,虽然会造成

数据冗余,但是却可以不因为联表查询而造成查询性能有所降低。这是用

空间来换时间的做法。

mysql数据库对象关系映射相关推荐

  1. mysql映射关系_mysql数据库对象关系映射_MySQL

    bitsCN.com mysql数据库对象关系映射 1.对"对象关系映射"的理解 a.对象:可以理解为java中的类 b.关系:可以理解为数据库的表 c.映射:这是因为java中的 ...

  2. 鸿蒙对象关系映射数据库

    对象关系映射数据库 对象关系映射数据库简介 对象关系映射数据库存储开发步骤 1.添加配置 2.数据库的创建 3.数据表(实体对象类)的创建 4.使用对象数据操作接口OrmContext创建数据库 5. ...

  3. Orm-JDBC(对象关系映射的数据库查询)

    Orm-JDBC(对象关系映射的数据库查询) 大致说明 实现将数据库查询结果用对象封装,连接池采用的druid连接池 示例: public static void main(String[] args ...

  4. Hibernate之对象关系映射文件

    一.对象关系映射文件 POJO类和关系数据库之间的映射可以用一个XML文档来定义 在运行时Hibernate将根据这个映射文件来生成各种SQL语句 映射文件的拓展名为 .hbm.xml 1.映射文件说 ...

  5. C++ 对象关系映射(ORM)介绍

    用过Java的都知道SSH框架,特别对于数据库开发,Java领域有无数的ORM框架,供数据持久层调用,如Hibernate,iBatis(现在改名叫MyBatis),TopLink,JDO,JPA-- ...

  6. Hibernate - 对象关系映射文件(*.hbm.xml)详解

    对象关系映射文件,即POJO 类和数据库的映射文件*.hbm.xml(映射文件的扩展名为 .hbm.xml). POJO 类和关系数据库之间的映射可以用一个XML文档来定义. 通过 POJO 类的数据 ...

  7. Java对象关系映射(ORM)

    一.什么是对象关系映射 简单来说,对象关系映射即是将Java中的对象一一对应映射到MySQL(本文基于MySQL)的Table(表)中,通过对对象各个属性赋值来更新数据库. 官方的说,对象关系映射(O ...

  8. 对象关系映射(ORM)介绍理解

    问题背景 假设,让你设计一个框架,把jdbc封装一下?? JDBC操作步骤: 获取数据库连接Connection 创建操作命令对象Statement 执行sql语句(sql中,如果有占位符,在执行sq ...

  9. orm 对象关系映射

    引用:http://baike.baidu.com/view/197951.htm 对象关系映射(ORM)提供了概念性的.易于理解的模型化数据的方法.ORM方法论基于三个核心原则: 简单:以最基本的形 ...

最新文章

  1. 转:浅谈Linux的内存管理机制
  2. SeciLog 1.3.1 发布,增加了全屏配置,自定义预警等新功能
  3. 交通违章行为,和记分、处罚条款——不仅要扣分,还要罚钱哪,没有不罚钱的扣分!!!...
  4. android 驻留广播,Android实现Service永久驻留
  5. BZOJ 1084: [SCOI2005]最大子矩阵【DP】
  6. CodeForces - 801C Voltage Keepsake(二分)
  7. 1967. 作为子字符串出现在单词中的字符串数目
  8. 中国历史上最牛气的十大豪言壮语
  9. phython拟合曲面方程_python数据关系型图表散点图系列曲面拟合图
  10. CSS兼容性解决方法!important的IE7,Firefox问题
  11. 苹果Mac仿windows10任务栏工具:​​​​​​​​uBar
  12. UIApplication, UIApplicationDelegate,UIApplicationMain的分析
  13. Xmind8 乱码问题解决(查看文件字体并下载安装相应字体)
  14. 思维模型 后天天赋(盖洛普天赋分析)
  15. kdc服务器密码修改,KDC服务安装及配置
  16. 去掉SecureCRT菜单栏上的打印按钮
  17. shell脚本编程之awk入门
  18. facebook创始人简介-马克·扎克伯格
  19. idea使用mybatis写增删改查
  20. mysql数据库查询试题_mysql数据库查询练习45题

热门文章

  1. 11月数据库排行:PostgreSQL起飞、三巨头分数持续低迷
  2. 我去!每天都用的这个操作居然算“黑客行为”?
  3. 皮一皮:这是人干的事?
  4. Chord 弦 - 一个现代音乐播放器
  5. 蚂蚁金服面试3+2次,最终有惊无险通过!
  6. 工作中都不用源码,面试的时候为什么要问呢?
  7. opencv c++ 贴图
  8. onnx.onnx_cpp2py_export.checker.ValidationError
  9. linux 快速删除大量/大文件
  10. c++ 遍历多级目录