
- •7. Что такое электронная таблица?
- •Ввод и редактирование данных
- •Формат данных
- •Функции и формулы
- •Понятие формулы
- •Понятие функции
- •Мастер функций
- •[Править]Применение в серверных приложениях
- •[Править]Мультиплексирование
- •Методы и средства защиты от несанкционированного доступа
- •Криптография и шифрование Что такое шифрование
- •Основные термины и определения криптографии
- •Открытые ключи
- •Проблемы использования открытых/закрытых ключей
- •Сертификат
- •[Править]Центры доверия
- •Создание отчётов
- •Изменение структуры отчёта
- •Создание таблиц в режиме конструктора
- •Формирование запросов на выборку
- •Параметрические запросы
- •Запросы на обновление
- •Редактирование запросов
- •Поля и записи
- •Порядковые типы
- •Целые типы
- •Символьные типы
- •Булевы типы
- •Перечислимые типы
- •Поддиапазонные типы
- •Действительные типы
- •[Править]Использование в форматах файлов
- •3.1. Выполнение задания
- •6.2 Построитель выражений
- •Создание кнопочной формы с помощью диспетчера кнопочных форм
- •Примечания
- •Групповые функции в операторе select:
- •Раторы сравнения
- •Виды отношений
- •Отношения в App Engine Один-ко-многим
- •Один-к-одному
- •Многие-ко-многим
- •2. Свойства алгоритмов.
- •Вывод «Основные свойства алгоритмов»:
- •3. Способы описания алгоритмов.
- •Тестирование программного обеспечения
- •[Править]Уровни тестирования
- •[Править]Статическое и динамическое тестирование
- •[Править]Регрессионное тестирование
- •[Править]Тестовые скрипты
- •[Править]Тестирование «белого ящика» и «чёрного ящика»
- •[Править]Покрытие кода
- •Обеспечение целостности базы данных
- •Электронная почта (e-mail)
- •Группы новостей
- •Службы мгновенных сообщений
- •Основы tcp/ip
- •Краткое описание протоколов семейства tcp/ip с расшифровкой аббревиатур
- •Архитектура tcp/ip
- •Уровни сетей и протоколы tcp/ip
- •Краткое заключение
Какую работу нужно написать?
Раторы сравнения
Большинство операторов сравнения применимы к числовым значениям. Всё это бинарные операторы, имеющие два числовых аргумента, но возвращающие логическое значение.
> — оператор «больше».
>= — оператор «больше или равно».
< — оператор «меньше».
<= — оператор «меньше или равно».
!= — оператор «не равно».
== — оператор эквивалентности (равенства).
Последние два оператора могут применяться не только для числовых значений, но и, например, для логических.
Примеры:
boolean m; m = 5 >= 4; // истина m = 5 != 5 || false; // ложь boolean w; w = m == false; // истина System.out.println(w); // выведет true
Очень важно не путать оператор эквивалентности с операцией присваивания.
В выражениях, где встречаются операторы разных типов, сначала выполняются арифметические операции, затем операции сравнения, затем логические операции и в последнюю очередь присваивание.
37.
Виды отношений
СУБД оперируют несколькими видами отношений — «один-к-одному», «один-ко-многим» и «многие-ко-многим». Не смотря на отличия в терминологии, отношения работают по тем же принципам, что и ссылки. Ссылка — это поле сущности, содержащее ключ другой сущности — например, если «питомец» ссылается на «владельца», то это означает, что сущность «питомец» имеет поле, содержащее ключ сущности «владелец». Все виды отношений можно представить как ссылки. Тип «один-ко-многим» в самой простой форме — ссылка: каждый «питомец» имеет свего «владельца», поэтому «владелец» может иметь нескольких «питомцев», ссылающихся на него. При этом сам «владелец» не меняется — на него опираются отдельные «питомцы», назвавшие его своим хозяином. Отношения «один-к-одному» — это «один-ко-многим» с дополнительным ограничением, что есть только один «питомец», ссылающийся на «владельца». Это ограничение можно усилить хранением перекрестных ссылок (поля-ссылки друг на друга в каждой сущности). Отношения «многие-ко-многим» немного сложнее. Их можно реализовать несколькими способами, но все они сводятся к списку пар ссылок. Рассмотрим в качестве примера веб-страницу. Каждая из страниц имеет множество входящих и исходящих ссылок. Их можно представить списком пар вида (from_url, to_url). В реляционных СУБД подобные соответствия хранятся в отдельных таблицах, которые присоединяются в запросах для поиска связанных записей. Теперь рассмотрим, как вышеописанные типы связей работают в App Engine. Вообще, зачастую бывает полезным избавиться от терминологии «один-ко-многим» и др. и рассматривать сущности с объектно-ориентированной точки зрения. Поставим вопрос иначе: как одна сущность должна ссылаться на другую, чтобы соответствовать вашей структуре данных?
Отношения в App Engine Один-ко-многим
Этот тип отношений легко реализуется в любой системе. Платформа App Engine обеспечивает хранение ключа стороны «один» в сущности со стороны «многие». В Питоне для этого используется поле-ссылка ReferenceProperty:
class Owner(db.Model):
name = db.StringProperty()
class Pet(db.Model):
name = db.StringProperty()
owner = db.ReferenceProperty(Owner)
Чтобы найти «владельца» для «питомца», мы обращаемся к атрибуту pet.owner, и App Engine автоматически загружает сущность, на которую мы ссылаемся. Чтобы найти всех «питомцев», ссылающихся на конкретного «владельца», достаточно выполнить следующий запрос:
pets = Pet.all().filter('owner =', owner).fetch(100)
Аналогичный результат можно получить проще: ReferenceProperty автоматически создает свойство в классе Owner для быстрого и удобного доступа к связанным данным, так что извлечь список «питомцев» можно так:
pets = Owner.owner_set.fetch(100)
По умолчанию, App Engine именует это свойство как имя поля + "_set", но вы можете задать свое собственное:
class Pet(db.Model):
name = db.StringProperty()
owner = db.ReferenceProperty(Owner, collection_name='pets')
pets = owner.pets.fetch(100)
Другой способ моделирования отношения «один-ко-многим» — это привязка сущности к родителю. В момент создания сущности ей может быть назначен родитель. При этом ключ сущности-родителя становится частью ключа-потомка и не может быть изменен в будущем. Вот как это выглядит в нашем примере:
class Owner(db.Model):
name = db.StringProperty()
class Pet(db.Model):
name = db.StringProperty()
bob = Owner(name='Bob')
felix = Pet(name='Felix', parent=bob)
owner_of_felix = felix.parent
Далее мы нигде явно не указываем связь между сущностями — она следует из указания родителя на момент создания. Когда лучше использовать привязку к родителю (parent) вместо поля-ссылки (ReferenceProperty)? Это влияет на работу транзакций: в App Engine в каждой отдельной транзакции можно оперировать сущностями только одной группы, т.е. множеством сущностей с родителем из той же группы. Если требуется, чтобы в транзакцию не попадали связанные сущности, используйте поле-ссылку. Кроме того, помните, что сущность может иметь только одного непосредственного родителя, и его ключ не может быть изменен после создания.