数据库学习笔记(三)

笔记|数据|数据库

关系数据库

一,             关系数据库的由来

1,  系统而严格的提出关系数据库模型的是美国IBM的E.F.Codd

2,  1970年,E.F.Codd继续完善和发展关系理论。

3,  C.J.Data是关系数据库领域中最著名的独立撰稿人,学者和顾问。

二, 关系模型概述

关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。

1、单一的数据结构关系

关系模型中的数据结构非常单一。实体及实体间的联系都用关系表示,关系就是一张二维表。

2、关系操作

关系模型中常用的关系操作包括。关系操作的特点是集合操作方式,即操作的对象和结果都是集合。这种操作方式也成为一次一集合的方式。相应地,非关系数据模型的数据操作方式则为一次一记录的方式。

3、关系的三类完整性约束:实体完整性,参照完整性,用户定义完整性。

三, 关系数据结构及形式化定义

1, 关系

1.域:域是一组具有相同数据类型的值的集合。

2.笛卡儿积:

定义:给定一组域D1,D2,…,Dn,这些域中可以有相同的。D1,D2,…,Dn的笛卡儿积为:

D1×D2×…×Dn={(d1,d2, …,dn) | di∈Di,i=1,2, …,n}

其中每一个元素(d1,d2, …,dn)叫做一个n元组或简称元组(Tuple)。元组中的每一个值di叫做一个分量(Component)。

若Di(i=1,2, …,n)为有限集,其基数为mi(i=1,2, …,n),则D1×D2×…×Dn的基数M为:mi的积。

3.关系:

定义:D1×D2×…×Dn的子集叫做在域D1,D2,…,Dn上的关系,表示为:

R(D1,D2,…,Dn)

D1×D2×…×Dn表示的是域上所有可能的组合,在现实生活中很多元组是无意义的数据,而一个关系肯定包含在D1×D2×…×Dn之中,因此在数学上把关系定义为D1×D2×…×Dn的子集。

关系是笛卡儿积的有限子集,所以关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。由于域可以相同,为了加以区分,必须对每列起一个名字,称为属性。N目关系必有n个属性。

候选码:若关系中的某一属性组的值能唯一地标识一个元组,则称该数据组为候选码。

全码:若一个关系有多个候选码,则选定其中一个为主码。主码的诸属性称为主属性。不包含在任何候选码中的属性称为非码属性。关系模式的所有数据组是这个关系模式的候选码,称为全码。

关系可以有三种类型:基本关系、查询表和视图表。

对关系的限定和扩充:

⑴ 无限关系在数据库系统中时无意义的。因此,限定关系数据模型中的关系必须是有限集合。

⑵ 通过为关系的每个列附加一个属性名的方法取消关系元组的有序性。

 

基本关系具有以下六条性质:

1,列是同质的,即每一列中的分量是同一类型的数据,来自同一个域。

2,不同的列可以出自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。

3,列的顺序无所谓,即列的次序可以任意交换。

4,任意两个元组不能完全相同。

5,行的顺序无所谓,即行的次序可以任意交换。

6,分量必须取原子值,即每一个分量都必须是不可分的数据项。

备注:在许多实际关系数据库产品中,基本表并不完全具有这六条性质,例如,有的数据库产品能(如FoxPro)仍然区分了属性顺序和元组的顺序;许多关系数据库产品中,例如Oracle,FoxPro等,它们都允许关系表中存在两个完全相同的元组。

 

四,关系模式

定义:关系的描述称为关系模式。它可以形式化地表示为:

R(U,D,dom,F)

关系模式通常可以简记为:

R(U)或R(A1,A2, …,AN)

 

 

五,关系的完整性

1、实体完整性

实体完整性规则:若属性A是基本关系R的主属性,则属性A不能取空值。

实体完整性规则说明如下:

⑴ 实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。

⑵ 现实世界中的实体是可区分的,即它们具有某种唯一性标识。

⑶ 相应地,关系模型中以主码作为唯一标识。

⑷ 主码中的属性即主属性不能取空值。所谓空值就是“不知道”或“不确定”的值。

 

2、参照完整性

外码定义:设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码(Foreign Key),并称基本关系R为参照关系,基本关系S为被参照关系或目标关系。关系R和S不一定是不同的关系。

注意:F不能是关系R的主码,Ks必须是关系S的主码。

参照完整性规则就是定义外码与主码之间的引用规则:

参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:

或者取空值(F的每个属性值均为空值);

或者等于S中某个元组的主码值。

3、用户定义的完整性:即是针对某一具体关系数据库的约束条件。

   未完待续。

 

小康

Xiaokang1949@hotmail.com

2004-2-29

 

 

时间: 2025-01-21 09:43:03

数据库学习笔记(三)的相关文章

数据库学习笔记(一)

