数据库是数据管理的工具。数据管理经历了从手工管理阶段、文件管理阶段到数据库管理阶段的变迁。信息技术的应用已成为一个企业或组织生存和发展的重要条件。而作为信息系统核心的数据库技术也得到了越来越广泛的应用。因此,数据库原理已成为计算机专业的一门重要的专业基础课,学好这门课程具有重要意义。
数据库顾名思义就是存放数据的仓库,数据库中的数据是按一定格式存放的,并且是一种广义的数据,它的种类很多,可以是文字,图像,声音,学生的档案记录等,只要是描述事物的有意义的记录都可以称为数据。
那么我们在日常生活中是用什么东西来存放这些描述事物的记录或数据的呢?大家一定都会想到表,是的,在日常生活中我们为了保存一些数据或记录经常会把数据排列成表的形式,用表来存储数据既清晰又便于查看,在平时生活中我们会接触到各种各样的表,像学生的学籍表,工资表,生产管理中的库存表等,它们都是用来存放数据的仓库。因此我们可以把表看成是一个最简单的数据库。现在来看一张具体的表。
表1:学生信息表
在这个表中,表中的一行即为一个元组,表中的一列即为一个属性,给每个属性起一个名字则称为属性名,表中的某个属性组,如果它可以唯一的确定一个元组,则称它为主键,如在这个表中的学号,它可以唯一的确定一个学生,当然,如果能保证所有学生中没有同名的人,我们也可以用姓名作为这个表的主键,域就是指属性的取值范围,如性别的域是(男,女),元组中的一个属性值称为分量。这些都是数据库的一些基本概念,必须把它们记下来。
在信息世界中,客观存在并可相互区别的事物称为实体,如在这个表中一个学生就是一个实体。具有相同属性的实体必然具有共同的特征和性质。用实体名及其属性名集合抽象和描述同类实体,称为实体型。如学生(学号,姓名,性别,专业)就是一个实体型。
但是,在很多情况下用单个表存放数据会存在一些问题,下面我们来看一个实例。
在上表中,有很多同学都是计算机1班的,而且计算机1班的班主任一定都是张老师,如果表中学生的记录很多的话,就会造成数据冗余,另外,我们在修改记录时,如果把01条记录的班主任由张老师改为李老师,就会出现计算机1班的班主任既是张老师又是李老师,这就造成了数据的不一致性。数据不一致性往往是由数据冗余造成的。为了解决这些问题,我们必须把这个表拆分成两个表。拆分后的结果如下:
表2:学生信息表
表3:班级信息表
这样拆分之后就不会再有数据冗余,实际上,我们是把原来的一个实体型:学生(学号,姓名,性别,班级,班主任,专业)拆分成了两个实体型:学生和班级。这两个实体之间通过属性班级号相联系,如果要查找某个学生的班主任可通过班级号在两个表间进行查找。
任何两个实体型之间的联系可分为三类,即一对一联系,一对多联系,多对多联系,学生和班级的联系就属于一对多联系。这样,数据库就可以定义为多个表的集合了,数据库不仅要能够表示数据本身,还要能够表示数据与数据之间的联系。
有时我们希望看到一些感兴趣的数据,如希望看到一个表:学生(学号,姓名,班级),但数据库中并不存在这样的表,这时可以用关系代数运算求得一张这样的表,我们称它为视图,视图中的数据并没有再存一份在数据库中,因此它是一张“虚表”。
视图可从一个或多个实际表中获得;视图的定义存在数据库中,而数据并没再存一份在数据库中,通过视图看到的数据存放在基本表中;对视图的操作同其它表一样,通过视图修改数据时,实际是修改基本表中的数据,相反,基本表数据的改变也会自动反映在由基本表产生的视图中。
视图的作用:视图可以简化用户对数据的理解,也可简化它们的操作。经常使用的查询可以被定义为视图。视图可防止未授权用户查看特定的行/列,而且可增强逻辑数据独立性。
数据库系统的三级模式不仅可以使数据具有独立性,而且还可以使数据达到共享,使同一数据满足更多用户的不同要求。一、内模式(InternalSchema)——存储模式是数据在数据库系统的内部表示,即对数据的物理结构/存储方式的描述,是低级描述,一般由DBMS提供的语言或工具完成;通常我们不关心内模式的具体技术实现,而是从一般组织的观点(即概念模式)或用户的观点(外模式)来讨论数据库的描述。但我们必须意识到基本的内模式和存储数据库的存在。二、模式是数据库中全体数据的逻辑结构和特性的描述,是所有用户的公共数据视图;三、外模式就是视图:是模式的子集或变形,是与某一应用有关的数据的逻辑表示;
现在我们知道了数据库系统是由三级模式结构组成,数据库系统的三级模式是对数据的三个抽象级别,它把数据的具体组织留给DBMS管理,使用户能逻辑地抽象地处理数据,而不必关心数据在计算机中的具体表示方式与存储形式。数据库管理系统在这三级模式之间提供了两层映象:即外模式/模式映象,模式/内模式映象,正是这两层映象保证了数据库系统中的数据具有较高的逻辑独立性和物理独立性。
而表实际上只是关系数据库的一个组成元素。