一道面试题 :sql server 2000有哪些数据库系统,它们各自的作用是什么

一道面试题 :sql server 2000有哪些数据库系统,它们各自的作用是什么,第1张

master,model,msdb,northwind,pubs,tempdb

pubs 示例数据库

pubs 示例数据库以一个图书出版公司为模型,用于演示 Microsoft® SQL Server™ 数据库中可用的许多选项。该数据库及其中的表经常在文档内容所介绍的示例中使用。

Northwind 示例数据库

Northwind Traders 示例数据库包含一个名为 Northwind Traders 的虚构公司的销售数据,该公司从事世界各地的特产食品进出口贸易。

master 数据库

master 数据库记录 SQL Server 系统的所有系统级别信息。它记录所有的登录帐户和系统配置设置。master 数据库是这样一个数据库,它记录所有其它的数据库,其中包括数据库文件的位置。master 数据库记录 SQL Server 的初始化信息,它始终有一个可用的最新 master 数据库备份。

tempdb 数据库

tempdb 数据库保存所有的临时表和临时存储过程。它还满足任何其它的临时存储要求,例如存储 SQL Server 生成的工作表。tempdb 数据库是全局资源,所有连接到系统的用户的临时表和存储过程都存储在该数据库中。tempdb 数据库在 SQL Server 每次启动时都重新创建,因此该数据库在系统启动时总是干净的。临时表和存储过程在连接断开时自动除去,而且当系统关闭后将没有任何连接处于活动状态,因此 tempdb 数据库中没有任何内容会从 SQL Server 的一个会话保存到另一个会话。

默认情况下,在 SQL Server 在运行时 tempdb 数据库会根据需要自动增长。不过,与其它数据库不同,每次启动数据库引擎时,它会重置为其初始大小。如果为 tempdb 数据库定义的大小较小,则每次重新启动 SQL Server时,将tempdb 数据库的大小自动增加到支持工作负荷所需的大小这一工作可能会成为系统处理负荷的一部分。为避免这种开销,可以使用 ALTER DATABASE 增加 tempdb 数据库的大小。

model 数据库

model 数据库用作在系统上创建的所有数据库的模板。当发出 CREATE DATABASE 语句时,新数据库的第一部分通过复制 model 数据库中的内容创建,剩余部分由空页填充。由于 SQL Server 每次启动时都要创建 tempdb 数据库,model 数据库必须一直存在于 SQL Server 系统中。

msdb 数据库

msdb 数据库供 SQL Server 代理程序调度警报和作业以及记录 *** 作员时使用。

