11级_Java_曹建波5.21 数据库的基本概念

数据库的基本概念php

数据库与数据库管理系统html

1. 数据库 mysql

数据库(DB)是存放数据的仓库,只不过这些数据存在必定的关联,并按必定的格式存放在计算机上。从广义上讲,数据不只包含数字,还包括了文本、图像、音频、视频等。算法

例如,把学校的学生、课程、学生成绩等数据有序地组织并存放在计算机内,就能够构成一个数据库。所以,数据库由一些持久的相互关联数据的集合组成,并以必定的组织形式存放在计算机的存储介质中。sql

2. 数据库管理系统数据库

数据库管理系统(DBMS)是管理数据库的系统,它按必定的数据模型组织数据。DBMS应提供以下功能:编程

(1)数据定义功能可定义数据库中的数据对象。浏览器

(2)数据操纵功能可对数据库表进行基本操做,如插入、删除、修改、查询。缓存

(3)数据的完整性检查功能保证用户输入的数据应知足相应的约束条件。安全

(4)数据库的安全保护功能保证只有赋予权限的用户才能访问数据库中的数据。

(5)数据库的并发控制功能使多个应用程序可在同一时刻并发地访问数据库的数据。

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

(7)在网络环境下访问数据库的功能。

(8)方便、有效地存取数据库信息的接口和工具。编程人员经过程序开发工具与数据库的接口编写数据库应用程序。数据库管理员(DBA,DataBaseAdminitrator)经过提供的工具对数据库进行管理。

数据、数据库、数据库管理系统与操做数据库的应用程序,加上支撑它们的硬件平台、软件平台和与数据库有关的人员一块儿构成了一个完整的数据库系统。图1.1描述了数据库系统的构成。

关系型数据库管理系统(RDBMS):

SQL Server、

Oracle、

MySQL、

DB二、

SyBase

数据模型

数据库管理系统根据数据模型对数据进行存储和管理,数据库管理系统采用的数据模型主要有层次模型、网状模型和关系模型。

层次模型

以树形层次结构组织数据。图1.2为某学校按层次模型组织的数据示例。

网状模型

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

关系模型

以二维表格(关系表)的形式组织数据库中的数据。例如,学生成绩管理系统涉及的学生、课程和成绩三个表。“学生”表涉及的主要信息有学号、姓名、专业名、性别、出生日期、总学分和备注;“课程”表涉及的主要信息有课程号、课程名、类别、开课学期、学时和学分;“成绩”表涉及的主要信息有学号、课程号和成绩。附录A表A.四、表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)

E-R模型直接从现实世界中抽象出实体类型和实体间联系,而后用实体联系图(E-R图)表示数据模型,是描述概念世界,创建概念模型的实用工具。

实体:客观存在并能够相互区分的事物叫实体。从具体的人、物、事件到抽象的状态、概念,均可以用实体抽象地表示。用矩形表示,矩形框内写明实体名。

实体集:是共享公共性质的事物的集合。

属性:每一个实体集涉及的信息项称为属性,便是实体集的一种性质。用椭圆形表示,并用无向边将其相应的实体链接起来。

实体集中的实体彼此是可区别的,若是实体集中的属性或最小属性组合的值能惟一标志其对应实体,则将该属性或属性组合称为码。对于每个实体集,可指定一个码为主码。

实体集A和实体集B之间存在各类关系,一般把这些关系称为“联系”。

联系用菱形表示,经过直线与实体相连。这样构成的图就是E-R图,E-R图就是E-R模型的描述方法。

两个实体集A和B之间的联系多是如下三种状况之一。

一对一的联系(1:1):A中的一个实体最多与B中的一个实体相联系,B中的一个实体也最多与A中的一个实体相联系。

一对多的联系(1:n):A中的一个实体能够与B中的多个实体相联系,而B中的一个实体至多与A中的一个实体相联系。

多对多的联系(m:n):A中的一个实体能够与B中的多个实体相联系,而B中的一个实体也可与A中的多个实体相联系。

逻辑结构设计

实体:每一个实体映射为一个表格。

属性:映射为相应表中的一个字段。

关系映射

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

联系单独对应一个关系模式,则由联系属性、参与联系的各实体集的主码属性构成关系模式,其主码可选参与联系的实体集的任一方的主码。

