如何分解我的数据和数据库?

时间:2015-04-16 10:33:39

标签: database

当我质疑"什么是分解时,我有点困惑?"和"如何分解数据库和数据?"

有人能否就上述问题给我一个明确的解释?

谢谢。

1 个答案:

答案 0 :(得分:1)

假设我们有一个架构,Lending-schema

Lending-schema = (bname, bcity, assets, cname, loan#, amount)

enter image description here

此关系中的元组t具有以下属性:

  

t [assets]是[bname]

的资产      

t [bcity]是t [bname]

的城市      

t [loan#]是分支t [bname]对t [cname]的贷款编号。

     

t [金额]是t [loan#]

的贷款金额

如果我们希望向我们的数据库添加贷款,我们需要一个包含Lending-schema所需的所有属性的元组。 因此我们需要插入

(SFU, Burnaby, 2M, Turner, L-31, 1K)

我们现在正在为每笔贷款重复资产和分行城市信息。 重复信息浪费空间。 重复信息会使更新变得复杂。

如果分支机构的资产发生变化,我们需要更改许多元组。

所以在分析了这个

之后
  
      
  • 我们知道分支机构恰好位于一个城市。
  •   
  • 我们也知道分行可以提供很多贷款。
  •   

另一个问题是我们无法代表分支机构(资产和城市)的信息,除非我们在该分支机构有一个贷款元组。

除非我们使用空值,否则我们只能在有贷款时获得此信息,并且必须在最后一笔贷款被清偿时将其删除。

所以如果我们分解成两个模式

Branch-customer-schema = (bname, bcity, assets, cname)

Customer-loan-schema = (cname, loan#, amount) 

Branch-customer-schema

customer-loan

这两个表是在分解主表后形成的。

Join of decomposed realations

简而言之:将表分成多个表是Decomposition。我们的分解应该是无损连接分解