powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Выполнить преобразование отношения в набор НФБК отношений
57 сообщений из 57, показаны все 3 страниц
Выполнить преобразование отношения в набор НФБК отношений
    #38999787
Nkey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Есть задание: Дан набор функциональных зависимостей. Выполнить преобразование отношения в набор НФБК – отношений.
Проблема с определением возможного ключа, выделил как A, CD. Но скорее всего не верно..
Отношения получились:
r1( B ,E)
r1( B ,E)
r1( B ,E)
r1( B ,E)
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #38999788
Nkey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
r1( B ,E)
r2(B,F,A,C,D)
r3( B ,F)
r4(B,A,C,D)
Сообщение чего-то раньше времени отправилось.
Прошу помочь, как верно сделать.
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39000734
Nkey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ключом будет являться A и CD? Но тогда НФБК не будет...
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39000944
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NkeyЗдравствуйте.
Есть задание: Дан набор функциональных зависимостей. Выполнить преобразование отношения в набор НФБК – отношений.
Проблема с определением возможного ключа, выделил как A, CD. Но скорее всего не верно..
Отношения получились:
r1( B ,E)
r1( B ,E)
r1( B ,E)
r1( B ,E)

Есть транзитивная зависимость B от A через СD. нарушена НФБК.
Устранение дает отношения
r1(A,С,D)
r2(С,D,B,E,F)
но во втором есть транзитивная зависимость
E и А ОТ CD через В
Устраним:
r2(С,D,B)
r3(B,E,F)

Окончательно:
r1(A,С,D)
r2(С,D,B)
r3(B,E,F)

При их естественном соединении получается исходное без потерь информации.
Но все они не имеют транзитивных зависимостей: находятся в НФБК.
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39000964
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон, я ошибся. Не правильно посмотрел картинку. Подловил Ваш препад на невнимательность (будьте с ним осторожны). Там не A->CD, а А->C.
тогда на самом деле AD ключ (аксиома псевдотранзитивность A->C, CD->B влечет AD->B):
Тогда транзитивная зависимость В от AD через СD (а не B от A через СD как я написал первоначально)
Устранение дает отношения
r1(A,С,D)
r2(С,D, B,E,F)
но во втрорм есть транзитивея зависимость
E и А ОТ CD через В
Устраним:
r2(С,D,B)
r3(B,E,F)

Оконательно:
r1(A,С,D)
r2(С,D,B)
r3(B,E,F)

При их естественном соединении получается исходное без потерь информации.
Но все они не имеют транзитивных зависимостей: находятся в НФБК.
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39000967
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уточнение: E и F тем более транзитивно зависят от AD через CD. Потому может быть произведена первая декомпозиция без потерь информации (при соединении).
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39000968
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опечатка:
Вместо
но во втрорм есть транзитивея зависимость
E и А ОТ CD через В

Следует читать
но во втрорм есть транзитивея зависимость
E и F ОТ CD через В.

Жаль что нельзя править свои тексты на форуме.
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39000970
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опять просмотрел. Блин. Ну препад - реально на невнимательность может отловить.
в r1(A,С,D) есть транзитивная зависимость С от АD через A.
Декомпозиция:

r1(A,D)
r2(A,С)
Оконательно:

r1(A,D)
r2(A,С)
r3(С,D,B)
r4(B,E,F)
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39000989
Nkey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vadiminfoОпять просмотрел. Блин. Ну препад - реально на невнимательность может отловить.
в r1(A,С,D) есть транзитивная зависимость С от АD через A.
Декомпозиция:

r1(A,D)
r2(A,С)
Оконательно:

r1(A,D)
r2(A,С)
r3(С,D,B)
r4(B,E,F)

А разве правильно не с конца удалять избыточные зависимости, а не с начала?
И смотрю, вроде, Вы по правилу синтеза сделали, я по цепочке делал, что в случае данного ключа не уместно.
Спасибо за ответ. Но разве не так будет:
r1(B,F)
r2(B,E)
r3(C,D,B)
r4(A,D)
r5(A,C) ?
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39001021
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nkey....
Но разве не так будет:
r1(B,F)
r2(B,E)
r3(C,D,B)
r4(A,D)
r5(A,C) ?
Но что дает:
r1(B,F)
r2(B,E)?

