Базы Данных, 17 лекция (от 02 ноября)

Материал из eSyr's wiki.

Версия от 16:06, 3 ноября 2006; Esyr01 (Обсуждение)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

БД 02.11.06


Лектор рассматривает отдельный диалект. Выбрал он его потому, что он ему нравится.

Некоторые потребности модели в отрыве от потребностей РБД. Оракловский синтаксис сильно ориентирован на SQL 80х годов.

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

Основные понятия:

  1. Сущность

  2. Связь

  3. Атрибут

В прошлый раз лектор остановился на понятии сущности. Это реальный или представляемый объект, информация о котором должна сохраняться и быть доступной. На дианграме изображается в виде прямоугольника, имя большими буквами, и ещё могут приводиться примеры.


На само деле, это немножечко отходит от понятия класса в диаграме классов uML, потому что там это требованрие необязательно, и там считается, что если мы определяем класс Корова, то там может быть много объектов, и часть из них может быть одинакова. Здесь все Коровы должны быть разные.


Связь

Связь (так, как это было у Оракла) – графически изобр ассоциация, устанавливаемая между двумя сущностями.


В одном диалекте связь – ассоциация, в лругой ассоциация – подвид связи.


Связь бинарна.

На практике:

Люди ездят на поездах, у поездов машинисты, машинисты работают в жд парке и т. д.


В принципе, все отношения в БД можно сделать бинарными. Связи один с одним в действиетльности являются достаточными, и в частности, Оракл утверждал, что невозможно придумать такой жизненной ситуации, когда нельзя её привести к бинарному случаю.


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


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

Есть сущности и связи между ними, и Когда происходит инстанциация, ... .


У каждого типа связиопределяются два конца. Они называются ролями по отношению к соотв типам сущностей. В терминологии Оракловских диаграмм роли называются концами типов связей.

Связи именуются двумя именами. Имена присваиваются концам связи. Если имеюнуются концы, то связь лучше понимается. Одно из предназначений диаграм – чтобы их можно был читать, и оказывается, что это легче.


Связь представляется в виде ненаправленной линии, и она может проводиться между двумя прямоугольниками или связывать прямогульни сам с обой. В последнем случае связь называается рекурсивной. Это слово не очень хорошее, но не будем привязывааться к терминологии. В месте стыковки конца связи с сущностью указывается, сколько экземпляров типа сущности могут стыковаться с типом связи (?) .

Есть два типа сущности:

пассажир может иметь сколько угодно билетов, и у белета ровно один пассажир


В терминологии Оракла это называется степенью. Слева степень много, Справа 1. Пунктир – необязательность связи.


Лектор недавно перевёл несколько новых статей Дейта, одна из них в частности ругает диаграммы классов (UML), у них понятие, сколько экземпляров объектов может присутствоватьна конце связи называется multiplicity, и Дейта ругает людей, которые заменили (cardinality) мощность на множественность, которая неизвестно что обозначает. Русские программисты придумали слово кратность.


Пассажир может иметь 0 или сколько угодно билетов.


Пример рекурсивной связи


Каждый – сын мужчины, и у мужчины 0 или более детей.


Атрибут

Атрибут – любая деталь, которая служит для уточнения, идентификации, классификации, числовой характеристики или выражения состояния сущности.


Лектора эти определнения забавляют.


Очень строгие ТД вводить не нужно, потому что когда рисуются диаграмы концептуальных схем бд, то не следует привязываться к конкретной СУБД. Чем позже введем конкретные понятия, свойственные данной реализации, лучше не вводить, хотя следует немножечко понимать, что за атрибутами стоит, и вводить примеры, чтобы понимать, какого они должны быть типа.


Пример: книга. Казалось бы, тривиальная вещь. Рассмотрим два случая: книга на складе и книга в библиотеке. Для библ и для склада экземпляр сущности книга является разным. И для склада лучшим идентификатором будет ISBN, а для библиотеки – уникальный идентификатор библиотеки и уникальный идентификатор библиотеки.


Уникальным идентификатором типа сущности может являться атрибут, комбинация атрибутов, связь, комбинация связей, комбинация связей и атрибутов.


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


//педедыв


Пример про паспорт

Зная порялки паспортного стола, делаем связь принадлежит необязательной.


Курс определяется профессором и дисциплиной.


Нормальные формы

1НФ – устраняются атрибуты, которые содержат множественные значения

(пример с аэродромом и авиамот предп)

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


... //ну задолбался я писать


Лектор всегда мечтал знать, на каком самолёте полетит.


РЕЙС

номер рейса

аэропорт вылета

аэропорт прибытия


ЭЛЕМЕНТ РАСПИСАНИЯ

дата вылета

бортовой номер


ГОРОД


...


Эта схема стала лучше. Когда мы говорили о РБД, мы говорили о аномалиях обновления. Здесь же мы просто вытаскиваем сущности.


Очень важные три вещи:

  1. наследование. Подтипы и супертипы. Механизм наследования вообще важен. Важно определять новые типы.

  2. Взаимоисключающие связи. Несколько связей, но может существовать только одна

  3. Уточняемые степени связи.


Уточняемые степени.

Сейчас мы можем сказать:

  1. Существует точно одна связь

  2. Существует 0 или одна связь


Пример (аналог) – регэкспы в никсах. * и +. Ноь иногда хочется сказать более точно.


В Китае было нельзя иметь больше 2 детей. Родили третьего – родителей в тюрьму, детей в детдом. Хотелось бы иметь средства, которые позволяют это указывать. Для этого рядом с концом связи пишется необх. Степень связи. Чем блоьше подробностей накручиваем на степень связи, тем сложнее ограничения целостности.


Не исключено, что в след четверг контрольной не будет.

10 лекции не будет, ибо защита диссертации.

Придётся контрольную сдвинуть на одну неделю.

Личные инструменты
Разделы