Категория:Постреляционные базы данных (9 семестр): различия между версиями

Материал из Кафедра ИУ5 МГТУ им. Н.Э.Баумана, студенческое сообщество
Перейти к навигации Перейти к поиску
мНет описания правки
Строка 16: Строка 16:
== Лабораторные работы ==
== Лабораторные работы ==


Четыре бесконечных лабораторных  <strike>по две пары каждая</strike>.
Четыре ''бесконечных'' лабораторных  <strike>по две пары каждая</strike>.


СУБД Caché ({{Википедия|Caché|произносится именно с ударением на последний слог}}), взять можно [http://www.intersystems.ru/cache/devcorner/index.html тут].
СУБД Caché ({{Википедия|Caché|произносится именно с ударением на последний слог}}), взять можно [http://www.intersystems.ru/cache/devcorner/index.html тут].
Строка 29: Строка 29:
* [http://yadi.sk/d/MI0ftZAl0iXXv примерный отчет по ЛР №1]
* [http://yadi.sk/d/MI0ftZAl0iXXv примерный отчет по ЛР №1]


Список любимых вопросов:
==== Вопросы на защите ====


1) Что такое глобал? Где их можно посмотреть? Почему первый элемент пустой?
:1. Что такое глобал? Где их можно посмотреть? Почему первый элемент пустой?
 
:2. Как хранятся производные классы? Записи добавляются в какую таблицу (родителя или наследника)? Как хранится глобал производных объектов?
2) Как хранятся производные классы? Записи добавляются в какую таблицу (родителя или наследника)? Как хранится глобал производных объектов?
:3. Как передавать параметры в SQL-запрос? Как их оттуда забирать?
 
:4. Почему вызывается метод одного класса а не другого при наследовании?
3) Как передавать параметры в SQL-запрос? Как их оттуда забирать?
::Пример: метод <code>Inf()</code> в классе ''Курсы'' и ''Иностранные курсы''. Выбираем объект класса ''Курсы'', но который может быть приведен к производному.
 
::Вызывается метод <code>Inf()</code> производного.
4) Почему вызывается метод одного класса а не другого при наследовании?
::Вопрос: ''почему''? Ответ: ''полиморфизм''!
:Пример: метод <code>Inf()</code> в классе ''Курсы'' и ''Иностранные курсы''. Выбираем объект класса ''Курсы'', но который может быть приведен к производному.
:5. Как проверить существование объекта через терминал (это про <code>.%ExistsId()</code>)
:Вызывается метод <code>Inf()</code> производного.
:6. В чем отличие метода класса от метода экземпляра класса?
:Вопрос: ''почему''? Ответ: ''полиморфизм''!
:7. Как выполняется SQL-запрос из Терминала?  
 
::Вот так:
5) Как проверить существование объекта через терминал (это про <code>.%ExistsId()</code>)
 
6) В чем отличие метода класса от метода экземпляра класса?
 
7) Как выполняется SQL-запрос из Терминала?  
 
:Нужно рассказать про каждую строчку что она делает:
<syntaxhighlight lang=sql>
<syntaxhighlight lang=sql>
set o=##class(%ResultSet).%New("%DynamicQuery:SQL")
set o=##class(%ResultSet).%New("%DynamicQuery:SQL")
Строка 54: Строка 47:
do o.Execute()
do o.Execute()
</syntaxhighlight>
</syntaxhighlight>
 
::Нужно рассказать про каждую строчку что она делает.
8) Как хранятся массивы? Какой формат у ID элемента массива?
:8. Как хранятся массивы? Какой формат у ID элемента массива?


=== ЛР №2 ===
=== ЛР №2 ===
Строка 61: Строка 54:
* [http://yadi.sk/d/0u0rlgYT0PrUp методичка по ЛР №2] (пока только для 1 и 2 группы, можно брать их варианты).
* [http://yadi.sk/d/0u0rlgYT0PrUp методичка по ЛР №2] (пока только для 1 и 2 группы, можно брать их варианты).


Вопросы по лабе:
==== Вопросы на защите ====
1) При проекции сохраняется ли семантика языка? - Нет: меняются названия методов (теряется %), меняется число парамтеров (добавляется conn).
:1. При проекции сохраняется ли семантика языка?
 
::Нет: меняются названия методов (теряется %), меняется число параметеров (добавляется <code>conn</code>).
2) Что можно сделать через шлюз? Нельзя создать хранимый объект! Потому что нельзя! =)
:2. Что можно сделать через шлюз?
::Нельзя создать хранимый объект! Потому что нельзя!


