关系代数的历史与第一范式1NF

关系数据库的诞生和历史
最开始没有数据库,数据直接写到程序里面,物理配置过低,没有数据库概念的需要;
物理配置提高,程序中写数据就非常臃肿,代码缺乏可读性,将数据写到操作系统的文件中,程序通过调用API来调用和使用文件的数据;
调用的接口标准化和规范化后,就成为数据库,从数学模型可以看出数据库分的几个类型:
层次状存放模型,缺陷是同一个元素同时属于两个实体,层次模型就很难处理;
网状数据库,一个人员可以同时属于两个部门,但无论存储方式和查询方式都很难使用;
在70年代初,关系型数据库之父,E.F.Codd ,先在IBM内部发表了一个论文,公司不太重视;
1970年Codd划时代的沦为《用于大型共享数据库的关系数据模型》,用简单的方式解决了数据库建模的问题
严格讲,不是数据库论文,是数学论文,
关系是很多行的集合,行又叫记录,有叫记录的集合;
列又叫列,又叫属性,每个记录都必须先定义好属性,叫结构化;但很难结构化的数据,有困难;
有了关系,就可以进行关系代数,集合运算符:并集、差集、交集、笛卡尔积
比较运算符:大于,小于,等于
专门的关系运算符:选择,投影,连接,除
关系运算的结果,还是关系,使用关系表达式表达


Codd是一个数学家,原来是英国,到美国,到IBM公司,作为研究员,本质上是数学家
其他IBM同事看到论文后,觉得可以研究出商业数据库;其中同事Don Chamberlin将关系代数翻译成一种计算机语言,后来被世界接受,成为SQL;最终IBM实现了SQL的想法,就是DB2,但不是第一个商业软件;
第一个软件公司是Oracle,创始时4个人,正式员工只有Bruce Scott,他的猫叫tiger,书写了第一代Oracle数据库代码,以自己的名字作为测试数据库实例,三个老板讨好员工,后来太累,就辞职了,卖了股票,开了一家Java的新公司。Bob Miner接受Oracle开发工作,Oracle是第一个商业软件,还是Larry Ellison有眼光,看到论文后,直接觉得矿业开发商业软件。从80年代初,到现在三十年,发展成世界第二大软件公司。


关系数据库
基本理论:层次和网络很直观,概念都是很简单。
预备定义 域:域是一组具有相同数据类型的值的集合。
笛卡尔积:给定一组域D1,D2.....,Dn,从每个域中抽取形成向量或数组,后面叫行;
按照排列组合,可以得出不同域的元素的总数: n1*n2*n3
定义:D1*D2*Dn的子集作用在域D1,D2,Dn上的关系,表示为R(D1,D2,Dn)
这里R表示关系的名字——表名,n是关系的目或度——列数。
关系中的每个元素是关系中的元组——行、记录。
单元关系就是只有一列的表;二元关系就是只有两列的表;
关系就是所有的一切都可以用关系,二维表来表示出来,把查询演变成关系的计算;
由于域可以相同,为了加以区分,必须对每列起一个名字,称为属性;n目关系必有n个属性;
属性就是列名;
记住几个示例表:
学生表 S(S#,SN,SD,SA)
课程表 C(C#,CN,PC#)
学生-课程表 SC(S#,C#,G)
候选键就是该列固定后,整行就可以确定下来;候选码的本质上是唯一性约束,学号可以,姓名不可以
表的候选码是有具体的语义环境有关,与现有关系中的数据无关;
但目前给出的候选码不太精确,学号+姓名成为候选码,不太好;
若一个关系有多个候选码,则选定其中一个为主码,又叫主键primary key。学号成为码,身份证号也可以成为码。
物理排布原来是按照主键进行存储和访问,也可以被其他表进行参照;需在表中设计primary key;
主码的主属性,则成为主属性;
不包含在任何候选码中的属性称为非主属性;表中的列分成两类。


对关系再附加一些其他属性:
1.列是同质的,每一列中的分量是同一类型的数据,来自同一个域;
2.不同的列可出自同一个域,称其中每一个列为一个属性,不同的属性药给予不同的属性名;
3.列的顺序无所谓,即列的次序可以任意交换;
4.任意两个元祖不能完全相同;任意行不能重复;
5.行的顺序也是无所谓,即行的次序可以任意交换,rownum与物理记录顺序无关;
6.分量必须取原子值,即每一个分量都必须是不可分的数据项;
凡是满足上面六个关系的关系,就叫第一范式,写作1NF;
根据条件4,可以得出第一范式必有主键;至少会有全码;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值