热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

数据库原理与应用关系数据库理论(一)

首先我们知道数据模型的三要素:数据结构,数据操作和完整性约束。1.关系的数据结构1.1关系的定义域:一组具有相同数据类型的值的集合。笛卡儿

  首先我们知道数据模型的三要素:数据结构,数据操作和完整性约束。


  1.关系的数据结构


  1.1关系的定义

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

  笛卡儿积:给定一组域D1,D2,D3....Dn,它们之中可以有相同的域。所以这n个域的笛卡儿积可以表示为

                            D1xD2x...xDn={ (d1,d2,...,dn) | di属于Di,i=1,2,3,...,n }

  其中每个元素(d1,d2,..dn)称为一个元组,简称元组。   每个di称为一个元组分量。

  关系:D1xD2x...Dn中某个有一定定义的子集叫做在域D1,D2,...Dn上的关系,表示为R(D1,D2,...,Dn)。R为关系的名字,n是关系的目或度。

  关系模型的数据结构非常简单,只包含单一的数据结构------关系。(这也是数据模型的优点,简单的数据结构)


1.2关系模型的相关概念

  概念模型中实体的属性,域,实体型,实体集在关系模型中分别用关系的属性,域,关系模式,关系实例来表示。


  属性:

  对关系中元组的分量的描述,用属性名表示,与定义关系的一组域对应。在同一关系中,属性名不能相同。

例如:学生可以用姓名,性别,年龄等属性来描述。


  域:

  属性的取值范围。

  不同属性可以有相同的域。(一般要求所有的域都是原子数据的集合。这种限制称为第一范式条件)


 关系模式:

 关系的描述称为关系模式。

 可形式化表示为

                           R(U,D,Dom,F)

 其中R为关系名,U为组成关系R的属性集合,D为属性组U中属性来自的域,Dom为属性向域的的映像的集合,F为属性间数据  的依赖关系集合。

关系模式通常可以表示为(A1,A2,A3,...,An),其中A1,A2,...,An为属性名,域名及属性向域的映像常常直接说明为属性的类型和长度。例如,学生(姓名,性别,年龄)


  关系实例:

  一个给定关系的某一时刻的元组的集合,即当前关系的值。关系R的实例记为r(R)。

 关系模式是关系的型的描述,是静态的,稳定的。而关系实例(值)是关系的“当前”元组的集合,是动态的,随时间不断变化的,其变化通过关系的元组的改变表现出来的。

  从程序设计语言角度来看,“关系”的概念对应“变量”,“关系模式”和“关系实例”相当于变量的类型定义和变量的值。


  候选键:

  若关系中的某一属性或属性集能唯一标识一个元组,而任意一个真子集无该性质,则称为该属性或属性集为关系的候选键。(即候选键是能唯一标识一个元组的最小属性集)

  例如,学生(姓名,性别,年龄),其中的姓名可以当候选键。

  每个至少含有一个候选键,若一个关系有多个候选键,可以选择其中一个为主键。

  包含候选键的属性集称为超键。超键能唯一标识元组,但不具有最小化性质。

  若关系只有一个候选键,且这个候选键包含关系的所有属性,则称这个候选键为全键


  主属性:

  构成候选键的每个属性称为主属性。

  不包含候选键中的属性称为非主属性


  外键:

  若关系R的一个属性(集)F与关系S的主键K对应,即关系R中的某个元组的F上的值也是关系S中某个元组的Ks上的值,则称为该属性(集)F为关系R的外键。

例如,学生(学号,姓名,性别,年龄),学号为主键;

          课程(课程号,课程名,先修课程号),课程号为主键;

          选课(学号,课程号,成绩),其中学号和课程号为主键。

          所以“课程”关系的“先修课程号”引用了“课程”关系的“课程号”属性,是“课程”关系的外键,“选课”关系中的“学号”和“课程号”又分别引用了“学生”关系和“选课”关系中的属性,也是这两个关系的外键。


1.3关系的性质

  当关系作为关系数据模型的数据结构时,需要给予如下的限定和扩充:

  (1)限定关系数据模型中的关系必须是有限集合。

  (2)通过为关系的每个属性附加一个属性名来取消元组分量的有序性。

所以归纳起来有如下性质:

 1,元组个数有限性。

 2,属性名唯一性。

 3,属性的次序无关性。

 4,元组的唯一性。

 5,元组的次序无关性,即元组的顺序可以任意交换。关系是元组的集合,而不是元组的列表。

 6,元组分量的原子性。

 7,分量值域同一性。


