极客油画

1970年,在加州圣何塞硅谷实验室里工作的Edger Frank Codd公开发表了一篇论文: A Relational Model of Data For Large Shared Data Banks。翻译成中文就是:一个为大容量共享数据银行设计的数据的关系模型。

这篇论文是基于1969年他在IBM的内部工作报告的基础上修改的。所以关系模型到底诞生于哪一年,是一个有争议的事情。很多人通常认为1970年是它诞生的时候,但是数据库圈子的老头子们,则把1969年作为关系模型的诞生时间。

Edgar Codd最初提出关系模型的时候,他以为好日子很快就要到来了。但是IBM并不是很愿意去实现这个模型,因为在这之前,1966年IBM就开启了一个数据库项目:IBM Information Management System。这个简称IMS的系统1968年发行了第一个版本。大企业蜂拥而至。卖的不是一般的好。

IBM对祖师爷Edgar Frank Codd的关系模型的态度很暧昧:不拒绝,不反对,但是也不给钱做系统。现在回头去看究其原因是怕影响了IMS这个层次模型数据库去赚钱。

但是,Codd也是一个非常顽强的人,他就去找IBM的大客户,给大客户们洗脑说关系数据库才是未来,层次是过去。大客户们被洗的都信了关系代数神教以后就回头找IBM,说赶紧给爸爸们做一个关系数据库出来。

IBM不怕Codd,但是经不住客户金主爸爸们反复要求,就在自己的Future System里加了一个新的研究对象:System R。Future System项目是IBM1970年前后开展的一个大型研究项目,为的是开发出革命性的新软件和硬件。

System R团队成立于1973年。里面包括了后来很多在数据库圈里声名显赫的人,包括后来的图灵奖获得者Jim Gray(提出并实现数据库事务处理机制)。当然,也不知道IBM怎么想的,IBM把System R团队和Codd给隔离开来了。

1974年的时候,Donald Chamberlin和Raymond Boyce发表了一篇论文: SEQUEL: A structured English query language。

那为什么SEQUEL变成了SQL了呢?是因为IBM发现原来SEQUEL居然是英国一家公司的注册商标,于是就只好改了。再后来,IBM为了和Ingres竞争,抢先把SQL提交给标准委员会。于是SQL的全称也偷偷的换成了Standard Query Language————一个更加霸气的名字。

Codd在提出关系模型的时候,论文里有一个查询语言叫Alpha。但是因为和System R的人员隔离,对方又发明了SQL。到底是Alpha好还是SQL好呢?

SQL有一个问题,它和关系代数是不一致的。它的SELECT是关系代数里面的PROJECT,它的WHERE和HAVING是关系代数里面的SELECT。如此的不一致,对初学者是困惑的。

SQL还继承了关系代数最大的一个坑:NULL。简单来说关系代数是三元关系:TRUE,FALSE,NULL。而不是常见的两元关系。这里引入NULL之后带来一系列复杂的规则变化,是SQL最大的坑之一。


本文发表于 0001-01-01,最后修改于 0001-01-01。

本站永久域名「 jiavvc.top 」,也可搜索「 极客油画 」找到我。


上一篇 « 下一篇 »

赞赏支持

请我吃鸡腿 =^_^=

i ysf

云闪付

i wechat

微信

推荐阅读

Big Image