Они конечно соединяется без потерь в
r4(B,F,E).

Но r4(B,F,E) не содержит транзитивных зависимостей и потому находится в НФБК.
В обоих отношениях
r1(B,F)
r2(B,E)
будет всегда столько же записей сколько в r4(B,F,E) равное мощности B. Ну сюда тогда можно прибавить и r6(B,B) в принципе.

Однако, очевидно, что оптимальнее будет схема при меньшем числе отношений при прочих равных условиях (НФБК в данном случае).

Судите сами. У вас есть одна таблица из ста колонок с одним ключем. Ну ее можно разбить на 100 бинанарных таблиц ключ и один и атрибутов.
Так что очень сомневаюсь в целесообразности декомпозиции r4(B,F,E) на
r1(B,F)
r2(B,E)
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39004877
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nkey,

R1 ( [A], C)
R2 ([C,D], B)
R3 ([B], E, F)

В квадратных скобках первичные ключи.
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39004951
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*PlusNkey,

R1 ( [A], C)
R2 ([C,D], B)
R3 ([B], E, F)

В квадратных скобках первичные ключи.
Но ведь тогда, вроде, возможна ситуация:

Исходная
A C D B E F
1 1 1 1 1 1
2 1 3 1 1 1

В ней есть все требуемые ФЗ.

Тогда декомпозиция по Вашей схеме:

A C
1 1
2 1

C D B
1 1 1
1 3 1


B E F
1 1 1

Теперь соединим обратно и получим:

A C D B E F
1 1 1 1 1 1
2 1 1 1 1 1
1 1 3 1 1 1
2 1 3 1 1 1

Которая не равна исходной, Т.е. потеря информации.
Ведь, от С ничего не зависит, а Ваша схема предполагает соединение по нему.
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39004954
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя это не относится к требованиям задачи, тем более речь идет о НФБК. Но раз Вы выделили ключи, то можно замтить: Вашей схеме нельзя навязать ФЗ - все зависит от AD. Так как этой пары нет ни в одной схеме и ее нельзя поэтому объявить ключом.

.
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39005334
Nkey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне всё же кажется, что ключом будет AD.
Отношения:
r1([B],E,F)
r2([C,D],B)
r3([A,D],C).
Для вашего случая r3(A,D) и r4(A,C) сделал таблицу и не сошлось...

ACD
111
212
122
211

AC AD
11 11
21 22
12 12
22 21

ACD
111
112
121
122
212
211
222
221
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39005338
Nkey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vadiminfoОпять просмотрел. Блин. Ну препад - реально на невнимательность может отловить.
в r1(A,С,D) есть транзитивная зависимость С от АD через A.
Разве там есть транзитивная? Тогда уж могла быть по пополнению AD->C, но ее нет..
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39005353
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NkeyvadiminfoОпять просмотрел. Блин. Ну препад - реально на невнимательность может отловить.
в r1(A,С,D) есть транзитивная зависимость С от АD через A.
Разве там есть транзитивная? Тогда уж могла быть по пополнению AD->C, но ее нет..


AD->A (пополнение), A->C (задано). И AD не зависит от А. Это означает транзитивную зависимость C от AD.

(Тут, на самом деле, и нарушение даже 2НФ. Частичная зависимость С от AD).

Пример, избыточности ADC:

111
121

В первой записи мы узнали, что А = 1 соответствует С = 1.
Во второй записи, мы уже зная это вынуждены повторно занести известную информацию (поскольку A->C, означает, что должно быть то же самое).
Теперь если выяснится, что A = 1 соответствует С = 2, то придется менять в двух местах (проблема контроля избыточности).
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39005360
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NkeyМне всё же кажется, что ключом будет AD.

Так это не кажется, а выводится из заданных условий. A->C и DC->B, означает, что AD->B тем более. Тогда все атрибуты зависят от AD и потому она уникальна (отношение - множество).
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39005361
Nkey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vadiminfoAD->A (пополнение), A->C (задано). И AD не зависит от А. Это означает транзитивную зависимость C от AD.
AD->A как-то как-то. Это от рефлективности?
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39005364
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nkey
ACD
111
212
122
211




Недопустимое состояние;

