1.1 数据库基本概念

来源:互联网 发布:mac水波纹效果怎么弄 编辑:程序博客网 时间:2024/06/07 07:29
1.  数据库 
数据库(DB)是存放数据的仓库,只不过这些数据存在一定的关联,并按一定的格式存放在计算机上。从广义上讲,数据不仅包含数字,还包括了文本、图像、音频、视频等。 
例如,把学校的学生、课程、学生成绩等数据有序地组织并存放在计算机内,就可以构成一个数据库。因此,数据库由一些持久的相互关联数据的集合组成,并以一定的组织形式存放在计算机的存储介质中。
2.  数据库管理系统
数据库管理系统(DBMS)是管理数据库的系统,它按一定的数据模型组织数据。DBMS应提供如下功能:
(1)数据定义功能可定义数据库中的数据对象。
(2)数据操纵功能可对数据库表进行基本操作,如插入、删除、修改、查询。
(3)数据的完整性检查功能保证用户输入的数据应满足相应的约束条件。
(4)数据库的安全保护功能保证只有赋予权限的用户才能访问数据库中的数据。
(5)数据库的并发控制功能使多个应用程序可在同一时刻并发地访问数据库的数据。

(6)数据库系统的故障恢复功能使数据库运行出现故障时进行数据库恢复,以保证数据库可靠运行。

(7)在网络环境下访问数据库的功能。
(8)方便、有效地存取数据库信息的接口和工具。编程人员通过程序开发工具与数据库的接口编写数据库应用程序。数据库管理员(DBA,DataBase Adminitrator)通过提供的工具对数据库进行管理。
数据、数据库、数据库管理系统与操作数据库的应用程序,加上支撑它们的硬件平台、软件平台和与数据库有关的人员一起构成了一个完整的数据库系统。图1.1描述了数据库系统的构成。

数据库管理系统根据数据模型对数据进行存储和管理,数据库管理系统采用的数据模型主要有层次模型、网状模型和关系模型。
●  层次模型
以树形层次结构组织数据。图1.2为某学校按层次模型组织的数据示例。

 网状模型
每一个数据用一个节点表示,每个节点与其他节点都有联系,这样数据库中的所有数据节点就构成了一个复杂的网络。图1.3为按网状模型组织的数据示例。

●  关系模型
以二维表格(关系表)的形式组织数据库中的数据。例如,学生成绩管理系统涉及的学生、课程和成绩三个表。“学生”表涉及的主要信息有学号、姓名、专业名、性别、出生日期、总学分和备注;“课程”表涉及的主要信息有课程号、课程名、类别、开课学期、学时和学分;“成绩”表涉及的主要信息有学号、课程号和成绩。附录A表A.4、表A.5和表A.6描述了学生成绩管理系统中学生、课程和成绩三个表的部分数据。
表格中的一行称为一个记录,一列称为一个字段,每列的标题称为字段名。如果给每个关系表取一个名字,则有n个字段的关系表的结构可表示为:关系表名(字段名1,…,字段名n),通常把关系表的结构称为关系模式。

例如,设表A.4的名字为XS,关系模式可分别表示为:XS(学号,姓名,专业名,性别,出生日期,总学分,备注)。设表A.5的名字为KC,关系模式可分别表示为:KC(课程号,课程名,类别,开课学期,学时,学分)。设表A.6的名字为XS_KC,关系模式可分别表示为:XS_KC(学号,课程号,成绩)。
按关系模型组织的数据表达方式简洁、直观,插入、删除、修改操作方便,而按层次、网状模型组织的数据表达方式复杂,插入、删除、修改操作复杂。因此,关系模型得到了广泛应用,MySQL是支持关系数据模型的数据库管理系统。

关系数据库设计的主要任务:通过对现实世界中的数据进行抽象,得到符合现实世界要求的、能被RDBMS支持的数据模型。
即确定应用系统所使用的数据库应包含哪些表,每个表的结构是怎样的。
设计步骤
需求分析:通过调查、收集和分析,明确用户对数据库的要求。
概念结构设计:对需求分析得到的用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。

