Лекция№12 Объектно-ориентированная модель баз данных.
Объектно-ориентированная модель баз данных. Вклад объектно-ориентированного программирования в развитие объектно-ориентированных баз данных. Общий объектно-ориентированный язык управления базами данных. Определение данных. Языки программирования объектно-ориентированных баз данных
Основные концепции объектно-ориентированного подхода
Сложные специализированные приложения баз данных включают CAD-системы автоматизированного проектирования, CAM-системы автоматизированного производства, CASE-системы автоматизированной разработки программного обеспечения, офисные информационные системы (OSI), цифровые издательские и геоинформационные системы (GIS), а также приложения со сложными и взаимосвязанными объектами и процедурными данными. Ограниченные возможности реляционных СУБД с точки зрения моделирования объектов реального мира сделали их непригодными для сложных специализированных приложений баз данных.
Абстракция/ инкапсуляция и сокрытие информации
Абстракция — это процесс идентификации наиболее важных аспектов сущности и игнорирование всех остальных ее малозначащих свойств. В контексте создания программного обеспечения это означает концентрацию внимания на том, что представляет собой объект и что он может делать еще до выбора метода его реализации.
Двумя основными аспектами абстракции являются инкапсуляция и сокрытие информации.
Понятие инкапсуляции означает, что объект содержит как структуру данных, так и набор операций, с помощью которых этой структурой можно манипулировать. Концепция сокрытие информации означает, что все внешние аспекты объекта отделяются от подробностей его внутреннего устройства, скрытых от внешнего мира. Таким образом, внутренние детали строения объекта могут быть изменены без какого-либо влияния на приложения, в которых он используется, при условии, что внешние детали остаются теми же. Это позволяет исключить излишнюю зависимость приложений от структуры данных, когда небольшое изменение способа представления информации способно породить значительные изменения во многих частях приложения. Иначе говоря, сокрытие информации обеспечивает независимость от данных.
Названные концепции упрощают создание и сопровождение приложений за счет модуляризации. Объект представляет собой "черный ящик", который может быть создан и изменен независимо от остальной системы при условии, что остается неизменным его открытый интерфейс.
Существуют два представления об инкапсуляции: представление объектно-ориентированного языка программирования (ООЯП) и адаптация этого представления для нужд баз данных. В некоторых ООЯП инкапсуляция достигается за счет использования абстрактных типов данных (ADT). В этом представлении объект состоит из интерфейса и реализации. Интерфейс предоставляет спецификацию операций, которые могут быть выполнены с объектом; а реализация состоит из структуры данных для ADT и функций, которые реализуют этот интерфейс. Для других объектов и пользователей доступен только интерфейс. В представлении базы данных должная инкапсуляция достигается благодаря тому, что программисты обладают правом доступа только к интерфейсу. Таким образом, инкапсуляция обеспечивает логическую независимость от данных: внутреннюю реализацию ADT можно изменять, не затрагивая приложения, которые используют этот ADT.
Объекты и атрибуты
Объект - Уникально идентифицируемая сущность, которая содержит атрибуты, описывающие состояние объектов "реального мира", и связанные с ними действия.
Это определение объекта аналогично определению сущности, данного ранее. Однако объект инкапсулирует состояние и поведение, а сущность моделирует только состояние.
Текущее состояние объекта описывается одним или несколькими атрибутами, или переменными экземпляра. Атрибуты могут быть простыми и составными. Простой атрибут может иметь примитивный тип (например, целое число, строка, действительное число и т.д.) и принимать литеральное значение. Составной атрибут может содержать коллекции и/или ссылки. Ссылочный атрибут представляет связь между объектами. Он содержит значение (или коллекцию значений), которое также является объектом. Ссылочный атрибут концептуально аналогичен внешнему ключу в реляционной модели данных или указателю в языках программирования. Объект, который содержит один или несколько составных атрибутов, называется составным объектом.
Идентификация объектов
Ключевой частью определения объекта является уникальность его идентификации. В объектно-ориентированной системе каждому объекту в момент его создания присваивается идентификатор объекта (ОID), который обладает следующими свойствами:
-
генерируется системой;
-
уникально обозначает этот объект;
-
инвариантен в том смысле, что его нельзя изменить во время жизненного цикла программы — после создания объекта его ОШ-идентификатор не может быть использован повторно ни для какого другого объекта, даже после удаления данного объекта;
-
не зависит от значений его атрибутов (т.е. от его текущего состояния, два объекта могут иметь одинаковое состояние, но всегда обладают разными ОID -идентификаторами);
-
скрыт от пользователя (в идеале).
Таким образом, идентичность гарантируется тем, что объект всегда можно единственным образом идентифицировать, что автоматически гарантирует целостность сущностей. Объекты могут использоваться совместно, а их OID-идентификаторы могут применяться для поддержания в системе ссылочной целостности.
Перечислим некоторые преимущества использования OID -идентификаторов в качестве идентификаторов объектов.
Эффективность. Для хранения OID-идентификаторов внутри составного объекта требуется очень мало места.
Быстрота. OID -идентификатор указывает на фактический адрес или место внутри таблицы, в котором находится адрес данного объекта. Это значит, что объекты могут быть быстро обнаружены, независимо от места их текущего хранения: в оперативной памяти или на жестком диске,
Невозможность изменения пользователем. Если OID-идентификаторы генерируются системой и скрыты от пользователей, или, доступны только для чтения, то в такой системе проще гарантируется целостность сущностей и связей, что позволяет пользователю не заботиться о поддержании целостности данных.
Независимость от содержания данных. OID-идентификаторы никак не зависят от данных, которые содержатся в данном объекте. Это позволяет изменять значение каждого атрибута объекта, но при этом данный объект остается тем же объектом с прежним OID-идентификатором.