MySQL数据库:属于关系型数据库的一种,基于表类型。【一张二维表】
数据是信息的具体表现的形式。【表现形式有:数字、文本、图像、音频、视频等】

一、模型:是对现实世界的抽象。【例如:Java的一个类,类是抽象的,而对象是具体的】
1、数据模型【一种思维工具】:通过现实世界的某个事物进行抽象化的一个过程,并描述这个事物具有的特征和功能,然后封装成一个容器。
2、数据模型的三要素:数据结构【静态特征】、数据操作【动态特征】、数据约束【数据范围限制】。
    2.1、数据结构:描述的是数据库系统的静态特征。【例如:Java类中的属性】
    2.2、数据操作:描述了在相应的数据结构上的操作类型和操作方法及系统的动态特征。【例如:Java类中的方法】
    2.3、数据约束:描述数据结构内数据间完整性规则的集合。【例如:限制Java属性值的可效范围】

3、数据模型的分类:信息世界【概念数据模型】、计算机世界【逻辑数据模型、物理数据模型】。
    其中的一些术语:
        概念数据模型中           逻辑数据模型中        E-R中的表示法及词性            理解
        ---------------------------------------------------------------------------------------------------------------------------
        实体【Entity】       |      记录【Record】   |    矩形【名词】    |    对应着Java类中的一个对象
        属性【Attribute】   |      字段【Field】      |     椭圆【名词】   |    对应着Java类中的属性
        标识符【Indentifier】 |  关键字【Keyword】 |  文字【名称或者动名词】  |  对应着Java中的属性名/方法名等
        实体集【Entity Set】  |  表【Table】    |    暂无     |   对应着Java中的多个对象或者对象数组
        联系【Relationship】 |  主外键关联  |    菱形【动词或者动名词】  |  实体【Java对象】与实体【Java对象】之间的关系
        
4、实体与实体之间的三种关系:一对一的关系、一对多的关系、多对多的关系。【出现了多对多关系就需要在二个实体之间建立一张中间表,在E-R图中也是用菱形来表示】

5、关系模型的规范化:第一范式、第二范式、第三范式、BCNF范式、第四范式等。【目的:随着范式级别逐渐的上升,拆分的表也逐渐变多,利用外键将拆分的多个表联系起来。在日常开发中满足第三范式就足够了】
    1)第一范式【列】:最基本的的范式、每一个属性都是不可再分。【一条记录中某个字段不能出现多个属性值】
    2)第二范式【行】:表中既满足一个主键能唯一区分表中的每条记录,又满足不能存在候主键。【每条记录能被唯一的区分】
    3)第三范式【表】:表中的所有数据元素【一条记录】不但要能唯一的主关键字所标识,而且它们之间还必须相互独立,不存在其他函数的依赖关系(A--B--C)。
    4)BCNF范式:消除主属性对于主属性的部分和传递依赖。
    5)第四范式:消除表中的多值依赖。
6、表结构设计不当会出现以下四种问题:
    第一种:数据冗余。
    第二种:插入异常。
    第三种:删除异常。
    第四种:修改【更新】异常。
    
7、概念建模四步骤:抽象实体--->标识实体属性--->确定主关键字--->确定实体间的关系。

二、补充一些小知识:
1、关系数据库的提出者:E.F.Codd【埃德加.弗兰克.科德 英国人】
2、E-R【Entity-Relationship】模型设计提出者:Peter-Chen 陈品山 台湾人
    画图E-R图时:
        矩形代表一个实体。
        矩形中的下划线代表是一个标识符【关键字】。
        椭圆代表实体中的属性。
        菱形代表实体与实体之间的关系。
3、非关系型数据库【MongoDB数据库 和 Redis数据库】。
    MongoDB数据库:基于文档类型。
    Redis数据库:基于键值对类型。
4、主属性和候属性:
    主属性:具有唯一性,表中只存在一个具有唯一性的标识。
    候属性:具有唯一性,表中可存在多个具有唯一性的标识。