我们可以建立角色来代表组织内某类工作人员所执行的工作,并授与该角色适当的使用权限。当工作人员轮调到这个工作时,只要将他们加入成为角色的成员;当他们轮调出这个工作时,则将他们移出角色。您不必在每个人接任或调离工作时,一再授权、拒绝与撤销他们的使用权限。当用户成为角色的成员时,就会自动套用使用权限。
6. 规则
规则是用来设置检查条件、确保数据的合理性、执行与CHECK条件约束一样的功能,它的存在主要是为了与先前的版本兼容。在限制数值数据行方面,使用CHECK条件约束是较优先、标准的方式,而且CHECK条件约束也比规则更为简洁,一个数据行只能套用一个规则,但可以套用多个CHECK条件约束。CHECK条件约束是CREATE TABLE语句的一部分,而规则则是建立成个别的对象,然后再与数据行连接。
7. 默认
默认对象是用来定义默认值,如果插入数据行时不指定数据行的值,该数据行就会使用其所定义的默认值。这个默认值可以是验算出常数的任何项目,如:常数、内建函数、数学表达式。
在设置默认值时,可以直接在定义表时,为数据行指定默认值;也可以先定义默认对象,然后再将默认对象关联到数据列。
8. 用户自定义数据类型
用户自定义的数据类型是以SQL Server的系统数据类型为基础,用户自定义的数据类型。一般来说,用户自定义数据类型通常是在当用户必须确保多个表存储相同的数据的数据行其数据类型、长度和Null值属性完全一样时使用。例如,我们可以为产品代号制定一个用户自定义数据类型prod_code,这个prod_code数据类型是以char数据类型为基础所定义出来的。
9. 用户自定义函数
在程序语言中,函数是指用来封装经常执行的逻辑子程序。如果有任何程序代码必须执行该函数中的逻辑,可以调用该函数,而不必重复所有的函数逻辑。在SQL Server中也允许用户自行将一或多个Transact-SQL语句组成的子程序封装成程序代码,以便重复使用。
用户自定义函数是使用CREATE FUNCTION语句来建立的,用户必须具有CREATE FUNCTION权限才可以建立、改变或丢弃用户自定义函数,而每一个完整的用户自定义函数名称都必须是唯一的。
自定义函数拥有者以外的用户若要在Transact-SQL语句中使用该函数,必须先被授与适当的函数权限。若要建立或更改参考CHECK条件约束、DEFAULT子句或计算数据行定义的用户自定义函数的表,也必须具有函数的REFERENCES权限。
10. 触发程序
触发程序是一种特殊的存储过程,它被定义在对表或视图表发出 UPDATE,INSERT或DELETE语句时自动执行,用来在改变数据时自动强制业务规则,或是在处理超出定义的安全界限时进行因应处理程序,如传送电子邮件通知。我们可以利用它来延伸SQL Server条件约束、默认值与规则的完整性检查逻辑,但当条件约束与默认值可提供所需的功能时,就应该使用条件约束与默认值。
表可以有多个触发程序,CREATE TRIGGER语句中通过FOR UPDATE,FOR INSERT或FOR DELETE子句,使触发程序将目标放在特定种类的数据修改动作。在指定FOR UPDATE时,可以使用IF UPDATE (column_name)子句,使触发程序将目标放在特定数据列的更新上。
11. 条件约束
条件约束定义有关数据行中允许值的规则,用来设置SQL Server自动强制数据完整性的方式。使用时,条件约束应优先于触发程序、规则与默认值。查询最佳化器也是使用条件约束定义来建立高效率的查询执行计划。
12. 索引
索引是一种与表或视图有关的结构,它会加速从表或视图表中撷取数据行的速度。索引中包含由表或视图表的一个或多个数据列所建立的索引键,这些索引键让SQL Server可以快速有效地找到与索引键值相关的一或多个数据行。
5-4-2 数据库的实体结构
前面所介绍的数据库对象,在数据库系统中实际上是以文件形式存在,这些文件就是数据库的实体结构。在SQL Server中将数据库的实体结构分为数据文件(Data File)与事务日志(Transaction Log)文件两种类型,其中数据文件是用来存储数据库的数据内容,而事务日志文件则是记录事务记录。另外,SQL 2000还进一步提供可以将数据库文件分卸成多个文件进行存储。
1. 主数据文件
每一个数据库都一定会有一个(也只会有一个)主数据文件,这个主数据文件中记录了数据库的起始信息、数据文件成员以及数据库的对象成员,如表、视图表、规则等。
SQL Server数据文件的扩展名为mdf,默认数据库主数据文件的文件名为“数据库名称.mdf”。例如,pubs数据库的主数据文件为pubs.mdf。主数据文件一旦建立了之后,就不能将它删除,除非将整个数据库删除。
2. 次数据文件
不像以前的SQL版本只能将整个数据库的内容全部存放在同一个数据文件上,我们可以将数据库存成多个数据文件,一个主数据文件与多个次数据文件。次数据文件的扩展名为.ndf,一旦为数据库建立一个数据文件后,就不能再更改数据文件的位置,但次数据文件可以被删除。
通常我们并不需要为数据库建立次数据文件,除非数据库的内容太多,单一数据文件无法负荷,需要使用次数据文件另行开辟数据的存储位置,或是分散提高数据的存取效率。
3. 事务日志文件
事务日志文件是用来记录数据库的事务活动记录,收集该数据库的完整事务过程,提供SQL Server作为取消事务、回存事务动作的参考依据,以便在数据库损坏时,能利用事务日志文件中记录的事务内容修复数据库结构。
默认事务日志文件的扩展名为ldf,例如,pubs数据库的事务日志文件为pubs.ldf,但我们可以自行指定其他的扩展名,而不要使用ldf。
5-4-3 文件组
当我们为数据库指定多个数据文件时,可以应用SQL Server的文件组功能来管理这些数据文件。这里的文件组并不是根据实体的位置进行区分,而是根据数据文件内要存储的对象项目进行区分。例如,如果我们建立了多个文件组,当建立一个新的对象时,可以自行指定该对象要存放到哪一个文件组中存储。通过文件组的使用,可以分散数据库的存储位置,避免过度占用一个磁盘空间,或磁盘空间占满造成系统无法运作的状况。
1. 文件组的组成
在SQL Server中,包含主数据文件的文件组称为“主文件组(Primary Filegroup)”,其他的文件组则称为“自定义文件组(User-defined Filegroup)”。一个数据库只有一个主文件组,这个主文件组在数据库建立时就已经存在。
由于系统表是存放在主文件组内,如果主文件组的磁盘空间满了,系统表将无法动作,数据库也就无法运行。因此,建立不同的文件组,将一些较次要的表指定到其他的自定义文件组内存储(最好在不同的磁盘上),分散存储空间,减少主文件组塞满的情况,毕竟仅是自定义文件组塞满,不会发生数据库无法执行的问题。
2. 文件组的数据存储方式
文件组的数据存储方式是平均分配分散存放于各个数据文件中,同时使用所有的数据文件,而不是依次一次写到一个数据文件中,等数据文件填满后再写到另一个数据文件中。使用这种平均分散存储的方式,可以让各个数据文件同时增长,而不会造成数据过度集中于同一个数据文件(磁盘驱动器)上。
3. 数据只读
在SQL Server中,可以将某一个文件组设置为只读状态,使得文件组内的所有对象与数据皆无法变动。这对于一些不希望被更改的数据而言非常好,因为我们只要将这些表指定成同一个文件组,并将该文件组设置为只读状态就可以了,而不需要一个表一个表地设置。
5-5 创建新的数据库
看完这么多有关数据库的信息,接下来就开始建置自己的数据库。常见的建立数据库方法有:
· 使用Enterprise Manager管理工具。
· 利用创建数据库向导。
· 使用SQL语句——CREAT TABLE指令。
5-5-1 使用Enterprise Manager管理工具
在Enterprise Manager管理对话框中,建立数据库的设置是通过一个“数据库属性”对话框来完成的,这个“数据库属性”对话框包含“常规”、“数据文件”与“事务日志”三个选项卡,分别设置数据库的名称、数据文件的位置与文件属性,以及事务日志文件的文件位置与属性。对于每一个数据文件,可以设置它的起始大小、是否允许自动增长以及文件大小的上限。
下图为数据库属性对话框的“数据文件”选项卡的画面,在上方的数据库文件清单中,每一个字段分别代表数据库文件的文件名称、文件路径位置、起始文件大小、文件组,我们为数据库指定一个或多个数据文件。不过,必须注意的是,一旦在这为它指定了数据文件并且建立后,数据文件的路径位置就不能再更改,因此在设置数据文件时,请利用数据文件名称旁的
下方的文件属性是用来设置选取的数据文件的自动增长特性,也就是设置当数据库的数据量填满数据文件时要如何处理。
· “文件自动增长”选项组是用来设置是否要自动扩增数据文件的大小,选取“文件自动增长”复选框,表示要在数据文件占满时自动扩增数据文件的大小;反之,不选取,则数据文件将不会扩增。
· “文件增长”是设置当数据文件要自动扩增时要扩增的大小,我们可以选择以固定的MB来设置扩增量,也可以以增长的百分比来表示,例如上图设置表示要扩增10%的空间。
· “最大文件大小”是设置数据文件的增长上限,也就是设置数据文件大小限制,在这里可以选择不设限制,让数据文件无限扩充,直到占满整个磁盘空间为止。
现在就来看看如何在Enterprise Manager中建立一个新的数据库,在下面的步骤中,将在我们的SQL Server(YY)中建立一个名称为Trade的数据库。
(1)首先在树状目录窗格中选取要建立新数据库的SQL服务器(YY)如图5-19所示,然后在工具栏上单击
(2
上一页 [1] [2] [3] [4] [5] [6] [7] 下一页