数据库中Schema和Database有什么区别?

数据库中Schema和Database有什么区别?,第1张

在MySQL中创建一个Schema好像就跟创建一个Database是一样的效果,在SQLServer和Orcal数据中好像又不一样.目前我只能理解,在mysql中schemadatabase。\x0d\x0a\x0d\x0a数据库中User和Schema的关系\x0d\x0a假如我们想了解数据库中的User和Schema究竟是什么关系,首先必须了解一下数据库中User和Schema到底是什么概念。\x0d\x0a\x0d\x0a在SQLServer2000中,由于架构的原因,User和Schema总有一层隐含的关系,让我们很少意识到其实User和Schema是两种完全不同的概念,不过在SQLServer2005中这种架构被打破了,User和Schema也被分开了。\x0d\x0a\x0d\x0a\x0d\x0a首先我来做一个比喻,什么是Database,什么是Schema,什么是Table,什么是列,什么是行,什么是User?我们可以可以把\x0d\x0aDatabase看作是一个大仓库,仓库分了很多很多的房间,Schema就是其中的房间,一个Schema代表一个房间,Table可以看作是每个\x0d\x0aSchema中的床,Table(床)就被放入每个房间中,不能放置在房间之外,那岂不是晚上睡觉无家可归了J。,然后床上可以放置很多物品,就好比\x0d\x0aTable上可以放置很多列和行一样,数据库中存储数据的基本单元是Table,现实中每个仓库放置物品的基本单位就是床,\x0d\x0aUser就是每个Schema的主人,(所以Schema包含的是Object,而不是User),其实User是对应与数据库的(即User是每个对应\x0d\x0a数据库的主人),既然有 *** 作数据库(仓库)的权利,就肯定有 *** 作数据库中每个Schema(房间)的权利,就是说每个数据库映射的User有每个\x0d\x0aSchema(房间)的钥匙,换句话说,如果他是某个仓库的主人,那么这个仓库的使用权和仓库中的所有东西都是他的(包括房间),他有完全的 *** 作权,可以\x0d\x0a扔掉不用的东西从每个房间,也可以放置一些有用的东西到某一个房间,呵呵,和现实也太相似了吧。我还可以给User分配具体的权限,也就是他到某一个房间\x0d\x0a能做些什么,是只能看(Read-Only),还是可以像主人一样有所有的控制权(R/W),这个就要看这个User所对应的角色Role了,至于分配权\x0d\x0a限的问题,我留在以后单独的blog中详述。比喻到这里,相信大家都清楚了吧。\x0d\x0a\x0d\x0a在SQLServer2000中,假如我们在某一个数据库中创建了用户Bosco,按么此时后台也为我们默认地创建了默认Schema【Bosco】。Schema的名字和User的名字相同,这也是我们分不清楚用户和Schema的原因。\x0d\x0a\x0d\x0a\x0d\x0a在SQLServer2005中,为了向后兼容,当你用sp_adduser存储过程创建一个用户的时候,SQL\x0d\x0aServer2005同时也创建了一个和用户名相同的Schema,然而这个存储过程是为了向后兼容才保留的,我们应该逐渐熟悉用新的DDL语言\x0d\x0aCreateUser和CreateSchema来 *** 作数据库。在SQLServer2005中,当我们用Create\x0d\x0aUser创建数据库用户时,我们可以为该用户指定一个已经存在的Schema作为默认Schema,如果我们不指定,则该用户所默认的Schema即为\x0d\x0adboSchema,dbo\x0d\x0a房间(Schema)好比一个大的公共房间,在当前登录用户没有默认Schema的前提下,如果你在大仓库中进行一些 *** 作,比如Create\x0d\x0aTabe,如果没有指定特定的房间(Schema),那么你的物品就只好放进公共的dbo房间(Schema)了。但是如果当前登录用户有默认的\x0d\x0aSchema,那么所做的一切 *** 作都是在默认Schema上进行(比如当前登录用户为login1,该用户的默认Schema为login1,那么所做的\x0d\x0a所有 *** 作都是在这个login1默认Schema上进行的。实验已经证明的确如此)。估计此时你会有一点晕,为什么呢?我刚才说dbo是一个\x0d\x0aSchema,但是你可以在数据库中查看到,dbo同时也是一个user,晕了吧,呵呵。\x0d\x0a\x0d\x0a在SQLServer2005中创建一个数据库的时候,会有一些Schema包括进去,被包括进去的Schema有:dbo,INFORMATION_SCHEMA,guest,sys等等(还有一些角色Schema,不提了,有晕了)。\x0d\x0a\x0d\x0a\x0d\x0a我在上文中已经提到了,在SQLServer2005中当用存储过程sp_adduser创建一个user时,同时SQL\x0d\x0aServer2005也为我们创建了一个默认的和用户名相同的Schema,这个时候问题出来了,当我们createtable\x0d\x0aA时,如果没有特定的Schema做前缀,这个A表创建在了哪个Schema上,即进入了哪个房间?答案是:\x0d\x0a\x0d\x0a1.如果当前 *** 作数据库的用户(可以用Selectcurrent_user查出来)有默认的Schema(在创建用户的时候指定了),那么表A被创建在了默认的Schema上。\x0d\x0a\x0d\x0a\x0d\x0a2.如果当前 *** 作数据库的用户没有默认的Schema(即在创建User的时候默认为空),但是有一个和用户名同名的Schema,那么表A照样被创建\x0d\x0a在了dbo\x0d\x0aSchema上,即使有一个和用户名同名的Schema存在,由于它不是该用户默认的Schema,所以创建表的时候是不会考虑的,当作一般的\x0d\x0aSchema来处理,别看名字相同,可是没有任何关系哦。\x0d\x0a\x0d\x0a3.如果在创建表A的时候指定了特定的Schema做前缀,则表A被创建在了指定的Schema上(有权限吗?)\x0d\x0a\x0d\x0a\x0d\x0a现在问题又出来了,在当前 *** 作数据库的用户(用select\x0d\x0acurrent_user可以查看到,再次强调)没有默认Schema的前提下,当我们用CreatetableA语句时,A表会去寻找dbo\x0d\x0aSchema,并试图创建在dboSchema上,但是如果创建A表的用户只有对dbo\x0d\x0aSchema的只读权限,而没有写的权限呢?这个时候A表既不是建立不成功,这个就是我以后会提及到的Login,User,\x0d\x0aRole和Schema四者之间的关系。在这里,为了避免混淆和提高 *** 作数据库的速度(在少量数据范围内,对我们肉眼来说几乎看不到差异),我们最好每次\x0d\x0a在 *** 作数据库对象的时候都显式地指定特定的Schema最为前缀。\x0d\x0a\x0d\x0a现在如果登录的用户为Sue,该用户有一个默认Schema也为Sue,那么如果现在有一条查询语句为Select*frommytable,那么搜寻每个房间(Schema)的顺序是怎样的呢?顺序如下:\x0d\x0a\x0d\x0a1.首先搜寻sys.mytable(SysSchema)\x0d\x0a\x0d\x0a2.然后搜寻Sue.mytable(DefaultSchema)\x0d\x0a\x0d\x0a3.最后搜寻dbo.mytable(DboSchema)\x0d\x0a\x0d\x0a执行的顺序大家既然清楚了,那么以后在查询数据库表中的数据时,最好指定特定的Schema前缀,这样子,数据库就不用去扫描SysSchema了,当然可以提高查询的速度了。\x0d\x0a\x0d\x0a另外需要提示一下的是,每个数据库在创建后,有4个Schema是必须的(删都删不掉),这4个Schema为:dbo,guest,sys和INFORMATION_SCHEMA,其余的Schema都可以删除。