Нарушена условие A->C.
В первой строке A = 1, С = 1, а в третьей A = 1, С = 2. Это означет отсутствие зависимости C от A.
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39005366
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NkeyvadiminfoAD->A (пополнение), A->C (задано). И AD не зависит от А. Это означает транзитивную зависимость C от AD.
AD->A как-то как-то. Это от рефлективности?
От рефлексивности A->A и пополнения AD->A.
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39005368
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nkey,

Но Вы помните, что окончательный ответ был:

Оконательно:

r1(A,D)
r2(A,С)
r3(С,D,B)
r4(B,E,F)

?

Ключи не выделяю, так как задача навязать ФЗ не ставилась.
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39005369
Nkey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vadiminfoNkey,

Но Вы помните, что окончательный ответ был:

Оконательно:

r1(A,D)
r2(A,С)
r3(С,D,B)
r4(B,E,F)

?

Ключи не выделяю, так как задача навязать ФЗ не ставилась.
Помню, но я сижу, думаю, как корректнее написать разбиение r3(A,D,C) на r3(A,C) и r4(A,D).
Остальные я описывал по правилу цепочки...
К экзамену просто готовлюсь, на вступительные :)
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39005374
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nkey
К экзамену просто готовлюсь, на вступительные :)
На вступительные куда? Все таки это выглядит как курс по БД где-то 3-ем курсе. Т.е. далековато от вступительных.
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39005375
Nkey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vadiminfoNkeyК экзамену просто готовлюсь, на вступительные :)
На вступительные куда? Все таки это выглядит как курс по БД где-то 3-ем курсе. Т.е. далековато от вступительных.
На магистратуру. Я это всё делал, но немного подзабыл как в данном случае поступить.
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39005378
Nkey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Следуя Вашей инструкции. AD->A, A->C, то по идеи должна удалится по транзитивности AD->C, но ее нет.
Даже есть и удалить A->C, то останется ли AD->A? Или это просто для удаления делается?
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39005381
Nkey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Точнее если добавить AD->C, то всё равно же ее удалять. Не понятно. :)
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39005383
Nkey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ночь просто, голова уже не думает)
Хотя да в r(A,D,C) нет 2НФ, т.к. С зависит от части ключа A.
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39005391
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NkeyТочнее если добавить AD->C, то всё равно же ее удалять. Не понятно. :)
Не понял что имеется в виду под "добавить" и "удалять".
Эта ФЗ просто есть. А ФЗ A->C. Делает ее транзитивной.
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39005393
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NkeyСледуя Вашей инструкции. AD->A, A->C, то по идеи должна удалится по транзитивности AD->C, но ее нет.
Даже есть и удалить A->C, то останется ли AD->A? Или это просто для удаления делается?
транзитивности AD->C есть. Если "удалить" A->C, то транзитвности не станет. Что и сделано в окончательной схеме.
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39005404
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nkey,
возможно Вас сбивает с толку транзитивность AD->A, A->C из за того, что А входит в AD. И Вы думаете, что транзитивности якобы нет. Но последнее обстоятельство не имеет значения. AD - это обозначение множество атрибутов {A,D}. Вы вправе обjзначить это множество, например, буквой X. Тогда будет выглядеть X->A, A->C. И что входит в X не имеет значения для факта транзитивной зависимости. Важно, лишь, чтобы не было зависимости A->X.
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39005408
Nkey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vadiminfo,

Допустим. Но какой смысл выносить ключ в одно отношение r(A,D) ? Вроде так не нужно делать...
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39005412
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nkeyvadiminfo,

Допустим. Но какой смысл выносить ключ в одно отношение r(A,D) ? Вроде так не нужно делать...
Как какой "смысл"? Без этого схема не находится не только в НФБК, но даже в 2НФ.

А выходя за рамки задачи, еще имеет "смысл" то, что это позволит навязать схеме ФЗ A->C, объявив A ключом в r(A,C;[A]). А в r(A,C,D) ключом может быть только AD.
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39006414
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*PlusNkey,

R1 ([A], C)
R2 ([C,D], B)
R3 ([B], E, F)

В квадратных скобках первичные ключи.

Можно так:
CA ([C], A)
CDB ([C,D], B)
BEF ([B], E, F)

В квадратных скобках первичные ключи.

