Часто целью программных проектов является расширяемость. Хотелось бы разрабатывать программное обеспечение, которое могло бы плавно адаптироваться к будущим потребностям с минимальным перепрограммированием или вовсе без дополнительных трудозатрат.
Проблема не нова. Различные доводы против недостаточной гибкости метаданных реляционных баз выдвигались постоянно с 1970 года, когда реляционная модель была впервые предложена Е. Ф. Коддом (Е. F. Codd) в работе «А Relational Model of Data for Large Shared Data Banks* [4].
Обычная таблица состоит из столбцов атрибутов, которые содержат значения для каждой строки в таблице, так как все строки представляют экземпляры сходных объектов. Разные наборы атрибутов представляют разные типы объекта, так что они принадлежат разным таблицам.
Тем не менее в современных объектноориентированных моделях программирования разные типы объектов могут быть связаны друг с другом, например, путем расширения одного и того же базового типа. В объектноориен-тированном проектировании эти объекты считаются экземплярами одного базового типа, а также экземплярами их соответствующих подтипов. Желательно было бы хранить объекты в виде строк в одной таблице базы данных, чтобы упростить сравнения и расчеты по нескольким объектам. Но желательно также предоставить объектам каждого подтипа возможность хранения их соответствующих столбцов атрибутов, которые могут не действовать в отношении базового типа или других подтипов.
Давайте воспользуемся примером из нашей базы данных ошибок. На рис. 6.1 можно заметить, что у Bug и Feature Request некоторые атрибуты являются общими, отображаемыми в базовом типе issue. Каждая проблема связана с лицом, сообщившим о ней. Проблема также связана с продуктом, и она обладает приоритетом расширения. Однако у Bug есть некоторые индивидуальные атрибуты: версия продукта, в котором возникла ошибка, уровень серьезности или степень воздействия ошибки. Подобным образом, у FeatureRequest также могут быть свои собственные атрибуты. Для данного примера предположим, что функция связана со спонсором, из бюджета которого поддерживается разработка этой функции.
Опубликовал vovan666
June 18 2013 12:26:17 ·
0 Комментариев ·
3229 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.