问题一:sql server中的架构是什么意思? 通俗点说就是一个组,里面可以存放表、视图、存储过程等

主要是用于权限控制安全控制的

问题二:什么是架构,SQL中的架构有哪些 架构(Schema)是形成单个命名空间的数据库实体的 *** 。

命名空间是一个 *** ,其中每个元素的名称都是唯一的。

可以将架构看成一个存放数据库中对象的一个容器。

架构实际上在sqlserver2000中就已经存在,当我们使用查询分析器去查询一个表的时候,一个完整的表的名称应该包括服务器名.数据库名.用户名.对象名,而在sqlserver2005中一个表的完全限定名称应该为服务器名.数据库名.架构名.对象名

在2000中,假如有一个账户tt在test数据库中创建了一张表table1的时候,在服务器上对查询的语句应为select * from test.tt.table1,也就是说,在sqlserver 2000中一张表所属的架构默认就是表的创建者的登录名称,用户可以和修改他所创建的所有数据库对象。

问题三:数据库架构是什么 参考有一个声音再也不能的在耳边响起,有一双手再也握不住那手心的温度与舒适。

问题四:数据架构是什么 数据架构即数据库架构

数据库是相关数据的 *** ,一个数据库含有各种成分,包括表、记录、字段、索引等。

1.数据库(Database)

