python数据库-MySQL数据库的介绍及安装(47)

1、数据库的介绍

  数据库(Database)是存储与管理数据的软件系统,就像一个存入数据的物流仓库。每一个数据库都有一个或多个不一样的API接口用于建立,访问,管理,搜索和复制所保存的数据。咱们也能够将数据存储在文件中,可是在文件中读写数据速度相对较慢,因此咱们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量。mysql

2、常见数据库技术品牌、服务与架构

  发展了这么多年市场上出现了许多的数据库系统,最强的我的认为是Oracle,固然还有许多如:DB二、Microsoft SQL Server、MySQL、SyBase等,下图列出常见数据库技术品牌、服务与架构。sql

3、数据库的分类

  数据库一般分为层次式数据库、网络式数据库和关系式数据库三种,而不一样的数据库是按不一样的数据结构来联系和组织的。而在当今的互联网中,最多见的数据库模型主要是两种,即关系型数据库和非关系型数据库。数据库

  关系型数据库表明:Oracle、MySql、SQL Server编程

  非关系型数据库表明:Mongodb、Redisubuntu

4、E-R模型

  • 当前物理的数据库都是按照E-R模型进行设计的
  • E表示entry,实体
  • R表示relationship,关系
  • 一个实体转换为数据库中的一个表
  • 关系描述两个实体之间的对应规则,包括
    • 一对一
    • 一对多
    • 多对多
  • 关系转换为数据库表中的一个列 *在关系型数据库中一行就是一个对象

5、三大范式

一、 什么是范式

  要设计规范化的数据库,就要求咱们根据数据库设计范式――也就是数据库设计的规范原则来作。范式能够指导咱们更好地设计数据库的表结构,减小冗余的数据,借此能够提升数据库的存储效率,数据完整性和可扩展性。windows

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

二、三大范式

第一范式(1NF)

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

  例如:表1-1中,其中”工程地址”列还能够细分为省份,城市等。在国外,更多的程序把”姓名”列也分红2列,即”姓”和“名”。数据结构

虽然第一范式要求各列要保存原子性,不能再分,可是这种要求和咱们的需求是相关联的,如上表中咱们对”工程地址”没有省份,城市这样方面的查询和应用需求,则不需拆分,”姓名”列也是一样如此。架构

表1-1   原始表

工程号

工程名称

工程地址

员工编号

员工名称

薪资待遇

职务

P001

港珠澳大桥

广东珠海

E0001

Jack

6000/月

工人

P001

港珠澳大桥

广东珠海

E0002

Join

7800/月

工人

P001

港珠澳大桥

广东珠海

E0003

Apple

8000/月

高级技工

P002

南海航天

海南三亚

E0001

Jack

5000/月

工人

第二范式(2NF)

  在1NF的基础上,非Key属性必须彻底依赖于主键。第二范式(2NF)是在第一范式(1NF)的基础上创建起来的,即知足第二范式(2NF)必须先知足第一范式(1NF)。第二范式(2NF)要求数据库表中的每一个实例或记录必须能够被惟一地区分。选取一个能区分每一个实体的属性或属性组,做为实体的惟一标识。

  第二范式(2NF)要求实体的属性彻底依赖于主关键字。所谓彻底依赖是指不能存在仅依赖主关键字一部分的属性,若是存在,那么这个属性和主关键字的这一部分应该分离出来造成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分一般须要为表加上一个列,以存储各个实例的惟一标识。简而言之,第二范式就是在第一范式的基础上属性彻底依赖于主键。

  例如:表1-1中,一个表描述了工程信息,员工信息等。这样就形成了大量数据的重复。按照第二范式,咱们能够将表1-1拆分红表1-2和表1-3:

表1-2   工程信息表

工程编号

工程名称

工程地址

P001

港珠澳大桥

广东珠海

P002

南海航天

海南三亚

 

表1-3   员工信息表

员工编号

员工姓名

职务

薪资水平

E0001

Jack

工人

3000/月

E0002

Join

工人

3000/月

E0003

Apple

高级技工

6000/月

这样,表1-1就变成了两张表,每一个表只描述一件事,清晰明了。

第三范式(3NF)

  第三范式是在第二范式基础上,更进一层,第三范式的目标就是确保表中各列与主键列直接相关,而不是间接相关。即各列与主键列都是一种直接依赖关系,则知足第三范式。  

  第三范式要求各列与主键列直接相关,咱们能够这样理解,假设张三是李四的兵,王五则是张三的兵,这时王五是否是李四的兵呢?从这个关系中咱们能够看出,王五也是李四的兵,由于王五依赖于张三,而张三是李四的兵,因此王五也是。这中间就存在一种间接依赖的关系而非咱们第三范式中强调的直接依赖。

  如今咱们来看看在第二范式的讲解中,咱们将表1-1拆分红了两张表。这两个表是否符合第三范式呢。在员工信息表中包含:”员工编号”、”员工名称”、”职务”、”薪资水平”,而咱们知道,薪资水平是有职务决定,这里”薪资水平”经过”职务”与员工相关,则不符合第三范式。咱们须要将员工信息表进一步拆分,以下:

