数据库基本概念
3-1 数据库系统
3-2 数据库管理系统(DBMS)
3-3 关系型数据库
3-4 数据库设计
3-5 SQL语句
MS SQL Server 2000是微软公司所推出的一套在Windows平台上执行的数据库管理系统,用以提供作为应用程序的数据来源,存放各种数据,并可以让用户很容易地达成所要进行的数据存取操作。同时它也提供了一些可视化的管理工具,协助数据库系统管理者可以更方便快速地管理及设计库数据库的内容,以及对数据库进行维护。
在开始介绍SQL Server 2000数据库管理系统的各项管理、维护操作之前,先来谈谈一些有关数据库的概念,让读者对数据库系统能先有一些基本的认识。
3-1 数据库系统
什么是数据库系统?简单地说,数据库系统是一种计算机化的数据保存系统,它以特有的数据存储方式将相关的数据内容整合在一起。我们可以将数据库本身想成是一个电子档案柜,在这个电子档案柜内,存放着一些电子数据文件。数据库系统主要的目的在于维护信息,并在必要时提供协助取得这些信息。
3-1-1 数据库系统的类型
数据库系统被使用的范围非常广泛,从一般的微电脑到大型主机都可以使用。一般来说,大型主机多倾向于使用多用户的数据库系统,而一般的微电脑、个人计算机则倾向于使用单用户数据库系统。这里所谓的单用户数据库系统,是指同时最多只能有一个用户存取数据库的内容,而多用户数据库系统,则允许多个用户同时存取数据库的内容。
数据库系统的种类非常多,目前以关系型(Relational)数据库系统最为常见,所谓的关系型数据库系统是以表(Table)的类型将数据提供给用户,而所有的数据库操作都是利用旧的表来产生新的表。除了关系型数据库系统外,其他常见的数据库系统类型还有Inverted List,Hierarchic,Network等数据库系统。
3-1-2 数据库系统的结构
不同的数据库系统有着不同的系统结构,毫无疑问,一个数据库结构并不能完全用于所有的数据库系统,在这里我们以最被广泛认同的数据库结构——ANSI/SPARC结构来进行说明。
1. ANSI/SPARC结构
在ANSI/SPARC结构中将数据库分为内部层(Internal Level)、概念层(Conceptual Level)以及外部层(External Level)等三层。
内部层是最接近数据库实体存储位置的一层,与数据库数据实际存储方式有关,在内部层中以具体的方式来表示整个数据库。
外部层是最接近用户的部分,与用户对数据的查看方式有关,在外部层中以用户看得懂的方式来表示部分数据库的内容,每个用户所查看的数据内容不同。
概念层位于内部层与外部层之间,以用户看得懂的方式来表示整个数据库,提供每个用户一致的数据查看内容。
不管是使用哪一种数据库系统,都只会影响到ANSI/SPARC结构的外部层以及概念层内容,而与内部层无关。例如,对于关系型数据库系统而言,在概念层中所看到的数据一定是以关系型的形式存在,在外部视域中所看的数据有可能会以关系型的形式存在,至于在内部层中的数据则一定不会是以关系型的形式存在。
2. Mapping对应
在图3-2的详细结构图中,可以发现在内部层与概念层之间以及概念层与外部层之间各有一个对应(Mapping)存在,分别对应着上下两层的内容。
概念/内部对应(Conceptual/ Internal Mapping)位于概念层与内部层之间,定义数据库的概念视域内容与实际存储内容之间的对应关系。如果改变了数据库的存储结构,只要在这个对应中修改对应的内容就可以了,而不需要改变概念视域与外部视域的内容。
外部/概念对应(external/conceptual mapping)位于外部层与概念层之间,定义特定外部视域与概念视域的对应关系,也就是定义外部视域所查看的部分数据库内容与整个数据库之间的关系。
3-1-3 数据库系统的主要组件
基本上,在数据库系统中包含了数据、软件、硬件以及用户等四个主要组件。
1. 数据
这里的数据是指实际存放在数据库中的数据,通常也就是在企业应用系统中会使用到的永久性数据。这里所谓的永久性数据并不是真的指该数据一定会存在一段很长的时间,而是用来与其他的暂时性数据(如,输入数据、输出数据、控制语句等)作为区分。
虽然说不同的数据库系统,其存储数据的方式或功能特性可能会有所不同,但一般说来,数据库内的数据通常是整合与共享的。
所谓“数据整合”是指数据库为存放多个数据文件集合的个体,而非仅能存放单一数据文件的个体,这些数据文件间若有重复的信息存在,则这些重复的数据可以被清除。例如,在数据库中包含记录员工基本数据的Employe以及记录参加训练课程的员工数据Enrollment两个数据文件,假设我们要知道所有参加训练课程员工的部门数据,可以直接从Employe文件中取得,而不需将部门数据重复记录于Enrollment文件中。
所谓的“数据共享”,是指数据库内的数据可以被多个不同的应用程序或用户共享。也就是说,我们只要在数据库中存储一份数据,不同的用户就可以为了相同或不同的目的来使用这个数据。例如,在人事管理系统中以及在会计薪金系统中都会使用到员工基本数据文件,在数据库内仅需存储一份员工数据文件提供这两个系统共同使用即可,而不需要分别为不同的系统各自存储一份。
2. 软件
软件是指实体数据库与用户之间的接口,通常被称为数据库管理系统(DBMS),主要是被用来协助用户存取数据库的内容。数据与实体数据库中以特定的方式存储,用户若要直接存取实体数据,就必须知道数据存放的格式以及数据存放的实体位置。数据库管理系统提供用户一个数据存取的接口,将数据存储的格式与位置交由DBMS来管理,所有的存取动作都交由DBMS来处理。
换句话说,DBMS将数据库由实体的硬件层提升成虚拟的视域,让用户的数据库存取操作更为简单,用户不再需要知道实际上数据库数据的存储方式或存储位置,只要知道数据库在数据库管理系统中的结构定义,就可以通过DBMS顺利存取数据库的内容。所以说,数据库管理系统是数据库系统中最重要的一项。
3. 硬件
要让数据库系统能够顺利地执行,就必须提供适当、足够的硬件设备。数据库系统可运行的硬件种类范围非常广泛,从一般的微电脑到大型主机都有。当然,在不同的硬件设备上,使用的数据库系统可能不同,其所提供的功能特性也可能不同。例如,大系统通常使用多用户数据库系统,允许多个用户同时存取数据库内容;而一般的PC使用同时只能有一个用户存取的单一用户数据库系统。
与数据库系统运行有关的硬件设备可分为以下两类:
存储设备与I/O装置:传递信息、存储数据库数据的设备。与数据库数据量的大小有关,数据量越多,需要的存储空间也就越大。
CPU处理器与内存:执行数据库系统软件所占用的系统资源。系统的处理器速度及内存空间至少要能符合执行操作系统与数据库软件的最小需求。理论上来说,CPU越快、内存越大,则执行效率就越高。
数据库的数据量除了会影响存储空间外,也会影响数据库的执行效率,当我们在规划数据库系统的硬件设备时,应该要以未来的数据量作为考虑的标准,以减少日后升级或更换硬件设备的状况。
4. 用户
当然必须要有用户,数据库系统才会有意义,基本上我们可以将数据库系统的用户分为:程序设计人员、终端用户以及数据库管理员等三类。
数据库管理员(DBA)是一个整合技术的专业人员,他主要的工作是建立一个数据库,并将企业环境的决策内容付诸于实践,同时他也必须确保数据库的执行效率以及提供其他相关的技术服务。通常他是直接通过数据库管理系统存取、维护数据库的内容。
程序设计人员利用程序语言编写数据库应用程序,在数据库程序中可以利用DBMS所提供的功能指令,对数据库的内容进行存取。
终端用户(End User)通过数据库应用程序的操作,利用工作站或终端机与数据库系统建立交互,进而存取数据库的数据。大部分的数据库系统内至少都会提供一个称为查询语言处理器(Query Language Processor)的内建应用程序,提供用户以高级的指令或语句将命令传递给DBMS。
3-1-4 数据集中化管理
在多用户的环境下,使用数据库系统维护数据将具有数据集中化管理的优势。所谓数据集中化管理的概念是指,由数据管理者(DA)负责,就整个应用环境需求作一个通盘的了解后,对数据加以整合分析,定义出数据库的数据内容以及数据的管理、处理政策。接着,由数据库管理者(DBA)将这些政策付诸于实践并负责维护管理。
数据集中化管理具有以下优点:
1. 减少重复的数据
在非数据库系统中,每个应用程序有各自的数据文件,这样通常会造成数据重复存储,浪费硬盘的空间。然而,这并不表示,一定要将数据库内所有的重复数据都删除。有时候,由于技术上或实际应用上的考虑,我们必须将相同的数据重复存储成多份,并加强数据的维护。
2. 避免数据不一致
若在数据库中有重复的数据存在,可以将具有重复性的部分定义在数据库管理系统(DBMS)中,交由DBMS来管理控制,以维护数据的一致性。也就是说,若在数据库中修改一个重复性的数据内容,则DBMS会自动维护数据库内容的一致性,根据用户定义的维护内容,同时将重复的地方全部修改,或取消修改数据的动作。
3. 数据可共享
数据库内的数据除了能够提供多个应用程序,多个用户共同使用外,也可以直接利用现有数据库的内容,建立一个新的数据库应用程序。
4. 建立标准
这里的标准是指数据存储的表示格式,对于集中化的数据库,DBA可以确保所有数据都是应用设置的标准显示。数据库的数据标准化可以协助数据的交换动作,同时也能够将数据库移转到其他系统上。
5. 应用安全设置
将数据集中管理后,可以在数据库系统中,利用用户帐号的设置,来设置用户的存取权限并维护数据的安全性。
6. 维护数据的正确
在数据库系统中,对于有规则可循的数据,我们可以依据数据的特性设置数据的准则条件,这样可以避免用户输入不合理的数据或是从数据库中快速找出违背规则的数据。
7. 平衡冲突性的需求
在知道整个企业环境的需求后,DBA就可以将系统加以结构化,提供对企业环境的完整服务。对于有冲突的部分,根据企业需求的优先等级设置,建立一个对企业而言最好的数据库。
3-1-5 数据独立
在早期系统中的应用程序通常是与数据相关的,也就是说,数据的存储方式与数据的存取技术都是根据应用程序的需要进行考虑,甚至将这些数据的存储方式与数据的存取技术建立于程序代码内。因此,当我们修改了数据的存储方式或是数据的存取技术后,就势必会影响到应用程序。
然而,在数据库系统中,基于下列两个理由,我们应该避免应用程序与数据产生相关性,也就是说应用程序具有数据独立性。
在不同的应用程序中,可能会需要对数据库中相同的数据作不同的检查。例如,在将数据整合前,两个应用程序使用各自的数据文件,当我们要将两个数据文件整合成数据库时,若发现共同的属性在两个数据文件中定义的数据类型不同,这时,我们仍然可以通过DBMS所提供的类型转换功能来整合数据。因此,应用程序若与数据独立,则不需修改应用程序的内容。
数据库管理员可以在数据库中任意修改数据的存储结构或是存取技术,而不需去修改现有的应用程序内容。例如,当我们要在数据库中增加新的数据或修改应用程序的修先等级,若应用程序与数据独立,则只需修改数据库的内容,而不需修改应用程序的内容。
所以我们可以说,数据独立是将应用程序从数据的存储结构及存取技术分离开来,在应用程序中不需以特定的存储结构或存取技术作为考虑。不过值得注意的是,数据独立并非DBMS与生俱有的,而是需要数据库管理员自行在程序设计上加入,所以说数据独立是使用数据库的优点,到不如说是使用数据库的目标。