代码改变世界

跟我一起学Oracle 11g【1】----基础回顾

2012-07-09 15:21  随风浪迹天涯  阅读(8601)  评论(23编辑  收藏  举报

好吧,我也未能免俗,因为在公司的年终目标上写了要学习Oracle,今天开始Oracle,给大家温过知新一下吧!不会砸我把!~嘎嘎。

其实,说真的,我很不想写理论这方面的,可是为了一个系列的完整性,我还是硬着头皮写吧。我会尽量用通俗化的口语来说那些比较生硬的专业术语,当然这里也有一些不严谨的地方,还请各位看官海涵。

好吧,刚开始其实和Oracle关系不大,都是数据库的基础知识,到第四部分才开始!~~~

---------------------本期目录导航------------------

1.关系数据库模型

2.数据库中的函数依赖

3.数据库的范式

4.Oracle应用系统结构

5.安装Oracle 11g

1.关系数据库模型

1.1 关系数据库中的一些术语

好吧,其实我第一次学习数据库的时候,我特别的烦这些术语,本来很简单的很容易懂的词语,被他们整的。。。

二维表:就是一张表,比如我们打开excel,这里可以粗略的看成一个表的结构吧。所以说,关系的逻辑结构就是一个二维表。

关系(Relation):对应我们平时看见的一张表。

元组(Tuple):一个二维表里的一行

属性(Attribute):表中的一列

域(domain):属性的取值范围,比如一个属性年龄,那么这个年龄的取值范围在0到130,这就是一个域。

关键字或码(key):也就是我们常说的主键,它能唯一的确定一个元组,也就是能唯一的确定一行。比如 学生号,那么它能确定学生姓名等等。

关系模式(Relation Schema):对关系的描述,比如关系名(属性1,属性2,属性3...)

1.2关系操作

关系数据模型中常用的关系操作:查询(Query)、插入(Insert)、删除(delete)和更新(update)

关系操作中最重要的关系查询操作:选择(select)、投影(project)、连接(join)、除(divide)、并(union)、差(except)、交(intersection)以及笛卡尔积等等。

1.3关系的完整性

实体完整性:就是数据库表格中的主键不能取空值;当属性由属性组不止一个属性)组成时,属性组中的属性均不能为空值。

参照完整性:关系模型中实体及实体间的联系都是用关系来描述的。参照完整性则是相关联的两个表之间的约束,具体的说,就是从表中每条记录外键的值必须是主表中存在的,因此,如果在两个表之间建立了关联关系,则对一个关系进行的操作要影响到另一个表中的记录。

外键:如果有属性关键字在一个表中是主关键字,那么这个属性关键字被称为另一个表的外键。外键表示了两个关系之间的联系。

如果一个属性是参照性完整性,那么它的值只能是:

1.空值,表示没有给它赋值

2.不是空值,那么必定在一个主表中的值范围中

(解释这个真累呀,呵呵~)

自定义完整性:实体完整性和参照系完整是每一个关系数据库都必须要支持的完整性。那自定义就不必了,从字面上也可以看出,就是自己定义的意思。打个比方说,你有一个性别这个属性,那么你可以只定义只能允许为“女”。这个号理解。

2.数据库中的函数依赖

所谓函数依赖是指关系中一个或一组属性的值可以决定其它属性的值。函数依赖正象一个函数 y = f(x) 一样,x的值给定后,y的值也就唯一地确定了。

2.1函数依赖的种类

2.1.1完全函数依赖和部分函数依赖

完全函数依赖:在一个关系中,若某个非主属性数据项依赖于全部关键字称之为完全函数依赖。

比如:有一个表,有如下属性:学生ID,学生姓名,所修课程ID,课程名称,成绩

完全依赖:(学生ID,所修课程ID)→成绩

成绩既不能单独依赖于学生ID,也不能单独依赖于所修课程ID,因此成绩完全函数依赖于关键字。

(学生ID,所修课程ID)→学生姓名

部分依赖:学生ID→学生姓名

学生姓名可以依赖于关键字的一个主属性——学生ID,因此学生姓名部分函数依赖于(学生ID,所修课程ID)。

2.1.2 平凡函数依赖和非平凡函数依赖

平凡函数依赖:当关系中属性集合Y是属性集合X的子集时,存在函数依赖X→Y,即一组属性函数决定它的所有子集,这种函数依赖称为平凡函数依赖

例如:在在关系学生课程表SC(学生号Sno,课程号 Cno,成绩 Grade)中,

(Sno, Cno) → Sno ,(Sno, Cno) → Cno

非平凡函数依赖当关系中属性集合Y不是属性集合X的子集时,存在函数依赖X→Y,则称这种函数依赖为非平凡函数依赖。

