数据库概述与Mysql安装篇

1. 为什么要使用数据库

  1. 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企
    业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多
    通过各种关系数据库来完成。
  2. 持久化的主要作用是将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数
    据文件中。

请添加图片描述

2. 数据库与数据库管理系统

2.1 数据库的相关概念

请添加图片描述

2.2 数据库与数据库管理系统的关系

数据库管理系统(DBMS)可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。为保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体用户的数据。

2.3 常见的数据库管理系统排名(DBMS)

请添加图片描述

3. MySQL介绍

3.1 概述

  1. MySQL是一个 开放源代码的关系型数据库管理系统 ,由瑞典MySQL AB(创始人Michael Widenius)公 司1995年开发,迅速成为开源数据库的 No.1。
  2. 2008被 Sun 收购(10亿美金),2009年Sun被 Oracle 收购。 MariaDB 应运而生。(MySQL 的创造者担心 MySQL 有闭源的风险,因此创建了 MySQL 的分支项目 MariaDB)
  3. MySQL6.x 版本之后分为 社区版 和 商业版 。
  4. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
  5. MySQL是开源的,所以你不需要支付额外的费用。
  6. MySQL是可以定制的,采用了 GPL(GNU General Public License) 协议,你可以修改源码来开发自己的MySQL系统。
  7. MySQL支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
  8. MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持 4GB ,64位系统支持最大的表文件为 8TB 。
  9. MySQL使用 标准的SQL数据语言 形式。
  10. MySQL可以允许运行于多个系统上,并且支持多种语言。这些编程语言包括C、C++、Python、 Java、Perl、PHP和Ruby等。

3.2 关于MySQL 8.0

MySQL从5.7版本直接跳跃发布了8.0版本 ,可见这是一个令人兴奋的里程碑版本。MySQL 8版本在功能上做了显著的改进与增强,开发者对MySQL的源代码进行了重构,最突出的一点是多MySQL Optimizer优化器进行了改进。不仅在速度上得到了改善,还为用户带来了更好的性能和更棒的体验。

3.3 Oracle vs MySQL

Oracle 更适合大型跨国企业的使用,因为他们对费用不敏感,但是对性能要求以及安全性有更高的要求。
MySQL 由于其体积小、速度快、总体拥有成本低,可处理上千万条记录的大型数据库,尤其是开放源码。这一特点,使得很多互联网公司、中小型网站选择了MySQL作为网站数据库(Facebook,Twitter, YouTube,阿里巴巴/蚂蚁金服,去哪儿,美团外卖,腾讯)

4. 关系型数据库设计规则

  1. 一个数据库中可以有多个表,每个表都有一个名字,用来标识自己。表名具有唯一性。
  2. 表具有一些特性,这些特性定义了数据在表中如何存储,类似Java和Python中 “类”的设计。

4.1 表、记录、字段

  1. E-R(entity-relationship,实体-联系)模型中有三个主要概念是: 实体集 、 属性 、 联系集 。
  2. 一个实体集(class)对应于数据库中的一个表(table),一个实体(instance)则对应于数据库表中的一行(row),也称为一条记录(record)。一个属性(attribute)对应于数据库表中的一列(column),也称为一个字段(field)。

请添加图片描述

ORM思想 (Object Relational Mapping)体现: 
数据库中的一个表 <---> JavaPython中的一个类 
表中的一条数据 <---> 类中的一个对象(或实体) 
表中的一个列 <----> 类中的一个字段、属性(field)

4.2 表的关联关系

  1. 表与表之间的数据记录有关系(relationship)。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。
  2. 四种:一对一关联、一对多关联、多对多关联、自我引用

4.2.1 一对一关联(one-to-one)

  1. 在实际的开发中应用不多,因为一对一可以创建成一张表。
  2. 举例:设计 学生表 :学号、姓名、手机号码、班级、系别、身份证号码、家庭住址、籍贯、紧急联系人、…
    2.1 拆为两个表:两个表的记录是一一对应关系。
    2.2 基础信息表 (常用信息):学号、姓名、手机号码、班级、系别
    2.3 档案信息表 (不常用信息):学号、身份证号码、家庭住址、籍贯、紧急联系人、…
  3. 两种建表原则
    3.1 外键唯一:主表的主键和从表的外键(唯一),形成主外键关系,外键唯一
    3.2 外键是主键:主表的主键和从表的主键,形成主外键关系

请添加图片描述

4.2.2 一对多关系(one-to-many)

  1. 常见实例场景: 客户表和订单表 , 分类表和商品表 , 部门表和员工表 。
  2. 举例:
    2.1 员工表:编号、姓名、…、所属部门
    2.2 部门表:编号、名称、简介
  3. 一对多建表原则:在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键

请添加图片描述

4.2.3 多对多(many-to-many)

要表示多对多关系,必须创建第三个表,该表通常称为 联接表 ,它将多对多关系划分为两个一对多关系。将这两个表的主键都插入到第三个表中。

请添加图片描述
举例:产品-订单
“订单”表和“产品”表有一种多对多的关系,这种关系是通过与“订单明细”表建立两个一对多关系来定义的。一个订单可以有多个产品,每个产品可以出现在多个订单中。

  1. 产品表 :“产品”表中的每条记录表示一个产品。
  2. 订单表 :“订单”表中的每条记录表示一个订单。
  3. 订单明细表 :每个产品可以与“订单”表中的多条记录对应,即出现在多个订单中。一个订单可以与“产品”表中的多条记录对应,即包含多个产品。

请添加图片描述

4.2.4 自我引用(Self reference)

即自己的属性中调用自己的属性
请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值