数据库系统管理与维护课件_第1页
数据库系统管理与维护课件_第2页
数据库系统管理与维护课件_第3页
数据库系统管理与维护课件_第4页
数据库系统管理与维护课件_第5页
已阅读5页,还剩730页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1第八章SQLServer权限管理SQLServer的身份验证创建和管理用户登录的方法固定服务器角色和服务器角色管理数据库权限的方法2SQLServer2000安全模式SQLServer2000的安全性管理是建立在认证(authentication)和访问许可(permission)两者机制上的。认证是指来确定登录SQLServer的用户的登录账号和密码是否正确,以此来验证其是否具有连接SQLServer的权限。但是通过认证阶段并不代表能够访问SQLServer中的数据,用户只有在获取访问数据库的权限之后,才能够对服务器上的数据库进行权限许可下的各种操作(主要是针对数据库对象如表、视图、存储过程等),这种用户访问数据库权限的设置是通过用户账号来实现的。同时在SQLServer中,角色作为用户组的代替物大大地简化了安全性管理。所以在SQLServer的安全模型中包括以下几部分:SQLServer登录、数据库用户、权限、角色

3SQLServer2000登录认证安全帐户认证是用来确认登录SQLServer的用户的登录帐号和密码的正确性,由此来验证其是否具有连接SQLServer的权限。SQLServer2000提供了两种确认用户的认证模式:Windows身份验证模式混合模式4Windows身份验证SQLServer数据库系统通常运行在WindowsNT/2000服务器平台上,而NT作为网络操作系统,本身就具备管理登录、验证用户合法性的能力,因此Windows身份验证模式正是利用了这一用户安全性和帐号管理的机制,允许SQLServer也可以使用NT/2000的用户名和口令。在这种模式下,用户只需要通过WindowsNT/2000的认证,就可以连接到SQLServer,而SQLServer本身也就不需要管理一套登录数据。当SQLServer实例在windows98/Me版上运行时,windows身份验证模式不可用。5SQLServer身份验证在该认证模式下,用户在连接SQLServer时必须提供登录名和登录密码。这些登录信息存储在系统表syslogins中,与NT的登录账号无关,SQLServer自己执行认证处理。如果输入的登录信息与系统表syslogins中的某条记录相匹配,则表明登录成功。提供SQLServer身份验证是为了向后兼容性,同时也因为windows98上不支持windows身份验证模式。6Windows身份验证的优点WINDOWS认证模式比起SQLServer认证模式来有许多优点,原因在于WNDOWS认证模式集成了NT或WINDOWS2000的安全系统,并且NT安全管理具有众多特征,如安全合法性、口令加密、对密码最小长度进行限制等。所以当用户试图登录到SQLServer时,它从NT或WNDOWS2000的网络安全属性中获取登录用户的账号与密码,并使用NT或WINDWOS2000验证账号和密码的机制来检验登录的合法性,从而提高了SQLServer的安全性。在WINDOWSNT中使用了用户组,所以当使用WINDOWS认证时,我们总是把用户归入一定的NT用户组,以便当在SQLServer中对NT用户组进行数据库访问权限设置时,能够把这种权限设置传递给单一用户。而且当新增加一个登录用户时,也总把它归入某一NT用户组。这种方法可以使用户更为方便地加入到系统中,并消除了逐一为每一个用户进行数据库访问权限设置而带来的不必要的工作量。7混合认证模式在混合认证模式下,WINDOWS认证和SQLServer认证这两种认证模式都是可用的。NT的用户既可以使用NT认证,也可以使用SQLServer认证。8选择身份验证模式基于windows和SQLServer有两种身份验证模式可选:windows身份验证模式和混合模式。若选择windows身份验证模式,则用户只能使用windows身份验证联接到SQLServer;若选择混合模式,则用户既可以windows身份验证连接到SQLServer,又可以使用SQLServer身份验证连接到SQLServer。9利用企业管理器选择身份验证模式其主要过程如下:1.打开企业管理器,选择服务器组中希望设置身份验证模式的服务器。。2.在该服务器上单击右键,从快捷菜单中选择“属性”选项,打开SQLServer属性对话框。3、在对话框中选择“安全性”选项。3.在身份验证区域中可以选择要设置的认证模式:混合身份验证模式和仅windows。同时可以选择审核级别中的一个:10

