MariaDB

1.1 关系型数据库概述

 

1、数据管理模型:层次模型、网状模型、关系模型;

数据分类:结构化数据、半结构化数据、非结构化数据;

关系模型的二维关系:
表:row,column;
索引:index;
视图:view;

SQL接口:Structured Query Language,结构化查询语言;

2、美国国家标准化组织(ANSI)”是一个核准多种行业标准的组织;
SQL的ANSI标准(目前是SQL-2016版本);

The nine updated parts of ISO/IEC 9075:2016 focus on the following aspects of SQL:

Part 1:Conceptual framework, grammar, and terms and notation used in other parts of ISO/IEC 9075;
       ISO/ iec9075其他部分使用的概念框架、语法、术语和表示法;

Part 2:Foundation, data structures, and basic operations on SQL-data;sql数据的基础、数据结构和基本操作;

Part 3: Call-level interface;调用级接口;

Part 4: Persistent stored modules;持久存储块;

Part 9: Management of external data;外部数据的管理;

Part 10: Object language bindings;对象语言绑定;

Part 11: Information and definition schemas;信息和定义模式;

Part 13: SQL routines and types using the Java programming language;使用Java编程语言的SQL例程和类型;

Part 14: XML-related specifications;与XML相关的规范;

DDL:Data  Defined  Language,数据定义语言;操作指令有,CREATE,ALTER,DROP;
DML:Data  Manipulation  Language,数据操作语言;操作指令有,INSERT,DELETE,UPDATE,SELECT;

SQL代码:
存储过程:procedure;
存储函数:function;
触发器:trigger;
时间调度器:event scheduler;

备注:存储过程+存储函数,统称为例程(routine);

数据库用户与权限;
用户名与密码管理;管理权限、数据库操作权限、表权限、字段权限;

3、RDBMS:
RDBMS即关系数据库管理系统(Relational  Database  Management  System),是将数据组织为相关的行和列的系统,而管理关系数据库的计算机软件就是关系数据库管理系统;

设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小;
目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式);
满足最低要求的范式是第一范式(1NF),在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推;
一般说来,数据库只需满足第三范式(3NF)就行了;

第一范式(1NF)

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

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

第二范式(2NF)

在1NF的基础上,非码属性必须完全依赖于候选码(在1NF基础上消除非主属性对主码的部分函数依赖);
第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF);
第二范式(2NF)要求数据库表中的每个实例或记录必须可以被唯一地区分,选取一个能区分每个实体的属性或属性组,作为实体的唯一标识;
第二范式(2NF)要求实体的属性完全依赖于主关键字,所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系,为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识,简而言之,第二范式就是在第一范式的基础上属性完全依赖于主键;

第三范式(3NF)

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

巴斯-科德范式(BCNF)

Boyce-Codd Normal Form(巴斯-科德范式);
在3NF基础上,任何非主属性不能对主键子集依赖(在3NF基础上消除对主码子集的依赖);
巴斯-科德范式(BCNF)是第三范式(3NF)的一个子集,即满足巴斯-科德范式(BCNF)必须满足第三范式(3NF);
通常情况下,巴斯-科德范式被认为没有新的设计规范加入,只是对第二范式与第三范式中设计规范要求更强,因而被认为是修正第三范式,也就是说,它事实上是对第三范式的修正,使数据库冗余度更小。这也是BCNF不被称为第四范式的原因;

4、关系模型的数据库(举例)
IngreSQL,Oracle,Sybase,Infomix,DB2,SQL Server,MySQL,MariaDB,PostgreSQL,AliSQL(阿里研发的开源数据库)…;

MariaDB:

License     : GPLv2 with exceptions and LGPLv2 and BSD
Description : MariaDB is a community developed branch of MySQL.
            : MariaDB is a multi-user, multi-threaded SQL database server.
            : It is a client/server implementation consisting of a server daemon (mysqld)
            : and many different client programs and libraries. The base package
            : contains the standard MariaDB/MySQL client programs and generic MySQL files.

PostgreSQL:

License     : PostgreSQL
Description : PostgreSQL is an advanced Object-Relational database management system (DBMS).
            : The base postgresql package contains the client programs that you'll need to
            : access a PostgreSQL DBMS server, as well as HTML documentation for the whole
            : system.  These client programs can be located on the same machine as the
            : PostgreSQL server, or on a remote machine that accesses a PostgreSQL server
            : over a network connection.  The PostgreSQL server can be found in the
            : postgresql-server sub-package.

AliSQL:

License:GPLv2;
AliSQL is a MySQL branch originated from Alibaba Group. It is based on the MySQL official release and has many feature and performance enhancements. AliSQL has proven to be very stable and efficient in production environment. It can be used as a free, fully compatible, enhanced and open source drop-in replacement for MySQL.

AliSQL has been an open source project since August 2016. It is being actively developed by engineers from Alibaba Group. Moreover, it includes patches from Percona, WebScaleSQL, and MariaDB. AliSQL is a fruit of community effort. Everyone is welcomed to get involved.

5、数据库相关概念

1> 表:为了满足范式设计要求,将一个数据集分拆为多个表;

2> 约束:constraint,向数据表插入的数据要遵循的限制规则;

主键:Primary KEY;一个或多个字段的组合,填入主键中的数据,必须不同于已存在的数据,而且不能为空;一个表只能有一个主键;
外键:一个表的某字段中能插入的数据取决于另外一张表的主键所所包含的数据;
唯一键:Unique KEY;一个或多个字段的组合,填入唯一键中的数据必须不同于已存在的数据;可以为空;一个表可存在多个唯一键;
检查性约束:取决于表达式的要求;

备注:主键和唯一键都可用来做索引;

3> 索引:将表中的某一个或某些字段抽取出来,单独将其组织成一个独特的数据结构;
常用的索引类型:
树型:Balance Tree;
hash;

备注:索引有助于读请求,但不利于写请求;

4> 关系运算

选择:挑选出符合条件的行;
投影:挑选出符合需要的列;
连接:将多张表关联起来;

5> 数据抽象

物理层:决定数据的存储格式,即如何将数据组织成为物理文件;
逻辑层:描述DB存储什么数据,以及数据间存在什么样的关系;
视图层:描述DB中的部分数据;

6> 关系模型的分类

关系模型;
实体-关系模型;
基于对象的关系模型;
半结构化关系模型;

Leave a Reply

Your email address will not be published. Required fields are marked *