DBMS关系分解

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

文章图片
无损分解
  • 如果信息不因分解的关系而丢失, 则分解将是无损的。
  • 无损分解保证关系的连接将产生与分解时相同的关系。
  • 如果所有分解的自然连接给出原始关系, 则该关系被称为无损分解。
例:
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
【DBMS关系分解】因此, 分解是无损连接分解。
依存关系
  • 这是数据库的重要约束。
  • 在依赖性保存中, 至少一个分解表必须满足每个依赖性。
  • 如果将关系R分解为关系R1和R2, 则R的依赖关系必须是R1或R2的一部分, 或者必须可以从R1和R2的功能依赖关系的组合派生而来。
  • 例如, 假设存在具有功能依赖项集(A-> BC)的关系R(A, B, C, D)。关系F分解为R1(ABC)和R2(AD), 这是依赖关系, 因为FD A-> BC是关系R1(ABC)的一部分。

    推荐阅读