联系不单独对应一个关系模式,联系的属性及一方的主码加入另外一方实体集对应的关系模式中。

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

联系单独对应一个关系模式,则由联系的属性、参与联系的各实体集的主码属性构成关系模式,n端的主码做为该关系模式的主码。

联系不单独对应一个关系模式,则将联系的属性及1端的主码加入n端实体集对应的关系模式中,主码仍为n端的主码。

(m:n)联系的E-R图到关系模式的转换:单独对应一个关系模式,该关系模式包括联系的属性、参与联系的各实体集的主码属性,该关系模式的主码由各实体集的主码属性共同组成。

关系模式XS_KC的主码是由“学号”和“课程号”两个属性组合起来构成的一个主码,一个关系模式只能有一个主码。

至此,已介绍了根据E-R图设计关系模式的方法,一般这一设计过程称为逻辑结构设计。

在设计好一个项目的关系模式后,就能够在数据库管理系统环境下建立数据库、关系表及其余数据库对象,输入相应数据,并根据须要对数据中的数据进行各类操做。

数据库物理设计

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

数据库应用系统

数据库的链接方式

1. ADO.NET数据库接口

ADO.NET数据模型从ADO发展而来,但它不仅是对ADO的改进,而是采用了一种全新的技术。主要表如今如下几个方面:

ADO.NET不是采用ActiveX技术,而是与.NET框架紧密结合的产物。

ADO.NET包含对XML标准的彻底支持,这对于跨平台交换数据具备重要的意义。

ADO.NET既能在与数据源链接的环境下工做,又能在断开与数据源链接的条件下工做。特别是后者,很是适合于网络应用的须要。由于在网络环境下,保持与数据源链接,不符合网站的要求,不只效率低,付出的代价高,并且经常会引起因为多个用户同时访问时带来的冲突。所以ADO.NET系统集中主要精力用于解决在断开与数据源链接的条件下数据处理的问题。

ODBC数据库接口

ODBC即开放式数据库互连(Open DataBase Connectivity),是微软公司推出的一种实现应用程序和关系数据库之间通讯的接口标准。符合标准的数据库就能够经过SQL语言编写的命令对数据库进行操做,但只针对关系数据库。目前全部的关系数据库都符合该标准,如Oracle、SQL Server、MySQL、DB二、Sybase、Access等。ODBC本质上是一组数据库访问API(应用程序编程接口),由一组函数调用组成,核心是SQL语句。

在具体操做时,首先必须用ODBC管理器注册一个数据源,管理器根据数据源提供的数据库位置、数据库类型及ODBC驱动程序等信息,创建起ODBC与具体数据库的联系。这样,只要应用程序将数据源名提供给ODBC,ODBC就能创建起与相应数据库的链接。

MySQL是经过MySQL Connector/ODBC(MyODBC驱动程序系列)为ODBC提供支持的,图1.8说明了MySQL使用ODBC链接方式的结构。

2.ADO数据库接口

ADO(ActiveX Data Object)是微软公司开发的基于COM的数据库应用程序接口,经过ADO链接数据库,能够灵活地操做数据库中的数据。

使用ADO访问关系数据库有两种途径:一种是经过ODBC驱动程序,另外一种是经过数据库专用的OLE DB Provider,后者有更高的访问效率。

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

数据提供器用于创建数据源与数据集之间的联系,它能链接各类类型的数据,并能按要求将数据源中的数据提供给数据集,或者从数据集向数据源返回编辑后的数据。

MySQL使用MySQL Connector/NET实施了所需的ADO.NET接口,并将其集成到了ADO.NET aware工具中。从而使开发人员可以方便地建立须要安全和高性能数据链接(与MySQL)的.NET应用程序。MySQL Connector/NET是用纯C#语言编写的可彻底管理的ADO.NET驱动程序。

4.JDBC数据库接口

在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方式进行数据库链接,系统资源开销过大成为制约大型企业级应用效率的瓶颈,采用数据库链接池技术对数据库链接进行管理,能够大大提升系统的效率和稳定性。

客户/服务器(C/S)模式应用系统

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

客户/服务器(C/S)模式应用系统

