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

Материал из Кафедра ИУ5 МГТУ им. Н.Э.Баумана, студенческое сообщество
Перейти к навигации Перейти к поиску
(→‎РК: пример задания на РК 2)
Нет описания правки
 
(не показано 26 промежуточных версий 6 участников)
Строка 1: Строка 1:
<p>{{Предмет | name=Постреляционные базы данных | prepod=[[Виноградова М.В.]] | lections=? | seminars=нет |  labs=4 | dzs=1 | rks=2 | signif=по желанию | what=зачёт}}</p>
<p>{{Предмет | name=Постреляционные базы данных | prepod=[[Виноградова М.В.]] | lections=? | seminars=нет |  labs=4 | dzs=1 | rks=2 | signif=по желанию | what=экзамен}}</p>
 
И сразу вопрос: что такое постреляционные базы данных? На одном форуме на него ответили так:
 
<blockquote>
- ''WTF is a "post-relational" database?''<br />
- ''Marketing-ese for an object-esque layer built on top of a heirarchichal database.''
</blockquote>
 
Что в переводе будет примерно так:
 
<blockquote>
- ''Чего ещё за "постреляционные базы данных"?''<br />
- ''Маркетинговое название для объектной надстройки поверх иерархической БД.''
</blockquote>


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


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


СУБД Caché ({{Википедия|Caché|произносится именно с ударением на последний слог}}), взять можно [http://www.intersystems.ru/cache/devcorner/index.html тут].
СУБД Caché ({{Википедия|Caché|произносится именно с ударением на последний слог}}), взять можно [http://www.intersystems.ru/cache/devcorner/index.html тут]. Конечно, лучше не только не брать, но и [[Intersystems Cache - Врата в ад | вообще никак не прикасаться]], но увы...
<!--- А также [http://dev.mysql.com/downloads/ MySQL] (при установке отметить пункт ''Аналитический сервер''). --->
 
Ещё немного разъяснений, [http://habrahabr.ru/company/intersystems/blog/235473/#comment_8042959 что же это такое, почему "постреляционное" и насколько оно объектное] (лучше прочитать все комментарии).
 
Вкратце: неистово древнее (несмотря на цифру <code>%текущий год%</code> в названии), никому не нужное и никем не использующееся ГМО.


Методички:
Методички:
Строка 29: Строка 46:
* [http://yadi.sk/d/MI0ftZAl0iXXv примерный отчет по ЛР №1]
* [http://yadi.sk/d/MI0ftZAl0iXXv примерный отчет по ЛР №1]


Список любимых вопросов:
==== Вопросы на защите ====
 
1) Что такое глобал? Где их можно посмотреть? Почему первый элемент пустой?
 
2) Как хранятся производные классы? Записи добавляются в какую таблицу (родителя или наследника)? Как хранится глобал производных объектов?
 
3) Как передавать параметры в SQL-запрос? Как их оттуда забирать?
 
4) Почему вызывается метод одного класса а не другого при наследовании?
:Пример: метод <code>Inf()</code> в классе ''Курсы'' и ''Иностранные курсы''. Выбираем объект класса ''Курсы'', но который может быть приведен к производному.
:Вызывается метод <code>Inf()</code> производного.
:Вопрос: ''почему''? Ответ: ''полиморфизм''!


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


=== ЛР №2 ===
=== ЛР №2 ===


* [http://yadi.sk/d/0u0rlgYT0PrUp методичка по ЛР №2] (пока только для 1 и 2 группы, можно брать их варианты).
* [http://yadi.sk/d/0u0rlgYT0PrUp методичка по ЛР №2] (пока только для 1 и 2 группы, можно брать их варианты).
==== Вопросы на защите ====
:1. При проекции сохраняется ли семантика языка?
::''Нет: меняются названия методов (теряется %), меняется число параметеров (добавляется <code>conn</code>).''
:2. Что можно сделать через шлюз?
::''Нельзя создать хранимый объект! Потому что нельзя!''
:3. Как выбрать из XML пустые значения?
:4. Что такое XML-документ и XML-схема?
:5. Зачем нужна директива <code>path</code>?
:6. Назначение <code>sp_xml_preparedocument</code>?
:7. Что делает <code>nodes()</code>?


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


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


=== РК 1 ===
=== РК 1 ===
Строка 71: Строка 92:
=== РК 2 ===
=== РК 2 ===


Дана предметная область, её описание. Надо построить к ней запросы на всех языках, которые проходили ([[ПБД_(9)_-_Лекция_№6_-_SQL_(продолжение)#SQL | SQL]], объектное расширение SQL, [[ПБД_(9)_-_Лекция_№8_-_OQL#OQL | OQL]], [[ПБД_(9)_-_Лекция_№6_-_SQL_(продолжение)#XQuery | XQuery]], [[ПБД_(9)_-_Лекция_№9_-_Datalog#Datalog | Datalog]] (с рекурсиями и кванторами) и, возможно, вообще все остальные, которые упоминались на лекциях).
Дана предметная область, её описание. Надо построить к ней запросы на всех языках, которые проходили ([[ПБД_(9)_-_Лекция_№6_-_SQL_(продолжение)#SQL | SQL]], объектное расширение SQL, [[ПБД_(9)_-_Лекция_№6_-_SQL_(продолжение)#XPath | XPath]],[[ПБД_(9)_-_Лекция_№6_-_SQL_(продолжение)#XQuery | XQuery]], [[ПБД_(9)_-_Лекция_№8_-_OQL#OQL | OQL]], [[ПБД_(9)_-_Лекция_№9_-_Datalog#Datalog | Datalog]] (с рекурсиями и кванторами) и, возможно, вообще все остальные, которые упоминались на лекциях).


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


Пример задания на РК можно посмотреть [http://yadi.sk/d/lnYcBGpo0k7e5 тут].
Пример задания на РК можно посмотреть [http://yadi.sk/d/lnYcBGpo0k7e5 тут].
Строка 79: Строка 100:
== Зачёт ==
== Зачёт ==


Для зачёта автоматом надо хорошо написать оба РК и выполнить дополнительные задания к ЛР.
Зачет состоит из РК1 + РК2 + дополнительные задания по всем ЛР. И выполненное ДЗ. Надо набрать 25 баллов.
 
Для зачёта автоматом надо всё то же самое, но успеть до зачётной недели. Плюс можно написать реферат и добрать нехватающие баллы.


Система баллов для зачёта:
Система баллов для зачёта:
Строка 92: Строка 115:
  |- align="center"
  |- align="center"
  ! ДЗ
  ! ДЗ
  | 5 || 1
  | 5 || неизвестно
  |- align="center"
  |- align="center"
  ! Лабораторные
  ! Лабораторные
  | - || 10
  | - || по 1 баллу за пункт
|- align="center"
! Реферат
| 4 || -
|}
|}


Очень скорее всего, для автомата надо <font size="5px">все 26</font> и ни баллом меньше.
Для автомата надо <font size="5px">все 25</font> и ни баллом меньше. Но если кто-то успеет всё сделать не просто до зачётной недели, а до середины декабря, тому для автомата требуется на целых <font size="5px">2</font> балла меньше, то есть не <font size="5px">25</font>, а всего <font size="5px">23</font>.
 
И ещё прямая речь от Виноградовой:<blockquote>''"До меня дошли слухи о "зачёте в долг". Тот, кто этому верит, за зачётом будет обращаться к тому, от кого услышал.''<br>
''Я этого никому не говорила. 25 декабря зачёт будет проставлен по реальным результатам выполненной за семестр работы"''.</blockquote>


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


[[Категория:9 семестр]]
[[Категория:9 семестр]]
[[Категория:Предметы]]
[[Категория:Предметы]]

Текущая версия от 18:07, 22 февраля 2018

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

И сразу вопрос: что такое постреляционные базы данных? На одном форуме на него ответили так:

- WTF is a "post-relational" database?
- Marketing-ese for an object-esque layer built on top of a heirarchichal database.

Что в переводе будет примерно так:

- Чего ещё за "постреляционные базы данных"?
- Маркетинговое название для объектной надстройки поверх иерархической БД.

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

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

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

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

Год Ссылка
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. Что можно сделать через шлюз?
Нельзя создать хранимый объект! Потому что нельзя!
3. Как выбрать из XML пустые значения?
4. Что такое XML-документ и XML-схема?
5. Зачем нужна директива path?
6. Назначение sp_xml_preparedocument?
7. Что делает nodes()?

РК

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

РК 1

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

РК 2

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

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

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

Зачёт

Зачет состоит из РК1 + РК2 + дополнительные задания по всем ЛР. И выполненное ДЗ. Надо набрать 25 баллов.

Для зачёта автоматом надо всё то же самое, но успеть до зачётной недели. Плюс можно написать реферат и добрать нехватающие баллы.

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

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

Для автомата надо все 25 и ни баллом меньше. Но если кто-то успеет всё сделать не просто до зачётной недели, а до середины декабря, тому для автомата требуется на целых 2 балла меньше, то есть не 25, а всего 23.

И ещё прямая речь от Виноградовой:

"До меня дошли слухи о "зачёте в долг". Тот, кто этому верит, за зачётом будет обращаться к тому, от кого услышал.
Я этого никому не говорила. 25 декабря зачёт будет проставлен по реальным результатам выполненной за семестр работы".

Литература

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