История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Топ:
Устройство и оснащение процедурного кабинета: Решающая роль в обеспечении правильного лечения пациентов отводится процедурной медсестре...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного...
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Интересное:
Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений...
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Использование в описании абстрактной модели таких слов, как отслеживать, вычислять или других глаголов, портит ее внутреннюю сущность. Всегда применяйте только те атрибуты, которые описывают состояние. Этот подход примерно аналогичен тому, что был описан в разделе “Представляйте все существительные наборами”.
Программисты, пришедшие из мира процедурных языков, привыкли мыслить категориями действий. Они думают о сложении, тогда как программистам декларативных языков важна сумма. Они думают о процессах, а мы — о результатах.
Вам по-прежнему доступны “заглушки”
На одном из рисунков известного карикатуриста Сидни Харриса (Sydney Harris) изображены два математика перед доской, на которой посреди длинной цепочки сложных математических доказательств стоят слова. “А затем происходит чудо”. И математик-слушатель говорит математику-автору: “Вот этот шаг надо бы описать поподробнее”.
Аналогичный прием мы используем в процедурных языках программирования — вставляя “заглушку”, до поры до времени не зная, что делать в этом месте программы. Например, вы разрабатываете программу по расчету зарплаты для компании, которая имеет сложную систему выплаты премий. Она вам пока непонятна или не задана, и вы пишете процедуру-“заглушку”, которая возвращает константу или просто выдает сообщение о своем выполнении. Это позволит вам продолжить работу с теми фрагментами процедуры, которые вам ясны.
Указанное труднее осуществить в декларативных языках программирования. Модули процедурного языка не обременены жесткими связями, тогда как предложения и запросы оператора SELECT представляют собой монолитную единицу программного кода. В процедурных языках программирования вы без труда напишете код, предназначенный для тестирования модуля. Для конструкций SQL сделать это гораздо проблематичнее.
Вернемся к задаче выбора партнера по танцу. Я мог бы подойти к ее решению, предположив, что необходимо разделить кавалеров и дам на две отдельные группы. Но допустим, что я пока не знаю, как написать этот код. Поэтому я с помощью текстового редактора вставляю заглушку — псевдокод:
Заключенный в угловые кавычки псевдокод я позже заменю на совокупность табличных столбцов, подзапросы или что-нибудь другое. В данный момент они являются просто метками. Также я использую метку “??” для указания на взаимосвязь между кавалерами и дамами. Затем я могу перейти на следующий уровень вложения и заменить метку <чудо-парни> подзапросом следующего содержания:
(SELECT P1.name, <заглушка для парней> FROM People AS P1 WHERE P1.gender = 1) AS M1 (name, <заглушка для парней>)Такой же шаблон для подзапроса применим и к метке <чудо-девушки>. Я знаю, что теперь мне необходимо определиться с кодом для метки <заглушка для парней>. Первым делом я обращаю внимание на столбцы в таблице People. Единственным интересующим меня атрибутом в данной таблице является пол. Я устанавливаю значение для этого атрибута таю для кавалеров оно равно 1, для дам — 2.
Я пробую следующее:
Легко увидеть, что данный фрагмент представляет собой всего-навсего неловко замаскированный оператор объединения CROSS JOIN. Добавить, что ли, уточнение по именам?
SELECT M1.name AS male, F1.name AS female FROM (SELECT P1.name, P1.gender FROM People AS P1 WHERE P1.gender = 1) AS M1 (name, gender) FULL OUTER JOIN (SELECT P1.name, gender FROM People AS P1 WHERE P1.gender = 2) AS F1 (name, gender) ON M1.gender = 1 AND FLgender = 2 AND M1.name <= F1.name;Нет, не помогает. В результате мы хоть и получим результирующий набор меньшего размера, но в нем все еще будут повторяющиеся пары. В этой ситуации поможет некоторый опыт работы с SQL Обычный прием здесь — упорядочение пар при помощи самообъединения таблицы. Поскольку данный прием применим к любой таблице, для получения окончательного результата запроса мы можем использовать его как для кавалеров, так и для дам.
SELECT M1.name AS male, F1.name AS female FROM (SELECT P1.name, COUNT (P2.name) FROM People AS P1, People AS P2 WHERE P2.name <= P1.name AND P1.gender = 1 AND P2.gender = 1 GROUP BY PLname) AS M1 (name, rank) FULL OUTER JOIN (SELECT PLname, COUNT (P2.name) FROM People AS P1, People AS P2 WHERE P2.name <= P1.name AND P1.gender = 2 AND P2.gender = 2 GROUP BY PLname) AS F1 (name, rank) ON M1.rank = F1.rank;|
|
|
Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!