java数据库编程

上传人:我*** 文档编号:134421926 上传时间:2020-06-05 格式:PPT 页数:61 大小:226KB
返回 下载 相关 举报
java数据库编程_第1页
第1页 / 共61页
java数据库编程_第2页
第2页 / 共61页
java数据库编程_第3页
第3页 / 共61页
java数据库编程_第4页
第4页 / 共61页
java数据库编程_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《java数据库编程》由会员分享,可在线阅读,更多相关《java数据库编程(61页珍藏版)》请在金锄头文库上搜索。

1、Java数据库编程 LinboHe 数据库技术 数据库是一门研究数据管理的技术 它开始于本世纪60年代 经过多年的发展 已形成理论体系 成为计算机软件的一个重要分支 数据库是信息管理的基础 任何计算机应用都需要处理大量数据 几乎都少不了的数据库的需求 随着网络的应用 远程异地的网络数据库使用也变得越来越重要 为什么要使用数据库 尽管文件系统可以解决不少问题 有些问题是文件系统所无法解决的 如果给文件系统加上这些特性 那么文件系统也就成为了一个数据库 数据的冗余与数据不一致 重复数据多 而且对于分布式 有可能出现数据无法同步的问题 数据访问困难 数据孤立 因为数据存储没有采取同样的格式 使得使用

2、统一的接口访问数据变得不可能 完整性问题 数据的正确性和相容性 原子性问题 就是事务处理 如何保证一个操作的完整性 并发访问 这也是事务处理的一部分 数据库需要应对同时异地对同一个数据操作的可能 安全性问题 主要是数据库访问权限问题 关系型数据库的基本概念 数据库 datebase 按特定方式存储在存储媒体中可共享的相关数据的集合 可以理解为数据的仓库 其组织方式可支持对数据的有效存取 现在的数据库往往由多个表 table 和表之间的关联关系组成的数据的集合 表是一个由若干行 若干列组成的二维的关系结构 其存在形式是一个计算机文件 如 ABC DBF 客户 MDB Total DBC 我们称之

3、为数据库文件或库文件 实体用表来表示 实体之间的关系也用表来表示 表的列称为字段 数据库的概念分层 物理层 定义数据的存储格式 能够涉及者一层的人是数据库软件开发者 逻辑层 定义数据以及数据之间的关系 能够涉及这一层的人是数据库的设计者 视图层 定义最终展现在客户面前的数据的格式 涉及这一层的是数据库客户端的开发者 以及最终的用户 这三层从上到下层层透明 用户不关心数据库结构 数据库设计开发者不关心存储结构 数据模型 什么是数据模型 数据模型是客观事物及其联系的数据描述 数据模型应具有数据的描述和数据联系两方面功能 数据的描述就是指出 模型中包含那些记录类型 并对记录类型进行命名 指明各个记录

4、类型由那些数据构成 并对数据项进行命名 每个数据项均需指明其数据类型和取值范围 数据间联系的描述就是指明 各个不同记录间所存在的联系和联系方式 实体模型 什么是实体模型呢 实体联系模型又称信息模型 是客观事物及其自然联系在人脑中所形成的概念 实体模型和数据模型的关系是什么 数据模型本质上是 信息模型 的数据化表示 从实体模型到数据模型要经历三个领域的演变过程 现实世界 信息世界 数据世界 实体与属性 这是信息世界中广泛使用的两个术语实体 现实世界任何可相互区别的事物 不论是实际存在的东西 还是概念性的东西 或是事物与事物之间的联系 一律统称为实体 属性 实体所具有的性质 统称为属性 实体是靠属

5、性来描述的 实体集同一类型的实体集合称为实体集 域实体中的每个属性 都有一个取值范围 这叫作属性的 域 域可以是整数 实数 字符串等键 key 又称为关键字 它是指在实体属性中 可用于区别实体集中不同个体的那个属性或几个属性的组合 实体间的联系方式 实体之间的联系实际上反映了实体之间的语义关系 联系也是实体 因此它也可以有属性 实体间联系情况比较复杂 就其联系方式来说 我们可把它分为以下三种 1 一对一联系 简记为1 1 2 一对多联系 简记为1 n 3 多对多联系 简记为m n 一对一联系 若两个同型实体集中 一方的一个实体唯一与另一方的一个实体相对应 则称为1 1联系 如下图所示的婚姻关系

