2025.3.25 数据库学习

一、ER图绘制

(一)概念

ER图(实体 - 联系图)是用于表示实体之间关系的图形化工具。它通过实体、属性和关系来描述数据模型。

(二)基本元素

  1. 实体

    • 用矩形表示,矩形内写上实体名。例如,“学生”是一个实体,矩形内写上“学生”。

    • 实体的属性用椭圆表示,椭圆内写上属性名。例如,“学生”的属性有“学号”“姓名”“年龄”等,每个属性用一个椭圆表示,椭圆用线连接到实体“学生”。

    • 主键属性用下划线标注。例如,“学号”是“学生”实体的主键,椭圆内的“学号”文字下方加下划线。

  2. 关系

    • 用菱形表示,菱形内写上关系名。例如,“学生”和“课程”之间存在“选修”关系,用一个菱形写上“选修”。

    • 关系的两端分别连接相关的实体,并且标注出关系的类型(如一对一、一对多、多对多)。例如,“学生”和“课程”是多对多关系,从“学生”到“选修”关系的线和从“课程”到“选修”关系的线都标注“m:n”。

  3. 联系类型

    • 一对一(1:1):例如,一个学生对应一个学籍档案,一个学籍档案对应一个学生。

    • 一对多(1:n):例如,一个班级对应多个学生,一个学生只属于一个班级。

    • 多对多(m:n):例如,一个学生可以选修多门课程,一门课程可以被多个学生选修。

(三)绘制步骤

  1. 确定实体:根据实际需求,找出系统中的实体。例如,在学校管理系统中,学生、教师、课程等都是实体。

  2. 确定属性:为每个实体确定其属性。例如,“学生”实体的属性有学号、姓名、性别、年龄等。

  3. 确定关系:找出实体之间的关系。例如,“学生”和“班级”是一对多关系,“学生”和“课程”是多对多关系。

  4. 绘制图形:按照上述基本元素的表示方法,用矩形表示实体,用椭圆表示属性,用菱形表示关系,并连接好它们,标注好关系类型和主键。

(四)注意事项

  • 实体的属性不能重复,并且要尽量完整。

  • 关系的类型要准确,不能混淆。

  • ER图要清晰、简洁,避免交叉线条太多,影响可读性。

二、范式优化的实际应用

(一)范式概念

范式是数据库表结构设计的规范化标准,用于减少数据冗余、提高数据完整性。

(二)常见范式

  1. 第一范式(1NF)

    • 每个字段的值都是不可再分的原子值。例如,一个学生信息表中,“姓名”字段不能包含“张三、李四”这样的值,只能是“张三”或“李四”。

    • 实际应用:在设计表时,确保每个字段都是单一的、不可分割的数据项。例如,设计一个员工信息表,不能将“姓名、性别”合并成一个字段,而应该分别设置“姓名”和“性别”两个字段。

  2. 第二范式(2NF)

    • 在满足第一范式的基础上,非主属性完全依赖于主键。例如,一个订单表,主键是订单号,“客户姓名”是依赖于订单号的,而不是部分依赖于订单号的某个部分。

    • 实际应用:如果发现某个表的非主属性部分依赖于主键,就需要将这个表分解。例如,一个学生选课表,包括学号、课程号、课程名称、课程学分等字段。学号和课程号是主键,课程名称和课程学分只依赖于课程号,不完全依赖于主键,所以需要将课程信息(课程号、课程名称、课程学分)分解到一个单独的课程表中。

  3. 第三范式(3NF)

    • 在满足第二范式的基础上,非主属性不依赖于其他非主属性。例如,一个员工信息表,员工的部门名称不应该依赖于员工的职位,而应该只依赖于部门编号。

    • 实际应用:如果发现某个表的非主属性之间存在传递依赖,就需要进一步分解表。例如,一个商品销售表,包括商品编号、商品名称、品牌、品牌总部地址等字段。商品名称依赖于商品编号,品牌依赖于商品编号,品牌总部地址依赖于品牌。这种情况下,可以将品牌和品牌总部地址分解到一个单独的品牌表中。

(三)范式优化的步骤

  1. 分析表结构:检查表是否满足第一范式,确保字段都是原子值。

  2. 检查部分依赖:如果存在部分依赖,将表分解,使每个非主属性完全依赖于主键,达到第二范式。

  3. 检查传递依赖:如果存在传递依赖,继续分解表,使非主属性之间不依赖,达到第三范式。

  4. 评估优化效果:优化后,检查数据冗余是否减少,数据完整性是否提高。

(四)实际案例

假设有一个学生信息表,包含以下字段:学号、姓名、班级名称、班级辅导员姓名。

  • 第一范式:这个表满足第一范式,因为每个字段都是原子值。

  • 第二范式:这个表不满足第二范式,因为“班级名称”和“班级辅导员姓名”只依赖于“班级”,而不是主键“学号”。所以需要分解为两个表:学生表(学号、姓名、班级)和班级表(班级、班级辅导员姓名)。

  • 第三范式:分解后的表满足第三范式,因为学生表中的非主属性只依赖于主键,班级表中的非主属性也只依赖于主键。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值