首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

1.1.3  数据表、记录、字段、查询、SQL、索引和键

前面已经提到过数据表,即用来实际存放有关数据的框架结构。这种数据表里的每一行被称为一条数据记录data record),简称“记录”,每条记录的结构和格式是由人们在定义该数据表时决定的。例如,在某个地址簿数据表里,每条记录可能包含着姓氏、名字、街道等多个字段field)。每个字段对自己所能存储的信息类型又有着一定的要求(例如,它必须是一个有着某种特定格式的数字或者是一个字符个数不得超过某个预定义最大值的字符串)。

对一个数据库的描述被称为一个数据库模型database model),它是由这个数据库里的全体数据表以及它们所有的字段、关系和索引构成的。数据库模型不仅要定义所涉及的各种数据结构的整体框架,还必须同时给出将存放于此的数据存储格式。

存储在数据表里的数据通常没有特定的顺序(更准确地说,数据表里的数据通常是按照它们被录入或修改时的先来后到顺序排列的)。不过,要想有效率地使用数据库里的数据,根据一项或多项要求为这些杂乱无章的数据创建一份井然有序的清单十分必要。对于一份这样的清单,只包含数据表中全体数据的一个子集往往会非常有用。例如,对玩具厂商而言,一份在过去12个月内购买过橡皮鸭子玩具的顾客名单显然要比一份全体顾客名单更有实际意义,若是那份名单还已经按照邮政编码的顺序进行过排序,查阅起来就更方便了。

要想创建一份这样的清单,就必须构造并执行相应的查询query)。这种查询的结果其实也是一个数据表,只不过这个数据表将只存在于计算机的内存(RAM)里而不是硬盘上。

查询是人们用各种SQL指令构造出来的,SQL指令负责具体完成筛选和提取结果数据的工作。SQL是英文Structured Query Language(结构化查询语言)的缩写,这种语言已发展演变为人们在构造数据库查询命令时的一个标准。不过,因为开发数据库系统的每一家软件厂商都或多或少地在自己的产品里扩充了一些“特色”功能,所以人们当初制定这一标准的初衷——让出自不同厂商的数据库系统能够相互兼容——并没有实现。

随着数据量的增加,数据表会变得越来越大,数据字段——它们通常是按照先来后到的顺序被存入数据表的——有没有适当的索引对查询响应速度的影响也越来越大。索引index)是一种辅助性的数据表,它们只包含一种信息:原始数据记录的排序情况。索引还经常被人们称为键字key)。

索引有助于加快对数据的访问速度,但同时也存在着一些不尽如人意的弊病。首先,索引会增加数据库文件在硬盘上的空间占用量。其次,索引必须随原始数据同步更新才有实际意义,而这么做当然需要花费时间。换句话说,在读取数据时,索引可以节约时间;但在输入和修改数据时,索引反而会“浪费”时间。从全局观点看,索引是提高了效率还是降低了效率将取决于用户选用了哪一项数据作为索引。

有一种特殊的索引叫做主索引primary index)或主键primary key),它们与其他索引的区别在于主索引必须保证每条记录的索引值必须是独一无二的。为了做到这一点,人们通常会简单地使用一个递增的索引编号(ID编号)作为主索引。主索引在关系数据库里扮演着一个极其重要的角色,它们可以显著加快对数据的访问速度。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论