数据库技术知识点(一)IDEFO需求建模方法、解释实体、实体型、实体集的区别(1)

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

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表定义代码如下:
-- 创建学生表


![img](https://img-blog.csdnimg.cn/img_convert/208f71249c226d1c4d2c8c1a4264ba96.png)
![img](https://img-blog.csdnimg.cn/img_convert/07fbbcffa7862d6540d707c61c30f360.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

的技术提升。**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 17
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值