《数据库原理与应用(第3版)》——2.1 数据和数据模型

2.1 数据和数据模型

现实世界的数据是散乱无章的,散乱的数据不利于人们对其进行有效的管理和处理,特别是海量数据。因此,必须把现实世界的数据按照一定的格式组织起来,以方便对其进行操作和使用。数据库技术也不例外,在用数据库技术管理数据时,数据被按照一定的格式组织起来,比如二维表结构或者层次结构,以使数据能够被更高效地管理和处理。本节就对数据和数据模型进行简单介绍。

2.1.1 数据与信息

在介绍数据模型之前,我们先了解数据与信息的关系。在1.2节已经介绍了数据的概念,说明数据是数据库中存储的基本对象。为了了解世界、研究世界和交流信息,人们需要描述各种事物。用自然语言来描述虽然很直接,但过于烦琐,不便于形式化,而且也不利于用计算机来表达。为此,人们常常只抽取那些感兴趣的事物特征或属性来描述事物。例如,一名学生可以用信息“(张三,99121,男,1981,计算机系,应用软件)”描述,这样的一行数据称为一条记录。单看这行数据我们很难准确知道其确切含义,但对其进行解释:张三是99121班的男学生,1981年出生,计算机系应用软件专业,其内容就是有意义的。我们将描述事物的符号记录称为数据,将从数据中获得的有意义的内容称为信息。数据有一定的格式,如姓名一般是长度不超过4个汉字的字符(假设不包括少数民族的姓名),性别是一个汉字的字符。这些格式的规定是数据的语法,而数据的含义是数据的语义。因此,数据是信息存在的一种形式,只有通过解释或处理才能成为有用的信息。
一般来说,数据库中的数据具有静态特征和动态特征两个方面。
(1)静态特征
数据的静态特征包括数据的基本结构、数据间的联系以及对数据取值范围的约束。比如1.2.1节中给出的学生管理的例子。学生基本信息包含学号、姓名、性别、出生日期、联系电话、所在系、专业、班号,这些都是学生所具有的基本性质,是学生数据的基本结构。学生选课信息包括学号、课程号和考试成绩等,这些是学生选课的基本性质。但学生选课信息中的学号与学生基本信息中的学号是有一定关联的,即学生选课信息中的“学号”所能取的值必须在学生基本信息中“学号”的取值范围之内,因为只有这样,学生选课信息中所描述的学生选课情况才是有意义的(我们不会记录不存在的学生的选课情况),这就是数据之间的联系。最后我们看数据取值范围的约束。我们知道人的性别一项的取值只能是“男”或“女”、课程的学分一般是大于0的整数值、学生的考试成绩一般在0~100分之间等,这些都是对某个列的数据取值范围进行的限制,目的是在数据库中存储正确的、有意义的数据。这就是对数据取值范围的约束。
(2)动态特征
数据的动态特征是指对数据可以进行的操作以及操作规则。对数据库数据的操作主要有查询数据和更改数据,更改数据一般又包括对数据的插入、删除和更新。
一般将对数据的静态特征和动态特征的描述称为数据模型三要素,即在描述数据时要包括数据的基本结构、数据的约束条件(这两个属于数据的静态特征)和定义在数据上的操作(属于数据的动态特征)三个方面。

2.1.2 数据模型

