Глава 18. Моделирование данных с помощью Data Modeler

Содержание

18.1. Разработка информационных систем
18.1.1. Абстракции
18.1.2. Свойства и компоненты информационных систем
18.1.3. Жизненный цикл
18.1.4. Анализ
18.1.5. Проектирование
18.1.6. Реализация
18.1.7. Зачем нужны CASE-средства
18.1.8. Классификация CASE-средств
18.2. Правила реляционной модели
18.2.1. Правила Кодда
18.2.2. Одни таблицы
18.2.3. Независимость
18.2.4. Язык высокого уровня
18.2.5. Реляционные операции
18.2.6. Представления
18.2.7. Null
18.2.8. Целостность
18.3. Технология ORACLE
18.3.1. От моделирования данных до приложений
18.3.2. Установка JDK
18.3.3. Установка JDK (Linux)
18.3.4. Установка Oracle SQL Developer Data Modeler
18.3.5. Установка Oracle SQL Developer Data Modeler (Linux)
18.3.6. Установка Oracle SQL Developer
18.3.7. Установка Oracle SQL Developer (Linux)
18.3.8. Установка Oracle 10g XE
18.4. Логическая модель данных
18.4.1. Описание базы данных
18.4.2. Сущность
18.4.3. Определение сущностей
18.4.4. Связь
18.4.5. Определение связей
18.4.6. Определение доменов
18.4.7. Атрибут
18.4.8. Определение первичных ключей
18.4.9. Нотация Баркера
18.4.10. Нотация Бахмана
18.4.11. Настройки
18.4.12. Замена связей многие ко-многим
18.5. Нормализация
18.5.1. Нормализация
18.5.2. Первая нормальная форма
18.5.3. Вторая нормальная форма
18.5.4. Третья нормальная форма
18.5.5. Общие проблемы
18.5.6. Повторяющиеся группы данных
18.5.7. Многократное использование атрибута
18.5.8. Множественное местонахождение одного и того же факта
18.5.9. Конфликтующие факты
18.5.10. Производные атрибуты
18.5.11. Приведение к 1НФ
18.5.12. Приведение к 2НФ
18.5.13. Приведение к 3НФ
18.5.14. Проверка
18.6. Реляционная модель
18.6.1. Представление супертипов и подтипов сущности
18.6.2. Замена имен
18.6.3. Генерация
18.6.4. Проверка
18.7. Физическая модель
18.7.1. Генарация DDL
18.7.2. Запуск СУБД
18.7.3. Генерация БД
18.7.4. Загрузка данных

В главе использована работа [MIND02].

18.1. Разработка информационных систем

Ель растет перед дворцом,

А под ней хрустальный дом;

Белка там живет ручная,

Да затейница какая!

Белка песенки поет

Да орешки все грызет,

А орешки не простые,

Все скорлупки золотые,

Ядра – чистый изумруд...

А. С. Пушкин. Сказка о царе Салтане

18.1.1. Абстракции

Разработка информационной системы обязательно включает создание различных моделей. Что такое модель? В широком смысле, модель – есть результат корректного воспроизведения каким-либо способом или средствами различных объектов (в том числе процессов и явлений реального мира или мыслительной деятельности человека). Модели являются, с одной стороны, продуктом изучения свойств соответствующих объектов, с другой, служат инструментом для углубления знаний о них, а также решений прикладных задач.

Модель теснейшим образом связана с абстракцией. Абстракция – означает буквально отвлечение, то есть исключение из рассмотрения чего-то. И всякая модель – это абстракция, то есть отвлечение от тех явлений реального или идеального мира, которые нас в данный момент не интересуют.

Но среди разработчиков информационных систем нередко практикуется «технологически конструктивистский» подход к своей деятельности. Люди увлекаются чисто техническими решениями типа «как получить такой-то эффект в новой версии», «как соединить одно с другим» и т. п. Разработка информационной системы при таком  подходе часто видится как подбор комбинации и организация взаимодействия технологических решений, предоставляющих возможность выполнения требуемой задачи. Однако, нужно помнить, что, кроме технической конкретики, не менее важны абстракции [DM1].

В пользу научных абстракций можно вспомнить, что информатика (computer science) объединяет в себе три составляющие: науку, технологию и практику. Поэтому при работе в компьютерной области отрешение хотя бы одной из этих составляющую нежелательно. В базах данных это утверждение отражается в двойственной природе СУБД: с одной стороны СУБД – сложно устроенный и насыщенный технологическими решениями инженерный продукт, а с другой стороны – инструмент моделирования прикладной области. Без качеств СУБД именно как инструмента моделирования о них можно забыть.