笔记|数据|数据库 这是我学习数据库时候的笔记,都是非常简单,非常基础的有关数据库的知识,最近整理一下,希望大家不要蛋蛋我啊,呵呵 数据库学习笔记(一)                         --绪论及基本概念 一,             数据:描述事物的符号记录称为数据. 二,             数据库:指长期存储在计算机内的.有组织.可共享的数据集合. 三,             数据库管理系统:数据管理的软件,主要以下功能:                   1, 

MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

[正文] 这一周状态不太好,连续打了几天的点滴,所以博客中断了一个星期,现在继续. 我们在之前的几篇文章中学习了JDBC对数据库的增删改查.其实在实际开发中,一般都是使用第三方工具类,但是只有将之前的基础学习好了,在使用开源工具的时才能得心应手.如果对JDBC基础不太清楚,或者对本文看不太懂,建议先回顾一下本人之前的几篇和"MySQL数据库学习笔记"相关的文章.但是不管怎样,今后如果用到了数据库的增删改查,肯定是这篇文章中的代码用的最多. 一.DbUtils简介: DBUtils是ap

MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)

[正文] 首先需要回顾一下上一篇文章中的内容:MySQL数据库学习笔记(八)----JDBC入门及简单增删改数据库的操作 一.ResultSet接口的介绍: 对数据库的查询操作,一般需要返回查询结果,在程序中,JDBC为我们提供了ResultSet接口来专门处理查询结果集. Statement通过以下方法执行一个查询操作: ResultSet executeQuery(String sql) throws SQLException  单词Query就是查询的意思.函数的返回类型是ResultSe

DB2 UDB V8.1管理学习笔记(三)_DB2

正在看的db2教程是:DB2 UDB V8.1管理学习笔记(三).强制断开已有连接,停止实例并删除.  $ db2idrop -f instance_name 用于在UNIX下迁移实例. $ db2imigr instance_name 更新实例,用于实例获得一些新的产品选项或修订包的访问权. $ db2iupdt instance_name 获取当前所处的实例. $ db2 get instance 当更新实例级别或数据库级别的参数后,有些可以立即生效,有些需要重新启动实例才可生效.immed

kvm虚拟化学习笔记(三)之windows kvm虚拟机安装

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://koumm.blog.51cto.com/703525/1290191 KVM虚拟化学习笔记系列文章列表 ---------------------------------------- kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51cto.com/703525/1288795 kvm虚拟化学习笔记(二)之linux kvm虚拟机安装 h

MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类

[正文] 首先需要回顾一下上一篇文章中的内容:MySQL数据库学习笔记(九)----JDBC的PreparedStatement接口重构增删改查 一.JDBC事务处理: 我们已经知道,事务的概念即:所有的操作要么同时成功,要么同时失败.在MySQL中提供了Commit.Rollback命令进行事务的提交与回滚.实际上在JDBC中也存在事务处理,如果要想进行事务处理的话,则必须按照以下的步骤完成. JDBC中事务处理的步骤: 1.要取消掉JDBC的自动提交:void setAutoCommit(b

VSTO学习笔记(三) 开发Office 2010 64位COM加载项

原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(Automation Executables) 2.Office加载项(COM or Excel Add-In) 3.Office文档代码或模板(Code Behind an Office Document or Template) 4.Office 智能标签(Smart Tags) 本次我们将学习使

Bootstrap3学习笔记(三)之表格_javascript技巧

在上篇文章给大家介绍了 BootStrap3学习笔记(一)之网格系统       Bootstrap3学习笔记(二)之排版 只需要在table标签上使用.table类,就可以使用bootstrap默认的表格样式 如果需要行背景有交替变化,可以这样设定: 复制代码 代码如下: <table class="table table-striped"> 如果需要边框,可以这样设定: 复制代码 代码如下: <table class="table table-borde

JavaScript学习笔记(三):JavaScript也有入口Main函数_javascript技巧

在C和Java中,都有一个程序的入口函数或方法,即main函数或main方法.而在JavaScript中,程序是从JS源文件的头部开始运行的.但是某种意义上,我们仍然可以虚构出一个main函数来作为程序的起点,这样一来不仅可以跟其他语言统一了,而且说不定你会对JS有更深的理解. 1. 实际的入口 当把一个JavaScript文件交给JS引擎执行时,JS引擎就是从上到下逐条执行每条语句的,直到执行完所有代码. 2. 作用域链.全局作用域和全局对象 我们知道,JS中的每个函数在执行时都会产生一个新的

MySQL数据库学习笔记(一)

mysql|笔记|数据|数据库         我一直从事Informix和Oracle数据库开发,有一天发现网络上有一种小巧别致的数据库,被广泛使用,从MySQL的网站http://www.mysql.com/我下载了它的数据库软件,使用过后觉得真的挺好,这是我的一点学习笔记希望对各位初学者有点帮助. 1.       MySQL数据库介绍 MySQL 是瑞典的MySQL AB公司开发的一个可用于各种流行操作系统平台的关系数据库系统,它具有客户机/服务器体系结构的分布式数据库管理系统.MySQ