对于模型,特别是具体的模型,人们并不陌生。一张地图、一组建筑设计沙盘、一架飞机模型等都是具体的模型。人们可以从模型联想到现实生活中的事物。计算机中的模型是对事物、对象、过程等客观系统中感兴趣的内容的模拟和抽象表达,是理解系统的思维工具。数据模型(data model)也是一种模型,它是对现实世界数据特征的抽象。
数据库是企业或部门相关数据的集合,数据库不仅要反映数据本身的内容,而且要反映数据之间的联系。由于计算机不可能直接处理现实世界中的具体事物,因此,必须把现实世界中的具体事物转换成计算机能够处理的对象。在数据库中用数据模型这个工具来抽象、表示和处理现实世界中的数据和信息。
数据库管理系统是基于某种数据模型对数据进行组织的,因此,了解数据模型的基本概念是学习数据库知识的基础。
在数据库领域中,数据模型用于表达现实世界中的对象,即将现实世界中杂乱的信息用一种规范的、形象化的方式表达出来。而且这种数据模型既要面向现实世界(表达现实世界信息),同时又要面向机器世界(因为要在机器上实现出来),因此一般要求数据模型满足三个方面的要求。
第一,能够真实地模拟现实世界。因为数据模型是抽象现实世界的对象信息,经过整理、加工,成为一种规范的模型。但构建模型的目的是为了真实、形象地表达现实世界情况。
第二,容易被人们理解。因为构建数据模型一般是数据库设计人员做的事情,而数据库设计人员往往并不是所构建的业务领域的专家,因此,数据库设计人员所构建的模型是否正确,是否与现实情况相符,需要由精通业务的用户来评判。而精通业务的人员往往又不是计算机领域的专家,因此要求所构建的数据模型要形象化,要容易被业务人员理解,以便于他们对模型进行评判。
第三,能够方便地在计算机上实现。因为对现实世界业务进行设计的最终目的是能够在计算机上实现出来,用计算机来表达和处理现实世界的业务。因此所构建的模型必须能够方便地在计算机上实现,否则就没有任何意义。
用一种模型来同时很好地满足这三方面的要求在目前是比较困难的,因此在数据库领域中是针对不同的使用对象和应用目的,采用不同的数据模型来实现。
数据模型实际上是模型化数据和信息的工具。根据模型应用的不同目的,可以将模型分为两大类,它们分别属于两个不同的层次。
第一类是概念层数据模型,也称为概念模型或信息模型,它从数据的应用语义视角来抽取现实世界中有价值的数据并按用户的观点来对数据进行建模。这类模型主要用在数据库的设计阶段,它与具体的数据库管理系统无关,也与具体的实现方式无关。另一类是组织层数据模型,也称为组织模型(有时也直接简称为数据模型,本书后述凡是称数据模型的都指的是组织层数据模型),它从数据的组织方式来描述数据。所谓组织层就是指用什么样的逻辑结构来组织数据。数据库发展到现在主要采用了如下几种组织方式(组织模型):层次模型(用树形结构组织数据)、网状模型(用图形结构组织数据)、关系模型(用简单二维表结构组织数据)以及对象-关系模型(用复杂的表格以及其他结构组织数据)。组织层数据模型主要是从计算机系统的观点对数据进行建模,它与所使用的数据库管理系统的种类有关,因为不同的数据库管理系统支持的数据模型可以不同。组织层数据模型主要用于DBMS的实现。
为了把现实世界中的具体事物抽象、组织为某一具体DBMS支持的数据模型,人们通常首先将现实世界抽象为信息世界,然后再将信息世界转换为机器世界。即,首先把现实世界中的客观对象抽象为某一种描述信息的模型,这种模型并不依赖于具体的计算机系统,而且也不与具体的DBMS有关,而是概念意义上的模型,也就是我们前面所说的概念层数据模型;然后再把概念层数据模型转换为具体的DBMS支持的数据模型,也就是组织层数据模型(比如关系数据库的二维表)。注意从现实世界到概念层数据模型使用的是“抽象”技术,从概念层数据模型到组织层数据模型使用的是“转换”技术,也就是说先有概念模型,然后再到组织模型。从概念模型到组织模型的转换是比较直接和简单的,我们将在第10章数据库设计中详细介绍转换方法。这个过程如图2-1所示。

时间: 2024-10-06 10:29:33

《数据库原理与应用(第3版)》——2.1 数据和数据模型的相关文章

《数据库原理与应用(第3版)》——导读

前 言 数据库技术起源于20世纪60年代末,经过几十余年的迅速发展,已经形成一套较完整的理论体系,产生了一大批商用软件产品.随着数据库技术的推广使用,计算机应用已深入到国民经济和社会生活的各个领域,这些应用一般都以数据库技术及其应用为基础和核心.因此,数据库技术与操作系统一起构成信息处理的平台已成为业界的共识.在计算机应用中,数据存储和数据处理是计算机最基本的功能,数据库技术为人们提供了科学和高效地管理数据的方法.从某种意义上讲,数据库技术的教学成为计算机专业教学的重中之重,数据库课程也成为很多

