Форум на Kuban.ru (http://forums.kuban.ru/)
-   Наука и техника (http://forums.kuban.ru/f1048/)
-   -   Что такое тривиальная функциональная зависимость? (http://forums.kuban.ru/f1048/chto_takoe_trivial-naya_funkcional-naya_zavisimost--6937858.html)

megabax 17.06.2015 20:51

Что такое тривиальная функциональная зависимость?
 
Строгое определение гласит "Функциональная зависимость тривиальна тогда и только тогда, когда ее правая (зависимая) часть является подмножеством ее левой части (детерминанта). ". Но как это понять применительно к реляционным базам данным?
Я лично понял вот так6 допустим, у нас есть столбец, в который можно вбить ограниченное множество значение, например: "Значение 1", "Значение 2", "Значение 3" и "Значение 4". И есть другой столбец, куда можно вбить "Значение 1", "Значение 2", "Значение 3" (то есть 3 из 4 значений первого столбца). Столбец второй функционально зависит от первого, то есть, например, вбитое в первый столбце значение однозначно определяет значение в столбце два. Это значит что функциональная зависимость тривиальна. Правильно ли я понял?

x057722 18.06.2015 01:14

[quote=megabax;39305824]Правильно ли я понял?[/quote]
а кто его знает. такое без экзамена не обнаружишь. если что-нибудь надо, задай простой конкретный вопрос.
вот пример
таблица человек с полями фам им отч год рожд вес рост
и фио с полями фам им отч
Вообще такое в СНБЗ SQL ного типа называют view

x057722 18.06.2015 01:19

иди и чти [url]http://citforum.ru/database/advanced_intro/[/url]
или бери и чти труд Дейта.

megabax 18.06.2015 08:08

2-xo57722 > спасибо

DarkSide 18.06.2015 10:41

[quote=megabax;39305824]Строгое определение гласит "Функциональная зависимость тривиальна тогда и только тогда, когда ее правая (зависимая) часть является подмножеством ее левой части (детерминанта). ". Но как это понять применительно к реляционным базам данным? Я лично понял вот так6 допустим, у нас есть столбец, в который можно вбить ограниченное множество значение, например: "Значение 1", "Значение 2", "Значение 3" и "Значение 4". И есть другой столбец, куда можно вбить "Значение 1", "Значение 2", "Значение 3" (то есть 3 из 4 значений первого столбца). Столбец второй функционально зависит от первого, то есть, например, вбитое в первый столбце значение однозначно определяет значение в столбце два. Это значит что функциональная зависимость тривиальна. Правильно ли я понял? [/quote]
если я Вас правильно поняла - Вы говорите о доменах - области определения атрибутов.... Тут другое.
Если взять не любые атрибуты, а ключевые (пресловутые код сотрудника, код отдела) сджоинить к таблицей сотрудников по код сотрудника и в результат запросы выбрать все поля (объединение полей обеих таблиц), в исходной выборке мы получим, что b.код сотрудника находится в тривиальной функционально зависимости от группы атрибутов {a.код сотрудника, a.код отдела** (а - исходная, b - таблица сотрудников), ключей исходной таблицы....
правда, тут есть вопрос - будет ли результат запроса отношением, того для чего будет действовать понятия функциональных зависимостей, но будем считать, что будет... :)
Наличие таких зависимостей - избыточность в БД, одна из задач нормализации от них избавиться
[url]http://webmath.exponenta.ru/db/bdd/0402.html[/url]

DarkSide 18.06.2015 11:01

[quote=xo57722;39307785]Вообще такое в СНБЗ SQL ного типа называют view [/quote]
view тут, вообще, не при делах...
view - это поименованный запрос, фактически, просто -сохраненный кусок кода... (если не брать во внимание материализованные индексированные view - "улучшение над улучшением")
частью реляционной модели оно не является - утилитарно функциональная вещь, чтобы программист не задолбался каждый раз один и тот же код писать, и понятия этой модели к нему не применимы...

x057722 18.06.2015 17:48

[quote=Темная сторона;39309758] фактически, просто -сохраненный кусок кода.[/quote]
но коьорый можно использовать как таблицу. например обновлять. При соблюдении каких-то условий.[quote=Темная сторона;39309758]чтобы программист не задолбался каждый раз один и тот же код писать,[/quote]
Фатсон, это же элементарно! ctrl-c ctrl-v. Или слепить хранимую процедуру. Или вообще udf.
всем на sql.ru и обсуждать!

DarkSide 18.06.2015 18:12

[quote=xo57722;39315491]но коьорый можно использовать как таблицу. например обновлять. При соблюдении каких-то условий.[/quote]
Вы с табличными переменными не путаете или еще с чем-то?;))
Индексированные view могут обновляются, но их используют редко в экзотических случаях, потому что тормоза из-за того, что обновляются....
В общем виде, к view можно обращаться, как к таблице, но физически такого набора данных не существует...
это так - верьте мне! ну, или обсудите на sql.ru %)
[quote=xo57722;39315491]ctrl-c ctrl-v. Или слепить хранимую процедуру. Или вообще udf.[/quote][quote=xo57722;39315491]ctrl-c ctrl-v. Или слепить хранимую процедуру. Или вообще udf.[/quote]
Не совсем элементарно!%)
Выбор - процедура, функция или представление зависит от задачи... во view используется декларативная логика, в процедурах и функциях можно от нее отступать...
зато к процедуре нельзя делать select...
в общем, много нюансов...

x057722 19.06.2015 11:47

[quote=Темная сторона;39315740]зато к процедуре нельзя делать select...[/quote]
Смотря с каким SQL сервером.
---
А megabaxу проще всего взять FireBird + IBExpert и сразу полезть в практику. Потому ка основные принципы просты: использовать справочники, короткие строчки таблиц, не пытаться слепить изощрённый запрос, а писать SP(stored procedure(, UDF.

x057722 19.06.2015 11:49

И самое полещное - ходить на форум в sql.ru


Текущее время: 15:21. Часовой пояс GMT +3.