С нашей точки зрения, такой
С нашей точки зрения, такой подход имеет ряд недостатков. Присутствие одного класса предполагает наличие фиксированного набора атрибутов, т.е. каждый атомарный литеральный тип описывается определённым количеством параметров. Поэтому заранее необходимо выделить максимальное число атрибутов, часть из которых для определённых типов данных не будет иметь смысла. Для типа String, представляющего символьную строку, достаточно указать лишь длину (количество символов), а для типа Numeric, позволяющего сохранять дробные числа, потребуется указать уже два свойства: первое - для определения максимального количества символов в числе, а второе - для определения точности значения (количества символов после запятой). Для занесения информации об этих типах данных в классе d_Primitive_Type потребуется объявить оба свойства. При этом для типа String второе свойство избыточно и его значение не анализируется. В модели ODMG для определения встроенных атомарных литеральных типов выделено перечисление d_TypeId, которое содержит список зарезервированных констант. Этот список не может модифицироваться с целью отражения потребностей конкретного приложения. То есть недопустимо добавление новых литеральных типов. Тем не менее, имеется возможность создать псевдонимы типов, для представления которых выделен класс d_Alias_Type. Кроме того, в d_Primitive_Type отсутствует атрибут, предназначенный для сохранения информации о базовом классе примитивного типа. Т.е. атомарные литеральные типы в стандарте ODMG не организованы в иерархию.
Перейдём к рассмотрению языка SQL. На рис. 2 представлен фрагмент онтологии типов данных, реализующих объектные расширения языка SQL:2003 .
Рис. 2. Тип данных, используемый для представления атомарных литералов в SQL:2003
На рис. 2 видно, что для представления атомарных литеральных типов, которые в стандарте называются предопределёнными, выделен единственный класс Predefined. Т.е. стандарту SQL:2003 присущи недостатки, описанные в отношении представления литеральных типов в метамодели ODMG 3.0.
Содержание Назад Вперед