Перечислим некоторые виды абстракций, которые в той или иной степени, явно или неявно, но обязательно присутствуют в разработке конкретной информационной системы: математическая модель, реляционная модель, модель данных SQL, модель сущность-связь, объектная модель.

Понимание абстракций – есть предпосылка грамотной разработки информационных систем.

18.1.2. Свойства и компоненты информационных систем

Мы определили модель как один из инструментов, используемый в создании информационных систем. А что такое информационная система?

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

Однако сразу же на появление компьютеров обратили внимание бизнесмены. Как правило, в гражданском бизнесе не требуются большие расчеты. Основной проблемой в нем являются объемы информации, которые необходимо собирать, надежно хранить и оперативно обрабатывать. Появление информационных систем, основным назначением которых было решение этой проблемы, было ответом компьютерной индустрии на требование мира бизнеса[DM6].

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

Области применения информационных приложений разнообразны: страхование, транспорт, образование и т. д. Трудно найти область деловой активности, в которой сегодня можно было бы обойтись без использования информационных систем. И конечно, в зависимости от конкретной области применения информационные системы очень сильно различаются по своим функциям, архитектуре, реализации.

Но можно выделить два свойства, которые являются общими для всех информационных систем:

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

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

Для функционирования ИС необходимы следующие основные компоненты:

  1. база данных;

  2. схема базы данных;

  3. система управления базой данных;

  4. приложения;

  5. пользователи,

  6. технические средства.

Рассмотрим кратко каждый из этих компонентов. Начнем с базы данных. Существует немало ее определений. Вот нестрогое определение БД, которое  Дейт (С. J. Date), один из известных экспертов в области баз данных, дает в начале своего учебного курса: «Базу данных можно рассматривать как подобие электронной картотеки, то есть хранилище для некоторого набора занесенных в компьютер файлов данных» [DATE6].

Тогда получается, что база данных – это просто колоссальный набор данных? Да, многие люди так и думают. Но файл может содержать довольно большое количество данных и не быть базой данных. Важным свойством БД является то, что база данных может себя описать. Можно сказать, что БД обязательно содержит – данные и метаданные. Данные – это данные пользователя или предприятия, использующего систему, и связанные с его деятельностью. Например, данные о продукции, счетах, коровах. Метаданные – это данные о данных или схема базы данных, которая описывает структуру обычных данных и дает о них фундаментальную информацию. Обычно мы  не видим эту схему, потому что она спрятана от нас программными средствами.

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

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

Конечные пользователи (например, менеджер) – работают с информационной системой непосредственно через рабочую станцию или терминал. Пользователь получает доступ к БД, используя одно из приложений.

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

Техническим специалистом, ответственным за реализацию решений администратора данных, является администратор БД.  Его работа заключается в создании самой БД и техническом контроле, необходимом для осуществления решений администратора данных.

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

СУБД важный, но не единственный компонент программного обеспечения ИС. Среди других – упомянутые выше бизнес-приложения, утилиты, CASE-средства, генераторы отчетов и форм и т.д.

Технические средства информационных систем могут включать:

  1. средства вычислительной техники (серверное оборудование, рабочие станции, принтеры и т.д.);

  2. локальные вычислительные сети;

  3. копировально-множительную аппаратуру;

  4. средства связи (учрежденческие АТС, каналы связи и канальное оборудование, телефоны, факсимильные аппараты, мобильные средства связи).

18.1.3. Жизненный цикл

Одним из базовых понятий методологии разработки ИС является понятие жизненного цикла ее программного обеспечения (ЖЦ ПО).

Жизненный цикл программного обеспечения – это непрерывный процесс, который начинается с момента принятия решения о необходимости его создания и заканчивается в момент его полного изъятия из эксплуатации.

Основным нормативным документом, регламентирующим ЖЦ ПО, является международный стандарт ISO/IЕС 12207. Стандарт определяет структуру ЖЦ, содержащую процессы, действия и задачи, которые должны быть выполнены во время создания ПО.