农业银行总行 年以来正式推广了新版网络版综合业务统计信息系统 该系统是基于WindowsNT 平台 采用客户/服务器模式 以Microsoft SQL Server为基础建立起来的大型数据库应用程序 系统界面友好 *** 作简便 计算 分析 检索功能非常强大 为保证农业银行系统及时进行纵向和横向业务数据采集 按照不同要求生成统计报表 进行全面业务活动分析提供了强有力的保障 但在这套程序的推广 维护中笔者发现系统有时运行速度较慢 特别是在Win 客户端 *** 作时尤为严重 经过排除网线连接等硬件可能带来的影响后上述问题仍然存在 笔者经过仔细摸索 发现系统对硬 软件的要求较高 为充分发挥设计效能 达到最佳运作效果 需要对计算机硬 软件系统进行较为完备的性能测试与最佳配置 特别是内存配置的好坏对系统的运行速度具有决定性的作用 下面 笔者就如何优化SQLServer数据库服务器的内存配置提出一些认识和看法 一 有关内存的基本概念 物理内存与虚拟内存WindowsNT使用两类内存 物理内存与虚拟内存 物理内存 作为RAM芯片安装在计算机内部的存储器 虚拟内存 用于模拟RAM芯片功能的磁盘(硬盘)空间 其实质是通过将内存中当前没有使用的部分内容临时存储到磁盘上 使系统可以使用到比机器物理内存更多的内存 分页和分页文件WindowsNT系统通过使用磁盘空间使得对内存的需求得到部分缓解 从而使用到比物理内存更多内存的技术就称为 交换 或分页 也就是通常所说的虚拟内存技术 通常Windows NT 系统安装时将在引导驱动器上设置一个大小为 MB的交换(分页)文件(pagefile sys) 二 优化Windows NT 系统内存配置在大多数情况下 为了充分发挥Windows NT 系统效能 内存的作用比起处理器的处理能力更具有影响力 特别是在客户/服务器模式环境下更是如此 因为通常在这种环境下并不十分强调处理器的能力 相反却十分注重是否采用足够的内存来满足各个客户的应用需要 此外 为了获得容错功能和保护应用程序 保证应用程序高速运行 充分发挥设计功能都需要有足够多的内存 特别是工业绘图设计和各种工程应用程序更需要占用大量的内存来进行复杂的计算 物理内存(RAM)方便快速的优点显而易见 但由于其价格昂贵 也就不可能做到多多益善了 因此通过合理优化内存配置 扩充虚拟内存提高计算机运算速度也就成了一项很重要的应用技术手段 保证Windows NT系统基本内存需求Windows NT 系统至小应配置 MB内存 MB内存基本够用 正常情况下保证NT系统有 MB内存就可以了 因为并不是所有的 MB基本内存在任何时候都被同时使用 如果添加一些服务和应用程序 则对内存的需求就会急剧增大 如 ( )添加网络服务需要 MB内存空间 ( )容错功能和系统保护功能需要 MB内存(如磁盘镜像和分条功能) ( )进行图形图象处理需要增加 MB内存空间 ( )安装VC VB开发系统需要增加 MB内存空间 另外 如在Windows NT上构建大型数据库如SYBASE Microsoft SQL Server等 对内存的需求就更多了 优化内存性能为了使WindowsNT不至于过分占用较多的内存或者浪费处理器的时间用于换页 可以采用以下方法优化内存性能 ( )减少显示颜色的数量 ( )降低显示分辨率 ( )尽可能不使用或使用位宽度较小的墙纸 ( )关闭不需要的服务程序或驱动程序 尽量不要在服务器上使用其它应用程序 停用服务或驱动程序的 *** 作步骤如下 ①确定需要停用的服务或驱动程序的名称 ②从 控制面板 中双击 服务 或 设备 图标 ③在列表中选择想要停用的服务或设备驱动程序的名称 单击 停止 按钮 这时出现确认 *** 作对话框 ④选择 是 确认 *** 作 然后关闭对话框完成设置 优化虚拟内存在对Windows NT虚拟内存进行设置时需要合理确定各个驱动器分页文件的 起始大小 和 最大值 两个参数 它们用于指定分页文件的起始空间和最大空间 下面对这两个参数作一些解释 起始大小 指初始创建该分页文件时的文件大小 单位为MB 根据缺省设置 这个值被设置为系统中的物理内存的大小 最大值 指出该分页文件的最大尺寸 单位为MB ( )分页文件的设置原则 ①分页文件起始大小应保留缺省设置 一般情况下请不要改动 ②分页文件理想的最大尺寸为系统物理内存尺寸的 倍至 倍 需要说明的是 如果系统工作时不需要大量内存 请选择靠近下限的值 即用系统物理内存的 倍作为这个尺寸的起始值 如果系统工作时需要大量内存 请选择靠近上限的值 ( )Windows NT虚拟内存设置步骤 ①从 控制面板 中双击 系统 图标 ②在 系统特性 对话框中单击 性能 标签 ③在虚拟内存对话框中单击 更改 按钮 这时出现 虚拟内存 对话框 上端的驱动器框逐一列出了 Windows NT所有页面文件的大小 ④在驱动器列表中 选择需要设置分页文件的驱动器盘符 在 驱动器页面文件大小 对话框中列出了 起始大小 和 最大值 两个参数栏 填入按照上面的原则确定的数值 ⑤单击 设置 确认以上 *** 作 然后依次单击 确定 按钮退出各个对话框 完成设置 ( )Win / 虚拟内存设置 Win / 虚拟内存设置方法 步骤和原则与Windows NT 的设置大致相同 请参照上面Windows NT的设置 注意事项( )合理确定分页文件的最大值 根据系统需求随时进行调整 使用过多虚拟内存将导致整个系统处理性能的下降 设置虚拟内存最大值的目的是使用户不必在WindowsNT的交换文件上消耗过多的磁盘空间 通常情况下如果超过了系统需要的最佳值后 生成交换文件的磁盘空间就被浪费了 ( )尽可能设立专用硬盘配置内存交换区 或将交换空间放到主硬盘的另一个分区 同时应将主硬盘的交换文件大小降至 MB 这样主硬盘(分区)仅用来放置 *** 作系统和应用程序 就可以减少交换次数 防止频繁交换耗费大量 CPU时间 ( )虚拟内存技术的确改善了Windows NT系统的性能 但也受到机器硬盘空间大小 硬盘速度 处理器 (CPU)速度的影响 从理想角度出发 要提高计算机的性能就必须减少交换 *** 作的次数 但是没有一个WindowsNT计算机不发生交换 这就要求计算机要有足够的物理内存 以保持最少的交换 *** 作 三 优化Microsoft SQL Server数据库内存配置内存是影响Microsoft SQL Server系统性能的一个重要因素 SQL Server数据库安装时将为具有 MB物理内存的机器缺省配置 MB可用内存 MB物理内存的机器缺省配置 MB可用内存 应在Microsoft SQL Server数据库安装后进行内存选项(Memory)设置 最大配置值为 GB 为了确定SQL Server系统最适宜的内存需求 可以从总的物理内存中减去Windows NT 需要的内存以及其它一些内存需求后综合确定 理想的情况是给SQL Server分配尽可能多的内存 而不产生页面调度 根据物理内存合理规划SQL Server可用内存在大多数的生产环境中 服务器配备的物理内存是 MB~ MB 偶尔也有 MB的 只要配置恰当是完全可以满足SQL Server的内存需求的 下表是笔者关于SQL Server内存分配的建议规划 供参考 物理内存 分配给SQL Server 设置值(单位 KB) MB MB MB MB MB ~ MB ~ MB ~ MB ~ MB ~ MB ~ MB ~ MB ~ MB ~ MB ~ MB ~ MB ~ 以下是SQL Server内存选项(Memory)设置方法( )从Microsoft SQL Server程序集中启动SQL Enterprise Manager ( )从Server Manager窗口中选择 Server 菜单选项 ( )在 Server 菜单中选择 Configurations 选项 ( )在 Server Configuration 对话框中选择 Configuration 标签 Configuration窗口显示配置选项列表 ( )选中 Memory 项目 在 Current 栏填入新值 ( )停止并重新启动SQLServer服务 使设置生效 合理扩充虚拟内存 增大SQL Server可用内存当SQL Server系统确实需要扩大可用内存时 应在磁盘空间充足的情况下扩充供虚拟内存 并相应增大 SQL Server可用内存 具体做法是 系统管理员首先扩充服务器的虚拟内存 然后再参考上表增大SQL Server可用内存 关键是要根据系统的负载情况综合决定是否扩充内存 优化配置 使用tempinRAMSQL Server使用tempdb临时数据库作为一些查询连接 *** 作时排序或创建临时表的工作空间 将tempdb创建在RAM中可以使系统 *** 作性能有较大提高 而且因为tempdb在每次重启动服务器时都重建 这样即使有非正常的关闭也是较为安全的 例如停电故障 要将tempdb创建在RAM中 可以使用sp_configure进行设置 具体用法请参阅有关资料 由于tempdbinRAM使用的内存是由系统从内存体单独分配的 与SQL Server的内存选项设置的可用内存池是分开的 使用tempdbin RAM将减少整个系统的可用内存 应根据SQL Server和服务器运行情况进行配置 否则就可能适得其反 影响系统性能 另外 适当增加tempdb数据库空间 即使不使用temp lishixinzhi/Article/program/SQLServer/201311/22052