当应用程序须要处理数据库中的数据时,首先向数据库管理系统发送一个数据处理请求,数据库管理系统接收到这一请求后,对其进行分析,而后执行数据操做,并把操做结果返回给应用程序。因为应用程序直接与用户打交道,而数据库管理系统不直接与用户打交道,因此应用程序被称为“前台”,而数据库管理系统被称为“后台”。因为应用程序是向数据库管理系统提出服务请求,一般称为客户程序(Client),而数据库管理系统是为其余应用程序提供服务,一般称为服务器程序(Server),因此又将这种操做数据库模式称为客户/服务器(C/S)模式。

应用程序和数据库管理系统能够运行在同一台计算机上(单机方式),也能够运行在网络方式。在网络方式下,数据库管理系统在网络上的一台主机上运行,应用程序能够在网络上的多台主机上运行,即一对多的方式。对于MySQL,除了服务器安装数据库管理系统外,还须要在客户端安装数据库客户程序。

三层客户/服务器(B/S)模式应用系统

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

关系数据库语言

关系数据库的标准语言是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是一个小型关系型数据库管理系统,开发者为瑞典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查询算法,可有效地提升查询速度。

● 既可以做为一个单独的应用程序应用在客户端服务器网络环境中,也可以做为一个库而嵌入到其余的软件中提供多语言支持,常见的编码如中文的GB23十二、BIG5,日文的Shift_JIS等均可以用作数据表名和数据列名。

● 提供TCP/IP、ODBC和JDBC等多种数据库链接途径。

● 提供可用于管理、检查、优化数据库操做的管理工具。

● 能够处理拥有上千万条记录的大型数据库。

2008年1月16日美国著名软件开发商sun公司宣布收购MySQL AB公司。经过这两个公司的强强结合。相信MySQL的功能会愈来愈完善,从而在数据库领域将发挥更大的影响力。

本书要介绍的是MySQL 5.1.28,MySQL支持SQL标准,但也进行了相应的扩展。

MySQL的安装和配置

1.MySQL服务器的安装

(1)下载Windows版的MySQL 5.1.28,解压后双击进入安装向导。有3种安装方式可供选择:Typical(典型安装)、Complete(彻底安装)和Custom(定制安装),对于大多数用户,选择Typical就能够了。单击“next”按钮进入下一步。

(2)进入如图1.14所示的安装界面。在MySQL5.1中,数据库主目录和文件目录是分开的。其中,“DestinationFolder”为MySQL所在的目录,默认目录为C:\ProgramFiles\MySQL\MySQL Server 5.1。“Data Folder”为MySQL数据库文件和表文件所在的目录,默认目录为C:\Documents and Settings\All Users\Application Data\MySQL\MySQLServer 5.1\data,其中ApplicationData是隐藏文件夹。确认后单击“Install”按钮开始安装。

2. MySQL服务器的配置

(1)安装完毕后选择“Configure the MySQL servernow”复选框进入配置向导。第一步选择配置类型,有两种: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-TransactionalDatabase Only(只是非事务处理数据库)。其中多功能数据库对InnoDB和MyISAM表都适用,因此这里选择“MultifunctionalDatabase”。

(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 fromlocalhost(只容许从本机登陆链接root)选项旁边的框。要想建立一个匿名用户帐户,选中Create An AnonymousAccount(建立匿名帐户)选项旁边的框。因为安全缘由,这里不建议选择这项。

(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,经常使用的有NavicatLite for MySQL、phpMyAdmin、MySQL Front等。然而这些不是数据库服务器,它们只是在Windows或Linux下容许用户可以进行可视化管理的工具。

MySQL的环境

1.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:\ProgramFiles\MySQL\MySQL Server 5.1的MySQL主目录下有一个my.ini文件,这是MySQL的选项文件,在MySQL启动时会自动加载文件中的一些选项。能够经过修改选项文件来修改MySQL的一些默认设置,具体会在之后的内容中了解到。

(2)数据目录

MySQL有一个data目录,用于存放数据库文件。MySQL5.1的默认的路径为C:\Documentsand Settings\All Users\Application Data\MySQL\MySQL Server 5.1\data。在data目录中MySQL为每个数据库创建一个文件夹,全部的表文件存放在相应的数据库文件夹中。