6、 一对多联系 若两个不同型的实体集中 一方一个实体对应另一方多个实体 反之另一方一个实体最多只与本方一个实体相对应 称1 n联系 如下图所示 多对多关系 若两不同型实体集中 任何方一个实体都与对方一个或多个实体相对应 称m n联系 如下图学生与课程的关系 多对多模式 需要在A表和B表之间有一个关联表 这个关联表也是 多对多模式 的核心所在 根据关联表是否有独立的业务处理需求 可将其划分为两种细分情况 具备独立的业务处理需求 是一个业务实体对象 因此它具备一些特有的属性 本身不具备独立的业务处理需求 所以也就没有什么特殊的属性 E R图的画法 E R图中包括 实体 属性和联系三种基本图素 习惯上

7、实体用 方框 表示 实体的属性用 椭圆框 表示 联系用 菱形框 表示 E R的设计原则 针对每一用户作出该用户信息的局部E R图 确定该用户视图的实体 属性和联系 能作为属性的就不要作为实体 这样有利于简化E R图 综合局部E R图 产生出总体E R图 在综合的过程中 同名实体只能出现一次 还要去掉不必要的联系 以便消除冗余 最后说明一点 一个系统的E R图不是唯一的 强调不同的侧面作出的E R图可能有很大的不同 例 设某企业信息系统有下列用户 人事科处理职工档案 供应科处理采购业务 总务科处理仓库业务 生产科处理产品业务 试根据上述要求设计出能反映所有用户信息视图的总体E R图 人事科视图

8、供应科视图 生产科视图 总务科视图 总体E R图 综合后的E R图中去掉了一些联系 又增添了一些新联系 这是允许的 导出关系模型 E R图仅是现实世界的纯粹反映 与数据库具体实现毫无关系 但它是构造数据模型的依据 下面给出从E R图出发导出关系模型的原则 原则一 对于E R图中每个实体 都应转换为一个关系 该关系应包括对应实体的全部属性 并应根据关系所表达的语义确定哪个属性作为 主键 键在关系模型中是实现联系的主要手段原则二 对于E R图中的联系 情况比较复杂 要根据实体联系方式的不同 采取不同的手段加以实现 数据库语言 数据库语言通常由两个部分组成 1 DDL 数据定义语言 2 DML 数据

9、操纵语言 最常用的数据库语言就是SQL 数据库设计要点 主键与外键一般而言 一个实体不能既无主键又无外键 主键与外键的设计 在全局数据库的设计中 占有重要地位 主键是实体的高度抽象 主键与外键的配对 表示实体之间的连接 键可以是一无物理意义的数字串 由程序自动加1来实现 也可以是有物理意义的字段名或字段名的组合 不过前者比后者好 当PK是字段名的组合时 建议字段的个数不要太多 多了不但索引占用空间大 而且速度也慢 通俗地理解三个范式第一范式 1NF是对属性的原子性约束 要求属性具有原子性 不可再分解 第二范式 2NF是对记录的惟一性约束 要求记录有惟一标识 即实体的惟一性 第三范式 3NF是对

10、字段冗余性的约束 即任何字段不能由其他字段派生出来 它要求字段没有冗余 没有冗余的数据库设计可以做到 但是 没有冗余的数据库未必是最好的数据库 有时为了提高运行效率 就必须降低范式标准 适当保留冗余数据 三少原则一个数据库中表的个数越少越好 只有表的个数少 才能说明系统的E R图少而精 去掉了重复的多余的实体 形成了对客观世界的高度抽象 一个表中组合主键的字段个数越少越好 因为主键的作用 一是建主键索引 二是做为子表的外键 所以组合主键的字段个数少了 不仅节省了运行时间 而且节省了索引存储空间 一个表中的字段个数越少越好 只有字段的个数少了 才能说明在系统中不存在数据重复 且很少有数据冗余 J