优化Microsoft SQL Server数据库内存配置

 内存是影响Microsoft SQL Server系统性能的一个重要因素,SQL Server数据库安装

时将为具有32MB物理内存的机器缺省配置16MB可用内存,16MB物理内存的机器缺省配置4MB可

用内存。应在Microsoft SQL Server数据库安装后进行内存选项(Memory)设置,最大配置值为

 为了确定SQL Server系统最适宜的内存需求,可以从总的物理内存中减去Windows

NT40需要的内存以及其它一些内存需求后综合确定,理想的情况是给SQL Server分配尽可能

 1根据物理内存合理规划SQL Server可用内存

 在大多数的生产环境中,服务器配备的物理内存是64MB~128MB,偶尔也有256MB的,

只要配置恰当是完全可以满足SQL Server的内存需求的。下表是笔者关于SQL Server内存分配

物理内存 分配给SQL Server 设置值(单位:2KB)

8MB 4MB 2048

16MB 8MB 4096

32MB 16~18MB 8192~9216

48MB 28~34MB 14336~17408

64MB 40~46MB 20480~23552

128MB 100~108MB 51200~55296

256MB 216~226MB 110592~115712

512MB 464~472MB 237568~241664

 以下是SQL Server内存选项(Memory)设置方法

 (1)从Microsoft SQL Server程序集中启动SQL Enterprise Manager;

 (2)从Server Manager窗口中选择“Server”菜单选项;

 (3)在“Server”菜单中选择“Configurations”选项;

 (4)在“Server Configuration”对话框中选择”Configuration”标签,

 (5)选中“Memory”项目,在“Current”栏填入新值;

 (6)停止并重新启动SQLServer服务,使设置生效。

 2合理扩充虚拟内存、增大SQL Server可用内存

 当SQL Server系统确实需要扩大可用内存时,应在磁盘空间充足的情况下扩充供虚拟

内存,并相应增大 SQL Server可用内存。具体做法是,系统管理员首先扩充服务器的虚拟内

存,然后再参考上表增大SQL Server可用内存,关键是要根据系统的负载情况综合决定是否扩

 3使用tempinRAM

 SQL Server使用tempdb临时数据库作为一些查询连接 *** 作时排序或创建临时表的工作

空间。将tempdb创建在RAM中可以使系统 *** 作性能有较大提高,而且因为tempdb在每次重启动

服务器时都重建,这样即使有非正常的关闭也是较为安全的,例如停电故障。要将tempdb创建

在RAM中,可以使用sp_configure进行设置,具体用法请参阅有关资料。

 由于tempdbinRAM使用的内存是由系统从内存体单独分配的,与SQL Server的内存选

项设置的可用内存池是分开的,使用tempdbin RAM将减少整个系统的可用内存,应根据SQL

Server和服务器运行情况进行配置,否则就可能适得其反,影响系统性能。另外,适当增加

tempdb数据库空间,即使不使用tempdbin RAM,也可以提高数据库的运行速度。

 4注意事项

 (1)建议在生产环境中SQL Server不要设置小于32MB内存,而且数据库服务器上尽量

 (2)扩充供虚拟内存、增大SQL Server可用内存,应考虑物理内存使用状况和磁盘空

 (3)在可能的情况下,要为系统留有部分额外的内存,这样在服务器上打开一个服务

或添加一个进程且不改变SQL Server内存配置时,不致于使NT服务器的运行速度受到影响(变

得很慢),一般认为最小为2MB最大为20MB。

一、用户数据库搬家

*** 作方法有以下两种

方法1:在企业管理器中进行

(1)在企业管理器中选定要搬家的数据库名,在其上单击鼠标右键,出现如图1所示对话框。

(2)选中“所有任务”,在其子菜单中单击“分离数据库”。

(3)将该数据库的数据文件和日志文件从旧的位置(如D:\MSSQL\Data)拷贝到新的位置(如E:\SQLDataNew)。

(4)再在企业管理器中选中“数据库”文件夹,在其上单击鼠标右键,在出现的对话框中选中“所有任务”,在其子菜单中单击“附加数据库”。

(5)在出现的“附加数据库”对话框中,选择数据库的两个文件的新位置。

方法2:用SQL系统存储过程sp_detach_db/sp_attach_db实现

(1)使用下面语句分离数据库:

USE master

GO

EXEC sp_detach_db 'mydb'

GO

(2)将该数据库的数据文件和日志文件从旧的位置拷贝到新的位置。

(3)使用下面语句重新附加数据库:

USE master

GO

EXEC sp_attach_db

'mydb', 'E:\SQLDataNew\mydbdatamdf', 'E:\SQLDataNew\mydblogldf''

GO

二、系统数据库搬家

1.master数据库搬家

(1)由于SQL Server每次启动的时候都需要读取master数据库,因此必须在企业管理器中改变SQL Server启动参数中master数据文件和日志文件的路径。

在 SQL Server属性的“常规”选项卡下面有一个叫做“启动参数”的按钮,单击后可以看到所示的界面。

其中,-d用来指定master数据库文件的路径,而–l用来指定master数据库日志文件的路径。

删除旧的master数据库文件和日志文件的路径,添加新的master数据文件和日志文件所在的路径,如:

-dE:\ SQLDataNew \mastermdf

