logo
INFO2

Многие-ко-многим

«Многие-ко-многим» наиболее сложны в реализации. Для App Engine есть несколько решений их построения. Наиболее очевидный подход — аналогичная реляционным БД таблица связей, которая содержит пары ключей для обеих сторон отношения. Для нашего примера с «питомцами/владельцами» она будт выглядеть так:

class Owner(db.Model):

name = db.StringProperty()

class Pet(db.Model):

name = db.StringProperty()

class PetOwner(db.Model):

pet = db.ReferenceProperty(Pet, collection_name='owners')

owner = db.ReferenceProperty(Owner, collection_name='pets')

Достоинства этого способа в том, что в отношения можно добавить дополнительные свойства — например, при моделировании связей ссылок страницы вы можете добавить в отношение поле с текстом ссылки. Доступ к данным осуществляется поэтапно: находятся связанные пары, из которых потом извлекаются искомые сущности. В примере задействован паттерн пакетного извлечения сущностей из ссылок, описаный в этой статье*:

petowners = felix.owners.fetch(100)

prefetch_refprops(owners, 'owner')

owners = [x.owner for x in petowners]

Извлечение сущностей в другом направлении (от «владельца» к «питомцам») осуществляется аналогично. Другой подход заключается в том, что на одной стороне отношения хранится список ключей сущностей другой стороны. 

38.

Понятие алгоритма в информатике является фундамен­тальным, т.е. таким, которое не определяется через дру­гие, еще более простые понятия. Для сравнения вспом­ним, что в физике таким фундаментальным понятием является пространство и время, в математике - точка, в химии - вещество, поэтому приведенное выше определе­ние не является всеобъемлющим, а Алгоритм - это точное и понятное предписание (указание) исполнителю совершить определенную последовательность действий, направленных на достижение указанной цели или решение поставленной задачи.

Алгоритм, как правило, формулируется в виде схемы или предложения (текста). Этот текст записывают на бу­маге или вводят в память компьютера, используя специ­альные обозначения

алг определение дня недели 1 января (XX век) нач обозначить две последние цифры года N; умножить N на 1,2 5; найти целую часть произведения; разделить ее на 7 и найти остаток; к остатку прибавить 1, считать его результатом кон

Наличие алгоритма дает возможность решать задачу формально, механически исполняя команды алгоритма в указанной последовательности. Исполнители: человек, робот, ЭВМ.

Построение алгоритма для решения из какой-либо области требует от человека глубоких знаний в этой области, бывает связано с тщательным анализом поставленной задачи сложными, иногда очень громоздкими рассуждениями. На поиски алгоритма решения некоторых задач ученые затрачивают многие годы. Но когда алгоритм создан, решение задачи по готовому алгоритму уже не требует каких-либо рассуждений и сводится только к строгому выполнению команд алгоритма.

Указание выполнить конкретное действие называется командой.

Совокупность всех команд, которые могут быть выполнены    некоторым исполнителем называется системой команд.