ПБД (9) - Лекция №2 - Модели данных: различия между версиями

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


==== Коллекции ====
==== Коллекции ====
<sourse lang=cpp>
 
set <тип> - множество
<source lang=cpp>
bag<тип> - мультимножество
    set <тип> - множество
array<тип, количество>
    bag<тип> - мультимножество
dictionary <тип (ключ), тип (значение)>
    array<тип, количество>
    dictionary <тип (ключ), тип (значение)>
</source>
</source>



Версия от 12:24, 2 ноября 2016

Модели данных

  • концептуальные
    • ER - сущность-связь
  • физические
    • реляционная;
    • объектная;
    • объектно-реляционная - отношение, содержащие дополнительные возможности;
    • полуструктурированных данных - и сами данные, и структуры, и сведения о них.

Entity-Relationship

Она же ER - модель "сущность-связь".

Нотации

Системы текстовых или иных обозначений, позволяющие описывать модель.

Мартина

IDEF/X

Бартера

Чена

Связи:

  • 1-1, один к одному;
  • 1-М, один ко многим;
  • М-1, многие к одному;
  • М-М, многие ко многим.

ISA-связи - базовая и производная сущности. Производная наследует атрибуты и ключ базовой.

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

Пример:

Сущности:

  • Актёр (ИНН, ФИО, Образование);
  • Фильм (Название, Год, Длительность, Название студии);
  • Студия (Название студии, адрес);
  • Актёр-фильм (ИНН, Название, Год).

Три варианта преобразования ISA:

  • сущность преобразовывается в отношение, содержащее атрибуты самой себя и ключи базовой;
  • объектно-ориентированный подход: для каждой возможной информационной сущности создаётся собственное отношение со всеми необходимыми атрибутами.
    Плюс: нет дублирования, оптимизация объёма хранения.
    Минус: слишком много отношений;
  • нулевые отношения (null): одно отношение со всеми возможными атрибутами. То есть, если где-то какие-то атрибуты не требуются, то они заполняются null значениями.

Преобразование ER-модели в реляционную

  • Множество сущностей $$\rightarrow$$ отношение;
  • ключ $$\rightarrow$$ ключ;
  • связь 1-М $$\rightarrow$$ к сущности на стороне М добавляется внешний ключ, указывающий на первичный ключ сущности на стороне 1;
  • связь М-М $$\rightarrow$$ создается дополнительное отношение, содержащее ключи связанных таблиц;
  • слабая сущность $$\rightarrow$$ отношение с атрибутами слабой сущности плюс ключи поддерживающих сущностей. Например:
    Кафедра( Название кафедры, Название ВУЗа, заведующий кафедрой)

Объектная модель

Уникальный идентификатор объекта - OID. У объектов поддерживаются методы. Есть наследование, инкапсуляция и полиморфизм. Можно создавать собственные типы данных, составные типы (структуры, коллекции, ссылки). Разделение на интерфейс и реализацию.

Объекты - некоторая переменная, может изменять значение, характеризуется своим OID.

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

Объектная модель состоит из:

  • ODL (язык определения объектов) - для описания БД;
  • OML (язык манипулирования данными) - для работы с объектами, расширение для стандартного языка;
  • OQL (язык объектных запросов) - основан на SQL, имеет расширение.

Возможности описания объектных БД

Классы

ODL позволяет описывать классы - объектные типы.

class название
[extends базовый класс : интерфейсы]
(extent название key ключи)
{
	атрибуты
	методы
	связи
};
class Actor
(extent EA)
{
    attribute struct {string f, string i, string o} fio;
    attribute string edu;
    attribute integer inn;
    relationship set<Film> films inverse Film::actors
};

class Film
(extent EF key(title, year)) //составной ключ
{
    attribute string title;
    attribute integer year;
    attribute enum {col, bw, sl} type;
    attribute integer len;
    relationship set <Actor> actors inverse Actor::films;
    relationship Studio stud inverse Studio::films;
}; 

class Studio
(extent ES key name, mgn) //альтернативный ключ
{
    attribute string name;
    attribute addr;
    relationship set<Film> films inverse Film::stud
    integer mgn();
    integer filmscnt(integer year) raises (noFilm, noyear);
};

Интерфейсы

Интерфейс - аналог класса, который не имеет реализации и объектов.

interface название
[extends интерфейс1 : интерфейс2]
{
	атрибуты
	методы
	связи
};

Атрибуты

attribute тип название

Коллекции

    set <тип> - множество
    bag<тип> - мультимножество
    array<тип, количество>
    dictionary <тип (ключ), тип (значение)>

Методы

Связи