1.4关系与二维表

  从用户角度来看,关系模型的数据结构就是一张二维表,表中的每行对应一个元组,表中每列对应一个取值域

  表和关系实际上是不同的,表现在如下几方面:

  (1)表中各列从左到右是有序,而关系中的属性是任意的。

  (2)表中各行从上到下是有序的,而关系中元组的次序是任意的。

  (3)表中可能包含重复的行,而关系中不能有重复的元组。

  (4)表中至少有一个列,而关系可以存在没有任何属性,相当于空集合。

  (5)表中可以包括空行,但关系中不允许。

  (6)表是“平面的”或“二维的”,而关系是“n维的”,是n个域上的一个n元组的集合。


1.5关系数据库

  在关系模型中,数据库是由一个或多个关系组成。数据库的关系模式集合叫做关系数据库模式,或数据库模式。

  在某一应用领域中,描述所有实体集及实体之间联系所形成的关系的集合就构成了一个关系数据库。


本文章参考宋金玉 陈萍 陈刚 编著《数据库原理与应用》


 




推荐阅读
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • Framework7:构建跨平台移动应用的高效框架
    Framework7 是一个开源免费的框架,适用于开发混合移动应用(原生与HTML混合)或iOS&Android风格的Web应用。此外,它还可以作为原型开发工具,帮助开发者快速创建应用原型。 ... [详细]
  • POJ 2482 星空中的星星:利用线段树与扫描线算法解决
    在《POJ 2482 星空中的星星》问题中,通过运用线段树和扫描线算法,可以高效地解决星星在窗口内的计数问题。该方法不仅能够快速处理大规模数据,还能确保时间复杂度的最优性,适用于各种复杂的星空模拟场景。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 浅析python实现布隆过滤器及Redis中的缓存穿透原理_python
    本文带你了解了位图的实现,布隆过滤器的原理及Python中的使用,以及布隆过滤器如何应对Redis中的缓存穿透,相信你对布隆过滤 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 在 CentOS 7 系统中安装 Scrapy 时遇到了一些挑战。尽管 Scrapy 在 Ubuntu 上安装简便,但在 CentOS 7 上需要额外的配置和步骤。本文总结了常见问题及其解决方案,帮助用户顺利安装并使用 Scrapy 进行网络爬虫开发。 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • 本文详细介绍了如何利用CSS技术对链接下划线进行个性化定制和美化,涵盖了多种实用技巧和方法。通过对CSS属性的灵活运用,可以实现不同风格的下划线效果,提升网页的视觉体验。文中不仅提供了基础的代码示例,还结合实际案例进行了深入解析,帮助读者更好地理解和应用这些技巧。此外,文章还引用了《CSS2.0中文手册》中的相关内容,增加了技术的权威性和实用性。 ... [详细]
  • CSS伪类详解:定义与应用
    本文将深入解析CSS伪类的定义及其应用场景。CSS伪类通过为已存在的元素在特定状态下添加特殊样式,能够动态响应用户的交互行为,从而提升网页的视觉效果和用户体验。 ... [详细]
  • 在iOS开发中,基于HTTPS协议的安全网络请求实现至关重要。HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer)是一种旨在提供安全通信的HTTP扩展,通过SSL/TLS加密技术确保数据传输的安全性和隐私性。本文将详细介绍如何在iOS应用中实现安全的HTTPS网络请求,包括证书验证、SSL握手过程以及常见安全问题的解决方法。 ... [详细]
  • 本文以 www.域名.com 为例,详细介绍如何为每个注册用户提供独立的二级域名,如 abc.域名.com。实现这一功能的核心步骤包括:首先,确保域名支持泛解析,即将 A 记录设置为 *.域名.com,以便将所有二级域名请求指向同一服务器。接着,在服务器端使用 ASP.NET 2.0 进行配置,通过解析 HTTP 请求中的主机头信息,动态识别并处理不同的二级域名,从而实现个性化内容展示。此外,还需在数据库中维护用户与二级域名的对应关系,确保每个用户的二级域名都能正确映射到其专属内容。 ... [详细]
  • 如何使用ES6语法编写Webpack配置文件? ... [详细]
  • 为开发者提供了一系列实用的参考网站和资源链接,包括HTML速查手册( 和 ),帮助开发者快速查找和学习相关技术知识。此外,还涵盖了其他重要的开发工具和文档,为编程工作提供全面支持。 ... [详细]
  • SSL 错误:目标主机名与备用证书主题名称不匹配
    在使用 `git clone` 命令时,常见的 SSL 错误表现为:无法访问指定的 HTTPS 地址(如 `https://ip_or_domain/xxxx.git`),原因是目标主机名与备用证书主题名称不匹配。这通常是因为服务器的 SSL 证书配置不正确或客户端的证书验证设置有问题。建议检查服务器的 SSL 证书配置,确保其包含正确的主机名,并确认客户端的证书信任库已更新。此外,可以通过临时禁用 SSL 验证来排查问题,但请注意这会降低安全性。 ... [详细]
author-avatar
重庆车管所
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有