https://iu5bmstu.ru/index.php?title=%D0%9F%D0%91%D0%94_(9)_-_%D0%9B%D0%B5%D0%BA%D1%86%D0%B8%D1%8F_%E2%84%963_-_%D0%9C%D0%BE%D0%B4%D0%B5%D0%BB%D0%B8_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_(%D0%BF%D1%80%D0%BE%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5)&feed=atom&action=history
ПБД (9) - Лекция №3 - Модели данных (продолжение) - История изменений
2024-03-29T00:25:06Z
История изменений этой страницы в вики
MediaWiki 1.41.0
https://iu5bmstu.ru/index.php?title=%D0%9F%D0%91%D0%94_(9)_-_%D0%9B%D0%B5%D0%BA%D1%86%D0%B8%D1%8F_%E2%84%963_-_%D0%9C%D0%BE%D0%B4%D0%B5%D0%BB%D0%B8_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_(%D0%BF%D1%80%D0%BE%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5)&diff=5438&oldid=prev
195.19.43.52: /* Переход от объектной модели к реляционной модели */
2016-11-02T09:53:56Z
<p><span dir="auto"><span class="autocomment">Переход от объектной модели к реляционной модели</span></span></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="ru">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Предыдущая версия</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Версия от 12:53, 2 ноября 2016</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l144">Строка 144:</td>
<td colspan="2" class="diff-lineno">Строка 144:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* у структур поля преобразуются в отдельный атрибут;</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* у структур поля преобразуются в отдельный атрибут;</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* множества преобразуются в множества кортежей.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* множества преобразуются в множества кортежей.</div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">* Отношение М-М = отдельная таблица с ключами</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">* Отношение 1-М = FK на стороне М</ins></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Пример с нашим примером:</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Пример с нашим примером:</div></td></tr>
</table>
195.19.43.52
https://iu5bmstu.ru/index.php?title=%D0%9F%D0%91%D0%94_(9)_-_%D0%9B%D0%B5%D0%BA%D1%86%D0%B8%D1%8F_%E2%84%963_-_%D0%9C%D0%BE%D0%B4%D0%B5%D0%BB%D0%B8_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_(%D0%BF%D1%80%D0%BE%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5)&diff=5437&oldid=prev
195.19.43.52: /* Переход от объектной модели к реляционной модели */
2016-11-02T09:49:36Z
<p><span dir="auto"><span class="autocomment">Переход от объектной модели к реляционной модели</span></span></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="ru">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Предыдущая версия</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Версия от 12:49, 2 ноября 2016</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l149">Строка 149:</td>
<td colspan="2" class="diff-lineno">Строка 149:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> Films(<u>name, year</u>, len, type);</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> Films(<u>name, year</u>, len, type);</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> Stusies(sname, city, street, <u>sid</u>);</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> Stusies(sname, city, street, <u>sid</u>);</div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> Actor(f, i ,o, edu, <u>inn</u>);</ins></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Объектно-реляционная модель данных ==</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Объектно-реляционная модель данных ==</div></td></tr>
</table>
195.19.43.52
https://iu5bmstu.ru/index.php?title=%D0%9F%D0%91%D0%94_(9)_-_%D0%9B%D0%B5%D0%BA%D1%86%D0%B8%D1%8F_%E2%84%963_-_%D0%9C%D0%BE%D0%B4%D0%B5%D0%BB%D0%B8_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_(%D0%BF%D1%80%D0%BE%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5)&diff=2014&oldid=prev
217.118.66.3: /* Для нашего примера */
2012-11-14T12:37:20Z
<p><span dir="auto"><span class="autocomment">Для нашего примера</span></span></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="ru">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Предыдущая версия</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Версия от 15:37, 14 ноября 2012</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l56">Строка 56:</td>
<td colspan="2" class="diff-lineno">Строка 56:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>};</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>};</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>class MF <del style="font-weight: bold; text-decoration: none;">extend S </del>Film(extent MFS)</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>class MF <ins style="font-weight: bold; text-decoration: none;">extends </ins>Film(extent MFS)</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> attribute string drawer;</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> attribute string drawer;</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>};</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>};</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>class Drama <del style="font-weight: bold; text-decoration: none;">extend S </del>Film (extent Dranas)</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>class Drama <ins style="font-weight: bold; text-decoration: none;">extends </ins>Film (extent Dranas)</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> attribute Struct</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> attribute Struct</div></td></tr>
</table>
217.118.66.3
https://iu5bmstu.ru/index.php?title=%D0%9F%D0%91%D0%94_(9)_-_%D0%9B%D0%B5%D0%BA%D1%86%D0%B8%D1%8F_%E2%84%963_-_%D0%9C%D0%BE%D0%B4%D0%B5%D0%BB%D0%B8_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_(%D0%BF%D1%80%D0%BE%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5)&diff=1666&oldid=prev
ILobster: /* Переход от объектной модели к реляционной модели */
2012-10-09T19:39:29Z
<p><span dir="auto"><span class="autocomment">Переход от объектной модели к реляционной модели</span></span></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="ru">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Предыдущая версия</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Версия от 22:39, 9 октября 2012</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l137">Строка 137:</td>
<td colspan="2" class="diff-lineno">Строка 137:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Преобразования:</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Преобразования:</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* класс с экземплярами атомарных атрибутов преобразуется в схему отношений с теми же самыми атрибутами<del style="font-weight: bold; text-decoration: none;">)</del>;</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* класс с экземплярами атомарных атрибутов преобразуется в схему отношений с теми же самыми атрибутами;</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* составные атрибуты преобразуются в ненормализованное отношение, которое после этого надо нормализовать во избежание аномалий;</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* составные атрибуты преобразуются в ненормализованное отношение, которое после этого надо нормализовать во избежание аномалий;</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* методы не преобразуются вообще, они теряются, так как в реляции методов нет;</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* методы не преобразуются вообще, они теряются, так как в реляции методов нет;</div></td></tr>
</table>
ILobster
https://iu5bmstu.ru/index.php?title=%D0%9F%D0%91%D0%94_(9)_-_%D0%9B%D0%B5%D0%BA%D1%86%D0%B8%D1%8F_%E2%84%963_-_%D0%9C%D0%BE%D0%B4%D0%B5%D0%BB%D0%B8_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_(%D0%BF%D1%80%D0%BE%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5)&diff=1663&oldid=prev
92.243.181.7: /* Про связи */
2012-10-09T19:12:20Z
<p><span dir="auto"><span class="autocomment">Про связи</span></span></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="ru">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Предыдущая версия</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Версия от 22:12, 9 октября 2012</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l122">Строка 122:</td>
<td colspan="2" class="diff-lineno">Строка 122:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{ </div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{ </div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> relationship Aud a</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> relationship Aud a</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> inverse <del style="font-weight: bold; text-decoration: none;">And</del>::in;</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> inverse <ins style="font-weight: bold; text-decoration: none;">Aud</ins>::in;</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> relationship Dis d</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> relationship Dis d</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> inverse Dis::din;</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> inverse Dis::din;</div></td></tr>
</table>
92.243.181.7
https://iu5bmstu.ru/index.php?title=%D0%9F%D0%91%D0%94_(9)_-_%D0%9B%D0%B5%D0%BA%D1%86%D0%B8%D1%8F_%E2%84%963_-_%D0%9C%D0%BE%D0%B4%D0%B5%D0%BB%D0%B8_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_(%D0%BF%D1%80%D0%BE%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5)&diff=1251&oldid=prev
ILobster: Новая страница: «__TOC__ Продолжаем работать с нашим примером: link=Файл:9sPBDl2pic2.svg == ODL == === Для н...»
2012-09-19T17:16:55Z
<p>Новая страница: «__TOC__ Продолжаем работать с нашим примером: <a href="/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:9sPBDl2pic2.png" title="Файл:9sPBDl2pic2.png">link=Файл:9sPBDl2pic2.svg</a> == ODL == === Для н...»</p>
<p><b>Новая страница</b></p><div>__TOC__<br />
<br />
Продолжаем работать с нашим примером:<br />
<br />
[[Файл:9sPBDl2pic2.png|link=Файл:9sPBDl2pic2.svg]]<br />
<br />
== ODL ==<br />
<br />
=== Для нашего примера ===<br />
<br />
Кстати, ключи везде прописывать не обязательно, потому что по умолчанию всегда будет OID. И он будет назначаться всегда, даже если мы объявим ещё и свой ключ.<br />
<br />
<source lang=cpp><br />
class Film(extent Films<br />
key(name, year))<br />
{<br />
attribute string name;<br />
attribute integer year;<br />
attribute integer len;<br />
attribute enum Ftype {bw, color} type;<br />
<br />
relationship Studia stud<br />
inverse Studia::fs;<br />
<br />
relationship Set<Actor> acts <br />
inverse Actor::infs;<br />
<br />
-- пример метода. Считает актёров и возвращает noActors, если нету ни одного<br />
integer ActCount() raises(noActors);<br />
<br />
void FinYear(in integer year, out Set<Films>) raises(noFilms, badYear);<br />
};<br />
<br />
class Studia(extent Studies)<br />
{<br />
attribute string sname;<br />
attribute Struct Addr<br />
{<br />
string city,<br />
string street<br />
} addr;<br />
<br />
relationship Set<Film> fs<br />
inverse Film::stud;<br />
};<br />
<br />
class Actor(extent Actors<br />
key inn)<br />
{<br />
attribute string inn;<br />
attribute string fio;<br />
attribute List<string> edu;<br />
<br />
relationship Set<Film> infs<br />
inverse Film::acts;<br />
};<br />
<br />
class MF extend S Film(extent MFS)<br />
{<br />
attribute string drawer;<br />
};<br />
<br />
class Drama extend S Film (extent Dranas)<br />
{<br />
attribute Struct<br />
{<br />
Set<string> authors,<br />
string bname<br />
} book;<br />
};<br />
</source><br />
<br />
=== Для примера с ВУЗом ===<br />
<br />
<source lang=cpp><br />
class Vuz(extent Vs)<br />
{<br />
attribute string name;<br />
<br />
relationship Set<Kaf> Kafs<br />
inverse Kaf::vuzz;<br />
};<br />
<br />
-- слабая сущность<br />
class Kaf(extent Ks<br />
key(kname, vuzz))<br />
{<br />
attribute string kname;<br />
<br />
relationship Vuz vuzz<br />
inverse Vuz::Kafs;<br />
};<br />
</source><br />
<br />
=== Про связи ===<br />
<br />
Все связи строго бинарны - можно связать только два объекта. Чтобы связать больше объектов (например, три), надо делать так:<br />
<br />
<source lang=cpp><br />
class Gr(extent ...)<br />
{<br />
attribute ...<br />
<br />
relationship Set<ADG> gin<br />
inverse ADG::g;<br />
};<br />
<br />
class Dis(extent ...)<br />
{<br />
relationship Set<ADG> din<br />
inverse ADG::d;<br />
};<br />
<br />
class Aud(extent ...)<br />
{<br />
relationship Set<ADG> in<br />
inverse ADG::a;<br />
};<br />
<br />
-- этот класс содержит связи<br />
class ADG(extent edgs)<br />
{ <br />
relationship Aud a<br />
inverse And::in;<br />
relationship Dis d<br />
inverse Dis::din;<br />
relationship Gr g<br />
inverse Gr::gin;<br />
};<br />
</source><br />
<br />
== Переход от объектной модели к реляционной модели ==<br />
<br />
Когда это может понадобиться:<br />
* при переходе из объектного проекта в реляционную реализацию;<br />
* при необходимости создать реляционную проекцию в объектной БД.<br />
<br />
Преобразования:<br />
* класс с экземплярами атомарных атрибутов преобразуется в схему отношений с теми же самыми атрибутами);<br />
* составные атрибуты преобразуются в ненормализованное отношение, которое после этого надо нормализовать во избежание аномалий;<br />
* методы не преобразуются вообще, они теряются, так как в реляции методов нет;<br />
* ключ преобразуется в ключ;<br />
* если ключа не было, то вводится дополнительное поле, которое будет ключом;<br />
* у структур поля преобразуются в отдельный атрибут;<br />
* множества преобразуются в множества кортежей.<br />
<br />
Пример с нашим примером:<br />
<br />
Films(<u>name, year</u>, len, type);<br />
Stusies(sname, city, street, <u>sid</u>);<br />
<br />
== Объектно-реляционная модель данных ==<br />
<br />
Это расширение реляционной модели. В основе лежит реляция - те же самые схемы отношений, экземпляры отношений, но добавляются некоторые возможности:<br />
* составные атрибуты:<br />
** структура;<br />
** коллекция:<br />
*** список;<br />
*** массив;<br />
*** мультимножество;<br />
*** множество структур (''вложенное отношение''):<br />
Actors(<u>inn</u>, fio, edu(year, Vuz));<br />
* методы;<br />
** методы экземпляров;<br />
** методы классов;<br />
* ссылки - теперь в качестве значения атрибута можно хранить ссылку на конкретный кортеж:<br />
Studies(sname, addr, s<u>id</u><br />
Films(<u>name, year</u>, len, type, stud(*(Studies)));<br />
<br />
Для соблюдения стандарта SQL'99 связь 1:M создаётся добавлением в таблицу со стороны М ссылки на кортеж таблицы со стороны 1.<br />
<br />
А связь М:М создаётся путём отдельной дополнительной таблицы, содержащей ссылки на соответствующие кортежи таблиц.<br />
<br />
=== Сравнение объектной и объектно-реляционной модели ===<br />
<br />
{| class="wikitable"<br />
! Объектная модель !! Объектно-реляционная модель<br />
|- align="center"<br />
| класс → экстент<br>объект || схема отношения → отношение (таблица)<br>кортеж<br />
|- align="center"<br />
| методы || методы<br />
|- align="center"<br />
| структуры, коллекции,<br>множество структур (классы) || структуры, коллекции,<br>множество структур (схемы отношений или вложенные отношения)<br />
|- align="center"<br />
| OID скрыт || OID может быть доступен<br />
|- align="center"<br />
| 1 класс - 1 экстент<br>1 интерфейс - N классов и N их экстентов || 1 схема отношений - N отношений (таблиц)<br />
|- align="center"<br />
| обратной совместимости с реляционной моделью нет || обратно совместима с реляционной моделью<br />
|}<br />
<br />
[[Категория:Постреляционные базы данных (9 семестр)]]<br />
[[Категория:Конспекты лекций и семинаров]]</div>
ILobster