数据库的逻辑设计:将E-R图转化为关系模型,即生成表,并确定表中的列。

概念结构设计---建立实体-关系模型(Entity-Relationship,E-R)


关系映射
(1:1)联系的E-R图到关系模式的转换:既可单独对应一个关系模式,也可以不单独对应一个关系模式。
联系单独对应一个关系模式,则由联系属性、参与联系的各实体集的主码属性构成关系模式,其主码可选参与联系的实体集的任一方的主码。
联系不单独对应一个关系模式,联系的属性及一方的主码加入另一方实体集对应的关系模式中。

1:n)联系的E-R图到关系模式的转换:既可单独对应一个关系模式,也可以不单独对应一个关系模式。

(m:n)联系的E-R图到关系模式的转换:单独对应一个关系模式,该关系模式包括联系的属性、参与联系的各实体集的主码属性,该关系模式的主码由各实体集的主码属性共同组成。
关系模式XS_KC的主码是由“学号”和“课程号”两个属性组合起来构成的一个主码,一个关系模式只能有一个主码。
至此,已介绍了根据E-R图设计关系模式的方法,通常这一设计过程称为逻辑结构设计。
在设计好一个项目的关系模式后,就可以在数据库管理系统环境下创建数据库、关系表及其他数据库对象,输入相应数据,并根据需要对数据中的数据进行各种操作。

数据的物理模型即指数据的存储结构,如对数据库物理文件和索引文件的组织方式、文件的存取路径、内存的管理等。物理模型不仅与数据库管理系统有关,还和操作系统甚至硬件有关,物理模型对用户是不可见的

 数据库的连接方式

1.  ODBC数据库接口
ODBC即开放式数据库互连(Open DataBase Connectivity),是微软公司推出的一种实现应用程序和关系数据库之间通信的接口标准。符合标准的数据库就可以通过SQL语言编写的命令对数据库进行操作,但只针对关系数据库。目前所有的关系数据库都符合该标准,如Oracle、SQL Server、MySQL、DB2、Sybase、Access等。ODBC本质上是一组数据库访问API(应用程序编程接口),由一组函数调用组成,核心是SQL语句。
在具体操作时,首先必须用ODBC管理器注册一个数据源,管理器根据数据源提供的数据库位置、数据库类型及ODBC驱动程序等信息,建立起ODBC与具体数据库的联系。这样,只要应用程序将数据源名提供给ODBC,ODBC就能建立起与相应数据库的连接。
MySQL是通过MySQL Connector/ODBC(MyODBC驱动程序系列)为ODBC提供支持的,图1.8说明了MySQL使用ODBC连接方式的结构。

ADO数据库接口
ADO(ActiveX Data Object)是微软公司开发的基于COM的数据库应用程序接口,通过ADO连接数据库,可以灵活地操作数据库中的数据。
使用ADO访问关系数据库有两种途径:一种是通过ODBC驱动程序,另一种是通过数据库专用的OLE DB Provider,后者有更高的访问效率。

 ADO.NET数据库接口
ADO.NET数据模型从ADO发展而来,但它不只是对 ADO的改进,而是采用了一种全新的技术。主要表现在以下几个方面:
●  ADO.NET不是采用ActiveX技术,而是与.NET框架紧密结合的产物。
● ADO.NET包含对XML标准的完全支持,这对于跨平台交换数据具有重要的意义。
● ADO.NET既能在与数据源连接的环境下工作,又能在断开与数据源连接的条件下工作。特别是后者,非常适合于网络应用的需要。因为在网络环境下,保持与数据源连接,不符合网站的要求,不仅效率低,付出的代价高,而且常常会引发由于多个用户同时访问时带来的冲突。因此ADO.NET系统集中主要精力用于解决在断开与数据源连接的条件下数据处理的问题。
图1.9显示了 ADO.NET 架构总览。

数据层是实现ADO.NET断开式连接的核心,从数据源读取的数据先缓存到数据集中,然后被程序或控件调用。数据源可以是数据库或XML数据。

