<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://iu5bmstu.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=85.202.230.62</id>
	<title>Кафедра ИУ5 МГТУ им. Н.Э.Баумана, студенческое сообщество - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://iu5bmstu.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=85.202.230.62"/>
	<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/85.202.230.62"/>
	<updated>2026-04-30T04:16:44Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=%D0%A1%D0%AD%D0%92%D0%9C_(9)_-_%D0%9B%D0%B5%D0%BA%D1%86%D0%B8%D1%8F_%E2%84%9610_-_%D0%9E%D0%B1%D1%81%D0%BB%D1%83%D0%B6%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BC%D0%B5%D0%B9%D0%BD%D1%84%D1%80%D0%B5%D0%B9%D0%BC%D0%BE%D0%B2&amp;diff=2167</id>
		<title>СЭВМ (9) - Лекция №10 - Обслуживание мейнфреймов</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=%D0%A1%D0%AD%D0%92%D0%9C_(9)_-_%D0%9B%D0%B5%D0%BA%D1%86%D0%B8%D1%8F_%E2%84%9610_-_%D0%9E%D0%B1%D1%81%D0%BB%D1%83%D0%B6%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BC%D0%B5%D0%B9%D0%BD%D1%84%D1%80%D0%B5%D0%B9%D0%BC%D0%BE%D0%B2&amp;diff=2167"/>
		<updated>2012-11-19T13:31:12Z</updated>

		<summary type="html">&lt;p&gt;85.202.230.62: /* Пакетная обработка */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Backward|l= СЭВМ (9) - Лекция №9 - Мейнфреймы}}&lt;br /&gt;
&lt;br /&gt;
== Мейнфреймы ==&lt;br /&gt;
 &lt;br /&gt;