Функциональная зависимость С от А дает AC ([A], C)
эквивалентна
Функциональной зависимости A от C дает CA ([C], A)
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39006421
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CA
CAC1A1C2A2C3A3C4A4C5A5C6A6
CDB
CDBC1D1B1C1D2B2C1D3B3C2D1B4C2D2B5C3D3B6C4D4B7C5D5B8C5D1B1C5D2B2
BEF
BEFB1E1F1B2E2F1B3E3F3B4E1F1B5E2F1B6E3F4B7E4F5B8E5F6B9E5F6

На картинке ER-диаграмма

В спойлере скрипт создания таблиц (Синтаксис Oracle) (все столбцы имеют несуществующий тип UNKNOWN)
скрипт создания таблиц
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
-- Generated by Oracle SQL Developer Data Modeler 4.1.1.887
--   at:        2015-07-14 01:16:54 MSK
--   site:      Oracle Database 11g
--   type:      Oracle Database 11g
CREATE TABLE BEF(
    B UNKNOWN NOT NULL ,
    E UNKNOWN NOT NULL ,
    F UNKNOWN NOT NULL) ;
ALTER TABLE BEF ADD CONSTRAINT BEF_PK PRIMARY KEY ( B ) ;


CREATE TABLE CA (
    C UNKNOWN NOT NULL ,
    A UNKNOWN NOT NULL) ;
ALTER TABLE CA ADD CONSTRAINT CA_PK PRIMARY KEY ( C ) ;
ALTER TABLE CA ADD CONSTRAINT CA#U#A UNIQUE ( A ) ;


CREATE TABLE CDB(
    C UNKNOWN NOT NULL ,
    D UNKNOWN NOT NULL ,
    B UNKNOWN NOT NULL) ;
ALTER TABLE CDB ADD CONSTRAINT CDB#P PRIMARY KEY ( C, D ) ;
ALTER TABLE CDB ADD CONSTRAINT CDB#R#BEF FOREIGN KEY ( B ) REFERENCES BEF ( B );
ALTER TABLE CDB ADD CONSTRAINT CDB#R#CA FOREIGN KEY ( C ) REFERENCES CA ( C ) ;

...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39006424
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*PlusSQL*PlusNkey,

R1 ([A], C)
R2 ([C,D], B)
R3 ([B], E, F)

В квадратных скобках первичные ключи.

Можно так:
CA ([C], A)
CDB ([C,D], B)
BEF ([B], E, F)

В квадратных скобках первичные ключи.

Функциональная зависимость С от А дает AC ([A], C)
эквивалентна
Функциональной зависимости A от C дает CA ([C], A)

Функциональной зависимости A от C не выводится из заданных (тем более из A->C):
Вот пример отношение содержит соответствует всем ФЗ задачи. Но в нем не выполняется C->A
A C D B E F
1 1 1 1 1 1
2 1 1 1 1 1

Т.е. это отношение является допустимым по условиям задачи, но не может быть получено при вашей схеме.
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39006426
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. так нельзя:


CA ([C], A)
CDB ([C,D], B)
BEF ([B], E, F)
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39006430
Nkey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
r(A,D) вроде, является избыточным
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39006432
Nkey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И останется r1([B],E,F) r2([C,D],B) R3([A],C)
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39006434
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NkeyИ останется r1([B],E,F) r2([C,D],B) R3([A],C)
Ну Вы просто не прочитали предыдущую страницу. Такая схема приведет к потере информации. А я стрался придумывал пример. А Вы не читаете. Найдите плиз тот пример и опровергните его.
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39006436
Nkey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vadiminfoNkeyИ останется r1([B],E,F) r2([C,D],B) R3([A],C)
Ну Вы просто не прочитали предыдущую страницу. Такая схема приведет к потере информации. А я стрался придумывал пример. А Вы не читаете. Найдите плиз тот пример и опровергните его.
Учту
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39006437
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nkeyr(A,D) вроде, является избыточным

Из
r2(A,С)
r3(С,D,B)
r4(B,E,F)

Нельзя получить исходное в общем случае. Значит ему чего-то не хватает.

Этим чем-то и является
r1(A,D)
Так как из

r1(A,D)
r2(A,С)
r3(С,D,B)
r4(B,E,F)

Можно получить исходное без потерь. Первое со вторым соединяем по А - ключ второго, потому нет потерь.
Полученное соединяем с третьим по CD - ключ третьего - нет потерь. Дальше просто.

