<?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=195.19.32.132</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=195.19.32.132"/>
	<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/195.19.32.132"/>
	<updated>2026-04-30T14:15:34Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=%D0%9F%D0%91%D0%94_(9)_-_%D0%9B%D0%B5%D0%BA%D1%86%D0%B8%D1%8F_%E2%84%966_-_SQL_(%D0%BF%D1%80%D0%BE%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5)&amp;diff=1855</id>
		<title>ПБД (9) - Лекция №6 - SQL (продолжение)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=%D0%9F%D0%91%D0%94_(9)_-_%D0%9B%D0%B5%D0%BA%D1%86%D0%B8%D1%8F_%E2%84%966_-_SQL_(%D0%BF%D1%80%D0%BE%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5)&amp;diff=1855"/>
		<updated>2012-10-24T13:11:30Z</updated>

		<summary type="html">&lt;p&gt;195.19.32.132: Новая страница: «{{Backward|l=ПБД (9) - Лекция №5 - SQL}}  == Языки запросов ==  === SQL ===  ==== Синтаксис ====  ===== Представлени...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Backward|l=ПБД (9) - Лекция №5 - SQL}}&lt;br /&gt;
&lt;br /&gt;
== Языки запросов ==&lt;br /&gt;
&lt;br /&gt;
=== SQL ===&lt;br /&gt;
&lt;br /&gt;
==== Синтаксис ====&lt;br /&gt;
&lt;br /&gt;
===== Представления =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE VIEW(поле1, поле2, поле3) AS&lt;br /&gt;
    SELECT name, year, stud&lt;br /&gt;
    FROM film;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Обновляемые представления&#039;&#039;&#039; - позволяют не только SELECT, но и изменение данных в таблице. Должно быть на основе одной таблицы и содержать обязательные поля.&lt;br /&gt;
&lt;br /&gt;
==== Примеры ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- чёрно-белые фильмы с группировкой, условием отбора и сортировкой&lt;br /&gt;
SELECT name, max(year), stud&lt;br /&gt;
FROM film&lt;br /&gt;
WHERE type = &#039;bw&#039; GROUP BY name -- группировка&lt;br /&gt;
HAVING min(year) &amp;gt; 1930         -- условия отбора групп&lt;br /&gt;
ORDER BY name DESC;             -- сортировка&lt;br /&gt;
&lt;br /&gt;
-- объединение&lt;br /&gt;
SELECT ...&lt;br /&gt;
UNION [ALL] ...&lt;br /&gt;
SELECT ...&lt;br /&gt;
&lt;br /&gt;
-- пересечение&lt;br /&gt;
SELECT ...&lt;br /&gt;
INTERSECT [ALL] ...&lt;br /&gt;
SELECT ...&lt;br /&gt;
&lt;br /&gt;
-- разность&lt;br /&gt;
SELECT ...&lt;br /&gt;
EXCEPT [ALL] ...&lt;br /&gt;
SELECT ...&lt;br /&gt;
&lt;br /&gt;
-- без повторений&lt;br /&gt;
SELECT DISTINCT name&lt;br /&gt;
FROM film;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Языкы запросов к XML-документам ===&lt;br /&gt;
&lt;br /&gt;
Пример XML-документа:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml ... ?&amp;gt;&lt;br /&gt;
&amp;lt;db&amp;gt;&lt;br /&gt;
    &amp;lt;films&amp;gt;&lt;br /&gt;
        &amp;lt;f fid=&amp;quot;f1&amp;quot; year=1995&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Собачье сердце&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;role ra=&amp;quot;11&amp;quot;&amp;gt;Профессор&amp;lt;/role&amp;gt;&lt;br /&gt;
            &amp;lt;role ra=&amp;quot;22&amp;quot;&amp;gt;Пёс&amp;lt;/role&amp;gt;&lt;br /&gt;
            &amp;lt;stud&amp;gt;МФ&amp;lt;/stud&amp;gt;&lt;br /&gt;
        &amp;lt;/f&amp;gt;&lt;br /&gt;
        &amp;lt;f fid=&amp;quot;f2&amp;quot; year=1993&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;Терминатор&amp;lt;/name&amp;gt;&lt;br /&gt;
            &amp;lt;role ra=&amp;quot;3&amp;quot;&amp;gt;Терминатор&amp;lt;/role&amp;gt;&lt;br /&gt;
            &amp;lt;stud&amp;gt;WB&amp;lt;/stud&amp;gt;&lt;br /&gt;
            &amp;lt;stud&amp;gt;F20&amp;lt;/stud&amp;gt;&lt;br /&gt;
        &amp;lt;/f&amp;gt;&lt;br /&gt;
    &amp;lt;/films&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;acts&amp;gt;&lt;br /&gt;
        &amp;lt;a inn=&amp;quot;11&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;pers fio=&amp;quot;Иванов Иван Иванович&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;addr&amp;gt;Москва, Ленина, 1&amp;lt;/addr&amp;gt;&lt;br /&gt;
                &amp;lt;teatr&amp;gt;Ленком&amp;lt;/teatr&amp;gt;&lt;br /&gt;
                &amp;lt;teatr&amp;gt;Большой театр&amp;lt;/teatr&amp;gt;&lt;br /&gt;
                &amp;lt;stud&amp;gt;&lt;br /&gt;
                    &amp;lt;name&amp;gt;Мосфильм&amp;lt;/name&amp;gt;&lt;br /&gt;
                    &amp;lt;addr&amp;gt;Москва, Комсомола, 2&amp;lt;/addr&amp;gt;&lt;br /&gt;
                &amp;lt;/stud&amp;gt;&lt;br /&gt;
            &amp;lt;/pers&amp;gt;&lt;br /&gt;
        &amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;/acts&amp;gt;&lt;br /&gt;