员工信息表:员工编号,员工名称,职务

职务表:职务编号,职务名称,薪资水平

如今咱们已经了解了数据库规范化设计的三大范式,下面咱们再来看看对表1-1优化后的数据表:

员工信息表(Employee)

员工编号

员工姓名

职务编号

E0001

Jack

1

E0002

Join

1

E0003

Apple

2

工程信息表(ProjectInfo)

工程编号

工程名称

工程地址

P001

港珠澳大桥

广东珠海

P002

南海航天

海南三亚

职务表(Duty)

职务编号

职务名称

工资待遇

1

工人

3000/月

2

高级技工

6000/月

 工程参与人员记录表(Project_ Employee_info)

编号

工程编号

人员编号

1

P001

E0001

2

P001

E0002

3

P002

E0003

经过对比咱们发现,表多了,关系复杂了,查询数据变的麻烦了,编程中的难度也提升了,可是各个表中内容更清晰了,重复的数据少了,更新和维护变的更容易了,哪么如何平衡这种矛盾呢?

四、范式与效率

  在咱们设计数据库时,设计人员、客户、开发人员一般对数据库的设计有必定的矛盾,客户更喜欢方便,清晰的结果,开发人员也但愿数据库关系比较简单,下降开发难度,而设计人员则须要应用三大范式对数据库进行严格规范化,减小数据冗余,提升数据库可维护性和扩展性。由此能够看出,为了知足三大范式,咱们数据库设计将会与客户、开发人员产生分歧,因此在实际的数据库设计中,咱们不能一味的追求规范化,既要考虑三大范式,减小数据冗余和各类数据库操做异常,又要充分考虑到数据库的性能问题,容许适当的数据库冗余。

6、MySQL介绍

  MySQL所使用的 SQL 语言是用于访问数据库的最经常使用标准化语言。MySQL 软件采用了双受权政策,分为社区版和商业版,因为其体积小、速度快、整体拥有成本低,尤为是开放源码这一特色,通常中小型网站的开发都选择 MySQL 做为网站数据库。

  MySQL官网:https://www.mysql.com/

  MySQL下载:https://www.mysql.com/downloads/

MySQL之前一直是开源免费的,被Oracle收购后有些变化:之前的版本都是免费的,社区版按GPL协议开源免费,商业版提供更加丰富的功能,但收费。

  社区版的下载地址:https://dev.mysql.com/downloads/ (免费)

  企业版的下载地址:https://www.mysql.com/downloads/(收费)

7、MySQL的卸载

  为何还没安装就要先学习卸载呢?由于不少同窗的电脑可能之前装过MySQL,在再次装以前若是之前的没有卸载或者卸载的不干净,都会影响MySQL的再次安装,因此在安装以前咱们先确保咱们电脑上没有上次安装的残留。

一、mac系统下删除

  经过命令行删除

sudo rm /usr/local/mysql
sudo rm -rf /usr/local/mysql*
sudo rm -rf /Library/StartupItems/MySQLCOM
sudo rm -rf /Library/PreferencePanes/My*
rm -rf ~/Library/PreferencePanes/My*
sudo rm -rf /Library/Receipts/mysql*
sudo rm -rf /Library/Receipts/MySQL*
sudo rm -rf /var/db/receipts/com.mysql.*

二、ubuntu系统下删除

sudo apt-get remove mysql-*
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

8、MySQL的安装

一、mac 系统安装

在安装的时候会让你填写一个root用户的密码,用来作MySQL的登陆使用

安装好了以后再你电脑的系统偏好设置面板中能找到MySQL 

点击进入到MySQL面板 

安装好了以后MySQL服务默认是开启的,不用的时候经过stop能够关闭,此时mac系统咱们的MySQL就安装好了。

二、ubuntu下安装MySQL

2.一、安装

sudo apt-get install mysql-server mysql-client

2.二、启动

service mysql start

2.三、中止

service mysql stop

2.四、重启

service mysql restart

三、windows下就不带着你们安装了,我想你们都会

9、图形工具(Navicat)连接数据库

  若是一直使用命令行去操做数据库,这样对于数据的整理,表结构的观察是很不方便,因此咱们在安装好了MySQL服务以后,咱们都会使用图形界面工具去编辑和处理数据库,图形界面工具备不少,这里给你们介绍一个很好用的数据库链接工具Navicat,这个工具正版是收费的,固然网上有不少破解版和破解攻略,我相信你们都会的。

  Navicat官网:https://www.navicat.com.cn/

  Navicat产品下载:https://www.navicat.com.cn/products

下载安装好了以后,打开以下图

咱们操做链接按钮,链接到咱们要操做的数据库

这个时候咱们建立一个表验证一下咱们的连接是成功的,经过Navicat能够操做数据库,

使用终端登陆MySQL验证 

OK、到此咱们链接成功,就能够对数据库进程曾删改查等操做了,具体操做请看下一篇

相关文章
相关标签/搜索