-lE:\ SQLDataNew \mastlogldf

(2)停止SQL Server服务,将mastermdf文件和mastlogldf文件拷贝到新的位置,如E:\ SQLDataNew文件夹中。

(3)重新启动服务即可。

小技巧:如果在“启动参数”添加的master数据库文件和日志文件的路径或文件名有误,就会造成SQL Server启动不起来。而此时想改正错误又因SQL Server启动不了而重设不了“启动参数”。其实这两个文件路径和文件名是放置在注册表HKEY_LOCAL_MACHINE\SOFWARE\Microsoft\Miccrosoft SQL Server\你安装SQL服务器的名\MSSQLServer\Parrmeters下的参数SQLArg1和SQLArg2中,修改这两个参数的值即可。

2 msdb数据库和model数据库搬家

(1)对于msdb数据库和model数据库,我们不能在企业管理器中实现分离和附加,只能用sp_detach_db和sp_attach_db存储过程来分离和附加这两个数据库。

其中,对于msdb数据库,还应确保SQL Server代理当前没有运行,否则sp_detach_db存储过程将运行失败,并返回如下消息:

“无法除去数据库 'msdb' ,因为它当前正在使用。”

(2)调出如图4所示的“启动参数”对话框,添加新参数-T3608。这样,启动SQL Server,它就不会恢复除master之外的任何数据库。

(3)重新启动SQL Server,再用下面命令分离msdb或者model数据库:

EXEC sp_detach_db 'msdb'

GO

(4)将数据文件和日志文件移到新的位置,然后再用下面命令重新附加msdb数据库或者model数据库:

USE master

GO

EXEC sp_attach_db

'msdb', ‘E:\SQLDataNew\msdbdatamdf', ' E:\SQLDataNew\msdblogldf '

GO

(5)在企业管理器中,从“启动参数”框中删除-T3608跟踪标记,再停止并重新启动SQL Server。

3 tempdb数据库搬家

对于tempdb数据库,则可以直接使用ALTER DATABASE语句来为数据文件和日志文件指定新的存放位置,如下所示:

USE master

GO

ALTER DATABASE tempdb MODIF

Y FILE (NAME=tempdev, FILENAME ='E:\SQLDataNew \tempdbmdf')

GO

ALTER DATABASE tempdb MODIF

Y FILE(NAME=templog, FILENAME=

' E:\SQLDataNew \templogldf')

GO

至此,SQL Server 中数据库全部搬家完成。

数据:计算机中用来描述事物的记录

数据模型:是一种对客观事物抽象化的表现形式。数据模型应该真实、易于理解、便于实现

建模:对客观事物加以抽象,提取主要特征,归纳成一个简单清晰的轮廓,使复杂问题变得易于处理

数据模型三要素:数据结构、数据 *** 作、完整性约束

数据结构描述静态特征,按数据结构可以把数据模型分为层次模型、网状模型、关系模型

数据 *** 作描述动态特征,数据 *** 作主要分为更新(插入、删除、修改)、检索两大类,统称增、删、改、查

完整性约束确保数据的正确性、有效性、相容性

数据库:简称DB(database),是由数据库管理系统管理的数据的聚集

数据库管理系统:简称DBMS(DataBase Management System)是专门用于建立和管理数据库的一套软件,介于应用程序和 *** 作系统之间。属于系统软件

数据库系统:简称DBS(DataBase System)。数据库、DBMS、应用程序和软件系统统称数据库系统

关系:关系就是一张二维表

关系模型:数据以关系的形式表示,就是以二维表的形式表示数据模型

属性:关系的标题栏中各列的名字

模式:关系的名称和关系的属性集

元组:二维表的所有行统称为元组,元组的各个分量对应于关系的各个属性。一个元组表示一个对象

域:关系的每个属性的取值范围

关系的实例:给定关系中元组的集合称为该关系的“实例”。一个给定的关系模式,可以有许多关系实例。

关系型数据库管理系统:简称RDBMS(Relationg DataBase Management System),采用关系数据模型的数据库管理系统。

数据库系统的体系结构的三层结构和两层映象:从数据库管理的角度出发,数据库系统的体系可分三层,外模式、模式、内模式。两层映象是,外模式/模式映象、模式/内模式映象

外模式:又称用户模式,相当于SQL中的视图(VIEW)模式,是数据库用户可以看见和使用的局部数据的逻辑结构和特征描述,是与某应用有关的数据的逻辑表示

模式:分为概念模式、逻辑模式,是所有数据库用户的公共数据视图,是数据库中全部数据的逻辑结构和特征的描述,一个数据库只有一个模式

外模式/模式映象:把局部逻辑结构描述与全局逻辑结构描述联系起来。一个模式可以与多个外模式对应联系。例如,SQL SERVER中一个关系模式上可以建立多个满足不同用户要求的视图VIEW。这种映象可以保证数据与应用程序之间的逻辑独立性,即改变模式,不影响外模式,则与外模式相关的应用程序无序修改

内模式:由称为存储模式,是数据库物理结构和存储方式的描述,是数据在数据库内部的表示方式。一个数据库只有一个内模式。内模式描述记录的存储方式、索引的组织方式、数据是否压缩、是否加密等,不涉及硬件设备。

模式/内模式映象:把全局逻辑结构描述与物理结构描述联系起来。一个模式只有一个内模式。这种映象保证了数据与程序之间的物理独立性,当内模式修改时,由于模式未变,所以无需修改程序。

DBMS的体系结构(组成):查询处理程序、存储管理程序、事务管理程序、客户/服务器程序体系结构

查询处理程序:负责查询处理,它的一个重要任务是“优化”查询。

事务管理程序:保证多个事务并发执行

存储管理程序:既管理磁盘上的数据文件又管理存放数据文件部分内容的内存数据缓冲区

