一文搞定关系数据库设计要领,值得收藏!(2)

本文详细介绍了E-R数据模型,解释了实体、属性和关系的概念,并通过实例展示了如何设计关系模式。讨论了Boyce-Codd范式(BCNF)和第三范式(3NF),分析了它们的区别和适用场景,以及在存储引擎选择上的考量,如InnoDB和MyISAM。此外,还强调了字符集选择的原则和数据类型选择的策略,包括固定长度与可变长度字段的权衡。
摘要由CSDN通过智能技术生成

首先搞清楚什么是E-R数据模型?它有什么用?

E-R模型在将现实世界中事实的含义和相互关联映射到概念模式方面非常有用,因此,许多数据库设计工具都利用了E-R模型的概念。E-R模型所采用的三个主要概念是:实体集、关系集和属性。

  • 实体:实体是世界中可以区别于其他对象的“事件”或者“物体”,例如,学校里的每个学生、学生选修的每门课程等都是一个实体。

  • 属性:属性是实体集中每个成员具有的描述性性质。例如,学生的姓名,学号等。

  • 实体集:实体集就是就有相同类型及属性的实体集合,比如,学校里的所有学生,学生选修的所有课程等。

  • 关系:关系是多个实体间的相互关联。例如,小明选修语文课程。

  • 关系集:关系集是同类关系的集合。例如,所用学生选修课程的集合。

既然知道了E-R数据模型的作用,下面就让我们来画出学生选修课程的E-R图吧。

其中,(学号,姓名,年龄,性别)为学生的属性,(成绩)为选修关系的属性,(课程号,课程名,学分)为课程的属性。学生和课程之间的关系是多对多,即一个学生可以选择多门课程,一门课程可以被多个学生选修。

关系表设计


从上面的E-R图,我们一眼就能看出他们之间的联系,那该如何设计关系模式呢?

我们要知道,关系数据库设计的目的是为了生成一组关系模式,使我们能够既不必存储不必要的冗余信息,又能方便地获取信息。为了是我们方便的达到这个目的,范式设计应运而生。

Boyce-Codd范式

我们所知道的令人满意的范式之一是Boyce-Codd范式(BCNF)。如果对F+中所有形如 α→β 的函数依赖,其中 α⊆R 且 β⊆R,下面的定义至少有一个成立:

  • α→β 是平凡函数依赖(即 β ⊂ α)。(一般来说,平凡函数依赖并没有讨论意义,讨论的都是非平凡函数依赖,即 β ∉⊂ α 的情况)

  • α 是模式R的超码。

考虑如下关系模式及其相应的函数依赖:

  • 学生 = (学号,姓名,年龄,性别)

学号 → 姓名 年龄 性别

  • 课程 = (课程号,课程名,学分)

课程号 → 课程名 学分

  • 选修 = (学号,课程号,成绩)

学号 课程号 → 成绩

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值