《数据库原理与应用(第3版)》——1.2 数据管理技术的发展

1.2 数据管理技术的发展 数据库技术是应数据管理任务的需要而产生和发展的.数据管理包括对数据进行分类.组织.编码.存储.检索和维护,是数据处理的核心,而数据处理则是对各种数据进行收集.存储.加工和传播等一系列活动的总和. 自计算机产生之后,人们就希望用它来帮助我们对数据进行存储和管理.最初对数据的管理是以文件方式进行的,也就是通过编写应用程序来实现对数据的存储和管理.后来,随着数据量越来越大,人们对数据的要求越来越多,希望达到的目的也越来越复杂,文件管理方式已经很难满足人们对数据的需求,由此产

《数据库原理与应用(第3版)》——2.3 组织层数据模型

2.3 组织层数据模型 组织层数据模型是从数据的组织形式的角度来描述信息,目前,在数据库技术的发展过程中用到的组织层数据模型主要有:层次模型(Hierarchical Model).网状模型(Network Model).关系模型(Relational Model).面向对象模型(Object Oriented Model)和对象关系模型(Object Relational Model).组织层数据模型是按组织数据的逻辑结构来命名的,比如层次模型采用树形结构.而且各数据库管理系统也是按其所采用的

OSGi原理与最佳实践(精选版)中第二个例子 找不到org.mortbay.jetty 这个Bundle 求解决办法??

问题描述 OSGi原理与最佳实践(精选版)中第二个例子找不到org.mortbay.jetty这个Bundle求解决办法?? 解决方案 解决方案二:看下下面帖子配置http://blog.sina.com.cn/s/blog_9671d5180101r5dg.html

微信支付java版V3验证数据合法性(Deom)_java

1.1 解析微信回调数据 InputStream inStream = request.getInputStream(); ByteArrayOutputStream outSteam = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while ((len = inStream.read(buffer)) != -1) { outSteam.write(buffer, 0, len); } o

mongodb数据库怎么查询出某一段时间内的数据

问题描述 mongodb数据库怎么查询出某一段时间内的数据 db.things.find({"createTime":{"$gt":"2014-10-29 0:0:0"}}) // 大于某个时间 db.things.find({"createTime":{"$lt":"2014-10-29 0:0:0"}}) // 小于某个时间 这种方法不行呀,限制不了范围,一查就都查出来了 解决方案

mysql-MySQL数据库从表1(table1)中导出数据到(table2)中。会有多列。

问题描述 MySQL数据库从表1(table1)中导出数据到(table2)中.会有多列. table1 字段:id name url table2: 需要获取 table1 中的id url 请问怎样实现? 用sql实现的时候需要注意字段名字和顺序吗? 解决方案 字段名称随便,但是要对应起来,包括类型. create table table2 ( id int primary key, name varchar(20), ) insert into table2(id,name) select

数据库服务器-如何写一个脚本把数据库中包含”伊利“两个字的数据全查出来?

问题描述 如何写一个脚本把数据库中包含"伊利"两个字的数据全查出来? 之前有一个"伊利"的项目,现在新的项目要复用他的数据库,但是数据库中的数据不能 出现"伊利"两个字的数据,如何写一个脚本把包含"伊利"的数据全查出来呢?求指导,万分感谢 .

mysql-请教数据库大神,MySQL中的point类型数据取出来之后如何转化为字符串在后台使用?

问题描述 请教数据库大神,MySQL中的point类型数据取出来之后如何转化为字符串在后台使用? 请教数据库大神,MySQL中的point类型数据取出来之后如何转化为字符串在后台使用?我想通过这个得到的坐标去计算两个坐标之间的距离,但是取出来后没法转化成字符串,大神们,帮帮忙,谢谢了! 解决方案 select AsText(point) from T;