可以说新一代数据库技术的研究,新一代数据库系统的发展呈现了百花齐放的局面。其特点是:
1.面向对象的方法和技术对数据库发展的影响最为深远
八十年代出现的面向对象的方法和技术对计算机各个领域,包括程序设计语言、软件工程、信息系统设计,以及计算机硬件设计等都产生了深远的影响,也给面临新挑战的数据库技术带来了机会和希望。 数据库研究人员借鉴和吸收了面向对象的方法和技术,提出了面向对象数据模型(简称对象模型)。 该模型克服了传统数据模型的局限性,为新一代数据库系统的探索带来了希望,促进了数据库技术在一个新的技术基础上继续发展。
2.数据库技术与多学科技术的有机结合
数据库技术与多学科技术的有机结合是当前数据库技术发展的重要特征。
计算机领域中其它新兴技术的发展对数据库技术产生了重大影响。 传统的数据库技术和其它计算机技术的互相结合,建立和实现了一系列新型数据库系统,如分布式数据库系统、并行数据库系统、演绎数据库系统、知识库系统、多媒体数据库系统等等。它们共同构成了数据库系统大家族。
3. 面向应用领域的数据库技术的研究
以关系数据库为例,SQL语言是一种非过程化的面向集合的语言,它虽然用起来非常简单,但由于是解释实现,效率不如人意。因此许多应用仍然是由高级程序设计语言(如C)来实现的,但是高级程序设计语言是过程化的,而且是面向单个数据的,这使得SQL与它之间存在着不匹配,我们把它叫做“阻抗失配”。不论你是用嵌入式SQL,还是CLI,都需要化很多工夫去完成两种语言之间的相互转化。 但是关系数据库在数据库系统方面发展地非常完善,有强大的管理功能和可 *** 纵性。另外,关系模型具有坚实的数学基础。面向对象数据库的产生主要是为了解决“阻抗失配”,它强调高级程序设计语言与数据库的无缝连接。什么叫无缝连接,假设你 不用数据库,用C语言编了一个程序,你可以不需要(或基本不需要)任何改动就将它作用于数据库,即你可以用C语言透明访问数据库,就好象数据库根本不存在一样,所以也有人把面向对象数据库理解为语言的持久化。怎么样,听起来挺玄的吧,可是我们自己开发的数据库系统——OSCAR早就做到了这一点。 由于实现了无缝连接,使得面向对象数据库能够支持非常复杂的数据模型,从而特别适用于工程设计领域。打个比方,想象CAD中的一个复杂部件,它可能由成千上万个不同的零件组成,要是用关系模型中的表来表达,得用多少张表啊?而描述这种复杂的部件,正好是高级程序设计语言的强项。
此外,面向对象数据库还吸收了面向对象程序设计语言的思想,如支持类、方法、继承等概念。 面向对象数据库很好地解决了阻抗失配的问题,但它也有缺点。它的缺点正好是关系数据库的强项,由于模型较为复杂(而且缺乏数学基础),使得很多系统管理功能难以实现(如权限管理),也不具备SQL处理集合数据的强大能力。
另一方面,随着多媒体数据的大量出现和应用的日益复杂,关系数据库也在不断吸收面向对象数据库的优点,出现了现在所谓的对象关系型数据库(象ORACLE8i、DB2-5以上都是这种系统)。其主要改进包括支持自定义类型(UDT),方法,继承(目前仅DB2-6支持),和引用(使得对象间可以直接引用,想想原来的关系数据库需要靠连接来实现引用,性能真是惨不忍睹)。 总之,数据库系统发展的趋势是,面向对象数据库和关系数据库将不断融合。而对象关系数据库由于继承了上述两者的优点,已经成为目前数据库发展的主流。
PHP使用面向对象的编程方式来编写数据库 *** 作类步骤1:创建一个PHP的页面“config.php”定义数据库相关的参数
<?php // config.php
define(?DB_USER?, "username")
define(?DB_PASSWORD?, "password")
define(?DB_DATABASE?, "database name")
define(?DB_SERVER?, "ip address of database server")
?>
第2步:创建一个PHP的类,用于连接数据库,命名为“db_connect.php”
<?php // db_connnect.php
class DB_Connect {
private $con
// constructor
function __construct() {
// connecting to database
$this->con = $this->connect()
}
//Function to connect with database
private function connect() {
// import database connection variables
require_once __DIR__.?/config.php?
try {
$conn = new PDO(?mysql:host=?.DB_SERVER .?
dbname=?.DB_DATABASE, DB_USER, DB_PASSWORD)
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)
} catch(PDOException $e) {
echo ?ERROR: ? . $e->getMessage()
}
return $conn
}
public function getDbConnection(){
return $this->con
}
}
?>
第3步:创建一个类,它包含了所有的功能,为您实现SQL查询,命名为“db_functions.php”
调用里面的函数进行SQL查询、以促进可重用性和可维护性
<?php// db_functions.php
class DB_Functions {
private $con
// constructor
function __construct() {
require_once __DIR__.?/db_connect.php?
// connecting to database
$db = new DB_Connect()
$this->con = $db->getDbConnection()
}
public function selectUser($id) {
try {
$stmt = $this->con->prepare(?SQL语句?)
$params = array(?:id? =>$id)
$stmt->execute($params)
return $stmt
} catch(PDOException $e) {
echo ?ERROR: ? . $e->getMessage()
}
}
public function otherSQLfunction($parameter) {
// other sql code
}
}
第4步:最后,在你其他的PHP文件里面只需要简单地调用“db_functions.php”的方法
<?php
require_once __DIR__.?/db_functions.php?
$db = new DB_Functions()
$result = $db->selectUser($id)
// other code
?>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)