第03章 数据库的基本使用——数据库及表的创建_第3稿
- 格式:doc
- 大小:1.93 MB
- 文档页数:48
第三章数据库的基本使用——数据库及表的创建本章将根据《晓灵学生管理系统开发文档》对晓灵学生管理系统所用的数据库进行物理实现。
本章以数据库的物理实现为主线,介绍数据库系统的存储结构、在SQL Server2000数据库系统中数据库、数据表的创建、修改、删除和查看相关信息的方法及使用技巧。
我们不能光说不练,下面我们就先来了解一下SQL Server2000关系数据库的存储结构,然后建立相关的数据库和各基本表。
3.1了解数据库系统的存储结构为了实现《晓灵学生管理系统》,需要建立系统开发环境,这就必须要在计算机中使用SQL Server2000数据库系统软件创建一个符合需求的数据库,并且要在数据库中创建相关的表格来存储和管理数据。
3.1.1 任务的提出经过几天的忙碌和学习,晓灵在郝老师的指导下完成了《晓灵学生管理系统》的开发准备文档,并规划出了系统的实体模型和关系模型。
晓灵打算下一步就要根据设计好的方案开始在计算机中创建数据库和表,真正在计算机上实现数据库和表的物理创建。
晓灵打开了计算机,在开始菜单中找到了已经安装好的SQL Server2000数据库管理系统并打开了企业管理器。
在管理器左边的树状列表中,晓灵看到了一个名字为“数据库”的文件夹,应该就是在这里创建数据库吧,她试着点了一下左边的小加号,数据库里面的内容展开了,咦?怎么已经有了6个数据库了?这些数据库是干什么用的呢?我是在这些数据库进行修改呢,还是需要新创建一个呢?晓灵又点开一个数据库,哈,里面还有好多东西呢,这些都有什么用呢?爱动脑筋的晓灵带着这些问题来到了郝老师的办公室。
“郝老师您好,我又有一些问题要请教您了。
”“噢,是晓灵啊,快来,遇到什么困难了?”,“郝老师,咱们已经把学生管理系统的文档和模型都设计好了,我想在计算机中把它们创建出来,昨天我打开了企业管理器,我发现里面已经有了几个数据库了,它们是做什么用的呢?我能使用它们吗?如果不能,我如何创建自己的数据库呢?还有每个数据库里都有好多的东西,它们都是干什么用的呀,这些内容在计算机中到底是以什么方式存储在一起的呢?”晓灵一口气提出了好几个问题。
郝老师笑了笑说:“晓灵呀,别急。
数据库里的学问可大着呢,你提的这些问题很好,咱们呀就从头开始,看看数据库是如何存储在计算机中的”。
3.1.2 解决方案要想弄清楚晓灵提出的这些问题,我们要弄明白如下的内容:1. 数据库系统在计算机中的存储结构,数据库文件的构成2. 什么是系统数据库,系统数据库的功能3. 创建用户数据库前的考虑4. 创建用户数据库的方法5. 数据库都包含哪些对象,各个对象的功能6. 创建表对象的方法7. 管理和维护数据库及数据库对象的方法3.1.3 SQL Server2000数据库架构数据库是SQL Server2000存放数据库对象的逻辑实体,是数据库服务器的主要组件,是数据库管理系统的核心。
在使用数据库的时候,我们所使用的主要是逻辑组件,如表、视图、存储过程等,而其物理表现形式则是存储在某个磁盘路径下的操作系统文件。
作为一名数据库管理员,在创建数据库之前,首先应理解数据库的各个组成部分及设计方法,以确保所设计的数据库在实现后,能够高效地运行。
SQL Server2000数据库管理系统使用一组相互关联的操作系统文件来存放数据库中的数据及其他数据库对象。
这些操作系统文件可以是数据文件或日志文件。
数据文件用于保存数据和数据库对象信息,日志文件用于记录SQL Server2000所有的事务和由这些事务引起的数据库的变化信息。
创建数据库的过程实际上就是为数据库提供名称、存储路径、大小和所存放的数据库文件的过程。
SQL Server2000能够支持多个数据库,每个数据库都有自己独立的操作系统文件用以存储数据库中的数据。
图3-1 SQL Server2000数据库架构3.1.4 SQL Server2000数据库对象数据库对象就是存储和管理数据的结构形式, SQL Server2000 数据库中的数据在逻辑上被组织成一系列对象,当一个用户连接到数据库后,他所看到的是这些逻辑对象,而不是物理的数据库文件,设计数据库的过程就是设计这些数据库对象的过程。
SQL Server2000中有以下数据库对象:关系图(diagrams)、表(table)、视图(view)、存储过程(stored procedures)、用户(users)、用户自定义数据类型(user-defined data types)、用户自定义函数(user-defined functions)、规则(constraints)、默认值(defaults)等。
如图3-2所示:图3-2数据库对象创建数据库之前,应理解数据库的对象的作用和如何设计这些对象,以使数据库能够很好地工作。
关系图(diagrams)包含了数据库中关系图表的内容,用来描述数据库中表和表之间的相互关系。
表(table)中存储了系统和用户的特定数据,是最基本最不可缺少的数据库对象。
视图(view)包含了数据库中用户定义的视图信息。
视图是一种虚拟表,用于查看数据库中一个或多个表中的数据。
视图是建立在表的基础之上,SQL Server2000只保存视图的定义信息,而不保存与视图相关的数据信息,以select 语句的形式存在。
存储过程(stored procedures)是一组在服务器端执行的预编译的T-SQL语句,可以安全高效的完成指定的操作。
用户(users)中包含的是经过授权的可以执行相应数据库操作的用户信息,只有经过授权的用户才能完成指定的数据库任务。
规则(constraints)和默认值(defaults)是数据库中一种完整性对象,作用在表上,限制表中列值的取值范围或为表中的某个列提供默认的常量值,以此保证输入值的有效性。
数据库对象的创建及使用方法将在后面的章节中详细介绍,在此不在赘述。
3.1.5 数据库存储结构3.1.5.1 数据库文件和文件组1. 文件在前面已经讲过, SQL Server2000使用一组操作系统文件来存放数据库中的数据。
这些操作系统文件有两种形式,一种是数据文件,一种是日志文件。
其中数据文件又可分为主数据文件和次数据文件两种。
这些文件在数据库中的具体功能为:●主(数据)文件:主文件是数据库的起点并指向数据库的其余文件,主数据文件包含数据库的启动信息。
每一个数据库必须有一个主数据文件。
主数据文件的推荐扩展名为.mdf●次(数据)文件:次文件由除主文件之外的所有数据文件组成,这些文件包括主数据文件中不包含的所有数据。
一个数据库可以没有也可以有多个次数据文件。
次数据文件的推荐扩展名为.ndf●事务日志文件:日志文件含有恢复数据库的所有日志信息。
每个数据库至少要有一个日志文件,也可以有多个日志文件。
此类文件的推荐扩展名为.ldf SQL Server文件有两个名字:逻辑文件名是在T-SQL语句中引用文件时使用的文件名。
逻辑文件名必须遵循SQL Server的命名规则且必须唯一。
操作系统文件名是物理文件名。
它必须服从Microsoft Windows操作系统的文件名命名规则,默认情况下数据库文件存放在\MSSQL\data目录下。
SQL Server2000数据库文件的大小可以随着数据的增加而增长,在定义数据库时可以指定每个文件的初始大小和最大值。
如果没有指定最大值,那么随着数据库中数据的增加,文件可以一直增长直到用完磁盘上的所有可用空间。
2. 文件组文件组就是文件的集合。
为了管理和数据分配的原因,文件组允许多个数据库文件组成一个组,对它们整体进行管理。
例如,可以将三个文件(data1.mdf,data2.ndf,data3.ndf)分别创建在三个磁盘驱动器上,并将它们指定到一个文件组fgroup1中。
在创建表的时候,可以指定一个表放在文件组fgroup1上。
这样该表的数据就可以分布在三个盘上,在对该表执行查询时,可以并行操作,大大提高了查询效率。
SQL Server 有以下三种文件组:●主文件组:主文件组包含主数据文件和任何其他不属于另一个文件组的文件。
系统表的所有页面都分配在主文件组中。
●用户定义的文件组:用户定义的文件组是在CREATE DATABASE或ALTERDATABASE语句中使用FILEGROUP关键字指定的任何文件组。
●默认文件组:默认文件组包含所有在创建时没有指定文件组的表和索引的页面。
在每个数据库中,同一时刻只能有一个默认文件组。
如果没有指定默认文件组,那么主文件组将默认为默认文件组。
3. 文件和文件组规则使用文件和文件组时,应该考虑下列事情:●一个文件或文件组只能用于一个数据库,不能用于多个数据库●一个文件只能是某一个文件组的成员。
●一个数据库的数据信息和事务日志信息不能放在同一个文件或文件组中,数据文件和日志文件总是分开的。
●事务日志文件不能成为任何文件组的成员,☺注意:大多数情况下,一个数据库只需要一个数据文件和一个事务日志文件就能很好的运行,因此建议在设计数据库时尽量简化数据的输入输出。
如果系统的输入输出比较频繁,且要求使用多个物理磁盘驱动器,则建议使用用户自定义的文件组,将这些数据分散到磁盘或磁盘阵列中,实现并行输入输出提高系统性能。
3.1.5.2 数据库物理存储结构数据的物理空间在文件之间的分配是通过簇按比例分配的。
例如,如果文件data1有10m的存储空间,文件data2有20m的存储空间。
当SQL Server2000进行空间分配时,为文件1分配一个簇,为文件2分配两个簇。
这样保证两个文件存储空间的使用平衡。
而簇则由“页”构成,“页”是Microsoft SQL Server2000可管理的最小空间,每一个页的大小是8KB,即8192字节。
在表中,每一行数据不能跨页存储。
这样,表中每一行的字节数不能超过8192个字节。
每8个连续页称为一个簇,即簇的大小是64KB。
如图3-3所示:图3-3数据存储结构3.1.5.3 数据库与事务日志事务就是一个单元的工作,该单元的工作要么全部完成,要么全部不完成。
通过事务功能来保证数据库操作的一致性和完整性。
SQL Server2000通过事务日志来实现事务的功能。
每个数据库都有一个相关的事务日志,事务日志记录了SQL Server2000所有的事务和由这些事务引起的数据库的变化。
包括每一个事务的开始、对数据的改变和取消修改等信息。
在数据库中数据的任何改变写到磁盘之前,这个改变首先在事务日志中做了记录,所以事务日志可以具有以下三个作用●恢复单个事务:当执行ROLLBACK语句,或SQL Server发现错误时,回滚未完成的事务所做的修改●在SQL Server启动时恢复所有未完成的事务:当SQL Server出错停机时,事务的改变可能一部分被写入数据库文件,而另一部分还没有被写入,这样就造成了数据库中数据的不一致。