Структура ЖЦ ПО по стандарту ISO/IЕС  12207 базируется на трех группах процессов:

  1. основные процессы: приобретение, поставка, разработка, эксплуатация, сопровождение;

  2. вспомогательные процессы, обеспечивающие выполнение основных процессов: документирование, управление конфигурацией, обеспечение качества, верификация, аттестация, оценка, аудит, решение проблем;

  3. организационные процессы: управление проектами, создание инфраструктуры проекта, определение, оценка и улучшение самого ЖЦ, обучение.

Рассмотрим кратко некоторые из этих процессов [DM2].

Разработка – включает в себя все работы по созданию ПО в соответствии с заданными требованиями, включая оформление проектной и эксплуатационной документации, подготовку материалов, необходимых для проверки работоспособности и соответствующего качества программных продуктов, материалов, необходимых для организации обучения персонала.

Разработка ПО включает в себя, как правило:

  1. анализ;

  2. проектирование;

  3. реализацию (программирование).

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

Обеспечение качества проекта – связано с проблемами верификации, проверки и тестирования ПО.

Верификация – это процесс определения того, отвечает ли текущее состояние разработки, достигнутое на данном этапе, требованиям  этого этапа. Проверка позволяет оценить соответствие параметров разработки исходным требованиям. Проверка частично совпадает с тестированием, которое связано с определением различий между действительными и ожидаемыми результатами и оценкой соответствия характеристик ПО исходным требованиям.

Управление проектом – связано с вопросами планирования и организации работ, создания коллективов разработчиков и контроля за сроками и качеством выполняемых работ.

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

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

18.1.4. Анализ

Анализ является составной частью разработки информационной системы. Анализ – это подробное исследование бизнес-процессов (функций) и информации, необходимой для выполнения этих функций (сущностей с их атрибутами и связями). Моделирование является основным приемом анализа. Поэтому методы моделирования считаются частью анализа [DM3].

Аналитики собирают и фиксируют информацию в двух разных, но взаимосвязанных формах. Это:

  1. функции – информация о событиях и процессах, которые происходят в бизнесе;

  2. сущности – информация о «вещах, имеющих значение для предприятия, о которых что-то известно».

Вот два вида классических результатов анализа:

  1. иерархия функций, которая разбивает процесс обработки на функции;

  2. модель сущность-связь, охватывающая все сущности, их атрибуты и связи между ними.

18.1.5. Проектирование

Проектирование выполняется на основе данных анализа и охватывает три основные области:

  1. Проектирование схемы базы данных – на основании модели, разработанной на этапе анализа. Схема содержит описание конкретных таблиц, представлений, индексов, ограничений, триггеров, которые будут реализованы в базе данных.

  2. Проектирование конкретных экранных форм, отчетов и программ, которые будут сопровождать данные в БД и обеспечивать выполнение запросов к этим данным.

  3. При определенных обстоятельствах в процессе проектирования необходимо учитывать конкретную среду или технологию – топологию сети, конфигурацию аппаратных средств, использование архитектуры клиент-сервер или параллельной обработки, или распределенной архитектуры БД.

Можно сказать, что проектирование – это поиск удовлетворения функциональных требований средствами имеющейся технологии с учетом заданных ограничений [8]. Какие это ограничения? Это может  быть максимальное время, отпущенное на проект или максимальное количество денег, которое может быть на него потрачено.

18.1.6. Реализация

По завершении исходного проектирования следует этап реализации, на котором создаются и тестируются программные модули, определенные при проектировании. Главными результатами этого этапа являются модули исходного кода и объектные модули. После реализации переходят к тестированию системы, а затем к сдаче ее в эксплуатацию[DM7].

Важно понимать, что вплоть до запуска ИС в эксплуатацию вам придется постоянно возвращаться к этапам проектирования и анализа.

18.1.7. Зачем нужны CASE-средства

Использованы материалы [DM2].

Тенденции развития современных информационных технологий приводят к постоянному возрастанию сложности информационных систем, создаваемых в различных областях бизнеса.

Для успешной реализации проекта объект разработки должен быть прежде всего адекватно описан, должны быть построены полные и непротиворечивые модели ИС. Накопленный к настоящему времени опыт разработки ИС показывает, что это логически сложная, трудоемкая и длительная по времени работа, требующая высокой квалификации участвующих в ней специалистов. Раньше разработка ИС выполнялась в основном на интуитивном уровне с применением ненормализованных методов, основанных на искусстве, практическом опыте, экспертных оценках и дорогостоящих экспериментальных проверках качества функционирования ИС. Кроме того, в процессе создания и функционирования ИС информационные потребности пользователей могут изменяться или уточнятся, что еще более усложняет разработку и сопровождение таких систем.