&amp;lt;/db&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== XPath ====&lt;br /&gt;
&lt;br /&gt;
XML Path Language. Строит по документу дерево полуструктурированных данных.&lt;br /&gt;
&lt;br /&gt;
Сокращённая запись пути до фильма:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/db/films/f/name&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Полная запись:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/child::db/child::film/child::f&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сокращённая до фильма 1995 года:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/db/films/f/name[../@year=&amp;quot;1995&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Полная:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/child::db/child::film/child::f/child::name[parent(::)/attribute::year=&amp;quot;1995&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Оси:&lt;br /&gt;
* child - потомки. Стоит по умолчанию, потому можно не указывать;&lt;br /&gt;
* attribute - атрибуты @;&lt;br /&gt;
* parent - родители;&lt;br /&gt;
* ancestor - все предки;&lt;br /&gt;
* ancestor-or-self - все предки или я сам;&lt;br /&gt;
* descendant - все потомки вне зависимости от уровня вложенности;&lt;br /&gt;
* descendant-or-self - все потомки или я сам;&lt;br /&gt;
* following - все следующие (без предков и потомков);&lt;br /&gt;
* following-sibling - все следующие на одном уровне за текущим;&lt;br /&gt;
* preceding - все предыдущие (без предков и потомков)&lt;br /&gt;
* preceding-sibling - все предыдущие на одном уровне перед текущим;&lt;br /&gt;
* namespace - пространство имён.&lt;br /&gt;
&lt;br /&gt;
Обозначения:&lt;br /&gt;
* &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt; потомки;&lt;br /&gt;
* &amp;lt;code&amp;gt;..&amp;lt;/code&amp;gt; родители;&lt;br /&gt;
* &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; self.&lt;br /&gt;
&lt;br /&gt;
Имеется много встроенных функций. Основные:&lt;br /&gt;
* count() - подсчёт;&lt;br /&gt;
* sum() - сумма;&lt;br /&gt;
* min() - минимум;&lt;br /&gt;
* max() - максимум;&lt;br /&gt;
* name() - строка;&lt;br /&gt;
* substring(строка, с какого символа, сколько символов) - подстрока.&lt;br /&gt;
&lt;br /&gt;
Примеры:&lt;br /&gt;
&lt;br /&gt;
Все потомки:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/db//f&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Все элементы name:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/db//name&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Все вложенные через два уровня:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
//db/*/*/name&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Третий фильм:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
//f[3]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Третий фильм, если он снят в 1950 году:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
//f[3][@year=&amp;quot;1950&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Все фильмы, снятые в 1950, и взять из них третий:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
//f[@year=&amp;quot;1950&amp;quot;][3]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Все актёры, которые работали в Ленкоме:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
//a[./pers/teatr/text()=&amp;quot;Ленком&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Все родители для театра Ленком:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
//teatr[text()=&amp;quot;Ленком&amp;quot;]/parent::*&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Все актёры, у которых указано более трёх театров или более двух адресов:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
//a[count(teatr)&amp;gt;3 OR count(//addr)&amp;gt;2]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Все фильмы, в которых снимались актёры Ивановы Иваны Ивановичи:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
//f[//a[pers/@fio=&amp;quot;Иванов Иван Иванович&amp;quot;]/@inn=role/@ra]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== XQuery ====&lt;br /&gt;
 &lt;br /&gt;
Всё ещё сложнее, чем в XPath - он его расширил. Есть условия, функции, вложенные циклы.&lt;br /&gt;
 &lt;br /&gt;
Примеры:&lt;br /&gt;
 &lt;br /&gt;
вот один:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
let $a = 10, $b = 20, $c = &amp;quot;hello&amp;quot;&lt;br /&gt;
for $x in колонка&lt;br /&gt;
return $x&lt;br /&gt;
return &amp;lt;a&amp;gt;{$x}&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
вот другой:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
for $x in document(&amp;quot;filename.xml&amp;quot;)/db//a&lt;br /&gt;
let $c = $x/count(pers/teatr)&lt;br /&gt;
where $c &amp;gt; 2 and $a/pers/addr != &amp;quot;Москва&amp;quot;&lt;br /&gt;
return {$x, $c}&lt;br /&gt;
return &amp;lt;act fio={$x/pers/@fio}&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
===== Формат вывода =====&lt;br /&gt;
&lt;br /&gt;
Возврат элемента:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
return $x&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Возврат значения:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
return data($x/pers/...)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===== Вложенные циклы =====&lt;br /&gt;
&lt;br /&gt;
Как выглядит вложенный цикл:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
for $x in document(&amp;quot;filename.xml&amp;quot;)//a,&lt;br /&gt;
    $y in $x//teatr&lt;br /&gt;
return &amp;lt;newel&amp;gt;{$a/@inn $y/text()}&amp;lt;/newel&amp;gt;&lt;br /&gt;
order by $y/text()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===== Функции =====&lt;br /&gt;
&lt;br /&gt;
Объявление функции:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
declare function fun($var as XS:integer) as element(act)*&lt;br /&gt;
   {return element act {$var}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
Вызов функции:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
return {fun(10)}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Постреляционные базы данных (9 семестр)]]&lt;br /&gt;
[[Категория:Конспекты лекций и семинаров]]&lt;/div&gt;</summary>
		<author><name>195.19.32.132</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=%D0%9F%D0%91%D0%94_(9)_-_%D0%9B%D0%B5%D0%BA%D1%86%D0%B8%D1%8F_%E2%84%965_-_SQL&amp;diff=1854</id>
		<title>ПБД (9) - Лекция №5 - SQL</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=%D0%9F%D0%91%D0%94_(9)_-_%D0%9B%D0%B5%D0%BA%D1%86%D0%B8%D1%8F_%E2%84%965_-_SQL&amp;diff=1854"/>
		<updated>2012-10-24T12:54:23Z</updated>

		<summary type="html">&lt;p&gt;195.19.32.132: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Языки запросов ==&lt;br /&gt;
&lt;br /&gt;
* SQL;&lt;br /&gt;
* объектное расширение SQL;&lt;br /&gt;
* OQL;&lt;br /&gt;
* Datalog;&lt;br /&gt;
* XQuery.&lt;br /&gt;
&lt;br /&gt;
=== SQL ===&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;
* integer;&lt;br /&gt;
* float;&lt;br /&gt;
* boolean;&lt;br /&gt;
* char(10);&lt;br /&gt;
* varchar(255);&lt;br /&gt;
* clob;&lt;br /&gt;
* blob;&lt;br /&gt;
* domain.&lt;br /&gt;
&lt;br /&gt;
==== Синтаксис ====&lt;br /&gt;
&lt;br /&gt;
===== Создание таблицы =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE таблица&lt;br /&gt;
(&lt;br /&gt;
    поле1 тип ограничение,&lt;br /&gt;
    поле2 тип ограничение,&lt;br /&gt;
    поле3 тип ограничение&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ограничения =====&lt;br /&gt;
&lt;br /&gt;
Могут иметь имена:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CONSTRAINT имя;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER TABLE таблица&lt;br /&gt;
ADD CONSTRAINT имя CHECK(условие);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Виды ограничений:&lt;br /&gt;
* уровня атрибутов:&lt;br /&gt;
** NOT NULL;&lt;br /&gt;
** DEFAULT;&lt;br /&gt;
** UNIQUE;&lt;br /&gt;
** CHECK();&lt;br /&gt;
* уровня кортежей:&lt;br /&gt;
** PRIMARY KEY();&lt;br /&gt;
** FOREIGN KEY() REFERENCES table();&lt;br /&gt;
** DEFERRABLE INITIALLY DEFERRED;&lt;br /&gt;
** CHECK();&lt;br /&gt;
* общего вида - проверяется &#039;&#039;при любом&#039;&#039; изменении БД:&lt;br /&gt;
** ASSERTION;&lt;br /&gt;
** триггеры.&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE ASSERTION имя&lt;br /&gt;
CHECK((SELECT COUNT(*) FROM таблица1) &amp;gt; (SELECT COUNT(*) FROM таблица2);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример триггера:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
AFTER UPDATE [of поле] ON таблица REFERENCING&lt;br /&gt;
    OLD ROW AS имя1&lt;br /&gt;
    NEW ROW AS имя2&lt;br /&gt;
FOR EACH ROW [WHEN(условие)] {тело SQL};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Удаление таблицы =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP TABLE таблица;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Создание индекса =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE [UNIQUE] INDEX имя&lt;br /&gt;
ON таблица();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Соединение таблиц =====&lt;br /&gt;
&lt;br /&gt;
* таблица1 {{Формула|f=\times}} таблица2;&lt;br /&gt;
* join;&lt;br /&gt;
* natural join;&lt;br /&gt;
* cross join;&lt;br /&gt;
* outer join:&lt;br /&gt;
** left outer join;&lt;br /&gt;
** right outer join;&lt;br /&gt;
** full outer join.&lt;br /&gt;
&lt;br /&gt;
==== Примеры ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Film(&amp;lt;u&amp;gt;name, year&amp;lt;/u&amp;gt;, len, type, stud);&lt;br /&gt;
&lt;br /&gt;
Actor(&amp;lt;u&amp;gt;inn&amp;lt;/u&amp;gt;, fio, edu);&lt;br /&gt;
&lt;br /&gt;
Stud(&amp;lt;u&amp;gt;sname&amp;lt;/u&amp;gt;, addr);&lt;br /&gt;
&lt;br /&gt;
FA(&amp;lt;u&amp;gt;inn, name, year&amp;lt;/u&amp;gt;);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создание таблиц:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE Film&lt;br /&gt;
(&lt;br /&gt;
     name varchar(50),&lt;br /&gt;
     year integer CHECK(year&amp;gt;1850 AND year &amp;lt;=2012), -- потому что конец света&lt;br /&gt;
     len integer NOT NULL DEFAULT 120,&lt;br /&gt;
     type char(2),&lt;br /&gt;
     stud integer REFERENCES Stud(sid) ON UPDATE CASCADE ON DELETE SET NULL,&lt;br /&gt;
     &lt;br /&gt;
     PRIMARY KEY(name, year)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE Stud&lt;br /&gt;
(&lt;br /&gt;
     sid integer PRIMARY KEY UNIQUE,&lt;br /&gt;
     sname varchar(50) NOT NULL,&lt;br /&gt;
     addr varchar(300)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE Actor&lt;br /&gt;
(&lt;br /&gt;
    inn char(10) PRIMARY KEY,&lt;br /&gt;
    fio varchar(200),&lt;br /&gt;
    edu varchar(50),&lt;br /&gt;
    CHECK(edu IN(&#039;среднее&#039;, &#039;высшее&#039;, &#039;Щукинское&#039;))&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE FA&lt;br /&gt;
(&lt;br /&gt;
    act char(10) NOT NULL REFERENCES Actor(inn),&lt;br /&gt;
    fname varchar(50) NOT NULL,&lt;br /&gt;
    fyear integer NOT NULL,&lt;br /&gt;
    &lt;br /&gt;
    FOREIGN KEY(fname, fyear) REFERENCES Film(name, year),&lt;br /&gt;
    PRIMARY KEY(act, fname, fyear)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Извлечение данных:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * | поля | выражения | агрегация&lt;br /&gt;
FROM таблица | вложенный запрос&lt;br /&gt;
WHERE условие [AND | OR | NOT условие];&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Примеры:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- выбрать фильмы, снятые в 60-е года&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM Film&lt;br /&gt;
WHERE year &amp;gt; 1950 AND year &amp;lt; 1960;&lt;br /&gt;
&lt;br /&gt;
-- выбрать что-то ещё&lt;br /&gt;
SELECT name, year, len/60 AS hour&lt;br /&gt;
FROM Film&lt;br /&gt;
WHERE (name like &#039;%s&#039; or name like &#039;_a&#039;)&lt;br /&gt;
  AND EXISTS(SELECT * FA WHERE fname = name)&lt;br /&gt;
ORDER BY name, year DESC;&lt;br /&gt;
&lt;br /&gt;
-- фильмы студий Лос-Анджелеса&lt;br /&gt;
SELECT name, year, sname&lt;br /&gt;
FROM Film join Stud ON stud = sid&lt;br /&gt;
WHERE addr = &#039;Los Angeles&#039;;&lt;br /&gt;
&lt;br /&gt;
-- актёры фильма &amp;quot;The Matrix&amp;quot;&lt;br /&gt;
SELECT fio&lt;br /&gt;
FROM Actors join FA ON inn = act&lt;br /&gt;
WHERE fname = &#039;The Matrix&#039;;&lt;br /&gt;
&lt;br /&gt;
-- актёры, которые не снимались ни в одном фильме&lt;br /&gt;
SELECT fio&lt;br /&gt;
FROM Actor&lt;br /&gt;
WHERE inn NOT IN(SELECT act FROM FA);&lt;br /&gt;
&lt;br /&gt;
-- актёры, которые снялись хотя бы в одном фильме&lt;br /&gt;
SELECT fio&lt;br /&gt;
FROM Actor&lt;br /&gt;
WHERE inn IN(SELECT act FROM FA);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Forward|l=ПБД (9) - Лекция №6 - SQL (продолжение)}}&lt;br /&gt;
&lt;br /&gt;
[[Категория:Постреляционные базы данных (9 семестр)]]&lt;br /&gt;
[[Категория:Конспекты лекций и семинаров]]&lt;/div&gt;</summary>
		<author><name>195.19.32.132</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=%D0%9F%D0%91%D0%94_(9)_-_%D0%9B%D0%B5%D0%BA%D1%86%D0%B8%D1%8F_%E2%84%965_-_SQL&amp;diff=1853</id>
		<title>ПБД (9) - Лекция №5 - SQL</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=%D0%9F%D0%91%D0%94_(9)_-_%D0%9B%D0%B5%D0%BA%D1%86%D0%B8%D1%8F_%E2%84%965_-_SQL&amp;diff=1853"/>
		<updated>2012-10-24T12:49:57Z</updated>

		<summary type="html">&lt;p&gt;195.19.32.132: /* Опять наш пример */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Языки запросов ==&lt;br /&gt;
&lt;br /&gt;
* SQL;&lt;br /&gt;
* объектное расширение SQL;&lt;br /&gt;
* OQL;&lt;br /&gt;
* Datalog;&lt;br /&gt;
* XQuery.&lt;br /&gt;
&lt;br /&gt;
=== SQL ===&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;
* integer;&lt;br /&gt;
* float;&lt;br /&gt;
* boolean;&lt;br /&gt;
* char(10);&lt;br /&gt;
* varchar(255);&lt;br /&gt;
* clob;&lt;br /&gt;
* blob;&lt;br /&gt;
* domain.&lt;br /&gt;
&lt;br /&gt;
==== Синтаксис ====&lt;br /&gt;
&lt;br /&gt;
===== Создание таблицы =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE таблица&lt;br /&gt;
(&lt;br /&gt;
    поле1 тип ограничение,&lt;br /&gt;
    поле2 тип ограничение,&lt;br /&gt;
    поле3 тип ограничение&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ограничения =====&lt;br /&gt;
&lt;br /&gt;
Могут иметь имена:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CONSTRAINT имя;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER TABLE таблица&lt;br /&gt;
ADD CONSTRAINT имя CHECK(условие);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Виды ограничений:&lt;br /&gt;
* уровня атрибутов:&lt;br /&gt;
** NOT NULL;&lt;br /&gt;
** DEFAULT;&lt;br /&gt;
** UNIQUE;&lt;br /&gt;
** CHECK();&lt;br /&gt;
* уровня кортежей:&lt;br /&gt;
** PRIMARY KEY();&lt;br /&gt;
** FOREIGN KEY() REFERENCES table();&lt;br /&gt;
** DEFERRABLE INITIALLY DEFERRED;&lt;br /&gt;
** CHECK();&lt;br /&gt;
* общего вида - проверяется &#039;&#039;при любом&#039;&#039; изменении БД:&lt;br /&gt;
** ASSERTION;&lt;br /&gt;
** триггеры.&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE ASSERTION имя&lt;br /&gt;
CHECK((SELECT COUNT(*) FROM таблица1) &amp;gt; (SELECT COUNT(*) FROM таблица2);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример триггера:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
AFTER UPDATE [of поле] ON таблица REFERENCING&lt;br /&gt;
    OLD ROW AS имя1&lt;br /&gt;
    NEW ROW AS имя2&lt;br /&gt;
FOR EACH ROW [WHEN(условие)] {тело SQL};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Удаление таблицы =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DROP TABLE таблица;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Создание индекса =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE [UNIQUE] INDEX имя&lt;br /&gt;
ON таблица();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Соединение таблиц =====&lt;br /&gt;
&lt;br /&gt;
* таблица1 {{Формула|f=\times}} таблица2;&lt;br /&gt;
* join;&lt;br /&gt;
* natural join;&lt;br /&gt;
* cross join;&lt;br /&gt;
* outer join:&lt;br /&gt;
** left outer join;&lt;br /&gt;
** right outer join;&lt;br /&gt;
** full outer join.&lt;br /&gt;
&lt;br /&gt;
==== Примеры ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Film(&amp;lt;u&amp;gt;name, year&amp;lt;/u&amp;gt;, len, type, stud);&lt;br /&gt;
&lt;br /&gt;
Actor(&amp;lt;u&amp;gt;inn&amp;lt;/u&amp;gt;, fio, edu);&lt;br /&gt;
&lt;br /&gt;
Stud(&amp;lt;u&amp;gt;sname&amp;lt;/u&amp;gt;, addr);&lt;br /&gt;
&lt;br /&gt;
FA(&amp;lt;u&amp;gt;inn, name, year&amp;lt;/u&amp;gt;);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создание таблиц:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE Film&lt;br /&gt;
(&lt;br /&gt;
     name varchar(50),&lt;br /&gt;
     year integer CHECK(year&amp;gt;1850 AND year &amp;lt;=2012), -- потому что конец света&lt;br /&gt;
     len integer NOT NULL DEFAULT 120,&lt;br /&gt;
     type char(2),&lt;br /&gt;
     stud integer REFERENCES Stud(sid) ON UPDATE CASCADE ON DELETE SET NULL,&lt;br /&gt;
     &lt;br /&gt;
     PRIMARY KEY(name, year)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE Stud&lt;br /&gt;
(&lt;br /&gt;
     sid integer PRIMARY KEY UNIQUE,&lt;br /&gt;
     sname varchar(50) NOT NULL,&lt;br /&gt;
     addr varchar(300)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE Actor&lt;br /&gt;
(&lt;br /&gt;
    inn char(10) PRIMARY KEY,&lt;br /&gt;
    fio varchar(200),&lt;br /&gt;
    edu varchar(50),&lt;br /&gt;
    CHECK(edu IN(&#039;среднее&#039;, &#039;высшее&#039;, &#039;Щукинское&#039;))&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE FA&lt;br /&gt;
(&lt;br /&gt;
    act char(10) NOT NULL REFERENCES Actor(inn),&lt;br /&gt;
    fname varchar(50) NOT NULL,&lt;br /&gt;
    fyear integer NOT NULL,&lt;br /&gt;
    &lt;br /&gt;
    FOREIGN KEY(fname, fyear) REFERENCES Film(name, year),&lt;br /&gt;
    PRIMARY KEY(act, fname, fyear)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Извлечение данных:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * | поля | выражения | агрегация&lt;br /&gt;
FROM таблица | вложенный запрос&lt;br /&gt;
WHERE условие [AND | OR | NOT условие];&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Примеры:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- выбрать фильмы, снятые в 60-е года&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM Film&lt;br /&gt;
WHERE year &amp;gt; 1950 AND year &amp;lt; 1960;&lt;br /&gt;
&lt;br /&gt;
-- выбрать что-то ещё&lt;br /&gt;
SELECT name, year, len/60 AS hour&lt;br /&gt;
FROM Film&lt;br /&gt;
WHERE (name like &#039;%s&#039; or name like &#039;_a&#039;)&lt;br /&gt;
  AND EXISTS(SELECT * FA WHERE fname = name)&lt;br /&gt;
ORDER BY name, year DESC;&lt;br /&gt;
&lt;br /&gt;
-- фильмы студий Лос-Анджелеса&lt;br /&gt;
SELECT name, year, sname&lt;br /&gt;
FROM Film join Stud ON stud = sid&lt;br /&gt;
WHERE addr = &#039;Los Angeles&#039;;&lt;br /&gt;
&lt;br /&gt;
-- актёры фильма &amp;quot;The Matrix&amp;quot;&lt;br /&gt;
SELECT fio&lt;br /&gt;
FROM Actors join FA ON inn = act&lt;br /&gt;
WHERE fname = &#039;The Matrix&#039;;&lt;br /&gt;
&lt;br /&gt;
-- актёры, которые не снимались ни в одном фильме&lt;br /&gt;
SELECT fio&lt;br /&gt;
FROM Actor&lt;br /&gt;
WHERE inn NOT IN(SELECT act FROM FA);&lt;br /&gt;
&lt;br /&gt;
-- актёры, которые снялись хотя бы в одном фильме&lt;br /&gt;
SELECT fio&lt;br /&gt;
FROM Actor&lt;br /&gt;
WHERE inn IN(SELECT act FROM FA);&lt;br /&gt;
&lt;br /&gt;
-- актёры, которые снимались во всех фильмах&lt;br /&gt;
SELECT fio&lt;br /&gt;
FROM Actor&lt;br /&gt;
WHERE NOT продолжение следует&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Постреляционные базы данных (9 семестр)]]&lt;br /&gt;
[[Категория:Конспекты лекций и семинаров]]&lt;/div&gt;</summary>
		<author><name>195.19.32.132</name></author>
	</entry>
	<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%966_-_%D0%94%D0%BE%D0%BC%D0%B5%D0%BD%D1%8B&amp;diff=1852</id>
		<title>СЭВМ (9) - Лекция №6 - Домены</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%966_-_%D0%94%D0%BE%D0%BC%D0%B5%D0%BD%D1%8B&amp;diff=1852"/>
		<updated>2012-10-24T12:02:01Z</updated>

		<summary type="html">&lt;p&gt;195.19.32.132: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
== Домены ==&lt;br /&gt;
&lt;br /&gt;
В домене находится несколько серверов, каждый для своего предназначения. Сервера объединены в кластер.&lt;br /&gt;
&lt;br /&gt;
Клиент-серверная архитектура:&lt;br /&gt;
&lt;br /&gt;
[[Файл:9sSEVMl6pic1.png|link=Файл:9sSEVMl6pic1.svg]]&lt;br /&gt;
&lt;br /&gt;
Служба каталогов Active Directory обеспечивает работу сложной корпоративной среды, предоставляя следующие возможности:&lt;br /&gt;
* единая регистрация в сети;&lt;br /&gt;
* безопасность информации;&lt;br /&gt;
* централизованное управление;&lt;br /&gt;
* администрирование с использованием групповых политик;&lt;br /&gt;
* интеграция с DNS;&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;
[[Категория:Супер ЭВМ (9 семестр)]]&lt;br /&gt;
[[Категория:Конспекты лекций и семинаров]]&lt;/div&gt;</summary>
		<author><name>195.19.32.132</name></author>
	</entry>
	<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%966_-_%D0%94%D0%BE%D0%BC%D0%B5%D0%BD%D1%8B&amp;diff=1851</id>
		<title>СЭВМ (9) - Лекция №6 - Домены</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%966_-_%D0%94%D0%BE%D0%BC%D0%B5%D0%BD%D1%8B&amp;diff=1851"/>
		<updated>2012-10-24T12:01:54Z</updated>

		<summary type="html">&lt;p&gt;195.19.32.132: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Домены ==&lt;br /&gt;
&lt;br /&gt;
В домене находится несколько серверов, каждый для своего предназначения. Сервера объединены в кластер.&lt;br /&gt;
&lt;br /&gt;
Клиент-серверная архитектура:&lt;br /&gt;
&lt;br /&gt;
[[Файл:9sSEVMl6pic1.png|link=Файл:9sSEVMl6pic1.svg]]&lt;br /&gt;
&lt;br /&gt;
Служба каталогов Active Directory обеспечивает работу сложной корпоративной среды, предоставляя следующие возможности:&lt;br /&gt;
* единая регистрация в сети;&lt;br /&gt;
* безопасность информации;&lt;br /&gt;
* централизованное управление;&lt;br /&gt;
* администрирование с использованием групповых политик;&lt;br /&gt;
* интеграция с DNS;&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;
[[Категория:Супер ЭВМ (9 семестр)]]&lt;br /&gt;
[[Категория:Конспекты лекций и семинаров]]&lt;/div&gt;</summary>
		<author><name>195.19.32.132</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=%D0%9E%D0%B1%D1%89%D0%B5%D0%B6%D0%B8%D1%82%D0%B8%D0%B5_%E2%84%965&amp;diff=1850</id>
		<title>Общежитие №5</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=%D0%9E%D0%B1%D1%89%D0%B5%D0%B6%D0%B8%D1%82%D0%B8%D0%B5_%E2%84%965&amp;diff=1850"/>
		<updated>2012-10-24T11:58:12Z</updated>

		<summary type="html">&lt;p&gt;195.19.32.132: интернеты&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Главное общежитие факультета ИУ. Наши люди есть и в других общежитиях, но в основном всех заселяют сюда.&lt;br /&gt;
&lt;br /&gt;
== Корпус ==&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
 | align=&amp;quot;right&amp;quot; | Адрес: || 105043, Москва, Измайловский проспект, 73/2&lt;br /&gt;
 |-&lt;br /&gt;
 | align=&amp;quot;right&amp;quot; | Телефон: || -&lt;br /&gt;
 |-&lt;br /&gt;
 | align=&amp;quot;right&amp;quot; | Комендант: || Новожилова Валентина Михайловна&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Комендант принимает по следующему расписанию:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! День !! Время работы !! Обед&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;ПН&amp;lt;/span&amp;gt; || 09:00 - 18:00 || rowspan=&amp;quot;5&amp;quot; | 12:30-13:15&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;ВТ&amp;lt;/span&amp;gt; || 09:00 - 18:00&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;СР&amp;lt;/span&amp;gt; || 09:00 - 18:00&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;ЧТ&amp;lt;/span&amp;gt; || 09:00 - 18:00&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;ПТ&amp;lt;/span&amp;gt; || 09:00 - 16:45&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;СБ&amp;lt;/span&amp;gt; || выходной || rowspan=&amp;quot;2&amp;quot; | -&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ВС&amp;lt;/span&amp;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;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! День !! Время работы !! Перерыв !! Время работы&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;ПН&amp;lt;/span&amp;gt; || 06:00 - 11:00 || rowspan=&amp;quot;3&amp;quot; | 3 часа || 14:00 - 23:00 &lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;ВТ&amp;lt;/span&amp;gt; || 06:00 - 11:00 || 14:00 - 23:00 &lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;СР&amp;lt;/span&amp;gt; || 06:00 - 11:00 || 14:00 - 23:00 &lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ЧТ&amp;lt;/span&amp;gt; || colspan=&amp;quot;3&amp;quot; | санитарный день, душ закрыт&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;ПТ&amp;lt;/span&amp;gt; || 06:00 - 11:00 || rowspan=&amp;quot;3&amp;quot; | 3 часа || 14:00 - 23:00&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;СБ&amp;lt;/span&amp;gt; || 06:00 - 11:00 || 14:00 - 23:00&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;ВС&amp;lt;/span&amp;gt; || 06:00 - 11:00 || 14:00 - 23:00&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
На самом деле, пускать перестают уже в 22:45, потому что &amp;quot;&#039;&#039;с 22:45 до 23:00 душевые работают только на выход&#039;&#039;&amp;quot;. Кстати, раньше душевые работали до 01:00.&lt;br /&gt;
&lt;br /&gt;
В санитарный день можно ходить в душ в соседние общежития. Ближе всего - по переходу на шестом этаже в [[Общежитие №8 | общежитие №8]], там на каждом этаже есть одиночные душевые кабинки. Некоторые закрыты на замок жадными обитателями этажа, некоторые - нет. И чтобы не закрывали и те немногие, которые ещё открыты - ведите себя прилично и не оставляйте в кабинках свинарник.&lt;br /&gt;
&lt;br /&gt;
== Прачечная ==&lt;br /&gt;
&lt;br /&gt;
Прачечная находится на первом этаже. Если вам повезло и есть свободная стиральная машина, то за 40 минут вам всё постирают. Главное, не забыть прийти забрать постиранное, иначе оно будет лежать и киснуть.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
 | График работы:&lt;br /&gt;
 {| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
  ! День !! Время работы&lt;br /&gt;
  |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
  | &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;ПН&amp;lt;/span&amp;gt; || rowspan=&amp;quot;7&amp;quot; | 13:00 - 21:00 &lt;br /&gt;
  |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
  | &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;ВТ&amp;lt;/span&amp;gt;&lt;br /&gt;
  |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
  | &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;СР&amp;lt;/span&amp;gt;&lt;br /&gt;
  |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
  | &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;ЧТ&amp;lt;/span&amp;gt;&lt;br /&gt;
  |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
  | &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;ПТ&amp;lt;/span&amp;gt;&lt;br /&gt;
  |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
  | &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;СБ&amp;lt;/span&amp;gt;&lt;br /&gt;
  |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
  | &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;ВС&amp;lt;/span&amp;gt;&lt;br /&gt;
  |} &lt;br /&gt;
 | valign=&amp;quot;top&amp;quot; | Цены:&lt;br /&gt;
 {| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
  ! Услуга !! Стоимость&lt;br /&gt;
  |- align=&amp;quot;center&amp;quot; &lt;br /&gt;
  | Стирка (большая загрузка) || 110 рублей&lt;br /&gt;
  |- align=&amp;quot;center&amp;quot; &lt;br /&gt;
  | Стирка (средняя загрузка) || 80 рублей&lt;br /&gt;
  |- align=&amp;quot;center&amp;quot; &lt;br /&gt;
  | Сушка || 80 рублей&lt;br /&gt;
  |- align=&amp;quot;center&amp;quot; &lt;br /&gt;
  | Обслуживание || 10 рублей&lt;br /&gt;
 |}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
За обслуживание деньги берут в том случае, если вы заказали сушку - ваши носки и трусы будут руками перекладывать из машинки в сушилку. Если вы не заказали сушку, то мокрое своё шмотьё вы сами сложите в пакет и унесёте, тогда за обслуживание 10 рублей платить не надо.&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://horosho.h1.ru//index.php Продажа канцтоваров] прямо в общежитии, комната 731.&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;
[[Файл:Host5.mail.JPG|right|мини|200px|Как это выглядит сейчас]]&lt;br /&gt;
&lt;br /&gt;
Находятся на первом этаже и в ужасном состоянии. Самодельные ячейки, в которых с трудом умещаются конверты. Новая корреспонденция не сортируется, всё валится в кучу сверху. Письма лежат по сто лет.&lt;br /&gt;
&lt;br /&gt;
У нас есть один проект на эту тему. Пока всё в разработке.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Общежитие]]&lt;/div&gt;</summary>
		<author><name>195.19.32.132</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%963_-_%D0%A5%D0%BE%D1%80%D0%BE%D1%88%D0%B0%D1%8F_%D1%81%D1%85%D0%B5%D0%BC%D0%B0_%D0%91%D0%94_-_%D0%A1%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B1%D0%B5%D0%B7_%D0%BF%D0%BE%D1%82%D0%B5%D1%80%D1%8C&amp;diff=1832</id>
		<title>ТОРА (9) - Лекция №3 - Хорошая схема БД - Соединение без потерь</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%963_-_%D0%A5%D0%BE%D1%80%D0%BE%D1%88%D0%B0%D1%8F_%D1%81%D1%85%D0%B5%D0%BC%D0%B0_%D0%91%D0%94_-_%D0%A1%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B1%D0%B5%D0%B7_%D0%BF%D0%BE%D1%82%D0%B5%D1%80%D1%8C&amp;diff=1832"/>
		<updated>2012-10-23T10:44:25Z</updated>

		<summary type="html">&lt;p&gt;195.19.32.132: /* Соединение без потерь */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Пусть {{Формула|f=F}} и {{Формула|f=G}} - два множества ФЗ.&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=G}} называется &#039;&#039;покрытием&#039;&#039; {{Формула|f=F}}, если имеет место равенство {{Формула|f=G^+ = F^+}}&lt;br /&gt;
&lt;br /&gt;
Существуют различные виды покрытий. Но мы рассмотрим только один - &#039;&#039;условно-неизбыточное покрытие&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Алгоритм построения условно-неизбыточного покрытия ==&lt;br /&gt;
&lt;br /&gt;
1) если в множестве ФЗ {{Формула|f=F}} встречаются ФЗ с одинаковой левой частью {{Формула|f=X}}, то следует объединить эти ФЗ в одну ФЗ. Это следует из аксиомы объединения. Получившееся множество ФЗ обозначим {{Формула|f=G}};&lt;br /&gt;
&lt;br /&gt;
2) для каждой ФЗ {{Формула|f=X\rightarrow Y}} из {{Формула|f=G}} заменить её на {{Формула|f=X\rightarrow X^+ - X}};&lt;br /&gt;
&lt;br /&gt;
После выполнения 1) и 2) получаем замыкание {{Формула|f=G^+ = F}}&lt;br /&gt;
&lt;br /&gt;
=== Доказательство ===&lt;br /&gt;
&lt;br /&gt;
1)&lt;br /&gt;
&lt;br /&gt;
:если ФЗ {{Формула|f=X\rightarrow Y\in F}}, то эта ФЗ принадежит {{Формула|f=G^+}}, а из этого следует, что {{Формула|f=Y \subseteq X^+}}&lt;br /&gt;
&lt;br /&gt;
:По построению G имеет место ФЗ: {{Формула|f=X\rightarrow X^+ - X}}&lt;br /&gt;
&lt;br /&gt;
:Пополним эту ФЗ: {{Формула|f=X\rightarrow (X^+ - X)\bigcup X = X^+}}&lt;br /&gt;
&lt;br /&gt;
:Теперь по первой аксиоме Армстронга имеем {{Формула|f=X^+\rightarrow Y}}&lt;br /&gt;
&lt;br /&gt;
:Значит, {{Формула|f=X\rightarrow Y \in G^+}}, по третьей аксиоме Армстронга.&lt;br /&gt;
&lt;br /&gt;
2)&lt;br /&gt;
&lt;br /&gt;
:{{Формула|f=X\rightarrow Y \in G}}, {{Формула|f=X\rightarrow Y \in F^+}}&lt;br /&gt;
&lt;br /&gt;
:{{Формула|f=Y = X^+ - X}}&lt;br /&gt;
&lt;br /&gt;
:{{Формула|f=X\rightarrow X^+}} (по определению)&lt;br /&gt;
&lt;br /&gt;
:{{Формула|f=X^+\rightarrow X^+ - X}} (1 аксиома Армстронга)&lt;br /&gt;
&lt;br /&gt;
:{{Формула|f=X^+\rightarrow X^+ - X = Y}} (3 аксимома Армстронга)&lt;br /&gt;
&lt;br /&gt;
:{{Формула|f=X^+\rightarrow Y \in F^+}}&lt;br /&gt;
&lt;br /&gt;
=== Пример ===&lt;br /&gt;
&lt;br /&gt;
УСО: {{Формула|f=R = (A, B, C)}}&lt;br /&gt;
&lt;br /&gt;
Множество ФЗ: {{Формула|f=F = (A\rightarrow B, B\rightarrow A, C\rightarrow A, A\rightarrow C, B\rightarrow C)}}&lt;br /&gt;
&lt;br /&gt;
1)&lt;br /&gt;
&lt;br /&gt;
:{{Формула|f=G = (A\rightarrow BC, B\rightarrow AC, C\rightarrow A}}&lt;br /&gt;
&lt;br /&gt;
2)&lt;br /&gt;
&lt;br /&gt;
:{{Формула|f=A^+ = ABC}}, {{Формула|f=A^+ - A = BC}}&lt;br /&gt;
&lt;br /&gt;
:{{Формула|f=B^+ = BAC}}, {{Формула|f=B^+ - B = AC}}&lt;br /&gt;
&lt;br /&gt;
:{{Формула|f=C^+ = CAB}}, {{Формула|f=C^+ - C = AB}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Тогда {{Формула|f=G = (A\rightarrow BC, B\rightarrow AC, C\rightarrow AB)}} будет являться УНП.&lt;br /&gt;
&lt;br /&gt;
== Свойства &amp;quot;хорошей&amp;quot; схемы БД ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Хорошая&amp;quot;, но не оптимальная. Должна обладать следующими свойствами:&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;
&lt;br /&gt;
=== Соединение без потерь ===&lt;br /&gt;
&lt;br /&gt;
Чтобы схема БД обладала свойством соединения без потерь, необходимо, чтобы хотя бы одна из таблиц содержала ключ универсальной схемы отношений.&lt;br /&gt;
&lt;br /&gt;
Пусть {{Формула|f=\rho = (R_1 ... R_n)}} - схема БД. Она будет обладать свойством соединения без потерь, если для любого экземпляра отношения {{Формула|f=r}} из {{Формула|f=R}} справедливо равенство: {{Формула|f=r = \Pi_{R_1}(r) \bowtie \Pi_{R_2}(r) \bowtie ... \bowtie \Pi_{R_n}(r)}}, где {{Формула|f=\Pi_{R_i}(r)}} - это проекция экземпляра отношения {{Формула|f=r}} на множество атрибутов {{Формула|f=R_i}}&lt;br /&gt;
&lt;br /&gt;
==== Пример БД, не обладающей свойством соединения без потерь ====&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=R = (A, B, C)}}&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=\rho = (AB, BC) = (R_1, R_2)}}&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=F = (A\rightarrow B)}}&lt;br /&gt;
&lt;br /&gt;
Достаточно привести пример экземпляра {{Формула|f=r}}, для которого равенство не выполняется:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! A !! B !! C&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | rowspan=&amp;quot;2&amp;quot; | {{Формула|f=r}} || {{Формула|f=a_1}} || {{Формула|f=b_1}} || {{Формула|f=c_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | {{Формула|f=a_2}} || {{Формула|f=b_1}} || {{Формула|f=c_2}}&lt;br /&gt;
 |}&lt;br /&gt;
 &lt;br /&gt;
{|&lt;br /&gt;
 | valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! A !! B&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | rowspan=&amp;quot;2&amp;quot; | {{Формула|f=\Pi_{R_1}(r)}} || {{Формула|f=a_1}} || {{Формула|f=b_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | {{Формула|f=a_2}} || {{Формула|f=b_1}}&lt;br /&gt;
 |}&lt;br /&gt;
 |&lt;br /&gt;
 | valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
 |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! В !! С&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | rowspan=&amp;quot;2&amp;quot; | {{Формула|f=\Pi_{R_2}(r)}} || {{Формула|f=b_1}} || {{Формула|f=c_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | {{Формула|f=b_1}} || {{Формула|f=c_2}}&lt;br /&gt;
 |}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Полученное соединение не будет равняться {{Формула|f=r}}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! A !! B !! C&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | rowspan=&amp;quot;4&amp;quot; | {{Формула|f=\Pi_{R_1}(r) \bowtie \Pi_{R_2}(r)}} || {{Формула|f=a_1}} || {{Формула|f=b_1}} || {{Формула|f=c_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot; bgcolor=&amp;quot;#FFB6C1&amp;quot;&lt;br /&gt;
 | {{Формула|f=a_1}} || {{Формула|f=b_1}} || {{Формула|f=c_2}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot; bgcolor=&amp;quot;#FFB6C1&amp;quot;&lt;br /&gt;
 | {{Формула|f=a_2}} || {{Формула|f=b_1}} || {{Формула|f=c_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | {{Формула|f=a_2}} || {{Формула|f=b_1}} || {{Формула|f=c_2}}&lt;br /&gt;
 |}&lt;br /&gt;
 &lt;br /&gt;
Этот пример показывает, что при неправильном построении БД запросы могут выдавать неправильный результат.&lt;br /&gt;
&lt;br /&gt;
==== Пример БД, обладающей свойством соединения без потерь ====&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=R = (A, B, C)}}&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=\rho = (AB, AC) = (R_1, R_2)}}&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=F = (A\rightarrow B)}}&lt;br /&gt;
&lt;br /&gt;
Возьмём тот же экземпляр:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! A !! B !! C&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | rowspan=&amp;quot;2&amp;quot; | {{Формула|f=r}} || {{Формула|f=a_1}} || {{Формула|f=b_1}} || {{Формула|f=c_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | {{Формула|f=a_2}} || {{Формула|f=b_1}} || {{Формула|f=c_2}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
 | valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! A !! B&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | rowspan=&amp;quot;2&amp;quot; | {{Формула|f=\Pi_{R_1}(r)}} || {{Формула|f=a_1}} || {{Формула|f=b_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | {{Формула|f=a_2}} || {{Формула|f=b_1}}&lt;br /&gt;
 |}&lt;br /&gt;
 |&lt;br /&gt;
 | valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
 |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! A !! С&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | rowspan=&amp;quot;2&amp;quot; | {{Формула|f=\Pi_{R_2}(r)}} || {{Формула|f=a_1}} || {{Формула|f=c_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | {{Формула|f=a_2}} || {{Формула|f=c_2}}&lt;br /&gt;
 |}&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Полученное соединение будет равняться {{Формула|f=r}}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! A !! B !! C&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | rowspan=&amp;quot;2&amp;quot; | {{Формула|f=\Pi_{R_1}(r) \bowtie \Pi_{R_2}(r)}} || {{Формула|f=a_1}} || {{Формула|f=b_1}} || {{Формула|f=c_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | {{Формула|f=a_2}} || {{Формула|f=b_1}} || {{Формула|f=c_2}}&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Но это не доказательство, а только один пример, просто чтобы показать, в чём разница.&lt;br /&gt;
&lt;br /&gt;
==== Алгоритм проверки схемы БД на свойство соединения без потерь ====&lt;br /&gt;
 &lt;br /&gt;
{{Формула|f=\rho = (R_1 ... R_n)}}&lt;br /&gt;
 &lt;br /&gt;
{{Формула|f=R = (A_1 ... A_n)}}&lt;br /&gt;
 &lt;br /&gt;
1) построить таблицу T:&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! {{Формула|f=A_1}} || {{Формула|f=A_2}} || ... || {{Формула|f=A_k}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_1}}&lt;br /&gt;
 | || || ||&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_2}}&lt;br /&gt;
 | || || ||&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! ...&lt;br /&gt;
 | || || ||&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_n}}&lt;br /&gt;
 | || || ||&lt;br /&gt;
 |}&lt;br /&gt;
  &lt;br /&gt;
И заполнить таблицу T по правилу: если {{Формула|f=A_j \in R_i}}, то {{Формула|f=T_{ij}=a}}, иначе {{Формула|f=T_{ij}=b_i}}&lt;br /&gt;
&lt;br /&gt;
2) изменить таблицу T - циклически просматривать ФЗ из {{Формула|f=F}} в любом порядке, и для очередной ФЗ {{Формула|f=X\rightarrow Y \in F}} выполнить следующие действия:&lt;br /&gt;
* найти в таблице T строки, совпадающие по атрибутам {{Формула|f=X}} (по левой части);&lt;br /&gt;
* если хотя бы в одной такой строке значение атрибута {{Формула|f=A_m \in Y = a}}, то во всех найденных строках присвоить {{Формула|f=A_m = a}}, иначе присвоить {{Формула|f=A_m = b_i}} (}}i}} - номер одной из найденных строк, {{Формула|f=b_i}} должно быть одинаково во всех указанных строках);&lt;br /&gt;
* выполнить предыдущие два пункта для всех атрибутов {{Формула|f=A_l \in Y}};&lt;br /&gt;
* выполнить предыдущие три пункта для всех ФЗ из {{Формула|f=F}}, циклически их просматривая.&lt;br /&gt;
&lt;br /&gt;
3) алгоритм останавливается, если при очередном просмотре ФЗ из {{Формула|f=F}}:&lt;br /&gt;
* не произошло никаких изменений в таблице T;&lt;br /&gt;
* какая-нибудь строка в T не стала состоять сплошь из символов {{Формула|f=a}} (наличие такой строки и говорит о выполнении свойства соединения без потерь).&lt;br /&gt;
&lt;br /&gt;
===== Пример =====&lt;br /&gt;
&lt;br /&gt;
Пусть {{Формула|f=R = (A, B, C)}}&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=\rho = (AB, AC) = (R_1, R_2)}}&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=F = (A\rightarrow B)}}&lt;br /&gt;
&lt;br /&gt;
Доказать, что {{Формула|f=\rho}} обладает свойством соединения без потерь.&lt;br /&gt;
&lt;br /&gt;
1)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! A || B || C&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! AB&lt;br /&gt;
 | {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=b_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! BC&lt;br /&gt;
 | {{Формула|f=a}} || {{Формула|f=b_2}} || {{Формула|f=a}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
2)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
 | valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! A || B || C&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! AB&lt;br /&gt;
 | {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=b_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! BC&lt;br /&gt;
 | {{Формула|f=a}} || {{Формула|f=b_2}} || {{Формула|f=a}}&lt;br /&gt;
 |}&lt;br /&gt;
 |&lt;br /&gt;
 | valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
 |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! A || B || C&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! AB&lt;br /&gt;
 | {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=b_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! BC&lt;br /&gt;
 | {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || {{Формула|f=a}}&lt;br /&gt;
 |}&lt;br /&gt;
|}&lt;br /&gt;
  &lt;br /&gt;
Получили строку, сплошь состоящую из {{Формула|f=a}}. Значит {{Формула|f=\rho}} обладает свойством соединения без потерь.&lt;br /&gt;
 &lt;br /&gt;
===== Другой пример =====&lt;br /&gt;
 &lt;br /&gt;
Пусть {{Формула|f=R = (A, B, C, D, E, F, P, S)}}&lt;br /&gt;
 &lt;br /&gt;
{{Формула|f=\rho = (AB, ACDPS, BCPS, DEF) = (R_1, R_2, R_3, R_4)}}&lt;br /&gt;
 &lt;br /&gt;
{{Формула|f=F = (B\rightarrow C, D\rightarrow EF, B\rightarrow PS, A\rightarrow CDPS, AP\rightarrow S)}}&lt;br /&gt;
&lt;br /&gt;
Доказать, что {{Формула|f=\rho}} обладает свойством соединения без потерь.&lt;br /&gt;
 &lt;br /&gt;
1)&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! A || B || C || D || E || F || P || S&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! AB&lt;br /&gt;
 | {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=b_1}} || {{Формула|f=b_1}} || {{Формула|f=b_1}} || {{Формула|f=b_1}} || {{Формула|f=b_1}} || {{Формула|f=b_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! ACDPS&lt;br /&gt;
 | {{Формула|f=a}} || {{Формула|f=b_2}} || {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=b_2}} || {{Формула|f=b_2}} || {{Формула|f=a}} || {{Формула|f=a}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! BCPS&lt;br /&gt;
 | {{Формула|f=b_3}} || {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=b_3}} || {{Формула|f=b_3}} || {{Формула|f=b_3}} || {{Формула|f=a}} || {{Формула|f=a}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! DEF&lt;br /&gt;
 | {{Формула|f=b_4}} || {{Формула|f=b_4}} || {{Формула|f=b_4}} || {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=b_4}} || {{Формула|f=b_4}}&lt;br /&gt;
 |}&lt;br /&gt;
 &lt;br /&gt;