== РК ==
== РК ==


Два РК. Оба <strike>не обязательные, можно не писать</strike> обязательные, без них не будет зачёта. Если написать хорошо и вовремя, то можно претендовать на зачёт автоматом.
Два РК. Оба <strike>не обязательные, можно не писать</strike> ''обязательные'', без них не будет зачёта. Если написать хорошо и вовремя, то можно претендовать на зачёт автоматом.


=== РК 1 ===
=== РК 1 ===

Версия от 16:05, 16 ноября 2012

Постреляционные базы данных
Преподаватель: Виноградова М.В.
Лекций: ?
Семинаров: нет
Лабораторных работ: 4
Домашних заданий: 1
Рубежных контролей: 2
Ходить: по желанию
Что сдавать: зачёт

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

Домашнее задание

Методичку по ДЗ можно взять здесь.

Задания и варианты по годам:

Год Ссылка
2012 загрузить

Лабораторные работы

Четыре бесконечных лабораторных по две пары каждая.

СУБД Caché (произносится именно с ударением на последний слог), взять можно тут.

Методички:

ЛР №1

Вопросы на защите

1. Что такое глобал? Где их можно посмотреть? Почему первый элемент пустой?
2. Как хранятся производные классы? Записи добавляются в какую таблицу (родителя или наследника)? Как хранится глобал производных объектов?
3. Как передавать параметры в SQL-запрос? Как их оттуда забирать?
4. Почему вызывается метод одного класса а не другого при наследовании?
Пример: метод Inf() в классе Курсы и Иностранные курсы. Выбираем объект класса Курсы, но который может быть приведен к производному.
Вызывается метод Inf() производного.
Вопрос: почему? Ответ: полиморфизм!
5. Как проверить существование объекта через терминал (это про .%ExistsId())
6. В чем отличие метода класса от метода экземпляра класса?
7. Как выполняется SQL-запрос из Терминала?
Вот так:
set o=##class(%ResultSet).%New("%DynamicQuery:SQL")
do o.Prepare("select * from Lesson where ofcour->name ='"_lang_"'")
do o.Execute()
Нужно рассказать про каждую строчку что она делает.
8. Как хранятся массивы? Какой формат у ID элемента массива?

ЛР №2

Вопросы на защите

1. При проекции сохраняется ли семантика языка?
Нет: меняются названия методов (теряется %), меняется число параметеров (добавляется conn).
2. Что можно сделать через шлюз?
Нельзя создать хранимый объект! Потому что нельзя!

РК

Два РК. Оба не обязательные, можно не писать обязательные, без них не будет зачёта. Если написать хорошо и вовремя, то можно претендовать на зачёт автоматом.

РК 1

Билет РК состоит из трёх практических упражнений. Можно посмотреть примеры заданий на РК.

РК 2

Дана предметная область, её описание. Надо построить к ней запросы на всех языках, которые проходили ( SQL, объектное расширение SQL, OQL, XQuery, Datalog (с рекурсиями и кванторами) и, возможно, вообще все остальные, которые упоминались на лекциях).

На РК можно пользоваться чем угодно, ноутбуками тоже, потому что надо знать синтаксис языков, а его, понятно, заучивать не нужно.

Пример задания на РК можно посмотреть тут.

Зачёт

Для зачёта автоматом надо хорошо написать оба РК и выполнить дополнительные задания к ЛР.

Система баллов для зачёта:

За что Максимум возможных За дополнительные пункты
РК 1 5 -
РК 2 5 -
ДЗ 5 1
Лабораторные - 10

Очень скорее всего, для автомата надо все 26 и ни баллом меньше.

Литература

  • Кузнецов - "Базы данных, языки и модели";
  • Гарсиа, Малина, Ульман, Уидоу - "Схемы БД";
  • Кирстеп - "Cashe";
  • http://citforum.ru/database/