还记得mysql这些原理的知识吗?

1、数据库系统(DBS)的组成

由数据库(DB)、数据库管理系统(DBMS)、数据库管理员(DBA)组成。

2、数据模型的三组成部分

  • 数据结构:是对系统静态特征的描述,描述对象包括数据的类型、内容、性质和数据之间的项目关系。
  • 数据操作:是对系统动态特征的描述,是对数据库各种对象实例的操作。
  • 完整性约束:是完整性规则的集合,它定义了给定数据模型中数据及其联系所具有的制约和依存规则。

3、常用的数据模型主要有:层次模型、网状模型和关系模型

  • 层次模型:用树状结构表示实体类型及实体间联系的数据模型称为层次模型。
    (1)每棵树有且仅有一个无双亲节点,称为根。
    (2)树中除根外所有节点有且仅有一个双亲。
  • 网状模型:用有向图结构表示实体类型及实体间联系的数据模型称为网状模型。
  • 关系模型:以二维表来描述数据。关系模型中每个表有多个字段列和记录行,每个字段列有固定属性。
    关系模型基本术语:
    (1)关系:一个二维表就是一个关系。
    (2)元组:二维表中的一行,即表中的记录。
    (3)属性:二维表中的一列,用类型和值来表示。
    (4)域:每个属性取值的变化范围,如性别的域为(男,女)。
    (5)关系中的数据约束:
    实体完整性约束:约束关系的主键中属性值不能为空值。
    参照完整性约束:关系之间的基本约束。
    用户自定义的完整性约束:反映了具体应用中数据的语义要求。

4、mysql三大范式

  • 第一范式:确保每列的原子性
    (1)如果每列(或者每个属性)都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式。
    (2)例如:顾客表(姓名、编号、地址、……)其中"地址"列还可以细分为国家、省、市、区等。
  • 第二范式:在第一范式的基础上更进一层,目标是确保表中的每列都和主键相关
    (1)如果一个关系满足第一范式,并且除了主键以外的其它列,都依赖于该主键,则满足第二范式。
    (2)例如:订单表(订单编号、产品编号、定购日期、价格、……),"订单编号"为主键,"产品编号"和主键列没有直接的关系,即"产品编号"列不依赖于主键列,应删除该列。
  • 第三范式:在第二范式的基础上更进一层,目标是确保每列都和主键列直接相关,而不是间接相关
    (1)如果一个关系满足第二范式,并且除了主键以外的其它列都不依赖于主键列,则满足第三范式。
    (2)为了理解第三范式,需要根据Armstrong公里之一定义传递依赖。假设A、B和C是关系R的三个属性,如果A-〉B且B-〉C,则从这些函数依赖中,可以得出A-〉C,如上所述,依赖A-〉C是传递依赖。
    (3)例如:订单表(订单编号,定购日期,顾客编号,顾客姓名,……),初看该表没有问题,满足第二范式,每列都和主键列"订单编号"相关,再细看你会发现"顾客姓名"和"顾客编号"相关,"顾客编号"和"订单编号"又相关,最后经过传递依赖,"顾客姓名"也和"订单编号"相关。为了满足第三范式,应去掉"顾客姓名"列,放入客户表中。

5、关系数据库的设计原则

  • (1)数据库内数据文件的数据组织应获得最大限度的共享,最小的冗余度,消除数据及数据依赖关系中的冗余部分,使依赖于同一个数据模型的数据达到有效的分离。
  • (2)保证输入、修改数据时数据的一致性与正确性。
  • (3)保证数据与使用数据的应用程序之间的高度独立性。

6、数据库的三级模式结构:模式、外模式、内模式

  • 模式:
    模式也称为逻辑模式或概念模式,是数据库中全体数据中的逻辑结构和特征的描述,是所有用户的公共数据视图。一个数据库只有一个模式。模式处于三级结构的中间层。
  • 外模式
    外模式也称为用户模式,是数据库用户(包括应用程序猿和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图是与某一应用有关的的数据的逻辑表示。。外模式是模式的子集,一个数据库可以有多个外模式。
  • 内模式
    内模式也称为存储模式,是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。一个数据库只有一个内模式

7、数据库常用对象

  • 表:包含数据库中所有数据的数据库对象,由行和列组成。
  • 字段:表中每列称为一个字段。
  • 索引:是一个单独的、物理的数据库结构。它是依赖于表建立的,在数据库中索引使数据库程序无须对整个表进行扫描,就可以在其中找到所需的数据。
  • 视图:从一张或多张表中导出的表。
  • 存储过程:增删改差的sql语句集合。

8、两种常见的存储引擎

InnoDB

  • InnoDB 在 MySQL 5.5 及以后成为默认索引,它的特点是:
  1. 支持行锁,采用 MVCC 来支持高并发
  2. 支持事务
  3. 支持外键
  4. 支持崩溃后的安全恢复
  5. 不支持全文索引
  6. InnoDB 是一个事务型存储引擎,为用户操作非常大的数据存储提供了一个强大的解决方案,已经被很多互联网公司使用。
  • 在以下场合下,使用InnoDB是最理想的选择:
  1. 更新密集的表:InnoDB存储引擎特别适合处理多重并发的更新请求。
  2. 事务:InnoDB 存储引擎是支持事务的标准MySQL存储引擎。
  3. 自动灾难恢复:与其它存储引擎不同,InnoDB表能够自动从灾难中恢复。
  4. 外键约束:MySQL支持外键的存储引擎只有InnoDB。
  5. 支持自动增加列 AUTO_INCREMENT 属性。

MyISAM

  • MyISAM 引擎是 MySQL 5.1 及之前版本的默认引擎,它的特点是:
  1. 不支持行锁,读取时对需要读到的所有表加锁,写入时则对表加排它锁
  2. 不支持事务
  3. 不支持外键
  4. 不支持崩溃后的安全恢复
  5. 在表有读取查询的同时,支持往表中插入新纪录
  6. 支持 BLOB 和 TEXT 的前500个字符索引,支持全文索引
  7. 支持延迟更新索引,极大提升写入性能
  8. 对于不会进行修改的表,支持压缩表,极大减少磁盘空间占用

参考资料:
《mysql从入门到精通》—明日科技

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值