=== Функции ===&lt;br /&gt;
&lt;br /&gt;
==== Пакетная обработка ====&lt;br /&gt;
&lt;br /&gt;
Одним из основных преимуществ мейнфреймов является их способность обрабатывать терабайты данных, размещённых на высокоскоростных устройствах хранения, и производить ценные выходные данные.&lt;br /&gt;
&lt;br /&gt;
Использование мейнфреймов позволяет учреждениям выполнять квартальную обработку данных, создавать отчёты. Приложения, генерирующие эти отчёты, называются пакетными приложениями. Они выполняются на мейнфрейме без вмешательства человека.&lt;br /&gt;
&lt;br /&gt;
Пакетные задания считывают и обрабатывают данные в больших количествах и формируют выходные данные.&lt;br /&gt;
&lt;br /&gt;
Однако, пакетная обработка не так распространена, как мейнфреймы, так как распределённых систем часто не хватает:&lt;br /&gt;
* дискового пространства;&lt;br /&gt;
* доступной мощности процессора;&lt;br /&gt;
* управления системными ресурсами;&lt;br /&gt;
* планирование заданий на уровне [http://en.wikipedia.org/wiki/IBM_Parallel_Sysplex#Sysplex Sysplex].&lt;br /&gt;
&lt;br /&gt;
Пакетные процессы обычно имеют следующие свойства:&lt;br /&gt;
* обработка и хранения больших объёмов вводимых данных;&lt;br /&gt;
* доступ к большому количеству записей;&lt;br /&gt;
* большой объём выходных данных;&lt;br /&gt;
* мгновенная реакция (обычно, это обязательное требование);&lt;br /&gt;
* генерируется информация о большом количестве пользователей или информационных объектов.&lt;br /&gt;
&lt;br /&gt;
Запланированный пакетный процесс может представлять выполнение тысяч задач в заданной последовательности. Рассмотрим последовательность выполнения запланированного пакетного процесса:&lt;br /&gt;
# ночью происходит обработка множества пакетных заданий, осуществляющих запуск программ и утилит. Эти задания консолидируют результаты оперативных транзакций, прошедших в течение дня;&lt;br /&gt;
# до и после выполнения заданий создаются резервные копии критически важных данных;&lt;br /&gt;
# отчёты с коммерческой статистикой передаются в специальный отдел для анализа;&lt;br /&gt;
# отчёты с заключениями(исключениями?) пересылаются в филиалы;&lt;br /&gt;
# отчёты о суммарной обработке данных отправляются партнёрской компании, владельцу торговой марки;&lt;br /&gt;
# владелец осуществляет мониторинг;&lt;br /&gt;
# задания и транзакции выполняют чтение или обновление БД.&lt;br /&gt;
&lt;br /&gt;
==== Обработка оперативных транзакций ====&lt;br /&gt;
&lt;br /&gt;
Это обработка транзакций, выполняемая интерактивно с участием конечного пользователя.&lt;br /&gt;
&lt;br /&gt;
Обычно, мейнфрейм обслуживает огромное количество систем выполнения транзакций. Эти системы часто представляют собой критически важные приложения, от которых зависит выполнение основных функций предприятия.&lt;br /&gt;
&lt;br /&gt;
Системы, выполняющие транзакции, должны быть способны поддерживать непредсказуемое количество одновременно работающих пользователей и типов транзакций.&lt;br /&gt;
&lt;br /&gt;
Одно из основных свойств системы выполнения транзакций - очень высокая скорость взаимодействия пользователя с системой. Серия коротких взаимодействий, при которых на каждое следует немедленная реакция.&lt;br /&gt;
&lt;br /&gt;
Оперативные транзакции обладают следующими свойствами:&lt;br /&gt;
* небольшое количество входных данных;&lt;br /&gt;
* небольшое количество хранимых записей, к которым осуществляется доступ и обработка;&lt;br /&gt;
* небольшое количество выходных данных.&lt;br /&gt;
&lt;br /&gt;
Требования к транзакционным системам:&lt;br /&gt;
* высокая скорость реакции;&lt;br /&gt;
* больше количество пользователей;&lt;br /&gt;
* круглосуточная доступность транзакционного интерфейса для пользователя;&lt;br /&gt;
* безопасность выполнения транзакций.&lt;br /&gt;
&lt;br /&gt;
Пример транзакционной системы:&lt;br /&gt;
# обычный банкомат с понятным пользователю графическим интерфейсом;&lt;br /&gt;
# в филиале банка сидит сотрудник и осуществляет операции;&lt;br /&gt;
# в центральном офисе тоже что-то происходит;&lt;br /&gt;
# все запросы отправляются на мейнфрейм для обработки;&lt;br /&gt;
# приложения на мейнфрейме выполняют обновление и запросы к СУБД;&lt;br /&gt;
# сохранение файлов БД.&lt;br /&gt;
&lt;br /&gt;
=== Обслуживание мейнфреймов ===&lt;br /&gt;
&lt;br /&gt;
На обслуживание мейнфрейма требуется тьма всяких должностей: от администраторов и программистов до завскладом.&lt;br /&gt;
&lt;br /&gt;
==== Системный программист ====&lt;br /&gt;
&lt;br /&gt;
Занимается установкой, настройкой и обслуживанием операционной системы. Он же ставит и обновляет ПО.&lt;br /&gt;
&lt;br /&gt;
Его задачи:&lt;br /&gt;
* планирование обновления ПО и аппаратного обеспечения и изменений в конфигурации;&lt;br /&gt;
* подготовка системных операторов и программистов приложений;&lt;br /&gt;
* автоматизация операций;&lt;br /&gt;
* планирование производительной мощности;&lt;br /&gt;
* запуск заданий и скриптов установки;&lt;br /&gt;
* выполнение заданий настройки, относящихся к инсталляции;&lt;br /&gt;
* тестирование взаимодействия новых продуктов с существующими приложениями и пользовательскими процедурами;&lt;br /&gt;
* настройка производительности в масштабах системы в целях обеспечение требуемого уровня обслуживания.&lt;br /&gt;
&lt;br /&gt;
Должен иметь навыки исправления ошибок системного ПО. Смотрит дампы и выясняет.&lt;br /&gt;
&lt;br /&gt;
Занимается обслуживанием промежуточного ПО (программный слой между ОС и приложением конечного пользователя).&lt;br /&gt;
&lt;br /&gt;
==== Системный администратор ====&lt;br /&gt;
&lt;br /&gt;
Обслуживает критически важные данные предприятия (БД).&lt;br /&gt;
&lt;br /&gt;
Задачи:&lt;br /&gt;
* установка ПО;&lt;br /&gt;
* добавление и удаление пользователей;&lt;br /&gt;
* управление правами доступа;&lt;br /&gt;
* управление устройствами хранения;&lt;br /&gt;
* управление сетями и связью;&lt;br /&gt;
* мониторинг системной производительности.&lt;br /&gt;
&lt;br /&gt;
==== Проектировщики и программисты приложений ====&lt;br /&gt;
&lt;br /&gt;
Проектирование, компоновка, тестирование и доставка приложений к конечному пользователю.&lt;br /&gt;
&lt;br /&gt;
На основании требований, полученных от бизнес-аналитиков, проектировщик создаёт ТЗ, по которому программист создаёт приложение. Этот процесс включает в себя несколько итераций.&lt;br /&gt;
&lt;br /&gt;
Тестирование:&lt;br /&gt;
* функциональное - соответствие ТЗ;&lt;br /&gt;
* модульное - проверка модуля отдельно;&lt;br /&gt;
* интеграционное - как будет работать вся система.&lt;br /&gt;
&lt;br /&gt;
==== Системный оператор ====&lt;br /&gt;
&lt;br /&gt;
Осуществляет мониторинг и контроль операций, выполняемых на программном и аппаратном обеспечении мейнфрейма. Запускает и останавливает системные задачи, проверяет системные консоли на возникновение необычных состояний.&lt;br /&gt;
&lt;br /&gt;
При добавлении приложений в мейнфрейм также отвечает за их бесперебойную работу. Документация описывает операционные требования к приложению, о которых операторы должны знать при выполнении задачи.&lt;br /&gt;
&lt;br /&gt;
==== Аналитик производственного контроля ====&lt;br /&gt;
&lt;br /&gt;
Отвечает за проверку безошибочного и бесперебойного выполнения пакетных заданий.&lt;br /&gt;
&lt;br /&gt;
На некоторых мейнфреймах сначала выполняется интерактивная задача для оперативных пользователей, а потом только запускается пакетный режим.&lt;br /&gt;
&lt;br /&gt;
Благодаря контролю, осуществляемому аналитиком, сложно внести какие-либо изменения в систему в обход предусмотренных процедур.&lt;br /&gt;
&lt;br /&gt;
==== Изготовитель ====&lt;br /&gt;
&lt;br /&gt;
Большая часть мейнфреймов производится в IBM. ПО тоже оттуда. И вся поддержка тоже оттуда. Есть централизованный центр поддержки, предоставляющий гарантийное и дополнительное обслуживание.&lt;br /&gt;
&lt;br /&gt;
Должностные лица поддержки:&lt;br /&gt;
* наладчик. Устанавливает, ремонтирует;&lt;br /&gt;
* специалист по поддержке ПО.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Супер ЭВМ (9 семестр)]]&lt;br /&gt;
[[Категория:Конспекты лекций и семинаров]]&lt;/div&gt;</summary>
		<author><name>85.202.230.62</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=%D0%A2%D0%9E%D0%A0%D0%90_(9)_-_%D0%9B%D0%B5%D0%BA%D1%86%D0%B8%D1%8F_%E2%84%966_-_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D1%85%D0%BE%D1%80%D0%BE%D1%88%D0%B5%D0%B9_%D0%91%D0%94&amp;diff=1647</id>
		<title>ТОРА (9) - Лекция №6 - Алгоритм построения хорошей БД</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=%D0%A2%D0%9E%D0%A0%D0%90_(9)_-_%D0%9B%D0%B5%D0%BA%D1%86%D0%B8%D1%8F_%E2%84%966_-_%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D1%85%D0%BE%D1%80%D0%BE%D1%88%D0%B5%D0%B9_%D0%91%D0%94&amp;diff=1647"/>
		<updated>2012-10-09T07:20:04Z</updated>

		<summary type="html">&lt;p&gt;85.202.230.62: /* Пример */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Третья нормальная форма ==&lt;br /&gt;