客户/服务器程序体系结构:大多数DBMS程序采用这种程序体系结构,把整个DBMS程序系统划分为两部分,DBMS核心部分属于服务器程序,客户程序主要用于与用户相互配合并将查询或其他命令传送给服务器程序的查询接口。

数据库设计

数据库设计的步骤:需求分析、概念设计、逻辑设计、物理设计

需求分析和概念设计阶段的工作与具体数据库管理系统无关,这一阶段的工作独立于数据库管理系统

逻辑设计和物理设计阶段的共组与具体采用何种数据库管理系统相关。

需求分析阶段:应用领域的调查、定义信息与应用、定义 *** 作任务、定义数据项、预测未来改变,结果产生相关文档

概念设计阶段:也称为建模

任务:数据库概念模式(模式)设计、事务设计

概念模式设计的工具:E/R图。对于面向对象的数据库则可采用面向对象定义语言ODL

E/R图:称为实体-联系模型

E/R图的组成:实体集(矩形)、属性(椭圆)、联系(菱形)

联系的类型:一对一、一对多、多对多。用线条和箭头表示不同的联系。箭头指向的一方代表“一”

键码属性的表示:下划线

联系中的角色:即一个实体集内部实体之间的联系

多向联系:多个实体集之间发生的一个联系

多向联系转化为双向联系的方法:将多向联系转换成实体集,然后在原来与之联系的实体集和新的实体集之间建立新的双向联系

E/R图中的子类的表示方法和继承:如果实体集B是实体集A的子类,则它们之间用一个标有isa的三角形和两根线条建立特殊的联系。三角形的尖端指向超类(父类),子类实体集上只需标出子类特有的属性,继承父类的所有属性。

ODL对象定义语言:是用面向对象的术语来说明数据库结构的一种推荐的标准语言,主要用途是书写面向对象数据库的设计

对象:是某种可研究,可观察的实体,例如:一个人、一门课程、一本书等等

类:具有相似特性的对象可以归为一类

ODL描述的三种特性:属性(Attribute)、联系(Relationship)、方法(Method)

ODL书写规则:

interface 类名1{

attribute 数据类型1 属性名1;

attribute 数据类型2 属性名2;

relationship [Set]<类名2> 联系名1

inverse 类名2::联系名2;

}

说明:

关键字interface、attribute、relationship、<set>、inverse

常用数据类型有string(字符串)、integer(整型)、float(浮点型)、enum(枚举型)

[]中的set为任选项,当类1与类2的联系是一对一时,不需要使用set,当类1与类2的联系是一对多时必须使用set

inverse表示在类2中联系名2所表示的联系与类1中联系名1所表示的联系是多对一的对应联系

ODL例一:用ODL描述制片公司与**,假如制片公司部名称不重复。因为,一个制片公司可以制作多部影片,而一部影片只能由一个公司制作发行,所以制片公司与影片的关系是一对多的关系。

interface studio{

attribute string studioname;

attribute string address;

attribute string phone;

relationship set<movie> make

inverse movie::madeby;

}

interface movie{

attribute string movietitle;

attribute integer length;

attribute enum incolor ;

attribute integer year;

relationship set studio madeby

inverse studio::make;

}

ODL例二:用ODL描述学生与课程,一名学生可以选择多门课程来学习,一门课程可以被多名学生选修。

interface student{

attribute string sname;

attribute string address;

attribute enum gender ;

attribute integer age;

relationship set<course> choice

inverse course::choisedby;

}

interface course{

attribute string ctitle;

attribute integer credit;

relationship set<student> choisedby

inverse student::choice;

}

ODL例三:用ODL描述校长与学校的关系,一名校长只能管理一所学校,一所学校只能设一名校长。

interface chairman{

attribute string chname;

attribute enum gender ;

attribute integer age;

attribute string phone;

relationship set university manage

inverse university::leadby;

}

interface university{

attribute string unnmae;

attribute string addr;

relationship set chairman leadby

inverse chairman::manage;

}

ODL子类描述方法:自类继承父类的所有属性和联系。子类可以有自己的特殊属性和联系。子类中属性和联系的描述方法与上述例子相同。

interface 子类名:基类名

ODL子类描述例:硕士研究生类是学生的一个子类。每名硕士研究生有若干名导师,一名导师可以带多名硕士研究生。

interface student{

attribute string sname;

attribute string address;

attribute enum gender ;

attribute integer age;

}

interface master:student{

attribute string special;

relationship set<advisor> direct

inverse advisor::directedby;

}

interface advisor{

attribute string name;

attribute string address;

}

逻辑设计阶段:把概念设计阶段产生的数据库概念模式变换为数据库逻辑模式。数据库逻辑模式依赖于逻辑数据模型和数据库管理系统。目前做流行的数据库管理系统都是关系型逻辑数据模型。所以,本教程知讨论如何把概念模式转变为关系模型

逻辑设计阶段的步骤:

1概念模式转变为关系模型

2对关系模型进行规范化和优化

3适应DBMS限制条件的修改

4对性能、存储空间等的优化

1概念模式转变为关系模型

E/R图转变为关系模型的方法:

1一个实体集转变为一个关系模式,这个关系模式包含实体集所有的简单属性和复合属性的简单子属性。实体集的名称可以用作为关系模式的名称,用下划线来表示关系的键码

2一个联系转变为一个关系模式,一般情况下用联系名作为关系名,用联系的实体集的键码和联系本身的属性作为此关系模式的属性集。

E/R图转变为关系模型实例:

实例一:一个班级只能有一个班长,而且必须有一个班长,E/R图如下:

学生与班级的联系是一对一的联系(1:1)。学生实体集的键码是学号。班级实体集的键码是班号。这个E/R图可以转变为如下的关系模型

学生(学号,姓名,性别,出生日期)

