数据库技术知识点(一)IDEFO需求建模方法、解释实体、实体型、实体集的区别、完全函数依赖、部分函数依赖、传递函数、平凡函数依赖、非平凡函数依赖举例、超码、主码、候选码的概念与区分

简介: 数据库技术知识点(一)IDEFO需求建模方法、解释实体、实体型、实体集的区别、完全函数依赖、部分函数依赖、传递函数、平凡函数依赖、非平凡函数依赖举例、超码、主码、候选码的概念与区分

@[toc]

1.IDEFO需求建模方法

  IDEFO是活动模型的缩写,来源于结构化分析与设计技术的一套标准,这些标准包含多种层次的图形语言,其中IDEFO用来描述对于企业具有重要性的各个过程(活动)。它以图形表示完成一项活动所需要的具体步骤、操作、数据要素以及各项具体活动之间的联系方式。

输入(Input):实行或完成特定活动所需的资源,置于框图的左侧。
输出(Output):经由活动处理或修正后的产出,置于框图的右侧。
控制(Control):活动所需的条件限制,置于框图的上方。
机制(Mechanisms):完成活动所需的工具,包括人员、设施及装备,置于框图的下方。

在这里插入图片描述

  描述功能活动示意图中矩形框代表功能活动,写在矩形框内的动词短语描述功能活动的名称,活动的编号按照要求写在矩形框右下角指定的位置。
  左边的输入箭头表示完成活动需要的数据;矩形框上方的控制箭头描述了影响这个活动执行的事件或约束条件;右边的输出箭头说明由活动产生的结果及信息,下方进入的机制箭头表示实施该活动的物理手段或完成活动需要的资源(计算机系统、人或组织)。

2.解释实体、实体型、实体集的区别

2.1实体

  实体就是具体的个体,不同的实体是不同的,只能代表他自己一种。(官方解释即:客观存在并可相互区别的事物)
  举个例子:阿拉斯加、萨摩耶、哈士奇、柯基、中华田园犬、边牧、德牧、罗威纳、拉布拉多、史宾格、田园猫、暹罗、英短、加菲猫、波斯猫。这些都可以称之为实体。大家注意我所列举的上述都是一个非常具体的东西

2.2实体型

  用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。(不理解没关系,往下看例子)
举个例子:
  阿拉斯加、萨摩耶、哈士奇前面三种狗我们把它统称为狗。狗有什么属性(特征)呢,狗有品种、长度、重量等属性(随便举的哈,当然描述狗的特征的都可以称之为属性)那么狗这个统称和这些属性名的组合,我们将这个组合称为实体型即:狗(品种,长度,重量)就是个实体型,我们可以把实体型当成是一个模型或是一个框架;再比方说学生(学号,姓名,性别,班级)也是实体型,汽车(品牌、价格、产地)也是实体型。他是对一类事物及其属性的概括注意哦,一个实体型,它用的是类别的统称,你看我用的是狗、汽车、学生而不是用的萨摩耶,奥迪,小胖(小胖是个学生)这些具体的名称,属性也是抽象的,我没有说狗具体的什么品种,多长,多重。
  总结:所谓实体型即:类别统称+属性。形式上就是:类别统称(属性1,属性二,属性三...)。

2.3实体集

  所谓实体集就是同一类型实体的集合(一般是有限的)。注意!是同—类型实体的集合哦。实体集中包含的是实体,可以把它理解成数学中的集合,还是以上面的例子为例:{英短、加菲猫、波斯猫}这就是一个实体集。再比如(阿拉斯加、萨摩耶、哈士奇}这也是一个实体集,这两个实体集里分别只包含了三个实体。
  注意:我们不能把{阿拉斯加、萨摩耶、哈士奇、加菲猫、波斯猫}归为一个集合,因为他们不是一个类别

2.4实体型与实体集的区别总结:

  实体型是一个类别的统称加其属性,就是描述—类事物的一个模型,是对一个事物及其属性抽象的表征,一般用于描述E-R图;实体集是有限的,是对具体事物的描述,对于一个实体集,只包含一定数量的实体,比如(阿拉斯加、萨摩耶、哈士奇}这个实体集只包含这三个实体

3.完全函数依赖、部分函数依赖、传递函数、平凡函数依赖、非平凡函数依赖举例

3.1非平凡函数依赖

3.1.1定义:

  若X->Y,但Y不是X的子集,就是非平凡函数依赖。

3.1.2例如:

  在学生表(学号,姓名,年级)中通过(学号,姓名)可以推出这个学生所在的年级,但年级不是(学号,姓名)的子集,这是非平凡函数依赖((学号,姓名)就是一个X,年级就是一个Y)。

3.2平凡函数依赖

3.2.1定义:

  若X->Y,且Y是X的子集(对任一关系模式,平凡函数依赖必然成立),就是平凡函数依赖。

3.2.2例如:

  在学生表(学号,姓名,年级)中.(学号,姓名)可以推出学号和姓名其中的任何一个;这就是平凡函数依赖.直白点说,就是只要Y是X的子集,Y就依赖于X。

