概念设计是数据库设计的核心环节。
简单来说,就是通过用户需要,进行综合归纳与抽象,形成一个独立于DBMS的概念模型。
数据库概念设计的目标:
或者说定义和描述应用领域设计的数据范围。
1.获取信息模型
2.描述数据的属性特征
3.描述数据之间的关系
4.定义和描述数据之间的约束
5.说明数据的安全性要求
6.支持用户的各种数据的处理需求
7.保障信息模型能够转化为数据库的逻辑结构
数据库概念设计的过程:
1.明确建模目标[也就是模型的覆盖范围]
2.定义实体集[从底向上标识和定义实体集]
3.定义联系[实体间的关联关系]
4.建立信息模型[ER图]
5.确定实体集属性[属性即描述实体集的特征或性质]
6.对信息模型进行集成和优化[检查和消除命名、结构不一致的问题]
概念模型采用最广泛的是ER[entity relationship,实体联系的模型]建模方法,即将现实世界抽象为具有属性的实体以及之间的联系。
实体集[实体] ——> 学生[张珊,李思,王武]
实体[属性] ——> 李思[男,18,12123010101]
再次明确,属性是描述实体的。
属性的取值范围称为域。
在上述“学生表”中,
码[又叫超键] ——>
- [学生编号]
- [姓名]
- [学生编号, 姓名]
- [学生编号, 年龄]
- [学生编号, 姓名, 年龄]
- [学生编号, 姓名, 手机号]
- [学生编号, 年龄, 手机号]
- [学生编号, 姓名, 年龄, 手机号] ——>这个又叫做全码。
- [姓名, 年龄]
- [姓名, 手机号]
- [姓名, 年龄, 手机号]
这些都叫做码,在关系中能唯一标识元组的属性集称为关系模式的超键。
通过它们,我们可以推出整张表。
[年龄,手机号]不是超键,因为无法推整张表。
通过超键,我们可以确保在关系中每个元组的唯一性,并且能够推出整张表。这意味着通过超键可以识别和访问表中的每一条记录,而不会产生歧义或重复。
候选码 ——>
- [学生编号]
- [学生编号, 姓名]
- [学生编号, 年龄]
- [学生编号, 姓名, 年龄]
- [学生编号, 姓名, 手机号]
- [学生编号, 年龄, 手机号]
- [姓名, 年龄]
- [姓名, 手机号]
这些不含有多余属性的超键称为候选键。这些候选码都能够唯一标识表中的每个学生记录,而且没有多余的属性。
主键 ——>
- [学生编号]
- [姓名, 年龄]
- [姓名, 手机号]
这些候选键都是唯一且非空的,并且没有冗余属性。通常,从中选择一个主键取决于数据库设计的需求和具体应用场景。
主键是被选定用来唯一标识关系模式中每个元组的候选键。主键需要满足以下条件:
- 唯一性:在整个关系中,主键的值必须是唯一的,不能有重复。
- 非空性:主键的值不能为NULL或空值。
- 最小性:主键应当是最小的超键,即不应该存在可以更少属性的超键也能唯一标识元组。
这三者的关系是包含关系。
码{候选码[主键]}
此外,还有一个外键,外键是用于确定两张表关系的存在,如果关系模式R1中的某属性集不是R1的主键,而是另一个关系R2的主键则该属性集是关系模式R1的外键。
比如,现在有一张学生表和一张课程表,那么课程编号现在是课程表的主键,在学生表中课程号不是主键,学号才是主键,那么,我们就说课程号是学生表的外键。
构成候选码或主码的属性是主属性,其外的则是非主属性。
联系,即实体间的关系,同类联系的集合成为联系集。
ER模型的表示:
下面绘制一个学生和课程的ER图:
一个学生可选N门课程,一门课程可被M个学生选,一个讲师只讲一个课程,一个课程只需要一名老师,一个讲师可教授N名学生
(最后一个er图欢迎指正,我也有点不确定,写着写着突然有些疑惑了)
标签:手机号,数据库,学生,概念设计,姓名,编号,主键,属性 From: https://blog.csdn.net/builie0748594740/article/details/140272760