班级(班号,名称,地点)

班长(学号,班号,注册)

联系反映的是具有某学号的学生担任具有某班号班级的班长。这种转变方法是常用的方法。

如果想减少查询时使用连接 *** 作的次数,提高查询效率,以上E/R图也可以转变为如下关系模型

学生(学号,姓名,性别,出生日期,班号)

班级(班号,名称,地点)

学生关系模式中的“班号”是外键码。这种关系模式中,由于学生关系中记录了所有学生的学号,但不是每个学生都担任班长(按教科书上的术语叫做不是全参与),因此不是每个元组的班号属性都有数据,即应该允许班号为空。否则,学生实体集必须是全参与,即每个学生都是班长。

实例二:一个影片公司可以制作多部影片,但是一部影片只能归一个制片公司所有。假如公司不重名,影片也不重名,则公司名称是制片公司实体集的键码,影片名是影片实体集的键码。

影片公司与影片的联系是1对多的联系(1:N)。这个E/R图可以转变为以下关系模型

影片公司(公司名称,地点)

影片(影片名,片长)

制作(公司名称,影片名)

同样,假如影片公司是全参与,即每个影片公司至少制作了一部**,则可以转变为以下关系模型

影片公司(公司名称,地点,影片名)

影片(影片名,片长)

其中,影片公司关系中的影片名是外键码

实例三:学生与课程之间的联系是“选修”。一个学生可以选多门课程,一门课程可以被多名学生选修,所以它们之间的“选修”联系是多对多(N:M)

上述E/R图可以转变为以下关系模型

学生(学号,姓名)

课程(课程号,课程名)

选修(学号,课程号,成绩)

选修关系中的学号和课程号是外键码

2对关系模型进行规范化和优化

为什麽要把关系模型规范化:为了有效地消除关系中存在的数据冗余和更新异常等现象

基本概念

函数依赖:如果关系R的两个元组在属性A1,A2,An上一致,则它们的另一个属性B上也一致,那末,我们就说在关系R中属性B函数地依赖于属性A1,A2,An或者说属性A1,A2,An函数决定属性B。

关系的键码:

如果一个或多个属性的集合满足如下条件,则称该集合为关系R的键码(key):

1这些属性函数决定该关系的所有其它属性。

2的任何真子集都不能函数决定R的所有其它属性。

关系的超键码:包含键码的属性集称为超键码,是“键码的超集”的简称

函数依赖规则:分解/合并规则、传递规则、平凡依赖规则

平凡依赖:对于函数依赖A1,A2,An->B,如果B是A中的某一个,我们称这种依赖是平凡依赖

非平凡依赖:对于函数依赖A1,A2,An->B,如后B中至少有一个不在A中,我们称这种依赖是非平凡依赖

完全非平凡依赖:对于函数依赖A1,A2,An->B,B中没有一个在A中,我们称这种依赖是完全非平凡依赖

主属性:键码所在的属性

非主属性:键码以外的属性

封闭集(闭包)对于给定的函数依赖集S,属性集A函数决定的属性集合就是属性集A在依赖集S下的封闭集

范式就是符合某一种级别的关系模式的集合。

规范化通过分解把属于低级范式的关系模式转换为几个属于高级范式的关系模式的集合,这一过程称为规范化

1范式(1NF),如果一个关系模式R的所有属性都是不可分割的基本数据项,则这个关系属于1NF

2范式(2NF),若关系模式R属于1NF,且每个非主属性都完全依赖于键码,则R属于2NF

3范式(3NF),若关系模式R属于1NF,且每个非主属性都不传递依赖于键码,则R属于3NF

BC范式(BCNF),若关系模式属于1NF,且R的每个非平凡依赖的决定因素都包含键码,则R属于BCNF

规范化分解原则:无损连接、保持依赖

无损连接:当对关系模式R进行分解时,R的元组将分别在相应属性集进行投影而产生新的关系,如果对新的关系进行自然连接得到的元组的集合与原关系完全一致,则称为无损连接

保持依赖:如果分解后的总的函数依赖集与原函数依赖集保持一致,则称为保持依赖。

模式分解的两个规则:公共属性共享、相关属性合一

公共属性共享:保留公共属性,进行自然连接是分解后的模式实现无损连接的必要条件

相关属性合一:把以函数依赖的形式联系在一起的相关属性放在一个模式中,从而使原有的函数依赖得以保持,这是分解后的模式实现保持依赖的充分条件

模式分解的三种方法

一、部分依赖归子集;完全依赖随键码——用于建立2NF

例:关系R(A,B,C,D,E,F,G)上存在函数依赖,A->BCD,E->F,AE->G,AE->BCD,AE->F

分析以上依赖可以看出,AE是键码(AE->BCD)。因为AE是键码,A是主属性,A->BCD,所以BCD是部分依赖于AE

根据部分依赖归子集的方法,因为A是AE的真子集,所以A与BCD归在一起构成一个关系模式。R1(A,B,C,D)

同理对于AE->F,有E->F所以AE->F是部分依赖,非主属性F所依赖的真子集是E,所以E和F可以归在一个关系模式中R2(E,F)

AE->G是完全函数依赖,完全依赖随键码,所以AEG归在一个关系模式中R3(A,E,G)

因此R(A,B,C,D,E,F,G)可以分解为符合2NF的关系模式如下:

R1(A,B,C,D)

R2(E,F)

R3(A,E,G)

二、基本依赖为基础,中间属性做桥梁——用于建立3NF

例:关系R(A,B,C,D,E)上存在函数依赖,AB->C,C->D,D->E

显然中间桥梁是C->D,他构成了传递依赖链,因此,R可以分解为R1(A,B,C),R2(C,D)。分解后在R1,R2中都不存在传递依赖。