无:表示禁用审核成功:表示只审核成功登录尝试。失败:表示只审核失败登录尝试。全部:表示既审核成功登录尝试又审核失败登录尝试。5、单击“确定”按钮,则完成了身份验证模式的选择和设置。11创建和管理用户登录通过认证阶段并不代表用户能够访问SQLServer中的数据,同时他还必须通过许可确认。用户只有在具有访问数据库的权限之后,才能够对服务器上的数据库进行权限许可下的各种操作,这种用户访问数据库权限的设置是通过用户帐号来实现的。12服务器登录帐号和用户帐号管理1.SQLServer服务器登录管理SQLServer有三个默认的用户登录帐号:即sa、administrators\builtin和guest。2.用户帐号管理131.利用企业管理器创建、管理SQLServer登录帐号其具体执行步骤如下:(1)打开企业管理器,单击需要登录的服务器左边的“+”号,然后展开安全性文件夹。(2)用右键单击“登录”,从快捷菜单中选择新建登录(newlogin)选项,则出现SQLServer登录属性—新建登录对话框,如图1所示。(3)在名称编辑框中输入登录名,在身份验证选项栏中选择新建的用户帐号是WindowsNT认证模式,还是SQLServer认证模式。14(4)选择服务器角色标签,图2所示,在服务器角色列表框中,列出了系统的固定服务器角色。在该选项内选择将分配给登录帐户的固定服务器角色。(5)选择数据库访问标签,如图3所示。上面的列表框列出了该帐号可以访问的数据库,单击数据库左边的复选框,表示该用户可以访问相应的数据库以及该帐号在数据库中的用户名。下面是该用户在数据库中的角色。(6)设置完成后,单击“确定”按钮即可完成登录帐号的创建。15图1新建登录帐号对话框16图2服务器角色对话框17图3数据库访问对话框18使用SQLServer的创建登录向导工具创建登录帐号。其具体操作过程如下:图4--图1019图4欢迎使用创建登录向导对话框20图5选择身份验证模式对话框21图6选择对用户帐号的安全性设置对话框22图7输入登录信息对话框23图8选择安全性角色对话框24图9选择允许登录帐号访问的数据库对话框25图10完成创建登录向导对话框26服务器角色服务器角色是指根据SQLServer的管理任务,以及这些任务相对的重要性等级来把具有SQLServer管理职能的用户划分为不同的用户组,每一组所具有的管理SQLServer的权限都是SQLServer内置的,即不能对其进行添加、修改和删除,只能向其中加入用户或者其他角色。27七种常用的固定服务器角色系统管理员:拥有SQLServer所有的权限许可。服务器管理员:管理SQLServer服务器端的设置。磁盘管理员:管理磁盘文件。进程管理员:管理SQLServer系统进程。安全管理员:管理和审核SQLServer系统登录。安装管理员:增加、删除连接服务器,建立数据库复制以及管理扩展存储过程。数据库创建者:创建数据库,并对数据库进行修改。28数据库角色数据库角色是为某一用户或某一组用户授予不同级别的管理或访问数据库以及数据库对象的权限,这些权限是数据库专有的,并且还可以使一个用户具有属于同一数据库的多个角色。SQLServer提供了两种类型的数据库角色:即固定的数据库角色和用户自定义的数据库角色。29固定的数据库角色public:维护全部默认许可。db_owner:数据库的所有者,可以对所拥有的数据库执行任何操作。db_accessadmin:可以增加或者删除数据库用户、工作组和角色。(使用sp_grantdbaccess存储过程)db_ddladmin:可以增加、删除和修改数据库中的任何对象。(使用creat、alter和drop语句)db_securityadmin:执行语句许可和对象许可。(使用grant、revoke和deny语句)db_backupoperator:可以备份和恢复数据库。(使用DBCC、CheckPoint和Backup语句)30db_datareader:能且仅能对数据库中的任何表执行select操作,从而读取所有表的信息。(有Select权限)db_datawriter:能够增加、修改和删除表中的数据,但不能进行select操作。(可以对表或视图使用insert、update和delete语句)db_denydatareader:不能读取数据库中任何表中的数据。db_denydatawriter:不能对数据库中的任何表执行增加、修改和删除数据操作。31可以使用sp_helpdbfixedrole系统存储命令查看这9种固定数据库角色。Public数据库角色:是SqlServer中一个特殊的数据库角色。它有如下特点:捕获数据库中用户的所有默认权限。无法将用户、组或角色指派给它,因为默认情况下它们就属于该角色。含在每个数据库中,包括master、msdb、tempdb、model以及所有用户数据库中无法删除。32使用企业管理器管理用户登录可以在企业管理器中,为数据库角色添加/删除一个或多个登录。步骤:1、在企业管理器中,展开指定的服务器以及指定的数据库。2、展开该数据库节点的下一级节点“角色”3、在需要添加登录的数据库角色上单击鼠标右键,然后从弹出菜单中选择命令“属性”。此时弹出“数据库角色属性”对话框,在该对话框中显示了该数据库角色所包含的所有登录帐号。4、若希望将一个登录从该数据库角色中删除,选中该登录帐号,按“删除”按钮即可。若希望添加,则按“添加”按钮。5、单击“权限”按钮可以从弹出的窗口中查看该数据库角色的所有权限。若该数据库角色是自定义的数据库角色,还可对这些权限进行修改。6、单击“确定”按钮,结束。33使用系统存储过程管理登录帐户sp_addrolemember:向数据库角色中添加一个安全帐户。语法为:sp_addrolemember角色,安全帐户sp_droprolemember:从数据库角色中删除一个安全帐户。语法为:sp_droprolemember角色,安全帐户注意:只有sysadmin固定服务器角色、db_owner和db_secruityadmin固定数据库角色的成员才能执行sp_droprolemember。只有db_owner固定数据库角色的成员才可以从固定数据库角色中删除用户。34例:在数据库角色db_ddladmin中添加一个安全帐户Headquaters/adam:UsecompanyExecsp_addrolemember‘db_ddladmin’,’Headquaters\adam’例:删除刚加入到服务器角色db_ddladmin中的成员Headquaters/adamExecsp_dropaddrolemember‘db_ddladmin’,’Headquaters\adam’35使用系统存储过程管理服务器角色在SQLServer中,管理服务器角色的存储过程主要有两个:sp_addsrvrolemember:在一个服务器角色中添加一个登录sp_dropsrvrolemember:从一个服务器角色中取消一个登录36系统存储过程sp_addsrvrolemember可以将某一登录帐号加入到服务器角色中,使其成为该服务器角色的成员。其语法形式如下:sp_addsrvrolemember‘登录帐户名’,‘角色’注意:sysadmin固定服务器的成员可以将成员添加到任何固定服务器角色。在将登录添加到固定服务器角色时,该登录就会得到愈此固定服务器角色相关的权限。不能更改sa登录的角色成员资格。37系统存储过程sp_dropsrvrolemember可以将某一登录者从某一服务器角色中删除,当该成员从服务器角色中被删除后,便不再具有该服务器角色所设置的权限。其语法形式如下:sp_dropsrvrolemember‘登录帐户名’,‘角色’38系统存储过程sp_dropsrvrolemember可以将某一登录者从某一服务器角色中删除,当该成员从服务器角色中被删除后,便不再具有该服务器角色所设置的权限。其语法形式如下:sp_dropsrvrolemember‘登录帐户名’,‘角色’注意:只有sysadmin才可以执行该存储过程,从固定服务器角色中删除任意登录。一个固定服务器角色的成员可以删除相同固定服务器角色中的其它成员。如果某些权限与某个服务器角色相关,那么从该服务器角色中删除一个登录后,给登录就不能再执行基于这些权限的活动了。不能从任何固定服务器中删除sa登录。39例:再服务器角色serveradmin中添加一个登录adamExecsp_addsrvrolememver‘adam’,’serveradmin’

