📜  DBMS关系分解

📅  最后修改于: 2020-12-12 03:07:45             🧑  作者: Mango

关系分解

  • 当关系模型中的关系不是适当的范式时,则需要分解关系。
  • 在数据库中,它将表分成多个表。
  • 如果该关系没有适当的分解,则可能导致诸如信息丢失之类的问题。
  • 分解用于消除不良设计的一些问题,例如异常,不一致和冗余。

分解类型

无损分解

  • 如果信息不因分解的关系而丢失,则分解将是无损的。
  • 无损分解保证关系的连接将产生与分解时相同的关系。
  • 如果所有分解的自然连接给出原始关系,则该关系被称为无损分解。

例:

EMPLOYEE_DEPARTMENT表:

EMP_ID EMP_NAME EMP_AGE EMP_CITY DEPT_ID DEPT_NAME
22 Denim 28 Mumbai 827 Sales
33 Alina 25 Delhi 438 Marketing
46 Stephan 30 Bangalore 869 Finance
52 Katherine 36 Mumbai 575 Production
60 Jack 40 Noida 678 Testing

上面的关系被分解为EMPLOYEE和DEPARTMENT两个关系

员工表:

EMP_ID EMP_NAME EMP_AGE EMP_CITY
22 Denim 28 Mumbai
33 Alina 25 Delhi
46 Stephan 30 Bangalore
52 Katherine 36 Mumbai
60 Jack 40 Noida

部门表

DEPT_ID EMP_ID DEPT_NAME
827 22 Sales
438 33 Marketing
869 46 Finance
575 52 Production
678 60 Testing

现在,当这两个关系在公共列“ EMP_ID”上联接时,结果关系将如下所示:

员工⋈部门

EMP_ID EMP_NAME EMP_AGE EMP_CITY DEPT_ID DEPT_NAME
22 Denim 28 Mumbai 827 Sales
33 Alina 25 Delhi 438 Marketing
46 Stephan 30 Bangalore 869 Finance
52 Katherine 36 Mumbai 575 Production
60 Jack 40 Noida 678 Testing

因此,分解是无损连接分解。

依存关系

  • 这是数据库的重要约束。
  • 在依赖关系保存中,至少一个分解表必须满足每个依赖关系。
  • 如果将关系R分解为关系R1和R2,则R的依存关系必须是R1或R2的一部分,或者必须可以从R1和R2的功能依存关系的组合派生而来。
  • 例如,假设存在具有功能依赖集(A-> BC)的关系R(A,B,C,D)。关系FD分解为R1(ABC)和R2(AD),因为FD A-> BC是关系R1(ABC)的一部分,因此保留了依存关系。