-
Notifications
You must be signed in to change notification settings - Fork 2
Теория проектирования реляционных баз данных
Pandas edited this page Jan 9, 2018
·
9 revisions
- Дана переменная-отношение
R(A, B, C, D)
с функциональными зависимостямиS={A–>BC, B–>C, A–>B, AB–>C, AC–>D}
. Найти неприводимое множество функциональных зависимостей, эквивалентное данному множеству.
1. Перепишем так, чтобы каждая зависимость имела одноэлементную правую часть.
A -> B
A -> C
B -> C
A -> B (можно убрать, т.к. записана выше)
AB -> C
AC -> D (*)
2. A -> C ⇒ ( по правилу дополнения) A -> AC ⇒ (*) ⇒ A -> D
3. AB -> C м.б. убрана, т.к. дана зависимость A -> C ⇒ ( по правилу дополнения ) AB -> CB ⇒
( по правилу декомпозиции) AB -> C, AB -> B
4. Т.к. A -> B, B -> C, то A -> C можно опустить.
Ответ: A -> D, A -> B, B -> C
- Дано множество функциональных зависимостей
S={A–>B, BC–>DE, AEF–>G}
, имеющих место для переменной-отношенияR(A, B, C, D, E, F, G)
. Вычислить замыкание{A, C}+
для данного множества функциональных зависимостей. Подразумевается ли зависимостьACF–>DG
одной из функциональных зависимостей этого множества?
1) {A, C}+ = {A, B, C, D, E}.
2) ACF–>DG
𝑆 = {𝐴 → 𝐵(1),𝐵𝐶 → 𝐷𝐸(2),𝐴𝐸𝐹 → 𝐺(3)}
a. 𝐴→𝐵 => 𝐴𝐶→𝐵𝐶 => (2)𝐴𝐶→𝐷𝐸 => 𝐴𝐶𝐹→𝐷𝐸𝐹 => 𝐴𝐶𝐹→𝐷
b. 𝐴→𝐵 => 𝐴𝐶→𝐵𝐶 => (2)𝐴𝐶→𝐷𝐸 => 𝐴𝐶→𝐸=>𝐴𝐶𝐹→𝐴𝐸𝐹 => (3)𝐴𝐶𝐹→𝐺
c. 𝑎, 𝑏 => 𝐴𝐶𝐹→𝐷𝐺
Ответ: да.
- Эквивалентны ли два множества функциональных зависимостей
S1={A –>B, AB–>C, D–>AC, D–>E}
иS2={A–>BC, D–>AE}
, установленных для переменной-отношенияR(A, B, С, D, E)
?
Они эквивалентны. Пронумеруем функциональные зависимости из
множества S1 следующим образом.
1. A–>B
2. AB–>C
3. D–>AC
4. D–>E
Тогда строка 3 (по правилу декомпозиции) может быть заменена следующей строкой
3. D–>A и D–>C
Затем с помощью строки 1 можно придать строке 2 такой вид.
2. A–>C
Но поскольку теперь D–>A и A–>C, то (по правилу транзитивности)
это подразумевает D–>C, а в результате для строки 3 можно получить следующее выражение.
3. D–>A
Таким образом, первое множество функциональных зависимостей
эквивалентно следующему неприводимому множеству.
{A –>B, A–>C, D–>A, D–>E}
Множество S2={A–>BC, D–>AE} очевидно эквивалентно полученному
неприводимому множеству. Таким образом, эти множества эквивалентны.
- Найдите неприводимое покрытие множества функциональных зависимостей
S={AB–>C, C–>А, BC–>D, ACD–>B, BE–>C, CE–>FA, CF–>BD, D–>EF}
, заданных для переменной-отношенияR(A, B, C, D, E, F)
.
Аналогично (1)
AB -> C
C -> A
BC -> D
BE -> C
CE -> F
CF -> B
D -> E
D -> F
или
AB -> C
C -> A
BC -> D
CD -> B
CE -> F
BE -> C
CF -> D
D -> E
D -> F
- Пусть дана переменная-отношение
R(A, B, C, D, E, F, G, H, I, J)
, для которой выполняется множество функциональных зависимостейS={ABD–>E, AB–>G, B–>F, C–>J, CJ–>I, G–>H}
. Является ли это множество неприводимым? Какие потенциальные ключи существуют для данной переменной-отношения?
1) 𝐴𝐵𝐷→𝐸,
2) 𝐴𝐵→𝐺
3) 𝐵→𝐹
4) 𝐶→𝐽
5) 𝐶𝐽→𝐼
6) 𝐺→𝐻
4: 𝐶 → 𝐽 => 𝐶 → 𝐶𝐽 транзитивно с 5 => 𝐶 → 𝐼, заменяем 5 на 𝐶 → 𝐼
1) 𝐴𝐵𝐷→𝐸,
2) 𝐴𝐵→𝐺
3) 𝐵→𝐹
4) 𝐶→𝐽
5) 𝐶→𝐼
6) 𝐺→𝐻
Атрибуты, встречающиеся только в левой части: 𝐴, 𝐵, 𝐶, 𝐷 – (входят во все потенциальные ключи)
Атрибуты, встречающиеся только в правой части: 𝐸, 𝐹, 𝐻, 𝐼 (не входят в потенциальные ключи)
Атрибуты, не вошедшие в первые 2 группы: 𝐺
(A,𝐵,𝐶,𝐷)+ = {𝐴,𝐵,𝐶,𝐷,𝐸,𝐹,𝐺,𝐻,𝐼,𝐽}
Остальные подмножества атрибутов будут содержать в себе потенциальный ключ, то есть сами не будут являться потенциальными ключами.
Потенциальные ключи: (𝐴, B, 𝐶, 𝐷)
- Пусть дана переменная-отношение
R(A, B, C, D, E
), для которой выполняется множество функциональных зависимостейS={A–>B, BC–>E, ED–>A}
. Какие потенциальные ключи существуют для данной переменной-отношения? Находится ли переменная-отношение в 3NF? Находится ли переменная-отношение в BCNF? Ответ пояснить.
Атрибуты, встречающиеся только в левой части: C,D – (входят во все потенциальные ключи) Атрибуты, встречающиеся только в правой части: - (не входят в потенциальные ключи) Атрибуты, не вошедшие в первые 2 группы: A, B, E
(𝐶, 𝐷)+ = {𝐶, 𝐷}
(𝐴,𝐶,𝐷)+ = {𝐴,𝐵,𝐶,𝐷,𝐸}
(𝐵,𝐶,𝐷)+ = {𝐴,𝐵,𝐶,𝐷,𝐸}
(𝐶,𝐷,𝐸)+ = {𝐴,𝐵,𝐶,𝐷,𝐸}
Остальные подмножества атрибутов будут содержать в себе потенциальный ключ, то есть сами не будут являться потенциальными ключами.
Потенциальныеключи:(𝐴,𝐶,𝐷), (𝐵,𝐶,𝐷), (𝐶,𝐷,𝐸)
- Дана переменная-отношение
Homework_Result(Student_ID, Exercise_No, Points, Max_Points)
, для которой выполняется множество функциональных зависимостейS={{Student_ID, Exercise_No} –>Points, Exercise_No –>Max_Points}
. Какие потенциальные ключи существуют для данной переменной-отношения? Находится ли переменная-отношение в 3NF? Находится ли переменная-отношение в BCNF? Ответ пояснить.
Атрибуты, встречающиеся только в левой части: StudentID, ExerciseNo – (входят во все потенциальные ключи)
Атрибуты, встречающиеся только в правой части: Points, MaxPoints (не входят в потенциальные ключи)
Атрибуты, не вошедшие в первые 2 группы: -
(StudentID,ExerciseNo)+ ={StudentID,ExerciseNo,Points,MaxPoints}
Остальные подмножества атрибутов будут содержать в себе потенциальный ключ, то есть сами не будут являться потенциальными ключами.
Потенциальные ключи: (StudentID, ExerciseNo)
- Дано множество функциональных зависимостей
S={A–>BC, AC–>DE, D–>F, E–>AB}
, имеющих место для переменной-отношенияR(A, B, C, D, E, F)
. Вычислить замыкание{А}+
для данного множества функциональных зависимостей. Какие потенциальные ключи существуют для данной переменной-отношения?
Найдем неприводимое множество:
1) 𝐴→𝐵𝐶
2) 𝐴𝐶→𝐷𝐸
3) 𝐷→𝐹
4) 𝐸→𝐴𝐵
1) 𝐴→𝐵
2) 𝐴→𝐶
3) 𝐴𝐶→𝐷
4) 𝐴𝐶→𝐸
5) 𝐷→𝐹
6) 𝐸→𝐴
7) 𝐸→𝐵
Из 2: 𝐴 → 𝐶 => 𝐴 → 𝐴𝐶 транзитивно с 𝐴𝐶 → 𝐷 => 𝐴 → 𝐷 => заменяем 3 на 𝐴 → 𝐷 Из 2: 𝐴 → 𝐶 => 𝐴 → 𝐴𝐶 транзитивно с 𝐴𝐶 → 𝐸 => 𝐴 → 𝐸 => заменяем 4 на 𝐴 → 𝐸
1) 𝐴→𝐵
2) 𝐴→𝐶
3) 𝐴→𝐷
4) 𝐴→𝐸
5) 𝐷→𝐹
6) 𝐸→𝐴
7) 𝐸→𝐵
из 4 и 7 => 𝐴 → 𝐵, можно удалить 1
1) 𝐴→𝐶
2) 𝐴→𝐷
3) 𝐴→𝐸
4) 𝐷→𝐹
5) 𝐸→𝐴
6) 𝐸→𝐵
Атрибуты, встречающиеся только в левой части: - (входят во все потенциальные ключи)
Атрибуты, встречающиеся только в правой части: 𝐵, 𝐶, 𝐹 (не входят в потенциальные ключи)
Атрибуты, не вошедшие в первые 2 группы: 𝐴, 𝐷, 𝐸
Так как первая группа пуста, то перебираем все подмножества из третьей группы, начиная с наименее мощных:
(𝐴)+ = {A,B,𝐶,𝐷,𝐸,𝐹} (𝐷)+ = {𝐷, 𝐹}
(𝐸)+ = {𝐴,𝐵,𝐶,𝐷,𝐸,𝐹}
Остальные подмножества атрибутов будут содержать в себе потенциальный ключ, то есть сами не будут являться потенциальными ключами.
Потенциальные ключи: (𝐴), (𝐸)
- Дано множество функциональных зависимостей
S={AB–>C, CD–>E, C–>A, C–>D, D–>B}
, имеющих место для переменной-отношенияR(A, B, C, D, E)
. Какие потенциальные ключи существуют для данной переменной-отношения?
Найдем неприводимое множество:
1) 𝐴𝐵→𝐶
2) 𝐶𝐷→𝐸
3) 𝐶→𝐴
4) 𝐶 → 𝐷
5) 𝐷 → 𝐵
Из 2 и 4: 𝐶 → 𝐷 => 𝐶 → 𝐶𝐷 транзитивно с 𝐶𝐷 → 𝐸 => 𝐶 → 𝐸
1) 𝐴𝐵→𝐶
2) 𝐶→𝐸
3) 𝐶→𝐴
4) 𝐶→𝐷
5) 𝐷→𝐵
Атрибуты, встречающиеся только в левой части: - (входят во все потенциальные ключи)
Атрибуты, встречающиеся только в правой части: 𝐸 (не входят в потенциальные ключи)
Атрибуты, не вошедшие в первые 2 группы: 𝐴, 𝐵, 𝐶, 𝐷,
Так как первая группа пуста, то перебираем все подмножества из третьей группы, начиная с наименее мощных:
(𝐴)+ = {A} (𝐵)+ = {𝐵}
(𝐶)+ = {A,B,𝐶,𝐷,𝐸}
(𝐷)+ ={𝐵,𝐷}
(𝐴,𝐵)+ = {A,B,𝐶,𝐷,𝐸}
(𝐴,𝐷)+ = {A,B,𝐶,𝐷,𝐸}
(𝐵, 𝐷)+ = {B, 𝐷}
Остальные подмножества атрибутов будут содержать в себе потенциальный ключ, то есть сами не будут являться потенциальными ключами.
Потенциальные ключи: (𝐶), (𝐴, 𝐵), (𝐴, 𝐷)
- Дана переменная-отношение
NADDR (NAME , STREET, CITY, STATE, ZIP)
, где каждому индексу соответствует только один город и штат, а каждой улице, городу и штату соответствует только один индекс. Найдите неприводимое множество функциональных зависимостей дляNADDR
. Какие потенциальные ключи существуют дляNADDR
?
NAME (N) , STREET (R), CITY (C), STATE (T) , ZIP (Z)
1. N -> RCT
2. RCT -> Z
3.Z -> CT
Эквивалентное неприводимое множество:
N -> R
N -> C
N -> T
RCT -> Z
Z -> C
Z -> T
Атрибуты, встречающиеся только в левой части: N (входят во все потенциальные ключи)
Атрибуты, встречающиеся только в правой части: − (не входят в потенциальные ключи)
Атрибуты, не вошедшие в первые 2 группы: 𝑅, 𝐶, 𝑇, 𝑍
(𝑁)+ = {N,𝑅,𝐶,𝑇,𝑍}
Остальные подмножества атрибутов будут содержать в себе потенциальный ключ, то есть сами не будут являться потенциальными ключами.
Потенциальные ключи: (𝑁)
- Дано множество функциональных зависимостей
S={A–>BC, B–>E, CD–>EF}
, имеющих место для переменной-отношенияR(A, B, C, D, E, F)
. Выполняется ли функциональная зависимостьAD–>F
для переменной-отношенияR
? Ответ пояснить.
1. A–>BC (дано)
2. A–>C (следует из п. 1 согласно правилу декомпозиции)
3. AD–>CD (следует из п. 2 согласно правилу дополнения)
4. CD–>EF (дано)
5. AD–> EF (следует из п. 3 и 4 согласно правилу транзитивности)
6. AD–> F (следует из п. 5 согласно правилу декомпозиции)
- Дано множество функциональных зависимостей
S={A->B, CH->A, B->E, BD->C, EG->H, DE->F}
, имеющих место для переменной-отношенияR(A, B, C, D, E, F, G, H)
. Выполняются ли функциональные зависимостиBFG–>AE, ACG– DH, CEG–>AB
для переменной-отношенияR
? Ответ пояснить.
1. BFG–>AE???
Нет: {BFG}+ = BFGEH, которое содержит E, но не содержит A
2. ACG–>DH???
Нет: {ACG}+ = ACGBE, которое не содержит ни D ни H.
3. CEG–>AB???
Да: {CEG}+ = CEGHAB, которое содержит AB.
- Дана переменная-отношение
R(A, B, C, D, E)
, для которой выполняется множество функциональных зависимостейS={AB–>DE, C–>E, D–>C, E–>A}
. В результате декомпозиции получена переменная-отношениеR1(A, B, C)
. Какие функциональные зависимости изS
будут выполняться дляR1
? Ответ пояснить.
Необходимо вычислить замыкания всех подмножеств множества {A, B, C}, кроме пустого множества и ABC. Затем, не учитывая функциональные зависимости, которые являются тривиальными и те, которые имеют D или E в правой части, получим искомое множество.
A+ = A
B+ = B
C+ = CEA {C->E, E->A}
AB+ = ABDEC {AB->DE, D->C}
AC+ = ACE {C->E}
BC+ = BCEAD {C->E, E->A, AB->DE}
Не учитываем D и E.
Искомое множество функциональных зависимостей: {C->A, AB->C, BC->A}
(замечание: BC->A можно не учитывать, так как эта функциональная зависимость логически следует из C->A)
- Дана переменная-отношение
R(A, B, C, D, E, F, G)
, для которой выполняется множество функциональных зависимостейS={AB–>C, CD–>E, EF–>G, FG–>E, DE–>C, BC–>A}
. Будут ли группы атрибутовBDF
,ACDF
,ABDFG
,BDFG
потенциальными ключами дляR
? Ответ пояснить.
1. BDF ???
Нет: BDF+ = BDF
2. ACDF ???
Нет: ACDF+ = ACDFEG (Замыкание не включает B)
3. ABDFG ???
Нет: This choice is a superkey, but it has proper subsets that are also keys (e.g. BDFG+ = BDFGECA) 4. BDFG ???
BDFG+ = ABCDEFG
Check if any subset of BDFG is a key:
Since B, D, F never appear on the RHS of the FDs, they must form part of the key.
BDF+ = BDF <- Not key
So, BDFG is the minimal key, hence the candidate key
- Дана переменная-отношение
R(A, B, C, D, E, F, G, H)
, для которой выполняется множество функциональных зависимостейS={CD–>A, EC–>H, GHB–>AB, C–>D, EG–>A, H–>B, BE–>CD, EC–>B}
. Найти все потенциальные ключи дляR
.
Во-первых, мы замечаем что:
EFG никогда не появляются на RHS никакого FD. Так, EFG должен быть частью ЛЮБОГО ключа R Никогда не появляется на LHS никакого FD, но появляется на RHS некоторого FD. Так, A не часть НИКАКОГО ключа R
Мы теперь видим, является ли EFG самостоятельно ключом ...
EFG + = EFGA? R; Так, один только EFG не ключевой
Проверение добавления единственного признака с EFG (кроме A):
BEFG + = ABCDEFGH = R; это - ключ [BE>CD, EG>A, EC>H]
CEFG + = ABCDEFGH = R; это - ключ [[EG>A, EC>H, H>B, BE>CD]
DEFG + = ADEFG? R; это не ключ [EG>A]
EFGH + = ABCDEFGH = R; это - ключ [EG>A, H>B, BE>CD]
Если мы добавим дальнейший признак (и), то они сформируют суперключ. Поэтому, мы можем прекратить здесь искать возможный ключ (и).
Поэтому, возможные ключи: {BEFG, CEFG, EFGH}
- Дана переменная-отношение
R(A, B, C, D, E, F, G)
, для которой выполняется множество функциональных зависимостейS={ABC–>DE, AB–>D, DE–>ABCF, E–>C}
. Найти все потенциальные ключи дляR
.
Во-первых, мы замечаем что:
G никогда не появляется на RHS никакого FD. Так, G должен быть частью ЛЮБОГО ключа R.
F никогда не появляется на LHS никакого FD, но появляется на RHS некоторого FD. Так, F не часть НИКАКОГО ключа R
G+ = G? R Так, G один не ключ!
Теперь мы пытаемся найти ключи, добавляя больше признаков (кроме F) к G
Добавьте LHS FDs, у которых есть только один признак (E in E>C):
GE+ = GEC ? R
Добавьте LHS FDs, у которых есть два признака (AB в AB>D and DE in DE>ABCF):
GAB+ = GABD
GDE+ = ABCDEFG = R; [DE>ABCF] Это - ключ!
Добавьте LHS FDs, у которых есть три признака (ABC в ABC>DE), но не взятие супер набора GDE: GABC + = ABCDEFG = R; [ABC>DE, DE>ABCF] Это - ключ!
GABE + = ABCDEFG = R; [AB>D, DE>ABCF] Это - ключ!
Если мы добавим дальнейший признак (и), то они сформируют суперключ. Поэтому, мы можем остановиться здесь.
Возможный ключ (и) - {GDE, GABC, GABE}
- Дана переменная-отношение
DB(PatNo, PatName, AppNo, Time, Doctor)
с первичным ключомPK={PatNo, AppNo}
, для которой выполняется множество функциональных зависимостейS={PatNo–>PatName, {PatNo, AppNo}–>{Time, Doctor}, Time–>AppNo}
. Показать этапы преобразования переменной-отношенияDB
в BCNF.
1.1NF Устраняет повторяющиеся группы.
Ничего:(None:?) DB(PatNo,PatName,AppNo,Time,Doctor)
2. 2NF Устраняют частичные ключевые зависимости DB(PatNo,AppNo,Time,Doctor)
R1 (PatNo, PatName)
3. 3NF Устраняют переходные зависимости
Ничего:(None:?) таким образом, так же, как 2NF
4. BCNF Каждый детерминант является возможным ключом DB(PatNo,appNo,Time,Doctor)
R1 (PatNo, PatName)
- Пройдите весь determinates(определенный), где ВСЕ признаки левой руки присутствуют в отношении,
и ПО КРАЙНЕЙ МЕРЕ ОДИН из правых признаков также присутствуют в отношении.
- PatNo -> PatName
PatNo присутствует в DB, но не PatName, таким образом, не релевантный.
- PatNo, AppNo -> Time, Doctor
Весь подарок LHS, и время и доктор также представляет, настолько релевантный.
Действительно ли это - возможный ключ?
Patno, appNo ЯВЛЯЕТСЯ ключом, таким образом, это - возможный ключ.
Таким образом это хорошо для соблюдения BCNF.
- Time -> AppNo
Время присутствует, и так является appNo, настолько релевантным.
Это возможный ключ.
Если бы это было тогда, то мы могли бы переписать DB как:
DB(PatNo, AppNo, Time, Doctor)
Это не будет работать, поскольку Вам требуются и время и в Patno вместе, чтобы сформировать уникальный ключ.
Таким образом это определенное не является возможным ключом,
и поэтому DB не находится в BCNF.
Мы должны фиксировать это.
- BCNF: перепишите к
DB(PatNo, Time, Doctor) PK = {PatNo, Time} R1(PatNo, PatName) PK = PatNo
R2(Time, AppNo) PK = Time
Времени достаточно, чтобы решить число назначения пациента.
Теперь BCNF удовлетворен, и заключительные показанные отношения находятся в BCNF.
- Дана переменная-отношение
GradeReport(StudNo, StudName, (Major, Adviser, (CourseNo, Ctitle, InstrucName, InstructLocn, Grade)))
, для которой выполняется множество функциональных зависимостейS={StudNo–>StudName, CourseNo–>{Ctitle, InstrucName}, InstrucName–>InstrucLocn, {StudNo, CourseNo, Major}–>Grade, {StudNo, Major}–>Advisor, Advisor–>Major}
. Показать этапы преобразования переменной-отношенияGradeReport
в BCNF.
1. Ненормализованный
Grade_report(StudNo,StudName,(Major,Advisor,(CourseNo,Ctitle,InstrucName,InstructLocn,Grade)))
2. 1NF Удаляет повторяющиеся группы
Student(StudNo,StudName)
StudMajor(StudNo,Major,Advisor)
StudCourse(StudNo,Major,CourseNo,Ctitle,InstrucName,InstructLocn,Grade)
3. 2NF Удаляют частичные ключевые зависимости
Student(StudNo,StudName)
StudMajor(StudNo,Major,Advisor)
StudCourse(StudNo,Major,CourseNo,Grade)
Course(CourseNo,Ctitle,InstrucName,InstructLocn)
4. 3NF Удаляют переходные зависимости
Student(StudNo,StudName)
StudMajor(StudNo,Major,Advisor)
StudCourse(StudNo,Major,CourseNo,Grade)
Course(CourseNo,Ctitle,InstrucName)
Instructor(InstructName,InstructLocn))
5. BCNF Каждый детерминант является возможным ключом
Student : только детерминант - StudNo
StudCourse: только детерминант - StudNo,Major
StudCourse: только детерминант - CourseNo
Instructor: только детерминант - InstrucName
StudMajor: детерминанты StudNo,Major, или Adviser
Только StudNo, Major является возможным ключом.
6. BCNF
Student(StudNo,StudName)
StudCourse(StudNo,Major,CourseNo,Grade)
Course(CourseNo,Ctitle,InstrucName)
Instructor(InstructName,InstructLocn)
StudMajor(StudNo,Advisor)
Adviser(Adviser,Major)
- Дано множество функциональных зависимостей
S={AB–>C, BC–>AD, D–>E, CF–>B}
, имеющих место для переменной-отношенияR(A, B, C, D, E, F)
. Выполняются ли функциональные зависимостиAB–>D
иD–>A
для переменной-отношенияR
? Ответ пояснить.
Предположим, что мы хотим проверить ли AB -> D
следует из набора зависимостей.
Да! С тех пор D в {A, B, C, D, E} = {A, B} +.
Повторения:
X = {A, B} Использование: AB -> C
X = {A, B, C} Использование: BC -> AD
X = {A, B, C, D} Использование: D -> E
X = {A, B, C, D, E} больше изменений X не возможно так X = {A, B} +.
С другой стороны, рассмотрите тестирование FD: D -> A
Сначала вычислите {D} +. Первоначально мы имеем X = {D}. Тогда мы можем использовать данный D -> E, и X становится {D, E}. Но здесь мы застреваем, мы достигли закрытия.
Так {D} + = {D, E} и не в {D} +.
Завершая D -> A не следует из данного набора зависимостей.
- Дана переменная-отношение
R(A, B, C, D)
, для которой выполняется множество функциональных зависимостейS={AB–>C, C–>D, D–>A}
. Найти все потенциальные ключи дляR
.
Let R be a relational schema R(A, B, C, D). Simple set of FD = {AB -> C, C -> D, D -> A}. Aim to find all keys (minimal superkeys), Calculate singletons
A+, B+, C+, D+,
AB+, AC+, AD+, BC+, BD+, CD+
ABC+, ABD+, BCD+ ABCD+
1.Singletons A+ -> A
B+ -> B
C+ -> CDA D+ -> AD
2.Pairs (note commutative) AB+ -> ABCD
AC+ -> ACD AD+ -> AD BC+ -> ABCD BD+ -> ABCD CD+ -> ACD
3.Triples
ABC+ -> ABCD ABD+ -> ABCD BCD+ -> ABCD
4.Quadruples ABCD+ -> ABCD
Superkeys:
AB, BC, BD, ABC, ABD, BCD, ABCD Minimal superkeys (keys)
AB, BC, BD
- Найдите неприводимое покрытие множества функциональных зависимостей
S={A–>BC, B–>C, A–>B, AB–>C}
, заданных для переменной-отношенияR(A, B, C, D, E, F)
.
Combine A -> BC and A -> B into A -> BC
Set is now {A -> BC, B -> C, AB -> C}
A is extraneous in AB -> C because of B -> C.
Set is now {A -> BC, B -> C}
C is extraneous in A -> BC because of A -> B and B -> C.
The canonical cover is: A -> B, B -> C
- Дана переменная-отношение
R(A, B, C, D, E)
, для которой выполняется множество функциональных зависимостейS={AB–>DE, C–>E, D–>C, E–>A}
. В результате декомпозиции получена переменная-отношениеR1(A, B, C)
. Какие функциональные зависимости будут выполняться дляR1
? Ответ пояснить.
R = {A, B, C, D, E}
F = {AB->DE, C->E, D->C, E->A}
S={A, B, C}
A+ = A
B+ = B
C+ = CEA [C->E, E->A]
AB+ = ABDEC [AB->DE, D->C]
AC+ = ACE [C->E]
BC+ = BCEAD [C->E, E->A, AB->DE]
We ignore D and E.
So, the FDs that hold in S are:
{C->A, AB->C, BC->A}
(Note: BC->A can be ignored because it follows logically from C->A)
Рассмотрите R = {A, B, C, D, E} с рядом FDs F = {AB->DE, C->E, D->C, E->A} И мы хотим спроектировать те FDs на отношение S = {A, B, C}
Дайте FDs, которые держатся в S
Намек:
Мы должны вычислить закрытие всех подмножеств {A, B, C}, кроме пустого набора и ABC. Затем мы игнорируем FD’s, которые тривиальны и те, у которых есть D или E на RHS
Решение
Вычисление F + для подотношения
R = {A, B, C, D, E}
F = {AB->DE, C->E, D->C, E->A}
S={A, B, C}
A+ = A
B+ = B
C+ = CEA [C->E, E->A]
AB+ = ABDEC [AB->DE, D->C]
AC+ = ACE [C->E]
BC+ = BCEAD [C->E, E->A, AB->DE]
Мы игнорируем D и E.
Так, FDs, которые держатся в S:
{C->A, AB->C, BC->A}
(Примечание: BC->A может быть проигнорирован, потому что он следует логически от C->A)
- Найдите неприводимое покрытие множества функциональных зависимостей
S={AB–>D, B–>C, AE–>B, A–>D, D–>EF}
, заданных для переменной-отношенияR(A, B, C, D, E, F)
.
Используя алгоритм минимального покрытия, найдите минимальное покрытие
𝐹 = {𝐴𝐵→𝐷,𝐵→𝐶,𝐴𝐸→𝐵,𝐴→𝐷,𝐷→𝐸𝐹}
Шаг 1. Сделайте правые стороны атомными - 𝐺 = {𝐴𝐵 → 𝐷, 𝐵 → 𝐶, 𝐴𝐸 → 𝐵, 𝐴 → 𝐷, 𝐷 → 𝐸, 𝐷 → 𝐹}
Шаг 2. Удалите избыточные функциональные зависимости:
Для 𝐴𝐵 → 𝐷 вычисляют 𝐴𝐵+ исключая из 𝐺 зависимость 𝐴𝐵 → 𝐷
𝐴𝐵+ = ABCDEF
𝐷 входит в 𝐴𝐵+, поэтому удалите 𝐴𝐵 → 𝐷 из 𝐺
𝐺 = {𝐵→𝐶,𝐴𝐸→𝐵,𝐴→𝐷,𝐷→𝐸,𝐷→𝐹}
Для 𝐵 → 𝐶 вычисляют 𝐵+ исключая из 𝐺 зависимость 𝐵 → 𝐶: 𝐵+ = 𝐵
𝐶 не входит в𝐵+ => 𝐺 = {𝐵→𝐶,𝐴𝐸→𝐵,𝐴→𝐷,𝐷→𝐸,𝐷→𝐹}
Для 𝐴𝐸 → 𝐵 вычисляют 𝐴𝐸+ исключая из 𝐺 зависимость 𝐴𝐸 → 𝐵: 𝐴𝐸+ = 𝐴𝐸𝐷𝐹
𝐵 не входит в𝐴𝐸+ => 𝐺 = {𝐵→𝐶,𝐴𝐸→𝐵,𝐴→𝐷,𝐷→𝐸,𝐷→𝐹} Для A→ 𝐷 вычисляют 𝐴+ исключая из 𝐺 зависимость 𝐴 → 𝐷: 𝐴+ = 𝐴
𝐷 не входит в𝐴+ => 𝐺 = {𝐵→𝐶,𝐴𝐸→𝐵,𝐴→𝐷,𝐷→𝐸,𝐷→𝐹} Для D→ 𝐸 вычисляют 𝐷+ исключая из 𝐺 зависимость 𝐷 → 𝐸: 𝐷+ = 𝐷𝐹
𝐸 не входит в𝐷+ => 𝐺 = {𝐵→𝐶,𝐴𝐸→𝐵,𝐴→𝐷,𝐷→𝐸,𝐷→𝐹}
Для D→ 𝐹 вычисляют 𝐷+ исключая из 𝐺 зависимость 𝐷 → 𝐹: 𝐷+ = 𝐷𝐸 𝐹невходит в𝐷+ => 𝐺 = {𝐵→𝐶,𝐴𝐸→𝐵,𝐴→𝐷,𝐷→𝐸,𝐷→𝐹}
Шаг 3. Удалите все избыточные признаки с левой стороны ФЗ
𝐺 = {𝐵→𝐶,𝐴𝐸→𝐵,𝐴→𝐷,𝐷→𝐸,𝐷→𝐹}
Для 𝐴𝐸 → 𝐵
Для 𝐴: вычислите 𝐸+ исключив из 𝐺 𝐴𝐸 → 𝐵 и добавив 𝐸 → 𝐵
𝐸+ with {𝐵 → 𝐶, 𝐸 → 𝐵, 𝐴 → 𝐷, 𝐷 → 𝐸, 𝐷 → 𝐹} = 𝐸𝐵𝐶 => не содержит A, таким образом, А не избыточный атрибут в 𝐴𝐸 → 𝐵
Для 𝐸: вычислите 𝐴+ исключив из 𝐺 𝐴𝐸 → 𝐵 и добавив 𝐴 → 𝐵
𝐴+ with {𝐵 → 𝐶, 𝐴 → 𝐵, 𝐴 → 𝐷, 𝐷 → 𝐸, 𝐷 → 𝐹} = 𝐴𝐵𝐶𝐷𝐸𝐹 => содержит 𝐸, таким образом, 𝐸 избыточный атрибут в 𝐴𝐸 → 𝐵
Минимальное покрытие = {𝐵 → 𝐶,𝐴 → 𝐵,𝐴 → 𝐷,𝐷 → 𝐸,𝐷 → 𝐹}
- Дана переменная-отношение
R(A, B, C, D, E, G, H, I)
, для которой выполняется множество функциональных зависимостейS={H–>GD, E–>D, HD–>CE, BD–>A}
. Показать этапы преобразования переменной-отношенияR
в BCNF.
Consider R(ABCDEGHI) and the following set F of functional dependencies: H->GD, E->D, HD->CE, BD- >A
(a) Find a join loss-less, dependency preserving and 3NF decomposition of R.
(b) Indicate whether your database schema is in BCNF with respect to F. Explain. [10]
Solution:
(a) We first find a minimal cover of the FDs, as shown below. Right reduced Left Reduced Minimal Cover
H !G
H !D
E !D
HD ! C
HD ! E
BD ! A
H !G
H !D
E !D
H !C
H !E
BD ! A
H !G
E !D
H !C
H !E
BD ! A
Then construct a database D0(HGCE;ED;BDA).
Now, we need to check if D0 contains any candidate key.
Since no FD in the minimal cover above contains H, B, or I in its right side, any candidate key shall contain these three attributes.
Further, it is not dificult to check that HBI is indeed a candidate key. Therefore, HBI is the only candidate key of R, and shall be added to D0.
Hence,
D(HGCE;ED;BDA;HBI)
is a join loss-less, dependency preserving and 3NF decomposition of R.
(b) D is in BCNF since all the non-trivial FDs X ! A in held in any relation Ri 2 D, X is a key of Ri.
- Эквивалентны ли два множества функциональных зависимостей
F={A->C, AC->D, E->AD, E->H}
иG={A->CD, E->AH}
, установленных для переменной-отношенияR(A, С, D, E, H)
?
Они эквивалентны. Пронумеруем функциональные зависимости из множества F следующим образом.
1. A–>C
2. AC–>D
3. E–>AD
4. E->H
Из строчки 3 следует: E->A, E->D.
Из строчек 1,2 следует: A->D (через A->AC в 1 строчке)
Т.к. E->A и E->H (4 строчка), то E->AH
Т.к. A->D и A->C (1 строчка), то A->CD
- Рассматривается универсальное отношение
R=(A, B, C, D, E, F, G, H, I, J)
и множество функциональных зависимостейF={AB->C, A->DE, B->F, F->GH, D->IJ}
. Какие потенциальные ключи существуют для данного отношения? ДекомпозируйтеR
в 2NF, а затем в 3NF.
1. AB->C
2. A->DE
3. B->F
4. F->GH
5. D->IJ
Из строчки 2 следует: A->D (=> (5) A->I, A->J), A->E.
Из строчек 3,4 следует: B->GH => B->G, B->H
1. AB->C
2. A->E
3. B->G
4. B->H
5. A->I
6. A->J
Потенциальные ключи: (A, B)
- Рассматривается универсальное отношение
R=(A, B, C, D, E, F, G, H, I, J}
и множество функциональных зависимостейF={AB->C, BD->EF, AD->GH, A->I, H->J}
. Какие потенциальные ключи существуют для данного отношения? ДекомпозируйтеR
в 2NF, а затем в 3NF.
1. AB->C
2. BD->EF
3. AD->GH
4. A->I
5. H->J
Из строчки 2: BD->E, BD->F
Из строчки 3: AD->G, AD->H (=> (5) AD->J
1. AB->C
2. BD->E
3. BD->F
4. AВ->G
5. AB->J
Первичные ключи:
-
Найдите каноническое покрытие для множества функциональных зависимостей
S={A->BC, B->C, AB->D, AC->D}
, заданных для переменной-отношенияR(A, B, C, D)
. -
Найдите каноническое покрытие для множества функциональных зависимостей
S={A->B, ABCD->E, EF->GH, ACDF->EG}
, заданных для переменной-отношенияR(A, B, C, D, E, F, G, H)
. -
Рассматривается переменная-отношение
R(A, B, C, D, E)
и множество функциональных зависимостейF = {A->BC, BC->A, BCD->E, E->C}
. Является ли множествоF
минимальным покрытием самого себя? Найдите 3NF декомпозицию переменной-отношенияR
и ответьте на вопрос: является ли эта декомпозиция одновременно и BCNF декомпозицией?
- Найдите неприводимое покрытие множества функциональных зависимостей E={B->A, D->A, AB->D}, заданных для переменной-отношения R(A, B, C, D).
1. B->A
2. D->A
3. AB->D
Дополняем (2) до BD -> AB.
Из (3) BD->D => B->D.
Из (1) B->A
Минимальное покрытие: E' = {B->D, D->A}