数据独立性是指应用程序和数据之间相互独立、不受影响,即数据结构的修改不会引起应用程序的修改.数据独立性包括:物理数据独立性和逻辑数据独立性.物理数据独立性是指数据库物理结构改变时不必修改现有的应用程序.逻辑数据独立性是指数据库逻辑结构改变时不用改变应用程序.数据独立性是由DBMS的二级睁像功能来实现的.当整个系统要求改变模式时(增加记录类型、增加数据项,由DBMS对各个外模式/模式的映像做相应改变,从而保证了数据的逻辑独立性.当数据的存储结构改变时,由DBMS对模式/内模式的映像做相应改变,从而保证了数据的物理独立性
楼主 首先我们应该明白xml的作用:
XML的简单使其易于在任何应用程序中读写数据,这使XML成为数据交换的唯一公共语言,虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将支持XML,那就意味着程序可以更容易的与Windows、Mac OS, Linux以及其他平台下产生的信息结合,然后可以很容易加载XML数据到程序中并分析他,并以XML格式输出结果。
————————————————————————
由上面我们可以得知,XML成为数据交换的唯一公共语言,异构系统 甚至 异构平台的信息交互 都要靠xml传输数据,举个例子:
net 开发的系统 和 java开发的系统 如何进行数据交换,如何进行深度整合和互 *** 作,考得就是webservice,而现在webservice数据格式一般都是采用xml的,因为xml是数据交换的事实上的工业标准了,通过它我们可以“穿透那个可亲又讨厌的防火墙” 呵呵
数据一般都是从数据库中取出的吧,所以 研究xml与数据库数据的互相转化和映射关系,就显的非常重要了。
————————————————————————
XML在Web领域已经得到了广泛的应用,而XML数据库一直是个研究热点。各数据库厂商及研究机构纷纷投入对XML技术的研究及开发。大体上可以把XML数据库分为两类:原生XML数据库(Native XML Database)和使能XML数据库(Enable XML Database)。而XML数据一般可划分为粗粒度、中粒度及细粒度三种形式。以文档为中心的粗粒度形式,一般采用原生XML数据库,而以数据为中心的细粒度形式一般采用使能XML数据库。
XML数据是嵌套的树形结构,而关系数据库是简单、平面的二维表结构,结构的差异性,使得在存储XML数据时需要按一定的映射规则进行转换,并使能够恢复到原XML文件。
XML文件物理结构上由多种元素组成,本文的研究只考虑常用的ELEMENT、TEXT、ATTRIBUTE三种元素,采用三个表来保存XML数据。主要思想是把树结构中的中间节点(非属性和文本节点)放入mNode(Middle Node)表,叶子节点(属性和文本节点)放入eNode(End Node)表,另外一个是ePath表,用于保存从根节点到叶子节点的路径。当然保存多个XML时,我们会引入一个用于保存区分各个XML的表。详细说明如下:
1) Path(pathID, path)
该表主要保存从根结点到各个叶子结点的所有不同的路径,在查询时可满足类似于Xpat的查询。
pathID:各不同的路径标识符,在解析过程中产生。
path:实际路径名称。
2)mNode(nodeID, nodeName, parentID, order, pathID)
该表主要通过指定parentID来保存各节点间的父子关系,以保持原XML的树型结构。
nodeID:节点的唯一标识符,在解析过程中产生。
nodeName:节点的名称,即XML中的实际名称。
parentID:父节点的标识符,根节点置为-1。
order:兄弟节点的先后次序。
pathID:从根结点到本节点所走的路径。
3)eNode(nodeName, nodeValue, parentID, order, type)
该表主要保存属性及文本节点的值。
nodeName:属性名,如果是文本节点则取其父节点名。
nodeValue:属性文本值。
parentID:父节点的标识符。
order:兄弟节点的先后次序。
type:用于区分属性还是文本的标量。
4转换方法
从XML到SQL,一般都是采用递归算法,先根遍历XML树结构,而从SQL返回到XML时,一般采用队列生成XML节点。递归过程一般要消耗较多的时间和空间,在处理较大结构的XML时,性能上不是很理想。
本模型在XML和SQL中放入一个中间层,该层中主要有根据DTD或Schema生成的一系列Bean、一个 *** 作SQL的模块、一个 *** 作XML的模块,另外在此基础上还可以方便扩展给其他业务逻辑层调用的模块。结构如下图所示:
JavaBeans:这里所说的JavaBeans是根据XML 对应的DTD或Schema所产生的有级联关系的类。通过这些类逻辑上形成一棵XML树形结构,用于存放实际XML数据。对于如下的一部分DTD:
<! ELEMENT book (title, price, author+)>
<! ATTLIST book year CDATA>
<! ELEMENT title (#PCDATA)>
<! ELEMENT price (#PCDATA)>
我们可以设计一个BookItem类,它包括一个TitleTxt字段、一个PriceTxt字段、一个AuthorBean字段以及一个YearAttr字段,其中AuthorBean由多个AuthorItem组成,类似的,AuthorItem包含它下面的节点信息。在这个过程中,可以完成ePath表的信息建立。
根据前面的映射模型,对于BookItem类的title字段,设计如下形式的类结构:
Public Class BookItem(){
Private String titleTxt;
Public setTitleTxt(String title){}
Public getTitleTxt(){}
Public setTitleParentID(int parentID){}
Public getTitleParentID(){}
Public setTitleOrder(){int order}
Public getTitleOrder(){}
…
}
而对于AuthorBean类,类结构设计如下:
Public Class AuthorBean(){
Private Vector beanVector;
Public void add(AuthorItem authorItem){}
Public AuthorItem getByIndex(int index){}
Public int getSize(){}
…
}
从结构上容易看出,代码量非常大,但由于都是一些get()和set()方法,这些代码不用通过手工去撰写,而是根据DTD或Scheme的信息自动生成。在过程①及过程④中调用set()方法,在过程②及过程③中调用get()方法。
XML Operator:该模块可以支持DOM、SAX解析。根据层次信息依次解析每个节点,此过程中记录父子节点关系,并且记录一个节点中所有子节点的先后顺序,并设定到Bean中。
SQL Operator:该模块主要是把Bean中的信息写入数据库,以及从数据库中读取信息供重组XML。
楼主,希望我的给出信息和资料对你的问题的解决 有所帮助!:-)
1开发速度
MyBatis支持的学习相比Hibernate更简单,支持原生sql,学习更简单。Hibernate的学习难度更大。开发速度差距不大。MyBatis要维护dao层数据库字段和bean属性映射,Hibernate要在bean中添加字段映射。
2运行效率
MyBatis支持原生sql自定义查询字段更加灵活,基本属于JDBC *** 作。hibernate是对JDBC更复杂的封装。每次查询需要完整的映射,对待复杂的查询通过HQL语句生成的sql语句效率不能保证。所以MyBatis会比Hi稍快。
:
相同点:他们都是市面上流行的ORM框架。他们均是通过xml配置生成sessionFactory然后通过sessionFactory生成session执行sql和管理事务。他们都支持JDBC和事务管理。
最好的做法是每张表对应一个实体类bean,如果一张表关联其他表,把这张表对应的实体类加上就可以了。如果使用了Hibernate,就可以使用配置文件进行映射。
A
实体类就是属性类,通常定义在model层里面。
B
一般的实体类对应一个数据表,其中的属性对应数据表中的字段,这样做对数据库 *** 作起来方便。
这样做的好处:
1对对象实体的封装,体现OO思想。
2属性可以对字段定义和状态进行判断和过滤
3把相关信息用一个实体类封装后,我们在程序中可以把实体类作为参数传递,更加方便。
C
说白了就是为了让程序员在对数据库 *** 作的时候不用写SQL语句
D
就是一个数据库表生成一个类
大致的讲主要是根据用户的需求,然后设计数据库的E-R模型,然后将E-R模型图转换为各种表,并对其进行数据库设计范式(范式因不同书籍有不同)的审核,然后进行数据库的实施,然后运行维护。
一句话来讲就是将用户的需求变成带有各种关系的表,以及其它的数据库结构,然后供编程使用
具体如下:
按照规范设计的方法,考虑数据库及其应用系统开发全过程,将数据库设计分为以下六个阶段
(1)需求分析。
(2)概念设计。
(3)逻辑设计。
(4)物理设计。
(5)数据库实施。
(6)数据库运行和维护。
5.1.1需求分析阶段
进行数据库设计首先必须准确了解与分析用户需求,包括数据与处理需求。需求分析是整个设计过程的基础,是最困难、最耗时的一步。作为“地基”的需求分析是否做得充分与准确,决定了在其上构建“数据库大厦”的速度与质量。需求分析做得不好,可能会导致整个数据库重新设计,因此,务必引起高度重视。
5.1.2概念模型设计阶段
在概念设计阶段,设计人员仅从用户角度看待数据及其处理要求和约束,产生一个反映用户观点的概念模式,也称为“组织模式”。概念模式能充分反映现实世界中实体间的联系,又是各种基本数据模型的共同基础,易于向关系模型转换。这样做有以下好处:
(1)数据库设计各阶段的任务相对单一化,设计复杂程度得到降低,便于组织管理。
(2)概念模式不受特定DBMS的限制,也独立于存储安排,因而比逻辑设计得到的模式更为稳定。
(3)概念模式不含具体的DBMS所附加的技术细节,更容易为用户所理解,因而能准确地反映用户的信息需求。
概念模型设计是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。如采用基于E-R模型的数据库设计方法,该阶段即将所设计的对象抽象出E-R模型;如采用用户视图法,则应设计出不同的用户视图。
5.1.3逻辑模型设计阶段
逻辑模型设计阶段的任务是将概念模型设计阶段得到的基本E-R图,转换为与选用的DBMS产品所支持的数据模型相符合的逻辑结构。如采用基于E-R模型的数据库设计方法,该阶段就是将所设计的E-R模型转换为某个DBMS所支持的数据模型;如采用用户视图法,则应进行表的规范化,列出所有的关键字以及用数据结构图描述表集合中的约束与联系,汇总各用户视图的设计结果,将所有的用户视图合成一个复杂的数据库系统。
5.1.4数据库物理设计阶段
数据库的物理结构主要指数据库的存储记录格式、存储记录安排和存取方法。显然,数据库的物理设计完全依赖于给定的硬件环境和数据库产品。在关系模型系统中,物理设计比较简单一些,因为文件形式是单记录类型文件,仅包含索引机制、空间大小、块的大小等内容。
物理设计可分五步完成,前三步涉及到物理结构设计,后两步涉及到约束和具体的程序设计:
(1)存储记录结构设计:包括记录的组成、数据项的类型、长度,以及逻辑记录到存储记录的映射。
(2)确定数据存放位置:可以把经常同时被访问的数据组合在一起,“记录聚簇(cluster)”技术能满足这个要求。
(3)存取方法的设计:存取路径分为主存取路径及辅存取路径,前者用于主键检索,后者用于辅助键检索。
(4)完整性和安全性考虑:设计者应在完整性、安全性、有效性和效率方面进行分析,作出权衡。
(5)程序设计:在逻辑数据库结构确定后,应用程序设计就应当随之开始。物理数据独立性的目的是消除由于物理结构的改变而引起对应用程序的修改。当物理独立性未得到保证时,可能会引发对程序的修改。
数据库物理设计是为逻辑数据模型选取一个最适合应用环境的物理结构,包括存储结构和存取方法。
5.1.5数据库实施阶段
根据逻辑设计和物理设计的结果,在计算机系统上建立起实际数据库结构、装入数据、测试和试运行的过程称为数据库的实施阶段。实施阶段主要有三项工作。
(1)建立实际数据库结构。对描述逻辑设计和物理设计结果的程序即“源模式”,经DBMS编译成目标模式并执行后,便建立了实际的数据库结构。
(2)装入试验数据对应用程序进行调试。试验数据可以是实际数据,也可由手工生成或用随机数发生器生成。应使测试数据尽可能覆盖现实世界的各种情况。
(3)装入实际数据,进入试运行状态。测量系统的性能指标,是否符合设计目标。如果不符,则返回到前面,修改数据库的物理模型设计甚至逻辑模型设计。
5.1.6数据库运行和维护阶段
数据库系统正式运行,标志着数据库设计与应用开发工作的结束和维护阶段的开始。运行维护阶段的主要任务有四项:
(1)维护数据库的安全性与完整性:检查系统安全性是否受到侵犯,及时调整授权和密码,实施系统转储与备份,发生故障后及时恢复。
(2)监测并改善数据库运行性能:对数据库的存储空间状况及响应时间进行分析评价,结合用户反应确定改进措施。
(3)根据用户要求对数据库现有功能进行扩充。
(4)及时改正运行中发现的系统错误。
一
1、不同之:组织方式文件系统的文件通常是由 *** 作系统规定的,但是功能方面比较简单,方便查找定位之用,文件与文件之间不能调用数据;而数据库中的文件是由数据库软件组织的,其程度很高,能方便查找,更重要是它们之间联系紧密!能相互传递据
2、(1)物理数据层。它是数据库的最内层,是物理存贮设备上实际存储的数据的集合。这些数据是原始数据,是用户加工的对象,由内部模式描述的指令 *** 作处理的位串、字符和字组成。
(2)概念数据层。它是数据库的中间一层,是数据库的整体逻辑表示。指出了每个数据的逻辑定义及数据间的逻辑联系,是存贮记录的集合。它所涉及的是数据库所有对象的逻辑关系,而不是它们的物理情况,是数据库管理员概念下的数据库。
(3)逻辑数据层。它是用户所看到和使用的数据库,表示了一个或一些特定用户使用的数据集合,即逻辑记录的集合。
3、程序和数据的独立性是数据库的主要特征之一作为工程数据库管理系统,也必须保持这个特征为此,介绍了具体的工程数据库管理系统EDRMS程序与数据的独立性实现,并用实例予以说明
二
1、a关系:关系是一个二维表,表的每行对应一个元组,表的列对应属性。
b属性:指关系中的列;
域:值的集,每个属性的取值的范围;
元组(Tuple):给出一组域产生笛卡儿乘积D1,D2…Dn,产生笛卡儿乘积D1D2…Dn=其中(d1,d2dn)为元组。
c
关系的表:是一个简单的表,不准许出现组合的属性。
d用二维表的形式来表示实体集属性间的关系,以及实体之间联系的形式。
三
1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。
自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。
四
1、在SQL Server 2000 中,数据库由存储特定结构化数据集的表集合组成。表中包含行(有时称作记录或元组)和列(有时称作特性)的集合。表中的每一列都设计为存储某种类型的信息(例如,日期、名称、美元金额或数字)。表上有几种控制(约束、规则、触发器、默认值和自定义用户数据类型)用于确保数据的有效性。表上可以有索引,利用索引可以快速地找到行。可将声明引用完整性 (DRI) 约束添加到表上,以确保不同表中相互关联的数据保持一致。数据库还可以存储过程,这些过程使用 Transact-SQL 编程代码对数据库中的数据进行 *** 作,如存储对表数据提供自定义访问的视图。
2、SQL Server 2000 使用一组文件映射数据库。数据库中的所有数据和对象(如表、存储过程、触发器和视图)都存储在文件组中。
3、主要数据文件,次要数据文件,事务日志文件
4、因为利用事务日志备份可以将数据库恢复到特定的即时点(如输入不想要的数据之前的那一点)或故障发生点。在媒体恢复策略中应考虑利用事务日志备份。
五
1、表是包含数据库中所有数据的数据库对象。表定义为列的集合。
2、每行代表惟一的一条记录,而每列代表记录中的一个域。
3、一对多关系,多对多关系,一对一关系
六
1、Transact-Sql语言的分类如下:
数据类型
变量说明
用来说明变量的命令
流程控制语句
2、null表示空值;与其他的比较既非空于空值的区别;null在表中即为空挡数据。
5、通常与LIKE关键字一起来使用
可以用在检查约束中使用LIKE
在后面的查询语句中还会经常使用到
6、ORDER BY是一个可选的子句,它允许你根据指定要order by的列来以上升或者下降的顺序来显示查询的
9、SQL;文本文档
八
数据库中的索引与书籍中的目录类似。在一本书中,利用目录可以快速查找所需信息,无须阅读整本书。在数据库中,索引使数据库程序无须对整个表进行扫描,就可以在其中找到所需数据。数据库中的索引是一个表中所包含的值的列表,其中注明了表中包含各个值的行所在的存储位置。可以为表中的单个列建立索引,也可以为一组列建立索引;索引采用B树结构。索引包含一个条目,该条目有来自表中每一行的一个或多个列(搜索关键字)。B树按搜索关键字排序,可以在搜索关键字的任何子词条集合上进行高效搜索。例如,对于一个A、B、C列上的索引,可以在A,A、B,A、B、C上对其进行高效搜索。
在随SQL Server 2000 提供的pubs示例数据库中,employee表在emp_id列上有一个索引。当SQL Server执行一个语句,在employee 中根据指定的emp_id值查找数据时,它能够识别emp_id列的索引,并使用该索引查找所需数据。如果该索引不存在,它会从表的第一行开始,逐行搜索指定的emp_id值。
SQL Server 2000为某些类型的约束(如PRIMARY KEY和UNIQUE约束)自动创建索引。可以通过创建不依赖于约束的索引,进一步对表定义进行自定义。
不过,索引为性能所带来的好处却是有代价的。带索引的表在数据库中会占据更多的空间。另外,为了维护索引,对数据进行插入、更新、删除 *** 作所花费的时间会更长。在设计和创建索引时,应确保对性能的提高程度大于在存储空间和处理资源方面的代价。
在考虑是否为一个列创建索引时,应考虑被索引的列是否以及如何用于查询中。索引对下列查询很有帮助:
l 搜索符合特定搜索关键字值的行(精确匹配查询)。精确匹配比较是指查询使用 WHERE 语句指定具有给定值的列条目。例如WHERE emp_id = 'VPA30890F'。
l 搜索其搜索关键字值为范围值的行(范围查询)。范围查询是指查询指定其值介于两个值之间的任何条目。例如WHERE job_lvl BETWEEN 9 and 12。
l 在表 T1 中搜索根据联接谓词与表 T2 中的某个行匹配的行(索引嵌套循环联接)。
l 在不进行显式排序 *** 作的情况下产生经排序的查询输出,尤其是经过排序的动态游标。
l 在不进行显式排序 *** 作的情况下,按一种有序的顺序对行进行扫描,以允许基于顺序的 *** 作,如合并联接和流聚合。
l 以优于表扫描的性能对表中所有的行进行扫描,性能提高是由于减少了要扫描的列集和数据总量(该查询有覆盖索引可供使用)。
l 搜索插入和更新 *** 作中重复的新搜索关键字值,以实施PRIMARY KEY和 UNIQUE 约束。
l 搜索已定义了FOREIGN KEY约束的两个表之间匹配的行。
在很多查询中,索引可以带来多方面的好处。例如,索引除了可以覆盖查询外,还使得可以进行范围查询。SQL Server 2000可以在同一个查询中为一个表使用多个索引,并可以合并多个索引,以便搜索关键字共同覆盖一个查询。另外,SQL Server会自动确定利用哪些索引进行查询,并且能够在表被改动时确保该表的所有索引都得到维护。
一个表如果建有大量索引会影响 INSERT、UPDATE 和 DELETE 语句的性能,因为在表中的数据更改时,所有索引都须进行适当的调整。另一方面,对于不需要修改数据的查询(SELECT 语句),大量索引有助于提高性能,因为SQL Server 2000有更多的索引可供选择,以便确定以最快速度访问数据的最佳方法。对小型表进行索引可能不会产生优化效果,因为 SQL Server 2000在遍历索引以搜索数据时,花费的时间可能会比简单的表扫描还长。
九
视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其他数据库的一个或多个表,或者其他视图。分布式查询也可用于定义使用多个异类源数据的视图。如果有几台不同的服务器分别存储组织中不同地区的数据,而用户需要将这些服务器上相似结构的数据组合起来,这种方式就很有用。通过视图进行查询没有任何限制,通过它们进行数据修改时的限制也很少。
视图通常用来集中、简化和自定义每个用户对数据库的不同认识。视图可用作安全机制,方法是允许用户通过视图访问数据,而不授予用户直接访问视图基础表的权限。从SQL Server 2000 复制数据时也可使用视图来提高性能并分区数据。
视图可以简化用户 *** 作数据的方式。可将经常使用的联接、投影、联合查询和选择查询定义为视图,这样,用户每次对特定的数据执行进一步 *** 作时,不必指定所有条件和限定。例如,一个用于报表目的,并执行子查询、外联接及聚合以从一组表中检索数据的复合查询,就可以创建为一个视图。视图简化了对数据的访问,因为每次生成报表时无需写或提交基础查询,而是查询视图。
视图允许用户以不同的方式查看数据,即使他们同时使用相同的数据时也如此。这在具有不同目的和技术水平的用户共享同一个数据库时尤为有利。例如,可定义一个视图以仅检索由客户经理处理的客户数据。视图可以根据使用该视图的客户经理的登录 ID 决定检索哪些数据。
可使用视图将数据导出至其他应用程序。例如,可能希望使用pubs数据库中的stores和sales表在Excel中分析销售数据。为此,可创建一个基于stores和sales表的视图。然后使用数据导入导出工具导出由视图定义的数据。
Transact-SQL UNION 集合运算符可在视图内使用,以将来自不同表的两个或多个查询结果组合成单一的结果集。这在用户看来是一个单独的表,称为分区视图。例如,如果一个表含有华盛顿的销售数据,另一个表含有加利福尼亚的销售数据,即可从 UNION 创建这两个表的视图。该视图代表了这两个区域的销售数据。使用分区视图时,首先创建几个相同的表,指定一个约束以决定可在各个表中添加的数据范围。视图即使用这些基表创建。当查询该视图时,SQL Server 自动决定查询所影响的表,并仅引用这些表。例如,如果一个查询指定只需要华盛顿特区的销售数据,则 SQL Server 只读取含有华盛顿特区销售数据的表,而并不访问其余的表。分区试图可基于来自多个异类源(如远程服务器)的数据,而不仅仅局限于同一数据库中的表。例如,要将分别存储组织中不同区域数据的几台远程服务器上的数据组合起来,可以创建分布式查询,从每个数据源中检索数据,然后基于这些分布式查询创建视图。所有查询都只从包含查询所请求数据的远程服务器上读取表中的数据,其他在视图中由分布式查询引用的服务器均不被访问。
十
在使用SQL Server 2000 创建应用程序时,Transact-SQL编程语言是应用程序和SQL Server数据库之间的主要编程接口。使用Transact-SQL程序时,可用两种方法存储和执行程序。可以在本地存储程序,并创建向SQL Server发送命令并处理结果的应用程序;也可以将程序在SQL Server中存储为存储过程,同时创建执行存储过程并处理结果的应用程序。
SQL Server 2000中的存储过程与其他编程语言中的过程类似,利用存储过程可以完成以下任务。
l 接受输入参数并以输出参数的形式将多个值返回至调用过程或批处理。
l 包含执行数据库 *** 作(包括调用其他过程)的编程语句。
l 向调用过程或批处理返回状态值,以表明成功或失败(以及失败原因)。
l 可使用 Transact-SQL EXECUTE 语句运行存储过程。存储过程与函数不同,因为存储过程不返回取代其名称的值,也不能直接用在表达式中。
使用SQL Server 2000中的存储过程代替存储在客户计算机本地的Transact-SQL程序有很多的好处。
l 允许模块化程序设计。只需创建过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次。存储过程可由在数据库编程方面有专长的人员创建,并可独立于程序源代码而单独修改。
l 允许更快执行。如果某 *** 作需要大量Transact-SQL代码或需重复执行,存储过程将比Transact-SQL批代码的执行要快。将在创建存储过程时对其进行分析和优化,并可在首次执行该过程后使用该过程的内存中版本。每次运行Transact-SQL语句时,都要从客户端重复发送,并且在SQL Server 2000每次执行这些语句时,都要对其进行编译和优化。
l 减少网络流量。一个需要数百行Transact-SQL代码的 *** 作由一条执行过程代码的单独语句就可实现,而不需要在网络中发送数百行代码。
l 可作为安全机制使用。即使对于没有直接执行存储过程中语句的权限的用户,也可授予他们执行该存储过程的权限。
十一
SQL Server 2000 提供了两种主要机制来强制业务规则和数据完整性:约束和触发器。触发器是一种特殊类型的存储过程,它在指定的表中的数据发生变化时自动生效。唤醒调用触发器以响应INSERT、UPDATE或DELETE语句。触发器可以查询其他表,并可以包含复杂的Transact-SQL语句。触发器和触发它的语句要作为可在触发器内回滚的单个事务对待。如果检测到严重错误(例如磁盘空间不足),则整个事务即自动回滚。
触发器可通过数据库中的相关表实现级联更改。触发器可以强制CHECK约束定义的约束更为复杂的约束。与CHECK约束不同,触发器可以引用其他表中的列。例如,触发器可以使用另一个表中的SELECT比较插入或更新的数据,以及执行其他 *** 作,如修改数据或显示用户定义错误信息。触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。一个表中的多个同类触发器(INSERT、UPDATE或DELETE)允许采取多个不同的对策以响应同一个修改语句。
约束和触发器在特殊情况下各有优势。触发器的主要好处在于它们可以包含使用Transact-SQL代码的复杂处理逻辑。因此,触发器可以支持约束的所有功能;但它在所给出的功能上并不总是最好的方法。
实体完整性总应在最低级别上通过索引进行强制,这些索引或是PRIMARY KEY和UNIQUE约束的一部分,或是在约束之外独立创建的。假设功能可以满足应用程序的功能需求,域完整性应通过CHECK约束进行强制,而引用完整性则应通过FOREIGN KEY约束进行强制。
十二
先创建登录名,可以是windows登录名也可以sql登录名
windows登录名是windows *** 作系统已经存在的用户名
sql登录名要在sql中创建而得的
要创建windows登录名:
例如:已经在windows中存在一个pkxz用户,域名是xxiang
create login [xxiang\pkxz] from windows with default_database = css
alter login pkxz with name=ppp
drop login pkxz
注意:只有administrators组的用户可以访问所有实例,并可获所有访问权,
其余本地用户组里的组,只能相对应的访问实例。
例如:chenshanshan是users用户组里的,是[xxinag2006\pkxz]实例的域用户帐户,
chenshanshan只能访问这个实例,并可获所有访问权。
例如:joan是users用户组里的,是[xxinag2006\pkxz]实例的登录名,joan只能访问这个实例。
要创建sql登录名:
sql用户名是pkxz
create login pkxz with password ='xx121314' , default_database = css
alter login pkxz with password = 'pp'
drop login pkxz
注意:sql用户名只能相对应的访问实例
例如:pc是[xxiang\pkxz]的登录名,只能访问这个实例,不可访问别的实例。
两者都创建了登录名,且都是css为默认数据库
然后创建完后把登录名授予角色
sp_addsrvrolemember 'pkxz','sysadmin'
sp_dropsrvrolemember 'pkxz','sysadmin'
服务器角色只能访问相对应的实例 *** 作!不能访问别的实例!
创建用户
Ceate user pkxz_user from login pkxz with default_schema = pkxz_schema
如果没有创建架构的话,默认是dbo架构,这里是pkxz_schema
创建架构
创建架构的同时还可以创建该架构所拥有的表,视图,羡慕且可以对这些对象设轩权限。
create schema pkxz_schema authorization pkxz_user
Create Table pp (pp int)
Grant Select To pkxz_user_1
数据库角色
可以自己添加,还有内置固定数据库角色
自己添加角色
create role CreateTable authorization pkxz_user // CreateTable是角色名
分配权限
Grant Insert To CreateTable
添加成员
sp_addrolemember 'CreateTable','pkxz_user_1'
public角色的两个特点,1、初始状态没有权限 2、所有的数据库的成员都是他的成员
当修改了public角色,其实更改了所有数据库成员的权限
权限的管理
Grant 授予 Revoke 收回权限 Deny 否认权限
例如:将一个表pt的插入权限授予pkxz_user_1
Grant Insert On pt To pkxz_user_1
以上就是关于数据库系统系统依靠什么支持数据独立性全部的内容,包括:数据库系统系统依靠什么支持数据独立性、XML 和数据库之间的映射有什么作用、mybatis和hibernate的区别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)