11、avaJDBC JDBC JavaDataBaseConnectivity java数据库连接 是一种用于执行SQL语句的JavaAPI 可以为多种关系数据库提供统一访问 它由一组用Java语言编写的类和接口组成 JDBC提供了一种基准 据此可以构建更高级的工具和接口 使数据库开发人员能够编写数据库应用程序 同时 JDBC也是个商标名 ThetypeofJDBC Type1 JDBC ODBCbridge要求客户端必须安装ODBC驱动执行效率比较低 对于那些大数据量存取的应用是不适合的适用于快速的原型系统 没有提供JDBC驱动的数据库如Access DesktopDatabase Type2

12、JavatonativeAPI这种驱动比起JDBC ODBC桥执行效率略有提高 但是 它仍然需要在客户端加载数据库厂商提供的代码库 这样就不适合基于internet的应用 Type3 JavatoNet适合那种需要同时连接多个不同种类的数据库并且对并发连接要求高的应用 Type4 JavatoNativeDatabase最高的性能 通过自己的本地协议直接与数据库引擎通信 JDBC与数据库驱动程序 JDBC为多种关系数据库提供了统一访问方式 作为特定厂商数据库访问API的一种高级抽象 它主要包含一些通用的接口类 真正的数据库访问操作实现是由各自数据库厂商提供的 通常把厂商提供的特定于数据库的访问

13、API称为数据库JDBC驱动程序 JDBC通过提供一个抽象的数据库接口 使得程序开发人员在编程时可以不用绑定在特定数据库厂商的API上 大大增加了应用程序的可移植性 在实际运行过程中程序代码通过JDBC访问数据库时 仍旧需要调用特定于数据库的访问API JDBC访问数据库层次结构 为了让JDBC与平台无关 JDBC提供所谓的 驱动程序管理器 drivermanager 它会动态维护所有 数据库查询 所需要的驱动程序对象使用Class forName 进行装载 向驱动管理器注册 创建数据库连接 分为以下几步 首先注册数据库驱动程序然后根据具体的JDBCURL地址 调用DriverManager对

14、象的getConnection 来获取一个代表数据库连接的java sql connectuion对象 JDBCURL的格式如下 jdbc 子协议 数据库定位器 MySQL数据库 jdbc mysql 机器名 数据库名Oracle数据库 jdbc oracle thin 机器名 端口名 数据库名jdbc sqlserver localhost 1433 databaseName Graduate 给定具体的JDBCURL 获取数据库连接的方法是在DriverManager对象上调用getConnection 这种方法有两种形式 DriverManager getConnection url D

15、riverManager getConnection url user password 其中第二种方式需要输入用户名和密码信息进行身份认证 连接数据库示例 JDBC对数据库执行SQL java sql Statement对象代表一条发送到数据库执行的SQL语句 有三种Statement对象 Statement对象用于执行不带参数的简单SQL语句 PreparedStatement对象用于执行带或不带参数的预编译SQL语句CallableStatement对象用于执行对数据库存储过程的调用 Statement Statement对象提供了三种执行SQL语句的方法 executeQuery 用于

16、产生单个结果集的sql 如select语句 executeUpdate 用于执行insert delete update createtable droptable等 execute 用于执行返回多个结果集 多个更新计数或二者组合的语句 多数程序员不会需要该高级功能 PreparedStatement PreparedStatement实例包含已编译的SQL语句 这也是将其命名冠以 Prepared 的原因 包含于PreparedStatement对象中的SQL语句可具有一个或多个IN参数 IN参数的值在SQL语句创建时未被指定 相反的 该语句为每个IN参数保留一个问号 作为占位符 每个问号的值必须在该语句执行之前通过适当的setXXX 方法来提供 由于PreparedStatement对象已预编译过 所以其执行速度要快于Statement对象 因此多次执行的SQL语句经常创建为PreparedStatement对象 以提高效率 PreparedStatement接口也有自己的executeQuery executeUpdate和execute方法 Statement对象本身不包含SQ

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号