3.3完全函数依赖:

3.3.1定义:

  若X->Y,并且对于X的任何一个真子集X',都有Y不函数依赖于X',则称Y对X完全函数依赖。

3.3.2例如:

  通过(学生学号,选修课程名}可以得到该生本门选修课程的成绩},而通过单独的{学生学号}或者单独的{选修课程名}都无法得到该成绩,则说明{该生本门选修课程的成绩}完全依赖于{学生学号,选修课程名}

3.4部分函数依赖

3.4.1定义:

  若X->Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖。

3.4.2例如:

  通过{(学生学号,课程号}可以得到{该生姓名},而通过单独的{(学生学号}已经能够得到该生姓名},则说明(该生姓名}部分依赖于{(学生学号,课程号};又比如,通过(学生学号,课程号}可以得到[课程名称},而通过单独的{课程号}已经能够得到{课程名称},则说明(课程名称}部分依赖于{学生学号,课程号}。(部分依赖会造成数据冗余及各种异常。)

3.5传递函数

3.5.1定义:

  如果X->Y(Y不是X的子集),Y不函数依赖于X,Y->Z,Z不是Y的子集,则称Z对X传递函数依赖。

3.5.2例如:

  在关系R(学号,宿舍,费用)中,通过(学号}可以得到[{宿舍},通过{宿舍}可以得到[费用},而反之都不成立,则存在传递依赖{学号}->{费用}。(传递依赖也会造成数据冗余及各种异常。)

4.超码、主码、候选码的概念与区分

4.1什么是码?

4.1.1定义:

在这里插入图片描述
  码是数据系统中的基本概念。所谓码就是能唯一标识实体(数据库中的实体:对应现实生活中某样事物或者人物)的属性,他是整个实体集的性质,而不是单个实体的性质。它包括超码,候选码,主码。

4.1.2例如:

  下面我以学生表为例,给大家分享我对码的理解,比如有一个学生表: student(Id,Sno , Name , Sex),即:Id、学号、姓名、性别,这里的实体是student,实体的属性有Id,Sno , Name , Sex。

4.2超码

4.2.1定义:

  超码也叫做超级码”,是一个或多个属性的集合,这些属性可以让我们在一个实体集(所谓的实体集就是student表中多条记录的集合)中唯一地标识一个实体。如果K是一个超码,那么K的任意超集也是超码,也就是说如果K是超码,那么所有包含K的集合也是超码。

所谓超集是集合论的术语,A ⊇ B,则 A 集是 B 的超集,也就是说 B 的所有元素 A 里都有,但 A 里的元素 B 就未必有

4.2.2例如:

因为通过Id或者Sno可以找到唯一一个学生,所以{Id}和{Sno}是超码,同理{Id ,Sno}、 {Id,Sno, Name}、{Id,Sno ,Name , Sex}、{Sno, Name}、 {Sno, Name,Sex}也是超码

4.3候选码

4.3.1定义:

  超码包括候选码,虽然超码可以唯一标识一个实体,但是可能大多数超码中含有多余的属性,所以我们需要候选码。若关系中的一个属性或属性组的值能够唯一地标识一个元组,且它的真子集不能唯一的标识一个元组,则称这个属性或属性组做候选码。

子集比真子集范围大,子集是包括本身的元素的集合,真子集是除本身的元素的集合

4.3.2例如:

  在上例中,只有{Id}或者{Sno}是候选码。如果Sex和Name可以唯一标识一个学生,则{Name, Sex}也为候选码,但是,Sex和Name并不能唯一标识一个学生,这与现实生活是违反的,因为现实有同名同姓的人,则{Name,Sex}不能作为候选码。

4.4主码

4.4.1定义:

  一个表的候选码可能有多个,从这些个候选码中选择一个做为主码,至于选择哪一个候选码,这个是无所谓的,只要是从候选码中选的就行。

4.4.2例如:

  在上例中,只有{Id}或者{Sno}是候选码。可以选Id或者Sno为主码。

4.5总结

  所有码都是一个集合。所有可以用来在实体集中标识唯一一个实体的集合,都是超码。如果任意超码的真子集不能包括超码(换句话说就是:它的真子集不能唯一的标识一个元组),则称其为候选码。被数据库设计者选中的,用来在同一实体集中区分不同实体的候选码就是主码,可以是一个属性或者多个属性的集合。
  简单的说,超码包括候选码,候选码包括主码。

4.5.1例子1:使用id属性作为主码,MySQL表定义代码如下:

-- 创建学生表
CREATE TABLE student1(
    Id INT PRIMARY KEY,
    Sno VARCHAR(20),
    Name VARCHAR(20),
    Sex VARCHAR(4)
);

4.5.2例子2:使用id和Sno属性集合作为主码,MySQL表定义代码如下:

-- 创建学生表
CREATE TABLE Student2(
    Id INT,
    Sno VARCHAR(20),
    Name VARCHAR(20),
    Sex VARCHAR(4),
    CONSTRAINT StudentPrimary PRIMARY KEY(Id,Sno)
);
相关文章
|
11月前
|
人工智能 运维 关系型数据库
数据库运维:mysql 数据库迁移方法-mysqldump
本文介绍了MySQL数据库迁移的方法与技巧,重点探讨了数据量大小对迁移方式的影响。对于10GB以下的小型数据库,推荐使用mysqldump进行逻辑导出和source导入;10GB以上可考虑mydumper与myloader工具;100GB以上则建议物理迁移。文中还提供了统计数据库及表空间大小的SQL语句,并讲解了如何使用mysqldump导出存储过程、函数和数据结构。通过结合实际应用场景选择合适的工具与方法,可实现高效的数据迁移。
1588 1
|
12月前
|
SQL 存储 关系型数据库
第二篇:关系型数据库的核心概念与 SQL 基础
本篇内容深入浅出地讲解了关系型数据库的核心概念与SQL基础,适合有一定计算机基础的学习者。文章涵盖数据库的基本操作(CRUD)、数据类型、表的创建与管理等内容,并通过实例解析SELECT、INSERT、UPDATE、DELETE等语句的用法。此外,还推荐了多种学习资源与实践建议,帮助读者巩固知识。学完后,你将掌握基础数据库操作,为后续高级学习铺平道路。
712 1
|
8月前
|
存储 SQL 运维
速看!数据库与数据仓库的本质区别是什么?
本文深入解析了“数据库”与“数据仓库”的核心区别,涵盖设计目的、数据结构、使用场景、性能优化和数据更新五个维度。数据库主要用于支持实时业务操作,强调事务处理效率;数据仓库则面向企业分析决策,注重海量数据的整合与查询性能。二者在企业中各司其职,缺一不可。
|
9月前
|
存储 关系型数据库 MySQL
MySQL数据库中进行日期比较的多种方法介绍。
以上方法提供了灵活多样地处理和对比MySQL数据库中存储地不同格式地日子信息方式。根据实际需求选择适当方式能够有效执行所需操作并保证性能优化。
809 10
|
10月前
|
SQL Oracle 关系型数据库
比较MySQL和Oracle数据库系统,特别是在进行分页查询的方法上的不同
两者的性能差异将取决于数据量大小、索引优化、查询设计以及具体版本的数据库服务器。考虑硬件资源、数据库设计和具体需求对于实现优化的分页查询至关重要。开发者和数据库管理员需要根据自身使用的具体数据库系统版本和环境,选择最合适的分页机制,并进行必要的性能调优来满足应用需求。
462 11
|
9月前
|
存储 关系型数据库 MySQL
MySQL数据库中的 char 与 varchar的区别是什么
MySQL中的char和varchar均用于存储字符串,但有显著区别。char为定长类型,固定长度,存储空间始终为设定值,适合长度固定的数据如手机号。varchar为变长类型,仅占用实际数据所需空间,适合长度不固定的内容如用户名。二者在性能与空间利用上各有优劣,应根据实际场景合理选择。
561 0
|
12月前
|
存储 算法 Java
实现不同数据库的表间的 JOIN 运算的极简方法
跨库计算是数据分析中的常见难题,尤其涉及多数据库系统时,表间 JOIN 操作复杂度显著提升。esProc 提供了一种高效解决方案,能够简化跨库 JOIN 的实现。例如,在车辆管理、交管和公民信息系统中,通过 esProc 可轻松完成如下任务:按城市统计有车公民事件数量、找出近一年获表彰的车主信息,以及按年份和品牌统计车辆违章次数。esProc 支持不同关联场景(如维表关联与主子表关联)的优化算法,如内存索引、游标处理和有序归并,从而大幅提升编码和运算效率。无论是同构还是异构数据源,esProc 均能灵活应对,为复杂数据分析提供强大支持。
|
12月前
|
SQL 存储 关系型数据库
第一篇:数据库基础与概念
这篇文档面向数据库初学者,系统介绍了数据库的基础概念、类型、管理工具及实践方法。内容涵盖数据库定义、应用场景(如电商、银行系统)、数据库管理系统(DBMS)的功能与常见系统(MySQL、PostgreSQL等),以及关系型与非关系型数据库的区别。同时,文章详细解析了基本术语(表、记录、字段、主键、外键)和ER图设计,并提供了实践建议,包括创建简单数据库、学习SQL语言、使用管理工具等。最后推荐了学习资源和书籍,鼓励读者通过实际项目巩固知识,逐步掌握数据库的核心技能。
1516 11
|
SQL 关系型数据库 MySQL
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL 数据库 SQL 语句调优方法详解(2-1)
本文深入介绍 MySQL 数据库 SQL 语句调优方法。涵盖分析查询执行计划,如使用 EXPLAIN 命令及理解关键指标;优化查询语句结构,包括避免子查询、减少函数使用、合理用索引列及避免 “OR”。还介绍了索引类型知识,如 B 树索引、哈希索引等。结合与 MySQL 数据库课程设计相关文章,强调 SQL 语句调优重要性。为提升数据库性能提供实用方法,适合数据库管理员和开发人员。
|
8月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
516 158