Значить r1(A,D) не избыточно.
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39006595
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*PlusФункциональная зависимость С от А дает AC ([A], C)
эквивалентна
Функциональной зависимости A от C дает CA ([C], A)Вы уверены?

r1([A],{C,D})
r2([C,D],B)
r3([B],E)
r4([B],F)

[] - PK
{} - UK

Разделение на r3 & r4 связано с тем, что в отношении не может быть неопределенных значений. Если включить все три атрибута в одно отношение, то все заявленные ФЗ будет невозможно выразить.

Чтобы полностью удовлетворить требование восстановления исходных наборов данных путем естественного соединения отношений (на что справедливо указывает vadiminfo), нужно еще ввести r5([B],E,F).
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39006622
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfo,

([A],C) + ([A],D) != ([A],{C,D}), возможно появление фантомных записей при соединении.

C и D в предложенной схеме не существуют независимо. Можно попробовать обойтись так

([A],C) + ([C,D]) + ([C,D],B) + etc
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39006808
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел Воронцовvadiminfo,

([A],C) + ([A],D) != ([A],{C,D}), возможно появление фантомных записей при соединении.


при соединении по A отношений
r1(A,D)
r2(A,С)
потерь информации быть не может, в силу того, что A является ключем в r2(A,С), так как по условию задачи A->C. Действительно, все значения А уникальны в этом отношении. Откуда там возьмутся "фантомных записей".

Впрочем, Вы можете привести пример их появления, что опровергнуть это.


Павел ВоронцовC и D в предложенной схеме не существуют независимо. Можно попробовать обойтись так

([A],C) + ([C,D]) + ([C,D],B) + etc

Вот я пояснил как можно обойтись: т.е. написать запрос, чтобы получить исходную для

r1(A,D)
r2(A,С)
r3(С,D,B)
r4(B,E,F)

vadiminfo

Можно получить исходное без потерь. Первое со вторым соединяем по А - ключ второго, потому нет потерь.
Полученное соединяем с третьим по CD - ключ третьего - нет потерь. Дальше просто.



Нужно все таки опровергнуть это с помощью примера, если не согласны. Действительно, один пример может опровергнуть всеобщее суждение.
Иначе, Вы как бы возражаете, но формально не показываете мою ошибку.

Я же опровергал SQL*Plus с помощью простейших примеров. Там все просто как трусы по рубль двадцать. Пока эти опровержения вроде не опровергнуты, потому варианты типа

r2(A,С)
r3(С,D,B)
r4(B,E,F)
выглядят не удовлетворяющими требованиям задачи.
выглядят
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39006869
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfo,

Да, набор

r1([A],C)
r2([A],D)

действительно является одной из возможных схем, прошу прощения. Возможные фантомные записи исчезнут при соединении с r3([C,D],B). Единственная загвоздка - ФЗ A->D не существует изначально.
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39006884
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел Воронцовvadiminfo,

Да, набор

r1([A],C)
r2([A],D)

действительно является одной из возможных схем, прошу прощения. Возможные фантомные записи исчезнут при соединении с r3([C,D],B). Единственная загвоздка - ФЗ A->D не существует изначально.

Загвоздки нет, так как у меня не r2([A],D), а r2(A,D). По условиям задачи не требовалось выделять ключи, поэтому я их не рисовал. Но если надо выделить, то
r2(A,D;[AD]). Т.е. можно ключом объявить только [AD].

ПыСы
Ключей может быть много, поэтому лучше отделить от атрибутов.
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39006979
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfoSQL*Plusпропущено...


Можно так:
CA ([C], A)
CDB ([C,D], B)
BEF ([ B], E, F)

В квадратных скобках первичные ключи.

Функциональная зависимость С от А дает AC ([A], C)
эквивалентна
Функциональной зависимости A от C дает CA ([C], A)
Функциональной зависимости A от C не выводится из заданных (тем более из A->C):
Вот пример отношение содержит соответствует всем ФЗ задачи. Но в нем не выполняется C->A
A C D B E F
1 1 1 1 1 1
2 1 1 1 1 1

Т.е. это отношение является допустимым по условиям задачи, но не может быть получено при вашей схеме.
Нет. такое отношение не является допустимым по условию задачи,
поскольку в нем нарушена функциональная зависимость С от А (или А от С, что то же самое).

