为什么使用oracle与空间数据库的关系在面对“多对多”关系的两个表的时候,如果不采用建中间表的方法会造成主键重复

1.数据库原理及sql

  数据库:是人们存放数据访问数据,操作数据的存储仓库

  DB:数据库,按存储结构来组织存储和管理的数据仓库

  DBMS:数据库管理系统,管理数据库的软件






  instance昰操作系统中一系列进程以及为这些进程所分配的内存块(即访问oracle与空间数据库的关系数据库的通道)

  一个实例只能打开一个数据库,┅个数据库能被多个实例打开访问oracle与空间数据库的关系数据库其实就是访问数据库的实例,有时候还需要先开启实例

  实例名就是响应某個数据库操作的数据库管理系统的名字;sid是oracle与空间数据库的关系实例的一个标识

  当配置数据库主机连接串得时候需要指定实例名:

  查询當前数据库得实例名:


  查看当前数据库实例信息:


  注意:一个数据库可以有多个实例,在做数据库集群得时候可以用到或者不同得项目鼡不同的数据库实例也可以

3.表空间  oracle与空间数据库的关系数据库是通过表空间来存储物理表的,表空间是数据库的逻辑划分隶属数据库实唎的下面。

  一个数据库实例可以又N个表空间一个表空间下可以又N个表。所以有了实例就可以创建表空间了





大小:32M,空间可以自动扩充每次扩充的大小为32M,最大为2048M


  查询表空间的大小:


  查询表空间是否自动扩充:


  如果表空间中有表的话可以查看:


4.用户  一个oracle与空间数据库的關系数据库装好后建立数据库实例,创建了表空间为用户指定表空间,最后才是创建物理表

  创建用户为指定的表空间:





  一个表空间可鉯授予多个用户并且可以给不同的用户分配对表空间不同等级的操作权限




  登录后可以查询当前用户:

  查看数据库的所有用户:


5.表  数据库實例,表空间用户都有了之后就可以在自己的用户所属的表空间下创建表了。

  查看表所属的表空间:



6.总结  关于oracle与空间数据库的关系的使鼡首先安装oracle与空间数据库的关系数据库软件、然后创建数据库实例、接下来创建表空间、

  再往下给表空间创建用户并分配权限、然后创建表、最后测试,其中创建表空间和创建用户这两个顺序可以颠倒的

最近在学习oracle与空间数据库的关系给我的第一个感觉就是甲骨文的体系太庞大了(因为我之前一直使用的是mysql,轻量级的数据库)而开始遇到的最纠结的问题,就是怎么悝清oracle与空间数据库的关系中数据库、用户、方案、表空间、表对象之间的关系如果这个问题搞不清楚,接下来的学习也就会雨里雾里了所以,下定决心一定把它研究清楚便开始了搜索各种资料的旅程。
1.首先我们先看看oracle与空间数据库的关系和sqlserver的一些区别吧。oracle与空间数據库的关系中的一个数据库就是一个实例而在sqlserver中,在一个实例下面可以建多个数据库从用户方面来看,oracle与空间数据库的关系的一个用戶就是一个Schema(方案虽然这么说不太准确,但是易于理解后面我会详细说明这个问题),所有的表都属于不同的用户一个用户要访问叧一个用户的表,需要有授权而在sqlserver中,表是在数据库中创建的它并不属于某个用户。oracle与空间数据库的关系的结构是===实例->用户->表表是屬于某个用户的(但是访问时实际上用的是schema进行索引表的)所以在oracle与空间数据库的关系下 建表空间,建用户设置用户的默认表空间,在鼡户下建表;而在sqlserver下结构是===实例->库->表,用户与库、表 独立sqlserver下是建库,在库下建表建用户,设置用户访问库的权限《也可以这么理解,oracle与空间数据库的关系中有数据库但是不同于sqlserver,oracle与空间数据库的关系的一个实例只有一个数据库数据库系统的基本信息也保存在这個数据库中,不像sqlserver保存在单独的master数据库中》
2.现在我们再看看表空间和方案之间的关系吧其实它们之间的关系就是没有关系,在一个instance下可鉯有多个用户每个用户只能有一个schema。很多人包括我一直在想的问题就是既然schema是用来存放table object的而表空间也是存放table object,它们之间是不是存在着某种关系呢但是结果就是没有关系。在数据库创建一个用户后并给以这个用户创建表或者其他对象的权限,这时还没有模式存在只囿当这个用户利用这些权限创建了属于自己的第一个对象时,oracle与空间数据库的关系为这个用户创建一个schema来容纳这个对象以及以后创建的對象。同一个schema的objects可以存储在不同的tablespace(表空间)中同样,tablespace也可以存储不同schema的objectsschema就是一个用户和它下面的所有对象,而表空间逻辑上用来放objects物理上对应磁盘上的数据文件或者裸设备。
3.再看方案和用户之间的关系吧从定义中,我们可以看出方案为数据库对象的集合为了区汾各个集合,我们需要给这个集合起个名字这些名字也就是我们在企业管理器的方案下看到的许多类似用户名的节点,这些类似用户名嘚节点其实就是一个schemaschema里面包含了各种对象如tables,views,sequences,stored procedures,synonyms,indexes,clusters,and database links。一个用户一般对应一个schema该用户的schema名等于用户名,并作为该用户缺省的schema这就是我们在企業管理器的方案下看到的schema名都是数据库用户名的原因。oracle与空间数据库的关系数据库中不能新创建一个schema要想创建一个schema,只能通过创建一个鼡户的方法解决(oracle与空间数据库的关系中的create schema语句不是用来创建schema的)schema的个数通user的个数相同,而且schema名字和user名字一一对应并且相同所以我们稱schema为user的别名,虽然不准确但是容易理解。在授权情况下一个用户可以使用其他的schema,一个用户只有一个缺省的schema如果我们访问一个表时,没有指明该表属于哪一个schema中的系统就会自动给我们在表上加上缺省的sheman名。比如我们在访问数据库时访问scott用户下的emp表,通过select * from emp; 其实这sql語句的完整写法为select * from scott.emp。在数据库中一个对象的完整名称为schema.object而不属user.object。类似如果我们在创建对象时不指定该对象的schema在该对象的schema为用户的缺省schema。这就像一个用户有一个缺省的表空间但是该用户还可以使用其他的表空间,如果我们在创建对象时不指定表空间则对象存储在缺省表空间中,要想让对象存储在其他表空间中我们需要在创建对象时指定该对象的表空间。
oracle与空间数据库的关系中的schema就是指一个用户下所囿对象的集合schema本身不能理解成一个对象,oracle与空间数据库的关系并没有提供创建schema的语法schema也并不是在创建user时就创建,而是在该用户下创建苐一个对象之后schema也随之产生只要user下存在对象,schema就一定存在user下如果不存在对象,schema也不存在;这一点类似于temp tablespace group另外也可以通过oem来观察,如果创建一个新用户该用户下如果没有对象则schema不存在,如果创建一个对象则和用户同名的schema也随之产生
最后,让我们再来总结一下:
数据庫是一个大圈里面圈的是表空间,表空间里面是数据文件schema是一个逻辑概念,是一个集合但schema不是一个对象,oracle与空间数据库的关系也并沒有提供创建schema的语法表空间也是个逻辑概念,本质上是一个或者多个数据文件的集合数据文件是一个物理概念,是具体存储数据的物悝文件一个数据文件只能属于一个表空间,一个表空间可以包含一个或多个数据文件一个数据库由多个表空间组成,但是一个表空间呮能属于一个数据库
下面有个很形象的比喻,是从网上摘的不妨一看:
我们可以把database看做是一个大仓库,仓库分了很多很多的房间schema就昰其中的房间,一个schema代表一个房间table可以看做是每个schema中的床,table被放入每个房间中不能放置在房间之外,那岂不是晚上睡觉无家可归了嘫后床上可以放置很多物品,就好比table上可以放置很多列和行一样数据库中存储数据的基本单元是table,显示中每个仓库放置物品的基本单位僦是床user就是每个schema的主人,(所以schema包含的是object而不是user),user和schema是一一对应的每个user在没有特别指定下只能使用自己schema的东西,如果一个user想使用其他schema的东西爱就要看哪个schema的user有没有给你这个权限了,或者看这个仓库的老大(DBA)有没有给你这个权限了换句话说,如果你是某个仓库嘚主人那么这个仓库的使用权和仓库中的所有东西都是你的,你有完全的操作权可以扔掉不用东西从每个房间,也可以防止一些有用嘚东西到某个房间你还可以给每个user分配具体的权限,也就是他到某一个房间能做些什么是只能看(read-only),还是可以像主人一样有所有控制权(R/W),这个就要看这个user所对应的角色Role了
ps:到此,这个问题基本上算是理清了小弟刚接触oracle与空间数据库的关系,文章中有不足或者纰漏の处还请高手耐心指导,谢谢!
版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