三、找违例自成一体,舍其右全集归一;若发现仍有违例,再回首如法炮制——用于建立BCNF

BCNF违例:违背BC范式的函数依赖称为BC范式违例

例:关系R(A,B,C,D,E)的键码是AB,有函数依赖AB->CDE,ABC->E,C->D

分析上述三个函数依赖可以看出,C->D是BCNF违例。因为它的决定因素不包含键码。我们作如下分解

违例自成一体,即CD构成一个关系模式R1(C,D)

舍其右全集归一,即从R的属性中取掉C->D的右边的属性D,其左边的属性C与其他所有属性构成一个新的关系R2(A,B,C,E)

新的关系模式如下:

R1(C,D)

R2(A,B,C,E)

注意:以BCNF违例为基础进行模式分解,最终得到的属于BCNF的关系模式都能实现无损连接,但未必能保持函数依赖

逻辑设计例一:假如有关系模式R(A,B,C,D)和函数依赖集S=。

(1)找出所有BCNF违例。

(2)如果该关系模式不是BCNF,则将它分解为BCNF

(3)找出所有的违背3NF的依赖

(4)如果该关系不是3NF,则将它分解为3NF

步骤一:找出R在S上的所有非平凡依赖,首先计算封闭集

单属性封闭集:A+=A,B+=BCD,C+=C,D+=D

双属性封闭集:AB+=ABCD,AC+=AC,AD+=AD,BC+=BCD,BD+=BCD,CD+=CD

三属性封闭集:ABC+=ABCD,ABD+=ABCD,BCD+=BCD,ACD+=ACD

四属性封闭集:ABCD+=ABCD

步骤二:根据计算所得的封闭集,找出键码和超键码

键码:AB

超键码:ABC,ABD,ABCD

步骤三:找出所有的非平凡函数依赖

B->C,B->D,AB->C,AB->D,BC->D,BD->C,ABC->D,ABD->C

其中,AB->C,AB->D,ABC->D,ABD->C不是BCNF违例,因为前两个依赖的决定因素本身就是键码,而后两个依赖的决定因素包含键码。所以,B->C,B->D,BC->D,BD->C是BCNF违例,因为它们的决定因素都不包含键码。实际上可以看出R不是2NF,因为存在部分函数依赖:ABC->D,ABD->C,AB->C,AB->D,B->C,B->D

步骤四:进行BCNF规范。BCNF违例自成一体。从以上BCNF违例中选择B->C自成一体

R1(B,C)

舍其右全集归一,即舍去B->C的右边属性C,所以得到

R2(A,B,D)

但是在R2中还存在BCNF违例B->D,因此B->D自成一体,得到R21(B,D),舍其右全集归一得到R22(A,B)

最后得到的关系模式是:R1(B,C),R21(B,D),R22(A,B)

通过关系模式分解,把一个非2NF的关系模式归范成一个BCNF。代价是,在实际 *** 作中增加了连接 *** 作。

(3)B->C,B->D,B不是键码也不是超键码,而C,D都是键码以外的属性,即是非主属性。所以R不是3NF。

逻辑设计例二:有关系R(A,B,C,D)和函数依赖集S=

(1)找出所有BCNF违例。

(2)如果该关系模式不是BCNF,则将它分解为BCNF

(3)找出所有的违背3NF的依赖

(4)如果该关系不是3NF,则将它分解为3NF

步骤一:找出R在S上的所有非平凡依赖,首先计算封闭集

单属性封闭集:A+=ABCD,B+=ABCD,C+=ABCD,D+=ABCD

双属性封闭集:AB+=ABCD,AC+=ABCD,AD+=ABCD,BC+=ABCD,BD+=ABCD,CD+=ABCD

三属性封闭集:ABC+=ABCD,ABD+=ABCD,BCD+=ABCD,ACD+=ABCD

四属性封闭集:ABCD+=ABCD

步骤二:找出所有非平凡函数依赖

A->B,A->C,A->D,B->A,B->C,B->D,C->A,C->B,C->D,D->A,D->B,D->C

AB->C,AB->D,AC->B,AC->D,AD->B,AD->C,BC->A,BC->D,BD->A,BD->C,CD->A,CD->B

ABC->D,ABD->C,BCD->A,ACD->B

步骤三:找出键码和超键码

键码:A,B,C,D

超键码:AB,AC,AD,BC,BD,CD,ABC,ABD,BCD,ACD,ABCD

根据以上结果分析,R是3NF也是BCNF

3NF要求不存在每个非主属性对于键码的部分依赖或传递依赖

练习:对于

1R(A,B,C,D)和函数依赖集S=

2R(A,B,C,D,E)和函数依赖集S=

3R(A,B,C,D,E)和函数依赖集S=

(1)找出所有BCNF违例。

(2)如果该关系模式不是BCNF,则将它分解为BCNF

物理设计阶段:任务是在数据库逻辑设计的基础上,为每个关系模式选择合适的存储结构和存取路径

物理设计阶段步骤:

(1)分析影响数据库物理设计的因素;

(2)为关系模

请参考

先给大家巩固tempdb的基础知识

简介:

tempdb是SQLServer的系统数据库一直都是SQLServer的重要组成部分,用来存储临时对象。可以简单理解tempdb是SQLServer的速写板。应用程序与数据库都可以使用tempdb作为临时的数据存储区。一个实例的所有用户都共享一个Tempdb。很明显,这样的设计不是很好。当多个应用程序的数据库部署在同一台服务器上的时候,应用程序共享tempdb,如果开发人员不注意对Tempdb的使用就会造成这些数据库相互影响从而影响应用程序。

特性:

1、 tempdb中的任何数据在系统重新启动之后都不会持久存在。因为实际上每次SQLServer启动的时候都会重新创建tempdb。这个特性就说明tempdb不需要恢复。

