什么是数据库( 二 )


Key Lastname SalaryType SalaryType Min Max
1 Adams 2 1 30000 45000
2 Johnson 1 2 45000 60000
3 Smyth 3 3 60000 75000
4 Tully 1
5 Wolff 2
SalaryType 列中的数据引用第二个表 。我们可以想象出许多种这样的表,如用于存储居住城市和每个城市的税值、健康计划扣除金额等的表 。每个表都有一个主键列和若干数据列 。在数据库中建立表格既是一门艺术,也是一门科学 。这些表的结构由它们的范式指出 。我们通常说表属于1NF、2NF 或 3NF 。
第一范式:表中的每个表元应该只有一个值 。(1NF)
第二范式:满足 1NF,并且每一个非主键列完全依赖于主键列 。这表示主键和该行中的剩余表元之间是 1 对 1 的关系 。(2NF)
第三范式:满足 2NF,并且所有非主键列是互相独立的 。任何一个数据列中包含的值都不能从其他列的数据计算得到 。(3NF)
现在,几乎所有的数据库都是基于“第三范式 (3NF)”创建的 。这意味着通常都有相当多的表,每个表中的信息列都相对较少 。
从数据库中获取数据
假设我们希望生成一个包含员工及其工资范围的表,在我们设计的一个练习中将使用这个表 。这个表格不是直接存在在数据库中,但可以通过向数据库发出一个查询来构建它 。我们希望得到如下所示的一个表:
Name Min Max
Tully $30,000.00 $45,000.00
Johnson $30,000.00 $45,000.00
Wolff $45,000.00 $60,000.00
Adams $45,000.00 $60,000.00
Smyth $60,000.00 $75,000.00
我们发现,获得这些表的查询形式如下所示
SELECT DISTINCTROW Employees.Name, SalaryRanges.Min,
SalaryRanges.Max FROM Employees INNER JOIN SalaryRanges ON Employees.SalaryKey = SalaryRanges.SalaryKey
ORDER BY SalaryRanges.Min;
这种语言称为结构化查询语言,即 SQL,而且它是几乎目前所有数据库都可以使用的一种语言 。SQL-92 标准被认为是一种基础标准,而且已更新多次 。
数据库的种类
PC 上的数据库,如 dBase、Borland Paradox、Microsoft Access 和 FoxBase 。
数据库服务器:IBM DB/2、Microsoft SQL Server、 Oracle、Sybase、SQLBase 和 XDB 。
所有这些数据库产品都支持多种相对类似的 SQL 方言,因此,所有数据库最初看起来好象可以互换 。每种数据库都有不同的性能特征,而且每一种都有不同的用户界面和编程接口 。
ODBC
如果我们能够以某种方式编写不依赖于特定厂商的数据库的代码,并且能够不改变自己的调用程序即可从这些数据库中得到相同的结果,那将是一件很好的事 。如果我们可以仅为所有这些数据库编写一些封装,使它们具有相似的编程接口,这种对数据库编程独立于供应商的特性将很容易实现 。
什么是 JDBC?
JDBC 是对 ODBC API 进行的一种面向对象的封装和重新设计,它易于学习和使用,并且它真正能够使您编写不依赖厂商的代码,用以查询和操纵数据库 。尽管它与所有 Java API 一样,都是面向对象的,但它并不是很高级别的对象集.
除 Microsoft 之外,多数厂商都采用了 JDBC,并为其数据库提供了 JDBC 驱动程序;这使您可轻松地真正编写几乎完全不依赖数据库的代码 。另外,JavaSoft 和 Intersolv 已开发了一种称为 JDBC-ODBC Bridge 的产品,可使您连接还没有直接的 JDBC 驱动程序的数据库 。支持 JDBC 的所有数据库必须至少可以支持 SQL-92 标准 。这在很大程度上实现了跨数据库和平台的可移植性 。
安装和使用 JDBC
JDBC 的类都被归到 java.sql 包中,在安装 Java JDK 1.4时会自动安装 。然而,如果您想使用 JDBC-ODBC 桥 。JDBC-ODBC 驱动程序可从 Sun 的 Java 网站 (http://java.sun.com/) 轻松地找到并下载 。在您扩充并安装了这个驱动程序后,必须执行下列步骤:
将 \jdbc-odbc\classes; 路径添加到您的 PATH 环境变量中 。
将 \jdbc-odbc\classes; 路径添加到您的 CLASSPATH 环境变量中 。
JDBC 驱动程序的类型
Java 程序连接数据库的方法实际上有四种:
1. JDBC-ODBC 桥和 ODBC 驱动程序 -- 在这种方式下,这是一个本地解决方案,因为 ODBC 驱动程序和桥代码必须出现在用户的每台机器中 。从根本上说这是一个临时解决方案 。
2. 本机代码和 Java 驱动程序 -- 它用另一个本地解决方案取代 ODBC 和 JDBC-ODBC 桥 。
3. JDBC 网络的纯 Java 驱动程序 -- 由 Java 驱动程序翻译的 JDBC 形成传送给服务器的独立协议 。然后,服务器可连接任何数量的数据库 。这种方法使您可能从客户机 Applet 中调用服务器,并将结果返回到您的 Applet 。在这种情况下,中间件软件提供商可提供服务器 。
4. 本机协议 Java 驱动程序 -- Java 驱动程序直接转换为该数据库的协议并进行调用 。这种方法也可以通过网络使用,而且可以在 Web 浏览器的 Applet 中显示结果 。在这种情况下,每个数据库厂商将提供驱动程序 。

推荐阅读