2)&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 || E || F || P || S&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! AB&lt;br /&gt;
 | {{Формула|f=a}} || {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || {{Формула|f=b_1}} || {{Формула|f=b_1}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! ACDPS&lt;br /&gt;
 | {{Формула|f=a}} || {{Формула|f=b_2}} || {{Формула|f=a}} || {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=a}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! BCPS&lt;br /&gt;
 | {{Формула|f=b_3}} || {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=b_3}} || {{Формула|f=b_3}} || {{Формула|f=b_3}} || {{Формула|f=a}} || {{Формула|f=a}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! DEF&lt;br /&gt;
 | {{Формула|f=b_4}} || {{Формула|f=b_4}} || {{Формула|f=b_4}} || {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=b_4}} || {{Формула|f=b_4}}&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 || E || F || P || S&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! AB&lt;br /&gt;
 | {{Формула|f=a}} || {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || bgcolor=&amp;quot;#32CD32&amp;quot; | {{Формула|f=a}} || bgcolor=&amp;quot;#32CD32&amp;quot; | {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! ACDPS&lt;br /&gt;
 | {{Формула|f=a}} || {{Формула|f=b_2}} || {{Формула|f=a}} || {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=a}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! BCPS&lt;br /&gt;
 | {{Формула|f=b_3}} || {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=b_3}} || {{Формула|f=b_3}} || {{Формула|f=b_3}} || {{Формула|f=a}} || {{Формула|f=a}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! DEF&lt;br /&gt;
 | {{Формула|f=b_4}} || {{Формула|f=b_4}} || {{Формула|f=b_4}} || {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=b_4}} || {{Формула|f=b_4}}&lt;br /&gt;
 |}&lt;br /&gt;
  &lt;br /&gt;
