<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>

<channel>
	<title>Взгляд из-за кромки экрана</title>
	<atom:link href="http://life.screenshots.ru/feed/" rel="self" type="application/rss+xml" />
	<link>http://life.screenshots.ru</link>
	<description>Непривычный взгляд на привычные вещи</description>
	<pubDate>Sun, 21 Mar 2010 18:13:51 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Проектирование и управление разработкой сайта на платформе «1С-Битрикс: Управление сайтом» Информационная архитектура сайта</title>
		<link>http://life.screenshots.ru/the-code-inside/php-platform/information-architecture-bitrix/</link>
		<comments>http://life.screenshots.ru/the-code-inside/php-platform/information-architecture-bitrix/#comments</comments>
		<pubDate>Sun, 21 Mar 2010 17:41:26 +0000</pubDate>
		<dc:creator>Артём и Максим</dc:creator>
		
		<category><![CDATA[Техплатформа PHP]]></category>

		<category><![CDATA[IDEF]]></category>

		<category><![CDATA[архитектура]]></category>

		<category><![CDATA[битрикс]]></category>

		<category><![CDATA[информационная]]></category>

		<category><![CDATA[реляционная]]></category>

		<category><![CDATA[сущность]]></category>

		<category><![CDATA[таблица]]></category>

		<guid isPermaLink="false">http://life.screenshots.ru/?p=586</guid>
		<description><![CDATA[
Большинство IT-специалистов в ВУЗе слушали  курс «Основы  баз данных (ОБД)». Однако многие не придавали ему значение, кому-то  не повезло с преподавателем, а кто-то не смог пробраться сквозь  академические дебри реляционной теории.
Мы попытаемся, не прибегая к точным  формальным определениям, заново пересказать её основы, ограничиваясь  лишь теми сведениями, что могут быть [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;"><img class="alignnone size-full wp-image-659" title="1С-Битрикс: архитектура информационных блоков" src="http://life.screenshots.ru/wp-content/uploads/2010/03/information-architecture-bitrix.jpg" alt="1С-Битрикс: архитектура информационных блоков" width="400" height="300" /></p>
<p style="text-align: left;">Большинство IT-специалистов в ВУЗе слушали  курс «<a href="http://www.citforum.ru/database/dbguide/index.shtml">Основы  баз данных</a> (ОБД)». Однако многие не придавали ему значение, кому-то  не повезло с преподавателем, а кто-то не смог пробраться сквозь  академические дебри реляционной теории.</p>
<p style="text-align: left;">Мы попытаемся, не прибегая к точным  формальным определениям, заново пересказать её основы, ограничиваясь  лишь теми сведениями, что могут быть в первую очередь полезны при  проектировании структуры данных для Битрикса.</p>
<p style="text-align: left;"><span id="more-586"></span></p>
<h2 style="text-align: left;">Содержание<br />
</h2>
<ul style="text-align: left;">
<li><a href="http://life.screenshots.ru/the-code-inside/php-platform/information-architecture-bitrix/#_Toc247197032">Моделирование данных совместно с заказчиком</a>
<ul>
<li><a href="http://life.screenshots.ru/the-code-inside/php-platform/information-architecture-bitrix/#_Toc247197033">Участие заказчика в проектировании<br />
 </a></li>
<li><a href="http://life.screenshots.ru/the-code-inside/php-platform/information-architecture-bitrix/#_Toc247197034">Как превратить заказчика в единомышленника на период проектирования структуры данных<br />
 </a></li>
</ul>
</li>
<li><a href="http://life.screenshots.ru/the-code-inside/php-platform/information-architecture-bitrix/#_Toc247197035">Моделирование предметной области<br />
 </a></li>
<li><a href="http://life.screenshots.ru/the-code-inside/php-platform/information-architecture-bitrix/#_Toc247197036">Инфологическая модель</a>
<ul>
<li><a href="http://life.screenshots.ru/the-code-inside/php-platform/information-architecture-bitrix/#_Toc247197037">Сущность<br />
 </a></li>
<li><a href="http://life.screenshots.ru/the-code-inside/php-platform/information-architecture-bitrix/#_Toc247197038">Нормализация<br />
 </a></li>
<li><a href="http://life.screenshots.ru/the-code-inside/php-platform/information-architecture-bitrix/#_Toc247197039">Атрибуты. Первичный и вторичный ключи<br />
 </a></li>
<li><a href="http://life.screenshots.ru/the-code-inside/php-platform/information-architecture-bitrix/#_Toc247197040">Внешний ключ. Классификация<br />
 </a></li>
<li><a href="http://life.screenshots.ru/the-code-inside/php-platform/information-architecture-bitrix/#_Toc247197041">Кратность связи «один-ко-многим». Опциональность связи<br />
 </a></li>
<li><a href="http://life.screenshots.ru/the-code-inside/php-platform/information-architecture-bitrix/#_Toc247197042">Атрибуты типа Список<br />
 </a></li>
<li><a href="http://life.screenshots.ru/the-code-inside/php-platform/information-architecture-bitrix/#_Toc247197043">Кратность связи «один-к-одному». Дискриминация</a>
<ul>
<li><a href="http://life.screenshots.ru/the-code-inside/php-platform/information-architecture-bitrix/#_Toc247197044">Отображение дискриминации в одну таблицу (инфоблок)<br />
 </a></li>
<li><a href="http://life.screenshots.ru/the-code-inside/php-platform/information-architecture-bitrix/#_Toc247197045">Отображение дискриминации в N таблиц<br />
 </a></li>
<li><a href="http://life.screenshots.ru/the-code-inside/php-platform/information-architecture-bitrix/#_Toc247197046">Отображение дискриминации в N+1 таблицу<br />
 </a></li>
<li><a href="http://life.screenshots.ru/the-code-inside/php-platform/information-architecture-bitrix/#_Toc247197047">Отображение дискриминации в 5 таблиц<br />
 </a></li>
</ul>
</li>
<li><a href="http://life.screenshots.ru/the-code-inside/php-platform/information-architecture-bitrix/#_Toc247197048">Кратность связи «многие-ко-многим». Развязка<br />
 </a></li>
<li><a href="http://life.screenshots.ru/the-code-inside/php-platform/information-architecture-bitrix/#_Toc247197049">Каскадное удаление и проверка целостности данных<br />
 </a></li>
</ul>
</li>
</ul>
<p style="text-align: left;"> </p>
<p style="text-align: left;">Как правило, сайт – это, в первую очередь, средство представления информации.</p>
<div style="border-width: medium medium medium 4.5pt; border-style: none none none double; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>САЙТ = ИНФОРМАЦИЯ + ПРЕДСТАВЛЕНИЕ</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Информация, особенно в больших объёмах, нуждается в структурировании, классифицировании.</p>
<div style="border-width: medium medium medium 4.5pt; border-style: none none none double; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Принципы структурирования и классификации информации, разработанные для данного конкретного сайта, называются информационной архитектурой сайта.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">К сожалению, к построению информационной архитектуры зачастую подходят поверхностно. В результате получаются сайты с запутанной структурой, нечёткими разделами, который к тому же достаточно трудно поддерживать в актуальном состоянии.</p>
<p style="text-align: left;">Полноценное проектирование информационной архитектуры не только решает эти проблемы, но также существенно облегчает вывод дополнительной информации, по контексту близкой к странице.</p>
<p style="text-align: left;">Так, например, в правильно спроектированном книжном Интернет-магазине на детальной странице книги в автоматическом режиме также выводится краткая информация об авторе, анонсы книг со сходной тематикой, рецензии и прочее.</p>
<p style="text-align: left;">Не раз в этой работе мы повторим тот факт, что одним из основных преимуществ web-сайтов по сравнению с традиционными бумажными буклетами и каталогами является сильная связность между материалами. А качественно спроектировать хорошо связанный сайт можно, только прибегая к помощи аппарата реляционной теории.</p>
<h2 style="text-align: left;"><a name="_Toc247197032"></a>Моделирование данных совместно с заказчиком</h2>
<p style="text-align: left;">Большинство IT-специалистов в ВУЗе слушали курс «<a href="http://www.citforum.ru/database/dbguide/index.shtml">Основы баз данных</a> (ОБД)». Однако многие не придавали ему значение, кому-то не повезло с преподавателем, а кто-то не смог пробраться сквозь академические дебри реляционной теории.</p>
<p style="text-align: left;">Мы попытаемся, не прибегая к точным формальным определениям, заново пересказать её основы, ограничиваясь лишь теми сведениями, что могут быть в первую очередь полезны при проектировании структуры данных для Битрикса.</p>
<h3 style="text-align: left;"><a name="_Toc247197033"></a>Участие заказчика в проектировании</h3>
<p style="text-align: left;">В книгах по самосовершенствованию для руководителей проектов нередко пишут что-то вроде «определитесь с целями, определитесь с наградами и прочими мотивациями – и это уже полдела». Оптимисты!</p>
<p style="text-align: left;">Да, бриф – это очень важно. Но с созданием брифа работа с заказчиком не заканчивается, а только начинается.</p>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Бриф слишком мал для того, чтобы вместить в себя все важные вещи. Напротив, ТЗ обычно слишком велико, чтобы его целиком можно было осознать, обсудить и при этом не потеряться в его дебрях.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Предстоит сделать самое сложное – вместе с заказчиком построить инфологическую, а потом и даталогическую модели сайта (о них чуть ниже).</p>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Даталогическую модель сайта можно построить и без заказчика, если у него нет хорошего понимания, а значит, и разумных требований в вопросах оптимизации производительности системы.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Умерьте свой оптимизм: вне зависимости от уровня вашей квалификации <strong>вы не создадите информационную архитектуру сайта без плотного участия заказчика</strong>. Это означает буквально следующее: вы вместе с заказчиком садитесь поудобнее около достаточно большого монитора (хотя бы 20 дюймов), запускаете <a href="http://office.microsoft.com/ru-ru/visio/">MS Visio</a> – и рисуете.</p>
<p style="text-align: left;">Пожалуйста, не забудьте заранее предупредить заказчика о том, что ему придётся провести с вами у монитора весьма продолжительное время. Возможно, сессии рисования займут не один рабочий день с таймаутами для обдумывания наиболее сложных моментов.</p>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Внимание! Таймауты брать обязательно и для вас, и для заказчика. Так, вы успеете аккуратно дорисовать то, что во время сессии вы с заказчиком отрисовали лишь вчерне. Заказчик же успеет проконсультироваться со своими сотрудниками, заново поднять необходимые документы, наконец, просто отдохнуть от несвойственной и поэтому чрезвычайно трудной для него работы.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Разумеется, чтобы заказчик не заскучал, вы должны владеть Visio в совершенстве. Благо, для рисования ER-диаграмм не требуется слишком много навыков рисования (зато потребуется отличное знание реляционной теории). В данной главе мы рассмотрим её основы.</p>
<p style="text-align: left;">Согласны, убедить заказчика в необходимости совместного рисования ER-диаграммы ох как непросто. Считается, что в идеале от заказчика должно быть получено объёмистое ТЗ, где как раз и будут перечислены все сущности и связи. А уже по этому ТЗ проектировщик должен самостоятельно нарисовать ER. Осмелимся утверждать, что это неверно, и вот почему:</p>
<ul style="text-align: left;">
<li>никто не способен построить ER-диаграмму «в голове», чтобы перенести потом её в текстовом виде в ТЗ (и тем более не способен ваш заказчик);</li>
<li>в ТЗ без должной модерации процесса со стороны технического специалиста обычно попадает масса незначительных связок, деталей, «бантиков» – и упускаются самые основные связи и атрибуты (заказчик может интуитивно понимать, например, кратности связей между сущностями, однако словами выразить их, вероятно, не сможет);</li>
<li>при самостоятельном составлении ER-модели информационный архитектор, не будучи специалистом в предметной области заказчика, нарисует красивую, стройную модель, которая, увы, будет далека от реалий;</li>
<li>даже если предположить, что заказчик напишет толковое ТЗ, всё равно его придётся переносить в структуру базы данных – при этом наверняка появится масса разночтений, тогда как ER-модель практически на сто процентов читается однозначно.</li>
</ul>
<p style="text-align: left;">При проектировании традиционных приложений, связанных с использованием баз данных, обычно не возникает вопроса о необходимости создания ER-модели. К величайшему сожалению, в web-индустрии (включая сообщество Битрикс-разработчиков) с этим дела обстоят весьма печально. Возможно, это связано с тем, что web-программисты в гораздо большей степени «визуалы», тогда как традиционные программисты – в основном, «абстракционщики».</p>
<p style="text-align: left;">Так вот, мало-мальски сложный сайт сайт – это, <strong>в первую очередь</strong>, система хранения, обработки и отображения информации, а потом уже всё остальное. И продумать структуру этой информации – первейшая задача проектировщика. Именно структура данных, а не карта сайта, в основном определяет будущую функциональность сайта и путь его развития.</p>
<p style="text-align: left;">Не следует браться за создание сайта, не отделив статику от динамики и не спроектировав структуру базы данных для последней.</p>
<p style="text-align: left;">Нередко проектировщики всё же создают некоторое подобие ER-диаграммы. При этом они выносят на неё лишь самые основные сущности (то есть те, что заказчик, не являясь специалистом в этой области, отметил в ТЗ) и не удосуживаются отрисовать полностью все возможные атрибуты и связи. Мотивируют они это тем, что по мере работы над проектом диаграмма непрерывно будет изменяться.</p>
<p style="text-align: left;">Это утверждение абсолютно верно. Как сказал Антуан де Сент-Экзюпери, «достроенный город – мёртвый город». Проект – живой организм, и только по окончании проекта известны все требования – и от этого никуда не деться.</p>
<p style="text-align: left;">Однако если уже в самом начале потратить время и максимально точно определиться с тем, что же всё-таки планируется вынести на сайт, то потом этих переделок и новых требований будет существенно меньше. (Они будут, но это будет скорее обусловлено тем, что за время разработки бизнес заказчика меняется, а не тем, что в самом начале решили не расставлять все точки над i).</p>
<p style="text-align: left;">Итак, мы считаем, что для создания качественного сайта необходимо создание в самом начале полноценной ER-модели со всеми сущностями, атрибутами и связями. Именно она станет основой для проектирования структуры разделов («финальной» карты сайта), URL-адресов и даже макетов страниц.</p>
<p style="text-align: left;">Существует несколько способов (методологий) проектирования информационной архитектуры. Так, например, в <a href="http://ru.wikipedia.org/wiki/UML">UML</a> значительное внимание уделяется объектной природе данных, а IDEF1X основное внимание уделяет их реляционной природе (хотя, справедливости ради, отметим, что в IDEF1X можно-таки частично реализовывать объектный подход – с помощью дискриминации, о ней чуть позже).</p>
<p style="text-align: left;">Как утверждает <a href="http://ru.wikipedia.org/wiki/IDEF">Wikipedia</a>, при создании IDEF-методологии основное внимание уделялось возможности эффективного обмена информацией между всеми специалистами. С широким применением этой связано возникновение основных идей понятия реинжиниринга бизнес-процессов.</p>
<div style="border-width: medium medium medium 4.5pt; border-style: none none none double; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>IDEF1X – это одна из методологий семейства IDEF, применяющаяся для построения информационной модели предметной области.</p>
<p><br class="spacer_" /></p>
</div>
<h3 style="text-align: left;"><a name="_Toc247197034"></a>Как превратить заказчика в единомышленника на период проектирования структуры данных</h3>
<p style="text-align: left;">Объяснить заказчику, чем вы сейчас будете заниматься, очень просто. Собственно, и нотация IDEF1x создавалась с оглядкой на то, что <strong>пользователем этих моделей сможет быть кто угодно</strong> – от квалифицированного информационного архитектора (инфоарха) до заказчика, которому объяснили условные обозначения.</p>
<p style="text-align: left;">Следует, правда, понимать, что даже зная условные обозначения, заказчик вряд ли сможет самостоятельно прочитать диаграмму, если видит её впервые. Поэтому обязательно требуется зачитывать её заказчику, объясняя смысл каждой сущности и каждой связи.</p>
<p style="text-align: left;">Чтобы заказчику было легче вас понимать, начните с того, что попросите его предоставить ворох материалов (лучше в бумажном виде), с которыми он работает. Потом однотипные материалы (книги, распечатки новостей магазина, карточки со сведениями об издательствах) разложить «по отдельным кучкам», а разнотипные материалы (история магазина, контактная информация, условия оплаты) отложить в отдельную стопку. Весьма вероятно, что заказчик даже уже сам проделал эту работу.</p>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Помимо явной пользы для дела, заказчику будет очень приятно, что вы настолько внимательно и с неподдельным интересом знакомитесь с его деятельностью. Задавайте ему вопросы просто «для интереса», узнайте, чем живёт он и его сотрудники, аккуратно выведывайте существующие проблемы в бизнес-процессах. Наконец, попросите его познакомить вас с другими его сотрудниками, находящимися на разных уровнях: так вам будет легче понять реалии жизни организации и увидеть будущих редакторов и администраторов сайта.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">На примере этих «кучек» вам будет нетрудно объяснить заказчику, что такое сущности:</p>
<ul style="text-align: left;">
<li>однотипные материалы на жаргоне сайтостроителей называются <strong>динамикой</strong> (потому что к этим материалам очень часто, динамично, добавляются новые материалы того же вида);</li>
<li>каждая «кучка» однотипных материалов называется <strong>сущностью</strong> (не бойтесь в меру использовать узкоспециальную терминологию, но обязательно добивайтесь, чтобы заказчик её понимал);</li>
<li>разнотипные материалы в отдельной стопке называются <strong>статикой</strong> (они описывают, как правило, основополагающие моменты деятельности компании, не зависящие от времени – поэтому они статичны, то есть меняются достаточно редко).</li>
</ul>
<p style="text-align: left;">Статика хранится в виде отдельных файлов, динамика хранится в базе данных.</p>
<p style="text-align: left;">В области деятельности предприятия может быть достаточно много сущностей, но далеко не все они являются существенными для работы сайта. Необходимо выделить <strong>только самые необходимые</strong>.</p>
<p style="text-align: left;">Преимущество сайтов перед корпоративными брошюрами с точки зрения организации данных, заключается в возможности:</p>
<ul style="text-align: left;">
<li>расставлять ссылки между взаимосвязанными данными;</li>
<li>произвольно классифицировать, упорядочивать, фильтровать информацию.</li>
</ul>
<p style="text-align: left;">Важно объяснить заказчику, что при создании модели предметной области мы обсуждаем именно динамику, а не расстановку гиперссылок и не внешний вид страниц (иначе он будет старательно упоминать важность на сайте, скажем, контактной информации и формы обратного звонка, чем будет несказанно вас нервировать).</p>
<p style="text-align: left;">Что объединяет документы в каждой из «кучек» (извините, сущностей)?</p>
<ul style="text-align: left;">
<li>совокупность документов, лежащих в стопке, можно озаглавить <strong>существительным во множественном числе</strong> (например, «Книги», «Новости», «Издательства»);</li>
<li>все документы в стопке имеют <strong>один и тот же набор атрибутов</strong> (например, у каждой книги есть автор, издательство, дата выпуска, аннотация и т.п.);</li>
<li>документы в стопке можно <strong>отсортировать</strong> по какому-либо атрибуту (например, упорядочить книги по дате выпуска), либо <strong>отфильтровать</strong> (например, отобрать из стопки книги такого-то издательства).</li>
</ul>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Пожалуйста, сразу объясните заказчику разницу между сортировкой и фильтрацией. Как ни странно, есть немало людей, которые прекрасно справляются и с тем, и с другим интуитивно, но умом не понимают разницу этих между этими понятиями.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">И название книги, и её издательство написаны на обложке книги строкой текста. Однако название книги – это неотъемлемая часть самой книги, тогда как на издательство на обложке всего лишь ссылаются. Издательство существует само по себе, оно могло выпустить множество других книг. Более того, у нас даже есть отдельная стопка карточек издательств, и среди них есть карточка данного издательства.</p>
<p style="text-align: left;">Данные издательства (например, почтовый адрес) написаны на обложке книги, однако если бы у каждого читателя был доступ к стопке пронумерованных карточек издательств, достаточно было бы на обложке книги указать только номер карточки, а название и адрес издательства читатель нашёл бы на карточке с нужным номером. Это кажется крайне неудобным для обычной жизни, но компьютер справляется с этим легко.</p>
<p style="text-align: left;">А теперь представьте: издательство переехало. Во всех ранее выпущенных книгах адрес стал неверным, и с этим ничего не поделать. Но если бы на обложке был написан номер карточки, то достаточно было бы изменить адрес в этой карточке – и читатель любой, даже самой старой книги, мог бы получить актуальную информацию об адресе. И с этим легко справляется сайт.</p>
<p style="text-align: left;">Аналогично с автором книги – скорее всего, где-то существует картотека авторов (и нам не мешало бы ей обзавестись), и данная книга ссылается на одну из карточек.</p>
<p style="text-align: left;">Теперь представим, что нам надо расставить книги по полкам, и тут возникает другая проблема. В одном случае нам надо упорядочить по авторам (первая полка – все книги Иванова, вторая – Петрова, …), иногда – по издательствам (первая – «Эксмо», вторая – «Символ плюс», …), а иногда и по тематике (первая – «компьютерная литература», вторая – «психология», …) – для тематик нам тоже придётся завести картотеку. Каждый из этих вариантов называется <strong>классификацией</strong>, а если вариантов классификации много, то это называют <strong>многоаспектной классификацией</strong> (или таксономией). Каждый классификационный признак называют <strong>классификатором</strong>, а то, что мы классифицируем (в данном случае сущность «Книги») ­– объектом классификации (классифицируемой сущностью).</p>
<p style="text-align: left;">Классификатор тоже иногда может быть классифицирован. Так, например, авторов можно классифицировать по городам, в которых они проживают. В этом случае авторы уже выступают не в качестве классификатора, а в качестве объекта классификации. Классификатором же является картотека (сущность) «Города».</p>
<p style="text-align: left;">Отношение между сущностью-классификатором и сущностью-объектом классификации называют связью между сущностями. При большом количестве сущностей структура связей может быть достаточно плотной, напоминая блюдо макарон.</p>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Внимание! Если ваша диаграмма похожа на блюдо макарон, то вы и сами будете с трудом её читать. Заказчик же вообще впадёт в депрессию и обязательно заявит, что это для него слишком сложно и он для того вас и нанял, чтобы вы избавили его от этого ужаса. Поэтому старайтесь во время каждого таймаута располагать сущности так, чтобы количество пересечений между связями было минимально, а сущности располагались в порядке подчинённости (более общие выше или левее, чем более частные).</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Связи имеют <strong>кратности</strong>. Так, обычно связь между сущностью-классификатором и сущностью-объектом классификации имеет кратность «<strong>один-ко-многим</strong>», например:</p>
<ul style="text-align: left;">
<li> у одного автора <strong>может быть много</strong> книг;</li>
<li> в одном городе <strong>может жить много</strong> авторов.</li>
</ul>
<p style="text-align: left;">Слово «может» в данном случае означает, что даже если автор написал только одну книгу, то, в принципе, мы исходим из того, что он мог написать несколько книг, и «одна» – это частный случай «нескольких».</p>
<p style="text-align: left;">Пожалуй, это всё, что надо поначалу объяснить заказчику «на пальцах». В течение остальной главы мы расскажем о проектировании структуры данных подробнее.</p>
<h2 style="text-align: left;"><a name="_Toc247197035"></a>Моделирование предметной области</h2>
<p style="text-align: left;">Одна из основных задач при проектировании сайта – это моделирование предметной области заказчика.</p>
<p style="text-align: left;"><a href="http://ru.wikipedia.org/wiki/%25D0%259C%25D0%25BE%25D0%25B4%25D0%25B5%25D0%25BB%25D1%258C">Wikipedia</a> определяет понятие модели следующим образом.</p>
<div style="border-width: medium medium medium 4.5pt; border-style: none none none double; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Модель — некоторый материальный или мысленно представляемый объект или явление, замещающий оригинальный объект или явление, сохраняя только некоторые важные его свойства, например, в процессе познания (созерцания, анализа и синтеза) или конструирования.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Однако в этой главе мы будем рассматривать моделирование не с академической, а с практической стороны, предполагая, что модель создаётся именно для сайта на платформе «1С-Битрикс» (поэтому многое будет опущено, а многое пересказано своими словами). Академический вариант можно найти, например, на <a href="http://www.citforum.ru/database/dbguide/index.shtml">Citforum</a>.</p>
<p style="text-align: left;">Нередко возникает путаница между понятиями «информация» и «данные». Попытаемся дать нестрогое определение, из которого будет понятна разница, важная для нашей предметной области.</p>
<div style="border-width: medium medium medium 4.5pt; border-style: none none none double; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Информация – это то, чем оперирует заказчик в реальном мире. Данные – это конкретный способ хранения информации в базе данных сайта.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Следствие: структура информации в предметной области заказчика и структура базы данных сайта хотя и имеют много общего, но требуют отдельной проработки.</p>
<div style="border-width: medium medium medium 4.5pt; border-style: none none none double; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Результат моделирования предметной области заказчика называется абстрактной инфологической моделью предметной области. Результат проектирования структуры базы данных называется даталогической моделью.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Каждая из моделей имеет графическое представление.</p>
<div style="border-width: medium medium medium 4.5pt; border-style: none none none double; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>ER-диаграмма (entity-relationship diagram, диаграмма «сущность-связь») – это графическое представление инфологической модели. Схема данных – это графическое представление даталогической модели.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Обе диаграммы могут выполняться в различных нотациях.</p>
<div style="border-width: medium medium medium 4.5pt; border-style: none none none double; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Нотация – свод условных обозначений и правил оформления диаграммы.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">В данной работе мы используем нотацию IDEF1x для представления обеих моделей. Эту нотацию очень удобно использовать при рисовании в Microsoft Visio.</p>
<p style="text-align: left;">При создании нового файла обязательно надпишите прямо на листе следующие параметры (см. пример в приложении):</p>
<ul style="text-align: left;">
<li> название проекта;</li>
<li> тип модели (инфологическая или даталогическая: внешне они очень похожи);</li>
<li> дату и время последнего изменения (Visio может автоматически обновлять это поле: правая клавиша по тексту, Insert Field, Date/Time, Last Edit Date/Time);</li>
<li> основные условные обозначения стандарта IDEF1x.</li>
</ul>
<p style="text-align: left;"> </p>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Если вы хорошо объясните заказчику смысл диаграммы, пройдётесь вместе с ним по всем её моментам, то заказчик сможет поработать с ней ещё и на досуге – и тут «шпаргалка» ему очень пригодится. А ещё ведь есть дизайнеры и верстальщики, которым важно понимать, например, стоит ли предусматривать на подробной странице книги одно место для автора или несколько.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;"> </p>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Указывать дату и время последнего изменения особенно важно, поскольку участники проекта имеют обыкновение распечатывать диаграмму, приклеивать на стену – и не обновлять месяцами. А поскольку диаграмма – живой организм, то очень важно знать, какой она свежести – и, заметив у программиста старую распечатку, попросить его обновить диаграмму.</p>
<p>Если диаграмма склеивается из нескольких листов А4, следует разместить дату и время на каждом из них.</p>
<p>И ещё один совет: при рисовании обязательно вклоючайте View – Page Breaks, стараясь размещать сущности так, чтобы они не задевали серые поля, иначе склеить распечатанную диаграмму будет затруднительно и выглядеть для заказчика она будет неопрятно.</p>
<p><br class="spacer_" /></p>
</div>
<h2 style="text-align: left;"><a name="_Toc247197036"></a>Инфологическая модель</h2>
<h3 style="text-align: left;"><a name="_Toc247197037"></a>Сущность</h3>
<div style="border-width: medium medium medium 4.5pt; border-style: none none none double; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Сущность – совокупность всех однотипных объектов предметной области, обладающих одинаковым составом атрибутов. При этом каждый объект, входящий в сущность, называется элементом (экземпляром) сущности.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Поясним смысл словосочетания «однотипные объекты». Так, каждая сущность должна иметь имя <strong>– существительное во множественном числе –</strong> достаточно широкое понятие, чтобы охарактеризовать все входящие в неё объекты, но достаточно узкое, чтобы исключить вхождение в эту сущность посторонних объектов. При этом каждый элемент, входящий в сущность, называется <strong>тем же существительным, но в единственном числе</strong>.</p>
<p style="text-align: left;">Например, для сайта-визитки достаточно одной сущности Новости, в состав которой входят новости организации (каждый элемент сущности Новости будет называться Новость). Для корпоративного сайта организации, активно работающей с партнёрами, может оказаться необходимым введение двух сущностей: НовостиКомпании и НовостиПартнёров. Несмотря на внешнее сходство, эти новости будут совершенно по-разному использоваться посетителями – и, скорее всего, будут выводиться в разных разделах сайта.</p>
<p style="text-align: left;">В IDEF1x сущность обозначается прямоугольником, сверху которого подписано имя сущности – существительное во множественном числе.</p>
<p style="text-align: left;"><img class="alignnone size-full wp-image-625" title="Сущность Новости" src="http://life.screenshots.ru/wp-content/uploads/2010/03/image002.gif" alt="Сущность Новости" width="72" height="89" /></p>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Внимание! Просим не путать сущности с таблицами и инфоблоками, поскольку сущность – это часть инфологической модели, тогда как таблицы и ифноблоки – принадлежность даталогической модели. Это не одно и то же!</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Действительно, при переходе от инфологической модели к даталогической сущность обычно превращается в таблицу (в случае использования традиционной СУБД) либо – в случае Битрикса – в инфоблок. Однако позднее мы рассмотрим случаи, когда преобразования намного более сложные.</p>
<div style="border-width: medium medium medium 4.5pt; border-style: none none none double; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Битрикс, являясь высокоуровневой средой, абстрагирует нас от таблиц, заставляя мыслить в терминах инфоблоков. Так, для сохранения элемента данных в одном инфоблоке реально могут затрагиваться несколько таблиц. Об этом – в соответствующей главе.</p>
<p><br class="spacer_" /></p>
</div>
<h3 style="text-align: left;"><a name="_Toc247197038"></a>Нормализация</h3>
<p style="text-align: left;">С процессом преобразования инфологической модели в даталогическую тесно связан процесс нормализации.</p>
<p style="text-align: left;">Нормализация предполагает последовательное приведение структуры данных к нормальным формам (NF). Их мы рассмотрим далее.</p>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Внимание! Нормальные формы относятся к даталогической модели. То есть нельзя сказать, например, что «сущность находится в 1NF». Зато можно сказать «инфоблок находится в 1NF» или «таблица находится в 1NF».</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Цель нормализации – создание структуры данных, при которой:</p>
<ul style="text-align: left;">
<li> все данные не противоречат друг другу;</li>
<li> исключена избыточность (все элементы данных вводятся и хранятся только в единственном экземпляре).</li>
</ul>
<p style="text-align: left;">На практике нередко отступают от требований нормализации, поскольку полное их соблюдение может в некоторых случаях приводить к деградации производительности базы данных и усложнению ввода и отображения данных.</p>
<p style="text-align: left;">Нормализация – это некий идеал, к которому следует стремиться, но которого не всегда стоит достигать.</p>
<h3 style="text-align: left;"><a name="_Toc247197039"></a>Атрибуты. Первичный и вторичный ключи</h3>
<p style="text-align: left;">Каждый элемент, входящий в сущность, характеризуется одним и тем же набором атрибутов.</p>
<div style="border-width: medium medium medium 4.5pt; border-style: none none none double; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Таблица (инфоблок) <strong>находится в 1</strong><strong>NF</strong>, если каждый её атрибут атомарен.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Это означает, что:</p>
<ul style="text-align: left;">
<li> в каждом атрибуте должно храниться <strong>только одно значение</strong> (недопустим список значений «через запятую», записанный в одно поле);</li>
<li> <strong>не допускается смешивать</strong> в одном атрибуте значения разных логических типов.<strong> </strong></li>
</ul>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Поясним второе на примере. Пусть Интернет-магазин торгует двумя видами товаров: флешками и художественными книгами. Все товары хранятся в одном инфоблоке Товары. При этом и у книг, и у флешек есть понятие объёма: для книг это количество страниц, а для флешек – количество мегабайт. Если в инфоблоке Товары завести атрибут Объём числового типа, то получится, что в одном поле хранятся данные одного физического типа (число), однако разных логических типов (объём книги и объём флешки – это совсем разные вещи). И если, например, отсортировать товары по полю Объём, то флешка на 500 мегабайт будет якобы больше, чем книга на 300 страниц – а такое сравнение, конечно же, лишено смысла.</p>
<p>Или, например, нельзяпомещать в одно и то же поле для книги – год выпуска, а для консервированного тунца – год истечения срока годности.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Требования 1NF обязательны для выполнения.</p>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>На первый взгляд, хранение сериализованного массива в поле строкового типа – это отступление от 1NF. Однако такой способ хранения обычно применяется в том случае, если этот массив обрабатывается на уровне БД как единое целое (а уже потом, на уровне кода, его разбирают на элементы). Подобно тому, как в поле может храниться текст целой книги, а на сайте он может выводиться постранично.</p>
<p>Если же вы используете сериализованный массив как способ хранения в одной ячейке целого ряда раздельных значений – значит, скорее всего, в вашей даталогической модели есть ошибка.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Обычно атрибуты просто характеризуют элемент (например, человека зовут Иван). Но некоторые позволяют уникально его идентифицировать (например, этот человек имеет паспорт с номером 4505 123456). Такие идентифицирующие атрибуты называют ключевыми атрибутами (или первичными ключами, или просто ключами).</p>
<div style="border-width: medium medium medium 4.5pt; border-style: none none none double; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Первичный ключ (primary key, PK) – это атрибут или совокупность нескольких атрибутов сущности, позволяющая однозначно идентифицировать каждый элемент, входящий в сущность.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Из этого следует, что значение атрибута-ключа всегда уникально. Например, может быть два человека с именем Иван, но не может быть двух человек с номером паспорта 4505 123456.</p>
<p style="text-align: left;">При этом у сущности может быть несколько уникальных атрибутов, но только один из них назначается первичным ключом.</p>
<div style="border-width: medium medium medium 4.5pt; border-style: none none none double; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Уникальные атрибуты, не входящие в первичный ключ, называют вторичными ключами (secondary keys).</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Например, у человека может быть ещё и кредитная карточка, номер которой уникален. Однако идентифицируют человека, как правило, всё же по паспорту, а не по кредитной карточке (всё зависит от предметной области: иногда номер карточки может оказаться важнее – и тогда именно он используется в качестве первичного ключа).</p>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>В том случае, если ключ состоит из нескольких атрибутов, он называется составным ключом. Как правило, такой ключ используется в развязочных таблицах (о них мы поговорим отдельно).</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">При проектировании для Битрикса следует учитывать, что первичным ключом для этой системы всегда является ID элемента. У большинства объектов в Битриксе есть также поле CODE, которое может использоваться в качестве вторичного ключа, если контролировать его обязательность и уникальность (по умолчанию это поле необязательно и неуникально).</p>
<div style="border-width: medium medium medium 4.5pt; border-style: none none none double; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Таблица (инфоблок) находится в 2NF, если она находится в 1NF – и у неё есть правильно подобранный первичный ключ.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Поясним на примере. Требуется сделать прайс-лист на джинсы. Пусть цена джинсов зависит от названия модели и от размера. Тогда ключом будет пара полей «наименование-размер», а неключевым атрибутом – «цена». Такая таблица удовлетворяет требованиям 2NF.</p>
<table style="height: 137px;" border="1" cellspacing="0" cellpadding="0" width="540">
<tbody>
<tr>
<td width="213" valign="top">
<p>Наименование (PK)</p>
</td>
<td width="213" valign="top">
<p>Размер (PK)</p>
</td>
<td width="213" valign="top">
<p>Цена</p>
</td>
</tr>
<tr>
<td width="213" valign="top">
<p>Джинсы «синий угар»</p>
</td>
<td width="213" valign="top">
<p>34</p>
</td>
<td width="213" valign="top">
<p>2 800</p>
</td>
</tr>
<tr>
<td width="213" valign="top">
<p>Джинсы «синий угар»</p>
</td>
<td width="213" valign="top">
<p>36</p>
</td>
<td width="213" valign="top">
<p>3 000</p>
</td>
</tr>
<tr>
<td width="213" valign="top">
<p>Джинсы «чёрный ворон»</p>
</td>
<td width="213" valign="top">
<p>32</p>
</td>
<td width="213" valign="top">
<p>1 200</p>
</td>
</tr>
<tr>
<td width="213" valign="top">
<p>Джинсы «чёрный ворон»</p>
</td>
<td width="213" valign="top">
<p>34</p>
</td>
<td width="213" valign="top">
<p>1 520</p>
</td>
</tr>
</tbody>
</table>
<p style="text-align: left;">Теперь рассмотрим вариант, когда цена зависит только от модели (т.е. все джинсы «синий угар» вне зависимости от размера стоят одинаково, та же ситуация и с «чёрным вороном»).</p>
<table style="height: 137px;" border="1" cellspacing="0" cellpadding="0" width="538">
<tbody>
<tr>
<td width="213" valign="top">
<p>Наименование (PK)</p>
</td>
<td width="213" valign="top">
<p>Размер (PK)</p>
</td>
<td width="213" valign="top">
<p>Цена</p>
</td>
</tr>
<tr>
<td width="213" valign="top">
<p>Джинсы «синий угар»</p>
</td>
<td width="213" valign="top">
<p>34</p>
</td>
<td width="213" valign="top">
<p>2 900</p>
</td>
</tr>
<tr>
<td width="213" valign="top">
<p>Джинсы «синий угар»</p>
</td>
<td width="213" valign="top">
<p>36</p>
</td>
<td width="213" valign="top">
<p>2 900</p>
</td>
</tr>
<tr>
<td width="213" valign="top">
<p>Джинсы «чёрный ворон»</p>
</td>
<td width="213" valign="top">
<p>32</p>
</td>
<td width="213" valign="top">
<p>1 400</p>
</td>
</tr>
<tr>
<td width="213" valign="top">
<p>Джинсы «чёрный ворон»</p>
</td>
<td width="213" valign="top">
<p>34</p>
</td>
<td width="213" valign="top">
<p>1 400</p>
</td>
</tr>
</tbody>
</table>
<p style="text-align: left;">Мы по-прежнему можем использовать пару «наименование-размер» в качестве первичного ключа, однако для поиска цены поле «размер» становится лишним, что не соответствует 2NF (цена зависит от составного ключа «наименование-размер» точно так же, как и от части ключа – поля «наименование»). Поэтому следует сделать наименование первичным ключом, а поле «размер» исключить из прайс-листа (а если всё-таки надо сохранить данные о том, каких размеров бывает каждая из моделей джинсов, следует организовать отдельную таблицу).</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="213" valign="top">
<p>Наименование (PK)</p>
</td>
<td width="213" valign="top">
<p>Цена</p>
</td>
</tr>
<tr>
<td width="213" valign="top">
<p>Джинсы «синий угар»</p>
</td>
<td width="213" valign="top">
<p>2 900</p>
</td>
</tr>
<tr>
<td width="213" valign="top">
<p>Джинсы «чёрный ворон»</p>
</td>
<td width="213" valign="top">
<p>1 400</p>
</td>
</tr>
</tbody>
</table>
<p style="text-align: left;">Для инфоблоков Битрикса требование 2NF выполняется всегда, поскольку в качестве первичного ключа всегда выступает только один атрибут – ID.</p>
<p style="text-align: left;">В IDEF1x атрибуты, входящие в первичный ключ, подписываются над горизонтальной линией, а остальные – под ней. Справа от имени атрибута указывается его тип.</p>
<p style="text-align: left;">Имя атрибута в классическом варианте – это существительное в единственном числе (Наименование, Дата, Иллюстрация) либо – только для булевских полей! – утверждение со словом «эта/это/этот» (ЭтоПроплаченнаяНовость).</p>
<p style="text-align: left;"><img class="alignnone size-full wp-image-626" title="Сущность Новости (с атрибутами)" src="http://life.screenshots.ru/wp-content/uploads/2010/03/image004.gif" alt="Сущность Новости (с атрибутами)" width="293" height="153" /></p>
<p style="text-align: left;">Атрибуты могут быть обязательными либо опциональными (optional). Так, например, у каждой новости должно быть название (обычно вместо Название применяют слово Наименование), но не всегда есть иллюстрация. Опциональные поля на IDEF1x-диаграмме отмечаются знаком (O).</p>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Внимание! Часто вместо «O–optional» неверно читают «О–обязательное». В Visio при редактировании обязательное поле называется Req’d (required).</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Visio выводит очень подробную информацию о типе атрибута. Однако в большинстве случаев при проектировании для Битрикса вам не придётся проставлять максимальную длину поля или выбирать конкретный тип. Достаточно ограничиться более общими типами.</p>
<p style="text-align: left;">Атрибуты бывают следующих типов, предполагающих совершенно разные подходы к обработке и использованию хранящихся в них данных:</p>
<ul style="text-align: left;">
<li><strong>скалярные</strong> – по таким полям легко осуществлять поиск и фильтрацию: например, находить книги по названию или по году выпуска:
<ul>
<li>число – N-Signed Integer;</li>
<li>дата – T-Date&amp;Time;</li>
<li>строка текста – S-Fixed Length;</li>
<li>булевский тип (да/нет) – L-True or False;</li>
</ul>
</li>
<li><strong>большой текст</strong> (S-Large Length) – по таким полям, за редким исключениям, не строят отборы, а если и строят, то на основе сложного полнотекстового поиска: например, найти все книги в стопке, в текстах которых встречается слово «вечность» – непростая задача не только для человека, но и для сервера (для повышения быстродействия применяются специальные меры);</li>
<li><strong>бинарные</strong> картинки и другие файлы (R-Fixed Length, R-Variable Length или R-Picture) – с такими данными, как правило, не производится никаких других действий, кроме хранения и отображения;</li>
<li><strong>ссылочный</strong> тип (разумеется, не следует путать этот тип со строковым типом, где хранится какой-либо URL).</li>
</ul>
<p style="text-align: left;">Для ввода данных о типах в Visio проще всего пользоваться Portable data type (ODBC), а результат смотреть уже на самой диаграмме.</p>
<p style="text-align: left;"><img class="alignnone size-full wp-image-627" title="Редактирование типов атрибутов в Visio" src="http://life.screenshots.ru/wp-content/uploads/2010/03/image005.png" alt="Редактирование типов атрибутов в Visio" width="539" height="191" /></p>
<p style="text-align: left;">В Битриксе нет выделенного булевского типа – вместо него используется либо тип Список, либо тип Строка с ограничением на ввод только Y или N.</p>
<h3 style="text-align: left;"><a name="_Toc247197040"></a>Внешний ключ. Классификация</h3>
<p style="text-align: left;">Для моделирования предметной области наиболее важные атрибуты – это атрибуты ссылочного типа. Именно с их помощью строятся связи между сущностями.</p>
<div style="border-width: medium medium medium 4.5pt; border-style: none none none double; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Атрибуты ссылочного типа называют внешними ключами (foreign keys, FK).</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Следующее определение связи – частное (относится к кратности «один-ко-многим»).</p>
<div style="border-width: medium medium medium 4.5pt; border-style: none none none double; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Связью называется отношение между двумя сущностями, при котором конкретный элемент одной из них с помощью внешнего ключа ссылается на конкретный элемент другой сущности.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">С понятием связи часто упоминают понятие классификатора (просьба не путать с кодовыми классификаторами вроде штрих-кодового EAN13 или книжного ISBN).</p>
<div style="border-width: medium medium medium 4.5pt; border-style: none none none double; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Пусть сущность А ссылается на сущность Б. Тогда сущность Б называют сущностью-классификатором для классифицируемой сущности А.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Если вариантов классификации одной и той же сущности несколько (как в приведённом примере для книг: по издательствам и по авторам), то такую классификацию называют многоаспектной.</p>
<p style="text-align: left;">Классификатор тоже иногда может быть классифицирован. Так, в приведённом примере, авторов можно классифицировать по городам, в которых они проживают. В этом случае авторы уже выступают не в качестве классификатора, а в качестве классифицируемой сущности. Классификатором же является сущность Города.</p>
<div style="border-width: medium medium medium 4.5pt; border-style: none none none double; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Таблица (инфоблок) находится в 3NF, если она находится в 2NF – и в ней нет атрибутов, не относящихся напрямую к сущности, элементы которой она хранит.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Продолжим рассматривать пример с книгами, издательствами и адресами издательств. Так, первоначально таблица данных о книгах выглядит следующим образом.</p>
<table style="height: 114px;" border="1" cellspacing="0" cellpadding="0" width="523">
<tbody>
<tr style="height: 20.8pt;">
<td width="67" valign="top">
<p>ID (PK)</p>
</td>
<td width="204" valign="top">
<p>Наименование</p>
</td>
<td width="120" valign="top">
<p>Издательство</p>
</td>
<td width="278" valign="top">
<p>Адрес издательства</p>
</td>
</tr>
<tr style="height: 20.8pt;">
<td width="67" valign="top">
<p>1</p>
</td>
<td width="204" valign="top">
<p>Основы мармитологии</p>
</td>
<td width="120" valign="top">
<p>Мармит</p>
</td>
<td width="278" valign="top">
<p>Москва, ул. Маркса Спенсера, 23</p>
</td>
</tr>
<tr style="height: 20.8pt;">
<td width="67" valign="top">
<p>2</p>
</td>
<td width="204" valign="top">
<p>Мармитология и жизнь</p>
</td>
<td width="120" valign="top">
<p>Мармит</p>
</td>
<td width="278" valign="top">
<p>Москва, ул. Маркса Спенсера, 23</p>
</td>
</tr>
<tr style="height: 21.4pt;">
<td width="67" valign="top">
<p>3</p>
</td>
<td width="204" valign="top">
<p>Бухгалтерия – это скучно?</p>
</td>
<td width="120" valign="top">
<p>Малыш</p>
</td>
<td width="278" valign="top">
<p>Нижний Новгород, ул. Правды, 1</p>
</td>
</tr>
</tbody>
</table>
<p style="text-align: left;">Несмотря на то, что такая форма весьма удобна для восприятия человеком, она избыточна. Так, отношение «Мармит – Москва, ул. Маркса Спенсера, 23» повторяется более одного раза. Если мы знаем адрес издательства «Мармит», то достаточно указать, что книги «Основы мармитологии» и «Мармитология и жизнь» выпущены издательством «Мармит», а его адрес можно посмотреть в адресном справочнике вида «издательство-адрес».</p>
<p style="text-align: left;">Первоначальный вариант не соответствует 3NF, поскольку адрес издательства относится к издательству, но не относится напрямую к книге. Собственно, и название издательства не относится к книге: оно относится тоже к издательству. К книге относится лишь <strong>факт принадлежности</strong> к издательству.</p>
<p style="text-align: left;">Выполним преобразования, разбив таблицу на две.</p>
<p style="text-align: left;"><strong>Книги </strong></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 20.8pt;">
<td width="67" valign="top">
<p>ID (PK)</p>
</td>
<td width="204" valign="top">
<p>Наименование</p>
</td>
<td width="144" valign="top">
<p>Издательство (FK)</p>
</td>
</tr>
<tr style="height: 20.8pt;">
<td width="67" valign="top">
<p>1</p>
</td>
<td width="204" valign="top">
<p>Основы мармитологии</p>
</td>
<td width="144" valign="top">
<p>1</p>
</td>
</tr>
<tr style="height: 20.8pt;">
<td width="67" valign="top">
<p>2</p>
</td>
<td width="204" valign="top">
<p>Мармитология и жизнь</p>
</td>
<td width="144" valign="top">
<p>1</p>
</td>
</tr>
<tr style="height: 21.4pt;">
<td width="67" valign="top">
<p>3</p>
</td>
<td width="204" valign="top">
<p>Бухгалтерия – это скучно?</p>
</td>
<td width="144" valign="top">
<p>2</p>
</td>
</tr>
</tbody>
</table>
<p style="text-align: left;"><strong> </strong></p>
<p style="text-align: left;"><strong>Издательства</strong></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 20.8pt;">
<td width="67" valign="top">
<p>ID (PK)</p>
</td>
<td width="120" valign="top">
<p>Наименование</p>
</td>
<td width="278" valign="top">
<p>Адрес</p>
</td>
</tr>
<tr style="height: 20.8pt;">
<td width="67" valign="top">
<p>1</p>
</td>
<td width="120" valign="top">
<p>Мармит</p>
</td>
<td width="278" valign="top">
<p>Москва, ул. Маркса Спенсера, 23</p>
</td>
</tr>
<tr style="height: 21.4pt;">
<td width="67" valign="top">
<p>2</p>
</td>
<td width="120" valign="top">
<p>Малыш</p>
</td>
<td width="278" valign="top">
<p>Нижний Новгород, ул. Правды, 1</p>
</td>
</tr>
</tbody>
</table>
<p style="text-align: left;">Теперь в таблице «Книги» хранится только информация непосредственно о книгах, а в таблице «Издательства» – только информация непосредственно об издательствах. Не наблюдается также избыточности данных (каждое значение полей, не являющихся ID, встречается ровно один раз). Таким образом, мы добились соответствия 3NF.</p>
<h3 style="text-align: left;"><a name="_Toc247197041"></a>Кратность связи «один-ко-многим». Опциональность связи</h3>
<p style="text-align: left;">Теперь пришло время поговорить о кратностях связей. Так, частное определение связи, которое мы только что рассмотрели, относится лишь к связям с кратностью «один-ко-многим». Существуют, однако, и другие виды кратностей.</p>
<p style="text-align: left;">Пусть имеется связь между сущностями А и Б.</p>
<div style="border-width: medium medium medium 4.5pt; border-style: none none none double; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>О связи говорят, что она имеет кратность «один-ко-многим», если каждый элемент сущности А может ссылаться только на один элемент сущности Б. При этом на каждый элемент сущности Б могут одновременно ссылаться более одного элемента из сущности А.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Так, каждая книга издаётся только одним издательством. При этом каждое издательство может издавать одновременно несколько книг.</p>
<p style="text-align: left;">Если сущности соответствует имя существительное во множественном числе, то связи соответствует глагол. Начинать строить предложение можно с любой из двух сущностей (в зависимости от того, с классификатора или с классифицируемой сущности мы начинаем строить предложение, меняются падежи и залог глагола). Например:</p>
<ul style="text-align: left;">
<li> Издательства издают (кого? что? – винительный падеж) Книги. Книги издаются (кем? чем? – творительный падеж) Издательствами.</li>
<li> Авторы пишут Книги. Книги пишутся авторами.</li>
<li> Новости относятся к Темам. Темы включают в себя Новости.</li>
</ul>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Очень важно проработать эти предложения с заказчиком. Покажите ему черновик диаграммы и убедитесь, что предложения составлены правильно.</p>
<p>– Ведём пальцем. Один производитель (палец на сущности Производители) может выпуска-а-ать (палец движется по связи) не-е-есколько това-а-ров (палец на сущности Товары). У одного товара может бы-ы- ыть (палец движется обратно) только один производи-и-итель. Правильно? Как нет?</p>
<p>– Один и тот же товар может выпускаться на разных заводах и поэтому иметь разную цену.</p>
<p>– Отлично, вот завод мы и не учли, – и тут не надо орать на заказчика, что про завод не было ничего написано в объёмистом ТЗ, – ну ничего, пока разработка не началась, добавить квадратик нетрудно. Но, пожалуйста, повнимательнее: нетрудно дорисовать несколько линий на чертеже, но когда танк уже построен, трудно привертеть к нему ещё одну пушку.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Как правило, очевидно, какой глагол характеризует связь. Однако в некоторых случаях на диаграмме их можно подписывать.</p>
<p style="text-align: left;">Говоря о связи, недостаточно указать, между какими сущностями она установлена. Связь кратности «один-ко-многим» – это всегда связь между первичным ключом классификатора (сторона «один») и неключевым полем классифицируемой сущности (сторона «многие»). При этом атрибут-внешний ключ должен быть назван <strong>тем же существительным</strong>, что и классификатор, но в единственном числе.</p>
<p style="text-align: left;">Обратите внимание, что внешний ключ классифицируемой сущности всегда должен иметь тот же тип данных, что и первичный ключ классификатора. В случае Битрикса это всегда целое число (N-Signed Integer).</p>
<p style="text-align: left;">В нотации IDEF1x связь обозначается штриховой линией. Со стороны «многие» рисуется чёрный кружок.</p>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Раньше вместо кружка использовалась развилка, которая более наглядно показывала «многие» (см. линию на рисунке внизу). Однако проектировщики, видимо, ленились аккуратно отрисовывать развилку, и она превращалась в кляксу. Так и появилась вместо развилки жирная точка.</p>
<p>Теперь вы никогда не забудете, с какой стороны ставить точку.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;"><img class="alignnone size-full wp-image-629" title="Обозначение связи Один-ко-многим" src="http://life.screenshots.ru/wp-content/uploads/2010/03/image008.gif" alt="Обозначение связи Один-ко-многим" width="499" height="225" /></p>
<p style="text-align: left;">Для создания связи в Visio необходимо перетащить на рабочее поле фигуру Relationship и подтащить её концы по очереди к соответствующим сущностям (у них должна появляться красная рамка). После этого надо кликнуть на связь, перейти на вкладку Definition, выделить ключевое поле у классификатора (Parent) и поле внешнего ключа у классифицируемой сущности (Child), нажать кнопку Associate. После этого на форме появится линия связи, а напротив внешнего ключа в классифицируемой сущности появляется маркер (FK) (Foreign key).</p>
<p style="text-align: left;"><img class="alignnone size-full wp-image-630" title="Создание связи в Visio" src="http://life.screenshots.ru/wp-content/uploads/2010/03/image009.png" alt="Создание связи в Visio" width="492" height="235" /></p>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Вы, наверное, обратили внимание, что до нажатия кнопки Associate классифицируемая сущность имеет закруглённые уголки. В стандарте IDEF1x прямоугольниками с закруглёнными уголками обозначаются зависимые сущности. В контексте Битрикс-проектирования мы будем их использовать только при дискриминации и развязках (о них чуть позже).</p>
<p><br class="spacer_" /></p>
</div>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Внимание! Вопреки расхожему мнению, концы линии связи на диаграмме не указывают на связываемые атрибуты. Понять, какие поля связываются, просто: со стороны «один» это всегда первичный ключ, а со стороны «многие» – это атрибут, названный тем же существительным, что и классификатор, но в единственном числе.</p>
<p><br class="spacer_" /></p>
</div>
<div style="border-width: medium medium medium 4.5pt; border-style: none none none double; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Если внешний ключ связи является опциональным (необязательным) атрибутом, то такая связь также называется необязательной связью.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Необязательные связи в IDEF1x помечаются ромбиком со стороны классифицируемой сущности. Visio делает это автоматически.</p>
<p style="text-align: left;">Например, в системе ведётся база данных покупателей. Юридические лица могут выбрать из списка банк, в котором у них открыт расчётный счёт, тогда как физические лица практически никогда этого не делают.</p>
<p style="text-align: left;"><img class="alignnone size-full wp-image-631" title="Необязательная связь" src="http://life.screenshots.ru/wp-content/uploads/2010/03/image012.gif" alt="Необязательная связь" width="489" height="217" /></p>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>В данном примере предложение «Покупатели обслуживаются в Банках» заменяется на «Покупатели могут обслуживаться в Банках».</p>
<p><br class="spacer_" /></p>
</div>
<h3 style="text-align: left;"><a name="_Toc247197042"></a>Атрибуты типа Список</h3>
<p style="text-align: left;">Рассмотрим первый пример случая, когда сущности не превращаются непосредственно в инфоблоки. Пусть мы проектируем ленту новостей контент-сайта, для которых редактор будет самостоятельно устанавливать важность. Очевидно, вырисовываются две сущности: Новости и СтепениВажности.</p>
<p style="text-align: left;"><img class="alignnone size-full wp-image-632" title="Связь Один-ко-многим" src="http://life.screenshots.ru/wp-content/uploads/2010/03/image014.gif" alt="Связь Один-ко-многим" width="501" height="163" /></p>
<p style="text-align: left;">На инфологической модели установлена связь кратности «один-ко-многим» между полем Важности сущности Новости и полем ID сущности СтепениВажности:</p>
<ul style="text-align: left;">
<li> Новости имеют СтепениВажности;</li>
<li> каждая Новость обязательно имеет одну и только одну СтепеньВажности;</li>
<li> может быть несколько Новостей одной и той же СтепениВажности.</li>
</ul>
<p style="text-align: left;">Исходя только из вышеперечисленного, мы можем нарисовать даталогическую модель, один-в-один повторяющую инфологическую: два инфоблока, одноимённых сущностям Новости и СтепениВажности.</p>
<p style="text-align: left;">Однако предположим, что при дальнейшем общении с заказчиком выяснилось, что степеней важности всего три, и от степени важности новости существенно зависит способ её отображения на сайте:</p>
<ul style="text-align: left;">
<li> новости, которые редактор посчитает самыми важными, должны выводиться на главной странице, а также автоматически включаться в выпуск рассылки;</li>
<li> чуть менее важные новости тоже отображаются на главной, но в рассылку не уходят;</li>
<li> наименее важные новости отображаются в разделе Новости, но не попадают на главную страницу и не уходят в рассылку.</li>
</ul>
<p style="text-align: left;">Итак, в обозримом будущем не предполагается пополнение классификатора СтепениВажности. А если он всё-таки будет пополнен, то придётся переписывать код сайта, чтобы поддержать новые варианты важностей (например, через год работы сайта заказчик захотел, чтобы супер-важные новости отправлялись зарегистрированным пользователям в виде SMS). Более того, сущность СтепениВажности не содержит других полей, кроме ID и Наименование.</p>
<div style="border-width: medium medium medium 4.5pt; border-style: none none none double; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Если классификатор имеет строго определённый, фиксированный набор значений, каждое из которых скалярно, и при добавлении в него новых элементов предполагается переработка программной части системы, то такой классификатор называется закрытым классификаторм или перечислением (enumeration).</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Большинство СУБД, а также уровень абстракции Битрикса позволяют создавать атрибуты типа Список. При создании такого поля задаётся список всех возможных его значений. Разумеется, это поле может быть необязательным (хотя на практике такое встречается крайне редко).</p>
<p style="text-align: left;">Использование атрибута типа Список вместо отдельного инфоблока позволяет:</p>
<ul style="text-align: left;">
<li> не заботиться об обновлении программного кода <strong>при перезаливке базы данных</strong> (так, если потребуется перенести блок новостной ленты в другой проект, то при добавлении степеней важности в инфоблок у них будут другие ID, а значит, придётся эти ID исправлять в коде, отвечающем за различную обработку новостей);</li>
<li> экономить на запросах к базе данных (работать с одним инфоблоком значительно проще, чем с двумя);</li>
<li> препятствовать изменению списка пользователями, не прибегая к дополнительным мерам.</li>
</ul>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Внимание! Атрибут типа Список следует использовать только в том случае, если классификатор одновременно отвечает одновременно всем условиям определения закрытого классификатора.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Для обозначения в Visio атрибута типа Список (то есть атрибута, варианты значения которого ограничены заранее известным списком) следует выбрать атрибут, нажать кнопку Edit, выбрать вкладку Check, после чего в поле Value последовательно вводить варианты значений и нажимать кнопку Add.</p>
<p style="text-align: left;"><img class="alignnone size-full wp-image-634" title="Обозначение в Visio атрибута типа Список" src="http://life.screenshots.ru/wp-content/uploads/2010/03/image0091.png" alt="Обозначение в Visio атрибута типа Список" width="492" height="235" /></p>
<h3 style="text-align: left;"><a name="_Toc247197043"></a>Кратность связи «один-к-одному». Дискриминация</h3>
<div style="border-width: medium medium medium 4.5pt; border-style: none none none double; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>О связи говорят, что она имеет кратность «один-к-одному», если каждый элемент сущности А может ссылаться на один и только один элемент сущности Б.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">В подавляющем большинстве случаев, если обнаруживается такая связь, то это означает, что две сущности следует объединить в одну.</p>
<p style="text-align: left;">Для Битрикс-проектирования появление связей кратности «один-к-одному» характерно, в основном, при использовании приёма дискриминации.</p>
<div style="border-width: medium medium medium 4.5pt; border-style: none none none double; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Дискриминация подобна наследованию в ООП и используется, когда имеются несколько сущностей, которые имеют несколько общих атрибутов, но при этом существуют также особенные, уникальные атрибуты у каждой из них. При дискриминации выделяют основную сущность, содержащую общие атрибуты, а также зависимые сущности по числу исходных, содержащие специфические атрибуты. Связь между основной и каждой зависимой сущностью имеет кратность «один-к-одному».</p>
<p><br class="spacer_" /></p>
</div>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>В контексте ООП дискриминацию называют обобщением или генерализацией.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Смысл приёма в следующем. Пусть Интернет-магазин торгует только двумя видами товаров: книгами и музыкальными CD.</p>
<p style="text-align: left;"><img class="alignnone size-full wp-image-636" title="Сущности для двух видов товаров магазина" src="http://life.screenshots.ru/wp-content/uploads/2010/03/image018.gif" alt="Сущности для двух видов товаров магазина" width="514" height="136" /></p>
<p style="text-align: left;">Мы видим, что у них есть общие атрибуты: ID, Наименование, Издатель, Цена. Однако только у книг есть атрибут ТипПереплёта и КоличествоСтраниц. И только у дисков есть Длительность. То есть, обе сущности:</p>
<ul style="text-align: left;">
<li> с одной стороны, проявляют общее поведение в качестве товара: у них есть цена, их можно купить, в списке их можно отбирать по производителю (издателю), можно сортировать по цене, искать по наименованию и т.д. – и хотелось бы иметь возможность всё это делать в общем списке и добавлять в один и тот же заказ;</li>
<li> с другой стороны, кроме отображения в общем списке, эти товары могут быть разнесены по разным разделам сайта, где, например, книги могут быть отобраны по типу переплёта (в качестве подарка, как правило, лучше брать книги в твёрдом переплёте) – и детальные страницы тоже будут немного отличаться (только у дисков будет выводиться длительность).</li>
</ul>
<p style="text-align: left;">Простейший вариант – объединить две сущности в одну, назвав её Товары. При этом придётся добавить поле ТипТовара (например, типа Список) – и при выведении книг в книжном разделе можно будет фильтровать по этому полю, а при вводе данных программно контролировать, чтобы в поле Длительность при типе товара «книга» не было введено значение.</p>
<p style="text-align: left;"><img class="alignnone size-full wp-image-637" title="Сущность Товары, объединившая в себе две исходные сущности" src="http://life.screenshots.ru/wp-content/uploads/2010/03/image020.gif" alt="Сущность Товары, объединившая в себе две исходные сущности" width="294" height="185" /></p>
<p style="text-align: left;">Однако обратите внимание на поле ТипПереплёта. У книг на предыдущем рисунке оно было обязательным. Но поскольку к дискам эта характеристика неприменима, пришлось сделать это поле опциональным. Это означает, что теперь придётся при вводе и обработке также контролировать это поле программно.</p>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Ещё один минус: будет много пустых ячеек. Так, у всех без исключения книг будет пустым атрибут Длительность, а у дисков – ТипПереплёта и КоличествоСтраниц. А в том случае, если типов товаров будет больше, пустот станет больше, чем заполненных ячеек – и в случае классических таблиц это может стать большой проблемой.</p>
<p>Эта <strong>проблема неактуальна для Битрикса</strong>, поскольку при добавлении новых свойств таблица не растёт вширь: вместо этого заполненные свойства сохраняются в отдельной таблице вида «ID элемента – ID свойства – значение свойства». Об этом можно подробнее прочитать в соответствующей главе.</p>
<p>Но даже если предполагается использовать только одну сущность, отрисовать дискриминацию необходимо. Это позволяет чётко понимать, какие можно использовать отборы и другие действия с книгами и дисками в качестве просто товаров, а также какие узкоспециальные действия можно производить с частными вариантами.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Второй, более распространённый, вариант – создавать сущность-родитель (она объединяет в себе все общие атрибуты исходных сущностей) и сущности-потомки (каждая из них содержит только те атрибуты, которыми она отличается от остальных). При этом атрибут ТипТовара называют дискриминирующим атрибутом или дискриминатором: именно он определяет, в какой сущности-потомке содержатся данные, расширяющие данные сущности-родителя.</p>
<p style="text-align: left;">Разумеется, типов товара может быть больше двух. Главное, что их число должно быть конечным, то есть классификатор типов товаров <strong>должен быть закрытым</strong>.</p>
<p style="text-align: left;">Каждая из сущностей-потомков не имеет самостоятельной ценности. Так, при дискриминации в сущности КомпактДиски останутся только ID и Длительность – ни цены, ни наименования здесь не будет, то есть пользоваться этой сущностью без родительской невозможно.</p>
<div style="border-width: medium medium medium 4.5pt; border-style: none none none double; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Сущность, не имеющая самостоятельной ценности, называется зависимой сущностью.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">В стандарте IDEF1x имя дискриминирующего атрибута подписывается рядом со специальным знаком. Линии связи между родителем, знаком дискриминатора и потомками не пунктирные, а сплошные: это говорит о том, что связи имеют кратность «один-к-одному». Так, первичный ключ сущности-потомка одновременно является и внешним ключом сущности-родителя.</p>
<p style="text-align: left;"><img class="alignnone size-full wp-image-638" title="Дискриминация товаров по типу" src="http://life.screenshots.ru/wp-content/uploads/2010/03/image022.gif" alt="Дискриминация товаров по типу" width="511" height="300" /></p>
<p style="text-align: left;">Если в Visio вы правильно соедините родителя с дискриминатором специальной связью Parent to category, а дискриминатор с каждой из сущностей-потомков специальной связью Category to child, то все обозначения будут расставлены автоматически. Вам останется только, щёлкнув по дискриминатору, в панели свойств выбрать дискриминирующий атрибут и отметить флаг Category is complete (он означает, что мы перечислили все возможные подвиды родительской сущности – а так всегда и надо делать).</p>
<p style="text-align: left;"><img class="alignnone size-full wp-image-639" title="Создание дискриминатора в Visio" src="http://life.screenshots.ru/wp-content/uploads/2010/03/image023.png" alt="Создание дискриминатора в Visio" width="491" height="191" /></p>
<p style="text-align: left;">А теперь самое сложное. Требуется отобразить структуру с дискриминацией на таблицы (инфоблоки). Чрезвычайно важно сразу продумать все возможные варианты использования сущностей – и выбрать наиболее подходящий способ отображения.</p>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Внимание! Инфологическая модель не должна быть забыта после отрисовки даталогической модели. Так, применительно к дискриминации, инфологическая модель показывает, что можно делать с сущностями, как их использовать, а даталогическая – как они физически хранятся в таблицах (инфоблоках).</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Итак, пусть изначально было N сущностей, обладающих общими свойствами.</p>
<h4 style="text-align: left;"><a name="_Toc247197044"></a>Отображение дискриминации в одну таблицу (инфоблок)</h4>
<p style="text-align: left;">Создаётся только одна таблица (инфоблок), в которую включаются все возможные атрибуты. Дискриминатором является выделенный атрибут. При этом их заполнение и обязательность контролируются программно (см. пример выше).</p>
<p style="text-align: left;">При использовании классических таблиц этот способ неэффективен (много пустых ячеек, слишком большие row-массивы, трудность программного контроля).</p>
<p style="text-align: left;">В случае Битрикса способ весьма эффективен: это обусловлено особенностями организации хранения свойств. Однако использовать его следует только в том случае, если уникальных свойств не очень много, а правила, определяющие, какие свойства есть у каких сущностей, просты. Иначе форма редактирования элемента будет просто огромной даже после её настройки, а код, контролирующий правильность ввода, может стать местом скопления ошибок.</p>
<h4 style="text-align: left;"><a name="_Toc247197045"></a>Отображение дискриминации в N таблиц</h4>
<p style="text-align: left;">Создаются N таблиц (инфоблоков), как это было в самом начале. При этом каждая таблица (инфоблок) содержит как общие атрибуты, так и свои собственные. В роли дискриминатора выступает название таблицы (инфоблока).</p>
<p style="text-align: left;">Этот способ используется, когда сущности чаще используются по отдельности, чем совместно.</p>
<p style="text-align: left;">Когда же требуется совместное использование, программно происходит выборка сразу из нескольких таблиц (инфоблоков). Такие выборки называются <strong>объединением</strong> (в SQL им соответствует оператор UNION).</p>
<p style="text-align: left;">Более сложно организовывать хранение списка объектов, принадлежащих разным сущностям. Так, например, если у нас есть две таблицы: Мальчики и Девочки, и надо занести в отдельную таблицу список участников вечеринки, то потребуется в списке участников, помимо внешнего ключа, указывать также и признак (в данном случае – пол), по которому можно будет понять, из какой таблицы – Мальчики или Девочки – можно будет потом узнать имя и возраст участника.</p>
<p style="text-align: left;">В Битриксе для свойства типа «Привязка к элементу» можно легко указать, к элементу какого именно инфоблока должны делаться привязки. Или можно указать, что привязка может быть к элементу любого инфоблока. А вот ограничить список инфоблоков, к элементам которых может осуществляться привязка, увы, невозможно в режиме настройки инфоблока (для этого придётся воспользоваться обработчиками событий).</p>
<p style="text-align: left;">Зато данный вариант очень удобен в плане вывода списков элементов на сайте. Для таких сущностей крайне удобно сделать компонент вида «список чего-нибудь», который потом помещать на главные страницы разделов с одинаковыми настройками (за исключением имени инфоблока-источника).</p>
<h4 style="text-align: left;"><a name="_Toc247197046"></a>Отображение дискриминации в N+1 таблицу</h4>
<p style="text-align: left;">Создаётся родительская таблица (инфоблок), которая содержит общие атрибуты и ссылку на строку дополнительной таблицы, а также N таблиц, содержащих только уникальные атрибуты каждой из сущностей. Дискриминатором является выделенный атрибут.</p>
<p style="text-align: left;">Этот способ идеологически наиболее «красив», поскольку все данные хранятся именно там, где должны.</p>
<p style="text-align: left;">Пользоваться «общей» частью удобно точно так же, как в первом варианте. А вот при использовании частных свойств всё не столь однозначно.</p>
<p style="text-align: left;">Способ очень эффективен в случае классических таблиц, поскольку SQL предоставляет возможность делать выборку из главной таблицы и дополнять её столбцы столбцами дополнительной таблицы. Такие выборки называются соединением (в SQL им соответствует оператор JOIN). Поскольку число строк в основной таблице заведомо больше числа строк в каждой из дополнительных таблиц, такой JOIN практически всегда очень эффективен по производительности.</p>
<p style="text-align: left;">В Битриксе, к сожалению, в настоящее время нет полного аналога классическому JOIN, поэтому придётся делать отдельно выборки из главного и дополнительного инфоблоков. Так, если нужно, вывести список дисков из предыдущего примера с указанием длительности, придётся сделать одну выборку из основного инфоблока – и столько выборок из дополнительного инфоблока, сколько строк в первой выборке.</p>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Битрикс в текущей версии 8.5 позволяет немного абстрагироваться от этого, но физической сути явления это не меняет. Так, современное API получения выборок из инфоблоков позволяет делать выборки из связанных инфоблоков (подобно классическому JOIN), однако на уровне физического хранения данных эти выборки по-прежнему весьма тяжелы.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Конечно, можно сначала загнать в массив список ID’ов выбранных элементов, а потом сделать один запрос к дополнительному инфоблоку, выдав этот массив в качестве $arFilter (именно так обычно и следует поступать). Но это дополнительное кодирование.</p>
<p style="text-align: left;">Ещё один минус данного подхода для Битрикса – крайне неудобный ввод данных через стандартный администраторский интерфейс (требуется сначала ввести информацию в дополнительный инфоблок, сохранить, затем ввести информацию в основной инфоблок, связать элемент основного инфоблока с дополнительным, сохранить). Поэтому такой подход однозначно предполагает создание отдельного интерфейса для редактора.</p>
<p style="text-align: left;">Зато такой способ значительно удобнее первого в тех случаях, когда много уникальных атрибутов или N велико.</p>
<p style="text-align: left;">Иногда этот способ применяют совместно с первым: в основную таблицу (инфоблок) включают также наиболее часто используемые частные атрибуты, а менее часто используемые помещают в дополнительные таблицы (инфоблоки). Это позволяет в большинстве случаев избавиться от JOIN (или дополнительных выборок), но зато приходится программно контролировать корректность заполнения атрибутов, включённых в основную таблицу (инфоблок).</p>
<h4 style="text-align: left;"><a name="_Toc247197047"></a>Отображение дискриминации в 5 таблиц</h4>
<p style="text-align: left;">Создаются:</p>
<ul style="text-align: left;">
<li> таблица с <strong>общими</strong> атрибутами,</li>
<li> таблица со списком возможных <strong>значений дискриминатора </strong>«ID значения дискриминатора – наименование значения дискриминатора»,</li>
<li> таблица <strong>видов свойств</strong> «ID вида свойства – наименование вида свойства»,</li>
<li> таблица <strong>назначений свойств</strong> «ID вида свойства – ID значения дискриминатора» (в ней указывается, у какой сущности какие имеются свойства),</li>
<li> и таблица <strong>значений свойств</strong> «ID элемента основной таблицы – ID вида свойства – значение свойства».</li>
</ul>
<p style="text-align: left;"><img class="alignnone size-full wp-image-640" title="Отображение дискриминации в 5 таблиц" src="http://life.screenshots.ru/wp-content/uploads/2010/03/image026.gif" alt="Отображение дискриминации в 5 таблиц" width="515" height="288" /></p>
<p style="text-align: left;">Этот вариант следует применять, если всё-таки оказалось, что список возможных значений дискриминатора не является конечным или конечен, но очень велик.</p>
<p style="text-align: left;">Этот способ весьма тяжёл для классических таблиц, поскольку SQL-запрос получается достаточно сложным (либо разбивается на несколько запросов).</p>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Однако он достаточно производителен для того, чтобы Битрикс применял его на физическом уровне платформы для хранения свойств инфоблоков. У этого решения могла бы быть альтернатива в виде второго или третьего способов с теми же достоинствами и недостатками. Существуют удачные примеры реализации этих способов, например, в платформе «1С:Предприятие».</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">В Битриксе, если реализовывать его «в лоб» на уровне API инфоблоков, этот способ крайне неэффективен (и в плане удобства редактирования, и в плане производительности), и пользоваться им стоит только в самом крайнем случае. Поэтому описание этого способа мы приводим лишь для ознакомления.</p>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Дело в том, что в случае Битрикса невозможно нормально расставить индексы для быстрого сканирования инфоблоков видов, назначений и значений свойств, поскольку на уровне платформы они сами являются свойствами.</p>
<p><br class="spacer_" /></p>
</div>
<h3 style="text-align: left;"><a name="_Toc247197048"></a>Кратность связи «многие-ко-многим». Развязка</h3>
<p style="text-align: left;">Довольно распространён третий, последний, вариант кратности связи – связь «многие-ко-многим».</p>
<div style="border-width: medium medium medium 4.5pt; border-style: none none none double; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>О связи говорят, что она имеет кратность «многие-ко-многим», если каждый элемент сущности А может ссылаться одновременно на несколько элементов сущности Б, а каждый элемент сущности Б может ссылаться одновременно на несколько элементов сущности А.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Например, бывают ситуации, когда книга пишется не одним автором, а в соавторстве с другими авторами. В этом случае получается, что:</p>
<p style="text-align: left;">каждая книга может быть написана несколькими авторами;</p>
<p style="text-align: left;">каждый автор может написать несколько книг.</p>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>В Visio связь «многие-ко-многим» непосредственно нарисовать нельзя.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Данные сущностей, находящихся в отношении «многие-ко-многим», на бумаге обычно изображают в виде так называемой таблицы-шахматки (матрицы). От обычных (плоских) таблиц они отличаются тем, что имеют шапку не только сверху, но и справа. На пересечениях отмечают существующие связи.</p>
<div style="text-align: left;">
<table style="height: 219px;" border="1" cellspacing="0" cellpadding="0" width="462">
<tbody>
<tr style="height: 47.6pt;">
<td width="259">
<p><img class="alignnone size-full wp-image-641" title="Книги \ Авторы" src="http://life.screenshots.ru/wp-content/uploads/2010/03/image027.gif" alt="Книги \ Авторы" width="228" height="74" /></p>
</td>
<td width="192">
<p>Иванов И. И. (1937 г.р.)</p>
</td>
<td width="187">
<p>Петров П. П. (1920 г.р.)</p>
</td>
</tr>
<tr>
<td width="259">
<p>«Основы мармитологии», 1982</p>
</td>
<td width="192">
<p align="center"><strong>+</strong></p>
</td>
<td width="187">
<p align="center"><strong>+</strong></p>
</td>
</tr>
<tr>
<td width="259">
<p>«Мармитология и жизнь», 2008</p>
</td>
<td width="192">
<p align="center"><strong>+</strong></p>
</td>
<td width="187">
<p align="center"> </p>
<p><br class="spacer_" /></p>
</td>
</tr>
<tr>
<td width="259">
<p>«Бухгалтерия – это скучно?», 1990</p>
</td>
<td width="192">
<p align="center"><strong>+</strong></p>
</td>
<td width="187">
<p align="center"> </p>
<p><br class="spacer_" /></p>
</td>
</tr>
</tbody>
</table>
</div>
<p style="text-align: left;"> </p>
<p style="text-align: left;"> </p>
<div style="border-width: medium medium medium 3pt; border-style: none  none none solid; border-color: -moz-use-text-color -moz-use-text-color  -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background:  none repeat scroll 0% 0% white; text-align: left;">
<p>Таблица сравнения редакций Битрикса – это тоже типичная шахматка. Так,  слева находится список модулей, сверху – список редакций, а на  пересечениях указывается, входит ли данный модуль в данную редакцию.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">При переходе от инфологической модели к даталогической от связей «многие-ко-многим» непременно избавляются: для этого есть несколько способов.</p>
<p style="text-align: left;">Первый, самый примитивный, способ используется на практике крайне редко. В одну таблицу помещают данные обеих сущностей. Данные каждого автора дублируют столько раз, сколько он написал книг, а книгу столько раз, сколько авторов над ней работало. В следующем примере жирным шрифтом выделены избыточные данные. В данном случае их объём невелик, но ведь вместо них могли бы оказаться и данные типа «большой текст» – например, краткое содержание книг.</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="187" valign="top">
<p>Книга</p>
</td>
<td width="144" valign="top">
<p>Год выхода книги</p>
</td>
<td width="144" valign="top">
<p>Автор</p>
</td>
<td width="168" valign="top">
<p>Год рождения автора</p>
</td>
</tr>
<tr>
<td width="187" valign="top">
<p>Основы мармитологии</p>
</td>
<td width="144" valign="top">
<p>1982</p>
</td>
<td width="144" valign="top">
<p>Иванов И. И.</p>
</td>
<td width="168" valign="top">
<p>1937</p>
</td>
</tr>
<tr>
<td width="187" valign="top">
<p><strong>Основы мармитологии </strong></p>
</td>
<td width="144" valign="top">
<p><strong>1982 </strong></p>
</td>
<td width="144" valign="top">
<p>Петров П. П.</p>
</td>
<td width="168" valign="top">
<p>1920</p>
</td>
</tr>
<tr>
<td width="187" valign="top">
<p>Мармитология и жизнь</p>
</td>
<td width="144" valign="top">
<p>2008</p>
</td>
<td width="144" valign="top">
<p><strong>Иванов И. И. </strong></p>
</td>
<td width="168" valign="top">
<p><strong>1937 </strong></p>
</td>
</tr>
<tr>
<td width="187" valign="top">
<p>Бухгалтерия – это скучно?</p>
</td>
<td width="144" valign="top">
<p>1990</p>
</td>
<td width="144" valign="top">
<p><strong>Иванов И. И. </strong></p>
</td>
<td width="168" valign="top">
<p><strong>1937 </strong></p>
</td>
</tr>
</tbody>
</table>
<p style="text-align: left;">Если, например, выяснится, что автор Иванов родился, не в 1937-м, а в 1940-м, то нужно будет внести изменения сразу в несколько строк. Если вдруг из ассортимента магазина будет исключена книга «Основы мармитологии», то придётся удалить более одной строки. При этом информация об авторе Петрове также будет утрачена, так как он не написал других книг – а ведь снятие с продажи книги не всегда означает, что с сайта должна пропасть информация об её авторе.</p>
<p style="text-align: left;">Очевидно, что такого способа хранения данных следует избегать.</p>
<div style="border-width: medium medium medium 4.5pt; border-style: none none none double; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Таблица (инфоблок) находится в 4NF, если она находится в 3NF – и вставка/удаление/модификация строки таблицы не требует изменения других строк таблицы.</p>
<p><br class="spacer_" /></p>
</div>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Существуют также и другие нормальные формы, но они в применении к Битриксу представляют собой больше академический, чем практический интерес, поэтому здесь не рассматриваются.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Для приведения к 4NF создают «развязочную» зависимую сущность. Так же, как и при дискриминации, она не имеет смысла без существования основных сущностей.</p>
<p style="text-align: left;">Так, если сущности А и Б связаны с кратностью «многие-ко-многим», то создаётся «развязочная» сущность с именем А_Б, содержащая внешние ключи сущностей А и Б. При этом совокупность этих внешних ключей является первичным ключом сущности А_Б.</p>
<p style="text-align: left;">Все три сущности могут быть напрямую отображены в три таблицы БД.</p>
<p style="text-align: left;">На следующем рисунке видно, что у сущности Авторы_Книги первичный ключ составной – и оба его компонента являются внешними ключами (FK) исходных сущностей Авторы и Книги. Связи между сущностями теперь имеют кратность «один-к-одному». И если понадобится изменить год рождения автора, то будет изменена лишь одна строка сущности Авторы. При снятии с продажи одной книги будет удалена лишь одна строка из сущности Книги, никоим образом не затронув сущность Авторы (об удалении строк из Авторы_Книги чуть позже).</p>
<p style="text-align: left;"><img class="alignnone size-full wp-image-642" title="Развязочная сущность при отношении Многие-ко-многим" src="http://life.screenshots.ru/wp-content/uploads/2010/03/image029.gif" alt="Развязочная сущность при отношении Многие-ко-многим" width="491" height="79" /></p>
<p style="text-align: left;">Зависимая сущность, помимо служебной информации о связях основных сущностей, может также нести и осмысленную дополнительную информацию в неключевых атрибутах. Эта информация всегда характеризует <strong>не элементы</strong> сущностей, а является <strong>характеристикой связи между двумя конкретными элементами</strong> основных сущностей.</p>
<p style="text-align: left;">Так, предположим, нам нужно хранить информацию о том, какой автор получил какой гонорар за работу над данной книгой и каков был его вклад в общее дело. При использовании бумажной шахматки мы бы заменили галочки на данные о гонораре и вкладе.</p>
<div style="text-align: left;">
<table style="height: 257px;" border="1" cellspacing="0" cellpadding="0" width="466">
<tbody>
<tr style="height: 47.6pt;">
<td width="259">
<p><img class="alignnone size-full wp-image-641" title="Книги \ Авторы" src="http://life.screenshots.ru/wp-content/uploads/2010/03/image027.gif" alt="Книги \ Авторы" width="228" height="74" /></p>
</td>
<td width="192">
<p>Иванов И. И. (1937 г.р.)</p>
</td>
<td width="187">
<p>Петров П. П. (1920 г.р.)</p>
</td>
</tr>
<tr style="height: 22.9pt;">
<td rowspan="2" width="259">
<p>«Основы мармитологии», 1982</p>
</td>
<td width="192">
<p align="center">15 000 руб.</p>
</td>
<td width="187">
<p align="center">20 000 руб.</p>
</td>
</tr>
<tr style="height: 22.85pt;">
<td width="192">
<p align="center">соавтор</p>
</td>
<td width="187">
<p align="center">основной автор</p>
</td>
</tr>
<tr style="height: 12.75pt;">
<td rowspan="2" width="259">
<p>«Мармитология и жизнь», 2008</p>
</td>
<td width="192">
<p align="center">16 000 руб.</p>
</td>
<td rowspan="2" width="187">
<p align="center"> </p>
<p><br class="spacer_" /></p>
</td>
</tr>
<tr style="height: 12.75pt;">
<td width="192">
<p align="center">основной автор</p>
</td>
</tr>
<tr style="height: 12.75pt;">
<td rowspan="2" width="259">
<p>«Бухгалтерия – это скучно?», 1990</p>
</td>
<td width="192">
<p align="center">24 000 руб.</p>
</td>
<td rowspan="2" width="187">
<p align="center"> </p>
<p><br class="spacer_" /></p>
</td>
</tr>
<tr style="height: 12.75pt;">
<td width="192">
<p align="center">основной автор</p>
</td>
</tr>
</tbody>
</table>
</div>
<p style="text-align: left;"> </p>
<p style="text-align: left;">Согласитесь, достаточно громоздко? Однако в модели всё выглядит значительно красивее: достаточно добавить два неключевых поля Гонорар и ВкладВРаботу в сущность Авторы_Книги.</p>
<p style="text-align: left;"><img class="alignnone size-full wp-image-643" title="Развязочная таблица с смысловыми полями" src="http://life.screenshots.ru/wp-content/uploads/2010/03/image031.gif" alt="Развязочная таблица с смысловыми полями" width="501" height="84" /></p>
<p style="text-align: left;">В случае Битрикса, в принципе, можно также использовать отображение в три инфоблока. Однако это крайне неэффективно по той причине, что, как вы помните, первичным ключом у Битрикса всегда является ID.</p>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>В поля инфоблока поместить внешние ключи не удастся, а свойства вообще хранятся во внешней таблице. Естественно, выборки из физической БД будут не самыми производительными. Более того, поддерживать целостность данных придётся самостоятельно, а вводить данные без разработки специального интерфейса будет крайне затруднительно.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">К счастью, в Битриксе есть понятие множественных свойств, не характерное для реляционных баз данных. Так, в одном свойстве можно хранить несколько значений.</p>
<p style="text-align: left;">Множественное ссылочное свойство заменяет собой «развязочную» таблицу: по сути, оно и есть логическая таблица, у которой первый столбец – всегда ID текущего элемента, а второй стобец – ID’ы элементов, на которые он ссылается.</p>
<p style="text-align: left;">Сложность использования множественных полей в том, что придётся определиться, для какого именно инфоблока из двух связываемых будет создаваться множественное ссылочное свойство.</p>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>В некоторых случаях, однако, используют перекрёстные ссылки, создавая множественные ссылочные свойства в каждом из инфоблоков, ссылающиеся друг на друга. Это может быть очень эффективным решением с точки зрения производительности, когда полные выборки во всю ширину инфоблока производятся с одинаковой частотой из обоих инфоблоков.</p>
<p>Однако это требует существенных усилий на поддержание целостности данных (в случае подобной связности трёх и более инфоблоков сложность поддержки целостности возрастает лавинообразно).</p>
<p>Например, если редактор сайта создаёт в инфоблоке А элемент и привязывает его к элементу инфоблока Б, то при сохранении должно сработать событие, которое автоматически привяжет соответствующий элемент инфоблока Б к элементу инфоблока А (разумеется, нужно поддержать и вариант, когда редактор изменяет элемент инфоблока Б, а элемент инфоблока А изменяется автоматически). При этом – внимание! – необходимо будет обеспечить механизм, который при автоматическом изменении элемента инфоблока Б не запустит изменение инфоблока А, то есть не допустит зацикливание.</p>
<p>Поэтому рекомендуем использовать этот подход только при серьёзной необходимости и отличном понимании принципов работы обработчиков событий.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Следует определиться, какая из двух сущностей «больше похожа» на классификатор, а какая – на классифицируемую сущность. Как правило, почти на всех сайта классификатор используется только в виде списка (в связи с чем обычно и имеет только самые необходимые атрибуты: ID и Наименование). Тогда как классифицируемая сущность предназначена для просмотра больше на детальной странице, чем в списке.</p>
<p style="text-align: left;">В нашем примере книжного Интернет-магазина авторы используются, в основном, для отбора книг, то есть в качестве классификатора (на детальную страницу автора заходят значительно реже, чем на детальную страницу книги), тогда как книги представляют наибольшую смысловую ценность – и выступают в роли классифицируемой сущности.</p>
<p style="text-align: left;">Для облегчения выбора можно также представить себе, что было бы, если бы свойство было не множественным. Так, например, легко представить, что книга пишется только одним автором (в большинстве случаев так оно и есть), а вот представить, что во всём ассортименте магазина каждый автор написал только по одной книге, достаточно сложно.</p>
<p style="text-align: left;">В итоге, правило одно: <strong>множественное свойство следует размещать в том инфоблоке, в составе которого оно чаще будет отображаться на сайте</strong>. В нашем примере следует разместить его в инфоблоке Книги.</p>
<p style="text-align: left;">При задании имени множественного свойства следует использовать существительное не в единственном, а во множественном числе (разумеется, для ссылочных свойств оно должно совпадать с именем инфоблока-классификатора).</p>
<p style="text-align: left;">В Visio для изображения множественного свойства используется условное обозначение [LIST].</p>
<p style="text-align: left;"><img class="alignnone size-full wp-image-644" title="Развязка при помощи множественного поля" src="http://life.screenshots.ru/wp-content/uploads/2010/03/image033.gif" alt="Развязка при помощи множественного поля" width="507" height="101" /></p>
<p style="text-align: left;">Для того чтобы поставить отметку [LIST], следует выбрать на панели свойств нужное свойство, нажать кнопку Edit, выбрать вкладку Collection и отметить Ordered group of values (List) – напоминаем, именно этому варианту списка значений соответствует множественное поле Битрикса.</p>
<p style="text-align: left;"><img class="alignnone size-full wp-image-645" title="Настройка множественного поля в Visio" src="http://life.screenshots.ru/wp-content/uploads/2010/03/image034.png" alt="Настройка множественного поля в Visio" width="516" height="399" /></p>
<p style="text-align: left;"> </p>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Бывают ситуации, когда один и тот же классификатор выступает для классифицируемой сущности в разных качествах. Пусть, например, существуют сущности Мероприятия и Компании. У мероприятий есть организаторы и участники. И одна и та же компания может выступать для одного и того же мероприятия и как организатор, и как участник одновременно. В этом случае свойства-ссылки должны содержать в своём имени имя классификатора (в единственном или множественном числе – в зависимости от того, множественное ли свойство), а также роль этого свойства.</p>
<p><img class="alignnone size-full wp-image-646" title="На один и тот же классификатор ссылаются одновременно два поля классифицируемой сущности" src="http://life.screenshots.ru/wp-content/uploads/2010/03/image037.gif" alt="На один и тот же классификатор ссылаются одновременно два поля классифицируемой сущности" width="495" height="84" /></p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Читатели, знакомые с системой «1С:Предприятие», наверняка заметят аналогию с табличными частями документов (версии 7.7 и 8) и справочников (только 8). По сути дела, множественные свойства Битрикса – это табличные части 1С, но имеющие только один столбец.</p>
<p style="text-align: left;">Для большинства ситуаций одного столбца хватает. Однако в том случае, когда надо указать не только наличие связи, но и её характеристики (как в примере с гонорарами), приходится изворачиваться вплоть до использования неэффективного решения с отображением в три инфоблока. Однако есть вариант лучше.</p>
<p style="text-align: left;">Поскольку множественные свойства в Битриксе де-факто являются <strong>упорядоченными</strong> наборами значений, можно создавать столько дополнительных множественных свойств, сколько дополнительных атрибутов будет у связи.</p>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Внимание! Нам не известно известен ни один документ, в котором Битрикс официально оговаривал бы тот факт, что множественное свойство – это именно упорядоченный набор значений. Поэтому, как говорится, этот способ вы можете использовать только «на свой страх и риск»: способ весьма и весьма эффективный, хотя и недокументированный.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Например, можно создать в инфоблоке Книги два дополнительных множественных свойства: Гонорары и ВкладыВРаботу. Тогда первый элемент в списке авторов будет соответствовать первому гонорару и первому вкладу, второй автор – второму гонорару и второму вкладу и т.д.</p>
<p style="text-align: left;"><img class="alignnone size-full wp-image-647" title="Организация табличной части на нескольких множественных полях" src="http://life.screenshots.ru/wp-content/uploads/2010/03/image039.gif" alt="Организация табличной части на нескольких множественных полях" width="482" height="119" /></p>
<p style="text-align: left;">Опытный редактор даже сможет использовать для редактирования стандартную форму редактирования элемента, но это будет довольно неудобно (хотя и не смертельно), и <strong>возможно появление ошибок ввода</strong>. Для избежания этого придётся делать специализированную форму ввода, предназначенную специально для редактирования набора множественных свойств как одной таблицы.</p>
<p style="text-align: left;"><img class="alignnone size-full wp-image-648" title="Нестандартная форма для ввода табличных частей в публичной части сайта" src="http://life.screenshots.ru/wp-content/uploads/2010/03/image041.gif" alt="Нестандартная форма для ввода табличных частей в публичной части сайта" width="375" height="249" /></p>
<h3 style="text-align: left;"><a name="_Toc247197049"></a>Каскадное удаление и проверка целостности данных</h3>
<div style="border-width: medium medium medium 4.5pt; border-style: none none none double; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Если при удалении элемента сущности-классификатора автоматически удаляются все элементы классифицируемой сущности, которые ссылались на удаляемый элемент, то такая операция называется каскадным удалением данных.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Каскадное удаление можно включить либо на уровне СУБД (например, в Microsoft SQL Server для этого достаточно установить соответствующий флажок на форме редактирования связи), либо отработать на уровне триггеров.</p>
<p style="text-align: left;">С понятием каскадного удаления данных связана так называемая <strong>доменно-ключевая нормальная форма</strong>. Так, при этой форме невозможно удалить элемент классификатора, если на него есть хотя бы одна ссылка из классифицируемой сущности.</p>
<div style="border-width: medium medium medium 4.5pt; border-style: none none none double; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Операция проверки возможности удаления элемента классификатора и запрещения его удаления в случае наличия ссылок на него называется контролем целостности данных (data integrity check).</p>
<p><br class="spacer_" /></p>
</div>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Внимание! В подавляющем большинстве случаев не следует пользоваться каскадным удалением данных: велика вероятность того, что при удалении элемента классификатора, незначительного по смыслу, будет удалено множество важных данных классифицируемой сущности. Ещё более разрушительные последствия могут проявиться, если классифицируемая сущность также является классификатором для третьей сущности.</p>
<p>Вместо каскадного удаления рекомендуем пользоваться проверкой целостности данных.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">В настоящее время Битрикс практически не поддерживает ни каскадное удаление, ни проверку целостности данных. Так, при удалении элемента классификатора – свойство-ссылка элемента классифицируемой сущности просто-напросто очищается.</p>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Это особенно опасно в том случае, если поле-ссылка определено как обязательное к заполнению: в случае его очистки велика вероятность, что этот элемент нельзя будет корректно обработать программно (код-то написан с расчётом на то, что поле стопроцентно заполнено). Также нельзя будет изменить какое-либо другое поле данного элемента в административном интерфейсе до тех пор, пока не будет чем-либо заполнено поле-ссылка (это может привести в недоумение не слишком опытного редактора).</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">В качестве решения проблемы следует использовать аналоги триггеров для Битрикса – обработчики событий, связанных с инфоблоками.</p>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Внимание! Не следует путать файлы, вызываемые при редактировании элемента на детальной форме в административном интерфейсе, и обработчики событий на уровне инфоблоков. Только обработчики событий на уровне инфоблоков гарантированно отработают не только при визуальном (из админки), но и при программном удалении/модификации элемента.</p>
<p><br class="spacer_" /></p>
</div>
<div style="border-width: medium medium medium 3pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color windowtext; padding: 0cm 0cm 0cm 4pt; background: none repeat scroll 0% 0% white; text-align: left;">
<p>Файлы, вызываемые при редактировании/удалении элемента на детальной форме в административном интерфейсе, не вызываются при быстром редактировании элементов в форме отчёта (списка элементов инфоблока) или программном редактировании/удалении элементов инфоблока с помощью API.</p>
<p><br class="spacer_" /></p>
</div>
<p style="text-align: left;">Практически единственный случай, когда следует предпочесть каскадное удаление данных – это одновременное удаление строк из «развязочной» таблицы при удалении строки одной из связываемых таблиц. При этом, разумеется, следует убедиться, что «развязочная» таблица не имеет других связей, в которых она выступала бы в качестве классификатора.</p>
]]></content:encoded>
			<wfw:commentRss>http://life.screenshots.ru/the-code-inside/php-platform/information-architecture-bitrix/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Как сделать домашний лимонад. Рецепт</title>
		<link>http://life.screenshots.ru/kulinariya/lakayutsya-likyoryi/home-lemonade-subzeroalc/</link>
		<comments>http://life.screenshots.ru/kulinariya/lakayutsya-likyoryi/home-lemonade-subzeroalc/#comments</comments>
		<pubDate>Sun, 26 Apr 2009 19:15:56 +0000</pubDate>
		<dc:creator>Артём и Максим</dc:creator>
		
		<category><![CDATA[Лакаются ликёры]]></category>

		<category><![CDATA[безалкогольный]]></category>

		<category><![CDATA[домашний]]></category>

		<category><![CDATA[лимонад]]></category>

		<category><![CDATA[напиток]]></category>

		<category><![CDATA[рецепт]]></category>

		<guid isPermaLink="false">http://life.screenshots.ru/?p=574</guid>
		<description><![CDATA[ 
Для разнообразия приготовим безалкогольный (ну ладно, почти безалкогольный) освежающий коктейль – домашний лимонад subZEROalc. Если вам приелся вкус химических напитков, то этот лимонад для вас – самое то.
В отличие от бутылочного лимонада, здесь не будет пузырьков (фанаты, однако, могут использовать сифон). Вкус чем-то напоминает Schweppes Bitter Lemon, но более мягкий и ароматный.

Ингредиенты домашнего лимонада:

два средних [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://life.screenshots.ru/wp-content/uploads/2009/02/ukraine.jpg"></a> <img class="alignnone size-full wp-image-576" title="Безалкогольный домашний лимонад" src="http://life.screenshots.ru/wp-content/uploads/2009/04/subzerolemonade.jpg" alt="" width="500" height="375" /></p>
<p>Для разнообразия приготовим безалкогольный (ну ладно, почти безалкогольный) <strong>освежающий коктейль</strong> – домашний лимонад <strong>subZEROalc</strong>. Если вам приелся вкус химических напитков, то этот лимонад для вас – самое то.</p>
<p>В отличие от бутылочного лимонада, здесь не будет пузырьков (фанаты, однако, могут <strong>использовать сифон</strong>). Вкус чем-то напоминает <strong>Schweppes Bitter Lemon</strong>, но более мягкий и ароматный.</p>
<p><span id="more-574"></span></p>
<p><strong>Ингредиенты домашнего лимонада</strong><strong>:</strong></p>
<ul>
<li>два средних лимона с неповреждённой кожурой;</li>
<li>апельсиновый ликёр Triple Sec или Cointreau (опционально, 4-6 столовых ложек);</li>
<li>сахар (полстакана);</li>
<li>фильтрованная вода без хлорки (1,5 л);</li>
<li>ванилин (на кончике ножа);</li>
<li>шафран/куркума (щепотка);</li>
<li>листочки свежей мяты (по желанию).</li>
</ul>
<p>Самое главное – запастись острой картофелечисткой. Если её нет под рукой, то цедру с лимона можно срезать и острым ножом, но это гораздо труднее. Дело в том, что срезать цедру нужно очень тонко: на ней не должно остаться белой мякоти (она придаёт нежелательную горечь).</p>
<p>Поставьте <strong>эмалированную</strong> кастрюлю с водой на огонь.</p>
<p>Теперь разрезаем лимоны поперёк долек пополам, затем каждую половинку разрезаем ещё раз пополам, но уже вдоль долек. Проще всего <strong>выдавливать сок из лимонов</strong>, разрезанных именно таким образом – сдавливая «уголки» четвертушек.</p>
<p>Как только вода закипит, следует выключить огонь. Говорят, <a title="О витамине C" href="http://www.limonnik.ru/rus_pages/library/articles/vitamin_c.html">витамин C не разрушается</a> при кипении воды, однако, наверное, всё-таки <a title="А Wikipedia утверждает, что при тепловой обработке витамин C разрушается" href="http://ru.wikipedia.org/wiki/%D0%92%D0%B8%D1%82%D0%B0%D0%BC%D0%B8%D0%BD_C#.D0.9E.D1.81.D0.BE.D0.B1.D1.8B.D0.B5_.D1.83.D0.BA.D0.B0.D0.B7.D0.B0.D0.BD.D0.B8.D1.8F">лучше лимонад не варить</a>.</p>
<p>Сок и цедру нужно вылить в воду, туда же положить ванилина и немножко <a title="Теория: приправы и специи" href="http://life.screenshots.ru/kulinariya/molchanie-vetchinyi/spetsii/">куркумы</a> (она придаст приятный жёлтый оттенок напитку).</p>
<p>Кастрюлю с лимонадом нужно поставить в прохладное место, а когда она остынет – в холодильник (на ночь). Чем дольше лимонад будет настаиваться, тем более насыщенный и горьковатый вкус у него будет. Но не стоит хранить лимонад дольше пары дней: срок годности у него небольшой.</p>
<p>Последний штрих. Взять высокие стаканы, положить много льда, листочки мяты, можно добавить сахар и совсем немного <a title="Как приготовить ликёр Cointreau SOHO в домашних условиях" href="http://life.screenshots.ru/kulinariya/lakayutsya-likyoryi/cointreau-soho/">Cointreau</a>. Достать из кастрюльки и положить в стаканы по нескольку полосочек цедры – для красоты. Трубочка, зонтик – и <strong>отличный напиток для безалкогольной вечеринки</strong> готов!</p>
<p>Если вкус напитка покажется слишком насыщенным, то можно разбавить его холодной водой, добавив немного сахара.</p>
<p>Кстати, если вы хотите разнообразить свой «<strong>безалкогольный бар</strong>», то <a title="Как самому приготовить Ice Tea (холодный чай)" href="http://life.screenshots.ru/kulinariya/lakayutsya-likyoryi/ice-tea/">холодный чай</a> тоже можно приготовить дома.</p>
]]></content:encoded>
			<wfw:commentRss>http://life.screenshots.ru/kulinariya/lakayutsya-likyoryi/home-lemonade-subzeroalc/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Достопримечательности Египта: Шарм-Эль-Шейх, Синайский полуостров, Синайская пустыня, Цветной каньон</title>
		<link>http://life.screenshots.ru/trips/egypt/</link>
		<comments>http://life.screenshots.ru/trips/egypt/#comments</comments>
		<pubDate>Sat, 07 Mar 2009 21:20:57 +0000</pubDate>
		<dc:creator>Артём и Максим</dc:creator>
		
		<category><![CDATA[Наши лучшие посты]]></category>

		<category><![CDATA[Экспедиции]]></category>

		<category><![CDATA[египет]]></category>

		<category><![CDATA[монастырь святой екатерины]]></category>

		<category><![CDATA[рас-мохаммед]]></category>

		<category><![CDATA[синай]]></category>

		<category><![CDATA[синайская пустыня]]></category>

		<category><![CDATA[синайский полуостров]]></category>

		<category><![CDATA[цветной каньон]]></category>

		<category><![CDATA[шарм-эль-шейх]]></category>

		<category><![CDATA[экспедиция]]></category>

		<guid isPermaLink="false">http://life.screenshots.ru/?p=487</guid>
		<description><![CDATA[
— Не ходите, дети, в Африку гулять!
Строго говоря, Синайский полуостров, на котором расположен египетский город-курорт Шарм-Эль-Шейх – это не совсем Африка. Но и не Азия – а так, не пойми что. Похоже, скорее, на район Большой Ялты в не пойми чьём Крыму.

Египет с Африкой, какими мы их увидели, не похожи на сложившийся пирамидно-банановый образ. На [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-489" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-01-sunrise-palms.jpg" alt="Достопримечательности Египта: Шарм-Эль-Шейх, Синайский полуостров (Синай)" width="500" height="375" /></p>
<p>— Не ходите, дети, в Африку гулять!</p>
<p>Строго говоря, <strong>Синайский полуостров</strong>, на котором расположен египетский город-курорт <strong>Шарм-Эль-Шейх</strong> – это не совсем Африка. Но и не Азия – а так, не пойми что. Похоже, скорее, на район Большой Ялты в <a title="В статье проводятся аналогии между суверенитетом Крыма и Аландских островов" href="http://life.screenshots.ru/trips/mariehamn-aland/#politics" target="_blank">не пойми чьём Крыму</a>.</p>
<p><img class="alignnone size-full wp-image-490" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-02-lonely-tree.jpg" alt="Дерево посреди Синайской пустыни" width="500" height="375" /></p>
<p>Египет с Африкой, какими мы их увидели, не похожи на сложившийся пирамидно-банановый образ. На самом деле, мы оказались в самой гуще арабского мира, где дикий, почти первобытный образ жизни бедуинов соседствует с впечатляющими достижениями современной цивилизации. Где мёртвая пустыня соседствует с восхитительным творением природы – богатейшим <strong>подводным миром Красного моря</strong>.</p>
<p><span id="more-487"></span></p>
<p><img class="size-full wp-image-491" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-03-camels.jpg" alt="Бедуины на верблюдах" width="500" height="375" /></p>
<h2>История и природа Шарм-Эль-Шейха</h2>
<p>Шарм-Эль-Шейх был построен всего каких-то пару десятков лет назад посреди песков Синайской пустыни. С нуля. То есть великолепные отельные парки, пальмовые рощи, роскошные цветники – всё это появилось благодаря упорнейшему труду человека. Только огромные масштабы этого труда позволили построить мощные опреснители морской воды – и это дало возможность превратить части пустыни в живописнейшие оазисы.</p>
<p><img class="alignnone size-full wp-image-492" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-04-flowers.jpg" alt="Цветы Шарм-Эль-Шейха" width="500" height="375" /></p>
<p>Естественная же <strong>природа Синая</strong> – это высокие горы из песчаника, возвышающиеся посреди каменистой пустыни.</p>
<p><img class="alignnone size-full wp-image-493" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-05-sinai.jpg" alt="Синайский полуостров с самолёта" width="500" height="667" /></p>
<p>Посмотрите внимательно на фото с самолёта (да, мы знаем, что не стоит фотографировать во время посадки такой развалюхи, которая привезла нас сюда, – но вид просто гипнотизировал). Хорошо видна зелёная полоска – это и есть знаменитый на весь мир<strong> коралловый риф</strong> в Красном море. Вдоль побережья протянулась цепочка рукотворных оазисов-отелей.</p>
<p>Когда мы собирались в Египет, был большой соблазн сэкономить и  купить путёвку в так называемый <strong>отель «второй линии»</strong>, то есть стоящий не прямо на берегу, а за «первой линией». В рекламе говорилось, что в таких отелях отдыхающих до моря довозят бесплатные отельные автобусы. Может, оно и неплохо, но следующее фото убеждает в обратном. Лучше сэкономить на чём-то другом.</p>
<p><img class="alignnone size-full wp-image-494" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-06-second-line-hotel.jpg" alt="Отели второй линии: не стоит экономить!" width="500" height="375" /></p>
<p>Кстати! Если вы хотите узнать, как реально будет выглядеть ваш отель (на сайте отеля и в рекламных проспектах всё соооовсем по-другому), то установите <a title="Программа Google Earth" href="http://earth.google.com/" target="_blank">Google Earth</a>, введите название отеля – и смотрите. Конечно, актуальность фотографий со спутника составляет порядка двух лет, но пользовательские фотографии, которые привязываются к этому месту (в виде синих квадратиков сервиса Panoramio) могут быть вполне свежими. Вы не поверите: маркетоиды отелей, похоже, до сих пор не знают об этом сервие – а потому в Google Earth вы почти не встретите рекламных фотографий, снятых исключительно с удачных ракурсов.</p>
<p>Мы вот оказались умными только задним числом – а потому наш отель был рядом со стройкой. К счастью, в нашем случае она не так уж сильно мешала.</p>
<p><img class="alignnone size-full wp-image-495" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-07-google-earth-coral-baech-tiran.jpg" alt="Отель «Coral Beach Tiran» на карте Google Earth" width="500" height="375" /></p>
<p>Подумать только: какое торжество технологий! Ещё совсем недавно качественными <strong>фотографиями со спутника</strong> могли пользоваться только вояки, а сейчас мы можем получить массу информации и смотреть реальные пейзажи, привязанные к местности. Дух захватывает!</p>
<h2>Как добраться до Шарм-Эль-Шейха</h2>
<p>Аэропорт оказался вполне европейским: «рэйс васэмнадцат пасадка бистро-бистро». Это не тот приятный голос девушки-диспетчера в Домодедово, но зато вполне дружелюбно и информативно. К слову, девушек в Египте нет. Нигде. За исключением, конечно же, сотрудниц наших турфирм.</p>
<p><img class="alignnone size-full wp-image-496" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-08-cocktail-guide-helen.jpg" alt="Коктейльный гид Елена" width="500" height="375" /></p>
<p>Туристический сервис здесь поставлен и отработан великолепно. Единственная заминка была с оформлением <strong>египетской «визы»</strong>. На самом деле, всё просто. Подходите к окошечку, меняете доллары (<strong>курс доллара к египетскому фунту</strong> по всей стране во всех банках, говорят, одинаковый, поэтому смело можно обменивать в аэропорту). Оплачиваете в это же окошечко стоимость визы и заполняете прилагающуюся карточку латинскими буквами.</p>
<p>Вежливые сотрудники аэропорта предлагают помочь с заполнением за дополнительную плату, однако, право же, это вполне можно сделать и самостоятельно. Визу вклеиваете на свободную страничку паспорта – и вперёд на паспортный контроль, за которым вас встретит сотрудник турфирмы.</p>
<p>Если вы чувствительны к шуму, то при выборе отеля следует предпочесть тот, что находится дальше от аэропорта.</p>
<p><img class="alignnone size-full wp-image-497" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-09-airplane-above-hotel-roof.jpg" alt="Самолёты летают прямо над крышами египетских отелей" width="500" height="375" /></p>
<p>Однако мы не сильно заморачивались на этот счёт. Уже через полчаса комфортабельный автобус привёз нас в столь же комфортабельный <strong>отель Coral Beach Tiran</strong>.</p>
<p><img class="alignnone size-full wp-image-498" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-10-hotel-swimming-pool.jpg" alt="Бассейн отеля Coral Beach Tiran" width="500" height="375" /></p>
<h2>Отели Шарм-Эль-Шейха</h2>
<p><strong>Египетские отели</strong> – это, в основном, двухэтажные домики с толстыми стенами, позволяющими сохранять прохладу. Их ориентируют таким образом, чтобы солнечные лучи попадали в окна только на рассвете, когда солнце тёплое и ласковое. Остальное время козырьки, решетчатые навесы и прочие архитектурные элементы надёжно защищают от зноя. Поэтому кондиционер здесь – скорее вспомогательное средство охлаждения.</p>
<p><img class="alignnone size-full wp-image-499" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-11-coral-beach-tiran-arc.jpg" alt="Вертикальное озеленение в Coral Beach Tiran" width="500" height="375" /></p>
<p>Впрочем, в октябре, несмотря на 32 градуса на термометре, жара не такая уж и изнуряющая – всё благодаря низкой влажности.</p>
<p><img class="alignnone size-full wp-image-500" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-12-crazy-plants.jpg" alt="Сумасшедшая растительность в Coral Beach Tiran" width="500" height="375" /></p>
<p>Если рельеф позволяет, то здания отелей строятся террасами – поэтому значительная часть номеров окнами выходит на море. Из окон нашего отеля открывался прекрасный вид на одноимённый <strong>остров Тиран</strong>.</p>
<p><img class="alignnone size-full wp-image-501" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-13-sunrise-tiran-isle.jpg" alt="Восход солнца над островом Тиран" width="500" height="375" /></p>
<p>В отличие от крымских отелей, которые всеми путями стараются сделать ярче, здесь применяется старый проверенный способ – белоснежная извёстка, которая на ярком солнце смотрится очень нарядно.</p>
<p><img class="alignnone size-full wp-image-502" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-14-hotel-eastern-style.jpg" alt="Особенности восточного стиля архитектуры отеля позволяют спасаться от палящего солнца" width="500" height="375" /></p>
<p>В номере отеля, в отличие от Скандинавии, мы не нашли Библию (кто бы сомневался). Зато, выдвинув ящик стола в номере, всегда можно узнать, <strong>где восток</strong>.</p>
<p><img class="alignnone size-full wp-image-503" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-15-prayer-direction.jpg" alt="Направление молитвы в выдвижном ящике стола" width="500" height="375" /></p>
<p>Несмотря на суровость природы и нравов арабского мира, <strong>в отеле очень уютно</strong> (не просто чисто, а именно уютно). На любую поверхность постоянно осаждается пыль, принесённая ветром из пустыни – но её тут же стирают, растения поливают и всячески наводят марафет. При этом даже самым ранним утром персонал улыбчив и вежлив – и все постоянно что-то напевают себе под нос. Даже выполняя самую тяжёлую и грязную работу за копейки, люди кажутся вполне довольными <strong>текущим моментом жизни</strong>.</p>
<p><img class="alignnone size-full wp-image-504" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-16-the-tree.jpg" alt="Сочная зелень искусственного оазиса" width="500" height="500" /></p>
<p>Теперь, услышав стенания коллег по поводу <strong>однообразной и скучной работы офисного программиста</strong>, невольно вспоминаются эти люди.</p>
<p><img class="alignnone size-full wp-image-505" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-17-sinai-sunrise.jpg" alt="Восход солнца над Красным морем" width="500" height="667" /></p>
<p>Кстати о людях. Задорнов не преминул бы с наслаждением рассказать о находчивости <strong>наших</strong>. Количество топчанов рассчитано исходя из среднего времени возлежания одной тушки. Однако наши люди предпочитают занимать их на целый день. С первыми лучами солнца они выбегают из номеров, расстилают полотенечки – и идут дальше спать до обеда. Всё: лежак безнадёжно занят.</p>
<p>Вообще на фоне арабов наши смотрятся как-то… Да так же, как на фоне европейцев и прочих народов.</p>
<p><strong>Египетский алкоголь несъедобен</strong> в принципе: видимо, из-за исламского «сухого закона» работники алкогольной промышленности толком не могут продегустировать и ужаснуться. Но наших это не останавливает: <strong>халява ведь</strong>!</p>
<p>Умеренность в еде тоже не принадлежит к нашим национальным чертам – и для этого здесь созданы все условия. Для тех, кто проспал завтрак или даже обед, организована «система перекусов». Многие говорят, что <strong>еда по системе al-inclusive</strong> не сильно разнообразная. Ну, может, оно и так – но для тех, кто в рабочие дни питается бутербродами или, в лучшем случае, в столовке, разнообразия будет вполне достаточно. А уж выпечка поразит воображение кого угодно.</p>
<p>У египтян, помимо алкоголя, проблемы ещё и со свининой. Поэтому они нарушают сразу две <a title="Как правильно приготовить шашлык" href="http://life.screenshots.ru/kulinariya/molchanie-vetchinyi/shashlyk/" target="_blank">заповеди шашлычника</a>: они делают <strong>шашлык из говядины</strong> – и не на углях, а на открытом огне. Вот так:</p>
<p><img class="alignnone size-full wp-image-506" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-18-cheff-burns.jpg" alt="Повар жж0т! Барбекю по-египетски" width="500" height="375" /></p>
<p>Пожалуй, главная достопримечательность любого шармэльшейхского отеля – это <strong>коралловый риф</strong>. Там РЫБКИ! Описывать их бесполезно, а показывать фотки, сделанные без оборудования для подводной съёмки, стыдно. Масштаб этого зрелища напоминает «Подводную одиссею команды Кусто» – или, на худой конец, <strong>хельсинкский аквариум</strong> (и в тысячу раз масштабнее севастопольского аквариума – хотя у нас там теперь тоже есть свой крошечный коралловый риф).</p>
<p>Причём рыбки не где-то вдалеке, а плавают прямо вокруг вас. И трутся об ноги, <strong>как коты</strong>.</p>
<p><img class="alignnone size-full wp-image-507" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-19-reef-coral-fish.jpg" alt="Коралловые рыбки трутся о ноги, как котята" width="500" height="375" /></p>
<p>Без маски с трубкой на Красном море делать нечего. «<strong>Коралловые тапочки</strong>» же в большинстве случаев бесполезны: по кораллам вообще-то ходить не разрешается, поэтому вы ныряете с плавучего мостка – понтона, уходящего в море метров на 50.</p>
<p><img class="alignnone size-full wp-image-508" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-20-red-see-reefs.jpg" alt="Коралловый риф с самолёта" width="500" height="375" /></p>
<p>Те, кто боятся плавать на глубину – могут не бояться. Там, где на снимке зелёное – это коралл, там по колено. Потом он вертикально уходит вниз – и вы плаваете прямо у самой его кромки. Именно на кромке и обитают фантастические рыбки и миллионы цветных кораллов. А вот в глубине, на пределе видимости, плавают <strong>гигантские зубастые рыбы</strong> – но тоже цветные.</p>
<p>Рекомендуем обязательно посмотреть на красных <strong>морских ежей</strong>, попробовать найти нору со <strong>злобной муреной</strong>, полюбоваться самыми настоящими рыбами-бабочками – и сотней-другой остальных видов.</p>
<p>Египетское ночное море красиво – как и любое ночное море. Увы, желающих полюбоваться созвездиями в низких широтах разочарует сильная засветка от отелей.</p>
<p><img class="alignnone size-full wp-image-509" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-21-coral-beach-tiran-on-the-night.jpg" alt="Отель Coral Beach Tiran ночью" width="500" height="375" /></p>
<p>Зато, если у вас есть мощный фонарь, можно пройтись по понтону и посмотреть на хищную ночную живность – ту самую, из-за которой <strong>после захода солнца запрещается купаться</strong>.</p>
<h2>Жители  Египта</h2>
<p>В Египте нам пришлось пообщаться со многими арабами, что послужило значительному пересмотру взглядов на арабский мир. Так, на базарах – всё те же люди, знакомые нам по московским рынкам, хватающие за руку и ведущие себя панибратски. Но если вы заболеете (а такое с отдыхающими, увы, случается нередко: непривычная еда и вода, резко отличающийся от нашего климат, <strong>отравления брюквой</strong> в некоторых отелях…), то к вам в течение 15 минут прибудет самый настоящий интеллигентный доктор в очках, а не <a href="#beduin-break-dance">шаман с бубном</a>.</p>
<p>Ещё вы можете пить чай и разговаривать часами об истории и настоящем Египта с <strong>продавцом папирусов Ибрагимом</strong>, получающим второе высшее образование и свободно разговаривающим на нескольких языках. Русские фразеологизмы он просит записывать ему в тетрадочку и объяснять их значение.</p>
<p><img class="alignnone size-full wp-image-510" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-22-ibragim-papyrus-seller.jpg" alt="Продавец папирусов Ибрагим" width="500" height="375" /></p>
<h2>Дорожное движение в Египте</h2>
<p><a name="egyptian-need-for-speed"></a>В курортной зоне дороги вполне приличные, с цветниками между двумя проезжими частями. Проблема в другом: правил дорожного движения в Египте как бы не существует, все ездят, как хотят.</p>
<p><img class="alignnone size-full wp-image-511" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-23-sharm-el-sheikh-highway.jpg" alt="Шарм-Эль-Шейхское шоссе" width="500" height="375" /></p>
<p>Видимо, чтобы снизить аварийность, власти Шарм-Эль-Шейха организовали движение таким образом, что в принципе не существует левых поворотов (которые, конечно же, потенциально опаснее правых). Для того, чтобы повернуть налево, вам надо: проехать до ближайшего разрыва в цветнике (он помечается табличкой <strong>U-turn</strong>), там развернуться и потом повернуть вправо.</p>
<p>Чтобы хоть как-то привлечь внимание к дорожным знакам, их контуры часто украшают светодиодными гирляндами – ночью очень нарядно.</p>
<p>Периодически встречаются <strong>грозные блокпосты</strong>. Учёт и контроль.</p>
<p><img class="alignnone size-full wp-image-512" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-24-kpp.jpg" alt="Блок-пост на шоссе в Египте" width="500" height="375" /></p>
<p>Но главный шик – это дорожный знак «обгон запрещён», стоящий на <strong>встречной</strong> стороне дороги, но <strong>по ходу</strong> твоего движения. Дескать, коли прёшь по встречке, то хотя бы не обгоняй.</p>
<h2>Сувениры из Египта</h2>
<p>Главный египетский сувенир – это папирус, наряду с настоящим <strong>египетским каркадэ</strong> (то, что продаётся у нас, не идёт ни в какое сравнение) и восточными специями. Кусочки мумии и обломки пирамиды, купленные с рук, не в счёт.</p>
<p>Сувениром <strong>не является</strong> отломанный под покровом ночи коралл – за него на таможне могут попросить штраф в тысячу долларов (или отрубить руку, на выбор).</p>
<p>Золотистый и <strong>коричневый папирусы</strong> отличаются только временем выдержки под прессом: 6 или 12 дней соответственно. Папирус при этом должен быть многослойным – и на просвет волокна папируса должны лежать крест накрест (иначе это не папирус, а лист банана). На genuine-папирусы ещё ставят штампы, но мы бы этому не доверяли.</p>
<p>Сейчас на папирусах рисуют не только <strong>фараонов</strong> и богов – могут нарисовать даже вас. Но если вам не нравится китч, выбирайте папирус с аутентичным рисунком без всяких нелепых подписей на английском. Так, «<strong>Глаз Хороса</strong>» шикарно будет смотреться в офисе вместо портрета строгого Путина (который как бе говорит: «Я всё вижу, вы не работаете!»). А если вы купите «<strong>Дерево жизни</strong>» на чёрном фоне и догадаетесь повесить его не в блевотно-золотистую рамочку (они почему-то у египтян пользуются особой популярностью), а в хорошую чёрную раму из IKEA (да-да, собирается за час) с креповым чёрным паспарту, то вы получите шикарное <strong>украшение для дома</strong> за копейки.</p>
<p><img class="alignnone size-full wp-image-513" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-25-horos-eye-papyrus.jpg" alt="Папирус «Глаз Хороса»" width="500" height="400" /></p>
<p>Если повезёт, папирус вы сможете купить прямо в отеле (нам очень повезло). Правило «на рынке дешевле» тут не работает: видимо, в отеле дорожат репутацией магазинчиков. А вот за всем остальным лучше съездить на <strong>восточный базар</strong> – в так называемый «<strong>Старый Город</strong>» – или хотя бы просто на местную «ялтинскую набережную» – <strong>Наама-Бэй</strong>.</p>
<p><img class="alignnone size-full wp-image-514" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-26-naama-bay-restaurant.jpg" alt="Набережная Наама-Бэй. Ресторан" width="500" height="375" /></p>
<p><strong>Египетские специи</strong> восхитительны – но есть одно «но»: стоит вам положить их у себя в номере, как они становятся добычей невесть откуда берущихся <strong>муравьёв</strong>. Мы пробовали положить их в холодильник – но там они отсырели, и по возвращению домой на часть из них напала плесень. Так что герметичной тарой с влагопоглотителем рекомендуем запастись ещё дома. Не стоит доставать влагопоглотитель из обувной коробки – больше подойдёт тот, что кладут в пакеты с <a title="Суши - русское национальное блюдо" href="http://life.screenshots.ru/kulinariya/molchanie-vetchinyi/sushi-russkoe-natsionalnoe-blyudo/" target="_blank">водорослями для суши</a>.</p>
<p>У нас отлично выжили зелёный и розовый перцы (<a title="Теория: приправы и специи" href="http://life.screenshots.ru/kulinariya/molchanie-vetchinyi/spetsii/" target="_blank">фантастический аромат</a>!), коричные дубины (палочками их язык не поворачивается назвать). И, конечно, каркадэ. Берите дорогой, большими цветками, с сильным ароматом. А потом всю зиму: граммов сто сахара на литр воды и десяток ложек каркадэ.</p>
<p>Магазинов со специями вы найдёте достаточно. Ассортимент везде одинаков – поэтому лучше выберите одного продавца, торгуйтесь с ним до смерти – и получите огромную скидку.</p>
<p><img class="alignnone size-full wp-image-515" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-27-egyptian-spices.jpg" alt="Египетские специи в магазинчике «Old Shop» в Наама-Бэй" width="500" height="375" /></p>
<p>Мерчандайзеру на заметку: любой товар на меховой полке выглядит шикарно, особенно если это «<strong>египетская виагра</strong>», которую вам обязательно предложат. Будете за Уралом – там будет <strong>барсучий жир</strong>. У каждого народа снадобье своё.</p>
<p><img class="alignnone size-full wp-image-516" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-28-old-shop-spices.jpg" alt="Коричные палочки, розы пустыни и каркадэ" width="500" height="375" /></p>
<p>Экзотических фруктов в Египте не так уж и много. Из реально съедобных – только гигантский <strong>египетский манго</strong> (его вкус вообще не похож на манго из супермаркета) да <strong>сладкий гранат </strong>(!) размером с дыню. Зелёные апельсины, финики и прочие <strong>хз-фрукты</strong> съедобны разве что из любопытства.</p>
<p><img class="alignnone size-full wp-image-517" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-29-hz-fruit.jpg" alt="ХЗ-фрукт (предположительно питахайя)" width="500" height="375" /></p>
<p>За фруктами, ковриками, верблюжьими стульчиками и прочей развесистой клюквой лучше отправиться в Старый Город. Этот восточный в прямом смысле слова базар интересен хотя бы даже из <strong>этнографического любопытства</strong>. Лучше идти туда вечером, но до темноты.</p>
<p><img class="alignnone size-full wp-image-518" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-30-egyptian-souvenirs.jpg" alt="Египетские сувениры" width="500" height="375" /></p>
<p>Торгуйтесь как только можете! Присмотритесь, как это делают более опытные покупатели. Тот же манго местным продаётся по <strong>5 египетских фунтов</strong> (около доллара) за килограмм – но вам с вашей европейской внешностью и браслетом отеля его будут пытаться продать за 35–40. Именно поэтому даже в магазинах (за исключением единичных «супермаркетов») нет ценников.</p>
<p>По-русски (как и по-английски) продавцы обычно понимают очень плохо, говорят заученными фразами (хотя объясниться жестами можно всегда). Не ждите вопроса после приветствия: «Можина адын вапрос?» – это риторическая фраза, за которой последует предложение купить хоть что-нибудь. Будьте готовы к тому, что местный маркетинг весьма агрессивен: вас будут хватать за руки, тыкать товарами прямо в вас – и совершенно искренне каждый раз обижаться, если вы будете проходить мимо.</p>
<p><img class="alignnone size-full wp-image-519" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-31-carpet-maker.jpg" alt="Ткацкий станок для изготовления ковриков из верблюжьей шерсти" width="500" height="375" /></p>
<p>В Египте есть своё местное мегаживотное – «<strong>ферблюд</strong>». На нём ездят, пьют верблюжье молоко, с его помощью ищут родники, из шерсти делают одеяла и коврики, мясо идёт на шашлыки (очень вкусно!), из кожи делают что-то вроде пуфиков, а также верблюдами расплачиваются с родственниками невест. На маленьком верблюжьем коврике зимой очень приятно постоять ногами – да и рисунок гениален в своей ёмкости: палатка бедуина, «ферблюд», пальма, пустыня и горы – вот и весь Синай.</p>
<p>Если надумаете покупать «стульчик», то берите бесцветный: красители используют не ахти какие. Потом хорошенько вымойте и просушите на египетской жаре (только не на прямом солнце) – иначе будет… гмм&#8230; попахивать верблюдом. Зато потом в стульчик в качестве начинки поместится вся одежда, которую носить уже нельзя, а выбросить всё ещё жалко.</p>
<p>И обязательно – «роза пустыни». Видимо, как раз о ней песня Стинга <strong>Desert Rose</strong>.</p>
<h2>Синайская пустыня «для чайников»</h2>
<p>Собственно, есть два способа увидеть пустыню: «для всех» и «для фанатов».</p>
<p>Способ «для всех» называется «<strong>Сафари на квадроциклах + катание на верблюдах + ужин и чай с бедуинами</strong>».  Это что-то в стиле «поесть блинов с икрой на Красной площади и станцевать с медведем под балалайку, выпив водки из самовара». Зато недорого и доступно любому желающему с любой физподготовкой и жароустойчивостью.</p>
<p>Всё очень просто. Вас привозят на раздолбанном микроавтобусе на ближний край пустыни (по пути водитель автобуса задорно бибикает в такт замысловатой музыке из <strong>кассетной магнитолы</strong>).</p>
<p><img class="alignnone size-full wp-image-520" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-32-sinai-rocks.jpg" alt="Синайская пустыня. Скалы" width="500" height="375" /></p>
<p>Рекомендуется заранее закупить «арафатку» – клетчатый платок, который арабы повязывают на голову (семантическую близость с Ясиром Арафатом подтвердить не удалось). <strong>Арафатка</strong> отлично защитит вас от пыли при движении по пустыне, а ещё в ней нежарко (защищает от солнца и при этом голова не потеет). Не бойтесь, завязывать арафатку вас с удовольствием научат аборигены.</p>
<p><img class="alignnone size-full wp-image-521" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-33-arafatka.jpg" alt="Арафатка" width="500" height="375" /></p>
<p>Пять минут инструктажа жестами – и вы заправский <strong>водитель квадроцикла</strong>. Более подробного инструктажа не требуется: несмотря на то, что на борту написано гордое <strong>Honda</strong>, девайс убит настолько, что глохнет каждые сто метров, а ехать быстрее 30 км/ч не может в принципе. Но при движении по «волночкам» на песке вы всё прочувствуете даже на такой скорости. А главное – вы таки увидите в первом приближении Синайскую пустыню.</p>
<p><img class="alignnone size-full wp-image-522" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-34-siani-safari.jpg" alt="Сафари на квадроциклах по Синайской пустыне" width="500" height="375" /></p>
<p>Потом вас покатают на верблюде. Животные, как оказалось, весьма пахучие. Иногда они почему-то начинают бурчать, как двигатель внутреннего сгорания. Страшнее всего, когда верблюд «паркуется»: он резко ложится на передние лапы, и вас бросает вперёд, а потом назад – держитесь крепче! Поскольку поездить на верблюде в средней полосе России приходится нечасто, то с непривычки через пять минут катания натираешь себе всё что только можно: у седла отсутствуют стремена. С уважением смотришь на арабов, которые могут на этом животном <strong>пересечь пустыню за месяц</strong>.</p>
<p>Потом собственно ужин с чаем. Чай на вкус ничего, но на вид… Для тех, кому национальный колорит<strong> чайной церемонии</strong>, заключающийся в питье чая из немытых последние лет десять стаканов, кажется избыточным, раздают демократичную бонакву в пластиковых бутылках.</p>
<p>Ужин привозят, видимо,  из какого-то отеля в контейнерах, покрытых фольгой, и разогревают тут же на открытом окне. По виду вполне съедобно и даже вкусно – но не особо аутентично. После ужина обещают танцы.</p>
<p>Во время ожидания танцев можно полюбоваться розовым синайским закатом. Здесь живут огромные птицы – наверное, <strong>аисты</strong>. Чёрные силуэты на фоне тёмных гор.</p>
<p><img class="alignnone size-full wp-image-523" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-35-sinai-bird.jpg" alt="Аист в Синайских горах" width="500" height="375" /></p>
<p>Через некоторое время подкатывают <a name="beduin-break-dance"></a>хранители <strong>бедуинского культурного наследия</strong>… нет, не на верблюдах, а на вполне современных автомобилях.</p>
<p><img class="alignnone size-full wp-image-524" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-36-egyptian-deduine-dancer.jpg" alt="Бедуинский танцор" width="500" height="500" /></p>
<p>Танцуют действительно ловко и со знанием дела. Танец заключается в том, что огромная юбка на танцоре развевается, он делает с ней хитроумные движения, а в руках перебирает бубны. Ни дать ни взять сисадмин. Добиться внятных объяснений от местных, когда и по какому поводу раньше эти танцы танцевали, так и не удалось.</p>
<p>Настоящие <strong>бедуины</strong>, кажется, жевут вне человеческой цивилизации. У них нет паспортов, а также таких понятий, как образование и здравоохранение. Из современных благ они пользуются разве что радиоприёмниками. Конечно, они не могут не замечать окружающую их цивилизацию, но познания о современном мире у них весьма специфические. К примеру, самолёт – это для них «<strong>железная птица</strong>». Таким образом, образование заменяется жизненным опытом. Образованный пилот самолёта умрёт в пустыне к концу недели, а бедуины живут в ней всю жизнь.</p>
<h2>Настоящая Синайская пустыня и Цветной каньон</h2>
<p>Первый способ позволяет увидеть пустыню, но по-настоящему почувствовать её, увидеть не-бутафорских бедуинов и верблюдов позволяет только второй способ – «<strong>Цветной каньон + монастырь Святой Екатерины</strong>».</p>
<p><img class="alignnone size-full wp-image-525" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-37-camel-on-the-road.jpg" alt="Транспорт Египта: автобус и верблюд" width="500" height="375" /></p>
<p>Внимание! Не стоит ехать на эту экскурсию с девушкой или пожилым родственником, а также если вас укачивает даже в маршрутке. За 14 часов вы накатаете с водителем-египтянином (см. главу о <a href="#egyptian-need-for-speed">египетском дорожном движении</a>) порядка 600 км, из которых километров 50 – по <strong>оффроаду</strong>. Но оно стоит того!</p>
<p><img class="alignnone size-full wp-image-526" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-38-excursion-route-sinai-colored-canyon.jpg" alt="Маршрут экскурсии в Цветной каньон и монастырь Святой Екатерины" width="500" height="375" /></p>
<p>Для тех, кто не умеет с первого взгляда на карту определять местность – слева направо: Африка, Суэцкий залив Красного моря, Синайский полуостров, Акабский залив Красного моря, Саудовская Аравия.</p>
<p>В качестве транспорта используется <strong>внедорожник Toyota Land Cruiser</strong>, но не простой, а «Ближний Восток Edition». Несмотря на спецподготовку, машина убивается за пару лет эксплуатации. Абразивные свойства песка испытала на себе американская и немецкая техника ещё во время Великой Отечественной. На современных машинах (и даже на автобусах) <strong>воздухозаборники</strong> подняты вверх и оснащены фильтрами.</p>
<p><img class="alignnone size-full wp-image-527" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-39-toyota-land-cruiser.jpg" alt="Toyota Land Cruiser Ближний Восток Edition" width="500" height="375" /></p>
<p>Второе отличие версии для Ближнего востока, глубину которого вы непременно прочувствуете, – это отсутствие такого понятия, как «комфорт». Впечатляющие возможности подвески с лихвой компенсируются тем, что вместо привычных кресел здесь… низенькие лавочки по бокам вдоль кузова машины.</p>
<p><img class="alignnone size-full wp-image-528" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-40-small-benches-toyota.jpg" alt="Низенькие скамеечки в кузове внедорожника Toyota" width="500" height="375" /></p>
<p>На фото хорошо виден номерной знак джипа – это <strong>настоящие арабские цифры</strong>. Их вы сможете также рассмотреть на штампе в загранпаспорте и на сроках хранения продуктов – это чтобы никто не догадался. А наши привычные цифры – на самом деле, вовсе не арабские (в Египте их называют латинскими).</p>
<p>Арабские цифры – это закорючки, как на этом автомобильном номере. Причина путаницы в том, что наши цифры – арабские не в смысле начертания, а в смысле принципа записи. <strong>Десятичный принцип записи</strong> (в отличие от римских цифр) как раз и изобретён арабами.</p>
<p><img class="alignnone size-full wp-image-529" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-41-sinai-palm.jpg" alt="Искусственно высаженная пальма вдоль шоссе на Синае" width="500" height="375" /></p>
<p>На экскурсию выезжают затемно. Рассвет в пустынных Синайских горах непередаваемо красив. Водитель, конечно же, не разделяет нашего восторга – и пофоткать не даёт, гонит за сотню, чтобы успеть в <strong>Цветной каньон (Color Canyon) </strong>до пекла.</p>
<p>В Египте иногда случаются дожди. Из-за отсутствия растительности начинается повсеместный сход селей с гор. Асфальт проще положить прямо поверх, чем откапывать дорогу.</p>
<p><img class="alignnone size-full wp-image-530" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-42-sinai-rocks-sunrise.jpg" alt="Восход солнца в Синайских горах" width="500" height="375" /></p>
<p>По пути можно полюбоваться видом на Саудовскую Аравию (она по другую сторону залива).</p>
<p><img class="alignnone size-full wp-image-531" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-43-akaba-bay.jpg" alt="Вид на Акабский залив Красного моря" width="500" height="375" /></p>
<p>Несмотря на книжные стереотипы, как оказалось, <strong>оазисы</strong> встречаются и в гористой пустыне: пальмы как-то чувствуют в глубине песков воду и вырастают на этом месте.</p>
<p><img class="alignnone size-full wp-image-532" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-44-oasis.jpg" alt="Оазис в Синайской пустыне (поворот на Цветной каньон)" width="500" height="375" /></p>
<p>Неподалёку от оазиса джип сворачивает с асфальтовой дороги: дальше путь пролегает по руслу высохшей древней реки. «Волночки» на песке смотрятся очень красиво, но когда по ним едешь с приличной скоростью, взметая в воздух тучи песка, это больше всего напоминает <strong>езду по стиральной доске</strong>. Мясо в прямом смысле отрывается от костей, а голова стучится о потолок (какие такие ремни безопасности?). В общем, более <strong>экстремальной поездки</strong> в нашей жизни ещё не было.</p>
<p><img class="alignnone size-full wp-image-533" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-45-sand-dust.jpg" alt="Песчаный вихрь, поднятый колёсами внедорожника по пути в Цветной Каньон" width="500" height="375" /></p>
<p>Когда водитель лихо развернулся на краю пропасти (так, что камни сорвались в обрыв), мы не были уверены, что нам потом удастся написать эту статью.</p>
<p><img class="alignnone size-full wp-image-534" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-46-colored-canyon-grand-view.jpg" alt="Вид сверху на египетский Цветной каньон" width="500" height="375" /></p>
<p>Каньон неожиданно впечатляет. Оказалось, что <strong>египетский Цветной каньон</strong>, наряду с американским Большим каньоном, входит в десятку самых больших в мире.</p>
<p><img class="alignnone size-full wp-image-535" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-47-colored-canyon-rocks.jpg" alt="Скалы в Цветном каньоне" width="500" height="667" /></p>
<p>На въезде в каньон в машину обязательно подсаживается настоящий бедуин. Они контролируют эту территорию и следят за тем, чтобы «провал не проваливался». С ними договаривается водитель. Говорят, что также <strong>бедуины обеспечивают безопасность туристов</strong> – интересно, как? Этакий аналог лесника.</p>
<p><img class="alignnone size-full wp-image-536" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-48-beduine-ostap-bender.jpg" alt="Бедуин - египетский Остап Бендер (...чтобы провал не слишком проваливался)" width="500" height="375" /></p>
<p>Стенки каньона образованы цветными песчаниками – наверное, именно из-за них он и получил своё название.</p>
<p><img class="alignnone size-full wp-image-537" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-49-colored-sand-stones.jpg" alt="Цветные песчаники на стенах Цветного каньона" width="500" height="375" /></p>
<p>Путь по каньону занимает часа полтора. В некоторых местах каньон настолько узок, что можно держаться за его стенки руками, как на узкой улочке в Стокгольме.</p>
<p><img class="alignnone size-full wp-image-538" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-50-colored-canyon-narrow-dark.jpg" alt="Узкая расщелина в Цветном каньоне. Экспозиция по освещённым областям" width="500" height="667" /></p>
<p>Солнце начинает припекать, поэтому к концу прогулки небо на фото становится безнадёжно белым.</p>
<p><img class="alignnone size-full wp-image-539" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-51-colored-canyon-narrow-light.jpg" alt="Узкая расщелина в Цветном каньоне. Экспозиция по теневым участкам" width="500" height="667" /></p>
<p>Именно в Цветном каньоне мы увидели дикорастущую <strong>верблюжью колючку</strong>. Она оказалась весьма симпатичным растением с плотными пухлыми листьями (как у комнатного «денежного деревца») – и она почему-то цвела.</p>
<p><img class="alignnone size-full wp-image-540" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-52-camel-flower.jpg" alt="Верблюжья колючка на дне Цветного каньона" width="500" height="375" /></p>
<p>Каньон постепенно расширяется – и видно, как горы, разрушаясь, превращаются в песок пустыни. Он начинает скрипеть на зубах.</p>
<p>Именно в такой пустыне разбился лётчик в «Маленьком Принце» Экзюпери. Пески, зной и безнадёжность, а потом – дорога к роднику под звёздами.</p>
<p><img class="alignnone size-full wp-image-541" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-53-broken-rock.jpg" alt="Горы отступают перед Синайской пустыней, превращаясь в пески" width="500" height="667" /></p>
<p>Потом подъём по крутой тропе – и вы снова на верхнем краю каньона. Фотографы-энтузиасты могут захватить монопод и собрать панораму.</p>
<p><img class="alignnone size-full wp-image-542" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-54-coloured-canyon-grand-view.jpg" alt="Экскурсия в египетский Цветной каньон удалась" width="500" height="375" /></p>
<p>Полдень. Солнце нещадно жарит, джип раскалён. По-хорошему, тут бы самое время вернуться в отель. Но нет же, нам подавай программу по полной с максимальной оптимизацией расстояния – и мы едем в <strong>монастырь Святой Екатерины</strong> – а это практически центр Синайского полуострова&#8230; Хозяйственный совет: по возможности постарайтесь поехать на эти экскурсии по отдельности: в монастырь из отеля ходит комфортабельный автобус с кондиционером. Мы же отправились, естественно, на джипе. Мамочки.</p>
<p><img class="alignnone size-full wp-image-543" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-55-rocks-and-roadlights.jpg" alt="Фонари и красные скалы" width="500" height="375" /></p>
<p>Пока джип едет по бесконечной дороге с однообразными пустынными пейзажами, араб-экскурсовод на ломаном русском пересказывает <strong>сюжет мультфильма «Суперкнига»</strong>. Было даже как-то стыдно, что мусульманин знает все эти библейские сюжеты лучше, чем мы, правоверные христиане.</p>
<p><img class="alignnone size-full wp-image-544" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-56-saint-ekaterine-monastery.jpg" alt="Экскурсия в монастырь Святой Екатерины" width="500" height="375" /></p>
<p>Если в двух словах, то именно в этом месте Моисею впервые явился Бог в пламени горящего тернового куста, известного как «<strong>неопалимая купина</strong>». Этот куст существует и поныне (и предприимчивые арабы продают по 5 долларов заламинированные листочки). Говорят, надо подержаться за веточку на счастье.</p>
<p><img class="alignnone size-full wp-image-545" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-57-neopalimaya-kupina.jpg" alt="Неопалимая купина в монастыре Святой Екатерины" width="500" height="375" /></p>
<p>Сам монастырь очень красив – особенно ввиду его неожиданности посреди мусульманской земли. Снаружи напоминает крепость – так, как о крепостях пишут в книжках про Средневековье. Подспудно ищешь глазами Индиану Джонса в шляпе – но тут всё любопытные туристы в арафатках и <strong>паломники</strong>.</p>
<p><img class="alignnone size-full wp-image-546" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-58-saint-ekaterine-monastery-fortress.jpg" alt="Крепость монастыря Святой Екатерины под горой Моисея" width="500" height="375" /></p>
<p>Монастырь уникален ещё и тем, что за одними стенами есть и христианский, и мусульманский храмы. Так, <strong>когда в Египет пришли мусульмане</strong>, они методично разрушали христианские монастыри. Здешние же монахи не растерялись и быстро построили мечеть, причём её минарет был выше (а значит, главнее) колокольни. Когда ревнители ислама пришли в монастырь, то не стали его разрушать: мечеть уже действовала.</p>
<p>Потом, когда опасность миновала, колокольню надстроили.</p>
<p><img class="alignnone size-full wp-image-547" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-59-saint-ekaterines-bell-tower.jpg" alt="Колокольня монастыря Святой Екатерины" width="500" height="375" /></p>
<p>Сейчас храмы монастыря действуют. Примечательно, что в православный храм пускают только славян (служители интересуются на входе вероисповеданием).</p>
<p><img class="alignnone size-full wp-image-548" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-60-saint-ekaterines-buidings.jpg" alt="Постройки в монастыре Св. Екатерины" width="500" height="375" /></p>
<p>Каждому пришедшему в храм священник вручает на память серебряное колечко.</p>
<h2>Экскурсия в заповедник «Рас-Мохаммед»</h2>
<p>Обязательно стоит съездить в <strong>заповедник «Рас-Мохаммед»</strong>. Нет, он совсем не похож на Беловежскую пущу: здесь снова пустыня. Это самый кончик Синая: песчаные дюны и холмы. Вышки сотовой связи питаются от огромных <strong>солнечных батарей</strong>.</p>
<p><img class="alignnone size-full wp-image-549" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-61-ras-mohammed-kryseg.jpg" alt="Крысег" width="500" height="375" /></p>
<p>Здесь, прямо на берегу безжизненной пустыни, расположен самый красивый <strong>коралловый риф на Красном море</strong>. Обязательно захватите трубку с маской и ласты.</p>
<p>Из растительности здесь – самые северные <strong>заросли мангров</strong>. Это единственные растения (не водоросли), способные расти в морской воде. Они делают это корнями вверх, а соль осаждается на листьях. В мангровых зарослях живут <strong>манящие крабы</strong>: у взрослых самцов одна из клешней становится очень большой, они ей приманивают самочек.</p>
<p><img class="alignnone size-full wp-image-550" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-62-ras-mohammed-mangros.jpg" alt="Мангровая роща в заповеднике Рас-Мохаммед" width="500" height="375" /></p>
<p>Синайский полуостров геологически активен. По территории Рас-Мохаммеда проходит заполненный водой геологический разлом, образовавшийся в результате землетрясения. Экскурсовод пугает, что он <strong>практичяески бездонный</strong>.</p>
<p><img class="alignnone size-full wp-image-551" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-63-ras-mohammed-disaster.jpg" alt="Разлом от землетрясения в Рас-Мохаммеде" width="500" height="667" /></p>
<p>«<strong>Магический залив</strong>», расположенный неподалёку, – это мелководная лагуна с очень тёплой водой и песочком на дне. Здесь приятно искупаться. Экскурсовод утверждает, что своё название он получил из-за того, что не виден со спутника. Мы проверили в Google Earth – таки виден. Поэтому лучше поверить в легенду о том, что у искупавшегося в нём с головой человека исполнится любое желание.</p>
<p>В отличие от туристов, местные женщины, увы, могут только помочить в нём ноги.</p>
<p><img class="alignnone size-full wp-image-552" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-64-ras-mohammed-magic-bay.jpg" alt="Магический залив Рас-Мохаммеда" width="500" height="375" /></p>
<p>На выезде из заповедника стоит рукотворный Стоунхендж. Говорят, эти камни образуют <strong>слово «Аллах» на арабском</strong>.</p>
<p><img class="alignnone size-full wp-image-553" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-65-ras-mohammed-allah.jpg" alt="Надпись из камней «Аллах» на въезде в заповедник Рас-Мохаммед" width="500" height="375" /></p>
<h2>В заключение</h2>
<p>Терминал вылета в шармэльшейхском аэропорту напоминает шатёр (к сожалению, фотографировать здесь не разрешают).</p>
<p><img class="alignnone size-full wp-image-554" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-66-sharm-el-sheikh-international-airport.jpg" alt="Международный аэропорт Шарм-Эль-Шейха похож на огромный шатёр" width="500" height="375" /></p>
<p>А дальше – обратный путь домой. Красная пустыня сменяется Средиземным морем, потом цветущей зелёной Турцией, а там уже и наш Крым. Если повезёт, самолёт пролетит прямо над Севастополем (мы же пролетали его по дороге «туда»; жаль, SMS нельзя отправить).</p>
<p><img class="alignnone size-full wp-image-555" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-67-crimea.jpg" alt="Коса около Крыма с самолёта" width="500" height="667" /></p>
<p>Когда GPS-приёмник показал, что мы пролетаем над Харьковом, увидели интересную картину: плотный облачный слой был разорван точно по контуру города. Неужто и правда город настолько влияет на экологию в планетарном масштабе?</p>
<p><img class="alignnone size-full wp-image-556" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-68-kharkiv.jpg" alt="Облачный слой по контуру Харькова" width="500" height="375" /></p>
<p>Да, кстати, мы как-то совсем забыли упомянуть. В Египте <strong>по-настоящему классно отдыхать</strong>. Загорать на пляже, купаться в необычно тёплом море, валяться в шезлонге и отсыпаться на мягкой кровати в номере. Но не всё же время!</p>
<p>Из-за дебильной <a title="Купить книгу в Ozon'е" href="http://www.ozon.ru/context/detail/id/2373570/?partner=screenshots">книжки «Наши в Турции» Экслера</a> и подобных ей идиотских рассказов о Егитпе обычно складывается впечатление, что Египет – это сплошной отель с сидящими за барной стойкой пьяными русскими. Для кого-то, может, это и так – главное, с каким настроем и для чего туда ехать. Вы не поверите: мы намеренно не поехали смотреть <strong>визитную карточку Египта – пирамиды</strong> – просто потому, что даже в окрестностях Шарм-Эль-Шейха нашли массу всего интересного. А в Каир с Луксором слетаем как-нибудь отдельно, в другой раз.</p>
<p>До свидания, Египет!</p>
<p><img class="alignnone size-full wp-image-557" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-69-goodbye-egypt.jpg" alt="До свидания, Египет!" width="500" height="375" /></p>
<p>Здравствуй, Россия!</p>
<p><img class="alignnone size-full wp-image-558" src="http://life.screenshots.ru/wp-content/uploads/2009/03/egypt-70-hello-russia.jpg" alt="Привет, Россия! Как бодрость духа?" width="500" height="375" /></p>
]]></content:encoded>
			<wfw:commentRss>http://life.screenshots.ru/trips/egypt/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Коктейль «Опухоль мозга»</title>
		<link>http://life.screenshots.ru/kulinariya/lakayutsya-likyoryi/cocktail-opuhol-mozga/</link>
		<comments>http://life.screenshots.ru/kulinariya/lakayutsya-likyoryi/cocktail-opuhol-mozga/#comments</comments>
		<pubDate>Mon, 23 Feb 2009 21:43:35 +0000</pubDate>
		<dc:creator>Артём и Максим</dc:creator>
		
		<category><![CDATA[Лакаются ликёры]]></category>

		<guid isPermaLink="false">http://life.screenshots.ru/?p=481</guid>
		<description><![CDATA[ 
Сразу предупреждаем: не надо брать 200-граммовый стакан (на снимке – макросъёмка стопки на 60 мл). Хотя&#8230;
Этот коктейль вам лучше всего сделает бармен ресторана «T.G.I. Friday&#8217;s» на «Новослободской». Нам пришлось отступить от рецептуры и изрядно потренироваться, прежде чем получилось что-то похожее.
Предупреждаем слабонервных: несмотря на название, коктейль весьма приятен на вкус. Это отлично маскирует его убойную силу.

Во «Фрайдисе» [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://life.screenshots.ru/wp-content/uploads/2009/02/ukraine.jpg"></a> <a href="http://life.screenshots.ru/wp-content/uploads/2009/02/mozg.jpg"><img class="alignnone size-full wp-image-482" title="Коктейль «Опухоль мозга»" src="http://life.screenshots.ru/wp-content/uploads/2009/02/mozg.jpg" alt="" width="400" height="300" /></a><a href="http://life.screenshots.ru/wp-content/uploads/2009/02/druzhba.jpg"></a></p>
<p>Сразу предупреждаем: не надо брать 200-граммовый стакан (на снимке – макросъёмка стопки на 60 мл). Хотя&#8230;</p>
<p>Этот коктейль вам лучше всего сделает бармен ресторана <strong>«T.G.I. Friday&#8217;s»</strong> на «Новослободской». Нам пришлось отступить от рецептуры и изрядно потренироваться, прежде чем получилось что-то похожее.</p>
<p>Предупреждаем слабонервных: несмотря на название, коктейль весьма приятен на вкус. Это отлично <strong>маскирует его убойную силу</strong>.</p>
<p><span id="more-481"></span></p>
<p><strong>Во «Фрайдисе» используются:</strong></p>
<ul>
<li><strong>ликёр Triple Sec</strong> (трайпл сек) – сухой апельсиновый ликёр, можно заменить ликёром Cointreau (куантро);</li>
<li><strong>гранатовый ликёр Grenadine</strong> (гренадин), можно заменить брусничным сиропом Lingonsaft из IKEA;</li>
<li>персиковый ликёр, водка и Baileys (бейлис).</li>
</ul>
<p><strong>Ингредиенты для домашних условий:</strong></p>
<ul>
<li>ликёр Triple Sec или Cointreau (15 мл);</li>
<li>красный сироп Lingonsaft (20 мл);</li>
<li>качественная водка, лучше Finlandia (15 мл);</li>
<li>сливочный ликёр Baileys (5-10 мл).</li>
</ul>
<p>Смиритесь с тем, что с первого раза у вас ни черта не получится.</p>
<p>Начинается всё безобидно: наливаем в 60-миллилитровую стопку апельсиновый ликёр Triple Sec (или Cointreau). Потом <strong>по капле</strong> вливаем красный сироп – и он <strong>послушно</strong> опускается на дно. Если у вас в итоге не получится чётко видимой границы между ликёром и сиропом – то выпейте смесь сразу и начните заново.</p>
<p>Теперь <strong>меееедленно</strong> наливаем водку по ложечке. Слой водки немного более прозрачен, чем слой Triple Sec. Если вы не заметили границу между ними, то снова выпейте смесь – и <strong>следующая итерация</strong> будет значительно приятнее.</p>
<p>А вот теперь высший пилотаж. Налейте ликёр Baileys в крышечку от бутылки. Возьмите коктейльную трубочку, наберите в неё бейлис (чур, не пить!), зажмите верхний конец пальцем. Убедитесь, что из трубочки не капает.</p>
<p>Введите трубочку в нижнюю часть слоя водки и медленно, по капле выпускайте бейлис – так, чтобы слой бейлиса получился ниже слоя водки и выше границы трайпл сека с сиропом (станет видна характерная грануляция). Операцию с трубочкой повторите 2-3 раза (по вкусу).</p>
<p>Если не удалось изготовить коктейль 4 раза кряду, то сделайте себе <a title="Коктейль «Электрик лемонейд»" href="http://life.screenshots.ru/kulinariya/lakayutsya-likyoryi/electric_lemonade/">что-нибудь попроще</a>, а к коктейлю «Опухоль мозга» вернитесь как-нибудь в другой раз.</p>
]]></content:encoded>
			<wfw:commentRss>http://life.screenshots.ru/kulinariya/lakayutsya-likyoryi/cocktail-opuhol-mozga/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Коктейль «Дружба народов»</title>
		<link>http://life.screenshots.ru/kulinariya/lakayutsya-likyoryi/cocktail-druzhba-narodov/</link>
		<comments>http://life.screenshots.ru/kulinariya/lakayutsya-likyoryi/cocktail-druzhba-narodov/#comments</comments>
		<pubDate>Sun, 22 Feb 2009 20:31:37 +0000</pubDate>
		<dc:creator>Артём и Максим</dc:creator>
		
		<category><![CDATA[Лакаются ликёры]]></category>

		<category><![CDATA[Advocaat]]></category>

		<category><![CDATA[Blue Curacao]]></category>

		<category><![CDATA[коктейли]]></category>

		<guid isPermaLink="false">http://life.screenshots.ru/?p=476</guid>
		<description><![CDATA[ 
Вам надоело получать из СМИ информацию о том, как украинцы с русскими ссорятся из-за газа? Вас вообще достал кризис? Отлично, сделайте себе пару дружбонародных коктейлей – и всё образуется.
Надеемся, вы не выпили весь Blue Curacao, когда делали «Электрик лемонейд». Вам ещё понадобятся яичный ликёр «Адвокат» (Advocaat), водка, красный сироп (например, тот, что продаётся в IKEA – [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://life.screenshots.ru/wp-content/uploads/2009/02/ukraine.jpg"></a> <a href="http://life.screenshots.ru/wp-content/uploads/2009/02/druzhba.jpg"><img class="size-full wp-image-477 alignnone" title="Коктейль «Дружба народов»" src="http://life.screenshots.ru/wp-content/uploads/2009/02/druzhba.jpg" alt="Коктейль «Дружба народов»" width="400" height="300" /></a></p>
<p>Вам надоело получать из СМИ информацию о том, как украинцы с русскими ссорятся из-за газа? Вас вообще достал кризис? Отлично, сделайте себе пару дружбонародных коктейлей – и всё образуется.</p>
<p>Надеемся, вы не выпили весь Blue Curacao, когда делали «<a title="Коктейль «Электрик лемонейд»" href="http://life.screenshots.ru/kulinariya/lakayutsya-likyoryi/electric_lemonade/">Электрик лемонейд</a>». Вам ещё понадобятся яичный ликёр <strong>«Адвокат» (Advocaat)</strong>, водка, красный сироп (например, тот, что продаётся в IKEA – брусничный <strong>Lingonsaft</strong>) и – как это ни странно – молоко. </p>
<p><span id="more-476"></span></p>
<p><strong>Ингредиенты (на пару коктейлей):</strong></p>
<ul>
<li>ликёр Blue Curacao (30 мл + 20 мл);</li>
<li>качественная водка, лучше Finlandia (10 мл);</li>
<li>ликёр Advocaat (30 мл);</li>
<li>молоко (10 мл);</li>
<li>красный сироп (20 мл).</li>
</ul>
<p>Коктейли изготовить непросто, поэтому лучше с них начинать, а не заканчивать.</p>
<p>Сначала сделаем <strong>коктейль «Украинский флаг»</strong>. Налейте в 60-миллилитровую стопку до половины яичный ликёр Advocaat.</p>
<p>К сожалению, украинский флаг, на самом деле, не жовто-блакiтний, а блакiтно-жовтий. Поэтому придётся снизить плотность Blue Curacao, чтобы он оказался сверху. Для этого в отдельной посуде (удобнее всего использовать стаканчик с «носиком» <strong>из химического набора</strong>) смешаёте водку и Blue Curacao в пропорции 1:1. Полученную смесь <strong>медленно</strong>, по ложечке долейте в стопку с «Адвокатом».</p>
<p><a href="http://life.screenshots.ru/wp-content/uploads/2009/02/ukraine.jpg"><img class="alignnone size-full wp-image-478" title="Коктейль «Украинский флаг»" src="http://life.screenshots.ru/wp-content/uploads/2009/02/ukraine.jpg" alt="" width="400" height="300" /></a></p>
<p>Теперь приступим к <strong>коктейлю «Российский флаг»</strong>. Нижним слоем триколора будет брусничный сироп Lingonsaft (наверное, можно попробовать и <strong>гренадин</strong>). Далее по ложечке медленно наливаем <strong>неразбавленный Blue Curacao </strong>(Внимание! Именно неразбавленный, то есть не так, как для украинского коктейля).</p>
<p>Теперь надо сделать белый цвет – для этого смешайте в отдельной посуде в пропорции один к одному молоко и водку. <strong>Очень аккуратно</strong> влейте смесь в стопку по ложечке (желательно добиться, чтобы смесь не синела от смешивания с кюрасао).</p>
<p><a href="http://life.screenshots.ru/wp-content/uploads/2009/02/ukraine.jpg"></a></p>
<p>Этот рецепт хорош тем, что вам наверняка не придётся придумывать тост:</p>
<p>— Ну, за дружбу братских народов!</p>
<p>Американцы со своими звёздами и полосами на флаге отдыхают.</p>
]]></content:encoded>
			<wfw:commentRss>http://life.screenshots.ru/kulinariya/lakayutsya-likyoryi/cocktail-druzhba-narodov/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Установка 1С-Битрикс на Windows Server 2008 (IIS7)</title>
		<link>http://life.screenshots.ru/the-code-inside/php-platform/bitrix-iis7-win2008/</link>
		<comments>http://life.screenshots.ru/the-code-inside/php-platform/bitrix-iis7-win2008/#comments</comments>
		<pubDate>Mon, 29 Sep 2008 10:05:01 +0000</pubDate>
		<dc:creator>Артём и Максим</dc:creator>
		
		<category><![CDATA[Техплатформа PHP]]></category>

		<guid isPermaLink="false">http://life.screenshots.ru/?p=467</guid>
		<description><![CDATA[
С появлением IIS7 в составе Windows Server 2008 у владельцев сайтов на «Битриксе» появилась альтернатива. Если раньше установка Битрикса на Windows была сопряжена с огромными трудностями (особенно в плане производительности), то под IIS7 «Битрикс» заработал в полную силу. FastCGI, очереди запросов, а также отсутствие необходимости в применении nginx позволяет сконфигурировать web-сервер практически без «танцев с [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-471" title="Установка 1С-Битрикс на IIS7 (Windows Server 2008)" src="http://life.screenshots.ru/wp-content/uploads/2008/09/bitrix-iis7-win2008.jpg" alt="" width="400" height="300" /><a href="http://"></a></p>
<p>С появлением <strong>IIS7</strong> в составе <strong>Windows Server 2008</strong> у владельцев сайтов на «Битриксе» появилась альтернатива. Если раньше <strong>установка Битрикса на Windows</strong> была сопряжена с огромными трудностями (особенно в плане производительности), то под IIS7 «Битрикс» заработал в полную силу. <strong>FastCGI</strong>, очереди запросов, а также отсутствие необходимости в применении <strong>nginx</strong> позволяет сконфигурировать web-сервер практически без «танцев с бубном».</p>
<p>В этой статье содержится пошаговая инструкция по установке и базовой настройке всех элементов web-сервера, необходимых для запуска сайта на «1С-Битрикс: Управление сайтом».</p>
<p><span id="more-467"></span></p>
<h2><em>Установка IIS7</em></h2>
<p>Запустите <em>Server Manager</em>, откройте в дереве оснастки <em>Roles</em>, нажмите <em>Add Roles</em>, выберите <em>Web Server (IIS)</em>.</p>
<p>Если вы планируете использовать стандартный SMTP- или FTP-сервер от Microsoft, то необходимо в списке <em>Role Services</em> отметить <em>IIS6 Management Compatibility</em> (управление этими серверами производится только из старой оснастки on IIS6).</p>
<p>IIS7 можно администрировать удалённо, подключаясь к нему не с помощью RDP, а <a title="Скачать оснастку для удалённого управления IIS7" href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;g=6&amp;i=1626" target="_blank">с помощью оснастки</a>. Для этого надо отметить <em>Management Service</em>.</p>
<p>Если вы планируете использование FTP-сервера от Microsoft, то отметьте <em>FTP Publishing Service</em>.</p>
<p>Для работы с PHP в режиме <strong>FastCGI (основное достоинство IIS7 для «Битрикса»)</strong> необходимо отметить пункт <em>Application Development - CGI</em>.</p>
<p><a href="http://"><img class="alignnone size-full wp-image-469" title="Настройка роли Web Server (IIS)" src="http://life.screenshots.ru/wp-content/uploads/2008/09/add-cgi.gif" alt="" width="496" height="496" /></a></p>
<p>Скорее всего, вам также пригодятся <em>Logging Tools</em>.</p>
<p>Все эти дополнительные функции вы сможете добавить и позже, выбрав в дереве оснастки <em>Roles - Web Server (IIS)</em> и нажав<em> Add Role Services</em>.</p>
<p>Дальнейшая работа может производиться с помощью оснастки IIS7, которая разительно отличается по внешнему виду и количеству настроек от оснастки IIS6.</p>
<p>Установите <a title="Заплатка для IIS7" href="http://forums.iis.net/t/1151378.aspx" target="_blank">апдейт для IIS</a>, дабы избежать возможных проблем с Redirection.</p>
<h3>Настройка PHP</h3>
<p>Воспользуйтесь <a title="Инструкция Microsoft по установке поддержки PHP на IIS7 в режиме FastCGI" href="http://learn.iis.net/page.aspx/246/using-fastcgi-to-host-php-applications-on-iis-70/" target="_blank">этой инструкцией</a>, чтобы настроить поддержку FastCGI (далее встречаются выдержки из неё).</p>
<p>Скачайте <a title="Скачать PHP5" href="http://www.php.net/downloads.php" target="_blank">дистрибутив PHP5</a> (Microsoft рекомендует <em>non-thread-safe</em>, однако <strong>eAccelerator</strong> с ним не очень-то работает).</p>
<p>Установите (например, в папку <em>C:\Websrv\PHP</em>) из MSI, включив следующие Extensions (их также можно будет прописать позже вручную в виде <em>extension=имяфайларасширения.dll</em>):</p>
<ul type="disc">
<li><em>MySql</em></li>
<li><em>GD2</em></li>
<li><em>LDAP</em> (если будете изпользовать LDAP-авторизацию)</li>
<li><em>OpenSSL</em></li>
<li><em>SMTP</em></li>
<li><em>Win32ps</em></li>
<li><em>Win32scheduler</em></li>
<li><em>zip</em></li>
</ul>
<p>Откройте файл <em>php.ini</em> в Блокноте и установите (или раскомментируйте) следующие параметры:</p>
<ol type="1">
<li><em>fastcgi.impersonate = 1</em></li>
<li><em>cgi.fix_pathinfo = 1</em></li>
<li><em>cgi.force_redirect = 0</em></li>
<li><em>open_basedir = C:\Inetpub </em>(или другая папка, в которой будут ваши сайты)</li>
<li><em>short_open_tag = On</em> (в Битриксе используется &lt;? вместо &lt;?php)</li>
<li><em>extension_dir = &#8220;C:\Websrv\PHP\ext&#8221;</em></li>
<li><em>upload_tmp_dir=&#8221;C:\inetpub\temp&#8221;</em></li>
<li><em>session.save_path=&#8221;C:\inetpub\temp&#8221;</em></li>
<li><em>allow_call_time_pass_reference = On</em></li>
<li><em>display_errors = On</em></li>
</ol>
<p><br class="spacer_" /></p>
<p>Вы можете в CMD запустить команду:</p>
<p><em>C:\Websrv\PHP\php -info</em></p>
<p>Если вы сделали всё правильно, то будет выдан этот же файл конфигурации.</p>
<p>Теперь нужно настроить IIS таким образом, чтобы php-файлы обрабатывались модулем FastCGI. На Home-странице в оснастке IIS выберите <em>Handler Mappings</em>, затем <em>Add Module Mapping</em>.</p>
<p><a href="http://"><img class="alignnone size-full wp-image-470" title="Настройка Module Mapping для PHP" src="http://life.screenshots.ru/wp-content/uploads/2008/09/module-mapping.gif" alt="" width="395" height="344" /></a></p>
<p>Перезапустите IIS7 с помощью оснастки, чтобы изменения вступили в силу.</p>
<p>Проверьте корректность привязки. Для этого в папке <em>C:\Inetpub\wwwroot</em> создайте файл <em>test.php</em>, содержащий строку <em>&lt;? phpinfo(); ?&gt;</em>. Откройте в браузере <em>http://localhost/test.php</em>.</p>
<p>Имейте в виду, что по умолчанию в Windows Server 2008 запись в папку <em>Inetpub</em> можно производить только в том случае, если прогрмма, с помощью которой вы собираетесь создать файл, запущен в режиме эскалации. Вы можете либо перенастроить разрешения на эту папку, либо запускать Проводник (или другую программу, с помощью которой вы будете создавать и редактировать файлы) в режиме эскалации (<em>Run as administrator</em>).</p>
<p>Теперь осталось добавить пару хитрых настроек. Выполните в CMD, запущенного в режиме эскалации, следующие команды:</p>
<p><em>%windir%\system32\inetsrv\appcmd set config -section:system.webServer/fastCgi /fullPath=&#8217;C:\Websrv\PHP\php-cgi.exe&#8217;].instanceMaxRequests:10000</em></p>
<p><em>%windir%\system32\inetsrv\appcmd set config -section:system.webServer/fastCgi /+fullPath=&#8217;c:\Websrv\PHP\php-cgi.exe&#8217;].environmentVariables.name=&#8217;PHP_FCGI_MAX_REQUESTS&#8217;,value=&#8217;10000&#8242;]</em></p>
<p>Теперь следует настроить таймауты.</p>
<p><em>%windir%\system32\inetsrv\appcmd set config -section:system.webServer/fastCgi /[fullPath='C:\Websrv\PHP\php-cgi.exe'].activityTimeout:600</em></p>
<p>Этой командой мы установим заведомо большое время ожидания IIS&#8217;ом окончания выполнения скрипта - 600 секунд.</p>
<p>Теперь в <em>php.ini</em> можно указать, например, следующие значения:</p>
<p><em>max_execution_time = 240</em></p>
<p><em>max_input_time = 240</em></p>
<h2><em>Установка MySQL</em></h2>
<p><a title="Скачать сервер MySql" href="http://dev.mysql.com/downloads/mysql/5.0.html" target="_blank">Скачайте MySQL</a>.</p>
<p>В мастере настройки сервера укажите, что это <em>Server Machine</em>.</p>
<p>Выберите <em>Transactional Database Only</em>, чтобы использовать только <em>InnoDB</em>.</p>
<p>Выберите <em>OLTP</em>, чтобы обеспечить выполнение большого количества запросов.</p>
<p>Выберите <em>cp1251</em>, если вы собираетесь работать со старыми проектами на «Битриксе» (в старой кодировке) или <em>Best Support for Multilingual</em>ism для новых установок Битрикса.</p>
<p>Поставьте галку <em>Include Bin Directory in Windows PATH</em>, чтобы проще было работать из CMD.</p>
<p>Чтобы нормально работать с <em>cp1251</em> из консоли, пропишите в <em>my.ini</em> в секции <em>[client]</em> строку</p>
<p><em>character-sets-dir=&#8221;C:/Websrv/MySQL/MySQL Server/share/charsets&#8221;</em></p>
<h2><em>Установка eAccelerator</em></h2>
<p>Скачайте <a title="Скачать eAccelerator" href="http://eaccelerator.net/wiki/InstallFromBinary" target="_blank">бинарный дистрибутив eAcceleretor</a>.</p>
<p>Переименуйте DLL-файл в <em>eaccelerator.dll</em> и поместите его в папку <em>C:\Websrv\PHP\ext</em>.</p>
<p>В <em>php.ini</em> добавьте строки</p>
<p><em>[eaccelerator]</em></p>
<p><em>extension=eaccelerator.dll</em></p>
<p><em>eaccelerator.shm_size=&#8221;16&#8243;</em></p>
<p><em>eaccelerator.cache_dir=&#8221;C:\inetpub\temp\eaccelerator&#8221;</em></p>
<p><em>eaccelerator.enable=&#8221;1&#8243;</em></p>
<p><em>eaccelerator.optimizer=&#8221;1&#8243;</em></p>
<p><em>eaccelerator.check_mtime=&#8221;1&#8243;</em></p>
<p><em>eaccelerator.debug=&#8221;0&#8243;</em></p>
<p><em>eaccelerator.filter=&#8221;"</em></p>
<p><em>eaccelerator.shm_max=&#8221;0&#8243;</em></p>
<p><em>eaccelerator.shm_ttl=&#8221;0&#8243;</em></p>
<p><em>eaccelerator.shm_prune_period=&#8221;0&#8243;</em></p>
<p><em>eaccelerator.shm_only=&#8221;0&#8243;</em></p>
<p><em>eaccelerator.compress=&#8221;1&#8243;</em></p>
<p><em>eaccelerator.compress_level=&#8221;9&#8243;</em></p>
<h2><em>Установка Bitrix</em></h2>
<p>Скачайе программу <a title="Скачать Zend Optimizer" href="http://www.zend.com/en/products/guard/optimizer/" target="_blank">Zend Optimizer</a> (после ввода лицензионного ключа и загрузки исходных кодов её можно будет деинсталлировать). Если не охота заполнять регистрационную информацию, то можно <a title="Скачивание ZendOptimizer без регистрации" href=" http://downloads.zend.com/optimizer/3.3.3/ZendOptimizer-3.3.3-Windows-i386.exe">перейти прямо сюда</a>.</p>
<p>При установке вам нужно будет указать <em>C:\Websrv\PHP</em> в качестве папки с <em>php.ini</em> и папку <em>С:\Inetpub</em> - в качестве корневой папки вебсервера.</p>
<p>Добавьте сайт в консоли IIS. В качестве имени хоста можно выбрать имя компьютера (при условии, что других сайтов на этом сервере нет). В нашем примере это <em>Independence</em>.</p>
<p>Спозиционируйте сайт на новую папку (например, <em>C:\Inetpub\wwwroot\bitrixtest</em>).</p>
<p>Добавьте для этой папки разрешение <em>Modify</em> для группы <em>IUSR</em>.</p>
<p>Скопируйте в эту папку содержимое сайта.</p>
<p>Удалите из этой папки <em>web.config</em>, входящий в поставку «Битрикса», так как с IIS7 этот файл несовместим. Привязка к PHP уже выполнена средствами консоли IIS, остаётся привязать страницу по умолчанию и страницу 404-й ошибки.</p>
<p>Спозиционируйтесь на сайт <em>bitrixtest</em> в консоли IIS, выберите <em>Default Document</em>, нажмите <em>Add</em> и добавьте <em>index.php</em>.</p>
<p>Создайте пустой файл <em>C:\inetpub\wwwroot\bitrixtest\404.php</em>.</p>
<p>Спозиционируйтесь на сайт <em>bitrixtest</em> в консоли IIS, выберите <em>Error Pages</em>, выберите <em>404</em>, снимите галку <em>Try to return the error file in the client language</em> (этим будет заниматься не IIS, а непосредственно «Битрикс») и выберите файл <em>C:\inetpub\wwwroot\bitrixtest\404.php</em>.</p>
<p>Всё, можно заходить из браузера по адресу <a href="http://independence/">http://independence</a> и запускать Мастер установки «Битрикса» (<a title="Инструкция по установке Битрикса" href="http://www.1c-bitrix.ru/sitemanager/doc.php" target="_blank">детали установки</a>).</p>
<p>Обратите внимание! Если в папке вашего сайта на UNIX-системе использовались хардлинки или симлинки, то вам стоит воспользоваться командой</p>
<p><em>Mklink /D &lt;путь к новому линку&gt; &lt;путь к исходной папке&gt;</em></p>
<h2>Заключение</h2>
<p>Конечно же, после того, как «Битрикс» заработает на сервере, потребуются процедуры по дополнительной оптимизации. Об этом, а также о нагрузочном тестировании - в следующих статьях.</p>
]]></content:encoded>
			<wfw:commentRss>http://life.screenshots.ru/the-code-inside/php-platform/bitrix-iis7-win2008/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
