我在考慮如何在數據結構中表示函數依賴關係。代表函數依賴關係的數據結構
功能降級(數據庫的關係模式)將一組屬性映射到一組屬性。例如。在{A,B} - > {C,d}的屬性C和d是有功能的依賴於A和B.
我能想到的四種可能的情況這裏:
- {A} - > {B}(兩個單一屬性)
- {A,B} - > {C}(一組屬性意味着一個屬性)
- {A} - > {B,C}屬性集合)
- {A,B} - > {C,D}(一組屬性意味着一組屬性)
我的第一種方法是簡單的兩個成員等級:
class attribute
{
string name;
set<attribute*> dependent_on;
}
這與像(1),但與(2)函數依賴工作 - (4) - 我想。 實際上,我可以分解(3),但我無法用這樣的類來表示(2)和(4)。
我要保持的信息是c 和 d是有功能的依賴於和 B,所以我將不得不使一個類似attributegroup
其中一組屬性被映射到一組屬性。例如: -
class attributegroup
{
set<attribute*> members;
set<attribute*> dependent_on;
}
因此,實際上我可以簡單地代表一個單獨的屬性爲attributegroup
只有一個成員。但我不認爲這是做這件事的最好方法。
任何幫助/想法讚賞:)
對於您建議的方法,您有哪些具體問題? –
我沒有特別的問題。我只是覺得可能會有更好的一個。通過我的方法,這將產生一個'set',這就像@DieterLücking提供的方法一樣,它實現了必須迭代所有'attributegroup'的算法。 –
好的 - 下一個問題:我們要做什麼而不必檢查所有'atributegroup's?我們需要知道後面想要實現的算法,以便說明啓用它們的數據結構應該是什麼樣子。 –