DBC数据库接口
在JDBC API中有两层接口:应用程序层和驱动程序层,前者使开发人员可以通过SQL调用数据库和取得结果,后者处理与具体数据库驱动程序的所有通信。
使用JDBC接口对数据库操作有如下优点:
(1)JDBC API与ODBC十分相似,有利于用户理解;
(2)使编程人员从复杂的驱动器调用命令和函数中解脱出来,而致力于应用程序功能的实现;
(3)JDBC支持不同的关系数据库,增强了程序的可移植性。
使用JDBC的主要缺点:访问数据记录的速度会受到一定影响,此外,由于JDBC结构中包含了不同厂家的产品,这给数据源的更改带来了较大麻烦。
MySQL通过MySQL Connector/J驱动实现JDBC接口,它提供了与使用Java编程语言开发的客户端应用程序的连通性。MySQL Connector/J是一种纯Java程序,实施了3.0版JDBC规范,并能使用MySQL协议与MySQL服务器直接通信。
5.  数据库连接池技术
对于网络环境下的数据库应用,由于用户众多,使用传统的JDBC方式进行数据库连接,系统资源开销过大成为制约大型企业级应用效率的瓶颈,采用数据库连接池技术对数据库连接进行管理,可以大大提高系统的效率和稳定性。

对于一般的数据库应用系统,除了数据库管理系统外,需要设计适合普通人员操作数据库的界面。目前,流行的开发数据库界面的工具主要包括Visual BASIC/NET、Visual C++/NET、Visual C#、Delphi、PowerBuilder等。数据库应用程序与数据库、数据库管理系统之间的关系如图1.10所示。

从图中可看出,当应用程序需要处理数据库中的数据时,首先向数据库管理系统发送一个数据处理请求,数据库管理系统接收到这一请求后,对其进行分析,然后执行数据操作,并把操作结果返回给应用程序。由于应用程序直接与用户打交道,而数据库管理系统不直接与用户打交道,所以应用程序被称为“前台”,而数据库管理系统被称为“后台”。由于应用程序是向数据库管理系统提出服务请求,通常称为客户程序(Client),而数据库管理系统是为其他应用程序提供服务,通常称为服务器程序(Server),所以又将这种操作数据库模式称为客户/服务器(C/S)模式。
应用程序和数据库管理系统可以运行在同一台计算机上(单机方式),也可以运行在网络方式。在网络方式下,数据库管理系统在网络上的一台主机上运行,应用程序可以在网络上的多台主机上运行,即一对多的方式。对于MySQL,除了服务器安装数据库管理系统外,还需要在客户端安装数据库客户程序。
例如,用Visual Basic开发的客户/服务器(C/S)模式的学生成绩管理系统学生信息输入界面如图1.11所示。


基于Web的数据库应用采用三层客户/服务器模式,也称B/S结构。第一层为浏览器,第二层为Web服务器,第三层为数据库服务器。浏览器是用户输入数据和显示结果的交互界面,用户在浏览器表单中输入数据,然后将表单中的数据提交并发送到Web服务器,Web服务器应用程序接收并处理用户的数据,通过数据库服务器,从数据库中查询需要的数据(或把数据录入数据库)送到Web服务器,Web服务器把返回的结果插入HTML页面,传送到客户端,在浏览器中显示出来,如图1.12所示。

关系数据库的标准语言是SQL(Structured Query Language,结构化查询语言)。SQL语言是用于关系数据库查询的结构化语言,最早由Boyce和Chambedin在1974年提出,称为SEQUEL语言。1976年,IBM公司的San Jose研究所在研制关系数据库管理系统System R时修改为SEQUEL2,即目前的SQL语言。SQL语言的功能包括数据查询、数据操纵、数据定义和数据控制4个部分。SQL语言简洁、方便实用,为完成其核心功能只用了6个命令:SELECT、CREATE、INSERT、UPDATE、DELETE、GRANT(REVOKE)。目前已成为应用最广的关系数据库语言。SQL语言简洁,易学易用。

MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
与其他的大型数据库相比,MySQL还有一些不足之处,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。
目前Internet上流行的网站构架方式是LAMP(Linux+Apache+MySQL+PHP),即使用Linux作为操作系统,Apache作为Web服务器,MySQL作为数据库,PHP作为服务器端脚本解释器。由于这4个软件都是遵循GPL的开放源码软件,因此使用这种方式不用花一分钱就可以建立起一个稳定、免费的网站系统。
MySQL数据库的特点主要有以下几个方面:
●  使用核心线程的完全多线程服务,这意味着可以采用多CPU体系结构。
●  可运行在不同平台。
●  使用C和C++编写,并使用多种编译器进行测试,保证了源代码的可移植性。
●  支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。


●  为多种编程语言提供了API。这些编程语言包括C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。
●  支持多线程,充分利用CPU资源。
●  优化的SQL查询算法,可有效地提高查询速度。
●  既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB2312、BIG5,日文的Shift_JIS等都可以用做数据表名和数据列名。
●  提供TCP/IP、ODBC和JDBC等多种数据库连接途径。
●  提供可用于管理、检查、优化数据库操作的管理工具。
●  可以处理拥有上千万条记录的大型数据库。
2008年1月16日美国著名软件开发商sun公司宣布收购MySQL AB公司。通过这两个公司的强强结合。相信MySQL的功能会越来越完善,从而在数据库领域将发挥更大的影响力。
本书要介绍的是MySQL 5.1.28,MySQL支持SQL标准,但也进行了相应的扩展。

 MySQL服务器的安装
(1)下载Windows版的MySQL 5.1.28,解压后双击进入安装向导。有3种安装方式可供选择:Typical(典型安装)、Complete(完全安装)和Custom(定制安装),对于大多数用户,选择Typical就可以了。单击“next”按钮进入下一步。
(2)进入如图1.14所示的安装界面。在MySQL5.1中,数据库主目录和文件目录是分开的。其中,“Destination Folder”为MySQL所在的目录,默认目录为C:\Program Files\MySQL\MySQL Server 5.1。“Data Folder”为MySQL数据库文件和表文件所在的目录,默认目录为C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.1\data,其中Application Data是隐藏文件夹。确认后单击“Install”按钮开始安装。

MySQL服务器的配置
(1)安装完毕后选择“Configure the MySQL server now”复选框进入配置向导。第一步选择配置类型,有两种:Detailed Configuration(详细配置)和Standard Configuration(标准配置)。标准配置选项适合想要快速启动MySQL而不必考虑服务器配置的新用户。详细配置选项适合想要更加细粒度控制服务器配置的高级用户。这里选择Detailed Configuration。
(2)单击“next”按钮进行服务器类型选择,分为3种:Developer Machine(开发机器)、Server Machine(服务器)和Dedicated MySQL Server Machine(专用MySQL服务器)。鉴于只是初学MySQL,所以这里选择Developer Machine。
(3)单击“next”按钮进入数据库使用情况对话框,有3个选项:Multifunctional Database(多功能数据库)、Transactional Database Only(只是事务处理数据库)和Non-Transactional Database Only(只是非事务处理数据库)。其中多功能数据库对InnoDB和MyISAM表都适用,所以这里选择“Multifunctional Database”。
(4)下一步进入InnoDB表空间对话框,这里可以修改InnoDB表空间文件的位置,如      图1.15所示。默认位置是MySQL服务器数据目录,这里不做修改,直接下一步。

(5)接下来进入并发连接选择对话框,Decision Support(决策支持)(DSS)/OLAP:如果服务器不需要大量的并行连接可以选择该选项;Online Transaction Processing(联机事务处理)(OLTP):如果服务器需要大量的并行连接则选择该选项;Manual Setting(人工设置):选择该选项可以手动设置服务器并行连接的最大数目。这里选择“Decision Support(DSS)/ OLAP”。
(6)进入联网选项对话框,如图1.16所示。默认情况是启用TCP/IP网络,默认端口为3306。这里不做修改,直接下一步。

(7)进入字符集选择对话框,前面的选项一直是按默认设置进行的,这里要做一些修改。选中“Manual Selected Default Character Set/Collation”选项,在“Character Set”选框中将latin1修改为gb2312,如图1.17所示。