По условию задачи
NkeyЕсть задание:
Дан набор функциональных зависимостей.
Выполнить преобразование отношения в набор НФБК – отношений.
То есть кроме набора функциональных зависимостей больше не дано ничего.
К.Дейт. Введение в системы баз данных, М., Наука, 1980, 464 с. Функциональная зависимость

Начнем с введения понятия функциональной зависимости (внутри отношения),
представляющей собой концепцию абсолютно первостепенной важности,
особенно в работе по конструированию модели данных.

Если задано отношение R, то мы говорим, что атрибут Y отношения R
функционально зависит от атрибута X отношения R тогда и только тогда,
когда каждое значение X в отношении R в каждый момент времени
связано точно с одним значением Y.


Заметим, что одно и то же значение X может появиться в нескольких различных кортежах отношения R.
Если Y функционально зависит от X, то по определению каждый из этих кортежей должен содержать также одно и то же значение Y
.
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39006989
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*Plus,

ФЗ С от А не то же самое, что ФЗ А от С. Ровно по определению Дейта.
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39006996
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*Plusvadiminfoпропущено...

Функциональной зависимости A от C не выводится из заданных (тем более из A->C):
Вот пример отношение содержит соответствует всем ФЗ задачи. Но в нем не выполняется C->A
A C D B E F
1 1 1 1 1 1
2 1 1 1 1 1

Т.е. это отношение является допустимым по условиям задачи, но не может быть получено при вашей схеме.
Нет. такое отношение не является допустимым по условию задачи,
поскольку в нем нарушена функциональная зависимость С от А (или А от С, что то же самое).

По условию задачи
NkeyЕсть задание:
Дан набор функциональных зависимостей.
Выполнить преобразование отношения в набор НФБК – отношений.
То есть кроме набора функциональных зависимостей больше не дано ничего.
К.Дейт. Введение в системы баз данных, М., Наука, 1980, 464 с. Функциональная зависимость

Начнем с введения понятия функциональной зависимости (внутри отношения),
представляющей собой концепцию абсолютно первостепенной важности,
особенно в работе по конструированию модели данных.

Если задано отношение R, то мы говорим, что атрибут Y отношения R
функционально зависит от атрибута X отношения R тогда и только тогда,
когда каждое значение X в отношении R в каждый момент времени
связано точно с одним значением Y.


Заметим, что одно и то же значение X может появиться в нескольких различных кортежах отношения R.
Если Y функционально зависит от X, то по определению каждый из этих кортежей должен содержать также одно и то же значение Y
.


И? Какое из нарисованных ФЗ нарушено? А->C не нарушено.У С всего одно значение = 1. Вообще если обратили внимание, там для простоты у всех одно значение, кроме А. Потому все ФЗ с картинки не нарушены. Но зато там нарушено C->А. Это показывает, что C->А не выводится из заданных в задаче.
А без него CA ([C], A) не позволит все допустимые состояния отношения по условию задачи состояния. И Ваша схем не подходит.

Там же простой пример. Укажите, плиз, вот на картинке есть ФЗ, а в примере оно нарушено, потому оно не допустимо.


Т.е. Вы начать то начали "с введения понятия", но как бы не закончили.
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39007006
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*PlusНет. такое отношение не является допустимым по условию задачи,
поскольку в нем нарушена функциональная зависимость С от А (или А от С, что то же самое).


Так мой пример показывает, что не одно и то же. И если бы было одно и то же, то боюсь что-то не срослось в нынешнем определении НФ3 и НФБК как минимум.
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39007017
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nkey,

Процитирую еще одно важное определение:
К.Дейт. Введение в системы баз данных, М., Наука, 1980, 464 с.Введем также понятие полной функциональной зависимости.

Атрибут Y находится в полной функциональной зависимости от атрибута X,
если он функционально зависит от X и не зависит функционально от любого подмножества атрибута X
(X должен быть составным).


Давайте также определим-уточним терминологию.
Возможно, в её разночтениях источник нашего взаимонепонимания.

Вот картинка задания:


Эту схему я понимаю так:
В задании приведено отношение, в котором имеются 4 (четыре) функциональные зависимости,
изображенные стрелками (одна стрелка - одна зависимость):