例如:(Sno, Cno) → Grade

2.1.3 传递函数依赖

传递函数依赖:设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。

例:关系S1(学号,系名,系主任)

学号 → 系名,系名 → 系主任,并且 系名 -\→ 学号,所以 学号 → 系主任 为传递函数依赖

3.数据库的范式

好处:

① 减少数据冗余

②改进数据库整体组织

③增强数据的一致性

④增加数据库设计的灵活性

3.1 第一范式(1NF)

如果关系模式 R ,它的每个属性分量都是一个不可分割的数据项,则称 R 符合第一规范,记 R∈1NF

例子:

例子来源(以下同):数据库范式——通俗易懂

3.2第二范式(2NF)

若 R∈1NF 且每个非主属性完全依赖于码(也就是主键),则称 R∈2NF

例子:

那怎么办呢?

3.3 第三范式(3NF)

第三范式(3NF):符合2NF,并且,消除传递依赖

例子:

OK ,一般来说,了解范式,能做到第三范式就很好了。如果还需要进一步了解的话,可以看下面的博客:

数据库范式——通俗易懂

四。Oracle应用系统结构

4.1 单磁盘独立主机结构

这种是最简单、也是最常用的结构。该结构就只有一台计算机,并且使用一个硬盘。我们现在用的基本都是这个哦!~

它只有一个数据库服务(DBMS)、一个数据库结构(数据库文件),并且这些数据文件都存储在一个物理磁盘上。

4.2 多磁盘独立主机结构

它也只有一台计算机,但是该计算机应用了多个硬盘。

这样子可以减少数据库的链接数量,减少数据文件的磁盘I/O。

如果在这个磁盘上采用磁盘镜像技术(RAID,独立磁盘冗余阵列技术),则所有数据库文件在每个硬盘上都有完整的备份,任何一个此胖发生故障后,都能由镜像磁盘代替其工作,并可对其进行维修、恢复,提高了硬件的可靠性。

而且,处理一个事物可能需要多个文件的信息是很普遍的事情,所以在这个多磁盘结构中,还可以将数据库文件分别存放在不同的硬盘中,以便减少数据库文件之间的竞争数量,从而提高数据库的性能。

4.3 Oracle 客户/服务器系统结构(C/S)

在C/S结构模式中,所有的数据集中存储在服务器中,数据处理由服务器完成,通常来说采用硬件资源配置比较高的机器作为服务器,使用配置比较低的作为客户机。

服务器与客户端之间通过专用的网络连接,一般为局域网或企业内部网。

Oracle使用SQL*Net 在客户端与服务器之间进行通信。

4.4 Oracle 浏览器/服务器系统结构(B/S)

如下为B/S 3层系统结构,在B/S的3层模型中,客户端应用程序通常采用Web浏览器展示,所以客户端也称为瘦客户。

在客户机上没有加载的程序代码,所有的程序都存储在web服务器上吗。如果客户端要访问数据,则访问请求通过网络被发送到Web服务器,然后由Web服务器将请求传递到数据库服务器,经过数据库服务器处理的数据以HTML的格式在客户端Web浏览器显示。

4.5 Oracle 分布式数据库系统结构

数据库系统可按数据分布方式分为集中式数据库系统和分布式数据库系统。

集中式数据库系统是将数据集中在一台计算机上面,而分布式数据库系统是存放在有计算机网络连接的不同计算机上面。如图:

由上可知,分布式数据库系统有以下几部分组成:

局部数据库管理系统:创建和管理局部数据库,执行局部和全局应用的子查询。

全局数据库管理系统:协调各个局部数据库管理系统,共同完成事物的执行,并保证全局数据库执行的正确性和全局数据库的完整性。

通信管理:实现分布在网络中的各个数据库之间的通信。

全局数字字典:存放全局概念模式。

局部数据库:查询全局数据库信息。

Oracle在网络环境中使用SQL*Net、Net8或Net8i 等进行客户端与服务器、服务器与服务器之间的通信。在分布式数据库中,各个服务器之间可以实现数据的实时、定时复制。通过Oracle的远程数据复制选件、触发器、快照等在多个不同地低于实现数据的远程复制。

五。安装Oracle 11g

这个很easy,这里不说明~~~网上很多教程。

不懂的点击这里:Oracle 11g 安装图解

安装完了之后,打开服务(在开始运行,打入 services.msc),看看下面三个进程是否在:

OracleDBConsoleorcl:是本地OEM控制。

Oracle<>TNSListener:坚挺程序服务。这个服务因为每台计算机的名字不同而不同。

OracleServiceORCL:Oracle 数据库实例服务,是Oracle数据库的主要服务。