&lt;br /&gt;
=== Пример аномалий у 3НФ ===&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=R = (A, B, C, D)}} и {{Формула|f=F = (A\rightarrow B, B\rightarrow A, AC\rightarrow D)}}&lt;br /&gt;
&lt;br /&gt;
Два ключа: {{Формула|f=AC}} и {{Формула|f=BC}}&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=(AC)^+=ACBD}}, {{Формула|f=(BC)^+=BCAD}}&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=A^+=AB}}, {{Формула|f=C^+ = C}}, {{Формула|f=B^+ = BA}}&lt;br /&gt;
&lt;br /&gt;
Покажем, что в этом случае {{Формула|f=R}} находится в 3НФ:&lt;br /&gt;
&lt;br /&gt;
1)&lt;br /&gt;
&lt;br /&gt;
:неключевой атрибут {{Формула|f=H}}, {{Формула|f=H = D}}&lt;br /&gt;
&lt;br /&gt;
2)&lt;br /&gt;
&lt;br /&gt;
:{{Формула|f=Y\rightarrow H}}, {{Формула|f=H\notin Y}}, {{Формула|f=Y = AC}}&lt;br /&gt;
&lt;br /&gt;
3)&lt;br /&gt;
&lt;br /&gt;
:{{Формула|f=X = BC}}, {{Формула|f=X = AC}}&lt;br /&gt;
&lt;br /&gt;
Нельзя подобрать нужную тройку, потому {{Формула|f=R}} находится в 3НФ. Однако, отношение всё равно обладает аномалиями:&lt;br /&gt;
* избыточности: наименование поставщика повторяется для каждой поставляемой делали;&lt;br /&gt;
* противоречивости при изменении наименования поставщика надо изменить его во всех записях, куда оно входит;&lt;br /&gt;
* включения: нельзя включить информацию о поставщике, если он ничего не поставляет;&lt;br /&gt;
* удаления: при удалении детали удаляется информация о поставщике.&lt;br /&gt;
&lt;br /&gt;
Для устранения этого вводится усиленная 3НФ - Бойса-Кодда.&lt;br /&gt;
&lt;br /&gt;
=== Нормальная форма Бойса-Кодда ===&lt;br /&gt;
&lt;br /&gt;
ФЗ {{Формула|f=X\rightarrow Y}} является неприводимой, если для любого подмножества {{Формула|f=Z\subset X}} выполняется {{Формула|f=Z\nrightarrow Y}} или {{Формула|f=Z\rightarrow Y\notin F^+}}&lt;br /&gt;
&lt;br /&gt;
Пусть есть отношение {{Формула|f=R}} и {{Формула|f=F}} включает в себя нетривиальные неприводимые ФЗ. Тогда отношение {{Формула|f=R}} находится в нормальной форме Бойса-Кодда, если для любого {{Формула|f=X\rightarrow Y\in F}} =&amp;gt; {{Формула|f=X}} - ключ.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=R_1 = AB}}, {{Формула|f=F_1 = (A\rightarrow B, B\rightarrow A)}}, {{Формула|f=A}} - ключ, {{Формула|f=B}} - ключ.&lt;br /&gt;
&lt;br /&gt;
или&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=R_2 = ACD}}, {{Формула|f=F_2 = (AC\rightarrow DD)}}, {{Формула|f=AC}} - ключ.&lt;br /&gt;
&lt;br /&gt;
== Алгоритм синтеза &amp;quot;хорошей&amp;quot; БД ==&lt;br /&gt;
&lt;br /&gt;
Пусть {{Формула|f=U}} - универсальная схема отношения (множество всех атрибутов предметной области) и {{Формула|f=F}} - множество ФЗ.&lt;br /&gt;
&lt;br /&gt;
Перед выполнением алгоритма можно привести все ФЗ к одному атрибуту в правой части (по свойству декомпозиции) и удалить лишние ФЗ. Но это не обязательно.&lt;br /&gt;
&lt;br /&gt;
Алгоритм:&lt;br /&gt;
&lt;br /&gt;
# построить УНП для {{Формула|f=F}};&lt;br /&gt;
# если среди ФЗ в УНП нет ФЗ, включающей все атрибуты из {{Формула|f=U}}, то добавить в УНП тривиальную ФЗ {{Формула|f=U\rightarrow\varnothing}}. Выполнение этого шага почти всегда обеспечивает свойство соединения без потерь будущей схемы БД;&lt;br /&gt;
# привести все нетривиальные ФЗ из УНП к неприводимому виду (удалить лишние атрибуты в левых частях ФЗ);&lt;br /&gt;
# разбить полученное множество ФЗ УНП на классы эквивалентности. Две зависимости {{Формула|f=X_i\rightarrow Y_i}} и {{Формула|f=X_j\rightarrow Y_j}} будем называть эквивалентными, если {{Формула|f=X_iY_i = X_jY_j}}. Далее введём обозначение {{Формула|f=K_r = X_iY_i}} - множество атрибутов в левой и правой частях ФЗ {{Формула|f=r}}-того класса эквивалентности;&lt;br /&gt;
# построить граф иерархии полученных на предыдущем шаге классов эквивалентности (если это возможно). Правило построения: {{Формула|f=j}}-ый узел соединяем снизу с {{Формула|f=i}}-ым узлом, если {{Формула|f=K_j\subset K_i}}. В каждом узле записываются все ФЗ, соответствующего класса эквивалентности;&lt;br /&gt;
# из каждого класса эквивалентности в графе иерархии оставить только одну ФЗ. Правила выбора:&lt;br /&gt;
## удалить из класса эквивалентности лишние ФЗ;&lt;br /&gt;
## если в классе эквивалентности осталось больше одной ФЗ, то выбрать ФЗ с меньшим числом атрибутов в левой части;&lt;br /&gt;
## если у оставшихся ФЗ число атрибутов в левой части одинаково, то выбрать ту ФЗ, которая позволит редуцировать (вычеркнуть) число атрибутов справа у ФЗ, расположенных выше в графе иерархии;&lt;br /&gt;
## если в результате не удалось выбрать ни одной, то выбрать произвольную;&lt;br /&gt;
# редуцировать атрибуты справа в оставшихся ФЗ. Для этого просмотреть каждый путь снизу вверх в графе иерархии. Двигаясь по выбранному пути, выполнить следующие действия в каждом узле пути:&lt;br /&gt;
## пусть {{Формула|f=X\rightarrow Y}} - это ФЗ, записанная в данном узле. Каждый атрибут, принадлежащий правой части, вычеркнуть в правых частях ФЗ, расположенных в узлах этого пути по иерархии выше;&lt;br /&gt;
## для тривиальной ФЗ {{Формула|f=U\rightarrow\varnothing}} атрибуты вычёркиваются слева;&lt;br /&gt;
# исключить из рассмотрения ФЗ с пустой правой частью (кроме редуцированной ФЗ {{Формула|f=U\rightarrow\varnothing}}). Исключённые на этом шаге ФЗ являются лишними и выводятся из оставшихся;&lt;br /&gt;
# каждую оставшуюся в графе иерархий ФЗ {{Формула|f=V\rightarrow W}} заменить на множество {{Формула|f=VW}}. Получившееся множество схем отношений обозначить как {{Формула|f=\rho}};&lt;br /&gt;
# для полученной на предыдущем шаге схемы БД проверить:&lt;br /&gt;
## обладает ли она свойством соединия без потерь (по алгоритму [[ТОРА_(9)_-_Семинар_№3 | третьего семинара]]). Если не обладает, то добавить ключ универсальной схемы {{Формула|f=U}} в эту схему;&lt;br /&gt;
## обладает ли {{Формула|f=\rho}} свойством сохранения ФЗ. Если нет, то, использовать зависимости, не вошедшие в проекцию {{Формула|f=X\rightarrow Y\notin\Pi_{R_i}(F)}}, для построения новых схем отношений, то есть добавить в {{Формула|f=\rho}} {{Формула|f=XY}}.&lt;br /&gt;
&lt;br /&gt;
После выполнения всех шагов полученная схема {{Формула|f=\rho}}:&lt;br /&gt;
* обладает свойством соединения без потерь;&lt;br /&gt;
* обладает свойством сохранения ФЗ;&lt;br /&gt;
* находится в 3НФ или [[#Нормальная форма Бойса-Кодда | НФБК]];&lt;br /&gt;
* содержит минимальное число схем отношений.&lt;br /&gt;
&lt;br /&gt;
=== Пример ===&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=U = (поставщик, фирма, деталь, количество) = (A, B, C, D)}}&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=F = (A\rightarrow B, B\rightarrow A, AC\rightarrow D, BC\rightarrow D)}}&lt;br /&gt;
&lt;br /&gt;
Строим {{Формула|f=\rho}}:&lt;br /&gt;
&lt;br /&gt;
1)&lt;br /&gt;
&lt;br /&gt;
:{{Формула|f=УНП = (A\rightarrow B, B\rightarrow A, AC\rightarrow BD, BC\rightarrow AD)}}&lt;br /&gt;
&lt;br /&gt;
2)&lt;br /&gt;
&lt;br /&gt;
:пропускаем этот шаг, так как есть ФЗ (даже не одна), включающая все атрибуты из {{Формула|f=U}}&lt;br /&gt;
&lt;br /&gt;
3)&lt;br /&gt;
&lt;br /&gt;
:уменьшить число атрибутов не удаётся&lt;br /&gt;
&lt;br /&gt;
4)&lt;br /&gt;
&lt;br /&gt;
:1 класс: {{Формула|f=A\rightarrow B}}, {{Формула|f=B\rightarrow A}}, {{Формула|f=K_1 = AB}}&lt;br /&gt;
:2 класс: {{Формула|f=AC\rightarrow BD}}, {{Формула|f=BC\rightarrow AD}}, {{Формула|f=K_2 = ABCD}}&lt;br /&gt;
&lt;br /&gt;
5)&lt;br /&gt;
&lt;br /&gt;
:[[Файл:9sTORAl6pic1.png|link=Файл:9sTORAl6pic1.svg]]&lt;br /&gt;
&lt;br /&gt;
6)&lt;br /&gt;
&lt;br /&gt;
:для {{Формула|f=K_2}}:&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;u&amp;gt;способ 1&amp;lt;/u&amp;gt; - как во [[ТОРА_(9)_-_Семинар_№2_-_Функциональные_зависимости#Выявление лишних ФЗ | втором семинаре]]&lt;br /&gt;
:::можно ли вывести {{Формула|f=AC\rightarrow BD\in(BC\rightarrow AD)^+}}?&lt;br /&gt;
:::{{Формула|f=(AC)^+=AC}}, {{Формула|f=BD\nsubseteq(AC)^+}}, значит нельзя&lt;br /&gt;
:::можно ли вывести {{Формула|f=BC\rightarrow AD\in(AC\rightarrow BD)^+}}?&lt;br /&gt;
:::{{Формула|f=(BC)^+=BC}}, {{Формула|f=AD\nsubseteq(BC)^+}}, значит нельзя&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;u&amp;gt;способ 2&amp;lt;/u&amp;gt; - вычеркнуть из правых частей ФЗ рассматриваемых классов эквивалентностей общие  атрибуты. Если получаются ФЗ с пустой правой частью, то они являются лишними.&lt;br /&gt;
:::{{Формула|f=AC\rightarrow B}}&lt;br /&gt;
:::{{Формула|f=BC\rightarrow A}}&lt;br /&gt;
:::выше по иерархии ничего нет, выбираем  {{Формула|f=BC\rightarrow AD}}&lt;br /&gt;
&lt;br /&gt;
::нет лишних ФЗ, потому... &lt;br /&gt;
&lt;br /&gt;
:для {{Формула|f=K_1}}:&lt;br /&gt;
&lt;br /&gt;
[[Категория:Теоретические основы реляционной алгебры (9 семестр)]]&lt;br /&gt;
[[Категория:Конспекты лекций и семинаров]]&lt;/div&gt;</summary>
		<author><name>85.202.230.62</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=%D0%A2%D0%9E%D0%A0%D0%90_(9)_-_%D0%A1%D0%B5%D0%BC%D0%B8%D0%BD%D0%B0%D1%80_%E2%84%962_-_%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B7%D0%B0%D0%B2%D0%B8%D1%81%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8&amp;diff=1634</id>
		<title>ТОРА (9) - Семинар №2 - Функциональные зависимости</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=%D0%A2%D0%9E%D0%A0%D0%90_(9)_-_%D0%A1%D0%B5%D0%BC%D0%B8%D0%BD%D0%B0%D1%80_%E2%84%962_-_%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%B7%D0%B0%D0%B2%D0%B8%D1%81%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8&amp;diff=1634"/>
		<updated>2012-10-06T18:04:44Z</updated>

		<summary type="html">&lt;p&gt;85.202.230.62: /* Выявление лишних ФЗ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Задача №1 - Определение ФЗ ==&lt;br /&gt;
&lt;br /&gt;
Отношение &amp;quot;поставка&amp;quot;:&lt;br /&gt;
 &lt;br /&gt;
* {{Формула|f=SP}} - поставка.&lt;br /&gt;
** N - номер поставщика;&lt;br /&gt;
** PN - номер детали;&lt;br /&gt;
** kol - количество поставляемых деталей.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! SN || PN || kol&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | S1 || P1 || 100&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | S1 || P2 || 150&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | S2 || P1 || 50&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | S2 || P2 || 100&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | S3 || P2 || 200&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Определить, выполняется ли:&lt;br /&gt;
* {{Формула|f=SN\rightarrow kol}} - &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;нет&amp;lt;/span&amp;gt;&lt;br /&gt;
* {{Формула|f=PN\rightarrow kol}} - &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;нет&amp;lt;/span&amp;gt;&lt;br /&gt;
* {{Формула|f=(SN,PN)\rightarrow kol}} - &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;да&amp;lt;/span&amp;gt; (оно первичный ключ)&lt;br /&gt;
* {{Формула|f=kol\rightarrow (SN,PN)}} - &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;нет&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Задача №2 - Как выявлять ФЗ ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Первый способ:&amp;lt;/u&amp;gt; на основании знания предметной области.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Второй способ:&amp;lt;/u&amp;gt; построением абстрактного экземпляра отношения, позволяющего понять семантику предметной области.&lt;br /&gt;
&lt;br /&gt;
Предметную область зададим следующую: &amp;quot;график полётов&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
График = (пилот, рейс, дата, время), сокращённо: {{Формула|f=\rho=(A,B,C,D)}}&lt;br /&gt;
&lt;br /&gt;
Предпосылки:&lt;br /&gt;
* рейс может выполняться в разные дни, но в одно и то же время;&lt;br /&gt;
* два пилота не могут выполнять один и тот же рейс одновременно (самолёт однопилотный);&lt;br /&gt;
* у аэродрома всего одна взлётно-посадочная полоса.&lt;br /&gt;
&lt;br /&gt;
Строим экземпляр отношения:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! A !! B !! C !! D&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | P1 || r1 || d1 || v1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | P1 || r2 || d1 || v2&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | P1 || r1 || d2 || v1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | P1 || r2 || d2 || v2&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | P2 || r1 || d3 || v1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | P2 || r2 || d3 || v2&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | P2 || r3 || d1 || v3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
В принципе, если семантика более сложная, то можно ещё много добавить, но нам хватит этого.&lt;br /&gt;
&lt;br /&gt;
=== Выявление всех ФЗ ===&lt;br /&gt;
&lt;br /&gt;
Теперь по этому экземпляру надо выявить все ФЗ.&lt;br /&gt;
&lt;br /&gt;
1) выписать все возможные ФЗ с одним атрибутом в левой части (в правой части всегда будет один атрибут):&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=A\rightarrow B}} - &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;нет&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=A\rightarrow C}} - &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;нет&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=A\rightarrow D}} - &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;нет&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=B\rightarrow A}} - &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;нет&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=B\rightarrow C}} - &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;нет&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=B\rightarrow D}} - &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;да&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=C\rightarrow A}} - &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;нет&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=C\rightarrow B}} - &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;нет&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=C\rightarrow D}} - &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;нет&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=D\rightarrow A}} - &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;нет&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=D\rightarrow B}} - &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;да&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=D\rightarrow C}} - &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;нет&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) выписать все возможные ФЗ с двумя атрибутами в левой части (в правой так же один):&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=AB\rightarrow C}} - &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;нет&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=AB\rightarrow D}} - &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;да&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=AC\rightarrow B}} - &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;нет&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=AC\rightarrow D}} - &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;нет&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=AD\rightarrow B}} - &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;да&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=AD\rightarrow C}} - &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;нет&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=BC\rightarrow A}} - &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;да&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=BC\rightarrow D}} - &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;да&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=BD\rightarrow A}} - &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;нет&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=BD\rightarrow C}} - &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;нет&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=CD\rightarrow A}} - &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;да&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=CD\rightarrow B}} - &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;да&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) выписать все возможные ФЗ с тремя атрибутами в левой части (в правой всё так же один):&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=ABC\rightarrow D}} - &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;да&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=ABD\rightarrow C}} - &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;нет&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=ACD\rightarrow B}} - &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;да&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=BCD\rightarrow A}} - &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;да&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Теперь выписываем все ФЗ: {{Формула|f=F = (B\rightarrow D, D\rightarrow B, AB\rightarrow D, AD\rightarrow B, BC\rightarrow A, BC\rightarrow D, CD\rightarrow A, CD\rightarrow B, ABC\rightarrow D, ACD\rightarrow B, BCD\rightarrow A)}}&lt;br /&gt;
&lt;br /&gt;
=== Выявление лишних ФЗ ===&lt;br /&gt;
&lt;br /&gt;
Теперь надо выявить лишние ФЗ (которые выводятся из остальных):&lt;br /&gt;
&lt;br /&gt;
* имеет ли место {{Формула|f=B\rightarrow D\in(F - B\rightarrow D)^+}}?&lt;br /&gt;
&lt;br /&gt;
Строим замыкание левой части (все атрибуты, которые выводятся из {{Формула|f=B}}):&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=B^+ = B}}, так что {{Формула|f=D\notin B^+}}&lt;br /&gt;
&lt;br /&gt;
Значит, {{Формула|f=B\rightarrow D\notin(F - B\rightarrow D)^+}}&lt;br /&gt;
&lt;br /&gt;
* имеет ли место {{Формула|f=D\rightarrow B\in(F - D\rightarrow B)^+}}?&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=D^+ = D}}, так что {{Формула|f=B\notin D^+}}&lt;br /&gt;
&lt;br /&gt;
* имеет ли место {{Формула|f=AB\rightarrow D\in(F - AB\rightarrow D)^+}}?&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=(AB)^+ = ABD}} и значит {{Формула|f=D\in (AB)^+}}&lt;br /&gt;
&lt;br /&gt;
вычеркиваем: {{Формула|f=F = (B\rightarrow D, D\rightarrow B}} &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=AB\rightarrow D}}&amp;lt;/span&amp;gt;, {{Формула|f=AD\rightarrow B, BC\rightarrow A, BC\rightarrow D, CD\rightarrow A, CD\rightarrow B, ABC\rightarrow D, ACD\rightarrow B, BCD\rightarrow A)}}&lt;br /&gt;
&lt;br /&gt;
* имеет ли место {{Формула|f=AD\rightarrow B\in(F - AD\rightarrow B)^+}}?&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=(AD)^+ = ADB}} и значит {{Формула|f=B\in (AD)^+}}&lt;br /&gt;
&lt;br /&gt;
вычеркиваем: {{Формула|f=F = (B\rightarrow D, D\rightarrow B}} &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=AB\rightarrow D}}&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=AD\rightarrow B}}&amp;lt;/span&amp;gt;, {{Формула|f=BC\rightarrow A, BC\rightarrow D, CD\rightarrow A, CD\rightarrow B, ABC\rightarrow D, ACD\rightarrow B, BCD\rightarrow A)}}&lt;br /&gt;
&lt;br /&gt;
* имеет ли место {{Формула|f=BC\rightarrow A\in(F - BC\rightarrow A)^+}}?&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=(BC)^+ = BCDA}} и значит {{Формула|f=A\in (BC)^+}}&lt;br /&gt;
&lt;br /&gt;
вычеркиваем: {{Формула|f=F = (B\rightarrow D, D\rightarrow B}} &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=AB\rightarrow D}}&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=AD\rightarrow B}}&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=BC\rightarrow A}}&amp;lt;/span&amp;gt;, {{Формула|f=BC\rightarrow D, CD\rightarrow A, CD\rightarrow B, ABC\rightarrow D, ACD\rightarrow B, BCD\rightarrow A)}}&lt;br /&gt;
&lt;br /&gt;
* имеет ли место {{Формула|f=BC\rightarrow D\in(F - BC\rightarrow D)^+}}?&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=(BC)^+ = BCDA}} и значит {{Формула|f=D\in (BC)^+}}&lt;br /&gt;
&lt;br /&gt;
вычеркиваем: {{Формула|f=F = (B\rightarrow D, D\rightarrow B}} &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=AB\rightarrow D}}&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=AD\rightarrow B}}&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=BC\rightarrow A}}&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=BC\rightarrow D}}&amp;lt;/span&amp;gt;, {{Формула|f=CD\rightarrow A, CD\rightarrow B, ABC\rightarrow D, ACD\rightarrow B, BCD\rightarrow A)}}&lt;br /&gt;
&lt;br /&gt;
* имеет ли место {{Формула|f=CD\rightarrow A\in(F - CD\rightarrow A)^+}}?&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=(CD)^+ = CDBA}} и значит {{Формула|f=D\in (CD)^+}}&lt;br /&gt;
&lt;br /&gt;
вычеркиваем: {{Формула|f=F = (B\rightarrow D, D\rightarrow B}} &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=AB\rightarrow D}}&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=AD\rightarrow B}}&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=BC\rightarrow A}}&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=BC\rightarrow D}}&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=CD\rightarrow A}}&amp;lt;/span&amp;gt;, {{Формула|f=CD\rightarrow B, ABC\rightarrow D, ACD\rightarrow B, BCD\rightarrow A)}}&lt;br /&gt;
&lt;br /&gt;
* имеет ли место {{Формула|f=CD\rightarrow B\in(F - CD\rightarrow B)^+}}?&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=(CD)^+ = CDBA}} и значит {{Формула|f=B\in (CD)^+}}&lt;br /&gt;
&lt;br /&gt;
вычеркиваем: {{Формула|f=F = (B\rightarrow D, D\rightarrow B}} &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=AB\rightarrow D}}&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=AD\rightarrow B}}&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=BC\rightarrow A}}&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=BC\rightarrow D}}&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=CD\rightarrow A}}&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=CD\rightarrow B}}&amp;lt;/span&amp;gt;, {{Формула|f=ABC\rightarrow D, ACD\rightarrow B, BCD\rightarrow A)}}&lt;br /&gt;
&lt;br /&gt;
* имеет ли место {{Формула|f=ABC\rightarrow D\in(F - ABC\rightarrow D)^+}}?&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=(ABC)^+ = ABCD}} и значит {{Формула|f=D\in (ABC)^+}}&lt;br /&gt;
&lt;br /&gt;
вычеркиваем: {{Формула|f=F = (B\rightarrow D, D\rightarrow B}} &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=AB\rightarrow D}}&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=AD\rightarrow B}}&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=BC\rightarrow A}}&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=BC\rightarrow D}}&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=CD\rightarrow A}}&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=CD\rightarrow B}}&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=ABC\rightarrow D}}&amp;lt;/span&amp;gt;, {{Формула|f=ACD\rightarrow B, BCD\rightarrow A)}}&lt;br /&gt;
&lt;br /&gt;
* имеет ли место {{Формула|f=ACD\rightarrow B\in(F - ACD\rightarrow B)^+}}?&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=(ACD)^+ = ABCD}} и значит {{Формула|f=D\in (ABC)^+}}&lt;br /&gt;
&lt;br /&gt;
вычеркиваем: {{Формула|f=F = (B\rightarrow D, D\rightarrow B}} &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=AB\rightarrow D}}&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=AD\rightarrow B}}&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=BC\rightarrow A}}&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=BC\rightarrow D}}&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=CD\rightarrow A}}&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=CD\rightarrow B}}&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=ABC\rightarrow D}}&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;background-color:#FA8072&amp;quot;&amp;gt;{{Формула|f=ACD\rightarrow B}}&amp;lt;/span&amp;gt;, {{Формула|f=BCD\rightarrow A)}}&lt;br /&gt;
&lt;br /&gt;
* имеет ли место {{Формула|f=BCD\rightarrow A\in(F - BCD\rightarrow A)^+}}?&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=(BCD)^+ = BCD}}, так что {{Формула|f=A\notin (BCD)^+}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Итоговая {{Формула|f=F = (B\rightarrow D, D\rightarrow B, BCD\rightarrow A)}}&lt;br /&gt;
&lt;br /&gt;
=== Сокращение числа атрибутов ===&lt;br /&gt;
&lt;br /&gt;
А нельзя ли теперь сократить атрибуты в левой части третьей ФЗ, которая {{Формула|f=BCD\rightarrow A}}?&lt;br /&gt;
&lt;br /&gt;
Ну например, если {{Формула|f=X\rightarrow Y}}, а {{Формула|f=Z\subset X}} и {{Формула|f=Z\rightarrow Y}}, то {{Формула|f=Z\rightarrow Y}}&lt;br /&gt;
&lt;br /&gt;
Ну и вот у нас:&lt;br /&gt;
&lt;br /&gt;
1)&lt;br /&gt;
&lt;br /&gt;
:{{Формула|f=BC\rightarrow A\in F^+}}?&lt;br /&gt;
&lt;br /&gt;
:{{Формула|f=(BC)^+=BCDA}}&lt;br /&gt;
&lt;br /&gt;
:{{Формула|f=F = (B\rightarrow D, D\rightarrow B, BC\rightarrow A}}&lt;br /&gt;
&lt;br /&gt;
2)&lt;br /&gt;
&lt;br /&gt;
:{{Формула|f=B\rightarrow A\in F^+}}?&lt;br /&gt;
&lt;br /&gt;
:{{Формула|f=B^+=BD}}, значит {{Формула|f=A\notin B^+}}&lt;br /&gt;
&lt;br /&gt;
3)&lt;br /&gt;
&lt;br /&gt;
:{{Формула|f=C\rightarrow A\in F^+}}?&lt;br /&gt;
&lt;br /&gt;
:{{Формула|f=C^+=C}}, значит {{Формула|f=A\notin C^+}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Так что больше никак сократить нельзя, и итоговая будет {{Формула|f=F = (B\rightarrow D, D\rightarrow B, BC\rightarrow A)}}&lt;br /&gt;
&lt;br /&gt;
=== Построение УНП ===&lt;br /&gt;
&lt;br /&gt;
А теперь надо построить УНП для него:&lt;br /&gt;
&lt;br /&gt;
1)&lt;br /&gt;
&lt;br /&gt;
:{{Формула|f=G = (B\rightarrow D, D\rightarrow B, BC\rightarrow A)}}&lt;br /&gt;
&lt;br /&gt;
2)&lt;br /&gt;
&lt;br /&gt;
:{{Формула|f=B^+ = BD}}, {{Формула|f=B^+ - B = B}}&lt;br /&gt;
&lt;br /&gt;
:{{Формула|f=D^+ = DB}}, {{Формула|f=D^+ - D = B}}&lt;br /&gt;
&lt;br /&gt;
:{{Формула|f=(BC)^+ = BCAD}}, {{Формула|f=(BC)^+ - BC = AD}}&lt;br /&gt;
&lt;br /&gt;
3) УНП получилось {{Формула|f=G = (B\rightarrow D, D\rightarrow B, BC\rightarrow AD)}}&lt;br /&gt;
&lt;br /&gt;
[[Категория:Теоретические основы реляционной алгебры (9 семестр)|С]]&lt;br /&gt;
[[Категория:Конспекты лекций и семинаров]]&lt;/div&gt;</summary>
		<author><name>85.202.230.62</name></author>
	</entry>
</feed>