技术文章和资源

技术文章(时间排序)

热门类别

Python PHP MySQL JDBC Linux

DBMS 中的依赖关系类型

dbmsdatabasemysql

DBMS 中的依赖关系是两个或多个属性之间的关系。它在 DBMS 中具有以下类型 -

  • 功能依赖关系
  • 完全功能依赖关系
  • 传递依赖关系
  • 多值依赖关系
  • 部分依赖关系

让我们从功能依赖关系开始 -

功能依赖关系

如果表中存储的信息可以唯一地确定同一张表中的另一条信息,则称为功能依赖关系。将其视为同一关系的两个属性之间的关联。

如果 P 在功能上确定 Q,则

P -> Q

Let us see an example −

<Employee>

EmpIDEmpNameEmpAge
E01Amit28
E02Rohit31

在上表中,EmpName 在功能上依赖于EmpID ,因为对于给定的EmpID值,EmpName 只能取一个值:

EmpID -> EmpName

如下所示 -

完全功能依赖

如果一个属性在功能上依赖于另一个属性,而不是其任何真子集,则该属性完全功能依赖于该属性。

例如,如果属性 Q 在功能上依赖于 P,而不是 P 的任何真子集,则该属性完全功能依赖于另一个属性 P。

让我们看一个例子 -

<ProjectCost>

ProjectIDProjectCost
0011000
0025000

<EmployeeProject>

EmpIDProjectIDDays (spent on the project)
E099001320
E056002190

The above relations states:

EmpID, ProjectID, ProjectCost -> Days

但是,它不是完全功能依赖的。

而子集{EmpID, ProjectID} 可以轻松确定员工在项目上花费的 {Days}。

这总结并给出了我们完全功能依赖关系 −

{EmpID, ProjectID}  -> (Days)


传递依赖

当间接关系导致功能依赖时,它被称为传递依赖。

如果  P -> Q 且 Q -> R 为真,则 P-> R 是传递依赖。

多值依赖

当表中存在一行或多行意味着同一表中存在一行或多行时,就会发生多值依赖。

如果表具有属性 P、Q 和 R,则 Q 和 R 是 P 的多值事实。

它由双箭头表示 −

->->

对于我们的示例:

P->->QQ->->R

在上述情况下,仅当 Q 和 R 是独立属性时,才存在多值依赖关系。

部分依赖

部分依赖发生在非主属性在功能上依赖于候选键的一部分时。

第二范式 (2NF)消除了部分依赖性依赖关系。让我们看一个例子 -

<StudentProject>

StudentIDProjectNoStudentNameProjectName
S01199KatieGeo Location
S02120OllieCluster Exploration

在上表中,我们有部分依赖关系;让我们看看如何 -

主要关键属性是StudentID  ProjectNo.

如前所述,非主要属性,即StudentName ProjectName 应该在功能上依赖于候选键的一部分,即部分依赖。

StudentName 可以通过StudentID 确定,这使得关系部分依赖。

ProjectName 可以通过ProjectID确定,这使得关系部分依赖。


相关文章