Вот и получили строку, сплошь состоящую из {{Формула|f=a}}. Значит {{Формула|f=\rho}} обладает свойством соединения без потерь.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Теоретические основы реляционной алгебры (9 семестр)]]&lt;br /&gt;
[[Категория:Конспекты лекций и семинаров]]&lt;/div&gt;</summary>
		<author><name>195.19.32.132</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%963_-_%D0%A1%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B1%D0%B5%D0%B7_%D0%BF%D0%BE%D1%82%D0%B5%D1%80%D1%8C&amp;diff=1831</id>
		<title>ТОРА (9) - Семинар №3 - Соединение без потерь</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%963_-_%D0%A1%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B1%D0%B5%D0%B7_%D0%BF%D0%BE%D1%82%D0%B5%D1%80%D1%8C&amp;diff=1831"/>
		<updated>2012-10-23T10:37:51Z</updated>

		<summary type="html">&lt;p&gt;195.19.32.132: /* Задача №3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Свойства хорошей БД:&lt;br /&gt;
* соединение без потерь;&lt;br /&gt;
* сохранение ФЗ;&lt;br /&gt;
* нормализация схемы отношений (3НФ).&lt;br /&gt;
&lt;br /&gt;
По этому семинару надо выполнить [[#ДЗ | домашнее задание]]. В письменном виде в тетради.&lt;br /&gt;
&lt;br /&gt;
== Пример 1 ==&lt;br /&gt;
&lt;br /&gt;
Таблицы {{Формула|f=\rho=(S,P,SP)}}&lt;br /&gt;
&lt;br /&gt;
*{{Формула|f=S}} - поставщики.&lt;br /&gt;
**SN - номер поставщика;&lt;br /&gt;
**SF - фамилия;&lt;br /&gt;
**SS - статус;&lt;br /&gt;
**SG - город.&lt;br /&gt;
&lt;br /&gt;
*{{Формула|f=P}} - деталь.&lt;br /&gt;
** PN - номер детали, ключ;&lt;br /&gt;
** PF - название детали;&lt;br /&gt;
** PC - цена за единицу.&lt;br /&gt;
&lt;br /&gt;
*{{Формула|f=SP}} - поставка.&lt;br /&gt;
** SN - номер поставщика;&lt;br /&gt;
** PN - номер детали;&lt;br /&gt;
** kol - количество поставляемых деталей.&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=\rho = (S, P, SP)}}&lt;br /&gt;
&lt;br /&gt;
Задачи:&lt;br /&gt;
# выписать ФЗ на основе знания предметной области;&lt;br /&gt;
# проверить, обладает ли {{Формула|f=\rho}} соединением без потерь;&lt;br /&gt;
# проверить, обладает ли {{Формула|f=\rho}} сохранением ФЗ;&lt;br /&gt;
# проверить, находится ли {{Формула|f=\rho}} в 3НФ.&lt;br /&gt;
&lt;br /&gt;
=== Задача 1 ===&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=SN\rightarrow SF}}, {{Формула|f=SN\rightarrow SS}}, {{Формула|f=SN\rightarrow SG}}&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=PN\rightarrow PF}}, {{Формула|f=PN\rightarrow PC}}&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=SNPN\rightarrow kol}}&lt;br /&gt;
&lt;br /&gt;
=== Задача 2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! SN !! SF !! SS !! SG !! PN !! PF !! PC !! kol&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=S}}&lt;br /&gt;
 | {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=b_1}} || {{Формула|f=b_1}} || {{Формула|f=b_1}} || {{Формула|f=b_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=P}}&lt;br /&gt;
 | {{Формула|f=b_2}} || {{Формула|f=b_2}} || {{Формула|f=b_2}} || {{Формула|f=b_2}} || {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=b_2}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=SP}}&lt;br /&gt;
 | {{Формула|f=a}} || {{Формула|f=b_3}} || {{Формула|f=b_3}} || {{Формула|f=b_3}} || {{Формула|f=a}} || {{Формула|f=b_3}} || {{Формула|f=b_3}} || {{Формула|f=a}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! SN !! SF !! SS !! SG !! PN !! PF !! PC !! kol&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=S}}&lt;br /&gt;
 | {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=b_1}} || {{Формула|f=b_1}} || {{Формула|f=b_1}} || {{Формула|f=b_1}} || {{Формула|f=b_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=P}}&lt;br /&gt;
 | {{Формула|f=b_2}} || {{Формула|f=b_2}} || {{Формула|f=b_2}} || {{Формула|f=b_2}} || {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=b_2}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=SP}}&lt;br /&gt;
 | {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || {{Формула|f=a}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Получили строку, сплошь состоящую из {{Формула|f=a}}, значит {{Формула|f=\rho}} обладает соединением без потерь - если мы соединим все три исходные таблицы, то получим правильный результат.&lt;br /&gt;
&lt;br /&gt;
=== Задача 3 ===&lt;br /&gt;
&lt;br /&gt;
1-4)&lt;br /&gt;
&lt;br /&gt;
:{{Формула|f=H=\varnothing}}&lt;br /&gt;
&lt;br /&gt;
:{{Формула|f=УНП = (SN\rightarrow SFSSSG, PN\rightarrow PFPC, SNPN\rightarrow kolSFSSSGPFPC)}}&lt;br /&gt;
&lt;br /&gt;
:смотрим, кто принадлежит, получается:&lt;br /&gt;
&lt;br /&gt;
:{{Формула|f=УНП = (SN\rightarrow SFSSSG, PN\rightarrow PFPC, SNPN\rightarrow kol)}}&lt;br /&gt;
&lt;br /&gt;
:{{Формула|f=H = (SNPN\rightarrow SFSSSGPFPC)}}&lt;br /&gt;
&lt;br /&gt;
5)&lt;br /&gt;
&lt;br /&gt;
:{{Формула|f=H\neq\varnothing}}&lt;br /&gt;
&lt;br /&gt;
6)&lt;br /&gt;
&lt;br /&gt;
:выполняется ли {{Формула|f=SNPN\rightarrow SFSSSGPFPC\in (SN\rightarrow SFSSSG, PN\rightarrow PFPC, SNPN\rightarrow kol)^+}}?&lt;br /&gt;
&lt;br /&gt;
:{{Формула|f=(SNPN)^+ = SNPNSFSSSGPFPCkol}}, значит выполняется, значит {{Формула|f=\rho}} обладает сохранением ФЗ.&lt;br /&gt;
&lt;br /&gt;
=== Задача 4 ===&lt;br /&gt;
&lt;br /&gt;
По каждой таблице.&lt;br /&gt;
&lt;br /&gt;
==== Таблица S ====&lt;br /&gt;
&lt;br /&gt;
Смотрим таблицу {{Формула|f=S}}:&lt;br /&gt;
&lt;br /&gt;
1)&lt;br /&gt;
&lt;br /&gt;
:{{Формула|f=X = SN}} - ключ.&lt;br /&gt;
&lt;br /&gt;
2)&lt;br /&gt;
&lt;br /&gt;
:{{Формула|f=Y(Y\nrightarrow X)}}: {{Формула|f=SF, SS, SG, SFSS, SFSG, SSSG, SFSSSG}}&lt;br /&gt;
&lt;br /&gt;
3)&lt;br /&gt;
&lt;br /&gt;
:рассматриваем {{Формула|f=Y = SF}}, ищем такие {{Формула|f=H}}, которые не принадлежат {{Формула|f=Y}}: {{Формула|f=SS, SG}}&lt;br /&gt;
&lt;br /&gt;
:а)&lt;br /&gt;
:: {{Формула|f=SF\rightarrow SS}}?&lt;br /&gt;
:: {{Формула|f=SF^+=SF}}, значит {{Формула|f=SS\notin SF^+}}&lt;br /&gt;
&lt;br /&gt;
:б)&lt;br /&gt;
:: {{Формула|f=SF\rightarrow SG}}?&lt;br /&gt;
:: {{Формула|f=SF^+=SF}}, значит {{Формула|f=SG\notin SF^+}}&lt;br /&gt;
&lt;br /&gt;
:и так далее, &amp;quot;рутинная тупая работа&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
:А можно было, оказывается, так: {{Формула|f=Y^+ = Y}}, а по условию {{Формула|f=H\notin Y}}, значит {{Формула|f=Y\nrightarrow H}}, так что таблица {{Формула|f=S}} находится в 3НФ.&lt;br /&gt;
&lt;br /&gt;
==== Таблица P ====&lt;br /&gt;
&lt;br /&gt;
В [[#ДЗ | домашнем задании]].&lt;br /&gt;
&lt;br /&gt;
==== Таблица SP ====&lt;br /&gt;
&lt;br /&gt;
В [[#ДЗ | домашнем задании]].&lt;br /&gt;
&lt;br /&gt;
== Пример 2 ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:9sTORAs3pic1.png|link=Файл:9sTORAs3pic1.svg]]&lt;br /&gt;
&lt;br /&gt;
Выписать все ФЗ.&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=\rho = (R_1, R_2, R_3, R_4, R_5)}}&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=F = (A\rightarrow C, B\rightarrow E, C\rightarrow F, D\rightarrow C)}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! A !! B !! C !! D !! E !! F&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_1}}&lt;br /&gt;
 | {{Формула|f=a}} || {{Формула|f=b_1}} || {{Формула|f=a}} || {{Формула|f=b_1}} || {{Формула|f=b_1}} || {{Формула|f=b_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_2}}&lt;br /&gt;
 | {{Формула|f=b_2}} || {{Формула|f=a}} || {{Формула|f=b_2}} || {{Формула|f=b_2}} || {{Формула|f=a}} || {{Формула|f=b_2}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_3}}&lt;br /&gt;
 | {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=b_3}} || {{Формула|f=b_3}} || {{Формула|f=b_3}} || {{Формула|f=b_3}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_4}}&lt;br /&gt;
 | {{Формула|f=b_4}} || {{Формула|f=b_4}} || {{Формула|f=a}} || {{Формула|f=b_4}} || {{Формула|f=b_4}} || {{Формула|f=a}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_5}}&lt;br /&gt;
 | {{Формула|f=b_5}} || {{Формула|f=b_5}} || {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=b_5}} || {{Формула|f=b_5}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! A !! B !! C !! D !! E !! F&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_1}}&lt;br /&gt;
 | {{Формула|f=a}} || {{Формула|f=b_1}} || {{Формула|f=a}} || {{Формула|f=b_1}} || {{Формула|f=b_1}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_2}}&lt;br /&gt;
 | {{Формула|f=b_2}} || {{Формула|f=a}} || {{Формула|f=b_2}} || {{Формула|f=b_2}} || {{Формула|f=a}} || {{Формула|f=b_2}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_3}}&lt;br /&gt;
 | {{Формула|f=a}} || {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || {{Формула|f=b_3}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_4}}&lt;br /&gt;
 | {{Формула|f=b_4}} || {{Формула|f=b_4}} || {{Формула|f=a}} || {{Формула|f=b_4}} || {{Формула|f=b_4}} || {{Формула|f=a}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_5}}&lt;br /&gt;
 | {{Формула|f=b_5}} || {{Формула|f=b_5}} || {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=b_5}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Нет строчки, сплошь состоящей из {{Формула|f=a}}, значит {{Формула|f=\rho}} не обладает соединением из потерь - запрос на соединение пяти таблицы может выполняться неправильно.&lt;br /&gt;
&lt;br /&gt;
Смотрим:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM R1, R2, R3, R4, R5&lt;br /&gt;
WHERE R1.A = R3.A&lt;br /&gt;
  AND R3.B = R2.B&lt;br /&gt;
  AND R1.C = R4.C&lt;br /&gt;
  AND R4.C = R5.C&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;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 !! E !! F&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! rowspan=&amp;quot;2&amp;quot; | {{Формула|f=r}}&lt;br /&gt;
 | {{Формула|f=a_1}} || {{Формула|f=b_1}} || {{Формула|f=c_1}} || {{Формула|f=d_1}} || {{Формула|f=e_1}} || {{Формула|f=f_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | {{Формула|f=a_2}} || {{Формула|f=b_2}} || {{Формула|f=c_1}} || {{Формула|f=d_2}} || {{Формула|f=e_2}} || {{Формула|f=f_1}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Найти проекции и выполнить их соединение по запросу выше.&lt;br /&gt;
&lt;br /&gt;
Строим проекции:&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=r_1 = \Pi_{R_1}(r)}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! A !! C&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! rowspan=&amp;quot;2&amp;quot; | {{Формула|f=r_1}}&lt;br /&gt;
 | {{Формула|f=a_1}} || {{Формула|f=c_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | {{Формула|f=a_2}} || {{Формула|f=c_1}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=r_2 = \Pi_{R_2}(r)}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! B !! E&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! rowspan=&amp;quot;2&amp;quot; | {{Формула|f=r_2}}&lt;br /&gt;
 | {{Формула|f=b_1}} || {{Формула|f=e_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | {{Формула|f=b_2}} || {{Формула|f=e_2}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=r_3 = \Pi_{R_3}(r)}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! A !! B&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! rowspan=&amp;quot;2&amp;quot; | {{Формула|f=r_3}}&lt;br /&gt;
 | {{Формула|f=a_1}} || {{Формула|f=b_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | {{Формула|f=a_2}} || {{Формула|f=b_2}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=r_4 = \Pi_{R_4}(r)}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! C !! F&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=r_4}}&lt;br /&gt;
 | {{Формула|f=c_1}} || {{Формула|f=f_1}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=r_5 = \Pi_{R_5}(r)}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! D !! C&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! rowspan=&amp;quot;2&amp;quot; | {{Формула|f=r_5}}&lt;br /&gt;
 | {{Формула|f=d_1}} || {{Формула|f=c_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | {{Формула|f=d_2}} || {{Формула|f=c_1}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Теперь соединения:&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=t_1 = r_1 \bowtie_A r_3}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! A !! B !! C&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! rowspan=&amp;quot;2&amp;quot; | {{Формула|f=t_1}}&lt;br /&gt;
 | {{Формула|f=a_1}} || {{Формула|f=b_1}} || {{Формула|f=c_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | {{Формула|f=a_2}} || {{Формула|f=b_2}} || {{Формула|f=c_1}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=t_2 = t_1 \bowtie_B r_2}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! A !! B !! C !! E&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! rowspan=&amp;quot;2&amp;quot; | {{Формула|f=t_2}}&lt;br /&gt;
 | {{Формула|f=a_1}} || {{Формула|f=b_1}} || {{Формула|f=c_1}} || {{Формула|f=e_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | {{Формула|f=a_2}} || {{Формула|f=b_2}} || {{Формула|f=c_1}} || {{Формула|f=e_2}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=t_3 = t_2 \bowtie_C r_4}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! A !! B !! C !! E !! F&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! rowspan=&amp;quot;2&amp;quot; | {{Формула|f=t_3}}&lt;br /&gt;
 | {{Формула|f=a_1}} || {{Формула|f=b_1}} || {{Формула|f=c_1}} || {{Формула|f=e_1}} || {{Формула|f=f_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | {{Формула|f=a_2}} || {{Формула|f=b_2}} || {{Формула|f=c_1}} || {{Формула|f=e_2}} || {{Формула|f=f_1}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=t_4 = t_3 \bowtie_C r_5}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! A !! B !! C !! D !! E !! F&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! rowspan=&amp;quot;4&amp;quot; | {{Формула|f=t_4}}&lt;br /&gt;
 | {{Формула|f=a_1}} || {{Формула|f=b_1}} || {{Формула|f=c_1}} || {{Формула|f=d_1}} || {{Формула|f=e_1}} || {{Формула|f=f_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | {{Формула|f=a_2}} || {{Формула|f=b_2}} || {{Формула|f=c_1}} || {{Формула|f=d_1}} || {{Формула|f=e_2}} || {{Формула|f=f_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | {{Формула|f=a_1}} || {{Формула|f=b_1}} || {{Формула|f=c_1}} || {{Формула|f=d_2}} || {{Формула|f=e_1}} || {{Формула|f=f_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | {{Формула|f=a_2}} || {{Формула|f=b_2}} || {{Формула|f=c_1}} || {{Формула|f=d_2}} || {{Формула|f=e_2}} || {{Формула|f=f_1}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Получившееся не совпадает с исходной. Вот и проявилось отсутствие сохранения без потерь.&lt;br /&gt;
&lt;br /&gt;
Но подсхемы {{Формула|f=(R_1, R_2, R_3, R_4)}} и {{Формула|f=(R_4, R_5)}}, при этом, обладают соединением без потерь.&lt;br /&gt;
&lt;br /&gt;
== ДЗ ==&lt;br /&gt;
&lt;br /&gt;
=== Задача №1 ===&lt;br /&gt;
&lt;br /&gt;
[[#Пример 1 | Находятся ли]] {{Формула|f=P}} и {{Формула|f=SP}} в 3НФ?&lt;br /&gt;
&lt;br /&gt;
==== Таблица P ====&lt;br /&gt;
&lt;br /&gt;
Ищем тройку:&lt;br /&gt;
: 1) {{Формула|f=X = PN}}, {{Формула|f=PN}} - ключ.&lt;br /&gt;
: 2) {{Формула|f=Y(Y\nrightarrow X)}}: {{Формула|f=PF, PC, PFPC}}&lt;br /&gt;
: 3) рассматриваем:&lt;br /&gt;
:: а) {{Формула|f=Y = PF}}, {{Формула|f=H\notin Y}}: {{Формула|f=PC}}&lt;br /&gt;
::: {{Формула|f=PF\rightarrow^? PC}} &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;нет&amp;lt;/span&amp;gt;&lt;br /&gt;
::: {{Формула|f=(PF)^+ = PF}}, {{Формула|f=PC\notin (PF)^+}}&lt;br /&gt;
:: б) {{Формула|f=Y = PC}}, {{Формула|f=H\notin Y}}: {{Формула|f=PF}}&lt;br /&gt;
::: {{Формула|f=PC\rightarrow^? PF}} &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;нет&amp;lt;/span&amp;gt;&lt;br /&gt;
::: {{Формула|f=(PC)^+ = PC}}, {{Формула|f=PF\notin (PC)^+}}&lt;br /&gt;
Таким образом, не удалось подобрать необходимую тройку, значит таблица находится в 3НФ.&lt;br /&gt;
&lt;br /&gt;
==== Таблица SP ====&lt;br /&gt;
&lt;br /&gt;
Ищем тройку:&lt;br /&gt;
: 1) {{Формула|f=X = PN SN}}, так как {{Формула|f=SN PN\rightarrow kol}}&lt;br /&gt;
: 2) подберём {{Формула|f=Y}}, для которого {{Формула|f=X\rightarrow Y}}, {{Формула|f=Y\rightarrow X}}, {{Формула|f=Y(Y\nrightarrow X)}}: {{Формула|f=kol}}&lt;br /&gt;
:: {{Формула|f=(kol)^+ = kol}}, {{Формула|f=PNSN\nsubseteq kol}}, {{Формула|f=kol\nrightarrow SN}}&lt;br /&gt;
: 3) {{Формула|f=Y = kol}} - нельзя подобрать непервичный атрибут {{Формула|f=H}}: {{Формула|f=H\notin Y}}&lt;br /&gt;
&lt;br /&gt;
Таким образом, не удалось подобрать необходимую тройку, значит таблица находится в 3НФ.&lt;br /&gt;
&lt;br /&gt;
=== Задача №2 ===&lt;br /&gt;
&lt;br /&gt;
Доказать, что эти две подсхемы {{Формула|f=(R_1, R_2, R_3, R_4)}} и {{Формула|f=(R_4, R_5)}} обадают  соединением без потерь, и запрос на соединение выполнится правильно.&lt;br /&gt;
&lt;br /&gt;
Ещё раз ФЗ: {{Формула|f=F = (A\rightarrow C, B\rightarrow E, C\rightarrow F, D\rightarrow C)}}&lt;br /&gt;
&lt;br /&gt;
==== Первая подсхема ====&lt;br /&gt;
&lt;br /&gt;
Подсхема {{Формула|f=(R_1, R_2, R_3, R_4)}}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! A !! B !! C !! E !! F&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_1}}&lt;br /&gt;
 | {{Формула|f=a}} || {{Формула|f=b_1}} || {{Формула|f=a}} || {{Формула|f=b_1}} || {{Формула|f=b_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_2}}&lt;br /&gt;
 | {{Формула|f=b_2}} || {{Формула|f=a}} || {{Формула|f=b_2}} || {{Формула|f=a}} || {{Формула|f=b_2}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_3}}&lt;br /&gt;
 | {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=b_3}} || {{Формула|f=b_3}} || {{Формула|f=b_3}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_4}}&lt;br /&gt;
 | {{Формула|f=b_4}} || {{Формула|f=b_4}} || {{Формула|f=a}} || {{Формула|f=b_4}} || {{Формула|f=a}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! A !! B !! C !! E !! F&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_1}}&lt;br /&gt;
 | {{Формула|f=a}} || {{Формула|f=b_1}} || {{Формула|f=a}} || {{Формула|f=b_1}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_2}}&lt;br /&gt;
 | {{Формула|f=b_2}} || {{Формула|f=a}} || {{Формула|f=b_2}} || {{Формула|f=a}} || {{Формула|f=b_2}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_3}}&lt;br /&gt;
 | {{Формула|f=a}} || {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}}|| bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_4}}&lt;br /&gt;
 | {{Формула|f=b_4}} || {{Формула|f=b_4}} || {{Формула|f=a}} || {{Формула|f=b_4}} || {{Формула|f=a}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Получили строку, сплошь состоящую из {{Формула|f=a}}, значит подсхема {{Формула|f=(R_1, R_2, R_3, R_4)}} обладает свойством соединения без потерь.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM R1, R2, R3, R4&lt;br /&gt;
WHERE R1.A = R2.A&lt;br /&gt;
  AND R3.B = R2.B&lt;br /&gt;
  AND R1.C = R4.C&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Строим проекции:&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=r_1 = \Pi_{R_1}(r)}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! A !! C&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! rowspan=&amp;quot;2&amp;quot; | {{Формула|f=r_1}}&lt;br /&gt;
 | {{Формула|f=a_1}} || {{Формула|f=c_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | {{Формула|f=a_2}} || {{Формула|f=c_1}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=r_2 = \Pi_{R_2}(r)}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! B !! E&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! rowspan=&amp;quot;2&amp;quot; | {{Формула|f=r_2}}&lt;br /&gt;
 | {{Формула|f=b_1}} || {{Формула|f=e_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | {{Формула|f=b_2}} || {{Формула|f=e_2}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=r_3 = \Pi_{R_3}(r)}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! A !! B&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! rowspan=&amp;quot;2&amp;quot; | {{Формула|f=r_3}}&lt;br /&gt;
 | {{Формула|f=a_1}} || {{Формула|f=b_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | {{Формула|f=a_2}} || {{Формула|f=b_2}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=r_4 = \Pi_{R_4}(r)}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! C !! F&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=r_4}}&lt;br /&gt;
 | {{Формула|f=c_1}} || {{Формула|f=f_1}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Теперь соединения:&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=t_1 = r_1 \bowtie_A r_3}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! A !! B !! C&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! rowspan=&amp;quot;2&amp;quot; | {{Формула|f=t_1}}&lt;br /&gt;
 | {{Формула|f=a_1}} || {{Формула|f=b_1}} || {{Формула|f=c_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | {{Формула|f=a_2}} || {{Формула|f=b_2}} || {{Формула|f=c_1}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=t_2 = t_1 \bowtie_B r_2}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! A !! B !! C !! E&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! rowspan=&amp;quot;2&amp;quot; | {{Формула|f=t_2}}&lt;br /&gt;
 | {{Формула|f=a_1}} || {{Формула|f=b_1}} || {{Формула|f=c_1}} || {{Формула|f=e_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | {{Формула|f=a_2}} || {{Формула|f=b_2}} || {{Формула|f=c_1}} || {{Формула|f=e_2}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=t_3 = t_2 \bowtie_C r_4}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! A !! B !! C !! E !! F&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! rowspan=&amp;quot;2&amp;quot; | {{Формула|f=t_3}}&lt;br /&gt;
 | {{Формула|f=a_1}} || {{Формула|f=b_1}} || {{Формула|f=c_1}} || {{Формула|f=e_1}} || {{Формула|f=f_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | {{Формула|f=a_2}} || {{Формула|f=b_2}} || {{Формула|f=c_1}} || {{Формула|f=e_2}} || {{Формула|f=f_1}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Соединение выполнилось верно.&lt;br /&gt;
&lt;br /&gt;
==== Вторая подсхема ====&lt;br /&gt;
&lt;br /&gt;
Подсхема {{Формула|f=(R_4, R_5)}}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! C !! D !! F&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_4}}&lt;br /&gt;
 | {{Формула|f=a}} || {{Формула|f=b_4}} || {{Формула|f=a}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_5}}&lt;br /&gt;
 | {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=b_5}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! C !! D !! F&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_4}}&lt;br /&gt;
 | {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || {{Формула|f=a}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_5}}&lt;br /&gt;
 | {{Формула|f=a}} || {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Получили строку, сплошь состоящую из {{Формула|f=a}}, значит подсхема {{Формула|f=(R_4, R_5)}} обладает свойством соединения без потерь.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM R4, R5&lt;br /&gt;
WHERE R4.C = R5.C&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Строим проекции:&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=r_4 = \Pi_{R_4}(r)}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! C !! F&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=r_4}}&lt;br /&gt;
 | {{Формула|f=c_1}} || {{Формула|f=f_1}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=r_5 = \Pi_{R_5}(r)}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! D !! C&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! rowspan=&amp;quot;2&amp;quot; | {{Формула|f=r_5}}&lt;br /&gt;
 | {{Формула|f=d_1}} || {{Формула|f=c_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | {{Формула|f=d_2}} || {{Формула|f=c_1}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Теперь соединение:&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=t_1 = r_4 \bowtie_C r_5}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! C !! D !! F&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! rowspan=&amp;quot;2&amp;quot; | {{Формула|f=t_1}}&lt;br /&gt;
 | {{Формула|f=c_1}} || {{Формула|f=d_1}} || {{Формула|f=f_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | {{Формула|f=c_1}} || {{Формула|f=d_2}} || {{Формула|f=f_1}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Соединение выполнилось верно.&lt;br /&gt;
&lt;br /&gt;
=== Задача №3 ===&lt;br /&gt;
&lt;br /&gt;
Как минимальным образом изменить схему БД из [[#Пример 2 | примера 2]], чтобы она обладала свойством соединения без потерь (чтобы запрос на соединение 5 таблиц выполнялся правильно).&lt;br /&gt;
&lt;br /&gt;
Изменяем схему:&lt;br /&gt;
&lt;br /&gt;
[[Файл:9sTORAs3pic2.png|link=Файл:9sTORAs3pic2.svg]]&lt;br /&gt;
&lt;br /&gt;
Однако, это не самый минимальный способ, потому что мы ввели новую ФЗ. Можно было {{Формула|f=D}} добавить в ключ, тогда связь была бы идентифицирующая.&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 !! E !! F&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_1}}&lt;br /&gt;
 | {{Формула|f=a}} || {{Формула|f=b_1}} || {{Формула|f=a}} || {{Формула|f=b_1}} || {{Формула|f=b_1}} || {{Формула|f=b_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_2}}&lt;br /&gt;
 | {{Формула|f=b_2}} || {{Формула|f=a}} || {{Формула|f=b_2}} || {{Формула|f=b_2}} || {{Формула|f=a}} || {{Формула|f=b_2}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_3}}&lt;br /&gt;
 | {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=b_3}} || {{Формула|f=a}} || {{Формула|f=b_3}} || {{Формула|f=b_3}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_4}}&lt;br /&gt;
 | {{Формула|f=b_4}} || {{Формула|f=b_4}} || {{Формула|f=a}} || {{Формула|f=b_4}} || {{Формула|f=b_4}} || {{Формула|f=a}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_5}}&lt;br /&gt;
 | {{Формула|f=b_5}} || {{Формула|f=b_5}} || {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=b_5}} || {{Формула|f=b_5}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! A !! B !! C !! D !! E !! F&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_1}}&lt;br /&gt;
 | {{Формула|f=a}} || {{Формула|f=b_1}} || {{Формула|f=a}} || {{Формула|f=b_1}} || {{Формула|f=b_1}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_2}}&lt;br /&gt;
 | {{Формула|f=b_2}} || {{Формула|f=a}} || {{Формула|f=b_2}} || {{Формула|f=b_2}} || {{Формула|f=a}} || {{Формула|f=b_2}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_3}}&lt;br /&gt;
 | {{Формула|f=a}} || {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_4}}&lt;br /&gt;
 | {{Формула|f=b_4}} || {{Формула|f=b_4}} || {{Формула|f=a}} || {{Формула|f=b_4}} || {{Формула|f=b_4}} || {{Формула|f=a}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=R_5}}&lt;br /&gt;
 | {{Формула|f=b_5}} || {{Формула|f=b_5}} || {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=b_5}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Получили строку, сплошь состоящую из {{Формула|f=a}}, значит схема обладает свойством соединения без потерь.&lt;br /&gt;
&lt;br /&gt;
=== Задача №4 ===&lt;br /&gt;
&lt;br /&gt;
Задана универсальная схема отношений:&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=R = (A, B, C, D, E, K, V, S, X, G)}}&lt;br /&gt;
&lt;br /&gt;
Задано множество ФЗ:&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=F = (A\rightarrow BCDV, K\rightarrow D, V\rightarrow SX, V\rightarrow G, XG\rightarrow KEV, VX\rightarrow D)}}&lt;br /&gt;
&lt;br /&gt;
Задана схема БД:&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=\rho = (AKE, ABCX, AVGX, VSDG)}}&lt;br /&gt;
&lt;br /&gt;
Обладает ли эта схема БД свойством соединения без потерь и свойством сохранения ФЗ.&lt;br /&gt;
&lt;br /&gt;
==== Соединение без потерь ====&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=\rho = (AKE, ABCX, AVGX, VSDG)}}&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=F = (A\rightarrow BCDV, K\rightarrow D, V\rightarrow SX, V\rightarrow G, XG\rightarrow KEV, VX\rightarrow D)}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! {{Формула|f=A}} !! {{Формула|f=B}} !! {{Формула|f=C}} !! {{Формула|f=D}} !! {{Формула|f=E}} !! {{Формула|f=K}} !! {{Формула|f=V}} !! {{Формула|f=S}} !! {{Формула|f=X}} !! {{Формула|f=G}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=AKE}}&lt;br /&gt;
 | {{Формула|f=a}} || {{Формула|f=b_1}} || {{Формула|f=b_1}} || {{Формула|f=b_1}} || {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=b_1}} || {{Формула|f=b_1}} || {{Формула|f=b_1}} || {{Формула|f=b_1}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=ABCX}}&lt;br /&gt;
 | {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=b_2}} || {{Формула|f=b_2}} || {{Формула|f=b_2}} || {{Формула|f=b_2}} || {{Формула|f=b_2}} || {{Формула|f=a}} || {{Формула|f=b_2}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=AVGX}}&lt;br /&gt;
 | {{Формула|f=a}} || {{Формула|f=b_3}} || {{Формула|f=b_3}} || {{Формула|f=b_3}} || {{Формула|f=b_3}} || {{Формула|f=b_3}} || {{Формула|f=a}} || {{Формула|f=b_3}} || {{Формула|f=a}} || {{Формула|f=a}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=VSDG}}&lt;br /&gt;
 | {{Формула|f=b_4}} || {{Формула|f=b_4}} || {{Формула|f=b_4}} || {{Формула|f=a}} || {{Формула|f=b_4}} || {{Формула|f=b_4}} || {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=b_4}} || {{Формула|f=a}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! !! {{Формула|f=A}} !! {{Формула|f=B}} !! {{Формула|f=C}} !! {{Формула|f=D}} !! {{Формула|f=E}} !! {{Формула|f=K}} !! {{Формула|f=V}} !! {{Формула|f=S}} !! {{Формула|f=X}} !! {{Формула|f=G}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=AKE}}&lt;br /&gt;
 | {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=ABCX}}&lt;br /&gt;
 | {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || {{Формула|f=b_2}} || {{Формула|f=b_2}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=AVGX}}&lt;br /&gt;
 | {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || {{Формула|f=b_3}} || {{Формула|f=b_3}} || {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || {{Формула|f=a}} || {{Формула|f=a}}&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ! {{Формула|f=VSDG}}&lt;br /&gt;
 | {{Формула|f=b_4}} || {{Формула|f=b_4}} || {{Формула|f=b_4}} || {{Формула|f=a}} || {{Формула|f=b_4}} || {{Формула|f=b_4}} || {{Формула|f=a}} || {{Формула|f=a}} || bgcolor=&amp;quot;lime&amp;quot; | {{Формула|f=a}} || {{Формула|f=a}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Получили строку, сплошь состоящую из {{Формула|f=a}}, значит {{Формула|f=\rho}} обладает соединением без потерь.&lt;br /&gt;
&lt;br /&gt;
==== Сохранение ФЗ ====&lt;br /&gt;
&lt;br /&gt;
1-4)&lt;br /&gt;
&lt;br /&gt;
: {{Формула|f=H = \varnothing}}&lt;br /&gt;
: {{Формула|f=УНП = A\rightarrow ABCDVSXGKE, K\rightarrow KD, V\rightarrow VSXGKED, XG\rightarrow XGKEVDS, VX\rightarrow VXDSGEK)}}&lt;br /&gt;
: {{Формула|f=H = (A\rightarrow DS, K\rightarrow D, V\rightarrow KE, XG\rightarrow KEDS, VX\rightarrow DSEK)}}&lt;br /&gt;
&lt;br /&gt;
5)&lt;br /&gt;
&lt;br /&gt;
: {{Формула|f=H\neq\varnothing}}&lt;br /&gt;
&lt;br /&gt;
6)&lt;br /&gt;
&lt;br /&gt;
: {{Формула|f=H\in^? (A\rightarrow BCV, V\rightarrow SXG)}} &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 DS}}, {{Формула|f=A^+ = ABCVSXG}}&lt;br /&gt;
&lt;br /&gt;
{{Формула|f=DS\notin ABCVSXG}}, значит {{Формула|f=\rho}} не обладает сохранением ФЗ.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Теоретические основы реляционной алгебры (9 семестр)|С]]&lt;br /&gt;
[[Категория:Конспекты лекций и семинаров]]&lt;/div&gt;</summary>
		<author><name>195.19.32.132</name></author>
	</entry>
</feed>