例:删除刚加入的成员。Execsp_dropsrvrolememver‘adam’,’serveradmin’可以使用系统存储过程sp_srvrolepermisiion查看固定服务器角色所拥有的权限,语法为:sp_srvrolepermission固定服务器角色例:sp_srvrolepermissionserveradmin40创建数据库角色创建用户定义的数据库角色就是创建一组用户,这些用户具有相同的一组许可。如果一组用户需要执行在SQLServer中指定的一组操作并且不存在对应的WindowsNT组,或者没有管理WindowsNT用户帐号的许可,就可以在数据库中建立一个用户自定义的数据库角色。用户自定义的数据库角色有两种类型:即标准角色和应用程序角色。41标准角色通过对用户权限等级的认定而将用户划分为不用的用户组,使用户总是相对于一个或多个角色,从而实现管理的安全性。应用程序角色是一种比较特殊的角色。当我们打算让某些用户只能通过特定的应用程序间接地存取数据库中的数据而不是直接地存取数据库数据时,就应该考虑使用应用程序角色。当某一用户使用了应用程序角色时,他便放弃了已被赋予的所有数据库专有权限,他所拥有的只是应用程序角色被设置的角色。标准角色和应用程序角色42使用企业管理器管理数据库角色在企业管理器中可以实现数据库角色的创建、授权和删除等操作。步骤如下:1、打开企业管理器,选中指定的数据库2、选中该数据库节点的下一级节点“角色”,单击鼠标右键,选择“新建数据库角色”3、在对话框“数据库角色属性-新建角色”中作如下操作:输入名称、选择角色类型(标准角色,应用程序角色)、若选中的是标准角色,还可以单击“添加”按钮向该角色中添加用户。4、单击“确定”即可。43若要删除一个数据库角色,在企业管理器中选择该角色,然后右击鼠标并选择“删除”即可。注意:不能删除固定数据库角色。44使用系统存储过程管理数据库角色sp_addrole:用来创建一个新的数据库角色sp_addrole‘role’[,’owner’]其中,role是新的数据库角色的名称。Owner是新角色的所有者,默认值为dbo。Owner必须是当前数据库中的某个用户或角色。例:创建一个数据库角色customersUsecompanyGoExecsp_addrole‘customers’在添加角色之后,可以使用sp_addrolemember添加安全帐户,使其称为该角色的成员。45sp_droprole:用于删除一个数据库角色sp_droprolerole例:删除刚建立的customers数据库角色Execsp_droprole‘customers’注意:只能删除用户自己创建的数据库角色,不能删除sqlserver中的固定数据库角色。46权限权限用来指定授权用户可以使用的数据库对象和这些授权用户可以对这些数据库对象执行的操作。用户在登录到SQLServer之后,其用户帐号所归属的NT组或角色所被赋予的许可(权限)决定了该用户能够对哪些数据库对象执行哪种操作以及能够访问、修改哪些数据。在每个数据库中用户的权限独立于用户帐号和用户在数据库中的角色,每个数据库都有自己独立的权限系统,在SQLServer中包括三种类型的许可:即对象权限、语句权限和暗示性权限。47三种权限类型1、对象权限表示对特定的数据库对象,即表、视图、字段和存储过程的操作许可,它决定了能对表、视图等数据库对象执行哪些操作。数据库对象的所有者可以将对象权限授予指定的数据库用户。对于表和视图,所有者可以授予Insert、Update、Select和References权限,或授予All权限。用户必须对表有Insert、Update、Select、Delete权限,才能在Insert、Update、Select、Delete语句中指定该表。References权限使得另一个表的所有者可以对你的表中的列应用他们表中的ReferenceForeignKey约束。482、语句权限:对用于创建数据库和数据库中的对象(如表、视图和存储过程等)的T-SQL语句所拥有的权限。语句权限包括:CreateDatabase、CreateTable、CreateView、CreateRule、CreateProcedure、CreateFunction、CreateDefault、BackupDatabase、BackupLog3、暗示性权限:指有SqlServer预定义的服务器角色、数据库的所有者和数据库对象所有者所拥有的权限。如:数据库拥有者dbo可以在数据库范围内进行任何操作,数据库对象的所有者可以对所拥有的对象执行一切活动。暗示性权限不需要明确指定,也不能进行设置。49管理对象权限某些数据库中的用户根据它们在数据库中的角色被设定了某些缺省权限。这样的用户有4类。一、系统管理员:可以创建和删除数据库,配置服务器。二、数据库属主:可以创建和管理数据库中的对象以及管理整个数据库。三、对象属主:可以在对象上进行授予、废除和拒绝权限的操作,而且可以删除对象。四、除此以外的都属于第四类。50权限管理对象权限可以由sysadmin服务器角色、数据库所有者或特定数据库角色中的成员进行授予、拒绝和取消。管理对象权限有两种方法:企业管理器T-SQL51使用企业管理器管理对象权限步骤:1、选择数据库节点2、选中需要查看或修改权限的表,单击鼠标右键,选择菜单命令“属性”,打开“表属性”对话框。3、在“表属性”对话框中单击“权限”按钮。4、若希望修改对某个数据库对象的访问权,可以单击相应的方格,有如下三种形式:52V授予权限:表示允许某个用户或角色对一个对象执行某种操作。X禁止权限:表示在不撤销用户访问权限的情况下,禁止某个用户或角色对一个对象执行某种操作。空剥夺权限:表示不允许某个用户或角色对一个对象执行某种操作。535、还可以单击一个特定的用户或角色,然后单击“列”按钮,打开“列权限”对话框,将权限控制到字段的级别。6、单击“确定”按钮,结束设置。54使用T-SQL语句管理对象权限可以使用Grant、deny、Revoke语句完成权限的授予、禁止和剥夺。语法如下:grant权限名称[,…n]on表名|视图名|存储过程名to用户帐户deny权限名称[,…n]on表名|视图名|存储过程名to用户帐户revoke权限名称[,…n]on表名|视图名|存储过程名from用户帐户55例:将表employee的select权限授予给一个SQLServer登录adam,一个用户自定义的数据库角色salesmanagers和一个windows组headquaters\mimsGrantselectonemployeetoadam,salesmanager,[headquarters\mims]可以在grant语句中使用withgrantoption子句在授予权限的同时,将授予权限的权限授予该用户、角色或组。例:grantselectonemployeetosalesmanagerwithgrantoption可以使用系统存储过程sp_helprotect查看一个数据库中现有的对象权限。例:usecompanyExecsp_helprotect‘employee’56管理语句权限可以管理的方式:企业管理器T-SQL语句57使用企业管理器管理语句权限步骤:1、选择指定的数据库节点2、选中要查看或修改权限的数据库,单击鼠标右键,选择菜单命令“属性”,打开“数据库属性”对话框。3、在该对话框中选择“权限”标签,可以设置相应的语句权限。58使用T-SQL语句管理语句权限可以使用Grant、deny、Revoke语句完成语句权限的授予、禁止和剥夺。语法如下:grant语句名称[,…n]to用户帐户[,…n]deny语句名称[,…n]to用户帐户[,…n]revoke语句名称[,…n]from用户帐户[,…n]注意:管理语句权限只能在master系统数据库中进行。主要内容基本概念关系数据库常见数据库对象范式数据库技术产生于二十世纪六十年代末,它作为数据管理最有效的手段在各行各业中得到越来越广泛的应用。可以这样说任何一个行业的信息化现代化都离不开数据库,本章将介绍数据库的一些基础知识。2.1基本概念2.1.1数据Data所谓数据就是描述事物的符号。在我们的日常生活中,数据无所不在。数字,文字,图表,图象,声音等都是数据,人们通过数据来认识世界交流信息2.1.2数据库DB即Database数据库顾名思义就是数据存放的地方。在计算机中,数据库是数据和数据库对象的集合。所谓数据库对象是指表(Table),

