Свойство функциональных зависимостей
Если у меня есть отношение R со схемой S={A,B,C}, и я знаю, что A->B. Означает ли это, что A,C->B верно? Я знаю, что аксиома увеличения говорит мне, что A,C->B,C, но если два кортежа, t1 и t2, согласуются с A и C, они конкретно соглашаются с A, что подразумевает, что они согласятся с B. рассуждать хорошо? Есть ли более "формальный" способ сделать вывод?
2 ответа
Вы можете формально показать, что AC → B двумя разными способами.
Во-первых, самый простой способ, применяя аксиомы Армстронга:
1. A → B (given)
2. AC → A (by reflexivity)
3. AC → B (by transitivity from 2 and 1)
Во-вторых, доказав это.
Если A → B, то в каждом случае r из R ∀ t 1, t 2 ∈ r, t 1 [A] = t 2 [A] ⇒ t 1 [B] = t 2 [B]
Это означает, что в каждой паре кортежей с одинаковым значением A у вас одинаковое значение B. Другими словами, значение B зависит только от значения A. Таким образом, очевидно, что для каждого экземпляра r для R, 1 t 1, t 2 ∈ r, t 1 [AC] = t 2 [AC] ⇒ t 1 [B] = t 2 [B], учитывая, что кортежи совпадают на A.
Означает ли это, что A,C->B верно?
Да, это означает, что A,C->B. По увеличению вы показали, что A,C->B,C. A,C->B следует разложением. Также ваш аргумент верен.
Бывает, что если вы продолжаете пытаться применить каждое формальное правило, которое вам разрешено предполагать, ко всем FD, которые вы дали или сгенерировали до тех пор, пока ни одно правило не сгенерирует другой FD, то вы сгенерируете все FD, следующие из данного одни, а другие нет, т. е. те, которые держатся, когда данные принадлежат. Армстронги являются "здоровыми", потому что они генерируют только FD, которые держатся, если другие делают, и они "завершены", потому что они будут генерировать все из них.
На практике мы можем научиться интуитивно находить производные от FD.