找到给定函数依赖集的最小覆盖
Posted
技术标签:
【中文标题】找到给定函数依赖集的最小覆盖【英文标题】:finding the minimal cover of a given set of functional dependencies 【发布时间】:2014-07-05 20:06:28 【问题描述】:我有一组关系模式的函数依赖项,需要找到最小覆盖。我了解消除冗余线路的基本概念,但我正在努力完成它。完成此任务的最有效方法是什么?
这些是函数依赖:
client --> office
stock --> exchange, dividend
broker --> profile
company --> stock
client --> risk_profile, analyst
analyst --> broker
stock, broker --> investment, volume
stock --> company
investment --> commission, return
stock, broker --> client
account --> assets
【问题讨论】:
【参考方案1】:转换所有 FD,使任何 FD 的 RHS 仅包含单个属性
client --> office
stock --> exchange
stock --> dividend
broker --> profile
company --> stock
client --> risk_profile
client -->analyst
analyst --> broker
stock, broker --> investment
stock, broker --> volume
stock --> company
investment --> return
investment --> commission
stock, broker --> client
account --> assets
下一步是我们需要寻找 LHS 上的冗余属性
选择在 LHS 上具有 2 个或多于 2 个属性的 FD
1.stock, broker --> investment
从 LHS 中一次删除一个属性并计算剩余属性的 clouser,如果属性的 clouser 包含已删除的属性,那么您实际上可以删除该属性。
删除股票表格 1 并为经纪人计算 clouser
(broker)+ = broker,profile,investment,return ,commission
其中不包含库存,因此您无法删除库存
删除经纪人表格 1 并计算股票的 clouser
(stock)+ = stock,exchange,dividend,investment,return,commission,company
其中不包含代理,因此您无法删除代理
你可以为跟随 FD 玩同样的游戏
2.stock, broker --> volume
3.stock, broker --> client
对于 FD 3。您会发现可以删除经纪人,从而导致以下 FD
client --> office
stock --> exchange
stock --> dividend
broker --> profile
company --> stock
client --> risk_profile
client -->analyst
analyst --> broker
stock, broker --> investment
stock, broker --> volume
stock --> company
investment --> return
investment --> commission
stock --> client
account --> assets
最后一步是寻找冗余的 FD。 要检查形式为 X ---> Y 的 FD 是 X 的冗余计算 clouser 并检查它是否包含 Y,如果是这种情况,那么您可以安全地从最小覆盖集中删除 FD。如下图所示。
client --> office
计算客户端的clouser
(client)+ = client , risk_proflie,analyst,broker,profile
clouser 不包含办公室,因此您无法将其删除。 重复最后一步,你会发现没有FD可以被移除,因此最小覆盖集是
client --> office
stock --> exchange
stock --> dividend
broker --> profile
company --> stock
client --> risk_profile
client -->analyst
analyst --> broker
stock, broker --> investment
stock, broker --> volume
stock --> company
investment --> return
investment --> commission
stock --> client
account --> assets
【讨论】:
以上是关于找到给定函数依赖集的最小覆盖的主要内容,如果未能解决你的问题,请参考以下文章