В 70- и 80-х годах XX в. при разработке ИС достаточно широко применялась структурная методология, предоставляющая в распоряжение разработчиков строгие формализованные методы описания ИС и принимаемых технических решений. Она основана на наглядной графической технике: для описания различного рода моделей ИС используются схемы и диаграммы. Наглядность и строгость средств структурного анализа позволяла разработчикам и будущим пользователям (менеджеры, бухгалтеры) с самого начала неформально участвовать в ее создании, обсуждать и закреплять понимание основных технических решений.

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

Ручная разработка обычно порождала следующие проблемы:

  1. неадекватная спецификация требований;

  2. неспособность обнаруживать ошибки в проектных решениях;

  3. низкое качество документации, снижающее эксплуатационные

качества;

  1. затяжной цикл и неудовлетворительные результаты тестирования [2].

Перечисленные факторы способствовали появлению программнотехнологических средств специального класса – CASE-средств, реализующих CASE-технологию создания и сопровождения информационных систем.

Термин CASE (computer aided software engineering) используется в настоящее время в весьма широком смысле. Первоначальное значение термина CASE, ограниченное вопросами автоматизации разработки только лишь программного обеспечения, в настоящее время приобрело новый смысл, охватывающий процесс разработки сложных ИС в целом. Теперь под термином CASE-средства понимаются программные средства, поддерживающие процессы создания и сопровождения ИС, включая анализ и формулировку требований, проектирование прикладного ПО (приложений) и баз данных, генерацию кода, тестирование, документирование, обеспечение качества, конфигурационное управление и управление проектом, а также другие процессы.

CASE-средства вместе с системным ПО и техническими средствами образуют полную среду разработки ИС.

18.1.8. Классификация CASE-средств

Использованы материалы [DM2].

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

Наиболее трудоемкими этапами разработки ИС являются этапы анализа и проектирования, в процессе которых САSЕ-средства обеспечивают качество принимаемых технических решений и подготовку проектной документации. При этом большую роль играют методы визуального представления информации. Это предполагает построение структурных или иных диаграмм в реальном масштабе времени, использование многообразной цветовой палитры, сквозную проверку синтаксических правил. Графические средства моделирования предметной области позволяют разработчикам в наглядном виде изучать существующую ИС, перестраивать ее в соответствии с поставленными целями и имеющимися ограничениями.

В разряд CASE-средств попадают как относительно дешевые системы для персональных компьютеров с весьма ограниченными возможностями, так и дорогостоящие системы для неоднородных вычислительных платформ и операционных сред.

Обычно к CASE-средствам относят любое программное средство, автоматизирующее ту или иную совокупность процессов жизненного цикла ПО и обладающее следующими основными характерными особенностями:

  1. мощные графические средства для описания и документирования ИС, обеспечивающие удобный интерфейс с разработчиком и развивающие его творческие возможности;

  2. интеграция отдельных компонент CASE-средств, обеспечивающая управляемость процессом разработки ИС;

  3. использование специальным образом организованного хранилища проектных метаданных (репозитория).

Классификация CASE-средств по типам отражает их функциональную ориентацию на те или иные процессы ЖЦ и включает:

  1. средства анализа, предназначенные для построения и анализа моделей предметной области (Bpwin, Ramus, ArgoUML, Oracle SQL Developer Data Modeler, Dia);

  2. средства анализа и проектирования, поддерживающие наиболее распространенные методологии проектирования и использующиеся для создания проектных спецификаций (Oracle Designer, ARIS, IBM Rational). Выходом таких средств являются спецификации компонентов и интерфейсов системы, архитектуры системы, алгоритмов и структур данных;

  3. средства проектирования баз данных, обеспечивающие моделирование данных и генерацию схем баз данных (как правило, на языке SQL) для наиболее распространенных СУБД. К ним относятся ERwin, MySQL Workbench, Oracle SQL Developer Data Modeler.

  4. средства разработки приложений. К ним относятся средства JDeveloper, Delphi, Lazarus, Eclipse, NetBeans, Microsoft Visual Studio, Oracle Application Express.

  5. средства реинжениринга, обеспечивающие анализ программных кодов и схем баз данных и формирование на их основе различных моделей и проектных спецификаций.