Visual Basic中使用的数据库是关系型数据库(Relational Database)。一个数据库由一个或一组数据表组成。每个数据库都以文件的形式存放在磁盘上,即对应于一个物理文件。不同的数据库,与物理文件对应的方式也不一样。对于dBASE,FoxPro和Paradox格式的数据库来说,一个数据表就是一个单独的数据库文件,而对于Microsoft Access、Btrieve格式的数据库来说,一个数据库文件可以含有多个数据表。

2.数据表(Table)

简称表,由一组数据记录组成,数据库中的数据是以表为单位进行组织的。一个表是一组相关的按行排列的数据;每个表中都含有相同类型的信息。表实际上是一个二维表格,例如,一个班所有学生的考试成绩,可以存放在一个表中,表中的每一行对应一个学生,这一行包括学生的学号,姓名及各门课程成绩。

3.记录(Record)

表中的每一行称为一个记录,它由若干个字段组成。

4.字段(Field)

也称域。表中的每一列称为一个字段。每个字段都有相应的描述信息,如数据类型、数据宽度等。

5.索引(Index)

为了提高访问数据库的效率,可以对数据库使用索引。当数据库较大时,为了查找指定的记录,则使用索引和不使用索引的效率有很大差别。索引实际上是一种特殊类型的表,其中含有关键字段的值(由用户定义)和指向实际记录位置的指针,这些值和指针按照特定的顺序(也由用户定义)存储,从而可以以较快的速度查找到所需要的数据记录。

6.查询(Query)

一条SQL(结构化查询语言)命令,用来从一个或多个表中获取一组指定的记录,或者对某个表执行指定的 *** 作。当从数据库中读取数据时,往往希望读出的数据符合某些条件,并且能按某个字段排序。使用SQL,可以使这一 *** 作容易实现而且更加有效。SQL是非过程化语言(有人称为第四代语言),在用它查找指定的记录时,只需指出做什么,不必说明如何做。每个语句可以看作是一个查询(query),根据这个查询,可以得到需要的查询结果。

7.过滤器(Filter)

过滤器是数据库的一个组成部分,它把索引和排序结合起来,用来设置条件,然后根据给定的条件输出所需要的数据。

8.视图(view)

数据的视图指的是查找到(或者处理)的记录数和显示(或者进行处理)这些记录的顺序。在一般情况下,视图由过滤器和索引控制

问题五:数据库中的文件组和架构有什么不同?两者之间的关系是什么? 文件组 是 管理 物理文件的. 多个物理文件, 放在一个组里面

架构 不知道你指的是不是 Schema.

如果是的话。

架构 是 逻辑上面的, 一个数据库, 可以划分为多个 架构, 每个 架构 存储其独有的业务数据。

SQL Server 默认使用一个 名为 dbo 的 构架。

问题六:数据库-架构和数据库-管理指的是什么 数据库架构:

下面是基于SQLserver数据库来谈的。贰

SQLServer经过这些年的发展,其实已经有很多很好的技术可以使用,如Replication、SSB、Cluster、Mirroring等(可以参考我在SQLServer DBA 三十问和SQLServer 高可用、高性能和高保护延伸 中的一些技术方面的知识),而且这些技术在可靠性方面已经通过了市场的认可,有很多公司在为提高其程序的可靠性、安全性和高效性等方面或多或少的采用了其中的某些技术,以下就我接触过的这些技术方面的应用,主要针对网站这种流量很大,读多写少的应用,就数据库架构方面做些探讨,希望对各位有所帮助,如有不对的地方,欢迎大家指正和交流。

数据库架构需要考虑的问题:

数据可靠和一致性;

数据容灾;

当数据量和访问压力变大时,方便扩充;

高度可用,出问题时能及时恢复,无单点故障;

不应因为某一台机器出现问题,导致整网性能的急剧下降;

方便维护。

数据库管理:

数据库管理(Database Manager)是有关建立、存储、修改和存取数据库中信息的技术,是指为保证数据库系统的正常运行和服务质量,有关人员须进行的技术管理工作。负责这些技术管理工作的个人或集体称为数据库管理员(DBA)。数据库管理的主要内容有:数据库的调优、数据库的重组、数据库的重构、数据库的安全管控、报错问题的分析和汇总和处理、数据库数据的日常备份. 数据库的建立:数据库的设计只是提供了数据的类型、逻辑结构、联系、约束和存储结构等有关数据的描述。这些描述称为数据模式。

问题七:oracle数据库的结构是什么? Oracle数据库的体系结构包括四个方面:数据库的物理结构、逻辑结构、内存结构及进程。

1. 物理结构

物理数据库结构是由构成数据库的 *** 作系统文件所决定,Oracle数据库文件包括:

数据文件(Data File)

数据文件用来存储数据库中的全部数据,例如数据库表中的数据和索引数据.通常以为*.dbf格式,例如:userCIMS.dbf 。

日志文件(Redo Log File)

日志文件用于记录数据库所做的全部变更(如增加、删除、修改)、以便在系统发生故障时,用它对数据库进行恢复。名字通常为Log*.dbf格式,如:Log1CIMS.dbf,Log2CIMS.dbf 。

控制文件(Control File)

每个Oracle数据库都有相应的控制文件,它们是较小的二进制文件,用于记录数据库的物理结构,如:数据库名、数据库的数据文件和日志文件的名字和位置等信息。用于打开、存取数据库。名字通常为Ctrl*ctl 格式,如Ctrl1CIMS.ctl。

配置文件

配置文件记录Oracle数据库运行时的一些重要参数,如:数据块的大小,内存结构的配置等。名字通常为init*.ora 格式,如:initCIMS.ora 。

2 逻辑结构

Oracle数据库的逻辑结构描述了数据库从逻辑上如何来存储数据库中的数据。逻辑结构包括表空间、段、区、数据块和模式对象。数据库的逻辑结构将支配一个数据库如何使用系统的物理空间.模式对象及其之间的联系则描述了关系数据库之间的设计.

一个数据库从逻辑上说是由一个或多个表空间所组成,表空间是数据库中物理编组的数据仓库,每一个表空间是由段(segment)组成,一个段是由一组区(extent)所组成,一个区是由一组连续的数据库块(database block)组成,而一个数据库块对应硬盘上的一个或多个物理块。一个表空间存放一个或多个数据库的物理文件(即数据文件).一个数据库中的数据被逻辑地存储在表空间上。

表空间(tablespace)

Oracle数据库被划分为一个或多个称为表空间的逻辑结构,它包括两类表空间,System表空间和非System表空间,其中,System表空间是安装数据库时自动建立的,它包含数据库的全部数据字典,存储过程、包、函数和触发器的定义以及系统回滚段。除此之外,还能包含用户数据。。

一个表空间包含许多段,每个段有一些可以不连续的区组成,每个区由一组连续的数据块组成,数据块是数据库进行 *** 作的最小单位。

每个表空间对应一个或多个数据文件,每个数据文件只能属于一个表空间。

数据库块(database block)

数据库块也称逻辑块或ORACLE块,它对应磁盘上一个或多个物理块,它的大小由初始化参数db-block-size(在文件init.ora中)决定,典型的大小是2k。Pckfree 和pctused 两个参数用来优化数据块空间的使用。

区(extent)

区是由一组连续的数据块所组成的数据库存储空间分配的逻辑单位。

段(segment)

段是一个或多个不连续的区的 *** ,它包括一个表空间内特定逻辑结构的所有数据,段不能跨表空间存放。Oracle数据库包括数据段、索引段、临时段、回滚段等。

模式对象(schema object)

Oracle数据库的模式对象包括表、视图、序列、同意词、索引、触发器、存......>>

问题八:sql server中架构是什么意思 架构(Schema)是一组数据库对象的 *** ,它被单个负责人(可以是用户或角色)所拥有并构成唯一命名空间。你可以将架构看成是对象的容器。

在 SQL Server 2000 中,用户(User)和架构是隐含关联的,即每个用户拥有与其同名的架构。因此要删除一个用户,必须先删除或修改这个用户所拥有的所有数据库对象。

在 SQL Server 2005 中,架构和创建它的数据库用户不再关联,完全限定名(fully-qualified name)现在包含4个部分:server.database.schema.object

1. 体系结构(Architecture)