视图(View),

存储过程(StoredProcedure),触发器(Trigger)等。这些数据库对象将在以后的章节中介绍2.1.3数据库管理系统DBMS数据库管理系统是用于管理数据的计算机软件。数据库管理系统使用户能方便地定义和操纵数据,维护数据的安全性和完整性,以及进行多用户下的并发控制和恢复数据库2.1.4数据库系统DBS(DatabaseSystem)数据库系统,狭义地讲,是由数据库,数据库管理系统和用户构成。广义地讲是由计算机硬件,操作系统,数据库管理系统,以及在它支持下建立起来的数据库应用程序用户和维护人员组成的一个整体2.2关系数据库数据库这一概念提出后先后出现了几种数据模型,其中基本的数据模型有三种:层次模型系统,网络模型系统和关系模型系统。60年代末期提出的关系模型具有数据结构简单灵活,易学易懂,且具有雄厚的数学基础等特点,从70年代开始流行,发展到现在已成为数据库的标准。目前广泛使用的数据库软件都是基于关系模型的关系数据库管理系统2.2.1关系模型RM即RelationalModel关系模型把世界看作是由实体(Entity)

和联系(Relationship)构成的。所谓实体就是指现实世界中具有区分与其它事物的特征或属性并与其它实体有联系的对象。在关系模型中实体通常是以表的形式来表现的,表的每一行描述实体的一个实例,表的每一列描述实体的一个特征或属性。所谓联系就是指实体之间的关系,即实体之间的对应关系。联系可以分为三种:

一对一的联系:如一个人只有一种性别,一个人->性别为一对一的联系

一对多的联系:如相同性别的人有许多个,性别->人为一对多的联系

多对一的联系:如很多人有同一个性别,人->性别为多对一的联系通过联系就可以用一个实体的信息来查找另一个实体的信息。关系模型把所有的数据都组织到表中,表是由行和列组成的。行表示数据的记录,列表示记录中的域,表反映了现实世界中的事实和值2.2.2关系数据库RDB即RelationalDatabase所谓关系数据库就是基于关系模型的数据库。1关系数据库管理系统RDBMS

关系数据库管理系统就是管理关系数据库的计算机软件2关键字Key关键字是关系模型中的一个重要概念,它是逻辑结构,不是数据库的物理部分

侯选关键字CandidateKey

如果一个属性集能惟一地标识表的一行,而又不含多余的属性,那么这个属性集称为侯选关键字

主关键字PrimaryKey

主关键字是被挑选出来,作表的行的唯一标识的侯选关键字。一个表只有一个主关键字,主关键字又可以称为主键

公共关键字CommonKey

在关系数据库中,关系之间的联系是通过相容或相同的属性或属性组来表示的。如果两个关系中具有相容或相同的属性或属性组,那么这个属性或属性组被称为这两个关系的公共关键字。

外关键字ForeignKey

如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外关键字。由此可见,外关键字表示了两个关系之间的联系,以另一个关系的外关键字作主关键字的表被称为主表,具有此外关键字的表被称为主表的从表,外关键字又称作外键2.3常见的数据库对象数据库对象是数据库的组成部分,常见的有以下几种:2.3.1表Table数据库中的表与我们日常生活中使用的表格类似,它也是由行Row和列Column组成的列由同类的信息组成,每列又称为一个字段。每列的标题称为字段名。行包括了若干列信息项,一行数据称为一个或一条记录,它表达有一定意义的信息组合。一个数据库表由一条或多条记录组成,没有记录的表称为空表。每个表中通常都有一个主关键字,用于惟一地确定一条记录。如下表图的emp_id列Emp_idE_namesexbirthdayJob_levelDept_idHire_dateE_wage1001张三168-02-1410196-08-0280001002李四073-03-1910203-08-0220001003王五173-06-2510198-08-0250001004赵六070-12-3010302-08-0210002.3.2索引Index索引是根据指定的数据库表列建立起来的顺序。它提供了快速访问数据的途径,并且可监督表的数据,使其索引所指向的列中的数据不重复2.3.3视图View视图看上去同表似乎一模一样,具有一组命名的字段和数据项,但它其实是一个虚拟的表,在数据库中并不实际存在。视图是由查询数据库表产生的,它限制了用户能看到和修改的数据。由此可见,视图可以用来控制用户对数据的访问,并能简化数据的显示。即通过视图只显示那些需要的数据信息2.3.4图表Diagram在SQLServer中图表其实就是数据库表之间的关系示意图。利用它可以编辑表与表之间的关系2.3.5缺省值Default

缺省值是当在表中创建列或插入数据时,对没有指定其具体值的列或列数据项赋予事先设定好的值2.3.6规则Rule规则是对数据库表中数据信息的限制,它限定的是表的列2.3.7触发器Trigger触发器是一个用户定义的SQL事务命令的集合,当对一个表进行插入,更改,删除时,这组命令就会自动执行2.3.8存储过程StoredProcedure存储过程是为完成特定的功能而汇集在一起的一组SQL程序语句,经编译后存储在数据库中的SQL程序2.3.9用户User所谓用户就是有权限访问数据库的人。数据库对象还有很多我们将在以后的章节中详细介绍2.4范式构造数据库必须遵循一定的规则,在关系数据库中这种规则就是范式。范式是符合某一种级别的关系模式的集合。关系数据库中的关系必须满足一定的要求,即满足不同的范式。目前关系数据库有六种范式:第一范式(1NF),

第二范式(2NF),

第三范式(3NF),第四范式(4NF),

第五范式(5NF)

和第六范式(6NF)。

满足最低要求的范式是第一范式。

在第一范式的基础上进一步满足更多要求的称为第二范式;

其余范式以此类推。一般说来数据库只需满足第三范式就行了。下面我们举例介绍第一范式,