(8)下一步进入服务选项对话框,服务名为MySQL,这里不做修改。
(9)下一步是安全选项对话框,如图1.18所示,在密码输入框中输入root用户的密码。要想防止通过网络以root登录,选中Root may only connect from localhost(只允许从本机登录连接root)选项旁边的框。要想创建一个匿名用户账户,选中Create An Anonymous Account(创建匿名账户)选项旁边的框。由于安全原因,这里不建议选择这项。

(10)设置完毕后,随后一步是提交配置,单击“execute”按钮即可完成。
注意:对不同的操作系统和不同版本的MySQL,安装过程可能有所不同,这里只举MySQL 5.1的安装例子。
以上步骤完成后,MySQL服务器就已经可以使用了。由于MySQL自身不带界面工具,为了进行可视化的管理,可以另外安装界面工具来处理SQL语句。MySQL官方网站上提供了MySQL Administrator管理工具和MySQL Query Browser查询工具,可以一起下载。下载地址是http://dev.mysql.com/downloads/gui-tools/5.0.html。界面工具的安装非常简单,这里不详细说明。我们也可以选择其他的界面管理工具来操作MySQL,常用的有Navicat Lite for MySQL、phpMyAdmin、MySQL Front等。然而这些不是数据库服务器,它们只是在Windows或Linux下允许用户能够进行可视化管理的工具。

  MySQL命令行客户端
MySQL安装和配置完后,打开“开始”→“程序”→“MySQL”→“MySQL Server 5.1”→“MySQL Command Line Client”,进入到MySQL客户端,在客户端窗口输入密码,就以root用户身份登录到MySQL服务器,在窗口中出现如图1.19所示命令行,在命令行中输入SQL语句就可以操作MySQL数据库。以root用户身份登录可以对数据库进行所有的操作。MySQL还可以使用其他用户登录,这在以后会讲到。

2.  重新配置服务器
如果要对服务器重新配置,可以打开“开始”→“程序”→“MySQL”→“MySQL Server 5.1”→“MySQL Server Instance Config Wizard”,在出现的配置向导中重新配置服务器。
(1)选项文件
在C:\Program Files\MySQL\MySQL Server 5.1的MySQL主目录下有一个my.ini文件,这是MySQL的选项文件,在MySQL启动时会自动加载文件中的一些选项。可以通过修改选项文件来修改MySQL的一些默认设置,具体会在以后的内容中了解到。
(2)数据目录
MySQL有一个data目录,用于存放数据库文件。MySQL 5.1的默认的路径为C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.1\data。在data目录中MySQL为每一个数据库建立一个文件夹,所有的表文件存放在相应的数据库文件夹中。

数据提供器用于建立数据源与数据集之间的联系,它能连接各种类型的数据,并能按要求将数据源中的数据提供给数据集,或者从数据集向数据源返回编辑后的数据。
MySQL使用MySQL Connector/NET实施了所需的ADO.NET接口,并将其集成到了ADO.NET aware工具中。从而使开发人员能够方便地创建需要安全和高性能数据连接(与MySQL)的.NET应用程序。MySQL Connector/NET是用纯C#语言编写的可完全管理的ADO.NET驱动程序。

联系单独对应一个关系模式,则由联系的属性、参与联系的各实体集的主码属性构成关系模式,n端的主码作为该关系模式的主码。
联系不单独对应一个关系模式,则将联系的属性及1端的主码加入n端实体集对应的关系模式中,主码仍为n端的主码。


E-R模型直接从现实世界中抽象出实体类型和实体间联系,然后用实体联系图(E-R图)表示数据模型,是描述概念世界,建立概念模型的实用工具。 
实体:客观存在并可以相互区分的事物叫实体。从具体的人、物、事件到抽象的状态、概念,都可以用实体抽象地表示。用矩形表示,矩形框内写明实体名。
实体集:是共享公共性质的事物的集合。
数据库的物理设计:真正实现规划好的数据库,是将一个满足用户信息需求的已确定的逻辑数据库结构转化为一个有效的、可实现的物理数据库结构的过程。
数据库性能的优化。