体系结构亦可称为架构,所谓软件架构,根据Perry 和Wolfe之定义:Software Architecture = {Elements,Forms, Rationale / Constraint },也就是软件主架构 = {组件元素,元素互助合作之模式,基础要求与限制}。Philippe Kruchten采用上面的定义,并说明主架构之设计就是:将各组件元素以某些理想的合作模式组织起来,以达成系统的基本功能和限制。体系结构又分为多种样式,如Pipes and Filters等。

2. 框架(Framework)

框架亦可称为应用架构,框架的一般定义就是:在特定领域基于体系结构的可重用的设计。也可以认为框架是体系结构在特定领域下的应用。框架比较出名的例子就是MVC。

3. 库(Library)

库应该是可重用的、相互协作的资源的 *** ,供开发人员进行重复调用。它与框架的主要区别在于运行时与程序的调用关系。库是被程序调用,而框架则调用程序。比较好的库有JDK。

4. 设计模式(Design Pattern)

设计模式大家应该很熟悉,尤其四人帮所写的书更是家喻户晓。“四人帮”将模式描述为“在一定的环境中解决某一问题的方案”。这三个事物 ― 问题、解决方案和环境 ― 是模式的基本要素。给模式一个名称,考虑使用模式将产生的结果和提供一个或多个示例,对于说明模式也都是有用的。

5. 平台(PlatForm)

由多种系统构成,其中也可以包含硬件部分。

对于以上的概念有一个比较清楚的认识之后,就可以在软件的开发过程中进行应用。理论和实践是缺一不可的,相辅相成的。没有理论的指导,实践就缺乏基础;没有实践的证明,理论就缺乏依据,因此我一直认为:对于当代的程序员,在有一定的实践基础后,必须学习更深的理论知识。无论你是从那方面先开始学习的。

在软件的开发过浮中,从许多过程实践和方法中,大致可以提炼出五大步骤:需求、分析、设计、编码、测试。而体系结构是软件的骨架,是最重要的基础。体系结构是涉及到每一步骤中。一般在获取需要的同时,就应该开始分析软件的体系结构。体系结构现在一般是各个大的功能模块组合成,然后描述各个部分的关系。

我一般认为框架是体系结构中每个模块中更细小的结构。如需要表示web技术,就会用到MVC框架,而web功能只是整个软件体系中的一个功能模块。每个框架可以有许多个实例,如用java实现的MVC框架structs。

而在框架之下就是设计模式,设计模式一般是应用中框架之中的,也可以说是对框架的补充。因为框架只是提供了一个环境,需要我们我里面填入更多的东西。无论是否应用了设计模式,你都可以实现软件的功能,而正确应用了设计模式,是我们对前人软件的设计或实现方法的一种继承,从而让你的软件更软。

体系结构是可以从不同视角来进......>>

问题九:oracle数据库的架构是什么? oracle 数据库架构本质上是C/S结构的。 服务器与客户端是分开的,即时服务器和客户端是在同一机器上,他们也是按照客户端/服务器模式运行的,他们之间的进程是分开的。 希望能帮助你。

问题十:数据库中拥有的架构与成员身份有什么区别? 不同权限组合或单独就构成常角色。

不同用户创建的数据库对象不可能放在放在一起,因此就出现了容器就是所谓的架构,架构就是单个命名空间的数据实体的 ***

每个数据都得建schema,需要将创建schema,跟他的表的索引区别开来,同时可以让索引,表,视图不在同一个命名空间,让没有权限的用户不能 *** 作。

1、如果把database看作是一个仓库,仓库很多房间(schema),一个schema代表一个房间,table可以看作是每个房间中的储物柜,user是每个schema的主人,有 *** 作数据库中每个房间的权利,就是说每个数据库映射的user有每个schema(房间)的钥匙。

2、在SQL Server 2000中,user和schema总有一层隐含的关系,让我们很少意识到其实user和schema是两种完全不同的概念,假如我们在某一数据库中创建了用户Bosco,那么此时后台也为我们默认的创建了schema【Bosco】,schema的名字和user的名字相同。

3、在Oracle数据库中不能新建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决,在创建一个用户的同时为这个用户创建一个与用户名同名的schem并作为该用户的缺省shcema。即schema的个数同user的个数相同,而且schema名字同user名字一一 对应并且相同。


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

原文地址: http://outofmemory.cn/sjk/10015215.html

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

发表评论

登录后才能评论

评论列表(0条)

保存