2、 tempdb始终设置为“simple”的恢复模式,当你尝试修改时都会报错。也就是说已提交事务的事务日志记录在每个检查点后都标记为重用。

3、 tempdb也只能有一个filegroup,不能增加更多文件组。

4、 tempdb被用来存储三种类型的对象:用户对象,内部对象、版本存储区

接下来围绕主题展示问题分析:

1SQL Server系统数据库介绍

SQL Server有四个重要的系统级数据库:master,model,msdb,tempdb

master:记录SQL Server系统的所有系统级信息,包括实例范围的元数据,端点,链接服务器和系统配置设置,还记录其他数据库是否存在以及这些数据问文件的位置等等如果master不可用,数据库将不能启动

model:用在SQL Server 实例上创建的所有数据库的模板。因为每次启动 SQL Server 时都会创建 tempdb,所以 model 数据库必须始终存在于 SQL Server 系统中。

msdb:由SQL Server 代理用来计划警报和作业。

tempdb:是连接到 SQL Server 实例的所有用户都可用的全局资源,它保存所有临时表,临时工作表,临时存储过程,临时存储大的类型,中间结果集,表变量和游标等。另外,它还用来满足所有其他临时存储要求

2tempdb内在运行原理

与其他SQL Server数据库不同的是,tempdb在SQL Server停掉,重启时会自动的drop,re-create 根据model数据库会默认建立一个新的8MB(mdf file:8MB;ldf file:1MB, autogtouth设置为10%)大小recovery model为simple的tempdb数据库

tempdb数据库建立之后,DBA可以在其他的数据库中建立数据对象,临时表,临时存储过程,表变量等会加到tempdb中在tempdb活动很频繁时,能够自动的增长,因为是simple的recovery model,会最小化日志记录,日志也会不断的截断

3如何合理的优化tempdb以提高SQL Server的性能

如果SQL Server对tempdb访问不频繁,tempdb对数据库不会产生影响;相反如果访问很频繁,loading就会加重,tempdb的性能就会对整个DB产生重要的影响优化tempdb的性能变的很重要的,尤其对于大型数据库

注:在优化tempdb之前,请先考虑tempdb对SQL Server性能产生多大的影响,评估遇到的问题以及可行性

31最小化的使用tempdb

SQL Server中很多的活动都活发生在tempdb中,所以在某种情况可以减少多对tempdb的过度使用,以提高SQL Server的整体性能

如下有几处用到tempdb的地方:

(1)用户建立的临时表如果能够避免不用,就尽量避免 如果使用临时表储存大量的数据且频繁访问,考虑添加index以增加查询效率

(2)Schedule jobs如DBCC CHECKDB会占用系统较多的资源,较多的使用tempdb最好在SQL Server loading比较轻的时候做

(3)Cursors游标会严重影响性能应当尽量避免使用

(4)CTE(Common Table Expression)也会在tempdb中执行

(5)SORT_INT_TEMPDB建立index时会有此选项

(6)Index online rebuild

(7)临时工作表及中间结果集如JOIN时产生的

(8)排序的结果

(9)AFTER and INSTEAD OF triggers

不可能避免使用tempdb,如果有tempdb的瓶颈或issue,就该返回来考虑这些问题了

32重新分配tempdb的空间大小

在SQL Server重启时会自动建立8MB大小的tempdb,自动增长默认为10% 对于小型的数据库来说,8MB大小已经足够了但是对于较大型的数据库来说,8MB远远不能满足SQL Server频繁活动的需要,因此会按照10%的比例增加,比如说需要1GB,则会需要较长的时间,此段时间会严重影响SQL Server的性能 建议在SQL Server启动时设置tempdb的初始化的大小(如下设置为MDF:300MB,LDF:50MB),也可以通过ALTER DATABASE来实现 这样在SQL Server在重启时tempdb就会有足够多的空间可利用,从而提高效率

收缩 Tempdb 的方法

此方法要求您重新启动 SQL Server。

1 停止 SQL Server。打开命令提示符,然后键入以下命令启动 SQL Server:

sqlservr -c -f

-c 和 -f 参数使 SQL Server 以最小配置模式启动,让数据文件的 tempdb 大小为 1 MB,日志文件的 tempdb 为 05 MB。

注意:如果使用 SQL Server 命名实例,必须切换到适当的文件夹 (Program Files/Microsoft SQL Server/MSSQL$instance name/Binn),并使用 -s 开关 (-s%instance_name%)。

2 用查询分析器连接到 SQL Server,然后运行下列 Transact-SQL 命令: ALTER DATABASE tempdb MODIFY FILE

(NAME = 'tempdev', SIZE = target_size_in_MB)

--Desired target size for the data file

ALTER DATABASE tempdb MODIFY FILE

(NAME = 'templog', SIZE = target_size_in_MB)

--Desired target size for the log file

3 通过在命令提示符窗口中按 Ctrl-C 停止 SQL Server,将 SQL Server 作为服务重新启动,然后验证 Tempdbmdf 和 Templogldf 文件的大小。

此方法的局限是它只能对默认的 tempdb 逻辑文件 tempdev 和 templog 进行 *** 作。如果将其他文件添加到了 tempdb,您可以在将 SQL Server 作为服务重新启动后收缩它们。在启动过程中将重新创建所有 tempdb 文件;因此,它们是空的并可删除。要删除 tempdb 中的其他文件,请使用带有 REMOVE FILE 选项的 ALTER DATABASE 命令。

以上就是关于一道面试题 :sql server 2000有哪些数据库系统,它们各自的作用是什么全部的内容,包括:一道面试题 :sql server 2000有哪些数据库系统,它们各自的作用是什么、浅谈优化SQLServer数据库服务器内存配置的策略、优化sqlserver数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/10162264.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存