精华内容
下载资源
问答
  • 关系型数据库由哪三部分组成_关系数据库| 第1部分
    千次阅读
    2020-08-07 06:46:50

    关系型数据库由哪三部分组成

    使用关系数据库 (Using The Relational Database)

    A relational database is used for electronic data management in computer systems and is based on the relational database model. This was proposed in 1970 by Edgar F. Codd first time and is still, despite some criticism, as an established standard for databases.

    关系数据库用于计算机系统中的电子数据管理,并且基于关系数据库模型。 这是由Edgar F. Codd于1970年首次提出的,尽管有一些批评,它仍然是数据库的既定标准。

    The associated database management system is called a relational database management system, or RDBMS (Relational Database Management System). To query and manipulate the data predominantly the database language SQL (Structured Query Language) is used.

    关联的数据库管理系统称为关系数据库管理系统或RDBMS(关系数据库管理系统)。 为了主要查询和操作数据,使用了数据库语言SQL(结构化查询语言)。

    Basis of the concept of relational databases is the relation, in a sense of well-defined mathematical concept. It represents a mathematical description of a table, see database relation. Operations on these routes are determined by the relational algebra. The relational algebra is thus the theoretical basis of SQL.

    从明确定义的数学概念的意义上来说,关系数据库的概念的基础是关系。 它代表表的数学描述,请参见数据库关系。 这些路线上的运算由关系代数决定。 因此,关系代数是SQL的理论基础。

    Despite the math and abstract definition of the database model relational databases to handle relatively simple and flexible. This had great impact on the success of database technology.

    尽管对数据库模型进行了数学和抽象定义,但关系数据库仍然可以相对简单灵活地进行处理。 这对数据库技术的成功产生了重大影响。

    关系数据库–基本概念 (Relational Database – Basic concepts)

    A relational database can be thought of as a collection of tables (the relations), which are stored in records. Each row (tuple) in one table is a record (record). Each tuple is a set of attribute values (attributes = attributes), the columns of the table. The relation schema specifying, in the number and type of attributes for a relation. The picture illustrates the relation R with attributes A1 to An in the columns.

    关系数据库可以认为是表(关系)的集合,这些表存储在记录中。 一个表中的每一行(元组)都是一条记录(记录)。 每个元组是一组属性值(属性=属性),即表的列。 关系模式,用于指定关系的属性的数量和类型。 该图在列中说明了具有属性A1到An的关系R。

    For example, one book at a library by the record (book-id, author, publisher, publishing year, title, date of recording will be described). A record must be clearly identifiable. This takes about one or more keys (English Key). In this case book contains the key ID. A key must never change. It relates to the record and not on the position in the table.

    例如,将按记录记录图书馆的一本书(书号,作者,出版者,出版年份,书名,记录日期)。 记录必须清晰可辨。 这大约需要一个或多个键(英文键)。 在这种情况下,书包含密钥ID。 钥匙永远不能改变。 它与记录有关,而不与表中的位置有关。

    表之间的关系 (Relations between tables)

    Furthermore, links are used to express the relationships between tables. A library database could therefore be implemented as follows:

    此外,链接用于表示表之间的关系。 因此,可以如下实现库数据库:

    Table books, which contains one row for each book:

    表格书籍,每本书包含一行:

    • Each line consists of the columns of the table (attribute): book ID, author, publisher, publishing year, title, date of recording.

      每行包括表格的列(属性):书籍ID,作者,出版者,出版年份,书名,记录日期。
    • The key is the book ID, because it marks any book unmistakably.

      密钥是书籍ID,因为它可以清楚地标记任何书籍。

    The entry (10.3) would be called so that the user has with the ID 10 (“Hans bookworms’) the book with the ID3 (“My life with Asterix”). The same user also has the book “Borrowed Printing Made Easy”, which is evidenced by the table entry (10, 2). The key one here takes the attribute set (user-ID, book ID). At the same time connects the user ID each entry in the table Item out with an entry in the table users, and the book ID Item out of each entry with an entry of the table combines books. Therefore, these attributes mean in this context, foreign key (English foreign key).

    条目(10.3)将会被调用,以便用户拥有ID 10(“汉书虫”)和ID3(“ Asterix我的生活”)的书。 同一用户还拥有一本书“轻松进行借阅印刷”,这可以通过表格条目(10,2)证明。 这里的关键是采用属性集(用户ID,书ID)。 同时,将表ID中的每个条目的用户ID与表用户中的一个条目连接在一起,并将表中每个条目的用户ID条目与该表中的条目连接在一起。 因此,这些属性在此上下文中表示外键(英文外键)。

    划界 (Demarcation)

    In addition to the relational database model, there are several alternative approaches, which allow data to manage in other structures. These concepts often have only a minor importance or not yet enforced. Nevertheless, they provide an easier access for certain applications of the data to be managed.

    除了关系数据库模型外,还有几种替代方法,这些方法允许在其他结构中管理数据。 这些概念通常只具有次要的重要性,或者尚未被实施。 但是,它们为要管理的数据的某些应用程序提供了更容易的访问。

    较旧的方法 (Older approaches)

    In the 60s and 70s for operational data processing hierarchical database systems and network database systems were used. These are the data or table structure defined in the draft stage and may not vary with the query. They come in special cases, also still in use today.

    在60年代和70年代,用于操作数据处理的是分层数据库系统和网络数据库系统。 这些是在草稿阶段定义的数据或表结构,可能不会随查询而变化。 它们以特殊情况出现,今天仍在使用。

    面向对象的数据库 (Object oriented databases)

    With the advent of object-oriented programming languages object databases have been increasingly offered. This allows objects from OO languages like Java are held directly in the database – a mapping of objects to the relational table structure, the object-relational mapping is then no longer necessary. This approach has advantages over the relational design if you want to store complex data objects that can be mapped only heavy on the flat relational table structures.

    随着面向对象编程语言的出现,越来越多地提供了对象数据库。 这样就可以将诸如Java之类的OO语言的对象直接保存在数据库中-将对象映射到关系表结构,这样就不再需要对象-关系映射。 如果要存储只能在平面关系表结构上重映射的复杂数据对象,则此方法相对于关系设计具有优势。

    Object databases have, however, still disadvantages to relational databases with the processing of large amounts of data. This is caused for example by access paths to objects on multiple levels (example, inheritance and association). This results in write operations to the lock management at an exponential complexity and thus leads to poor performance. The performance issues were addressed in the object-relational databases in which only the constructs of object-oriented databases with lower complexity (eg n * log (n)) were taken.

    但是,对象数据库在处理大量数据时仍比关系数据库不利。 例如,这是由对多个级别的对象的访问路径(例如,继承和关联)引起的。 这导致对锁管理的写操作呈指数复杂性,从而导致性能下降。 在对象关系数据库中解决了性能问题,其中仅采用具有较低复杂性(例如n * log(n))的面向对象数据库的结构。

    对象关系数据库 (Object-relational databases)

    Some providers add their relational databases, object-oriented properties and then call these object-databases. However, these are not provided for the direct imaging of objects in the programming language – they are just using the concept of inheritance to simplify the definition and query of tables with similar field structures and thus their use. The SQL-99 standard was extended to object-language elements.

    一些提供程序添加他们的关系数据库,面向对象的属性,然后调用这些对象数据库。 但是,并没有为使用编程语言对对象进行直接成像提供这些功能-它们只是使用继承的概念来简化具有相似字段结构的表的定义和查询,从而简化了它们的使用。 SQL-99标准已扩展到对象语言元素。

    半结构化数据库 (Semi-structured databases)

    New concepts are the semi-structured databases. They differ from the traditional database model is that they do not have a fixed predetermined scheme. The database is hierarchically structured as a tree, and each database unit (English Entity) of the same type can have different sets of attributes.

    新概念是半结构化数据库。 它们与传统数据库模型的不同之处在于它们没有固定的预定方案。 数据库按层次结构构建为树,并且同一类型的每个数据库单元(英语实体)可以具有不同的属性集。

    Typical representative of this type are XML databases that manage the data as XML fragments. The XML data is hierarchically organized here and can contain any structure as long as they are well formed according to XML definition. The data can be queried using XQuery or XPath. Manipulation are now used proprietary language extensions. Disadvantage of current XML databases is in comparison to relational systems lower performance.

    这种类型的典型代表是将数据作为XML片段管理的XML数据库。 XML数据在这里是按层次结构组织的,并且可以包含任何结构,只要它们根据XML定义格式正确即可。 可以使用XQuery或XPath查询数据。 现在,操纵已使用专有语言扩展。 当前XML数据库的缺点是与关系系统相比性能较低。

    Semi-structured database can be implemented via extensions or server programming with relational DB where the relational model is used but no more.

    半结构化数据库可以通过关系数据库的扩展或服务器编程来实现,而关系数据库仅使用关系模型。

    Continued…

    继续…

    翻译自: https://www.eukhost.com/blog/webhosting/relational-database-part-1/

    关系型数据库由哪三部分组成

    更多相关内容
  • 数据库管理软件承载着信息系统的... 本白皮书紧密围绕关系型云数据库应用过程关键问题,梳理了关系型云数据库的发展状况与技术体系,分析了关系型云数据库选型方法、业务影响评估、实施路径,并提出了相关建议。
  • 本文我们将关注非关系型NoSQL数据库的10个关键特征:排在前5位的优点和前5位的挑战。  NoSQL的五大优点  1:弹性扩展  多年来,数据库负载需要增加时,数据管理员只能依赖于纵向扩展(scale-up)–买更多更强...
  • 关系数据库设计核心

    千次阅读 2020-04-10 16:32:32
    1、设计一个合适的关系数据库系统的关键关系数据库模式的设计,即应构造几个关系模式, 每个模式有哪些属性,怎样将这些相互关联的关系模式组建成一个适合的关系模型,关系数据库 的设计必须在关系数据库设计理论...

    一、关系数据库设计理论

    1、设计一个合适的关系数据库系统的关键是关系数据库模式的设计,即应构造几个关系模式, 每个模式有哪些属性,怎样将这些相互关联的关系模式组建成一个适合的关系模型,关系数据库 的设计必须在关系数据库设计理论的指导下进行。
    2、关系数据库设计理论有三个方面的内容:函数依赖、范式和模式设计。函数依赖起核心作用, 它是模式分解和模式设计的基础,范式是模式分解的标准。

    【例1】设计一个学生课程数据库,其关系模式SDSC(Sno, Sname, Age, Dept,DeptHead, Cno,Grade),各属性含义为学号、姓名、年龄、系、系主任姓名;课程号、成绩。根据实际情况, 这些属性语义规定为:
    (1)一个系有若干学生,一个学生只属于一个系。
    (2)一个系只有一个系主任。
    (3)一个学生可以选修多门课程,一门课程可被多个学生选修。 (4)每个学生学习每门课程有一个成绩
    在这里插入图片描述
    从上述语义规定和分析表中数据可以看出,(Sno, Cno)能唯一标识一个元组,所以,(Sno, Cno)为该关系模式的主码,但在进行数据库操作时,会出现以下问题。
    (1)数据冗余(2)插入异常(3)删除异常(4)修改异常

    由于存在上述问题,SDSC不是一个好的关系模式。为了克服这些异常,将S关系分解为学生关系S (Sno, Sname, Age, Dept),系关系D(Dept,DeptHead),选课关系SC(Sno, Cno,Grade),这三个关系模式的实例如表2、表3、表4所示。
    在这里插入图片描述
    在这里插入图片描述

    二、规范化

    规范化的基本思想是尽量减小数据冗余,消除数据依赖中不合适的部分,解决插入异常、删除异常和更新异常等问题,这就要求设计出的关系模式要满足一定条件。在关系数据库的规范化过程中,为不同程度的规范化要求设立的不同标准或准则称为范式。满足最低要求的称为第一范式,简称1NF,在第一范式基础上满足进一步要求的成为第二范式2NF,以此类推。
    1971年至1972年,E.F.Codd系统地提出了1NF、2NF、3NF的概念,讨论了关系模式的规
    范化问题。 1974年,Codd。和Boyce又共同提出了一个新范式,即BCNF。1976年有人提出了4NF,后又有人提出了5NF
    各个范式之间的集合关系可以表示为:
    5NF4NFBCNF3NF2NF1NF
    如下图所示:
    在这里插入图片描述
    在这里插入图片描述

    1、第一范式(1NF)

    所谓第一范式(1NF)是指在关系模型中,对于添加的一个规范要求,所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。即实体中的某个属性有多个值时,必须拆分为不同的属性。在符合第一范式(1NF)表中的每个域值只能是实体的一个属性或一个属性的一部分。简而言之,第一范式就是无重复的域

    说明:在任何一个关系数据库中,第一范式(1NF)是对关系模式的设计基本要求,一般设计中都必须满足第一范式(1NF)。不过有些关系模型中突破了1NF的限制,这种称为非1NF的关系模型。换句话说,是否必须满足1NF的最低要求,主要依赖于所使用的关系模型。

    在这里插入图片描述

    2、第二范式(2NF)

    在1NF的基础上,非码属性必须完全依赖于候选码(在1NF基础上消除非主属性对主码的部分函数依赖)

    第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或记录必须可以被唯一地区分。选取一个能区分每个实体的属性或属性组,作为实体的唯一标识。

    例如在员工表中的身份证号码即可实现每个一员工的区分,该身份证号码即为候选键,任何一个候选键都可以被选作主键。在找不到候选键时,可额外增加属性以实现区分,如果在员工关系中,没有对其身份证号进行存储,而姓名可能会在数据库运行的某个时间重复,无法区分出实体时,设计辟如ID等不重复的编号以实现区分,被添加的编号或ID选作主键。(该主键的添加是在ER设计时添加,不是建库时随意添加)

    第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。简而言之,第二范式就是在第一范式的基础上属性完全依赖于主键。
    在这里插入图片描述

    3、第三范式(3NF)

    在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)
    第三范式(3NF)是第二范式(2NF)的一个子集,即满足第三范式(3NF)必须满足第二范式
    (2NF)。
    数据库范式而言之,第三范式(3NF)要求一个关系中不包含已在其它关系已包含的非主关键字信息。

    例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。简而言之,第三范式就是属性不依赖于其它非主属性,也就是在满足2NF的基础上,任何非主属性不得传递依赖于主属性。

    在这里插入图片描述

    4、巴斯-科德范式(BCNF)

    Boyce-Codd Normal Form(巴斯-科德范式),在3NF基础上,任何非主属性不能对主键子集依赖(在3NF基础上消除对主码子集的依赖)
    巴斯-科德范式(BCNF)是第三范式(3NF)的一个子集,即满足巴斯-科德范式(BCNF) 必须满足第三范式(3NF)。通常情况下,巴斯-科德范式被认为没有新的设计规范加入,只是 对第二范式与第三范式中设计规范要求更强,因而被认为是修正第三范式,也就是说,它事实上是对第三范式的修正,使数据库冗余度更小。这也是BCNF不被称为第四范式的原因。某些书上, 根据范式要求的递增性将其称之为第四范式是不规范,也是更让人不容易理解的地方。而真正的第四范式,则是在设计规范中添加了对多值及依赖的要求。

    【目的原则】

    规范化目的是使结构更合理,消除存储异常,使数据冗余尽量小。便于插入、删除和更新。遵从概念单一化“一事一地”原则,即一个关系模式描述一个实体或实体间的一种联系。规范的实质就是概念的单一化。
    一个关系模式接着分解可以得到不同关系模式集合,也就是说分解方法不是惟一的。最小冗余的要求必须以分解后的数据库能够表达原来数据库所有信息为前提来实现。其根本目标是节省存储空问,避免数据不一致性,提高对关系的操作效率,同时满足应用需求。实际上,并不一定要求全部模式都达到BCNF不可。有时故意保留部分冗余可能更方便数据查询。尤其对于那些更新频度不高,查询频度极高的数据库系统更是如此。

    【反范式(了解)】

    规范化的优点是明显的,它避免了大量的数据冗余,节省了存储空间,保持了数据的一致性。当一个库里的数据经常发生变化时,达到3NF的库可以使用户不必在超过两个以上的地方更改同 一个值。那么是不是只要把所有的表都规范为3NF后,数据库的设计就是最优的呢?这可不一定。范式越高意味着表的划分更细,一个数据库中需要的表也就越多,用户不得不将原本相关联的数据分摊到多个表中。当用户同时需要这些数据时只能采用连接表的形式将数据重新合并在一起。同时把多个表联接在一起的花费是巨大的,尤其是当需要连接的两张或者多张表数据非常庞大的时候,表连接操作几乎是一个噩梦,这严重地降低了系统运行性能。

    展开全文
  • 关系数据库:将数据存储在表数据库,以二维表为数据结构。表和字段类型之间的关系需要明确定义,以SQL语句为操作指令,也称为SQL数据库。 常见的关系数据库: SQLServer:微软公司开发的关系数据库管理...

    首先用一个通俗易懂的比喻来形容它们的区别:关系型数据库就类似于Excel,非关系型数据库类似于word,用哪一个,取决你想要编辑和处理什么数据。

    关系型数据库:将数据存储在表中的数据库,以二维表为数据结构。表和字段类型之间的关系需要明确定义,以SQL语句为操作指令,也称为SQL数据库。

    常见的关系型数据库:

    SQLServer:微软公司开发的关系型数据库管理系统。

    [1]

    优点:不开源,它们针对不同的用户提供了具有不同特性的多个版本。拥有丰富的用户界面,可以处理大量数据。

    缺点:传统数据库操作频繁容易中断,数据量大负载也大。

    MySQL:1995年发布。

    [2]

    优点:开源,拥有很多文档和在线支持。

    缺点:规模不大,数据量过操作过于频繁时容易中断。

    PostgreSQL:1996年发布。

    [3]

    优点:开源,基于对象-关系模型的数据库,它不只是关系型数据库,用户可以自己拓展功能。

    缺点:拓展功能的操作比较复杂,新手不易上手,不如直接使用非关系型数据库。内含文档不如MySQL多。

    非关系型数据库不像关系数据库那样使用行和列的表格模式的数据库。相反,它的存储模型是针对它所存储的数据类型进行优化的。不只有使用SQL语句作为操作指令,可以使用其他类型的查询语言,也被称为NoSQL(Not only SQL)数据库, 不需要预先定义关键数据的模式,比SQL数据库更加灵活。

    NoSQL数据库的常见类型:

    1. 面向文档的数据库(Document-oriented databases ):用于存储、管理、检索文档的信息。可以在海量的数据库中快速查询数据。例如MongoDB、CouchDB
    2. 键值存储数据库(Key-Value Stores): 这是一个使用不同键的数据库,其中每个键只与集合中的一个值相关联。把它当作一本字典。NoSQL最简单的数据库类型之一,例如Redis、Tokyo Cabint。
    3. 分布式数据库(Wide-Column Stores): 使用表、行和列,但与关系数据库不同,列的名称和格式在同一表中的行与行之间可能不同,弥补了SQL数据库拓展性的缺陷。
    4. 图储存数据库(Graph Stores): 使用图结构进行具有节点、边和属性的语义查询,以表示和存储数据。

    常见的非关系型数据库:

    MongoDB:是一个文档存储数据库,也是目前使用中最流行的NoSQL数据库引擎。

    [4]

    优点:它使用类似json的文档来存储数据,并支持在多个服务器上运行。MongoDB允许自动分片,这是一种数据库分区,可以将非常大的数据库分割成更小、更快、更容易管理的部分,称为数据分片。容易设置和上手,专业支持也多。

    缺点:是他们不允许连接用于根据两个或多个表之间的公共字段组合数据或行。MongoDB确实有一个LOOKUP函数,官方建议用户不要依赖它们。

    Redis:远程字典服务器是一个键值存储。

    [5]

    优点:它支持不同种类的抽象数据结构,如字符串、列表、映射、集合、排序集合等等。它也是开源的。不仅支持多数据类型,而且易于安装。

    缺点:同上,不允许连接用于根据两个或多个表之间的公共字段组合数据或行。并且需要掌握Lua编程语言(一种高级脚本语言)

    区别:

    总结一下关系数据库和非关系数据库之间的区别:关系数据库以行和列的方式存储数据,就像电子表格一样,而非关系数据库则不以行和列的方式存储数据,使用最适合它所存储的数据类型的存储模型(四种存储模型之一)。

    如何确定你要使用什么数据库:

    1. 你要处理的数据在使用行和列来表示更合适就用关系型数据库;更适合储存在一个灵活的空间里就用非关系型数据库。

    2. 数据集小/中等,需要进行密集的读/写操作,就用关系型数据库,需要灵活更改数据类型就用非关系型数据库。

    [1]https://www.microsoft.com/en-us/sql-server/sql-server-2019

    [2]https://www.mysql.com

    [3]https://www.postgresql.org

    [4]https://www.mongodb.com/zh-cn

    [5]https://redis.io

    展开全文
  • 关系数据库的发展历史

    千次阅读 2019-03-12 23:15:03
    数据库发展史 信息系统产生了海量的数据,有...关系数据库 :使用关系型模型进行数据库设计和存放 非关系数据库:为适应水平扩展性和处理超大量的数据环境,近几年发展非常迅速的发展,衍生类型非常多。 本...

    数据库发展史

    信息系统产生了海量的数据,有数据必须要有数据的存放位置,

    无库时代 :没有专门的数据库,数据大多以文件形式存放

    层次状数据库 :使用层次状模型进行数据库设计和存放

    网状数据库 :使用网状模型进行数据库设计和存放

    关系型数据库 :使用关系型模型进行数据库设计和存放

    非关系型数据库:为适应水平扩展性和处理超大量的数据环境,近几年发展非常迅速的发展,衍生类型非常多。

     

    本文主要考虑对于OLTP和OLAP占据主流的关系型数据库,目前关系型数据库软件主要有:

    大型商用关系型数据库:Oracle,DB2,SQL Sever/Sybase;

    近年发展较快的开源关系型数据库:MySQL,PostgreSQL,SQLite
    关系型数据库主要人物与发展历史

    关系型数据库的发展,大致可分为理论奠基、SQL标准、商用成型、多家发展等几个阶段,在每个阶段都有对应的重要人物与贡献。

    首先是数学家E.F.Codd发表了数学论文《用于大型共享数据库的关系数据模型》,提出关系和关系运算的概念,奠定了关系型数据库的理论模型;

    然后是Codd的同事DonChamberlin将Codd的论文和关系运算,转换成为比较容易理解和使用的SQL语言,并且在后面成为所有关系型数据库的标准;

    有了上面的数据理论和SQL基础,LarryElision和他的同事看到商机,开发出第一个商用大型关系型数据库Oracle,Scott作为一个开发的员工,将其测试账户放在里面了;

    除了Oracle数据库,IBM也开发出了DB2数据库,但其他主流的关系型数据库都与Michael Stonebraker有关,开发了Postgres并放在BSD版权下,后来演变成了Postgres SQL;87年微软和Sybase合作,开发除了MS SQL和Sybase;后又加入Ingres和Informax,其他的主流关系型数据库几乎都和Michael Stonebraker有关。
    关系型数据库之父:E.F.Codd

    1970年,Codd划时代的论文《用于大型共享数据库的关系数据模型》


     Codd全关系系统十二准则

    准则0

    一个关系形的关系数据库系统必须能完全通过它的关系能力来管理数据库。

    准则1 信息准则

    关系数据库系统的所有信息都应该在逻辑一级上用表中的值这一种方法显式的表示。

    准则2 保证访问准则

    依靠表名、主码和列名的组合,保证能以逻辑方式访问关系数据库中的每个数据项。

    准则3 空值的系统化处理

    全关系的关系数据库系统支持空值的概念,并用系统化的方法处理空值。

    准则4 基于关系模型的动态的联机数据字典

    数据库的描述在逻辑级上和普通数据采用同样的表述方式。

    准则5 统一的数据子语言

    一个关系数据库系统可以具有几种语言和多种终端访问方式,但必须有一种语言,它的语句可以表示为严格语法规定的字符串,并能全面的支持各种规则。

    准则6 视图更新准则

    所有理论上可更新的视图也应该允许由系统更新。

    准则7 高级的插入、修改和删除操作

    系统应该对各种操作进行查询优化。

    准则8 数据的物理独立性

    无论数据库的数据在存储表示或存取方法上作任何变化,应用程序和终端活动都保持逻辑上的不变性。

    准则9 数据逻辑独立性

    当对基本关系进行理论上信息不受损害的任何改变时,应用程序和终端活动都保持逻辑上的不变性。

    准则10 数据完整的独立性

    关系数据库的完整性约束条件必须是用数据库语言定义并存储在数据字典中的。

    准则11 分布独立性

    关系数据库系统在引入分布数据或数据重新分布时保持逻辑不变。

    准则12 无破坏准则

    如果一个关系数据库系统具有一个低级语言,那么这个低级语言不能违背或绕过完整性准则。

     
    SQL之父:唐-钱伯林(Don Chamberlin)

     

    唐·钱伯林(DonChamberlin),是IBM Fellow,ACM及IEEE 特别会员。他是SQL关系数据库语言的发明人之一,也是XQuery语言的设计基础Quilt语言的发明人之一。Don拥有加利福尼亚大学博士学位。他目前在IBM Almaden 研究中心工作,在过去几年中,他代表IBM参与W3C XML Query工作组的工作。


    Scott和他的猫的故事

    第一个商用关系型数据库——Oracle

     

    左起 Ed Oates、Bruce Scott、Bob Miner、Larry Ellison

     

    Oracle与Larry Ellison

     
    主流数据库的奠基人——Michael Stonebraker

    Michael Stonebraker,SQL Server/Sysbase奠基人。

    著名的数据库科学家,他在1992 年提出对象关系数据库模型在加州伯克利分校计算机教授达25年。在此期间他创作了Ingres,Illustra, Cohera, StreamBase Systems和Vertica等系统。Stonebraker教授也曾担任过Informix的CEO,目前他是MIT麻省理工学院客席教授。

    Stonebraker 教授领导了称为Postgres的后Ingres项目。这个项目的成果非常巨大,在现代数据库的许多方面都做出的大量的贡献。Stonebraker 教授还做出了一件造福全人类的事情,那就是把Postgres 放在了BSD 版权的保护下。如今Postgres名字已经变成了PostgreSQL,功能也是日渐强大。

    87年左右,Sybase联合了微软,共同开发SQL Server。原始代码的来源与Ingres有些渊源。后来1994年,两家公司合作终止。此时,两家公司都拥有一套完全相同的SQLServer代码。可以认为,Stonebraker教授是目前主流数据库的奠基人。

     

    1973 年 IBM 启动了 System R 项目,项目组发表了一系列关于关系数据库的的文章。两个伯克莱大学的科学家,Michael Stonebraker 和 Eugene Wong 读了这些文章后非常感兴趣,于是决定自己启动一个关系数据的研究项目。他们已经为一个地理数据库系统申请到了资金,他们称为 ingres,意思是交互式图形获取系统

    Ingres的代码是可以免费获得的,到 1980 年止,共分发了 1000 份拷贝,不少公司使用这些代码形成了自己的产品线。Informix 是最早的用户之一,并且其员工完全是 Ingres 项目的人员。他们在 1984 发布了基于 Ingres 的第一版产品,到 1997 年已经成了第二大数据库供应商。然而,一系列管理和财会方面的失误在短短两年内毁了公司的信誉,并于 2000 年被 IBM 收购。

     

    Robert Epstein 在伯克立大学项目中的重要的程序员,创建了 Britton-Lee,后来的 Sybase,Sybase 在 80 到 90 年期间是第二号数据库产品,Sybase 于1992年将产品卖给微软,微软称之为 MSSQLServer。

    Stonebraker 自己离开了伯克立大学在1982年创建了Ingres 公司,Stonebraker 在这个公司工作到 1991 年,然后公司卖给了 ASK,1994年 ASK/ingres 被 CA Computer Associates 收购。2004 年 CA 在开源许可下发布了 Ingres release 3,并继续开发销售 Ingres。

    在返回 Berkeley 之后,Stonebraker 开始了一项后-Ingres 计划来致力于解决关系模型的数据库管理现有实现的局限性。其中主要的是它们不能让用户定义组合更简单域的新域(或者叫类型)(参见关系模型获得对术语域的解释。)结果的计划叫做 Postgres,以介入对增加完整的类型支持所需要的最小数目的特征为目标。其中包括定义类型的功能,还有完全描述联系的能力 - 联系至今已经广泛使用但仍由用户完全维护。在 Postgres 中数据库理解联系,并能以使用规则的自然方式在有关联的表中检索信息。详情请参见 PostgreSQL 的文章。在 1990 年 Stonebraker 再次离开 Berkeley 去商业化 Postgres,使用了名字 Illustra。Illustra 后来被 Informix 并购,而 Stonebraker 再次回去搞高等教育了。

     
    附录:主要关系型数据库厂商的发展历史
    数据库厂商的发展历史之Oracle

    所有这一切要从IBM的一篇论文谈起,1970年的6月,IBM公司的研究员埃德加·考特(Edgar Frank Codd) 在 Communications ofACM 上发表了那篇著名的《大型共享数据库数据的关系模型》(A Relational Model ofData for Large Shared Data Banks)的论文。这是数据库发展史上的一个转折。要知道,当时还是层次模型和网状模型的数据库产品在市场上占主要位置。从这篇论文开始,拉开了关系型数据库软件革命的序幕。IBM虽然1973年就启动了SystemR的项目来研究关系型数据库的实际可行性,也没有及时推出这样的产品,因为当时IBM的的IMS(著名的层次型数据库)市场不错,如果推出关系型数据库,牵涉到IBM很多人的自身利益。再者,IBM庞大复杂的官僚机构处在决策上远不那么灵活

    1977年6月,Larry Ellison与Bob Miner和Ed Oates在硅谷共同创办了一家名为软件开发实验室(Software Development Laboratories,SDL)的计算机公司(ORACLE公司的前身)。那个时候,32岁的Larry Ellison,这个读了三家大学都没能毕业的辍学生,还只是一个普通的软件工程师。公司创立之初,Miner是总裁,Oates为副总裁,而Ellison,因为一个合同的事情,还在另一家公司上班。没多久,第一位员工Bruce Scott(用过ORACLE数据库软件的人都知道有个Scott用户的吧?没错,就是这个Scott,至于Scott用户的密码Tiger,那是Scott养的猫的名字, Oracle也一直没有忘记她的第一位程序员)加盟进来,在Miner和Oates有些厌倦了那种合同式的开发工作后,他们决定开发通用软件,不过们还不知道自己能开发出来什么样的产品。Oates最先看到了埃德加·考特的那篇著名的论文连同其他几篇相关的文章并推荐Ellison和Miner也阅读一下。Ellison和Miner预见到数据库软件的巨大潜力(跟着IBM走,没错),于是,SDL开始策划构建可商用的关系型数据库管理系统(RDBMS)。

    根据Ellison和Miner他们在前一家公司从事的一个由中央情报局投资的项目代码,他们把这个产品命名为ORACLE。因为他们相信,ORACLE(字典里的解释有“神谕, 预言”之意)是一切智慧的源泉。1979年,SDL更名为关系软件有限公司(Relational Software,Inc.,RSI),毕竟“软件开发实验室”不太像一个大公司的名字。1983年,为了突出公司的核心产品,RSI再次更名为ORACLE。Oracle从此正式走入人们的视野。

    RSI在1979年的夏季发布了可用于DEC公司的PDP-11计算机上的商用ORACLE产品,这个数据库产品整合了比较完整的SQL实现,其中包括子查询、连接及其他特性。出于市场策略,公司宣称这是该产品的第二版,但却是实际上的第一版。这就是Oracle这种“要命”的市场策略,事实上,这种策略有时候也是非常成功的。

    1983年3月,RSI发布了ORACLE第三版。Miner和Scott历尽艰辛用C语言重新写就这一版本。(说老实话,太佩服这两个大牛了,为什么一直没多少媒体宣传这两个人呢,怀疑Miner简直就是“少林老僧”般的人物。)要知道,C语言当时推出不久,用它来写ORACLE软件也是具有一定的风险的,但除此之外,别无他法。很快就证明了这样做是多么的正确:C编译器便宜而又有效,还有很好的移植性。从现在起,ORACLE产品有了一个关键的特性:[可移植性]。同样是1983年,IBM发布了姗姗来迟的Database 2(DB2),但只可在MVS上使用。不管怎么说,ORACLE已经占取了先机。

    在开发第三版还没有结束的时候,Scott离开了ORACLE。当时用C语言改写ORACLE的压力很大,无休止的软件调试终于让Scott不堪重负,选择了一走了之。把剩下的重担交给了Miner一个人。在出售了自己的4%的股票之后,Scott 后来创建了Gupta公司(现更名为Centura Software)和PointBase公司(提供百分之百纯Java嵌入式数据库),都是开发和数据库相关的产品。多年后有人问到他的4%的ORACLE股票的时候,Scott,这个曾经给ORACLE写出第一行代码的技术高手,也只能报以一笑了。如果能坚持下来,那是一笔几亿美金的财富。不过当时的Scott没有那么多的想法,他只是太累了。

    很长一段时间里,公司研发由Miner独力承担。Miner视金钱如无物,为人低调,和Ellison的锋芒必露形成鲜明的对比。在公司里,大家一致认为他是老好人,他也深受员工爱戴。Ellison是公司的大脑,Miner则当之无愧的成为公司的心脏。他是个沉默的英雄,正如Steve Jobs背后的Steve Wozniak一样。

    1984年10月,ORACLE发布了第4版产品。产品的稳定性总算得到了得到了一定的增强,用Miner的话说,达到了“工业强度”。

    在1985年,ORACLE发布了5.0版。有用户说,这个版本算得上是ORACLE数据库的稳定版本。这也是首批可以在Client/Server模式下运行的的RDBMS产品,在技术趋势上,ORACLE数据库始终没有落后。

    那是在1985年,当时曾经的最大的独立软件公司Cullinet(主要销售网状数据库)已经如流星般陨落。ORACLE的主要竞争对手是Ingres数据库。Ingres在加州大学伯克利分校诞生,主要的设计者是当时鼎鼎大名的MichaelStonebraker教授。可以说Ingres数据库软件是上个世纪80年代技术上最好的数据库,Ingres市场分额的快速增长已经给ORACLE早成了很大的压力。巧的是,这个时候,IBM公司再一次伸出“上帝之手”。

    Ingres使用的是Stonebraker 发明的QUEL(Query Language))的查询技术,这和IBM的SQL大不相同。在某些地方QUEL甚至要优于SQL。IBM当时担心Ingres把QUEL变成标准会对自己不利。经过一番衡量,决定把自己的SQL提交给数据库标准委员会。而Stonebraker教授可不打算把QUEL提交给数据库标准委员会,学院派的他认为这麽做实际上是扼杀了创新精神。可以看出,学院派,大都会把事情搞杂。

    1986年3月12日,ORACLE公司以每股15美元公开上市,当日以20.75美元收盘,公司市值2.7亿美元。3月13日,微软以每股21美元的发行价上市,以28美元收市,公司市值达到7亿美元。远远超过了ORACLE。成功的光环的微软和盖茨遮盖住了ORACLE和Ellison的光芒,可能这也是Ellison敌视微软的开始。

    ORACLE第6版于1988年发布。由于过去的版本在性能上屡受诟病,Miner带领着工程师对数据库核心进行了重新的改写。引入了行级锁(row-level locking)这个重要的特性,也就是说,执行写入的事务处理只锁定受影响的行,而不是整个表。这个版本引入了还算不上完善的PL/SQL(Procedural Language extension to SQL)语言。第6版还引入了联机热备份功能,使数据库能够在使用过程中创建联机的备份,这极大地增强了可用性。

    在第六版刚发布之后,很多迫不及待开始使用的用户就怨声载道。这是个根本就没有测试好就进行发布的产品(也怪Ellison,大话总要说在前头,只好自尝苦果)。用户开始对ORACLE大肆抨击,ORACLE的一些对手也开始落井下石,针对ORACLE产品的一些弱点进行攻击。

    噩梦延续到ORACLE第七版的推出而结束。这个公司已经空谈了好几年的新版本(一度被讥讽为不过是Ellison的故计重施而已),直到1992年6月才终于闪亮登场,这一次公司吸取了第六版匆忙上市的教训,听取了用户的多方面的建议,并集中力量对新版本进行了大量而细致的测试。该版本增加了许多新的性能特性:分布式事务处理功能、增强的管理功能、用于应用程序开发的新工具以及安全性方法。

    ORACLE 第七版是ORACLE真正出色的产品,取得了巨大的成功。这个版本的出现真是好时机,当时Sybase公司的数据库已经占据了不少份额,ORACLE借助这一版本的成功,一具击退了咄咄逼人的Sybase。公司的销售人员这次算到了给用户兑现空头许诺的时候。公司经过两三年的治理,终于摆脱了种种麻烦,重新开始健康发展,销售额也从92年的15亿美元变为四年后的42亿美元。  

    1997年6月,ORACLE第八版发布。ORACLE8支持面向对象的开发及新的多媒体应用,这个版本也为支持Internet、网络计算等奠定了基础。同时这一版本开始具有同时处理大量用户和海量数据的特性。

    1998年9月,ORACLE公司正式发布ORACLE 8i。“i”代表Internet,这一版本中添加了大量为支持Internet而设计的特性。这一版本为数据库用户提供了全方位的Java支持。ORACLE 8i成为第一个完全整合了本地Java运行时环境的数据库,用Java就可以编写ORACLE的存储过程。对,Java,只要是能够打击微软的武器,ORACLE都要派上用场。  

    在2001年6月的ORACLEOpenWorld大会中,ORACLE发布了ORACLE 9i。在ORACLE 9i的诸多新特性中,最重要的就是Real Application Clusters(RAC)了。说起ORACLE集群服务器,早在第五版的时候,ORACLE就开始开发ORACLE并行服务器(ORACLE Parallel Server ,OPS),并在以后的版本中逐渐的完善了其功能,不过,严格来说,尽管OPS算得上是个集群环境,但是并没有体现出集群技术应有的优点。

    2003年9月8日,旧金山举办的ORACLE World大会上,Ellison宣布下一代数据库产品为“ORACLE 10g”。ORACLE应用服务器10g(ORACLEApplication Server 10g)也将作为甲骨文公司下一代应用基础架构软件集成套件。“g”代表“grid ,网格”。这一版的最大的特性就是加入了网格计算的功能。(Oracle绝对是造概念的能手,只要是能引领出新的卖点,出些新概念,也是值得的)。

    最近两年,Oracle先后又收购了People soft(103亿$), BEA(80多亿$),还有Sibel之类的就不说了。通过收购,实力大增。

    2007年11月,Oracle 11g正式发布,功能上大大加强。11g是甲骨文公司30年来发布的最重要的数据库版本,根据用户的需求实现了信息生命周期管理(InformationLifecycle Management)等多项创新。大幅提高了系统性能安全性,全新的Data Guard最大化了可用性,利用全新的高级数据压缩技术降低了数据存储的支出,明显缩短了应用程序测试环境部署及分析测试结果所花费的时间,增加了RFID Tag、DICOM医学图像、3D空间等重要数据类型的支持,加强了对Binary XML的支持和性能优化。
    从Oracle的发展来看,它的市场策略直接引导着公司的发展。与别的公司有很大的不同。

     

     

     
    数据库厂商的发展历史之DB2

    1973年,IBM研究中心启动System R项目,为DB2的诞生打下良好基础。System R 是 IBM 研究部门开发的一种产品,这种原型语言促进了技术的发展并最终在1983年将 DB2 带到了商业市场。

    在这期间,IBM发表了很多数据库领域的精典论文,前边E.F.Codd就不说了,1976年, 身在IBM的Gim Gray发有了他的代表作:共享数据库的一致性和锁的粒度。他同样也是数据库领域的图灵奖获得之一。后来被微软挖走(应该是在他退休之后),去年他独自一人出海,失踪,不知下落如何。此君因为不喜欢Seattle的雨天,使得Bill Gates为拉他入Microsoft在San Francisco为其新建了一座研究院让他做院长。据说此君在一次学术会议上demo他的新程序,听众中有人提出界面可以如何改进,此君竟然在讲坛上就打开VC++开始改起代码来,然后给人看新效果。这样的大师,太让人尊敬了。

    1981年, E.F.Codd因为发明关系数据库模型,获得ACM图灵奖,当然他前边还有一位大师,Charles W.Bachman。

    1982年,IBM发布SQL/DS for VSE and VM,以System R为原型。

    1983年,发布Database2 (DB2) forMVS, 内部代号为"Eagle",于是DB2正式诞生。

    1986年,System/38 V7发布,首次配置查询优化器,能对应用的存取计划进行优化。

    1987年,DB2完成了到OS/2的扩展,进入微机领域。

    1988年,发布SQL/400,为AS/400服务器提供SQL支持。到此时为止,感觉IBM的数据库产品的发展十分凌乱,似乎同时在做多个产品,平台又不统一。

    1992年,IDUG大会在瑞士如开,DB2应用开始全球化。DB2 for OS2 V1和DB2 for RS/6000 V1推出,这是第一次在Intel和Unix平台上推出DB2产品。

    1993年,郭士纳进入IBM,大刀改革。

    1994年,DB2实现了HP unix和Solaris版本。实际上,还真不知道这两个平台上有多少用户。

    也是在1994年,AIX平台上DB2开始支持对象型数据。

    1995年,DB2开始支持Windows NT, Unix等多个平台。(标志性的一年?)

    1995年,收购Lotus,晕,现在我们还在用Lotus的邮件系统。不好用,但是不容易中毒。

    1996年,DB2正式更名为DB2 通用数据库。

    1997年, DB2 UDB forUnix/windows/OS2同时发布

    1998年,DB2 开始支持SCO Unixware

    1998年, DB2 UDB5.2出现。(不知道以前的版本是怎么定义的,有些乱。。。)

    1999年,DB2支持Linux on intel cpu

    2000年,DB2 支持XML扩展

    2000年,进一步支持Linux集群

    2002年,收购Rational Soft,从此, rose这个大炮工具被IBM弄走了

    2002/2003,DB2 V8.1出现

    2007年, DB2 V9出现,好像是第一个混合模式(关系型、层次型)数据库出现,既有关系模型,又有直接支持XML的层次模型。不知道是否属于叫好不叫座。

    在这期间,忘了是哪一年,印象中,好像是2001/2002年的光景,IBM还收购了Informix,花了1个Billion$,那也是一家曾经响当当的数据库厂商。

     

     
    数据库厂商的发展历史之MySQL

    MySQL这个名字,起源不是很明确。一个比较有影响的说法是,基本指南和大量的库和工具带有前缀“my”已经有10年以上,而且不管怎样,MySQL AB创始人之一的Monty Widenius的女儿也叫My。这两个到底是哪一个给出了MySQL这个名字至今依然是个密,包括开发者在内也不知道。

    MySQL的海豚标志的名字叫“sakila”,它是由MySQL AB的创始人从用户在“海豚命名”的竞赛中建议的大量的名字表中选出的。获胜的名字是由来自非洲斯威士兰的开源软件开发者Ambrose Twebaze提供。根据Ambrose所说,Sakila来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌干达附近的坦桑尼亚的Arusha的一个小镇的名字。

    MySQL,虽然功能未必很强大,但因为它的开源、广泛传播,导致很多人都了解到这个数据库。它的历史也富有传奇性。

    MySQL的历史最早可以追溯到1979年,那时Oracle也才小打小闹,微软的SQL Server影子都没有。有一个人叫Monty Widenius, 为一个叫TcX的小公司打工,并用BASIC设计了一个报表工具,可以在4M主频和16KB内在的计算机上运行。过了不久,又将此工具,使用C语言重写,移植到Unix平台,当时,它只是一个很底层的面向报表的存储引擎。这个工具叫做Unireg。

    可是,这个小公司资源有限,Monty天赋极高,面对资源有限的不利条件,他反而更能发挥潜能,总是力图写出最高效的代码。并因此养成了习惯。与Monty同在一起的还有一些别的同事,很少有人能坚持把那些代码持续写到20年后,而Monty却做到了。

    1990年,TcX的customer 中开始有人要求要为它的API提供SQL支持,当时,有人想到了直接使用商用数据库算了,但是Monty觉得商用数据库的速度难令人满意。于是,他直接借助于mSQL的代码,将它集成到自己的存储引擎中。但不巧的是,效果并不太好。于是, Monty雄心大起,决心自己重写一个SQL支持。

    1996年,MySQL 1.0发布,只面向一小拨人,相当于内部发布。到了96年10月,MySQL 3.11.1发布了,呵呵,没有2.x版本。最开始,只提供了Solaris下的二进制版本。一个月后,Linux版本出现了。

    紧接下来的两年里,MySQL依次移植到各个平台下。它发布时,采用的许可策略,有些与众不同:允许免费商用,但是不能将MySQL与自己的产品绑定在一起发布。如果想一起发布,就必须使用特殊许可,意味着要花银子。当然,商业支持也是需要花银子的。其它的,随用户怎么用都可以。这种特殊许可为MySQL带来了一些收入,从而为它的持续发展打下了良好的基础。(细想想,PostgreSQL曾经有几年限入低谷,可能与它的完全免费,不受任何限制有关系)。

    MySQL3.22应该是一个标志性的版本,提供了基本的SQL支持。

    1999-2000年,有一家公司在瑞典成立了,叫MySQL AB(不知道AB是什么意思,待查)。   雇了几个人,与Sleepycat合作,开发出了 Berkeley DB引擎, 因为BDB支持事务处理,所以,MySQL从此开始支持事务处理了。

    2000年4月,MySQL对旧的存储引擎进行了整理,命名为MyISAM。同时,2001年,Heikiki Tuuri向MySQL提出建议,希望能集成他们的存储引擎InnoDB,这个引擎同样支持事务处理,还支持行级锁。

    如今,遗憾的是,BDB和InnoDB好像都被Oracle收购了,为了消灭竞争对手,哪怕是开源的,都是不择手段。

    MySQL与InnoDB的正式结合版本是4.0。

    到了MySQL5.0,2003年12月,开始有View, 存储过程之类的东东,当然,其间, bug也挺多。

    在2008年1月16号 MySQL被Sun公司收购。

    最近,MySQL的创始人Monty Widenius已经向Sun提交了辞呈。head都要走了。

    据说,被Sun收购的公司多薄命,不知道MySQL今后前途如何,希望一路走好。相信MySQL的生命力还是很长久的。
    派生版本

    派生版本有Drizzle,MariaDB,Percona Server及OurDelta等。

     

     
    数据库厂商的发展历史之Sybase

    Sybase公司成立于1984年,公司名称“Sybase”取自“system”和“database”相结合的含义。Sybase公司的创始人之一Bob Epstein 是Ingres 大学版(与System/R同时期的关系数据库模型产品)的主要设计人员。

    Sybase公司的第一个关系数据库产品是1987年5月推出的Sybase SQLServer1.0。Sybase首先提出Client/Server 数据库体系结构的思想,并率先在SybaseSQLServer 中实现。

    提到Ingres数据库,不得不提一下Michael Stonebraker,他是Ingres的创始人。他是加州大学伯克利分校的教授,著名的数据库学者,他在1992 年提出对象关系数据库模型。Stonebraker 教授领导了称为Postgres 的后Ingres 项目。这个项目的成果是非常巨大的,在现代数据库的许多方面都做出的大量的贡献。Stonebraker 教授还做出了一件造福全人类的事情,那就是把Postgres 放在了BSD 版权的保护下。如今Postgres名字已经变成了PostgreSQL,功能也是日渐强大,我也非常喜爱这个数据库。你可自由的浏览它的代码库,可以实时了解一线工程的思路。

    话说,87年的时候,Sybase觉得单靠一家力量,难以把SQLServer(那时不叫ASE)做到老大,于是联合微软,共同开发。至于原始的代码从何而来,这个应该与Ingres有些渊源。后来1994年,两家公司合作终止。截止此时,应该是都拥有一套完全相同的SQLServer代码。

    然后可想而知了,Sybase继续开发,将Sybase SQLServer往各个平台移植,版本也是跳跃式的变化,从4.2,好像一下子就到了11.0。

    Sybase SQLServer后来为了与微软的MS SQL Server相区分,改名叫:Sybase ASE(Adaptive Server Enterprise),其实,应该改名字的是微软。代码的最初拥有者是Sybase,结果得到正式名字的居然是微软。这笔交易,实在是有些亏。不过,ASE也还好记,把Sybase的前边三个字母去就是ase了。

    ASE如今已经发展到了15.0.2版了。13和14两个数,对于老美来说,都不是好数,所以直接从12.5.4跳到15.0了。估计Oracle以后也会这样命名。

    现在的Sybase,产品策略已经有了调整,在移动数据库市场上,它的ASA (SQL Anywhere)占据了绝对的老大地位,70%以上的市场。同时,Sybase ASE仍然保持着大型数据库厂商的地位。在电信、交通、市政、银行等领域,拥有强大的市场。它的产品全是多平台支持。

    Sybase ASE又分出了Replication Server(复制服务器), Sybase IQ等重量级产品,相当于对大型数据库市场又进行了细分。

    算起来,MS SQL Server应该算是Sybase ASE的同胞兄弟了,不过,ASE血统更纯正。无论谁更成功,都证明当初的那个SQL Server生命力还在持续,它仍拥有强大的生命力。
     

    展开全文
  • 关系数据库设计:谈谈规范化技术

    千次阅读 多人点赞 2020-08-19 21:42:31
    通过实际案例介绍关系数据库设计的规范化技术(Normalization),为什么需要规范化,常见的第一范式、第二范式和第三范式,反规范化应用的场景以及外键的取舍问题。
  • 数据库中表的依赖关系

    千次阅读 2019-06-09 12:20:25
    数据库中表的依赖关系 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 开发工具与关键技术:Visual Studio 作者:李继金 撰写时间:2019年6月8日 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 提起...
  • 我们开始学Oracle 12c了,顺便带大家一起了解一下关系数据库和非关系数据库NoSQL的异同点及优势所在。 关系数据库 我们学过的有mysql/ oracle / sql server 等 **关系数据库最典型的数据结构是表,由二维表...
  • 关系型数据库由哪三部分组成 关系数据库理论 (Theory of relational databases) The foundations of the theory of relational database were laid by Edgar F. Codd in the 1960s and 1970s and in his work A ...
  • 关系数据库设计理论

    千次阅读 2018-07-11 18:32:27
    设计一个好的关系数据库系统,关键是要设计一个好的数据库模式(数据库逻辑设计问题) 数据库逻辑设计主要解决的问题 关系数据库应该组织成几个关系模式 关系模式包括哪些属性 “不好”的数据库设计 ...
  • 数据库介绍 及 关系数据库关系代数表达式

    千次阅读 多人点赞 2020-12-20 22:54:51
    数据库基础数据库介绍数据模型概念模型逻辑模型关系数据库 写下博客用于自我复习、自我总结。 如有错误之处,请各位指出。 本数据库系列专栏,文章的重心将会是总结SQL语句的使用,而不会涉及到太多数据库本身或...
  • 数据库原理—关系数据库

    千次阅读 2020-09-05 19:58:37
    1、关系数据库结构 (1)域:一组具有相同数据类型的值的集合(如整数、实数、指定长度的字符串集合) (2)笛卡尔积运算:假设两个集合D1和D2,其中D1={2,4},D2={1,3,5},这两个集合的笛卡尔积D1×D2={(2,1)...
  • 空间数据库空间关系关键理论研究,空间关系关键理论!
  • 关系数据库:主键知识

    千次阅读 2020-09-29 10:33:27
    关系数据库中,一张表的每一行数据被称为一条记录。一条记录就是由多个字段组成的。例如,students表的两行记录: id class_id name gender score 1 1 小明 M 90 2 1 小红 ...
  • 关系数据库系统的查询处理 一、关系数据库系统的查询处理 1.查询处理步骤 关系数据库管理系统查询处理阶段 : 1)查询分析 :对查询语句进行扫描、词法分 析和语法分析 词法分析:从查询语句识别出正确的语言符号...
  • 常见的非关系数据库(nosql数据库)

    千次阅读 2017-07-11 15:27:00
    常见的非关系数据库(nosql数据库)
  • 数据库关系数据库优势

    千次阅读 2020-03-12 15:07:20
    与传统关系数据库相比,图数据库的优势有: 1. 可以很自然的表达现实世界; 2. 灵活的数据模型可以适应不断变化的业务需求; 3. 灵活的图查询语言,轻松实现复杂关系网络的分析; 4. 关系数据库在遍历关系网络并...
  • 主要目标是向数据库爱好者展示关系数据库的基本原理和关键设计。 Go SQL DB中文“ Go SQL DB”是一个关系数据库,支持出于研究目的SQL查询。 主要目标是向数据库爱好者展示关系数据库的基本原理和关键设计。 因此,...
  • 数据库关系模式的规范化

    千次阅读 2021-04-03 15:23:11
    在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。 所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列不能有多个值,即...
  • 关系数据库的查询优化

    千次阅读 2018-07-17 16:29:43
    关系查询优化是影响关系数据库管理系统性能的关键因素。 一、查询优化概述 查询优化的优点不仅在于用户不必考虑如何最好地表达查询以获得较高的效率,而且在于系统可以比用户程序的“优化”做得更好。 1. 优化...
  • 数据库题目之关系数据理论

    千次阅读 多人点赞 2019-01-10 15:14:46
    1、关系规范化的删除操作异常是指 ① ,插入操作异常是指 ② 。  A.不该删除的数据被删除 B.不该插入的数据被插入 C.应该删除的数据未被删除 D.应该插入的数据未被插入【答案:】①A ②D 2、设计性能较优...
  • 为了便于理解,关系数据库也是一种数据管理软件,但其中构建单元是表。两者都需要将数据加载到软件,并使用查询语言或API来访问数据。 关系数据库在20世纪80年代蓬勃发展。许多商业公司(即Oracle,Ingres,IBM)...
  • 关系数据库选型

    千次阅读 2018-07-03 23:15:44
    选择一款合适的SQL数据库是一项艰巨的任务,因为可选的产品很多。这既有好的一面也有不利的一面,选项增加意味着做出错误选择的概率也在增加。为此,需独具慧眼,谨慎而全面地对比每家厂商技术的优缺点,通过衡量...
  • 数据库关系数据库的比较

    千次阅读 2019-08-25 20:34:00
    戳上面的蓝字关注我们哦!为什么要使用图形数据库,或者更具体地说是Neo4j作为我们数据库选择?01人们在逻辑上通常很自然使用类似图的结构来模拟或描述它们的特定问题域。权限...
  • 传统的关系数据库具有不错的性能,高稳定型,久经历史考验,而且使用简单,功能强大,同时也积累了大量的成功案例。在互联网领域,MySQL成为了绝对靠前的王者,毫不夸张的说,MySQL为互联网的发展做出了卓越的贡献。...
  • HQY腾讯 7000W QQ群关系数据库泄漏共24.52G。QQ24.5gb腾讯QQ群关系数据库,不包含密码。只包含个人名字(群备注名字等信息)。如果想在线查询更多qq群数据信息可以查看:一、下载完24.5gQQ数据库后,解压文件下载后...
  • 我们读不同的描写数据库的文章,会看到不同的概念名称,从某种意义上来讲,是公说公有理,婆说婆有理的问题,只是个人理解不同而称呼有异,这也给一些人,尤其是初学者带来一定的困扰,鉴于此,特整理《数据库常用...
  • 关系数据库与NoSql数据库的比较

    千次阅读 2020-02-08 18:32:11
    一、关系数据库与NoSql数据库的比较 1、并发支持 关系数据库:通过事务和锁来支持并发,高并发情况下,执行效率较低。 NoSql:打破了传统关系数据库范式的约束和事务一致性,因此并发性能高。 2、存储与查询 ...
  • 四种重要的非关系数据库

    千次阅读 2020-05-03 21:24:18
    Hbase列式存储以流的方式在列存储所有的数据。对于任何记录,索引都可以快速地获取列上的数据;列式存储支持行检索,但这需要从每个列获取匹配的列值,并重新组成行。HBase(Hadoop...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 294,934
精华内容 117,973
关键字:

关系数据库中关键是