MySQL笔记-数据库设计相关
数据库设计三范式
第一范式(1NF):属性不可分割
第一范式要求每个属性都是原子性的,即不能再细分成更小的数据项。
例如,一个“地址”字段不能被分成“省份”、“城市”、“县/区”,因为这些数据可以分开存储。
第二范式(2NF):消除部分依赖
第二范式要求每个非主键列都必须完全依赖于主键,不能部分依赖于主键的任何一部分。
例如,如果一个表的主键包含“订单号”和“产品编号”,那么关于某个订单的产品信息就应该储存在同一个表中,而不是分散在多个表中。
第三范式(3NF):消除传递依赖
第三范式要求每个非主键列都不能依赖于其他非主键列,而只能依赖于主键。
例如,如果一个表的主键是“客户编号”,那么“订单表”中的“客户姓名”就应该在“客户表”中存储而不是在“订单表”中存储,否则就会出现数据冗余和更新异常等问题
ER模型
ER模型简介
ER模型(Entity-Relationship Model)是一种表示实体、属性和它们之间关系的图形化工具,主要用于数据库设计。
ER模型通过使用实体、关系和属性等概念来描述现实世界中的事物及其相互关系,从而帮助开发人员设计出适合业务需求的数据库
ER模型三个主要部分
实体(Entity)
实体指的是现实世界中的一个独立、有明确身份的事物,通常用一个
矩形表示。例如,学生、教师、课程等都是实体关系(Relationship)
关系指的是实体之间的相互联系,通常用
菱形表示。例如,学生选修课程的关系就可以用一个菱形表示。属性(Attribute)
属性指的是实体的特征或属性,通常用
椭圆形表示。例如,学生的姓名、年龄、性别等就是学生实体的属性。
ER模型的设计过程
- 制定需求:了解业务需求,确定系统实体、关系和属性。
- 确定实体类型:根据需求确定哪些实体需要在数据库中进行管理。
- 确定属性:为每个实体确定其属性,并将属性与其对应的实体连接起来。
- 确定关系:确定实体之间的关系。
- 优化模型:对模型进行修改和优化,以满足用户的需求。
- 生成数据模型:将ER图转换为关系模型,确定每个实体、属性和关系如何在数据库中表示。
数据库表的关联关系
一对一(One to One)
一对一关系指的是两个表之间只有一条记录相互对应的关系,即一个表的每一行只能与另一个表中的一行相匹配。
例如,一个人只有唯一的身份证号码,而一个身份证号码也只对应一个人。
一对多(One to Many)
一对多关系指的是一个表的一条记录可以与另一个表中的多条记录相匹配的关系,即一个表中的记录可以与另一个表中的多条记录建立关联。
例如,一个用户可以发布多篇文章,而一篇文章只能由一个用户发布。
多对多(Many to Many)
多对多关系指的是两个表之间存在多条记录相互对应的关系,即一个表中的多条记录可以与另一个表中的多条记录建立关联。
例如,一个学生可以选择多门课程,而一门课程也可以被多个学生选择。为了实现多对多的关联,需要使用一个中间表来存储两个表之间的对应关系。