1) A -> C /атрибут C функционально зависит от атрибута A/

2) (C,D) -> B /атрибут B функционально полно зависит от составного атрибута (C,D)/

3) B -> F /атрибут F функционально зависит от атрибута B/

4) B -> E /атрибут E функционально зависит от атрибута B/

Вы тоже понимаете данную схему именно так?
Именно так принято в вашем учебном заведении?
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39007023
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*PlusNkey,

Процитирую еще одно важное определение:
К.Дейт. Введение в системы баз данных, М., Наука, 1980, 464 с.Введем также понятие полной функциональной зависимости.

Атрибут Y находится в полной функциональной зависимости от атрибута X,
если он функционально зависит от X и не зависит функционально от любого подмножества атрибута X
(X должен быть составным).


Давайте также определим-уточним терминологию.
Возможно, в её разночтениях источник нашего взаимонепонимания.

Вот картинка задания:


Эту схему я понимаю так:
В задании приведено отношение, в котором имеются 4 (четыре) функциональные зависимости,
изображенные стрелками (одна стрелка - одна зависимость):


1) A -> C /атрибут C функционально зависит от атрибута A/

2) (C,D) -> B /атрибут B функционально полно зависит от составного атрибута (C,D)/

3) B -> F /атрибут F функционально зависит от атрибута B/

4) B -> E /атрибут E функционально зависит от атрибута B/

Вы тоже понимаете данную схему именно так?
Именно так принято в вашем учебном заведении?
И я так ее понмаю и получаю ответ:

r1(A,D)
r2(A,С)
r3(С,D,B)
r4(B,E,F)

И то что решением не является:


r2(A,С)
r3(С,D,B)
r4(B,E,F)
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39007049
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел ВоронцовSQL*Plus,

ФЗ С от А не то же самое, что ФЗ А от С. Ровно по определению Дейта.А если в отношении всего два атрибута?
Разве при наличии функциональной зависимости между ними они оба не будут возможными ключами?

К.Дейт. Введение в системы баз данных, М., Наука, 1980, 464 с.Договоримся называть некоторый атрибут (возможно, составной),
от которого какой-либо другой атрибут зависит функционально (полно), детерминантой .
Тогда мы можем определить 3НФ следующим образом.

Нормализованное отношение R находится в третьей нормальной форме (3НФ),
если каждая детерминанта является возможным ключом.


Отметим, что мы теперь используем термин возможный ключ, а не первичный ключ.
Определение приблизительно в такой же форме впервые было дано Хитом.
Впоследствии эквивалентное определение, введенно Бойсом и Коддом.
По этой причине отношение, удовлетворяющее этому определению, иногда называют
отношением в нормальной форме Бойса/Кодда (БКНФ). а не 3НФ.
Теперь в общем случае мы будем употреблять термин "третья нормальная форма",
имея в виду пересмотренное определение.
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39007057
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*PlusПавел ВоронцовSQL*Plus,

ФЗ С от А не то же самое, что ФЗ А от С. Ровно по определению Дейта.А если в отношении всего два атрибута?
Разве при наличии функциональной зависимости между ними они оба не будут возможными ключами?
Нет
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39007060
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел ВоронцовSQL*Plusпропущено...
А если в отношении всего два атрибута?
Разве при наличии функциональной зависимости между ними они оба не будут возможными ключами?
НетДокажите. Приведите пример обратного.
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39007068
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*PlusПавел Воронцовпропущено...
НетДокажите. Приведите пример обратного.

Так мой пример обратного. Там нарушена C->A, но не A->С.
Ну оставьте две колонки
A C
1 1
2 1
...
Рейтинг: 0 / 0
Выполнить преобразование отношения в набор НФБК отношений
    #39007123
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfoSQL*Plusпропущено...
Докажите. Приведите пример обратного.

Так мой пример обратного. Там нарушена C->A, но не A->С.
Ну оставьте две колонки
A C
1 1
2 1ОК. Убедили.

C->A не эквивалентна A->С .

То есть
SQL*Plus теперь тоже убежден, что если C функционально зависит от A, это не означает, что A функционально зависит от C.
...
Рейтинг: 0 / 0
57 сообщений из 57, показаны все 3 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Выполнить преобразование отношения в набор НФБК отношений
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]