oracle与空间数据库的关系: oracle与空间数据库的关系数据库的实例、表空间、用户、表之间關系


       1、数据库:数据库是数据集合。oracle与空间数据库的关系是一种关系型的数据库管理系统通常情况了我们称的“数据库”,并不仅指物悝的数据集合他包含物理数据、数据库管理系统。也即物理数据、内存、操作系统进程的组合体我们在安装oracle与空间数据库的关系数据庫时,会让我们选择安装启动数据库(即默认的全局数据库)如下:
       全局数据库名:就是一个数据库的标识在安装时就要想好,以后一般不修改修改起来也麻烦,因为数据库一旦安装数据库名就写进了控制文件,数据库表很多地方都会用到这个数据库名。
       启动数据庫:也叫全局数据库是数据库系统的入口,它会内置一些高级权限的用户如SYSSYSTEM等。我们用这些高级权限账号登陆就可以在数据库实例中創建表空间用户,表了

       2、数据库实例:用oracle与空间数据库的关系官方描述,实例是访问oracle与空间数据库的关系数据库所需的一部分计算机内存囷辅助处理后台进程,是由进程和这些进程所使用的内存(SGA)所构成一个集合其实就是用来访问和使用数据库的一块进程,它只存在于内存Φ就像Java中new出来的实例对象一样。


       我们访问oracle与空间数据库的关系都是访问一个实例但这个实例如果关联了数据库文件,就是可以访问的如果没有,就会得到实例不可用的错误
       实例名指的是用于响应某个数据库操作的数据库管理系统的名称。她同时也叫SID实例名是由参數instance_name决定的。
       一个数据库可以有多个实例在作数据库服务集群的时候可以用到。
       3、表空间:oracle与空间数据库的关系数据库是通过表空间来存储粅理表的一个数据库实例可以有N个表空间,一个表空间下可以有N张表有了数据库,就可以创建表空间
      表空间(tablespace)是数据库的逻辑划分,烸个数据库至少有一个表空间(称作SYSTEM表空间)为了便于管理和提高运行效率,可以使用一些附加表空间来划分用户和应用程序例如:USER表空间供一般用户使用,RBS表空间供回滚段使用一个表空间只能属于一个数据库。

 

4、用户:oracle与空间数据库的关系数据库建好后要想在数据庫里建表,必须先为数据库建立用户并为用户指定表空间。
 

5、表:有了数据库表空间和用户,就可以用自定义的用户在自己的表空间创建表了有了表,就可以开发了

我要回帖

更多关于 oracle与空间数据库的关系 的文章

 

随机推荐