Mysql专栏入口
一、 设计规则
- 数据在表中,表在数据库中。
- 一个数据库可以有多个表,每个表都有一个唯一标识符(名字)。
- 表具有特性,类似于类的设计。
表、记录、字段
- E-R(entity-relationship,实体-联系)模型有三个主要概念是:实体集(表)、属性(字段)、联系集。
ORM思想(Object Relational Mapping)
数据库中的表对应(表)-> Python中的一个类
表中的一条数据(记录) -> 类中的一个对象
表中的一个列(字段) -> 类中的一个字段
表的关联关系
- 现实世界中的各种实体以及实体之间的各种联系均用模型表示
- 关系一共有四种:一对一,一对多,多对多,自我引用
# 一对一
开发中较少,因为一对一可以创建成一张表
例如:设计学生表:学号、姓名、手机号、班级、身份证、家庭住址、籍贯......
拆分成两个表:
基础信息表(常用):学号、姓名、手机号、班级。
档案信息表(不常用):学号、身份证、家庭住址、籍贯......
两种表的建表原则:
外键唯一:主表的主键和从表的外键(唯一),形成主外键关系,外键唯一。
外键是主键:主表的主键和从表的主键,形成主外键关系。
# 一对多
常见实例场景:客户表和订单表,分类表和商品表,部门表和员工表。
一对多建表原则:在从表创建一个字段,字段作为外键指向主表的主键。
例如: 学生表 班级表
|sid|name |cid| |cid| class |
|---|-----|---| |---|---------|
|1 |李一一|1 | |1 |一年级一班|
|2 |王二二|1 | |2 |一年级二班|
|3 |李一一|2 |
|4 |王二二|2 |
学生表中的cid指向了班级表种的主键cid 一个班级可以有多个学生,标准的一对多。
# 多对多
要想表示多对多,必须创建第三个表,该表通常成为连接表,它将多对多的关系划分为
两个一对多关系。
例如:学生-课程
一个学生可以选择多门课,一门课也可以被多个学生选择。这时就需要一个连接表来
表示其中关系。
| sid | cid |
|-----|-----|
| 1 | 101 |
| 2 | 102 |
| 1 | 102 |
| 2 | 101 |