首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

深入浅出PostgreSQL数据库-PostgreSQL简介

数据库简介

在这个信息爆炸的时代里,每天会产生非常多的数据,小到个人电话薄,大到跨国公司、银行的人员、财务等信息。因此随着数据业务量的不断增长,数据复杂度越来越庞大,数据的存储和管理显得格外重要。

说到数据的存储,其实有很多方式,常见的有以下几种:

文本信息。比如用的比较多的CSV文件,就是一种比较简单的文件存储方式,用逗号将数据信息进行分类,这就是CSV名字的来历(Comma Separated Values)。比如下面这张CSV文件的截图

逗号分隔符给予了这张表一定的结构,使得我们可以很容易的辨认出ArtistID和ArtistName,每一行都代表着一个艺术家的相关信息,而且我们可以利用逗号分隔符添加任意新的数据进去。

电子表格(SpreadSheet)。另一个很常用的数据存储方式为电子表格,比如Windows系统下的Excel,Mac系统下的Numbers等等。电子表格可以让管理数据更加方便,比如格式化数据、按某种方式排序、进行数据计算等等,而且有很好的可视化界面,将数据以行、列的形式依次展开,使得处理数据更加得心应手。

数据库软件。如果需要管理的数据量非常庞大,而且对数据的操作(添加、更新、删除等)非常频繁,那么数据库软件会是第一选择。同上面提到的两种方式类似,数据库也是以行、列的形式展现数据,但是在数据的管理方式上更加复杂和多样。现在的大多数据库系统都用关系数据库管理系统(RDBMS,Relational Database Management System)来进行管理,因为它可以通过多张表,来存储一些具有关联关系的数据,由数据、关系和对数据的约束,这三者所组成的数据模型来存储和管理数据。RDBMS主要有以下几个关键概念:

表(Table):RDBMS通过表来对数据进行管理和展示,每一张表就是一个数据库,每一张表都由一系列的行(Row)和列(Column)组成;

行(Row):表中的每一行都是该数据库中一条单独的数据记录信息;

列(Column):表中的每一列是该数据库中的数据类型,记录了数据属性。也被称为域(Field);

关系(Relation):关系可以将具有关联信息的不同表联系起来,可以通过数据在一张表中的记录信息,找到另一张表中关于此数据的其他相关信息。可以通过Primary Key和Foreign Key来定义不同表之间的关联信息:

Primary Key:对于表中的每一条记录,都有一个列、或者一组列元素来唯一确定该条记录,比如记录学生信息的一张表中,学生ID就可以是Primary Key,因为ID是唯一的,可以用来确定每一条目;

Foreign Key:可以将一张表中的某些列元素,链接到其他表中的Primary Key中,以此来创建这些不同表之间的关系。比如现在有书目列表(Book List)和作家列表(Author List)两张表,Author List的Primary Key为authod_id,Book List的Primary Key为book_id,但同时对于Book List中的每一条目,还有一个author_id作为其Foreign Key,链接到Author List中的author_id,这样就可以通过Book List中通过条目中的author_id,找到在Author List中对应的相关作家的详细信息。

数据库中的数据关系

在数据库系统中,不同表之间的关系主要有以下几种:

One-to-One:一对一关系,一张表中的记录只能对应另一张表中的其中一项记录。比如一张表记录了人员身份证号码信息,另一张表记录了人员的社保卡号码信息,那么身份证表中的每一条记录,只能对应社保卡号码表中的唯一一个,反之也是这样;

One-to-Many:一对多关系,一张表中的相关信息可以对应另一张表中的多条记录,但是反之只能对应一条。比如一张表记录了专辑信息,另一张表记录了歌手信息,专辑信息中的一个条目只能对应歌手表中的唯一一个记录,因为一张专辑只能属于一位歌手;但歌手表中的每一个条目可以专辑表中的多个记录,因为同一位歌手可以出版多张专辑;

Many-to-Many:多对多关系,每张表中的条目都可以对应另一张表中的多个记录。比如一张表记录了作家的相关信息,另一张记录了很多书籍的相关信息,作家表中的每一个条目可以对应书籍表中的多个记录,因为每位作家可以出版多本书籍;同时书籍表中的每一个条目也能对应作家表中的多个条目,因为一本书可能由几位作家合著。

现在流行的RDBMS系统软件主要有以下几种:

Oracle

MySQL(开源)

Microsoft SQL Server

Microsoft Access

SQLite(开源)

PostgreSQL(开源)

PostgreSQL简介

PostgreSQL是一款开源的数据库管理系统,可以免费使用。PostgreSQL一开始是被设计运行在类UNIX操作系统上,但是现在也已经被迁移到其他平台上,目前支持的操作系统有Linux、MacOS、Solaris、Windows等等。支持的数据类型有文本、图片、音频和视频,而且提供了很多可编程接口,比如C/C++、Python、Java、Ruby、Perl。

特性

PostgreSQL包含了很多其他数据库管理系统已经提供的特性:

丰富的SQL查询

用户自定义类型

表继承

锁定机制

外键(Foreign Key)

视图,规则,子索引

事务

多版本并发控制

异步复制

触发器

PostgreSQL的优势

PostgreSQL是第一款实现多版本并发控制功能(MVCC,Multi-Version Concurrency Control)的数据库管理系统;

PostgreSQL是一款真正意义上的ORDBMS(对象关系数据库系统),它可以通过不同的编程语言--比如C/C++、Java等等--添加自定义的函数进行相关开发;

良好的可扩展性,可以自定义数据类型、索引类型等,同时也能开发一系列的功能插件;

强大的技术支持,PostgreSQL已经形成了规模庞大的社群,如果在开发过程中碰到问题,可以随时上社群进行提问。

跨平台,支持多种操作系统。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180327A02B0F00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券