第二范式

和第三范式。2.4.1第一范式(1NF)在任何一个关系数据库中,第一范式(1NF)

是对关系模式的基本要求。不满足第一范式

的数据库就不是关系数据库。所谓第一范式(1NF)

是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式中,表的每一行只包含一个实例的信息。

在下例中,不能将员工信息都放在一列中显示,也不能将其中的两列或多列在一列中显示。表的每一行只表示一个员工的信息,一个员工的信息在表中只出现一次。简而言之第一范式就是无重复的列。Emp_idE_namesexbirthdayJob_levelDept_idHire_dateE_wage1001张三168-02-1410196-08-0280001002李四073-03-1910203-08-0220001003王五173-06-2510198-08-0250001004赵六070-12-3010302-08-0210002.4.2第二范式2NF

第二范式2NF是在第一范式的基础上建立起来的,即满足第二范式,必须先满足第一范式;第二范式要求数据库表中的每个实例或行必须可以被惟一地区分。为实现区分,通常需要为表加上一个列以存储各个实例的惟一标识。如上表,员工信息表中加上了员工编号emp_id列,因为每个员工的员工编号是惟一的。因此每个员工可以被惟一区分,这个惟一属性列被称为主关键字或主键,主码。第二范式要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来,形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。简而言之第二范式就是非主属性非部分依赖于主关键字2.4.3第三范式3NF满足第三范式,

必须先满足第二范式。

第三范式要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。例如存在一个部门信息表,其中每个部门有部门编号dept_id,部门名称,部门简介等信息。那么在前面的员工信息表中,列出部门编号后就不能再将部门名称,部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式,

也应该构建它;否则就会有大量的数据冗余。简而言之,第三范式就是属性不依赖于其它非主属性。87基本概念备份和恢复组件是SQLServer的重要组成部分。备份就是指对SQLServer数据库或事务日志进行拷贝。数据库备份记录了在进行备份这一操作时数据库中所有数据的状态。如果数据库因意外而损坏,这些备份文件将在数据库恢复时被用来恢复数据库。由于SQLServer支持在线备份,所以通常情况下,可一边进行备份一边进行其它操作。但是在备份过程中不允许执行以下操作:创建或删除数据库文件创建索引执行非日志操作自动或手工缩小数据库或数据库文件大小88备份设备在进行备份以前首先必须指定或创建备份设备,备份设备是用来存储数据库、事务日志或文件和文件组备份的存储介质,备份设备可以是硬盘、磁带或管道。当使用磁盘时,SQLServer允许将本地主机硬盘和远程主机上的硬盘作为备份设备,备份设备在硬盘中是以文件的方式存储的。89物理设备和逻辑设备SQLServer使用物理设备或逻辑设备名称标识备份设备。物理备份设备是操作系统用来标识备份设备的名称。如c:\backups\accounting\full.bak。逻辑备份设备是用来标识物理备份设备的别名或公用名称。逻辑设备名称永久地存储在SQLServer内地系统表中。优点是:引用它比引用物理设备名称简单。例:上例的逻辑设备名称可以是:accounting_backup。执行数据库的备份和恢复中,既可以使用物理设备名,又可以使用逻辑设备名。90例:backupdatabaseaccountingtoaccountin_backup或BackupdatabaseaccountingTodisk=‘c:\backups\acounting\full.bak’91管理备份设备可以采用企业管理器,也可以采用T-SQL语句来实现管理。92用企业管理器创建备份设备步骤:1、打开企业管理器,展开指定的服务器。2、展开“管理”节点,并在下一级节点中选择节点“备份”。3、在备份节点上单击鼠标右键,然后从弹出菜单中选择命令“新建备份设备”,并打开“备份设备属性-新设备”对话框。4、在“备份设备属性”对话框中执行如下操作:在“名称”处输入备份设备的逻辑文件名在“文件名”处输入备份文件的文件名和存储路径。5、单击“确定”,即可。93图1使用企业管理器创建备份设备94图2输入备份设备属性对话框95使用T-SQL创建备份设备在SQLServer中,可以使用sp_addumpdevice语句创建备份设备,其语法形式如下:sp_addumpdevice‘设备类型’,’设备逻辑名’,’设备的物理名称’例:execsp_addumpdevice‘disk’,‘backup_company’,‘c:\mssql7\backup\bk_company.bak’96删除备份设备删除备份设备与创建的过程类似,只须在企业管理器中选中要删除的备份设备,在弹出的菜单中选择删除选项即可删除该备份设备。或者使用sp_dropdevice语句来删除备份设备。其语法如下:sp_dropdevice‘设备的逻辑名称’,’delfile’其中:delfile用来指出是否要删除物理备份设备文件。如指定delfile,则会删除物理备份设备磁盘文件。例子4-6:删除上面创建的备份设备sp_dropdevice‘backup_company’

sp_dropdevice‘backup_company’

