![]() |
Что такое тривиальная функциональная зависимость? Строгое определение гласит "Функциональная зависимость тривиальна тогда и только тогда, когда ее правая (зависимая) часть является подмножеством ее левой части (детерминанта). ". Но как это понять применительно к реляционным базам данным? Я лично понял вот так6 допустим, у нас есть столбец, в который можно вбить ограниченное множество значение, например: "Значение 1", "Значение 2", "Значение 3" и "Значение 4". И есть другой столбец, куда можно вбить "Значение 1", "Значение 2", "Значение 3" (то есть 3 из 4 значений первого столбца). Столбец второй функционально зависит от первого, то есть, например, вбитое в первый столбце значение однозначно определяет значение в столбце два. Это значит что функциональная зависимость тривиальна. Правильно ли я понял? |
[quote=megabax;39305824]Правильно ли я понял?[/quote] а кто его знает. такое без экзамена не обнаружишь. если что-нибудь надо, задай простой конкретный вопрос. вот пример таблица человек с полями фам им отч год рожд вес рост и фио с полями фам им отч Вообще такое в СНБЗ SQL ного типа называют view |
иди и чти [url]http://citforum.ru/database/advanced_intro/[/url] или бери и чти труд Дейта. |
2-xo57722 > спасибо |
[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] |
[quote=xo57722;39307785]Вообще такое в СНБЗ SQL ного типа называют view [/quote] view тут, вообще, не при делах... view - это поименованный запрос, фактически, просто -сохраненный кусок кода... (если не брать во внимание материализованные индексированные view - "улучшение над улучшением") частью реляционной модели оно не является - утилитарно функциональная вещь, чтобы программист не задолбался каждый раз один и тот же код писать, и понятия этой модели к нему не применимы... |
[quote=Темная сторона;39309758] фактически, просто -сохраненный кусок кода.[/quote] но коьорый можно использовать как таблицу. например обновлять. При соблюдении каких-то условий.[quote=Темная сторона;39309758]чтобы программист не задолбался каждый раз один и тот же код писать,[/quote] Фатсон, это же элементарно! ctrl-c ctrl-v. Или слепить хранимую процедуру. Или вообще udf. всем на sql.ru и обсуждать! |
[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... в общем, много нюансов... |
[quote=Темная сторона;39315740]зато к процедуре нельзя делать select...[/quote] Смотря с каким SQL сервером. --- А megabaxу проще всего взять FireBird + IBExpert и сразу полезть в практику. Потому ка основные принципы просты: использовать справочники, короткие строчки таблиц, не пытаться слепить изощрённый запрос, а писать SP(stored procedure(, UDF. |
И самое полещное - ходить на форум в sql.ru |
Текущее время: 20:54. Часовой пояс GMT +3. |