Диго С.М. Базы данных проектирование и использование (1084447), страница 26
Текст из файла (страница 26)
Вариант 2
ФИО | Предмет | Оценка |
Иванов | Высш. мат | 5 |
Якушкина | Высш. мат | 4 |
Иванов | Ин. яз. | 4 |
Якушкина | Ин. яз | 5 |
… | … | … |
Если будет выбран вариант 1, то при каждом изменении в учебном плане необходимо менять структуру базы данных. Во втором случае никакие изменения структуры БД не потребуются. Более того, при создании БД по варианту 2 вообще не нужно знать действующие учебные планы. Решение будет универсальным и может использоваться в любом учебном заведении без необходимости «подстройки» на конкретное учебное заведение. Кстати, универсальность также может использоваться как критерий оценки БД.
Приведем другой пример, показывающий влияние выбранного типа данных на устойчивость спроектированной БД. Предположим, что в предметной области для кодирования какой-либо номенклатуры используется цифровой код и в базе данных для соответствующего поля был выбран числовой тип данных. Если возникнет необходимость перейти на буквенную или буквенно-числовую систему кодирования, то в БД придется менять тип данных у соответствующего поля. Если бы тип данных при проектировании БД изначально был определен как текстовой, то изменения бы не потребовались.
С рассматриваемым критерием будет тесно связан критерий затрат на поддержание системы в работоспособном состоянии. С затратами на адаптацию структуры БД будут непосредственно связаны и затраты на адаптацию прикладного программного обеспечения.
3.1.2. Простота и эффективность внесения изменений. Речь может идти как об изменении структуры базы данных в случае возникновения такой необходимости, так и об обычной корректировке значений данных в базе данных.
3.1.2.1. Простота корректировки структуры БД данных. Например, некоторые типы полей трудно преобразовать в другие. Особенно внимательными нужно быть при определении полей связей, так как их изменение повлечет за собой целую цепочку изменений.
3.1.2.2. Простота и трудоемкость корректировки значений данных. Прежде всего следует обратить внимание на аномалии, возникающие при корректировке ненормализованных структур.
Одним из показателей простоты корректировки может быть число изменений, которые необходимо провести при наступлении одного события в предметной области.
Например, предположим, что имеется база данных, содержащая сведения о сотрудниках учебного заведения, и в ней фиксируются некоторые биографические и прочие справочные данные, а также информация о том, какие учебные предметы может вести каждый преподаватель. Преподаватель может владеть несколькими предметами. Сравним следующие три проектных решения:
Проектное решение 1:
Ф1(ФИО, дата_рождения, пол, ...., телефон, название_предмета).
Проектное решение 2:
Ф1(ФИО, дата_рождения, пол, ....,);
Ф2 (ФИО, название_предмета).
Проектное решение 3:
Ф1(код_сотрудника, ФИО, дата_рождения, пол, ...., );
Ф2 (код_сотрудника, название_предмета).
Следует сразу отметить, что варианты 1 и 2 являются неудовлетворительными и использованы только для иллюстрации недостатков, связанных с подобными решениями.
В первом случае имеем таблицу, находящуюся в первой нормальной форме (1НФ). Если преподаватель владеет несколькими предметами, то в таблице Ф1 ему будет соответствовать несколько строк.
Смена фамилии каким-либо сотрудником приведет в варианте 1 к корректировке стольких записей, сколько предметов ведет данный преподаватель, в варианте 2 - еще на одну запись больше, а в варианте 3 - к корректировке только одного значения. Изменение же номера телефона приведет в варианте 1 также к корректировке стольких записей, сколько предметов ведет данный преподаватель, а в вариантах 2 и 3 - к корректировке только одной записи.
Проектное решение 1 - ненормализованная структура. Она плоха тем, что приводит к большому дублированию информации. Варианты 1 и 2 - оба представляют нормализованную структуру и отличаются тем, что в последнем варианте введен искусственный идентификатор. Именно вариант 3 является наиболее предпочтительным.
Если «вдруг» (вообще-то этого лучше не делать) в базе данных в качестве поля связи определено поле, которое может менять свое значение, то следует обратить внимание на возможность автоматической корректировки связанных полей при соответствующем задании правил обеспечения ограничений целостности связи.
3.2. Адаптация к изменениям информационных потребностей пользователей, возможность удовлетворения нерегламентированных запросов. Например, если хранить в БД детальные данные, то любые производные данные можно получить при возникновении необходимости в них; если же хранить только какие-либо сводные данные, но не хранить исходные, то получить информацию, отличную от хранимой, в большинстве случаев нельзя.
3.3. Адаптация к изменениям используемых программных и технических средств. Основным способом обеспечения этого требования является соблюдение стандартов, а также, по возможности, использование при выборе проектного решения таких средств, которые являются широко распространенными, а не специфическими для конкретной системы. Так, например, использование экзотических типов полей скорее всего приведет к проблемам при переносе системы в другую среду или при обработке информации в гетерогенной среде.
Одним из проявлений рассматриваемого свойства является масштабируемость. Ведущие разработчики программных продуктов уделяют большое внимание обеспечению этих свойств.
4. Универсальность. Может быть обеспечена разными способами, например реализацией возможности настройки системы на особенности предметной области, определенными приемами при проектировании структуры БД и программного обеспечения. Особое значение приобретает при создании отчуждаемых проектов, ориентированных на конечных пользователей, не являющихся специалистами по машинной обработке данных.
5. Сложность структуры БД. Речь может идти как о сложности самой поддерживаемой в данной СУБД модели данных, так и о сложности логической структуры конкретной спроектированной БД.
Сложность модели будет определяться числом разнообразных информационных единиц, допустимых в ней, способами их соподчинения и связывания, накладываемыми ограничениями. Самыми простыми из структурированных моделей БД являются реляционные.
Естественно, что показатели сложности спроектированной БД будут зависеть от типа поддерживаемой модели БД. Сравнение по этому показателю баз данных, спроектированных в среде разных СУБД, будет иметь свою специфику. Для реляционной модели сложность будет характеризоваться числом таблиц и полей в БД, числом индексных файлов (индексов). В принципе, чем меньше сложность БД, тем лучше. Однако снижение сложности наряду с положительными результатами часто приводит ко многим отрицательным последствиям. Так, для реляционных систем самой «простой» БД будет одно универсальное отношение, но к каким последствиям приведет использование такого проектного решения, хорошо известно из теории нормализации.
Критерий «сложность» никогда не рассматривается как самостоятельный.
6. Степень дублирования данных в БД. Различают необходимое, контролируемое и неконтролируемое дублирование. Но какими бы причинами ни было вызвано дублирование данных, оно всегда ведет к необходимости поддержки идентичности всех копий дублируемых значений, росту требуемого объема памяти, повышению трудоемкости корректировки, увеличению числа полей в БД, что повышает ее сложность.
7. Сложность последующей обработки. Оценить этот показатель достаточно трудно, поскольку его значение зависит как от предполагаемой обработки, так и от возможностей языка манипулирования данными конкретной СУБД. Тем не менее для большинства СУБД справедливыми являются следующие утверждения:
-
легче обрабатывать один файл, чем несколько связанных файлов;
-
легче объединить несколько полей, чем выделить отдельные составляющие из единого поля (например, из «Адреса» - страну, город и т.п., из «ФИО» - фамилию, имя, отчество и т.п.). Если, например, в каких-либо выходных документах необходимо вывести фамилию и инициалы, то в случае раздельного хранения полей это можно легко сделать, например, просто изменив шаблон вывода для полей «имя» и «отчество» на (X.)). Однако хранение каждого элемента составной единицы информации (СЕИ) в виде отдельных полей имеет и очевидные недостатки: база данных становится сложнее, затрачивается больше времени при создании файла на описание его структуры, увеличивается объем служебной информации и объем памяти, требуемой для хранения данных;
-
обработка «неэлементарных» полей в реляционных системах всегда представляет сложность (это вызвано тем, что с точки зрения СУБД поле остается элементарной единицей). Например, если в БД «Кадры» включено поле «Дети», в котором в записи о сотруднике фиксируют сведения обо всех его детях, то задать запросы типа: «Выделить всех сотрудников, имеющих больше трех детей» или «Определить среднее число детей у сотрудников» будет достаточно сложно. В то же время, если сведения о детях выделить в отдельную таблицу, в которой каждому ребенку будет соответствовать отдельная запись, реализация подобных запросов не составит особого труда;
-
все «групповые» операции (суммирование, подсчет, определение среднего значения и т.п.) в реляционных СУБД обычно относятся к элементам одного столбца, а не строки; это следует учитывать при проектировании структуры БД;
-
для полей типа Memo число допустимых операций по их обработке сильно ограничено по сравнению с полями других типов.
Число подобных примеров можно продолжить.
При проектировании БД необходимо знать особенности языков манипулирования данными в целевой СУБД, а также особенности предполагаемой обработки данных и учитывать это при проектировании структуры БД.
8. Объем требуемой памяти. В связи со значительным ростом технических характеристик накопителей и снижением стоимости хранения единицы информации значимость данного фактора постоянно снижается. Исходными данными для определения требуемого объема памяти являются: число объектов отображаемой предметной области, особенности выбранной логической и физической структуры БД, особенности носителя данных. Некоторые CASE-средства включают в себя блоки оценки объемов памяти.
9. Скорость (время) обработки информации (время реакции на запрос). Значение данного критерия трудно достаточно точно оценить на стадии проектирования, поскольку на величину этого показателя влияет значительное число взаимосвязанных и взаимозависимых факторов. Если для определения требуемого объема памяти обычно используются аналитические методы, то для определения времени обработки это проблематично. Чаще всего скоростные характеристики определяются путем проведения специальным образом подобранных тестов. Однако факторы, влияющие на скорость обработки, известны, и их следует иметь в виду при проектировании структуры БД.
Рассматриваемый критерий особенно важен для систем, работающих в реальном масштабе времени и в интерактивном режиме.
Перечень приведенных критериев не является исчерпывающим. Кроме того, каждый из перечисленных критериев может быть разбит на множество детализирующих его показателей.
Рассмотрим некоторые примеры, иллюстрирующие оценку тех или иных проектных решений по перечисленным выше критериям. Следует обратить внимание на то, что оценка проекта по какому-либо критерию будет зависеть как от характеристики отображаемой предметной области, так и от особенностей используемой СУБД. Например, некоторые СУБД не позволяют корректировать ключевое поле. Если этого не учитывать и выбрать при проектировании в качестве ключа поле, которое может изменить свое значение, то в случае возникновения в предметной области такой ситуации ее отражение в БД потребует значительных затрат, а именно потребуется перепроектирование структуры БД и довольно трудоемкая процедура перезагрузки данных из старой БД в новую. Если СУБД позволяет корректировать значение ключевого поля, то таких «перестроек» не потребуется (т.е. показатель оценки одного и того же проектного решения по критерию «устойчивость модели» для разных СУБД будет выглядеть по-разному). Из сказанного не следует делать вывод, что СУБД, позволяющие корректировать ключ, лучше, чем те, которые не позволяют этого: и модель БД получается устойчивее, и проектировать легче (меньше факторов надо учитывать при проектировании). Если выбрать в качестве ключа поле, значение которого может изменяться, то могут возникнуть проблемы при поддержании целостности БД.