,‘delfile’97SQLServer2000四种备份方式(一)数据库备份(二)差异备份或称增量备份(三)事务日志备份(四)数据库文件和文件组备份98数据库备份数据库备份一般实用于数据更新缓慢的数据库中,备份将创建当备份完成时数据库内存在的数据的副本。与事务日志备份和差异数据库备份相比,数据库备份中的每个备份使用的存储空间更多。因此,数据库备份完成备份操作需要更多的时间,所有,数据库备份的创建频率通常比差异数据库或事务日志备份低。还原数据库时,备份将重新创建当数据库和备份完成时数据库中存在的所有相关文件。但是,自从创建备份后所作的所有数据库修改都将丢失。若要还原创建数据库备份后发生的事务,必须使用事务日志备份或差异备份。99备份数据库和事务日志事务日志备份是指对数据库发生的事务进行备份。包括从上次进行事务日志备份、差异备份和数据库完全备份之后所有已经完成的事务。还原事务日志备份时,SQLServer将按照事务日志中的记录修改数据库。当修改完成时,SQLServer已经重新创建了与开始执行备份操作的那一刻完全相同的数据库状态。一般事务日志比数据库备份使用的资源少。因此可以经常创建事务日志备份。只有具有自上次数据库备份或差异数据库备份后的连续事务日志备份时,使用数据库备份和事务日志备份还原数据库才有效。若日志备份丢失或损坏,必须创建数据库备份或差异数据库备份并再次开始备份事务日志。100差异备份差异备份是指将最近一次数据库备份以来发生的数据变化备份起来。因此差异备份实际上是一种增量数据库备份,与完整数据库备份相比:差异备份由于备份的数据量较小,所以备份和恢复所用的时间较短。通过增加差异备份的备份次数,可以降低丢失数据的风险,将数据库恢复至进行最后一次差异备份的时刻,但是它无法像事务日志备份那样提供到失败点的无数据损失备份。101文件和文件组备份文件或文件组备份是一种相对较完善的备份和还原过程,通常用在具有较高可用性要求的超大型数据库中。这种备份策略可以只还原已损坏的文件或文件组,而不用还原数据库的其余部分,从而加快了恢复速度。102数据库恢复简单恢复完全恢复大容量日志记录恢复103简单恢复所谓简单恢复就是指在进行数据库恢复时,仅使用了数据库备份或差异备份,而不涉及事务日志备份。简单恢复模式可使数据库恢复到上一次备份的状态,但由于不使用事务日志备份来进行恢复,所以无法将数据库恢复到失败点状态。当选择简单恢复模式,时常使用的备份策略是首先进行数据库备份,然后进行差异备份。104完全恢复完全数据库恢复模式是指通过使用数据库备份和事务日志备份将数据库恢复到发生失败的时刻,因此几乎不造成任何数据丢失。这成为对付因存储介质损坏而数据丢失的最佳方法。为了保证数据库的这种恢复能力,所有的批数据操作,比如SELECTINGO、创建索引都被写入日志文件。选择完全恢复模式时常使用的备份策略是:首先进行完全数据库备份然后进行差异数据库备份最后进行事务日志的备份如果准备让数据库恢复到失败时刻,必须对数据库失败前正处于运行状态的事务进行备份。105大容量日志记录恢复大容量日志恢复在性能上要优于简单恢复和完全恢复模式。它能尽最大努力减少批操作所需要的存储空间。这些批操作主要是SELECTINTO、批装载操作(如bcp操作或批插入操作)、创建索引、针对大文本或图像的操作。选择批日志恢复模式所采用的备份策略与完全恢复所采用的恢复策略基本相同。在实际应用中备份策略和恢复策略的选择不是相互孤立的而是有着紧密的联系。我们并不仅仅是因为数据库备份为数据库恢复提供了”原材料”这一事实,以便在采用何种数据库恢复模式的决策中考虑该怎样进行数据库备份。更多是因为在选择该使用哪种备份类型时我们必须考虑到当使用该备份进行数据库恢复时,它能把遭到损坏的数据库带到怎样的状态(是数据库失败的时刻,还是最近一次备份的时刻)。但有一点我们必须强调,即备份类型的选择和恢复模式的确定都应服从于这一目标:尽最大可能,以最快速度减少或消灭数据丢失。1061.使用企业管理器进行备份(1)启动企业管理器,登录到指定的数据库服务器,打开数据库文件夹,用右键单击所要进行备份的数据库图标,在弹出的快捷菜单中选择所有任务,再选择备份数据库。(2)出现SQLServer备份对话框,对话框中有两个页框,即常规和选项页框。(3)在常规页框中,选择备份数据库的名称、操作的名称、描述信息、备份的类型、备份的介质、备份的执行时间。(4)通过单击添加按钮选择备份设备。(5)选择调度复选框,来改变备份的时间安排。(6)在选项页框中进行附加设置。1072.使用备份向导(图1--图7)图1欢迎使用向导对话框108图2选择数据库对话框109图3输入备份名称和描述信息对话框110图4选择备份数据库类型对话框111图5设置备份介质类型和属性对话框112图6备份验证和调度对话框113图7确认执行备份操作对话框114恢复概述数据库备份后,一旦系统发生崩溃或者执行了错误的数据库操作,就可以从备份文件中恢复数据库。数据库恢复是指将数据库备份加载到系统中的过程。系统在恢复数据库的过程中,自动执行安全性检查、重建数据库结构以及完整数据库内容。115使用企业管理器恢复数据库使用企业管理器恢复数据库(1)打开企业管理器,单击要登录的数据库服务器,然后从主菜单中选择工具,在菜单中选择还原数据库命令。(2)在还原为数据库旁的下拉列表中选择要恢复的数据库,在还原组中通过单击单选按钮来选择相应的数据库备份类型。(3)选中选项页框,进行其它选项的设置116使用Transact-SQL备份数据库包括如下几个方面:完全数据库备份差异数据库备份事务处理日志备份文件和文件组备份117执行完全数据库备份可以使用新建一个备份文件,也可以使用一个已经存在的备份设备。Backupdatabasecompanytodisk=‘c:\sqlbackup\company.bak’118差异数据库备份例如:backupdatabasecompanytocompany_backupwithdifferential注意:差异备份数据库备份必须在存在完全数据库备份以后执行。119事务处理日志备份语法规则如下:BACKUPLOG{database_name|@database_name_var}TO<backup_device>[...n]例:backuplogcompanytocompany_log_backup例:Backuplogcompanytocompany_log_backupwithno_truncate其中:withno_truncate参数指定在完成事务日志备份以后,并不清空原有日志的数据。120执行文件和文件组备份语法为:语法格式如下BACKUPDATABASE{database_name|@database_name_var}<file_or_filegroup>[...n]TO<backup_device>[...n]例:backupdatabasecompanyfilegroup=‘primary’tocompany_filegroupbackup_primary121使用T-SQL语句恢复数据库利用数据库备份执行恢复操作的语法格式:RESTOREDATABASE数据库名[FROM备份设备名[...n]][WITH[[,]{nonrecovery|recovery}][[,]replace]]其中:nonrecovery|recovery参数用于指定恢复操作是否回滚所有未曾提交的事务,默认选项为recovery。在使用一个数据库备份和多个事务日志进行恢复时,在恢复最后一个事务日志文件以前都应该使用参数nonrecovery。参数replace指定恢复操作是否替换原来的数据库或数据文件和文件组。122数据库备份的恢复RESTOREDATABASE数据库名[FROM备份设备名[...n]][WITH[[,]{nonrecovery|recovery}][[,]replace]]其中:nonrecovery|recovery参数用于指定恢复操作是否回滚所有未曾提交的事务,默认未recovery。参数replace指定恢复操作是否替换为原来的数据库或数据文件和文件组。123事务日志备份的恢复利用事务日志备份执行恢复数据库的语法:RESTORELOG数据库名[FROM备份设备名[...n]][WITH[[,]{nonrecovery|recovery}][[,]STOPAT=date_time]]其中:参数STOPAT=date_time用来指定数据库恢复到一个特定的时间点。124文件和文件组备份的恢复利用文件和文件组备份恢复数据库的语法:RESTOREDATABASE数据库名{FILE=逻辑文件名|FILEGROUP=逻辑文件组名』[FROM备份设备名[...n]][WITH[[,]{nonrecovery|recovery}][[,]replace]]125例:从磁盘上的备份文件d:\sqlbackup\company.bak中恢复数据库company的一个完整数据库备份Restoredatabasecompanyfromdisk=‘d:\sqlbackup\company.bak’126例:Restoredatabasecompanyfromcompany_backupwithnonrecoveryRestorelogcompanyfromcompany_laobackup1withnonrecoveryRestorelogcompanyfromcompany_logbackupwithrecovery,Stopat=‘oct5,19996:0005PM’是一个数据库备份和两个事务日志的数据库的恢复操作,使用stopat参数将数据库恢复到一个指定的时间点。127例:从备份设备中恢复数据库:从backup_company备份设备中恢复数据库company。usemasterrestoredatabasecompanyfrombackup_company128例:下面是一个数据库备份和两个事务日志进行了数据库的恢复操作,并使用stopat参数将数据库恢复到一个指定的时间点。RestoredatabasecompanyFromcompany_backupwithnonrecoveryRestorelogcompanyFromcompany_logbackup1withnonrecoveryResotrelogcompanyFromcompany_logbackupwithrecovery,Stopat=‘oct5,19996:00:05PM’129创建表在SQLServer2000中,每个数据库中最多可以创建200万个表,用户创建数据库表时,最多可以定义1024列,也就是可以定义1024个字段。

SQLServer2000提供了两种方法创建数据库表,第一种方法是利用企业管理器(EnterpriseManager)创建表;另一种方法是利用Transact-SQL语句中的create命令创建表。130利用企业管理创建表在EnterpriseManager中,展开指定的服务器和数据库,打开想要创建新表的数据库,用右键单击表对象,从弹出的快捷菜单中选择新建表选项,或者在工具栏中选择图标,就会出现新建表对话框,在该对话框中,可以定义列的以下属性:列名称、数据类型、长度、精度、小数位数、是否允许为空、缺省值、标识列、标识列的初始值、标识列的增量值和是否有行的标识。然后根据提示进行设置,并且保存表。131常用属性说明长度:指定字段的长度,即字段所占用的字节数。字段的长度并非越打越好。允许空:指定该字段在表中是否允许空值。空值表示没有输入,并不等于零或零长度的字符串。若指定一列不允许空值,则在相表中写数据时必须在列中输入一个值,否则该行不被接收如数据库。描述:指定字段的注释文本描述。默认值:指定字段的默认值,指在插入记录时,没有指定字段值的情况下,自动使用的默认值。132精度:指定该字段的位数。对于decimal和numeric类型的字段,可以设置精度属性。小数位数:显示该列值小数点右边能出现的最多数字个数。标识:指定一个字段是否为标识字段。只有bigint、int、smallint、tinyint、decimal和numeric可以设置该属性。可能的值是:1、否:不设置该字段为标识字段。2、是:指定该字段为标识字段。表示在插入一个新的数据行时,不必为字段指定数值,系统会根据标识种子和标识递增量自动生成一个字段值。3、是(不适用于复制):类似于第二个,但是若以复制的方式象表中输入数据,系统将不自动生成字段值。133标识种子:指定标识字段的初始值。标识递增量:指定标识字段的递增值。该选项只使用于其“标识”属性设置为“是”或“是(不适用于复制)”的字段。在一个表中,只能定义一个标识字段。公式:指定用于计算字段的公式排序规则:指定当字段值用于对查询结果的记录进行排序时的排序规则,默认情况下使用数据库默认设置。134向表中添加数据步骤如下:1、选择要添加数据的表2、选择菜单“操作-打开表-返回所有行”命令,打开数据输入窗口。3、输入新记录,同时可以修改和删除操作。4、保存输入。135表操作——创建表同一用户不能建立同一个表名的表,同一表名的表可有多个拥有者。但在使用时,需要在这些表上加上所有者的表名。136利用create命令创建表其语法形式如下:CREATETABLE

[database_name.[owner].|owner.]table_name

({<column_definition>|column_nameAScomputed_column_expression|<table_constraint>}[,…n])

[ON{filegroup|DEFAULT}][TEXTIMAGE_ON{filegroup|DEFAULT}]<column_definition>::={column_namedata_type}[[DEFAULTconstant_expression]|[IDENTITY[(seed,increment)]][<column_constraint>][...n]137database_name:用于指定在其中创建表的数据库名称。owner:用于指定新建表的所有者的用户名。table_name:用于指定新建的表的名称。column_name:用于指定新建表的列的名称。computed_column_expression:用于指定计算列的列值的表达式。ON{filegroup|DEFAULT}:用于指定存储表的文件组名。如果指定filegroup,则数据表将存储在指定的文件组中。若指定default,或未指定on参数,则数据表将存储在默认文件组中。138TEXTIMAGE_ON:用于指定text、ntext和image列的数据存储的文件组。data_type:用于指定列的数据类型。DEFAULT:用于指定列的缺省值。constant_expression:用于指定列的缺省值的常量表达式。IDENTITY:用于指定列为标识列。Seed:用于指定标识列的初始值。Increment:用于指定标识列的增量值。column_constraint和table_constraint:用于指定列约束和表约束。139例:创建一个雇员信息表其SQL语句的程序清单如下:

CREATETABLEemployee(numberintnotnull,namevarchar(20)NOTNULL,sexchar(2)NULL,birthdaydatetimenull,hire_datedatetimeNOTNULLDEFAULT(getdate())professional_titlevarchar(10)null,salarymoneynull,memontextnull)140约束主键约束唯一性约束外键约束核查约束Null约束和default约束141在企业管理器中设置主键约束主键可以用来强制一个字段或多个字段组合值的唯一性,且不允许该字段值为空值。具体步骤如下:1、选中需要设置的表节点。2、在该表节点处,点击右键,并选择“设计表”选项。3、选中需要设置主键的字段,然后点击菜单上的设置主键按钮,即可。在一个表中只能设置一个主键约束,但可以将包含多个字段的字段组合设置为主键,设置时需要按住ctrl键将多个字段选中,然后按照和设置单字段主键相同的方法设置即可。取消方法与设置类似。142在T-SQL中设置主键约束为数据表创建主键约束的句法如下:[constraintconstraint_name]Primarykey[clustered|notclustered][(字段名[,…n])]其中:constraint_name约束名称。若缺省,系统将会自动为创建的约束命名。CLUSTERED|NONCLUSTERED:用于指定约束的类型,即聚集约束或非聚集约束,CLUSTERED为默认值。column_name:用于指定主键的列名。主键最多由16个列组成。143主键约束分为字段级约束和表级约束。字段级约束:为某一个字段设置约束。在设置字段级约束时,只需将创建主键约束的语句添加到该字段的定义子句后面。例:Createtableproject(项目编号intconstraintpk_pnoprimarykey,项目名称varchar(40))144表级约束:指将包含多个字段的字段组合设置为主键。设置表级约束时,需要将创建主键约束的语句添加到各个字段定义语句的后面,并在该语句后面的括号中写入字段组合包含的所有字段,字段之间用逗号分隔。例如:Createtableproject(项目编号int,项目名称varchar(40),Constraintpk_pno_pnameprimarykey(项目编号,项目名称))145唯一性约束在一个表中只能设置一个主键约束,如何限制非主键字段输入值的唯一性呢?唯一性约束的设置可以确保在非主关键字段或字段组合中不输入重复值。唯一性约束和主键约束的区别:1、在一个表中只能定义一个主键约束,但可以定义多个唯一性约束。2、允许空值的字段上不能定义主键约束,但可以定义唯一性约束。146在企业管理器中设置唯一性约束步骤如下:1、为设置唯一性约束的表打开表设计器,选择工具栏中的“表和索引属性”按钮,打开表的属性窗口。2、选择“索引/键”选项。3、选择“新建”命令。为该表创建新的索引,此时系统分配的名称出现在“索引名”框中。4、在“列名”下展开字段的列表,选择需要附加约束的字段。若要将约束附加到多个字段,在后续行中选择其它的字段。5、选择“创建unique”复选项。6、选择“约束选项”,将在该字段上同时创建一个唯一性索引。7、保存表147唯一性约束的删除若想删除唯一性约束,可以在“索引/键”选项中选择索引名,然后选择“删除”命令。148在T-SQL中设置唯一性约束设置唯一性约束的句法如下:[CONSTRAINTconstraint_name]UNIQUE[CLUSTERED|NONCLUSTERED][(字段名[,…n])]149例如:创建一个名为project的表,该表包含二个字段“项目编号”和“项目名称”,将字段“项目编号”设置为主键,主键约束名为pk_Pno,为字段“项目名称”设置唯一性约束,约束名为UN_pname:Createtableproject(项目编号intconstraintpk_pnoprimarykey,项目名称char(20)constraintun_pnameunique)150例:创建一个名为project的表,该表包含3个字段“项目编号”、“项目名称”和“项目负责人”,将字段“项目编号”设置为主键,主键约束名为pk_pno,为包含字段“项目名称”和“项目负责人”的组合字段设置唯一性约束,约束名为un_pname_pm。下面是用来完成这一任务的语句:Createtableproject(项目编号intConstraintpk_pnoprimarykey,项目名称char(20),项目负责人char(20),Constraintun_pname_pmunique(项目名称,项目负责人))151外键约束外关键字约束定义了表之间的关系。当一个表中的一个列或多个列的组合和其它表中的主关键字定义相同时,就可以将这些列或列的组合定义为外关键字,并设定它是和哪个表中哪些列相关联。这样,当在定义主关键字约束的表中更新列值时,其它表中有与之相关联的外关键字约束的表中的外关键字列也将被相应地做相同的更新。外关键字约束的作用还体现在,当向含有外关键字的表插入数据时,如果与之相关联的表的列中没有与插入的外关键字列值相同的值时,系统会拒绝插入数据。152步骤如下:1、打开企业管理器,展开数据库company节点。2、在数据库company的下一级中,右击“关系图”,在弹出菜单中选择“新建数据库关系图”命令。3、关闭创建数据库关系图向导,进入数据库关系图创建窗口。4、在数据库关系图创建窗口的工具栏中单击按钮“在关系图上加表”按钮。打开“添加表”窗口。5、在“添加表”窗口中选择主键表employee,并单击“添加”按钮,再选择外键表project,单击“添加”按钮,然后关闭“添加表”窗口。1536、将鼠标指针移动到employee表中主关键字段“编号”左边的选择栏,按下鼠标左键,并将鼠标指针拖动到project表中字段“负责人编号”上。7、松开鼠标左键,此时弹出“创建关系”对话框。根据需要决定是否选择对话框中的如下选项:8、设置完这些选项以后,单击“确定”按钮,关闭“创建关系”对话框。此时创建数据库关系图窗口中的二个表之间出现一条连接线,表示已经建立了这个关系。9、单击“保存”按钮,在“另存为”窗口中输入关系名,单击“确定”按钮。10、在“保存”对话框中,单击“是”按钮确认对主键表和外键表所作的修改。154删除外键约束若想删除该外键约束,可以在关系图中,删除代表要删除的外键约束的关系线。注意:若不删除数据库图中的关系线,即使删除了该关系图,也不会影响设置好的外键约束,因为删除关系图并不对表作相应的修改。155在T-SQL中设置外键约束定义外关键字约束的语法如下:[CONSTRAINTconstraint_name][FOREIGNKEY]REFERENCESref_table[(ref_column)][ONDELETE{CASCADE|NOACTION}][ONUPDATE{CASCADE|NOACTION}][NOTFORREPLICATION]各参数说明如下:REFERENCES:指定要建立关联的表的信息ref_table:指定要建立关联的表的名称ref_column:指定要建立关联的表中的相关列的名称156ONDELETE{CASCADE|NOACTION}:指定在删除表中数据时,对关联表所做的相关操作。在子表中有数据行与父表中的对应数据行相关联的情况下,如果指定了值CASCADE,则在删除父表数据行时,会将子表中对应的数据行删除。如果指定的是NOACTION,则SQLServer会产生一个错误,并将父表中的删除操作回滚。NOACTION是缺省值ONUPDATE{CASCADE|NOACTION}:指定在更新表中数据时,对关联表所做的相关操作。在子表中有数据行与父表中的对应数据行相关联的情况下,如果指定了值CASCADE,则在更新父表数据行时会将子表中对应的数据行更新;如果指定的是NOACTION,则SQLServer会产生一个错误并将父表中的更新操作回滚。NOACTION是缺省值。NOTFORREPLICATION:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论