热门标签 | 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关系数据库

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

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


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


 




推荐阅读
  • 合并列值-合并为一列问题需求:createtabletab(Aint,Bint,Cint)inserttabselect1,2,3unionallsel ... [详细]
  • React基础篇一 - JSX语法扩展与使用
    本文介绍了React基础篇一中的JSX语法扩展与使用。JSX是一种JavaScript的语法扩展,用于描述React中的用户界面。文章详细介绍了在JSX中使用表达式的方法,并给出了一个示例代码。最后,提到了JSX在编译后会被转化为普通的JavaScript对象。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • 本文介绍了2015年九月八日的js学习总结及相关知识点,包括参考书《javaScript Dom编程的艺术》、js简史、Dom、DHTML、解释型程序设计和编译型程序设计等内容。同时还提到了最佳实践是将标签放到HTML文档的最后,并且对语句和注释的使用进行了说明。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 本文介绍了停用Vaadin焦点颜色的全局方法。焦点环是一种辅助功能,用于指示字段已从键盘交互获得焦点。每个组件和主题的焦点环样式不同。文章提供了一种方便的方法来找到和修改焦点环样式,通过检查shadow DOM中的标签并覆盖相应的样式。同时,还介绍了使用with或导入样式表的方法来应用修改后的样式。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • jQuery如何判断一个元素是否被点击?
    本文介绍了使用jQuery判断一个元素是否被点击的方法,并通过示例进行了具体说明。注意要指定父级,否则会执行多次。 ... [详细]
  • Jquery 跨域问题
    为什么80%的码农都做不了架构师?JQuery1.2后getJSON方法支持跨域读取json数据,原理是利用一个叫做jsonp的概念。当然 ... [详细]
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
  • 本文讨论了将HashRouter改为Router后,页面全部变为空白页且没有报错的问题。作者提到了在实际部署中需要在服务端进行配置以避免刷新404的问题,并分享了route/index.js中hash模式的配置。文章还提到了在vueJs项目中遇到过类似的问题。 ... [详细]
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社区 版权所有