ER图、关系模式与范式
ER图
ER图(Entity-Relationship Diagram)是一种用于描述数据库中实体、属性和实体之间关系的图表。它是面向数据库设计和建模的一种工具,用于可视化和表示现实世界中的实体以及它们之间的关联。
ER图由实体(Entity)、属性(Attribute)和关系(Relationship)组成。
- 实体(Entity):实体表示现实世界中的一个独立对象,可以是一个具体的事物(如人、物品)或一个抽象的概念(如订单、课程)。在ER图中,实体通常用矩形框表示,框内写有实体名。
- 属性(Attribute):属性是实体的特征或描述,用于描述实体的各个方面。属性可以是简单属性(如姓名、年龄)或复合属性(由多个简单属性组成,如地址由街道、城市和邮编组成)。在ER图中,属性通常以椭圆形表示,并与实体相连。
- 关系(Relationship):关系表示实体之间的联系和互动。关系可以是一对一、一对多或多对多的关系。在ER图中,关系通常用菱形表示,连接相关的实体,并用线表示关系的类型。
关系模式
关系模式(Relation Schema)是对关系的描述,它可以形式化地表示为:R(U,D,dom,F)。其中R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域,dom为属性向域的映象集合,F为属性间数据的依赖关系集合。通常简记为:R(U)或R(A1,A2,…,An)其中R为关系名,U为属性名集合,A1, A2, …, An为各属性名。
范式
范式是一种通过规范化数据库设计来消除冗余和提高数据的完整性、一致性和性能的方法。范式分为一至六个级别,每个级别都有一组规则,用于检查和优化数据库表的结构。主要的范式包括第一范式(1NF)、第二范式(2NF)、第三范式(3NF)等。主要理解前三种范式即可。
第一范式(1NF)
最低要求的范式。它是针对数据表中具体的某一列来说的,强调了一列的原子性。也就是说,这一列所代表的属性是不可分的。
第一张图中电话列是可分为手机和座机项,因此不符合第一范式,第二张图符合。
第二范式(2NF)
首先就是需要满足第一范式,然后在此的基础上, 要求除了主键之外的所有属性都必须完全依赖于主键,而不能只依赖于主键的一部分。它规定了数据的唯一性。
例如上述表中,主键为(学号,课程号),这也称之为联合主键。成绩是完全依赖于主键的,只有确定了是哪个学生的哪门课,成绩才能确定;但是姓名就不是完全依赖于主键了,只要学号确定了,就可以唯一确定姓名了,所以,姓名是部分依赖于主键的。这样可能出现的问题是,当学生没有选定课程时课程号未知,但是课程号又是联合主键之一不能为空。
那么如何解决这个问题呢?正确的做法是应该将上面的表拆分成三个表
第三范式(3NF)
在满足2NF的基础上,任何非主属性(除主键)不依赖于其他非主属性,且不存在传递依赖(a->b,b->c,则a->c)。它解决了数据表的冗余性。
上图中,学院编号会被学号所唯一确定,然后学院名称又被学院编号唯一确定,即:学号->学院编号->学院名称;这就出现了传递依赖,所以不属于第三范式。
那么这样会有什么问题呢?会出现数据冗余、更新异常等的问题:
- 添加一个学院,每个学生都需要输入学院名称这个字段
- 修改学院时,每个学生的记录都需要修改,否则就会出现数据不一致
解决办法就是将上面的表拆成两个子表:
鸣谢
数据库——ER图知识点详集_数据库er图-CSDN博客
数据库学习–关系模式
数据库学习–范式与规范化