1. 关系型数据库
数据库按照数据结构来组织、存储和管理数据,实际上,数据库一共有三种模型:
- 层次模型
- 网状模型
- 关系模型
MySQL属于关系型数据库。说白了,它就是类似Excel记录的数据一样,每一行代表一个实体或者一条记录。数据库中会有很多张表,如何将这些表组织起来呢?表拥有主键(相当于每条数据的身份证),他们可以通过主键和外键对应到其他表中的实体。关系模型理解和使用非常简单。
2.数值类型
我们在定义和使用数据库时,数值类型非常重要,具体见:
MySQL 数据类型_w3cschoolwww.w3cschool.cn
字段定义了数据类型(整型、浮点型、字符串、日期等),以及是否允许为NULL
。注意NULL
表示字段数据不存在。一个整型字段如果为NULL
不表示它的值为0
,同样的,一个字符串型字段为NULL
也不表示它的值为空串''
。
通常情况下,字段应该避免允许为NULL。不允许为NULL可以简化查询条件,加快查询速度,也利于应用程序读取数据后无需判断是否为NULL。
3.关系模型
3.1 主键
- 在关系数据库中,一张表中的每一行数据被称为一条记录。一条记录由多个字段组成。能够通过某个字段唯一区分出不同的记录,这个字段被称为主键。
- 对主键的要求,最关键的一点是:记录一旦插入到表中,主键最好不要再修改,因为主键是用来唯一定位记录的,修改了主键,会造成一系列的影响。
- 不使用任何业务相关的字段作为主键。如果我们以学生的身份证号作为主键,似乎能唯一定位记录。然而,身份证号也是一种业务场景,如果身份证号升位了,或者需要变更,作为主键,不得不修改的时候,就会对业务产生严重影响。因此,身份证号、手机号、邮箱地址这些看上去可以唯一的字段,均不可用作主键。
- 作为主键最好是完全业务无关的字段,我们一般把这个字段命名为
id
。常见的可作为id
字段的类型有:
- 自增整数类型:数据库会在插入数据时自动为每一条记录分配一个自增整数,这样我们就完全不用担心主键重复,也不用自己预先生成主键;
- 全局唯一GUID类型:使用一种全局唯一的字符串作为主键,类似
8f55d96b-8acc-4636-8cb8-76bf8abc2f57
。GUID算法通过网卡MAC地址、时间戳和随机数保证任意计算机在任意时间生成的字符串都是不同的,大部分编程语言都内置了GUID算法,可以自己预算出主键。