ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ РОССИЙСКОЙ ФЕДЕРАЦИИ ГОУ ВПО РОСТОВСКИЙ ГОСУДАРСТВЕНЫЙ ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ «РИНХ» БАЗЫ ДАННЫХ Учебное пособие Допущено Учебно-методическим объединением по образованию в области прикладной информатики в качестве учебного пособия для студентов высших учебных заведений, обучающихся по специальности «Прикладная информатика (по областям)» и другим экономическим специальностям Ростов на Дону 2006 Печатается по решению кафедры экономической информатики и автоматизации управления Автор: Л.Ф. Панферова Рецензенты: д.э.н., проф. Е.Н.Ефимов д.тех.н., проф. Е.М. Ульяницкий Учебное пособие предназначено для изучения и практического освоения современных методов проектирования баз данных, систем управления базами данных, разработки автоматизированных технологий по созданию и работе с базами данных с помощью MS Access. В состав учебного пособия включены основные сведения по проектированию реляционных баз данных, с использованием метода сущность-связь, метода нормальных форм. В пособие включены основные сведения по организации работы с СУБД Access, описание ее функций и возможностей применения, а также задания для лабораторных работ и рекомендации по их выполнению. Для выполнения самостоятельной работы в учебном пособии приводится структура базы данных, которую можно использовать для выполнения предложенных заданий, которые позволят углубить навыки и знания. © ГОУ университет ВПО Ростовский «РИНХ» государственный , экономический 2006 Введение Ни одна современная информационная система, используемая в бизнесе, не обходится без использования базы данных. Поэтому значимость сравнительно молодой области знаний, которой является теория баз данных, растет с каждым годом. Знания, получаемые по информационным системам, бизнес - программированию, системному проектированию, передачи данных, не могут быть полными без изучения вопросов по созданию и сопровождению базы данных, концептуальному проектированию, реализации проекта в виде реляционной, иерархической или сетевой модели. Современный рынок программных продуктов обладает достаточным многообразием СУБД, позволяющих создавать базы данных различных моделей и осуществлять разработку приложений с их использованием. СУБД MS Access заняло определенную нишу на рынке программных продуктов и продолжает ее удерживать. Несмотря на то, что имеются и другие продукты, эта СУБД не оставляет своих позиций для разработки персональных баз данных и клиентской части распределенных баз данных. Поэтому в предлагаемом учебном пособие рассматриваемые вопросы по созданию баз данных, построению и выполнению запросов пользователей, организации экранных форм и отчетов демонстрируются в среде MS Access. Большое внимание в учебном пособии отводится вопросам проектирования базы данных. Это связано с несколькими причинами. Во-первых, подходящей логической возможность позволяет задача проектирования структуры базы заключается в выборе данных, обеспечивающей создания такой информационной системы, которая конечному использованием. пользователю решать все задачи с ее Во-вторых, проектирование решает вопрос о наиболее эффективной структуре данных, которая обеспечивает быстрый доступ к ним, исключает ненужное повторение данных и обеспечивает целостность. Кроме того, уделяется особое внимание концептуальному проектированию, так как именно на этом уровне мы можем создать макет, не зависящий от аппаратного обеспечения, операционной системы и СУБД. Предлагаемые задания для лабораторных работ должны помочь студенту овладеть возможностями, которыми обладает MS Access для решения прикладных задач. В учебном пособии приводится структура базы данных «Предприятие», которую необходимо создать, наполнить данными. Для самостоятельной работы предлагается построить ряд запросов, создать экранные формы, чтобы закрепить навыки, полученные при выполнении лабораторных работ, а также углубить свои знания, как теоретического, так и практического характера. Несколько слов о содержании учебного пособия. Основные материалы содержаться в трех взаимодополняющих разделах. Раздел 1 Общие вопросы организации баз данных включает краткую историю развития теории баз данных, которая начинается с рассмотрения вопросов хранения данных в файлах последовательного и прямого методов доступа. Далее приводится перечень основных недостатков файлового способа хранения данных и преимущества хранения информации в базах данных. Описываются основные понятия и определения систем баз данных вообще и реляционной системы в частности. Обсуждаются вопросов проектирования баз данных, системы безопасности и видов привилегий. Раздел 2 Проектирование базы данных посвящен рассмотрению этапов проектирования базы данных на конкретном примере. Раздел 3 Задания для лабораторных работ и самостоятельной работы содержит варианты лабораторных работ, позволяющих получить практические навыки по созданию базы данных и построению запросов, форм и отчетов средствами MS Access. В этом же разделе приведены задания для самостоятельной работы студентов, особенно полезные для заочной формы обучения, по которым они смогут самостоятельно выполнить проектирование базы данных и разработать экранные формы и запросы, которые используются в информационных системах. Раздел 1. Общие вопросы организации баз данных 1.1 История развития баз данных Теория баз данных – сравнительно молодая область знаний. Возраст ее около 40 лет, но, несмотря на молодой возраст, невозможно представить ни одну из современных информационных систем без использования баз данных. Рождением этой области знаний можно считать период конца шестидесятых – начало семидесятых годов, когда произошел переход от обработки данных к обработке информации. Это изменение отражает рост понимания того, что информация – это не просто деловые записи. Информация – это обработанные данные. Начинается понимание ценности информации и компьютерных систем в деле поддержания признанного ресурса и управления им. Информационная система понимается, как система, организующая данные и выдающая информацию. Первые информационные системы организацию хранения данных связывали с тем, как она была бы организована при ручной обработке. То есть компьютерные файлы соответствовали папкам для бумаг (file folder). И компьютерный файл содержал ту информацию, которая вполне могла бы лежать в одной обычной папке. Эти файлы допускали лишь последовательный доступ. Это означает, что каждая запись в файле может быть прочитана и обработана только после того, как прочитаны все предшествующие ей записи в файле. Для выполнения большого количества рутинной работы требовался произвольный доступ – возможность напрямую обращаться к конкретной записи без предварительной сортировки или последовательного чтения всех записей. Частично эта проблема была решена с появлением индекснопоследовательных файлов, которые обеспечивали прямое обращение к нужной записи. Эти файлы позволяли выбрать одно или несколько полей – называемых ключом или индексом– для точного задания того, какую запись извлекать. Ключ – это поле или совокупность полей данных, однозначно определяющих запись в файле. Контрольные вопросы 1. В чем сущность последовательного метода выбора информации? 2. В чем сущность произвольного доступа к информации? 1.2 Недостатки традиционных файловых систем Несмотря на появление файлов с произвольным доступом, быстро стало очевидным, что файловые системы любого типа обладают некоторыми недостатками: Избыточность данных. Она связана с тем, что для каждого приложения создаются свои собственные файлы данных. (Программы, с помощью которых пользователи работают с данными, называются приложениями.) Некоторые единицы данных, повторяющиеся в разных приложениях, соответствуют полям в разных файлах, причем они могут называться по-разному. Одно и тоже поле в разных файлах может, кроме того, иметь разную длину. Следствием такой избыточности данных являются лишние затраты на поддержание и хранение данных. Избыточность данных также порождает риск противоречий между разными версиями общих данных. Слабый контроль данных. В файловых системах отсутствует централизованный контроль на уровне элементов данных. Это опять связано с тем, что один и тот же элемент данных имеет несколько имен в зависимости от того, в какие файлы он входит. Не исключена вероятность и того, что разные отделы компании пользуются терминологией, не согласованной с остальными. Недостаточные возможности управления данными. Индексно-последовательные файлы позволяют обращаться к определенной записи по ключу. Этого достаточно пока нужна лишь отдельная запись. Если же нужен целый ряд связанных между собой записей, то такую информацию трудно, если не невозможно извлечь из файловой системы. Большие затраты труда программиста. Новая прикладная программа требует совершенно нового набора файлов. То есть в файловой системе существует жесткая зависимость между программами и данными. Контрольные вопросы 1. В чем проблема избыточности данных в файлах с произвольным доступом? 2. Возможно, ли именовать по-разному поля в последовательных файлах? 1.3 Основные понятия и определения Файлы ни с последовательным, ни с произвольным методом доступа не смогли до конца решить проблем, связанных с хранением и обработкой данных. Поэтому потребовалось искать какие-то новые средства. Такими средствами стали системы управления базами данных (СУБД). Средствами СУБД любой пользователь может создавать файлы БД, просматривать их, изменять, выполнять поиск, формировать отчеты произвольной формы. Что же такое база данных? К. Дж. Дейт, один из известнейших теоретиков этой области знаний, дает следующее определение: «база данных – состоит из некоторого набора постоянных данных, которые используются прикладными системами для какого-то предприятия». Известны и другие определения, приведем их. База данных – это множество взаимосвязанных элементарных групп данных, которые могут обрабатываться одной или несколькими прикладными системами. База данных представляет собой совокупность таблиц связанных определенными отношениями. База данных – это специальным образом организованное хранение информационных ресурсов в виде интегрированной совокупности файлов, обеспечивающее удобное взаимодействие между ними и быстрый доступ к данным. То есть данные связываются в соответствии с их внутренними логическими взаимоотношениями, а не физическими указателями. Пользователи могут комбинировать данные из разных источников, если логическая информация, необходимая для такого комбинирования, присутствует в исходных данных. Банк данных представляющая (БнД) – совокупность это автоматизированная информационных, система, программных, технических средств и персонала, обеспечивающих хранение, накопление, обновление, поиск и выдачу данных. Главными составляющими банка данных являются база данных и программный продукт, называемый системой управления базой данных. БМД – это база метаданных, именно здесь и хранится вся информация об используемых структурах данных, логической организации данных, правах доступа пользователей и, наконец, физическом расположении данных. База данных должна обеспечивать независимость существования информационного массива от прикладных программ его обслуживающих. Система баз данных – это, по сути, не что иное, как компьютеризированная система хранения записей. Саму же базу данных можно рассматривать как подобие электронной картотеки, то есть хранилище для некоторого набора записываемых в компьютер файлов данных. Основная цель системы – содержать информацию и предоставлять ее по требованию. К информации можно отнести все необходимое для текущей работы данного пользователя или предприятия. Под «файлом» базы данных подразумевается абстрактный набор данных, который на практике может не совпадать с физическим дисковым файлом. Пользователю этой системы предоставляется возможность выполнять множество различных операций над такими файлами, например: - добавлять новые пустые файлы в базу данных; - добавлять новые данные в существующие файлы; - вести поиск данных в существующих файлах; - удалять данные из существующих файлов; - удалять существующие файлы из баз данных; - изменять данные в существующих файлах. Можно выделить четыре главных компонента системы: база данных; аппаратное обеспечение; программное обеспечение общего назначения, называемого системой управления пользователи. Контрольные вопросы 1. Дайте определение базы данных. 2. Назовите компоненты системы баз данных. базой данных и 1.4 Преимущества баз данных Различают однопользовательские системы (single – user – system) – это системы, в которых в одно и тоже время к базе данных может получить доступ не более одного пользователя; и многопользовательские системы (multi – user – system) – это системы, в которых к базе данных могут получить доступ сразу несколько пользователей. В общем случае данные в базе данных являются интегрированными и общими. Что является наиболее важным ее преимуществом. Интеграция данных подразумевает возможность представить базу данных как объединение нескольких отдельных файлов данных, полностью или частично не перекрывающихся. Общие отдельных данные областей подразумевают в базе данных возможность несколькими использования различными пользователями. Между физической базой данных и пользователями системы располагается уровень программного обеспечения – диспетчер базы данных или система управления базой данных (СУБД). Основная функция СУБД – предоставление возможности пользователю баз данных работать с ней, не вникая в детали на уровне аппаратного обеспечения. Пользователи базы данных делятся на три большие группы: - прикладные программисты. Это сотрудники компании, которые создают прикладное программное обеспечение для решения конкретных задач компании. Программное обеспечение может быть написано на стандартном языке программирования типа Си или же на языке (обычно называемом языком четвертого поколения), входящем в комплект системы управления базой данных; - конечные пользователи. Это те люди, которым информация базы данных требуется для выполнения их прямых служебных обязанностей; - администраторы. Выделяют администратора сервера баз данных. Он ведает установкой, конфигурированием сервера, регистрацией пользователей, групп, ролей и т.п. Прямо или косвенно он обладает всеми привилегиями, которые имеют или могут иметь другие пользователи. Кроме администратора сервера может быть и администратор базы данных. К этой категории относится любой пользователь, создавший базу данных, и, следовательно, являющийся ее владельцем. Он может предоставлять другим пользователям доступ к базе и к содержащимся в ней объектам. Администратор базы отвечает за ее сохранение и восстановление. В принципе в организации может быть много администраторов баз данных. Преимущества системы баз данных по сравнению с бумажными методами сохранения записей следующие: - компактность; - скорость; - низкие трудозатраты; - применимость. Преимущества баз данных, связанные с централизованным управлением: - возможность сокращения избыточности; - возможность устранения противоречивости; - возможность общего доступа к данным; - соблюдение стандартов; - введение ограничений для обеспечения безопасности; - обеспечение целостности данных; - возможность сбалансировать противоречивые требования. Основная цель систем баз данных – обеспечение независимости данных. Независимость данных можно определить как иммунитет к изменениям в структуре хранения данных и в методах доступа к ним. Контрольные вопросы 1. Назовите наиболее важные преимущества баз данных. 2. В чем преимущества баз данных, связанные с централизованным управлением? 1.5 Основополагающие категории в теории баз данных Одними из основополагающих в концепции баз данных являются обобщенные категории “данные” и “модель данных”. Понятие «данные» – это набор конкретных значений, параметров, характеризующих объект, условие, ситуацию или любые другие факторы. Данные не обладают определенной структурой, данные становятся информацией тогда, когда пользователь задает им определенную структуру, то есть осознает их смысловое содержание. Модель данных – это некоторая абстракция, которая, будучи применима к конкретным данным, разработчикам трактовать их уже позволяет пользователям и как информацию, то есть сведения, содержащие не только данные, но и взаимосвязь между ними. Модель, выражающая информацию о предметной области в виде, независимом от используемой СУБД, называется инфологической или семантической. Она отражает в естественной и удобной для разработчиков и других пользователей форме информационно-логический уровень абстрагирования, связанный с фиксацией и предметной области, их свойств и их взаимосвязей. описанием объектов Инфологические модели данных используются на ранних стадиях проектирования для описания данных в процессе разработки приложения, а даталогические модели уже поддерживаются конкретной СУБД. Обычно данные в базе данных называют «постоянными» (хотя они могут недолго оставаться таковыми!). Под словом «постоянные» подразумеваются данные, которые отличаются от других, более изменчивых данных, таких как промежуточные результаты, входные и выходные данные, управляющие операторы, рабочие очереди и вообще все транзитные данные. Входные данные – это информация, передаваемая системе (обычно с терминала или рабочей станции). Такая информация может стать причиной изменений в постоянных данных (она может стать частью постоянных данных), но не является частью базы данных как таковой. Выходные данные – это сообщения и результаты, выдаваемые системой (обычно выдаются на печать или отображаются на экране). И опять же эту информацию можно брать из постоянных данных, но ее нельзя рассматривать как часть базы данных. База данных состоит из некоторого набора постоянных данных, которые используются прикладными системами на предприятии. Предприятие – это любая независимая коммерческая, научная, техническая или другая организация. Любое предприятие неизбежно имеет большое количество данных, связанных с его деятельностью. Это и есть постоянные данные. На практике сегодняшние предприятия используют две отдельные базы данных: с операционными данными и с данными для поддержки принятия решений. Базы данных систем принятия решения часто содержат отчетную информацию (например, итоги и средние результаты), которую, в свою очередь, периодично (раз в день или раз в неделю, например) получают из операционной базы данных (постоянной базы данных). Обычно предприятию требуется записывать информацию об имеющихся проектах, деталях, поставщиках, складах, служащих. Все это составляет основные объекты, о которых необходимо хранить информацию. Под термином объект мы будем понимать все, что может быть представлено в базе данных. Объект – это то, о чем необходимо записать информацию. Кроме основных объектов существуют еще и отношения между ними, которые связывают их вместе. Отношения могут быть: бинарными (связываются два типа объектов); отношения, связывающие один тип объектов; может быть любое количество отношений (служащие заняты в проекте, служащие управляют проектом). Следует отметить, что отношение подобно основным объектам является частью данных. Поэтому вместе с основными объектами отношения тоже должны быть представлены в базах данных. Схему, связывающую объекты между собой, будем называть схемой объект/отношения или диаграммой объект отношения. Отметим несколько моментов в построении схемы: большинство отношений в схеме связывают два типа объектов (т.е. они являются - бинарными). Но возможно связать и три объекта (поставщики, проекты и детали) – тройное отношение. Т.е. определенные поставщики поставляют определенные детали для определенных проектов; - отношение может связывать один тип объектов. Например, детали. Это отношения означает, что некоторые детали содержат другие компоненты (спецификация материалов); - в наборе объектов может быть любое количество отношений. Например. Служащие заняты в проектах – один факт, и другой – служащие управляют проектом. Дадим определение терминов: хранимое поле, хранимая запись, хранимый файл. Хранимое поле - это поименованная единица хранения данных. Вообще, база данных содержит много экземпляров каждого из нескольких типов хранимых полей. Хранимая запись – это набор связанных хранимых полей. Здесь также различают тип и экземпляр. Экземпляр хранимой записи состоит из группы связанных экземпляров хранимых полей. Хранимый файл – это набор всех экземпляров хранимых записей одного типа. В базах данных логическая запись не обязательно совпадает с хранимой записью, то есть может понадобиться внести изменения в структуру хранения данных, в то время как логическая структура остается неизменной. Контрольные вопросы 1. Поясните структуру инфологической модели Назовите типы объектов в отношении. 1.6 Модели систем баз данных Почти все базы данных, созданные с конца 70-х годов, основаны на реляционном подходе. Более того, подавляющее большинство научных исследований в области баз данных в течение последних 35 лет проводилось в этом направлении. Реляционный подход представляет собой основную тенденцию сегодняшнего рынка, и реляционная модель – единственная наиболее существенная разработка в истории развития баз данных. Дореляционные системы можно разделить на три большие категории: система инвертированных списков; иерархические; сетевые. Системы инвертированных списков: – CA DATACOM/DB компании Computer Associates International. Иерархические системы: IMS корпорации IBM. Сетевые: CA – IDMS/DB компании Computer Associates International Inc. Первые реляционные продукты начали появляться в конце 1970-х – начало 1980-х годов. А в 1998г. существовало уже более 250 коммерческих реляционных продуктов. Среди них DB2 корпорации IBM; Rdb/VMS корпорации Digital Equipment; ORACLE корпорации Oracle; INGRES компании Ingress Division of the Ask Group Ins; SYBASE компании SYBASE Ins. и многие другие. Несколько позже исследования велись в направлении так называемых «постреляционных» систем, некоторые из них основаны на совместимых снизу вверх расширениях оригинального реляционного подхода, другие представляют собой попытки создать что-то отличное. Перечислим лишь некоторые наиболее поздние из них: - дедуктивные СУБД; - экспертные СУБД; - расширяемые СУБД; - объектно-ориентированные СУБД; - семантические СУБД; - универсальные СУБД. Постреляционная модель допускает многозначные поля, чем снимается ограничение неделимости данных, хранящихся в записях таблиц. По способу установления связей между данными различают реляционную, иерархическую и сетевую модели. В настоящее время создано большое количество СУБД, имеющих приблизительно одинаковые возможности. Все они позволяют создавать файлы БД, редактировать их, обновляя записи, удаляя ненужные, добавляя новые. Созданные файлы БД можно упорядочивать по значению определенного индексного реквизита, выполнять поиск информации в базе, формировать отчеты заданной формы. Кроме того, очень важной является функция изменения структуры уже созданного файла базы данных. Увеличение объема и структурной сложности хранения данных, расширение круга пользователей информационных систем привели к широкому распространению наиболее удобных и сравнительно простых для понимания реляционных СУБД. В них тем или иным путем решаются специфические проблемы параллельных процессов, целостности (правильности) и безопасности данных, а также санкционированного доступа. Достоинством реляционной модели является сравнительная простота инструментальных средств ее поддержки, недостатком – жесткость структуры данных (невозможность, например, задания строк таблицы произвольной длины) и зависимость скорости ее работы от размера базы данных. Реляционная модель является простейшей и наиболее привычной формой представления данных в виде таблицы. В теории множеств таблице соответствует термин отношение (relation), который и дал название модели. Для нее имеется развитый математический аппарат – реляционное исчисление и реляционная алгебра, где для баз данных (отношений) определены такие хорошо известные теоретико- множественные операции, как объединение, вычитание, пересечение, соединение и др. Иерархическая и сетевая модели предполагают наличие связей между данными, имеющими какой-либо общий признак. В иерархической модели такие связи могут быть отражены в виде дерева- графа, где возможны только односторонние связи от старших вершин к младшим. Это облегчает доступ к необходимой информации, но только если все возможные запросы отражены в структуре дерева. Никакие иные запросы удовлетворены быть не могут. Указанный недостаток снят в сетевой модели, где, по крайней мере, теоретически, возможны связи “всех со всеми”. Поскольку на практике это, естественно, невозможно, приходится прибегать к некоторым ограничениям. Использование иерархической и сетевой моделей ускоряет доступ к информации в базе данных. Но так как каждый элемент данных должен содержать ссылки на некоторые другие элементы, требуются значительные ресурсы как дисковой, так и оперативной памяти ПЭВМ. Недостаток оперативной памяти, конечно, снижает скорость обработки данных. Кроме того, для таких моделей характерна сложность реализации СУБД. В настоящее время реляционные системы лучше всего соответствуют техническим возможностям персональных компьютеров и вполне удовлетворяют большинство пользователей. Скоростные характеристики этих СУБД поддерживаются специальными средствами ускоренного доступа к информации и индексированием баз данных. Контрольные вопросы 1. Назовите основные преимущества реляционной модели 2. Перечислите проблемы, которые решаются реляционной моделью. 1.7 Архитектура системы базы данных В процессе научных исследований, посвященных тому, как именно должна быть реализации. устроена Самой СУБД, предлагались жизнеспособной различные оказалась, способы предложенная американским комитетом по стандартизации ANSI (American National Standards Institute), трехуровневая система организации БД. Она включает: внутренний, концептуальный и внешний уровни. Внешний уровень моделей – наиболее близкий к пользователям, т.е. он связан со способами представления данных для отдельных пользователей. Этот уровень определяет точку зрения на БД отдельных приложений. Каждое приложение видит и обрабатывает только те данные, которые необходимы именно этому приложению Концептуальный уровень – промежуточный между первым и третьим, центральное управляющее звено. Здесь база данных представлена в наиболее общем виде, который объединяет данные, используемые всеми приложениями, работающими с данной базой. Фактически концептуальный уровень отражает обобщенную модель предметной области, для которой создавалась база данных. Как любая модель, концептуальная модель отражает только существенные, с точки зрения обработки, особенности объектов реального мира. Предметная область – это часть реальной системы, представляющая интерес для данного исследования. Концептуальная модель – это представление всей информации базы данных в несколько более абстрактной форме; представление данных таковыми, какие «они есть на самом деле». Внутренний уровень – наиболее близкий к физическому хранению, т.е. связанный со способами сохранения информации на физических устройствах хранения. Восприятие данных на каждом из уровней описывается с помощью схемы. Отображения описывают соответствие между данными внешней схемы и концептуальной схемы, а также концептуальной и внутренней. Трехуровневая архитектура позволяет обеспечить логическую (между 1 уровнем и 2) и физическую (между уровнями 2 и 3) независимость при работе с данными. Логическая независимость предполагает возможность изменения одного приложения без корректировки других приложений, работающих с этой же базой данных. Физическая независимость предполагает возможность переноса хранимой информации с одних носителей на другие при сохранении работоспособности всех приложений, работающих с данной базой данных. Это именно то, чего не хватало при использовании файловых систем. Контрольные вопросы 1. Назовите уровень, отражающий обобщенную модель предметной области 2. Чем обеспечивается логическая независимость при работе с данными? 1.8 Проектирование баз данных Задача проектирования базы данных сводится к решению вопроса о наиболее эффективной структуре данных. При этом приследуются следующие цели: - обеспечение быстрого доступа к данным в таблицах; - исключение ненужного повторения данных, которое может являться причиной ошибок при вводе и нерационального использования дискового пространства компьютера; обеспечение целостности данных таким образом, чтобы при изменении одних - объектов автоматически происходило соответствующее изменение связанных с ним объектов. Задача проектирования баз данных заключается в том, чтобы решить, какие базовые отношения и с какими атрибутами следует использовать. То есть нужно ответить на вопрос: как в некоторой базе данных для заданного набора данных выбрать подходящую логическую структуру? Фактически также необходимо выяснить, какие домены следует использовать для атрибутов и какая функциональная зависимость между ними существует. Домен – общая совокупность значений, из которой берется реальное значение атрибутов. Функциональная зависимость является связью типа многие-к-одному между множествами атрибутов данного отношения. Пусть R–это отношение, а X и Y – произвольные подмножества множества атрибутов отношения R. Тогда У функционально зависимо от Х тогда и только тогда, когда каждое значение множества Х отношения R связано в точности с одним значением множества У отношения R. Концепция функциональной зависимости определяется с разделением функциональных зависимостей на выполняемые в некоторых частных случаях и выполняемые всегда. Практически утверждение, что функциональная зависимость выполняется «всегда» является ограничением целостности, поскольку при этом накладываются определенные ограничения на все допустимые значения. Особенность проектирования базы данных состоит в том, что речь идет о логическом, а не о физическом макете. Это вовсе не значит, что физический макет не имеет большого значения, а наоборот. Однако: физический макет может рассматриваться как отдельная - сопутствующая часть; физический макет является специфическим для каждой - СУБД. Логический макет, наоборот, совершенно независим от СУБД. К сожалению, на практике часто случается так, что реализация макета на физическом уровне может оказать существенное обратное влияние на логический макет. При создании макета данных в не реляционной системе следует, прежде всего, создать реляционный макет, а затем на отдельном следующим этапе отобразить этот реляционный макет на любые не реляционные структуры (например, иерархии), поддерживаемые в СУБД. В области создания баз данных разработано большое число методологий проектирования. Все они специализированные и предназначены для решения именно той проблемы, которая считалась неразрешимой к моменту создания данной конкретной методики. Объединяет их то, что база данных проектировалась отдельно от приложений. Независимость от приложения желательна потому, что обычно в момент проектирования базы данных не известны все возможные способы использования данных. То есть, необходимо, чтобы макет базы данных был стабильным. Следуя этим допущениям лучше создать концептуальную схему, то есть абстрактный логический макет, не зависящий от аппаратного обеспечения, операционной системы, СУБД, языка программирования, пользователя и так далее. Важным моментом проектирования базы данных является нормализация. Нормализация – это то, как вы реализуете взаимоотношения и хранимые данные в таблицах вашей базы данных. При нормализации таблицы вы стараетесь ограничить количество повторяющихся в ней данных. Нормализация – это набор критериев, которыми стоит руководствоваться при проектировании реляционных баз данных. Контрольные вопросы 1. Дайте определение понятию нормализация 2. Как осуществляется поддержание целостности данных на этапе проектирования? 1.9 Нормализация таблиц и ее необходимость При проектировании структуры базы данных заказчик часто предоставляет разработчику описание используемых форм и бланков, существующих в бумажном виде. При простом переносе бумажных форм в таблицы базы данных неизбежно возникнет ряд проблем. Практически для всех таблиц важны проблемы добавления изменения и удаления данных. Нормализация таблиц — это формальный аппарат ограничений на формирование таблиц, описывающий разбиение таблиц на две или более частей и обеспечивающий создание лучших методов добавления, изменения и удаления данных. Нормализация позволяет устранить дублирование, обеспечивает непротиворечивость хранимых данных и уменьшает трудозатраты на ввод и изменение данных. Окончательной целью нормализации является получение такого проекта базы данных, в котором любая часть информации хранится лишь в одном месте, то есть, исключается избыточность информации. Это делается не столько с целью экономии места (в некоторых случаях нормализованные таблицы занимают больше места, чем ненормализованные), сколько для исключения возможности противоречий в хранимых данных. Если исходить из структуры данных, то нормализацией называется процесс превращения сетевой или иерархической структуры данных в реляционную модель. Внешне операции нормализации выглядят достаточно просто, но при практической реализации возникают определенные трудности, так как даже для простых таблиц часто приходится поправлять состав колонок. Таблица считается нормализованной на определенном уровне, если она удовлетворяет условиям, накладываемым соответствующей формой нормализации. Процесс нормализации представляет собой последовательное изменение структур таблиц до тех пор, пока она не будет удовлетворять требованиям последней формы нормализации. Всего существует шесть форм нормализации: - первая нормальная форма (First Normal Form — 1NF); - вторая нормальная форма (Second Normal Form — 2NF); - третья нормальная форма (Third Normal Form — 3NF); - нормальная форма Бойса—Кодда (B—Codd Normal Form — BCNF); - четвертая нормальная форма (Fourth Normal Form — 4NF); - пятая нормальная форма, или нормальная форма проекции- соединения 5NF, или PJ/NF). На практике чаще всего используются первые три формы нормализации, обеспечивающие достаточный уровень нормализации и в то же время легко реализуемые на практике. При приведении к последней, пятой нормальной форме таблица считается полностью нормализованной. Использование последних трех форм оправдано только в том случае, если таблица имеет несколько десятков колонок, так как полная нормализация таблиц достаточно затруднительна и требует значительных усилий. При описании нормальных форм используются несколько понятий: - функциональной зависимостью между полями А и В называется зависимость, при которой каждому значению А в любой момент времени соответствует единственное значение В из всех возможных; - полной функциональной зависимостью между составным полем А и полем В называется зависимость, при которой поле В зависит функционально от поля А и не зависит функционально от любого подмножества поля А; - транзитивная функциональная зависимость между полями А и С наблюдается в том случае, если поле В функционально зависит от поля А и поле С функционально зависит от В. В то же время, обратная зависимость отсутствует; - несколько полей взаимно независимы, если ни одно из них не является функционально зависимым от другого поля; - неключевым полем таблицы называется каждое поле, не входящее в состав первичного ключа. Первая нормальная форма Таблица находится в первой нормальной форме тогда и только тогда, когда ни одно поле строки не содержит более одного значения и любое ключевое поле не пусто. Первая нормальная форма является основой реляционной модели данных. Любая таблица в реляционной базе данных автоматически находится в первой нормальной форме, иное просто невозможно по определению. Любой домен, а, следовательно, и колонка состоит из множества атомарных значений, которые не могут быть разложены на более мелкие составляющие. Таблица, находящаяся в первой нормальной форме, обладает рядом недостатков. Добавление новых данных требует ввода значений для всех колонок, даже если в таблице уже существуют необходимые данные. Налицо избыточность данных. Рано или поздно при вводе дублирующихся данных будет допущена ошибка, что приведет к возникновению двух различных значений. Нельзя также добавить информацию ранее, чем она понадобится. Чтобы избежать проблем, необходимо привести таблицу ко второй или третьей нормальной форме. Вторая нормальная форма Таблица находится во второй нормальной форме, если она удовлетворяет требованиям первой нормальной формы и все ее поля, не входящие в первичный ключ, связаны полной функциональной зависимостью с первичным ключом. Если таблица имеет простой первичный ключ, состоящий только из одной колонки, то она автоматически находится во второй нормальной форме. Если же первичный ключ составной, то таблица необязательно находится во второй нормальной форме и тогда необходимо разделить ее на две или более таблиц таким образом, чтобы первичный ключ однозначно идентифицировал значение любой колонки. Если в таблице имеется хотя бы одно поле, не зависящее от первичного ключа, то в первичный ключ необходимо включить дополнительные колонки. Если таких колонок нет, то необходимо добавить новую колонку. Простое разбиение таблицы на несколько более мелких таблиц может привести к потере логической целостности данных. Необходимо предусмотреть создание дополнительных колонок, которые могут быть использованы в качестве первичного ключа в каждой таблице. Используя этот ключ, можно будет легко связывать данные, расположенные в разных таблицах. Приведение таблицы ко второй нормальной форме позволяет избежать повторения одних и тех же данных, появившегося после приведения таблицы к первой нормальной форме. Третья нормальная форма Таблица находится в третьей нормальной форме, если она удовлетворяет определению второй нормальной формы и ни одно из ее неключевых полей не зависит функционально от любого другого не ключевого поля. Таблица находится в третьей нормальной форме, если она находится во второй нормальной форме и каждое не ключевое поле нетранзитивно зависит от первичного ключа. Под «нетранзитивной зависимостью» подразумевается отсутствие какой-либо взаимной зависимости. Нормальная форма Бойса—Кодда Таблица находится в нормальной форме Бойса—Кодда только в том случае, если любая функциональная зависимость между ее полями сводится к полнофункциональной зависимости от возможного ключа. Четвертая нормальная форма Для определения четвертой нормальной формы необходимо ввести дополнительные определения. Полной декомпозицией таблицы называют такую совокупность произвольного числа ее проекций, соединение которых полностью совпадает с содержимым таблицы. Четвертая нормальная форма является частным случаем пятой нормальной формы, когда полная декомпозиция должна быть соединением ровно двух проекций. Очень трудно найти такую таблицу, чтобы она находилась в четвертой нормальной форме, но не удовлетворяла определению пятой нормальной формы. Пятая нормальная форма Таблица находится в пятой нормальной форме тогда и только тогда, когда в каждой ее полной декомпозиции все проекции содержат возможный ключ. Таблица, не имеющая ни одной полной декомпозиции, также находится в пятой нормальной форме. Контрольные вопросы 1. Когда таблица считается нормализованной? 2. Назовите способы приведения таблицы ко 2НФ. 1.10 Краткая характеристика моделей БД Модель данных включает в себя структуры данных, операции их обработки и ограничения целостности. С помощью модели данных можно наглядно представить структуру объектов и установленные между ними связи. Элемент данных описывает любой набор данных, а правила связывания определяют алгоритмы взаимосвязи элементов данных. На практике используются три основных модели: Иерархическая модель данных. Иерархическая модель данных, как следует из названия, имеет иерархическую структуру, то есть каждый из элементов связан только с одним вышестоящим элементом, но в то же время на него могут ссылаться один или несколько нижестоящих элементов. В терминологии иерархической модели используются более конкретные понятия, чем элемент данных и правила связывания, - это «элемент» (узел), «уровень» и «связь». Узел чаще всего представляет собой набор атрибутов, описывающих некоторый объект, хотя, в принципе, это может быть любой набор данных, имеющий какой-то ключевой атрибут. Иерархическая модель схематически изображается в виде графа, где каждый узел является вершиной. Эта модель представляет собой совокупность элементов, расположенных в порядке их подчинения от общего к частному и образующих перевернутое дерево (граф). Иерархическое дерево имеет единственную вершину, не подчиненную никакой другой вершине и находящуюся на самом верхнем (первом) уровне. Число вершин первого уровня определяет количество деревьев в базе данных. Сетевая модель данных. Эта модель использует ту же терминологию, что и иерархическая модель «узел», «уровень» и «связь». Различие между иерархической и сетевой моделями данных заключается в том, что в последней каждый элемент данных может быть связан с любым другим элементом. Реляционная модель данных. Основная идея реляционной модели данных заключается в том, чтобы представить любой набор данных в виде двумерной таблицы. В простейшем случае реляционная модель описывает единственную двумерную таблицу, но чаще всего эта модель описывает структуру и взаимоотношения между несколькими различными таблицами. Контрольные вопросы 1. Дайте краткую характеристику трем основным моделям баз данных. 2. модели? В чем основное отличие иерархической модели от сетевой 1.11 Классификация баз данных по технологии обработки За всю историю развития баз данных было разработано множество способов хранения, структуризации и обработки информации. По технологии обработки базы данных подразделяются следующим образом: Распределенная база данных. Этот способ обработки требует использования нескольких серверов, на которых может храниться пересекающаяся или даже дублирующаяся информация. Для работы с такой базой данных используется система управления распределенными базами данных (СУРБД). Централизованная база данных. При таком способе обработки база данных располагается на одном компьютере. Если для этого компьютера установлена поддержка сети, то множество пользователей с клиентских компьютеров могут одновременно обращаться к информации, хранящейся в центральной базе данных. В локальных сетях чаще всего используется именно такой способ обработки данных. Системы централизованных баз данных с сетевым доступом имеют различные архитектуры: Файл-сервер. Эта архитектура предполагает использование выделенного компьютера в качестве сервера файлов. На этом сервере хранятся файлы базы данных, которые по запросу пользователей копируются на их локальные компьютеры. Там и проводится вся основная обработка данных. После того как пользователи выполнят необходимые изменения данных, они копируют файлы обратно на файл-сервер, где другие пользователи, в свою очередь, могут снова их использовать. Кроме того, каждый пользователь может создавать на локальном компьютере свои собственные базы данных, используемые им монопольно. При использовании архитектуры «файл-сервер» производительность системы резко падает с ростом числа пользователей. Клиент-сервер. При использовании этой архитектуры выделенный компьютер используется не только в качестве хранилища файлов, но и для выполнения основного объема действий по обработке информации. Пользователь (клиент) с рабочей станции отправляет список операций обработки данных (запрос), которые необходимо выполнить, центральному компьютеру (серверу). Сервер выполняет необходимые вычисления и выборку данных и отправляет готовый результат клиенту. Для описания запросов часто используется структурированный язык запросов — SQL (Structured Query Language), специально разработанный для этих целей. Контрольные вопросы 1. В чем различие технологий обработки файл-сервер и клиентсервер? 2. Может ли пользователь локального компьютера иметь свою локальную базу данных? 1.12 Особенности архитектуры клиент-сервер в распределенных средах Компьютерная архитектура клиент/сервер – это тип распределенной модели для хранения данных, получения к ним доступа и их обработки. В распределенной системе множество компьютеров вместе выполняют определенный набор операций. Система клиент/сервер использует, по крайней мере, два компьютера. Объем работы, выполняемый клиентом и сервером, определяется их возможностями. Их взаимодействия представляет собой форму групповой работы, которая позволяет достигать высокой эффективности и скорости во всех операциях. Клиент/сервер, как следует из названия, подразумевает неравное деление нагрузки при обработке данных, т. к. их возможности отличаются. Для соединения клиентов и сервера требуется сетевое программное обеспечение. В системах клиент/сервер приложение, работающее на сервере, отвечает за создание и поддержку объектов баз данных в виде таблиц и индексов. Сервер поддерживает целостность ссылок и безопасность, а также обеспечивает возможность восстановления данных в случае широкого спектра отказов. Приложения клиента выполняют всю работу по взаимодействию с пользователем, включая отображение информации и предоставление возможности работы с приложением через графический интерфейс пользователя. После того как из сервера выбраны строки данных, приложение может создавать их копии для локального хранения и последующего манипулирования с данными. Прежде чем разрабатывать БД, необходимо понять, где находятся функциональные компоненты нашей системы. Это важно, чтобы понять, где происходит обработка данных и что стоит хранить в базе данных, а что лучше вычислять или определять по ходу дела. Система клиент/сервер – это не только база данных, которая находится в одном месте (ПК), но и доступна с нескольких рабочих станций. Система клиент/сервер не может быть создана из таблиц, например Microsoft Access, так как здесь нет того интеллектуального языка, который мог бы обрабатывать базу данных независимо от приложения. Логика, контролирующая данные, подчиняется указаниям приложения клиенткой стороны. Типичные задачи клиенткой стороны: вывод информации для пользователя; манипулирование информацией в базе данных и на экране пользователя; отображение отчетов; обеспечение выполнения операций, прерванных пользователем; клиентское приложение должно работать только с результирующим набором данных, а не со всеми доступными данными. Типичные задачи серверной стороны. любая операция, которая запускается на сервере, никогда не должна требовать для своего завершения участия пользователя; ядро базы данных несет ответственность за хранение, обновление и извлечение информации; посредством правил (rules) и триггеров (trigger) определяет функции, автоматически выполняемые сервером, на основе хранящейся в базе данных значений. Контрольные вопросы 1. Назовите типичные задачи клиентской стороны. 2. Где поддерживается целостность ссылок и безопасность при архитектуре клиент-сервер? 1.13 Введение в реляционные базы данных Развитие реляционных баз данных началось в конце 60-х годов, когда появились первые работы, в которых обсуждались возможности использования при проектировании баз данных привычных и естественных способов представления данных — так называемых табличных даталогических моделей. Основоположником теории считается сотрудник фирмы IBM доктор Эдгар Кодд. Теория реляционных баз данных имеет под собой мощную математическую основу. Разработанная Э. Коддом теоретическая база стала основой для разработки теории проектирования баз данных. Э. Кодд предложил использовать для обработки данных аппарат теории множеств. Он доказал, что любой набор данных можно представить в виде двумерных таблиц особого вида, известных в математике как «отношения». Наименьшая единица данных, которой оперирует реляционная модель данных, это отдельное атомарное для данной предметной области значение данных, которое не может быть разложено на более простые составляющие. Так, в одной предметной области составляющие адреса могут рассматриваться как различные значения, а в другой — как единое целое. Множество атомарных значений одного и того же типа образуют домен. В самом общем виде домен определяется заданием некоторого базового типа данных, к которому относятся элементы домена и произвольного логического выражения, применяемого к элементам данных. Если при вычислении логического условия относительно элемента данных в результате получено значение «истина», то этот элемент принадлежит домену. В простейшем случае домен определяется как допустимое потенциальное множество значений одного типа. В один домен могут входить значения из нескольких колонок, объединенных, помимо одинакового типа данных, еще и логически. Каждый элемент данных в отношении может быть определен с указанием его адреса в формате A[i,j], где А — элемент данных, i — строка отношения, j — номер атрибута отношения. Количество атрибутов в отношении определяет его порядок. Множество значений A[i,j] при постоянном i и всех возможных j образуют кортеж. Их количество определяет его мощность, или кардинальное число. Мощность отношения, в отличие от порядка отношения, может со временем меняться. Некоторое множество атрибутов образует ключ для данного отношения. Множество атрибутов отношения являются возможным ключом этого отношения тогда и только тогда, когда удовлетворяются два независимых от времени условия: Уникальность. В каждый момент времени никакие два различных кортежа отношения не имеют одинакового значения для комбинации входящих в ключ атрибутов. Минимальность. Ни один из входящих в ключ атрибутов не может быть исключен из ключа без нарушения уникальности. Это означает, что не стоит создавать ключ, включающий и номер паспорта, и идентификационной номер. Достаточно использовать любой из этих атрибутов, чтобы однозначно идентифицировать кортеж. Не стоит также включать в ключ неуникальный атрибут, то есть запрещается использование в качестве ключа комбинации идентификационного номера и имени служащего. При исключении имени служащего из ключа все равно будет можно уникально идентифицировать каждую строку. Каждое отношение имеет один возможный ключ. Один из возможных ключей произвольно выбирается в качестве первичного ключа. Остальные возможные ключи, если они есть, принимаются за альтернативные ключи. 1.14 Реляционные базы данных Реляционная модель данных в настоящее время является наиболее эффективной и популярной моделью, повсеместно используемой для построения высокопроизводительных, и функциональных баз данных. Требования к проектированию реляционной базы данных в общем виде можно свести к нескольким правилам: - каждая таблица имеет уникальное в базе данных имя и состоит из однотипных строк; - каждая таблица состоит из фиксированного числа колонок и значений. В одной колонке строки не может быть сохранено более одного значения; - ни в какой момент времени в таблице не найдется двух строк, дублирующих друг друга. Строки должны отличаться хотя бы одним значением, чтобы у нас была возможность однозначно идентифицировать любую строку таблиц; - каждой колонке присваивается уникальное в пределах таблицы имя; для нее устанавливается конкретный тип данных, чтобы в этой колонке размещались однородные значения (даты, фамилии, телефоны, денежные суммы и т.д.); - полное информационное содержание базы данных представляется в виде явных значений самих данных, и такой метод представления является единственным. При выполнении обработки данных можно свободно обращаться к любой строке или любой колонке таблицы. Описание колонок, которое составляет разработчик, принято называть макетом таблицы. Наиболее важными понятиями являются: -отношение; -кортеж; -кардинальное число; -атрибут; -степень; -домен; -первичный ключ. Итак, реляционная база данных — это совокупность отношений, содержащих всю информацию, которая должна храниться в базе данных. Отношение соответствует тому, что мы называем таблицей. Кортеж соответствует строке этой таблицы, а атрибут – столбцу. Количество кортежей называется кардинальным числом, а количество атрибутов – степенью. Рассмотрим возможные типы отношения между таблицами. Если каждой строке в первой таблице в каждый момент времени соответствует ноль или одна строка во второй таблицы и наоборот, то между таблицами установлено отношение «один-к-одному» (1 : 1). Если каждой строке в первой таблице в каждый момент времени соответствует ноль или одна строка во второй таблицы, но строка второй таблицы связана с единственной строкой первой таблицы, то между ними установлено отношение «один-ко-многим» (1 : М). Если каждой строке в первой таблице соответствует ноль, одна или несколько строк во второй таблице и наоборот, то между ними установлено отношение «многое-ко-многим» (М : М). Скалярные значения представляют собой «наименьшую семантическую единицу данных» в том смысле, что они атомарные: у них нет внутренней структуры (то есть они неразложимы) в реляционной модели, а значит, и при рассмотрении в реляционной СУБД. Наиболее важным доменов является следующее: домены ограничивают сравнение. Если значение двух атрибутов взяты из одного и того же домена, тогда сравнение, а отсюда и соединение, объединения и многие другие операции, использующие такие два атрибута, тоже, будут иметь смысл, так как в них сравнивается подобный атрибут с подобным. И, наоборот, если значение взяты из различных доменов, тогда сравнение и другие операции, наверное, не будут иметь смысла. Поэтому преимущество системы поддержки домена заключается в том, что такая система способна предотвратить грубые ошибки. Контрольные вопросы 1. Какие типы отношений между таблицами вы знаете? 2. Может ли значение реляционной модели быть разложено на составляющие? 1.15 Первичный и внешний ключи отношения Для связывания таблиц используются первичный и внешний ключи. Первичный ключ позволяет однозначно идентифицировать строку в таблице. В качестве первичного ключа можно использовать одну или более существующих колонок или создать новую. Однако первичный ключ на самом деле является частным случаем более общего понятия – потенциального ключа. Пусть R – некоторое отношение. Тогда потенциальный ключ К для R – это подмножество множества атрибутов R, обладающее следующими свойствами: -свойством уникальности. Нет двух различных кортежей (записей) в отношении R с одинаковым значением К; -свойством неизбыточности. Никакое из подмножеств К не обладает свойством уникальности. Каждое отношение имеет, по крайней мере, один потенциальный ключ. Базовое отношение может иметь, хотя и редко, больше одного потенциального ключа. В таком случае в реляционной модели по традиции один из потенциальных ключей должен быть выбран в качестве первичного ключа, а остальные потенциальные ключи, если они есть, будут называться альтернативными ключами. Первичный ключ – этот уникальный идентификатор для таблицы, то есть столбец или такая комбинация столбцов, что в любой момент времени не существует двух строк, содержащих одинаковое значение в этом столбце или комбинации столбцов. Дадим определение внешнего ключа. Пусть R2 – базовое отношение. Тогда внешний ключ, скажем FK в отношении R2 – это подмножество множества атрибутов R2, такое что: -существует базовое отношениеR1 с потенциальным ключом CK; -каждое значение FK в текущем значении R2, всегда совпадает со значением СК некоторого кортежа в текущем значении R1. Внешний ключ создается в зависимой таблице, которая ссылается на данные в главной таблице. Значение в колонке во внешнем ключе всегда должно существовать в главной таблице или быть неопределенным. При изменении значения первичного ключа в главной таблице возможны следующие варианты поведения зависимой таблицы: -каскадирование (Cascading). При удалении данных первичного ключа в главной таблице происходит удаление соответствующих данных внешнего ключа в зависимой таблице. Каскадировать операцию обновления, обновляя также внешний ключ в зависимой таблице; -ограничение (Restrict). При удалении строки из главной таблицы возможны следующие варианты поведения зависимой таблицы: Допускается удаление только тех строк главной таблицы, для которых нет связанных строк в зависимой таблице. При попытке изменить значение первичного ключа, с которым связаны строки в зависимой таблице, изменения отвергаются; -установление (Relation). При удалении строки из главной таблицы соответствующий внешний ключ в зависимой таблице устанавливается в неопределенное значение (NULL). При изменении данных первичного ключа внешний ключ устанавливается в неопределенное значение (NULL). Контрольные вопросы 1.Дайте понятие первичного и внешнего ключей. 2.Сколько ключей может иметь отношение? 3.Может ли данное реляционной модели быть разложено на составляющие? 4.Опишите поведение зависимой таблицы при условии каскадирования. 1.16 Реляционная система управления базами данных Реляционная система управления базами данных – это такая система, в которой выполняется как минимум два условия: - данные воспринимаются пользователем как таблицы (и никак иначе); - в распоряжении пользователя имеются операторы, которые генерируют новые таблицы из старых, и среди которых, по крайней мере, есть операторы SELECT, PROJECT, JOIN. Операция SELECT предназначена для извлечения определенных строк из таблицы. Операция PROJECT предназначена для извлечения определенных столбцов из таблицы. Операция JOIN предназначена для соединения двух таблиц на основе общих значений в общих столбцах. Следует выделить следующие особенности: - во-первых, таблицы представляют абстракцию способа физического хранения данных, в которой множество деталей на уровне памяти – размещение хранимой записи, последовательность хранимых записей, кодировка хранимых данных, предмет хранимых записей, хранимые структуры доступа, такие как индексы и т.д. – скрыто от пользователя. Концептуальный и внешний уровни в реляционной системе являются реляционными, а внутренний, или физический уровень – нет. На самом деле реляционная теория ничего не может сказать о внутреннем уровне вообще; она «заботится» о том, как база данных представлена пользователю; - во-вторых, все информационное содержимое базы данных представлено одним и только одним способом, а именно: явным заданием значений данных. Этот метод представления единственно возможный. В частности, нет никаких указателей, связывающих одну таблицу с другой. Здесь не идет речь о том, что их не может быть на физическом уровне. Например. Если служащий S1 работает в отделе D1, то эта информация представлена не указателем, а появлением значения D1 в строке E1 таблицы Служащих. Тем самым таблица Служащих связана с таблицей Отделов значением D1; - в-третьих, все значения данных атомарные (или скалярные). Это значит, что в каждой таблице в позиции на пересечении столбца и строки всегда находится только одно значение и никак не группа из нескольких значений. Итак, реляционные системы основаны на модели, которая называется реляционной моделью данных. Реляционная модель, в свою очередь, - это абстрактная теория данных, основанная на некоторых отношениях математики (в основном теории множеств и предикативной логики). Реляционная модель связана с тремя аспектами данных: структурой, целостностью и обработкой данных. Структура – это объекты данных, объектами в основном являются таблицы. Целостность обеспечивается внешними и первичными ключами, а операторы – это SELECT, PROJECT, JOIN и т.д. Существуют определенные правила целостности, которые должны соблюдаться в базе данных: - каждая строка таблицы должна включать уникальные значения одного из столбцов, называемого первичным ключом; - столбец одной таблицы базы данных, ссылающейся на первичный ключ другой таблицы, является внешним ключом. Достаточно точно можно дать следующее определение: реляционная модель – это способ рассмотрения данных, т.е. предписание для способов представления данных (посредством таблиц) и для способа работы с таким представлением (посредством операторов). Исходные полученные таблицы из называются них путем базовыми таблицами; выполнения каких-либо а таблицы, реляционных выражений, называются производными таблицами. Поэтому базовые таблицы существуют независимо, в то время как производные таблицы зависят от базовых таблиц. Базовые таблицы должны быть именованными. Большинство производных таблиц, наоборот, неименованные. Однако реляционные системы обычно поддерживают один вид производных таблиц, называемых представлением, которое имеет имя. Итак, представление – это именованная таблица, которая, в отличие от базовой, не может существовать сама по себе, а определяется в терминах одной или нескольких именованных таблиц. Различия между базовой таблицей и представлением часто характеризуется так: - базовые таблицы «реально существуют» в том смысле, что они представляют данные, которые действительно хранятся в базе данных; - представления, наоборот, «реально не существуют», а просто предоставляют различные способы просмотра «реальных» данных. Стандартным языком для работы с реляционными базами данных является язык SQL. Этот язык был разработан в компании IBM Research в начале 1970-х годов, его первой крупной реализацией был реляционный прототип IBM – продукта System R. С того времени диалекты языка SQL стали Американским национальным стандартом (ANSI), международным стандартом (ISO), стандартом системы UNIX (X/OPEN), стандартом корпорации IBM, описывающим «общий интерфейс базы данных», который является частью архитектуры системных приложений IBM (System Application Architecture, сокращенно SAA), федеральным стандартом обработки информации (FIPS). Язык SQL используется для описания реляционных операций, (т.е. операций, которые определяют и обрабатывают данные в реляционной форме). Язык SQL - это язык, ориентированный на работу с множествами. Язык не включает ни средств управления выполнением программы (ветвлений и циклов), ни средств для создания форм или отчетов. Функции управления реализуются с помощью языков программирования. Однако в некоторые версии SQL, например в Transact - SQL, используемые в Microsoft SQL Server, добавлены два оператора <IF ... ELSE> и <WHILE>. ANSI SQL включает набор стандартных команд, сгруппированных по шести категориям: манипулирование описание данными, данных, управление выполнение курсором, запросов, управление транзакциями, а также администрирование. В 1989 г. в исходный стандарт ANSI были добавлены инструкции для обеспечения целостности данных. Существуют три способа реализации SQL: Непосредственный вызов. Инструкции SQL передаются в систему управления базами данных (СУБД), которая создает и выводит требуемую таблицу. Примером непосредственного вызова может служить предложение SQL системы dBase IV. Язык модулей. Позволяет записывать в текстовый файл инструкции SQL, которые позднее выполняются приложением. Инструкция SQL должна начинаться с ключевого слова MODULE и определять язык программирования (LANGUAGE). Встроенный SQL. Это наиболее распространенный метод реализации; инструкции SQL генерируются системой управления или включаются как текст в команды языка системы. В настоящее время SQL стал единственным языком баз данных клиент/сервер. Сервер базы данных (нижний уровень) отвечает за хранение данных. Сервер баз данных (верхний уровень) добавляют или обновляют данные. Кроме того, приложение генерирует инструкции SQL. Элементы Transact - SQL В большинстве случаев используется упрощенный вариант команды SELECT имеющий следующий синтаксис: SELECT select list [INTO new_table] FROM table_source [WHERE search_condition] [GROUP BY group_by_expression] [HAVING search_condition] [ORDER BY order_expression [ASC \ DESC] ] В операторе SELECT указываются столбцы выбираемых данных, место хранения столбцов, критерий отбора данных и порядок сортировки, применяемый к этим данным. Более того, с помощью оператора SELECT можно сгруппировать данные и назначить критерий отбора на уровне группы. SELECT имеет следующий синтаксис: SELECT [ ALL \ DISTINCT] [TOP n [PERCENT] [WITH TIES ]] ALL – при указании этого ключевого слова в результат запроса разрешается включение дублирующихся строк. Параметр ALL используется по умолчанию. DISTINCT – это ключевое слово запрещает появление в результате дублирующихся строк. TOP n [PERCENT] [WITH TIES] – использование этой конструкции предписывает серверу выбирать не все строки, а только n первых. Для этого лишь требуется указать ключевое слово ТОР п. Можно выбирать также не фиксированное количество строк, а определенный процент от всех строк, удовлетворяющих условию для этого необходимо добавить ключевое слово PERCENT. При указании ключевого слова WITH TIES в результат будут включены строки, совпадающие с последними выведенными строками при указании ТОР n [PERCENT]. Это позволяет включать в результат все одинаковые строки, не опасаясь, что, например, из 12 одинаковых строк будут выведены только 7. WITH TIES допускается применять только в случае, если строки в результате упорядочены, то есть когда в запросе используется конструкция ORDER BY. Раздел INTO При указании этой конструкции результат выполнения запроса будет сохранен в новой таблице. Синтаксис раздела INTO следующий: [INTO new_table] Единственный аргумент, new_table, определяет имя таблицы, в которую будут вставлены результаты. Сервер автоматически создаст указанную таблицу с нужной структурой. Раздел FROM FROM {<table_source>} Ключевое слово FROM описывает таблицы или представления, связанные с изменяемой таблицей. Если в базе данных имеются таблицы или представления, ссылающиеся на изменяемую таблицу, то для обеспечения целостности данных необходимо указать эти объекты при выполнении команды UPDATE. Если выполняется, изменение данных, никак не влияющих на другие таблицы, то указание FROM не требуется. Порядок указания таблиц и представлений после ключевого слова FROM не влияют на результат работы команды UPDATE. Ссылки на исходные таблицы и представления указываются в конструкции UPDATE. Добавление директивы WHERE Используя тот же самый базовый оператор SELECT, можно сузить результаты запроса, добавив директиву WHERE. В директиве WHERE в качестве критерия отбора строк можно использовать несколько столбцов. Для проверки значений полей можно использовать различные операторы сравнения. Описание этих операторов приведено в таблице 1. Таблица 1. Операторы сравнения директивы WHERE Описание Оператор = Равно > Больше чем < Меньше чем >= Больше либо равно <= Меньше либо равно <> Не равно IN Входит в заданный список значений between... and Входит в интервал значений like Содержит значение, соответствующее заданному шаблону. Шаблон для сравнения – это строка, состоящая из одного или нескольких символов подстановки. Список символов-шаблонов можно найти в справочной системе SQL Server. Помимо перечисленных выше операторов сравнения, значения столбцов, включаемые в директиву WHERE, можно проверять с помощью логических операторов AND и OR. При использовании оператора AND возвращаемые строки должны отвечать обоим условиям, расположенным слева и справа от оператора AND. Оператор же OR требует, чтобы было выполнено хотя бы одно из заданных условий. Добавление директивы ORDER BY Достаточно добавить директиву ORDER BY, чтобы отсортировать записи по любому столбцу. Для сортировки в порядке убывания используется ключевое слово DESC. В Microsoft SQL Server предусмотрено несколько вариантов сортировки. По умолчанию используется словарный порядок, не учитывающий регистр букв (Dictionary Order, Caseinsensitive). Порядок сортировки определяется во время установки SQL Server и позже его переопределить нельзя. Использование директивы WHERE для объединения таблиц Не всегда будет достаточно просмотра данных только из одной таблицы. Данные в таблице могут быть связаны с данными других, таблиц базы данных. Для объединения нескольких таблиц вместе в одном операторе SELECT, можно использовать директиву WHERE: SELECT author.au_Iname, author.au_fname, titles.title FROM author, titleauthor, titles WHERE authors.au_id =titleauthor.au_id AND Titleauthor.title_id=titles.title_id ORDER BY authors.au_Iname, authors.au_fname, titles.title Нужно обратить внимание на способ записи имен столбцов в этом операторе. Во избежание ошибки неоднозначности при отборе данных одним оператором SQL из нескольких таблиц (заданных директивой FROM) для столбцов с одинаковыми именами в различных таблицах необходимо задавать в виде префиксов имена соответствующих таблиц. Использование оператора JOIN для объединения таблиц Объединение таблиц может быть реализовано и другим способом, а именно – с помощью оператора JOIN. Этот метод объединения таблиц соответствует стандарту ANSI и имеет следующий синтаксис: SELECT столбец 1, столбец 2, столбец З FROM таблица 1 оператор_объединения таблица 2 ON критерий_объединения Рассматриваемый нами оператор JOIN определяет, каким образом должны быть возвращены строки из объединяемых таблиц. Директива ON действует подобно директиве WHERE, указывая в каких полях в объединяемых таблицах должно проверяться равенство Различные операторы объединения описаны в таблице 2. значений. Таблица 2. Операторы объединения таблиц Оператор Описание 1 объединения CROSS JOIN 2 Возвращает каждую строку из первой таблицы, объединенную с каждой строкой из второй таблицы. Количество строк результата равно произведению числа строк в каждой таблице. INNER JOIN Возвращает все строки из каждой таблицы, удовлетворяющие критерию отбора, который задан в директиве WHERE, при условии совпадения значений в объединяемых полях, указанных в директиве ON. LEFT [OUTER] JOIN Возвращает все строки таблицы, которые находятся слева в объединении, удовлетворяющие критерию отбора директивы WHERE, и только те строки таблицы, расположенные справа в объединении, в которых существует совпадение по объединяемым полям, заданным в директиве ON 1 2 RIGHT [OUTER] Возвращает все строки таблицы, которые находятся JOIN справа в объединении, удовлетворяющие критерию отбора директивы WHERE, и только те строки таблицы, расположенные слева в объединении, в которых существует совпадение по объединяемым полям, заданным директивой ON. FULL [OUTER] JOIN Возвращает все удовлетворяющие строки из критерию каждой отбора таблицы, директивы WHERE, в которых нет совпадения по объединяемым полям, заданным директивой ON. С помощью оператора объединения команду SQL из предыдущего примера можно записать следующим образом: SELECT authors.au_Iname, authors. au_fname, titles.title FROM (authors INNER JOIN titleauthor ON authors.au_id = titleauthor.au_id) INNER JOIN titles ON titleauthor.title_id = titles.title_id ORDER BY authors.au_Iname, authors.au_fname, titles.title Итоговые функции в операторах SQL Описываемые в данном разделе функции возвращают итоговые значения для заданных столбцов или выражений в форме итоговых сумм, количества записей, средних значений и т.п. Итоговая функция может возвращать одно значение для всех строк, отобранных запросом. Если же в оператор SQL была добавлена директива GROUP BY, то такое итоговое значение вычисляется на каждом уровне группировки. Список итоговых функций, которые можно использовать в запросах, приведен в таблице 3. Таблица 3. Итоговые функции Итоговая функция Описание AVG Возвращает среднее из всех значений в столбце путем вычисления их общей суммы, деленной на количество строк. COUNT Возвращает количество значений, отличных от NULL, в указанном столбце или выражении. Если в качестве выражения задан символ звездочки (например, count (*)), то результатом является число строк, отобранных запросом. Возвращает MIN минимальное значение в заданном столбце или выражении. МАХ Возвращает максимальное значение в заданном столбце или выражении. Возвращает сумму всех значений в заданном SUM столбце или выражении. В следующем примере функция count применяется ко всем строкам таблицы titles без группировки: SELECT count (title) 'наименований' FROM titles Результат представляет собой количество записей в таблице titles. Использование директивы GROUP BY Предположим, что вам нужно сгруппировать все похожие строки результата выполнения запроса по значениям одного или нескольких столбцов. Это можно сделать, задав требуемые столбцы в директиве GROUP BY. Если задано несколько столбцов, то строки сначала группируются по первому столбцу, а затем (внутри этих групп) – по второму столбцу и т.д. В следующем примере директива GROUP BY используется вместе с итоговой функцией, чтобы показать, как эта функция применяется к значениям внутри каждой отдельной группы: SELECT authors.au_Iname, authors.au_fname, count (titles.title) 'Названий' FROM authors, titleauthor, titles WHERE authors.au_id = titleauthor. au_id AND titleauthor.title_id = titles.title_id GROUP BY authors.au_Iname, authors.au_fname Использование директивы HAVING Подобно директиве WHERE, директива HAVING используется для задания критерия отбора возвращаемых запросом данных. Различие связано с уровнем, на котором выполняется проверка критерия. В директиве WHERE критерий используется для ограничения количества строк, возвращаемых запросом. А затем директива GROUP BY формирует из этих строк группы и вычисляет заданные значения. После этого критерии директивы HAVING используется для ограничения количества групп в соответствии с данными на уровне группы. В следующем примере директива HAVING используется для выборки имен только тех авторов, которые написали более одной книги: SELECT a.au_Iname, a.au_fname, count (c.title) 'Названий' FROM authors a, titleauthor b, titles с WHERE a.au_id = b.au_id AND b.title_id = c.title_id GROUP BY a.au_Iname, a.au_fname HAVING count (c.title) > 1 Cоздание таблиц Создание таблиц выполняется инструкцией: CREATE TABLE имя таблицы (имя_столбца тип [NULL | NOT NULL] [DEFAULT значение_по_умолчанию] [ограничение_на_столбец]... ; [, имя_столбца тип [NULL | NOT NULL] [DEFAULT значение_по_умолчанию] [ограничение на столбец]...]... [ограничение на таблицу]...) Ограничения на таблицу используют более одного столбца. Ограничение на первичный ключ является ограничением на всю таблицу, так как использует более одного столбца. Ограничения с проверкой также могут применяться ко всей таблице, если они используют более одного столбца (столбцы должны принадлежать одной таблице). В ряде систем имеются специальные команды (не связанные с оператором CREATE TABLE) для обработки значений по умолчанию, правил и ограничений на целостность. Первые СУБД иногда перекладывали вопросы, связанные со значениями по умолчанию и ограничениями на целостность, на приложения и не поддерживали соответствующие команды SQL. Удаление базы данных При удалении базы данных или объекта базы данных канут в лету все связанные с ними структуры и данные. Поэтому в большинстве систем выполнять команду DROP разрешается только либо владельцу соответствующего объекта, либо лицу, наделенному специальными полномочиями. Синтаксис команды DROP DATABASE обычно имеет следующий вид: DROP DATABASE имя_базы_данных Это очень опасная команда, так как при ее выполнении уничтожается все содержимое базы данных. Удаление таблиц Для удаления таблицы из базы данных используется команда DROP TABLE. В большинстве диалектов SQL она имеет следующий вид: DROP TABLE имя_таблицы При выполнении этой команды из базы данных удаляется заданная таблица со всем ее содержимым. Если же требуется сохранить структуру таблицы, но удалить из нее все данные, можно воспользоваться командой DELETE. Добавление, изменение и удаление данных После проектирования и создания базы данных (таблиц и, возможно, индексов) в нее нужно поместить данные, которые впоследствии можно будет в случае необходимости добавлять, изменять и удалять. В SQL для изменения данных используются три основные команды (их часто называют операторами модификации данных). Оператор INSERT добавляет новые строки в базу данных. - Оператор UPDATE изменяет существующие в базе данных строки. - Оператор DELETE удаляет строки из базы данных. Другой метод добавления данных в таблицу подразумевает их загрузку с помощью специальной команды вставки из файла операционной системы. Этот метод особенно подходит для переноса данных из одной системы управления базами данных в другую. Реляционные системы с графическим интерфейсом пользователя предоставляют для ввода данных специальные формы (form) – они напоминают обычный бумажный бланк, в строки которого вводятся необходимые данные. Формы обычно удобнее использовать, чем операторы модификации данных, так как они позволяют автоматизировать и упростить работу. Однако все действия по модификации в системах реляционных баз данных выполняются на основе команд SQL, так что изучать их надо даже независимо от того, планируете ли вы их использовать в будущем. Выполнять операторы модификации данных обычно позволяется не всем. Владелец базы данных или владельцы отдельных объектов базы данных с помощью операторов GRANT и REVOKE могут разрешить отдельным пользователям выполнять определенные команды модификации. С помощью каждого оператора модификации (INSERT, UPDATE, DELETE) за один раз можно изменять данные только в одной таблице. Однако в ряде систем эти изменения могут касаться данных из других таблиц и даже других баз данных. Используя оператор SELECT в команде модификации данных, можно переместить значения из одной таблицы в другую. Добавление новой строки Оператор INSERT позволяет добавлять строки в базу данных одним из двух способов: с помощью ключевого слова VALUES или с помощью оператора SELECT. Опишем сначала правила использования ключевого слова VALUES. Ключевое слово VALUES определяет значения некоторых или всех данных в столбцах новой строки. Ниже представлена общая форма оператора INSERT, использующего ключевое слово VALUES: INSERT INTO имя_таблицы [(столбец1 [, столбец2]...)1] VALUES (константа1 [, константа2]...) Значения нужно вводить в том порядке, в котором определялись столбцы в соответствующем операторе CREATE TABLE (другими словами, сначала идентификационный номер, затем имя, адрес, город и, наконец, штат). Данные после ключевого слова VALUES заключаются в круглые скобки. В большинстве систем значения вводятся в двойных или одинарных кавычках и разделяются запятыми. Для каждой добавляемой строки используется отдельный оператор INSERT. Вставка данных в несколько столбцов. Если данные добавляются не во все столбцы таблицы, их нужно дополнительно определить. Во избежание сбоев, для столбцов, значения которых не вводятся, должны быть определены значения по умолчанию либо они должны допускать нулевые значения. Порядок перечисления столбцов в операторе INSERT может быть любым, но при этом он должен соответствовать порядку перечисления значений. Использование оператора SELECT в команде INSERT Для получения данных из одной или нескольких таблиц в команде INSERT можно использовать оператор SELECT. Упрощенный синтаксис команды INSERT, использующей оператор SELECT, имеет следующий вид: INSERT INTO имя_таблицы [(вставляемый_список_столбцов)] SELECT список_столбцов FROM список_таблиц WHERE условия Оператор SELECT в команде INSERT позволяет взять данные из нескольких или всех столбцов одной таблицы и вставить их в другую таблицу. Изменение существующих данных В то время как оператор INSERT добавляет в таблицу новые строки, оператор UPDATE предназначен для изменения существующих в таблице данных. В операторе UPDATE нужно указать изменяемые строки и их новые значения. Новые данные могут быть константами выражениями, или могут быть получены из других таблиц. или Ниже приведен упрощенный синтаксис команды UPDATE, изменяющей выбранные строки: UPDATE имя_таблицы SET имя_столбца = выражение [WHERE условие] Ключевое слово UPDATE предшествует названию таблицы или курсора (виртуальной таблицы). Как и в случае с другими операторами модификации данных, в каждом операторе UPDATE можно изменять данные только одной таблицы. Если при выполнении оператора UPDATE нарушаются ограничения на целостность (например, добавляемое значение имеет неверный тип), система запрещает обновление данных и обычно выдает сообщение об ошибке. В предложении SET определяются столбцы и указываются их новые значения. В предложении WHERE можно указать изменяемые строки. Если предложение WHERE не используется, то при выполнении команды UPDATE будут изменены значения во всех строках столбцов указанных в предложении SET. Предложение WHERE в операторе UPDATE определяет изменяемые строки. (Оно аналогично предложению WHERE в операторе SELECT). Предложение WHERE в операторе UPDATE может включать в себя подзапросы к одной или нескольким другим таблицам. Удаление данных: команда DELETE Не менее важной, чем добавление и изменение строк, является возможность их удаления. Подобно INSERT и UPDATE, команда DELETE позволяет манипулировать с одной или несколькими строками. Так же, как и в случае с другими операторами модификации данных, при удалении строк можно пользоваться информацией из других таблиц. Оператор DELETE имеет следующий синтаксис: DELETE FROM имя_таблицы WHERE условие В предложении WHERE определяются подлежащие удалению строки. В случае отсутствия предложения WHERE в операторе DELETE будут удалены все строки таблицы. Контрольные вопросы 1. В чем различие между базовой таблицей и представлением? 2. Укажите назначение оператора выборки данных 1.17 Обоснование необходимости создания баз данных Цель использования заключается в автоматизированной системы управления упрощении работы управленческого коллектива, сокращении времени обработки информации, улучшении процесса производства, уменьшении вероятности возникновения ошибок. В современном мире практически ни одна автоматизированная система управления не обходится без баз данных. БД являются основой большинства современных справочных систем, систем автоматизированного ведения бухгалтерского учета, экспертных систем и многих других программных продуктов. Это обусловлено, прежде всего, простотой и удобством этого типа хранения данных В настоящее время создано большое количество СУБД, имеющих приблизительно одинаковые возможности. Все они позволяют создавать файлы БД, редактировать их, обновляя записи, удаляя ненужные, добавляя новые. Созданные файлы БД можно упорядочивать по значению определенного индексного реквизита, выполнять поиск информации в базе, формировать отчеты заданной формы. Кроме того, очень важной является функция изменения структуры уже созданного файла базы данных. Технология баз и банков данных является ведущим направлением организации внутримашинного информационного обеспечения. Развитие технологии баз данных информационных определяется потребностей рядом факторов: пользователей, ростом требованиями эффективного доступа к информации, появлением новых видов массовой памяти, увеличением ее объемов, новыми средствам и возможностями в области коммуникаций и многим другим База данных может быть сосредоточена на одном компьютере или распределена между несколькими. Для того чтобы данные одного исполнителя были доступны другим и наоборот, эти компьютеры должны быть соединены в единую вычислительную систему с помощью вычислительных сетей. Базы данных, расположенные на одном компьютере, называются локальными, а на нескольких соединенных сетями называются распределенными. Распределенные базы данных более гибки и адаптивны, менее чувствительны к выходу из строя оборудования. Назначение локальных баз данных в организации более простого и дешевого способа информационного обслуживания пользователей при работе с небольшими объемами данных и решении несложных задач. Назначение распределенных баз данных состоит в предоставлении более гибких форм обслуживания множеству удаленных пользователей при работе со значительными объемами информации в условиях географической или структурной разобщенности. Распределенные системы обеспечивают широкие возможности по управлению сложных с многоуровненных и многозвенных объектов и процессов. Для большинства средних и мелких предприятий, российских предприятий информационное решение с использованием сетей персональных компьютеров является фактическим стандартом. В тоже время прикладное предприятиями программное обеспечение, используемое этими (такое как автоматизированные документооборота, системы управления промышленными и торговыми предприятиями и др.) создано при помощи инструментария предыдущего поколения, и не способно эффективно использовать ресурсы, предоставляемые новыми технологиями. К современным информационным технологиям, системам уровня предприятия производительности, предъявляются надежности, очень высокие обеспечения требования целостности и безопасности данных (особенно при сегодняшнем развитии Internet), защиты от возможности системных и взаимодействия аппаратных с сбоев, другими масштабируемости, системами, работы в гетерогенных распределенных вычислительных сетях. Последнее время большое распространение получила новая технология построения базы данных – технология «клиент-сервер». Эта технология дает ряд неоспоримых преимуществ, по сравнению с технологией предыдущего поколения – технологией «файл-сервер». В частности: она предоставляет большие возможности по защите данных от несанкционированного доступа и разграничение прав доступа на уровне отдельных записей и полей, дает возможность работы с большими мультимедийными и нестандартными данными. также новая технология позволяет работать как в локальных сетях, так и в глобальных и Internet, и многое другое. Системы, построенные на новой технологии «клиент-сервер», отличаются высокой степенью безопасности, территориальной независимостью, не требовательностью к аппаратной мощности клиентских станций. Контрольные вопросы 1. Назовите факторы, определяющие развитие технологии баз данных 2. В чем назначение локальных баз данных? 1.18 Система безопасности Данные в базе данных должны быть защищены, чтобы гарантировать их правильность, согласованность и автоматизированный доступ к ним. Современные системы баз данных осуществляют защиту правильности и целостности в требуемом окружении базы данных. В частности MS SQL Server адресует эти ключевые области средствами программируемого сервера, что позволяет запрограммировать корпоративную целостность данных, бизнес - правила и транзакции и распределить их между клиентскими приложениями. Этот программируемый сервер усиливает целостность данных внутри самой базы данных и гарантирует соблюдение коммерческой политики. Поскольку все правила хранятся вместе с данными, и единственной точкой контроля согласованности данных является сервер, устраняется необходимость хранения этих правил в каждом конечном приложении. Когда создаются новые или изменяются старые правила, они кодируются только в одном месте – в самой базе данных. Кроме того, Microsoft SQL Server представляет уникальную поддержку целостности распределенных данных, которая обеспечивает правильность и согласованность данных, распределенных на нескольких серверах. Обеспечивая целостность данных, реплицированных или частично распределенных по нескольким серверам, Microsoft SQL Server позволяет облегчить развертывание корпоративных приложений в распределенной конфигурации. Надежность базы данных может быть увеличена, потому что целостность данных поддерживается независимо от программ приложения. Повышена также безопасность баз данных, поскольку правила и транзакции, так же как и таблицы базы данных, защищены от несанкционированного доступа. Безопасность предусматривает концепция домена и пароля отдельной регистрации для каждого запущенного приложения. Она также предусматривает группы пользователей. Большие группы пользователей управляются посредством авторизации групп и добавления в них пользователей. Система безопасности имеет программируемый интуитивно понятный графический интерфейс, что позволяет любому узлу управлять безопасностью сети. Microsoft System Management администратору отдельной конфигурацией, лицензировать клиентов. SMS системы автоматизирует и Server (SMS) управлять модернизировать многие задачи позволяет программной десятки и тысяч минимизирует исключительные ситуации, требующие вмешательства специалистов. Internet – это новый тип распределенного окружения клиент/сервер, который расширяет информационных границы технологий. традиционных Основные корпоративных требования к нему – безопасность, надежность и расширяемость хранения информации. Безопасность в Internet насущна и для расширения предприятий, и для ведения электронной коммерции. Промышленность сфокусирована на определении технологий и промышленных стандартов для безопасных коммуникаций между Web-серверами и броузерами. Технологии и стандарты включают в себя шифрование, безопасные транзакции, аутентификацию пользователей и идентифицирующий код или цифровую подпись. Microsoft и ее партнеры участвуют в разработке нескольких важных новых технологических стандартов, в том числе Secure Socket Layer (SSL), безопасный протокол шифрования данных, аутентификация сервера, целостность сообщений для TCP/IP соединения, безопасные электронные транзакции и технологический стандарт для защиты покупок по платежным картам в открытых сетях, подобных Internet. Проблемы традиционных безопасности коммерческих и целостности приложений были несколько решены лет для назад технологиями Microsoft SQL Server, такими как безопасность пользователя и приложения, шифрование целостность потока данных, данных и репликация контроль данных согласованности, и прозрачность распределенных транзакций. Решение этих проблем для Internet не потребовало новой технологии. Применение технологии SQL Server к Internet дает проверенное решение сложной проблемы безопасности и целостности данных. И Internet, и intranet серверы нуждаются в контроле над добавлением анонимных пользователей с особой проверкой доступа каждого пользователя и каждой группы. И Microsoft Internet Information Server, и Microsoft SQL Server строятся на модели безопасности Windows NT Server, предоставляя специфические средства доступа. Чтобы создать приложение, которое устанавливает меры безопасности для систем баз данных можно использовать файловый ввод/вывод Visual Basic, OLE или API для получения данных из диаграммы организации или другого файла или приложения. Затем эту информацию можно использовать для создания объектов Login, User или Group и вставки их в коллекции Logins, Users или Groups. Затем назначаются полномочия с использованием метода Grant объектов Table, Database или StoredProcedure. В системах клиент/сервер многочисленные клиенты и серверы взаимодействуют по одной или более связанным и совместно используемым сетям. Система безопасности SQL Server препятствует получением клиентом несанкционированного доступа к данным, хранящимся на SQL Server в сетях совместного использования. SQL Server разрешает системному администратору базы данных определять клиентов, которые могут войти на сервер. Имеется три режима безопасности SQL Server: Стандартная модель безопасности SQL Sever требует от клиентов сообщать имя пользователя и пароль каждый раз при запросе соединения. Этим режимом также поддерживаются доверительные соединения. Интегрированная модель безопасности SQL Sever получает информацию от системы защиты Windows, устраняя необходимость дополнительных регистраций. Говорят, что клиенты, подсоединяющиеся в этом режиме, устанавливают “доверительные соединения”. Смешанная модель безопасности комбинировать способы безопасности. SQL Sever позволяет По умолчанию SQL Server использует стандартную модель безопасности. Клиенты Excel могут подсоединяться к SQL Server с доверительными или стандартными соединениями. При решении реализовать SQL Workbook Publisher для корпоративной сети необходимо установить смешанную или стандартную модель безопасности. Если в этом нет необходимости, то можно использовать тот режим защиты, который кажется наиболее подходящим. Безопасность данных заключается в том, чтобы по возможности исключить несанкционированный доступ к ним. Для этого служит система регистрации пользователей-клиентов, кодирование доступа к отдельным частям баз данных. Осуществляет регистрацию сетевой администратор. Одно из преимуществ SQL состоит в том, что он имеет собственную систему защиты. Контрольные вопросы 1. Назовите модели безопасности SQL Server. 2. В чем проблема безопасности и целостности данных в современных БД? 1.19 Виды привилегий Привилегии в СУБД можно подразделить на две категории: привилегии безопасности и привилегии доступа. Привилегии безопасности позволяют выполнять административные действия. Привилегии доступа, в соответствии с названием, определяют права доступа субъектов к определенным объектам. Привилегии безопасности Привилегии безопасности всегда выделяются конкретному пользователю (а не группе, роли или всем) во время его создания (оператором CREATE USER) или изменения характеристик (оператором ALTER USER). Таких привилегий пять: - security - право управлять безопасностью СУБД и отслеживать действия пользователей. Пользователь с этой привилегией может подключаться к любой базе данных, создавать, удалять и изменять характеристики пользователей, групп и ролей, передавать права на доступ к базам данные другим пользователям, управлять записью регистрационной информации, отслеживать запросы других пользователей и, наконец, запускать INGRESкоманды от имени других пользователей. Привилегия security необходима администратору сервера баз данных, а также лицу, персонально отвечающему за информационную безопасность. Передача этой привилегии другим пользователям (например, данных) увеличивает число потенциально слабых мест в защите данных. - createdb - право на создание и удаление баз данных. Этой привилегией, помимо администратора сервера, должны обладать пользователи, которым отводится роль администраторов отдельных баз данных. - operator - право на выполнение действий, которые традиционно относят к компетенции оператора. Имеются в виду запуск и остановка сервера, сохранение и восстановление информации. Помимо администраторов сервера и баз данных этой привилегией целесообразно наделить также администратора операционной системы. - maintain_locations - право на управление расположением баз. администраторы сервера баз данных и операционной системы. - trace - право на изменение состояния флагов отладочной трассировки. Данная привилегия полезна администратору сервера баз данных и другим знающим пользователям при анализе сложных, непонятных ситуаций. Привилегии доступа Привилегии доступа выделяются пользователям, группам, ролям или всем посредством оператора GRANT и изымаются с помощью оператора REVOKE. Эти привилегии, как правило, присваивает владелец соответствующих объектов (он же - администратор базы данных) или обладатель привилегии security (обычно администратор сервера баз данных). Прежде чем присваивать привилегии группам и ролям, их (группы и роли) необходимо создать с помощью операторов CREATE GROUP и CREATE ROLE. Для изменения состава группы служит оператор ALTER GROUP. Оператор DROP GROUP позволяет удалять группы, правда, только после того, как опустошен список членов группы. Оператор ALTER ROLE служит для изменения паролей ролей, a DROP ROLE - для удаления ролей. Создавать и удалять именованные носители привилегий, а также изменять их характеристики может лишь пользователь с привилегией security. При совершении подобных действий необходимо иметь подключение к базе данных, в которой хранятся сведения о субъектах и их привилегиях. Привилегии доступа можно подразделить в соответствии с видами объектов, к которым они относятся. В СУБД INGRES таких видов пять: - таблицы и представления - процедуры - базы данных - сервер баз данных - события. Стандартные привилегии SQL привилегии определенные ANSI - это привилегии объекта. Это означает, что пользователь имеет привилегию, чтобы выполнить данную команду только на определенном объекте в базе данных. Очевидно, что привилегии должны различать эти объекты. Привилегии объекта связаны одновременно и с пользователями и с таблицами. То есть, привилегия дается определенному пользователю в указанной таблице, или базовой таблице или представлении. Вы должны помнить, что пользователь создавший таблицу (любого вида), является владельцем этой таблицы. Это означает, что пользователь имеет все привилегии в этой таблице и может передавать привилегии другим пользователям в этой таблице. Привилегии, которые можно назначить пользователю: SELECT Пользователь с этой привилегией может выполнять запросы в таблице. INSERT Пользователь с этой привилегией может выполнять команду INSERT в таблице. UPDATE Пользователь с этой привилегией может выполнять команду UPDATE на таблице. Вы можете ограничить эту привилегию для определенных столбцов таблицы. DELETE Пользователь с этой привилегией может выполнять команду DELETE в таблице. REFERENCES Пользователь с этой привилегией может определить внешний ключ, который использует один или более столбцов этой таблицы, как родительский ключ. Вы можете ограничить эту привилегию для определенных столбцов. Кроме того, вы столкнетесь с нестандартными привилегиями объекта, такими, например как INDEX (ИНДЕКС) дающим право создавать индекс в таблице, SYNONYM (СИНОНИМ) дающим право создавать синоним для объекта и ALTER (ИЗМЕНИТЬ) дающим право выполнять команду ALTER TABLE в таблице. Механизм SQL назначает пользователям эти привилегии с помощью команды GRANT. Контрольные вопросы 1. В чем отличие выделения привилегий безопасности и привилегий доступ? 2. Кто имеет все привилегии в таблице и может передавать их другим пользователям? Раздел 2. Проектирование базы данных 2.1 Этапы проектирования базы данных Задача проектирования базы данных проходит четыре основные этапа: - анализ предметной области; - построение концептуальной модели; - построение логической модели; - построение физической модели. На первом этапе необходимо провести подробное словесное описание объектов предметной области и реальных связей, которые присутствуют между описываемыми объектами. Предметная область отображается моделями данных нескольких уровней. Предметная область может относиться к любому типу организации. Необходимо различать полную предметную область (крупное предприятие) и организационную единицу этой предметной области. Организационная единица, в свою очередь, может представлять свою предметную область (например, цех по производству или отдел предприятия). Информация для описания предметной области зависит от реальной модели и может включать в себя сведения о людях, местах, предметах, событиях и понятиях. Существует два подхода к выбору состава и структуры предметной области: - функциональный подход – применяется, когда известны функции некоторой группы лиц и комплексов задач, для обслуживания информационных потребностей которых создается рассматриваемая БД; - предметный подход, – когда информационные потребности будущих пользователей БД жестко не фиксируются. Чаще всего на практике рекомендуется использовать некоторый вариант, когда, с одной стороны, нужно ориентироваться на конкретные задачи, а с другой стороны, учитывать возможность наращивания новых приложений. Главными элементами концептуальной модели данных являются объекты и отношения. Объекты представляют аспекты, которые пользователи считают важными в моделируемой части реальности. Отношения связывают два объектных множества. Отношение само по себе является объектным множеством, состоящим из пар объектов-элементов, взятых из двух множеств, которые соединяет отношение. Логическое проектирование заключается в определении числа и структуры таблиц, формировании запросов к БД, определении типов отчетных документов, разработке алгоритмов обработки информации, создании форм для ввода и редактирования данных. Решение проблем проектирования на физическом уровне во многом зависит от используемой СУБД. Чаще всего пользователю предоставляется возможность настройки отдельных параметров, которая не составляет большой проблемы. 2.2. Пример описания предметной области Пусть требуется создать базу данных для учета готовой продукции, выпускаемой на предприятии. База должна содержать сведения о готовой продукции: уникальный код продукции, его наименование, себестоимость, единицу измерения. В качестве мест хранения могут выступать участки производства, склады. Информация о местах хранения включает его код, наименование, отдел или подразделение, за которым оно закреплено. Заметим, что одно и тоже наименование готовой продукции может храниться на разных местах хранения. Сведения об отделах включают уникальный номер отдела, наименование, фамилию руководителя. Информация о сотрудниках содержит табельный номер, ФИО сотрудника, отдел, в котором он работает, занимаемую должность, адрес проживания, оклад. Готовая продукция поступает в места хранения в соответствии с документом «Накладная на перемещение». Накладная содержит дату и номер документа, подразделение передавшее и принявшее продукцию, наименование продукции, единицу измерения, количество переданной продукции. Хранящаяся в базе данных информация может быть использована для учета производства готовой продукции, заполнения и корректировки сведений о готовой продукции, отслеживания количества готовой продукции во всех местах хранения, составления списков сотрудников предприятия, корректировки данных об отделах предприятия. Собранные сведения о данных, которые необходимо хранить в проектируемой базе данных, часто называют спецификацией требований предприятия. 2.3 Концептуальная модель базы данных Исходя из спецификации требований к хранящимся данным, определяются основные типы сущностей, то есть объекты. Для рассматриваемого примера анализ показывает, что основными сущностями являются: - готовая продукция; - склад; предметной области - отдел; - сотрудник; - накладная на перемещение. Развернутая информация обо всех сущностях, с указанием имени, описанием имени и особенности использования приведены в таблице 1. Таблица 1 - Сведения о типах сущностей Имя сущности 1 Продукция 1 Описание 2 Готовая продукция 2 Псевдоним 3 Номенклатура, товар 3 Место хранения Склад Место хранения продукции Отдел Подразделение Подразделение предприятия Сотрудник Работающий Работник на предприятии персонал Накладная на пе- Документ Накладная ремещение передачи готовой продукции на склад Особенности использования 4 Одна и та же продукция может храниться на разных складах 4 Каждый склад закреплен за определенным отделом Отдел может иметь несколько складов Сотрудник может работать только в одном отделе Посредством этого документа продукция передается со склада на склад На следующем шаге необходимо определить типы связей, существующие между отдельными сущностями (таблица 2). Таблица 2- Основные типы связи Тип сущности Тип связи Тип сущности Продукция Хранится на Склад Сотрудник Работает в Отдел Склад Закреплен за Отдел Склад Оформляет Накладная на перемещение Продукция Связан с Накладная на перемещение Связь «Хранится на» является связью «многие ко многим», так как одна и та же Продукция может храниться на разных Складах, и на каждом Складе может храниться разная Продукция. Связь «Работает в» является связью «один ко многим», так как Сотрудник может работать только в одном Отделе, в то же время в одном Отделе работают несколько Сотрудников. Связь «Закреплен за» является связью «один ко многим», так как Склад закреплен только за одним Отделом, но Отдел может иметь несколько Складов. Связь «Оформляет» является связью «один ко многим», так как Склад может оформлять несколько Накладных на перемещение, при этом каждая накладная может быть оформлена только на одном Складе. Связь «Связана с» – это связь «многие ко многим», так как Накладная на перемещение может иметь несколько строк с разной Продукцией. Выделим атрибуты для каждой сущности (таблица 3). Таблица 3 - Атрибуты сущностей Тип сущности Атрибут 1 2 Продукция Код Наименование Себестоимость Единица Код Наименование Отдел Склад Отдел Сотрудник Накладная на перемещение Проанализировав таблицу Номер Наименование ФИО руководителя Табельный номер ФИО Должность Оклад Адрес Отдел Дата Номер Склад передавший Склад принявший Продукция Единица Количество 3, выделим все возможные потенциальные ключи для каждой сущности и выберем первичные ключи. Таблица 4 – Сущности и их первичные ключи Сущность Первичный ключ Продукция Код Склад Код Альтернативный ключ Наименование Наименование Отдел Сотрудник Накладная на перемещение Номер Табельный _номер Номер, продукция Наименование 2.4 Логическая модель базы данных На этом этапе разработки концептуальная модель данных будет преобразована в логическую модель данных для реляционной СУБД. Сначала проанализируем связи типа многие-ко-многим для их возможного преобразования в связи типа один-ко-многим. Связь Продукция Хранится на Складе удалим как избыточную – эти данные можно вычислить используя связи между сущностями Продукция, Накладная на перемещение и Склад. Следующим этапом необходимо провести нормализацию. Приведение отношений к первой нормальной форме можно сказать выполнено, так как любое отношение в реляционной базе данных автоматически находится в первой нормальной форме. Следовательно, ранее созданные отношения удовлетворяют требованиям 1НФ. Таблица находится во 2НФ, если она удовлетворяет требованиям 1НФ и все ее поля, не входящие в первичный ключ, связаны полной функциональной зависимостью с первичным ключом. В данном случае только отношение Накладная на перемещение имеет составной ключ, все остальные отношения автоматически находятся во 2НФ. Для приведения отношения Накладная на перемещение ко 2НФ преобразуем его в два отношения Накладная_шапка и Накладная _строка. Во второе отношение добавим новое поле Номер_строки, благодаря которому сможем вводить в одну накладную несколько строк одной и той же продукции. Приведение отношений к третьей нормальной форме сводится к исключению транзитивных зависимостей. В нашем случае транзитивная зависимость есть только в отношении Накладная на перемещение – поле Единица зависит от поля Продукция. Так как поле Единица содержится в отношении Продукция, то его можно удалить из отношения Накладная на перемещение. 2.5 Физическая модель базы данных Как уже было рассмотрено раньше, физическая модель зависит от выбранной СУБД. Физические модели баз данных определяют способы размещения данных в среде хранения и способы доступа к этим данным, которые поддерживаются на физическом уровне. В каждой СУБД по-разному организованы хранение и доступ к данным, однако, существуют некоторые файловые структуры, которые имеют общепринятые способы организации. В системах баз данных файлы и файловые структуры можно классифицировать следующим образом: файлы прямого доступа, файлы последовательного доступа, индексные файлы, инвертированные списки, взаимосвязанные файлы. Индексные файлы можно представить как файлы, состоящие из двух частей. Это не обязательно физическое совмещение этих двух частей в одном файле, в большинстве случаев индексная область образует отдельный индексный файл, а основная область образует файл, для которого создается индекс. Индексные файлы строятся для первичных ключей, однозначно определяющих запись. Во второй области последовательно располагаются все записи файла. После реализации физического варианта базы данных необходимо протестировать производительность созданной базы данных. Тестирование сводится к оценке времени ответа системы. Если время ответа приемлемо для пользователя, то можно начать эксплуатацию базы данных, введя все имеющиеся данные. Иначе необходимо пересмотреть физическую реализацию базы данных, возможно введя контролируемую избыточность данных. Раздел 3 Задания для лабораторных работ и самостоятельной работы 3.1 Лабораторные работы Лабораторная работа 1 Цель работы: Создание баз данных с помощью СУБД MS Access. Изучение возможностей режима Конструктор таблиц. Задание: Создать таблицы базы данных “Успеваемость”. Описать структуру записей таблиц, заполнить таблицы данными. Создайте базу данных, в которой хранятся сведения о результатах сдачи сессии студентами института. При создании таблиц продумать для каждого поля тип данных, соответствующий информации, которая будет в нем храниться. Необходимо определить размер поля, позволяющий хранить данные из множества возможных значений. Для каждой таблицы определите первичный ключ. После того как таблицы будут созданы внести в них данные, учитывая, что хранятся сведения о результатах сдачи сессии студентами двух групп (7-9 студентов в каждой группе) по 5 дисциплинам (по одной дисциплине сдается зачет). Одну и ту же дисциплину в разных группах могут вести разные преподаватели. Таблица 5 – Объекты базы данных «Успеваемость» Информ ационны й объект СТУДЕН Название реквизита Номер зачетки Обознач ение реквизи та Признак ключа Н_зач Первичны й Т ключ Фамилия, имя, отчество ФИО Адрес Адрес Группа Группа Номер СЕССИ зачетки Я Н_зач Код дисциплины Код_дис Оценка СПРАВОЧ НИК ДИСЦИПЛИ Н Код дисциплины Наименова ние дисциплины Код_дис ц исц Код преподавателя ПРЕПО Лектор Должность Первичный ключ Наим_д Лектор ФИО преподавателя Первичный ключ Оценка Код преподавателя ДАВА-ТЕЛЬ Первичны й ключ ФИО_пр еп Долж Первичный ключ Ученая степень Уч_степ Стаж РЕСУРС Ы Стаж Код преподавателя Код дисциплины Лектор Код_дис ц Группа Группа Лабораторная работа 2 Цель работы: Связывание таблиц. Изучение окна Схема данных. Задание: Создание связей между таблицами базы данных “Успеваемость”. Модификация структуры базы данных и структуры записей таблиц БД. Обеспечение целостности данных При связывании выделяется главная таблица и подчиненная ей таблицы. Если установлен флажок Обеспечение целостности данных, то при вводе и обработке данных MS Access следит за их соответствием. Установка целостности данных учитывает следующие правила: 1. Невозможно внести значение в поле внешнего ключа, связанной таблицы, не содержащееся в ключевом поле главной таблицы. Однако в поле внешнего ключа возможен ввод пустых значений. 2. Невозможно удалить запись из главной таблицы, если существуют связанные с ней записи в подчиненной таблице. 3. Невозможно изменить значение ключевого поля в главной таблице, если существуют связанные с ней записи. Чтобы преодолеть ограничения на удаление или изменение связанных записей, сохраняя при этом целостность данных, следует установить флажки Каскадное обновление связанных полей и Каскадное удаление связанных полей. На рисунке 1 приведена логическая структура базы данных «Успеваемость» Номер зачетки Студент ФИО Адрес . Группа Преподаватель Лекто ФИ Должност Ученая р О ь степен ь Ста ж Сессия Номер Код зачет-ки дисциплины Оценка Справочник дисциплин Наименовани Лекто Код дисе дисциплины р циплины Рисунок 1 - Логическая структура базы данных «Успеваемость» 1. Создайте схему данных, используя таблицу 6. В пункте Сервис выберите команду Схема данных. В окне Добавить таблицы включите таблицы, выделяя их поочередно и использую кнопку Добавить. Закройте окно Добавить таблицы. В окне Схема данных установите связи: поместите курсор на ключевое поле главной таблицы и, удерживая нажатой левую кнопку мыши, протащите его на соответствующее поле подчиненной таблицы. Когда все связи будут установлены, закройте окно Схема данных. Таблица 6 - Отношение информационных объектов Главный объект Студент Справочник дисциплин Преподаватель Подчиненный объект Сессия Сессия Тип отношения Справочник дисциплин 1:1 1:М 1:М 2. Измените структуру таблицы Преподаватель, добавив поле Специальность по диплому. 3. В таблице Справочник дисциплин удалите поле Лектор. 4. Добавьте в базу данных таблицу Ресурсы. Внесите данные. 5. Создайте копию таблицы Ресурсы и измените наименование на План. 6. Откорректируйте структуру таблицы План, добавив поле Группа. Продумайте, что является первичным ключом в этой таблице, если он нужен. 7. Внесите дополнительные данные в откорректированные таблицы. 8. Откорректируйте Схему данных. 9. Отформатировать таблицы по своему усмотрению. 10.Таблицу Студент отсортировать по полю ФИО студента. 11.Вывести ФИО преподавателей, читающих дисциплину Математика (используйте фильтр). 12.Сдать готовую базу данных преподавателю и ответить на его вопросы. Лабораторная работа 3 Цель работы: Создание запросов на выборку и построение экранных форм. Задание: Организовать выборку информации из базы данных “Успеваемость” в режимах Конструктор и Простой запрос. 1. Создайте запрос о результатах сдачи сессии: Запросы – Создать – Конструктор – ОК. Сохраните запрос с именем «Результаты». Поля запроса приведены в таблице 7. Перетащите поля с помощью мышки из соответствующих таблиц. Установите сортировку по возрастанию по полю ФИО студента. Таблица 7 – Запрос «Результаты» Номер зачетки ФИО студента Наименование дисциплины Оценка 2. Создайте запрос, получающий список преподавателей, принимающих экзамены в группе № 321. 3. Постройте запрос о студентах, получивших по экзаменам оценку хорошо или отлично. 4. Выведите фамилии преподавателей, должность, ученую степень преподавателей, имеющих стаж работы более 10 лет. 5. Создайте экранную форму «Экзаменационной ведомости» согласно рисунка 2. Для определения значений полей Итого, Отлично, Хорошо, Удовлетворительно, Неудовлетворительно, Неявка создайте необходимые запросы и добавьте их в форму. Экзаменационная ведомость Группа ________ Дисциплина__________________ Преподаватель___________________ ФИО 1 Номер зачетки 2 Оценка 3 Подпись 4 Итого ________ Отлично___________________ Хорошо____________________ Удовлетворительно__________ Неудовлетворительно________ Неявки____________________ Дата ________ Подпись_____________ Рисунок 2 - Экзаменационная ведомость Лабораторная работа 4 Цель работы: Создание параметрических и перекрестных запросов. Задание: В экранную форму «Экзаменационная ведомость» добавить возможность выбора номера группы и названия дисциплины. Параметрические запросы позволяют сэкономить время и силы ,не создавая новых запросов по аналогичным критериям. Параметрический запрос позволяет при его открытии предложить указать критерий поиска и только затем выводить соответствующие записи данных 1. Преобразуйте простой запрос «Экзаменационная ведомость» в параметрический запрос. Для этого в режиме «Конструктор запроса» в строке «Условие отбора» для столбцов Номер группы и Наименование дисциплины введите [Укажите номер группы] и [Укажите дисциплину]. 2. Проверьте работу экранной формы «Экзаменационная ведомость». 3. С помощью создания Перекрестного запроса создайте «Сводную ведомость результатов сдачи сессии студентами группы____» (рисунок 3) Сводная ведомость результатов сдачи сессии студентами группы ______ ФИО 1 Номер зачетки 2 Дисциплина1 Дисциплина2 3 Оценка 4 Оценка Дисциплина3 Дисциплина4 5 Оценка 6 Оценка Рисунок 3 – Сводная ведомость Лабораторная работа 5 Цель работы: Создание базы данных средствами СУБД Microsoft Access. Содержание работы: По описанию логической модели базы данных создать основные объекты базы данных средствами Microsoft Access. При разработке таблиц, запросов базы данных использовать ручные средства – работать в режиме Конструктор. При разработке форм, отчетов воспользоваться автоматизированными средствами, предоставляемыми Мастером форм и Мастером Отчетов. Требуется создать базу данных КАДРЫ, хранящую данные по учету личного состава. Рассмотрим упрощенный вариант, включающий только часть сведений о сотрудниках. Пусть это будут Таблица 8 «Общие сведения», Таблицу 9 «Назначения и перемещения», Таблица 10 «Справочник должностей», Таблица 11 «Стаж». Таблица 8 - Общие сведения - «Служащие» Имя поля Таб_ном Ключ да Тип данных Формат поля Текстовый 3 ФИО Текстовый 100 Дата_рожден Дата/время Сем-пол Текстовый Краткий формат даты 10 Кол_иждив Числовой Длинное целое Подпись поля Табельный номер Фамилия, имя, отчество Дата рождения Семейное положение Количество иждивенцев Таблицу 9- Назначения и перемещения - «Приказ» Имя поля Ключ Тип данных Формат поля Таб_ном да Текстовый 3 Код-долж номер да Текстовый Числовой 5 Длинное целое Краткий формат даты 3 Дата_назн Дата/время Код_подр текстовый Оклад Числовой С плавающей точкой Подпись поля Табельный номер Код должности Номер приказа Код подразделения Оклад Таблица 10. Справочник должностей - «Должность» Имя поля Код-долж Наим_долж Ключ да Тип данных Текстовый Текстовый Формат поля Подпись поля Код должности Наименование должности 5 50 Таблица 11 «Стаж» Имя поля Таб_ном Ключ да Тип данных Формат поля Текстовый 3 Ст_общ Числовой Ст_непр Числовой С плавающей точкой С плавающей точкой Таблица 12 - Отношение информационных объектов Главный объект Служащие Должность Подчиненный объект Приказ Приказ Тип отношения 1:М 1:М Подпись поля Табельный номер Стаж общий Стаж непрерывный Служащие «Стаж» 1:1 1. Создайте базу данных с именем «Кадры». 2. Создайте таблицы базы данных Таблицы - Создать - Конструктор. В окне Конструктора введите имена полей, из раскрывающегося списка для каждого поля выберите тип поля, определите характеристики в нижней части окна Свойства полей. Некоторые из свойств уже заданы по умолчанию. Для задания ключевого поля достаточно щелкнуть на его имени правой кнопкой мыши и в открывшемся контекстном меню выбрать пункт Ключевое поле. Если ключевое поле является состоящим из нескольких полей, то прежде необходимо эти поля выделить с помощью Shift (смежные поля) или Ctrl (несмежные), а затем определять их как ключевые. 3. Создайте Схему данных, используя таблицу 12. 4. Внесите информацию из таблиц 13,15,16. Для заполнения таблицы «Приказ» создайте экранную форму, поля Табельный номер и Код должности преобразуйте в поля со списком, в качестве Источника укажите соответствующие таблицы «Служащие», «Должность». Таблица 13 -Общие сведения «Служащие» Табельный номер 101 102 103 104 105 106 ФИО Никулин Александр Михайлович Андреева Юлия Владимировна Колчин Сергей Алексеевич Иванков Юрий Алексеевич Недоспасова Ольга Михайловна Говердовская Валентина Дата рождения 10.02.48 Семейное положение женат Количество иждивенцев 1 25.12.78 замужем 2 01.05.81 холост 19.07.67 женат 27.03.59 незамужем 13.10.72 замужем 2 1 107 Григорьевна Семенов Алексей Петрович 19.07.50 женат Таблицу 14- Назначения и перемещения «Приказ» Табельный номер 101 102 103 102 107 104 105 106 Код должности 21430 21580 35460 35580 42560 42560 21430 12600 Номер приказа 12 15 28 41 41 42 42 42 Дата назначения 10.04.01 25.06.01 19.09.01 11.12.02 11.12.01 21.12.01 21.12.01 26.12.01 Подразделение 501 501 501 502 501 502 502 501 Оклад 7800,00 5700,00 6200.00 6700,00 52500,00 52500,00 7500,00 2100,00 Таблица 15. Справочник должностей «Должность» Код должности 21430 21580 35460 35580 42560 12600 Наименование должности Начальник отдела Инженер Бухгалтер Старший инженер Менеджер Секретарь Таблица 16 – «Стаж» Табельный номер 101 102 103 104 105 106 107 Стаж общий 30 8 4 16 25 12 30 Стаж непрерывный 24 5 1 7 14 6 29 5. Создайте простой запрос, включающий всех служащих подразделения. Сохраните запрос с именем 501. Поля запроса: из 501 Табельный номер Для ФИО создания запроса Должность Оклад воспользуйтесь Мастером Подразделение запросов. Поля, включаемые в результирующую таблицу, выбирайте из соответствующих таблиц «Приказ», «Служащий», «Должность», перенося их из Доступных полей в Выбранные поля с помощью кнопки Доработайте запрос в режиме Конструктор, добавив условие отбора для поля Подразделение. 6. Постройте запрос, формирующий списки служащих по подразделениям. 7. Постройте запрос, определяющий время работы каждого служащего на данном предприятии. 8. Создайте ведомость расчета надбавки к окладу, которая равна 10% от оклада, если общий стаж более 15 лет, и 5% за каждый год работы на данном предприятии, начиная с третьего. a. Варианты заданий для проектирования баз данных Используя заданное краткое описание предметной области, необходимо спроектировать базу данных. К предложенному описанию можно добавить свои дополнения или внести изменения. 1. Создать БД с перечнем видов спорта, присваиваемых разрядов и званий по каждому из них. БД содержит сведения о спортсменах, включающих условный номер вида спорта, которому отдает предпочтение каждый спортсмен. Спортсмен может заниматься несколькими видами спорта. 2. Создать БД для учета движения товара на оптовом складе. Описать поставщиков товара. Реализация товара может происходить как на самом складе, так и через сеть магазинов. 3. У вас есть коллекция картин, содержащая сведения о названии картины, ее авторе, дате создания, местонахождении. Если это музей, то указана страна, город, почтовый адрес, адрес электронной почты, факс, телефон. Если картина храниться в частной коллекции, то указывается адрес, телефон, фамилия владельца. Вы хотите построить базу данных, которая позволит находить сведения о картине, а также определять ее местонахождение и владельца. 4. Спроектируйте базу данных поставщиков, деталей и проектов. Если известно, что определенный поставщик поставляет определенную деталь для определенного проекта в определенном количестве. Поставщики определяются статусом и городом, в котором они находятся. Детали классифицируются по весу, цвету. Проекты выполняются в различных городах. 5. Спроектируйте базу данных винный следующих операций в этой базе: погреб, для выполнения а) выберите номер отсека, количество бутылок для всех вин Черные глаза; б) выберите номер отсека для всех красных вин; в) выберите номер отсека, наименование вина для всех вин, запас которых составляет более пяти бутылок; г) добавьте данные нового поступления (12 бутылок) Мерлот: отсек номер 55, год 2001, готово в 2004. 6. Учебная база данных включает информацию о системе процесса обучения внутри компании. Для каждого курса обучения база данных содержит подробности обо всех необходимых условиях и предложениях такого курса; а для каждого предложения она содержит подробности обо всех преподавателях и студентах, зарегистрированных для такого предложения. База данных также содержит информацию о сотрудниках. 7. У вас есть коллекция классической музыки, содержащаяся на компактдисках, пластинках и аудиокассетах, вы хотите построить базу данных, которая позволит находить записи определенного композитора, дирижера, солиста, произведения, оркестра, вида произведения или камерной группы. 8. Разработайте схему БД, содержащую информацию об автомобильном парке организации. БД содержит сведения о водителях и автомашинах. О водителях машин хранится его ФИО, категория (A,B,C,D,E B), водительский стаж. Для каждого автомобиля храниться его марка; год выпуска; класс автомобиля (грузовой, легковой); цвет; техническое состояние (аварийное, удовлетворительное, хорошее, отличное). В проектируемой БД за каждым водителем должна быть закреплена хотя бы одна машина. Каждой машиной может управлять несколько водителей. Водители объединены в бригады, в каждой бригаде свой бригадир. 9. БД разработана для информационной системы «Расчет заработной платы». Начисление проводится один раз в месяц на основании табеля, приказа о зачислении, увольнении или перемещении сотрудников в соответствии со штатным расписанием и ставками. Табель ведется ежемесячно. Ведомость начисления выдается по каждому подразделению. 10.Необходимо создать БД, в которой приведены данные по спецификации изделия. Изделие состоит из узлов, узлы - из деталей, кроме этого детали могут входить напрямую в изделие. Требуется рассчитать потребность в деталях для обеспечения плана выпуска готовой продукции. Детали и узлы могут быть как собственного изготовления, так и покупными. 11.Создать БД для начисления заработной платы сотрудникам предприятия. При расчете учитываются начисления: премии по подразделению; оплаты за работу в выходные и праздничные дни; оплаты больничных листов, выплаты материальной помощи, доплата за вредность. Удержания: кредит; ссуда; зачисление убытка. 12. БД создается медицинские, для аптеки. В гомеопатические аптеке могут препараты, реализовываться медицинские товары, медицинская техника. Медицинские препараты группируются по категориям витаминные, заболеваний: грибковые, ЛОР заболевания, антисептические. антибактериальные, Продажа лекарств осуществляется упаковками, дозами, миллилитрами, миллиграммами, таблетками. Упаковка - ампула, канвалюта. К медицинским товарам относятся марля, шприцы, вата, бинт и т.д. Медицинская техника – это индивидуальные коляски, костыли и др. 13.Создать БД для учета материальных ценностей на предприятии. В БД хранятся сведения о поставщике, цене, количестве, дате поступления, ответственном лице, причине и дате списания материальной ценности. Данные используются для составления Акта на списание, Инвентаризационной описи. 14.Составить БД, которая содержит сведения о купле-продаже товара. Основанием для оплаты товара по безналичному расчету служит Счет. Отпуск товара выполняется по Накладной. Учетная информация по продажам представлена в Счете-фактуре, содержащем перечень проданных товаров, а также сведения об оплате. 15.Требуется создать базу данных КАДРЫ, хранящую данные по учету личного состава, включающую штатное расписание, сведения о сотрудниках, структуру предприятия, приказы о назначениях и перемещениях. 16.Создать базу данных для учета оборудования на предприятии. В БД хранятся такие сведения об оборудовании, как его модель, производственная мощность, завод - изготовитель, дата ввода в эксплуатацию, первоначальная стоимость, срок годности, размещение. 17. Разработать БД по учету движения товара на складе. БД должна хранить данные о товаре, поставщиках, потребителях. Поступление товара осуществляется на основании Приходной накладной, отгрузка – Расходной накладной. 18.Организация занимается сдачей торгового оборудования в аренду. Учет оборудования ведется по количественному составу, на каждый тип оборудования заполняется карточка складского учета. В нее заносятся тип оборудования, инвентарный номер, дата поступления, номер документа, от кого получено, кому отпущено. При передаче оборудования в аренду выписывается акт приема-передачи с указанием оплаты и срока аренды. При возврате оборудования составляется акт на техническое состояние. 19.Создать БД для учета материала на складе предприятия. Материал поступает от поставщиков согласно Приходным ордерам. Отпуск материала в производство осуществляется по Требованию. 20. Создать базу данных Адресная книга, содержащую адреса юридических лиц нашего города, а также других городов и других стран. В книге даны краткие сведения о деятельности организации, руководителе. 3.3 Варианты заданий для самостоятельной работы по созданию БД Создайте базу данных «Предприятие», согласно предлагаемой структуре. Наполните ее данными. Создайте запросы к БД из предлагаемого списка. 1. Какие материалы и в каком количестве поступили от поставщика p01 2. Определить перечень материалов, необходимых для изготовления изделия 001 3. Определить себестоимость по изделию Шкаф в Евро на 28 декабря. 4. Создать форму, в которой вывести себестоимость изделия Комод во всем видам валюты на 28.12.02. 5. Создать форму, в которой вывести изменение цены Кресла за декабрь месяц в долларах 6. Определить перечень оборудования, необходимого для изготовления изделия 001 7. Определить расход материалов для планового выпуска изделия Шкаф 8. Написать запрос, в результате которого можно получить себестоимость планового выпуска изделий во всем видам валюты на 25.12.02. 9. Определить количество времени, которое необходимо для изготовления 2000 Шурупов 10. Какое оборудование потребует наименьших затрат времени для изготовления болтов 11. Вывести сведения о поставках материала за вторую декаду декабря. 12. Вывести сведения о расходе материала за первую неделю декабря. 13. Внести сведения о должностях, занимаемых работниками подразделения 01. 14. Составить запрос, который выбирал бы наибольшую производительность для каждой детали. 15. Вывести перечень изделий, которые используют деталь 404 16. Определить изделия, себестоимость которых не превышает 200$. 17. Производство, какого изделия потребует наименьших расходов материала. 18. Просмотреть, как будет изменяться оптовая цена за декабрь для письменного стола в Евро. 19. Добавить в базу данных таблицу «Табель рабочего времени» и внести данные за первую неделю января 2005 года. 20. Составить форму, содержащую сведения об использовании деталей в изделии. 21. Составить форму, содержащую перечень изделий, для изготовления которых потребуется Болт. 22. Рассчитать массу Шкафа 23. Определить прибыль от продажи 100 комодов. 24. Определить потребность шурупов на плановый выпуск продукции Ниже приведены варианты экранных форм, которые нужно построить для БД «Предприятие». 1 Рассчитайте расход материалов на изделие «Шкаф» по форме Спецификация расхода материала на изделие ____ Наименование детали Количество деталей в изделии Наименование материала Норма расхода на деталь Расход на изделие 2 Определите остатки материалов на предприятии Остатки материала на предприятии Наименование материала Единица измерения Количество поступившего израсходованного Остаток 3 Определите количество поступившего материала за декабрь месяц Расчет поступления материала на предприятие за декабрь Материал код Единица измерения Общее количество поступления наименование 4 Определите количество израсходованного материала в цехе №2 Расчет израсходованного материала в _____ Материал код Единица измерения Общее количество наименование 5 Какие материалы и, в каком количестве поступили от поставщика р01 Сведения о поступлении материалов от поставщика __ код Материал наименова ние Единица измерения Дата Номер поступления документа 6 Сколько фанеры поступило от поставщика р01 Количество Сведения о поступлении _____от поставщика __ код Материал наименова ние Единица измерения Количество 7 Определите потребность в болтах на план выпуска изделий Расчет потребности в детали _______ код Изделие наименование План выпуска Всего Потребность в детали х 8 Определите потребность в материале «фанера» на план выпуска Расчет потребности в материале_______ код Изделие наименование План выпуска Всего Потребность в материале х 9 Создайте запрос, выдающий перечень инвентарных номеров по каждому коду оборудования Перечень оборудования, установленного на предприятии Код оборудования Инвентарный номер Наименование оборудования Модель Завод изготовитель Всего ___ 10 Создайте запрос, выдающий перечень оборудования, установленного в цехе №2 Перечень оборудования, установленного в ______ Код оборудования Инвентарный номер Наименование оборудования Модель Завод изготовитель Всего ___ 11 Определить стоимость материала на изготовление «кресла» из «барокана» Стоимость материалов на изготовление ____ из _____ Материал Норма Цена за Стоимость код наименование расхода единицу измерения Всего х 12 Определить расход «барокана» на плановый выпуск «кресел» Расход материал на план выпуска ____ Материал наименование код Норма расхода План выпуска Общая потребность 13 Рассчитать прибыль от выпуска изделий Прибыль от выпуска продукции код Изделие наименование Цена плановая Цена оптовая План выпуска Прибыль 14 Вывести список сотрудников, имеющих высшее образование Список сотрудников, имеющих высшее образование, подразделения___ ФИО Табельный номер Должность Оклад Всего по подразделению х 15 Получить сведения о поставках материалов во второй декаде декабря Поставки материалов с __ по __ декабря 2003года Материал код наименование Дата поставки Наименование поставщика Количество 16 Рассчитать стоимость изделий во всех валютах на 08/01/04 Сведения о цене изделия на _______ Наименование изделия Валюта1 Валюта2 Валюта 3 Валюта 4 Цена1 Цена2 Цена3 Цена3 17 Определить какое оборудование следует использовать, чтобы получить наибольшее количество деталей за час работы. Перечень оборудования код Деталь наименование Оборудование инвентарный наименова номер ние Завод изготовитель Производительность Структура базы данных «Предприятие» Тип сущности 1 Изделия Атрибут 2 Код_изд Наим_изделия Код_ед_изм Деталь Код_дет Наим_дет Масса План производства Описание 3 Уникальный код изделия Полное наименование изделия Код единицы измерения Уникальный код детали Полное наименование Масса детали в граммах Код_изд Код изделия Кол_план Количество плановое Код единицы измерения Наименование единицы измерения Код валюты Справочник единиц измерения Код_ед_изм Справочник валют Код_вал Наим_езм Тип данных, размерность 4 Текстовый , 3 Домен Ограничения 5 6 Первичный ключ Альтернативны й ключ Код Текстовый, до 40 символов Наименование Текстовый ,2 Единица Текстовый , 3 Код Текстовый, до Наименование 25 символов С плавающей Масса точкой, фиксированный Текстовый, 3 Код Числовой, длинное целое Текстовый, 2 Количество Текстовый, 25 Наименование Текстовый, 2 Код Код Индексированное поле 7 Да (совпадения не допускаются) Нет Нет Первичный ключ Альтернативны й ключ Значение по умолчанию 0 Да (совпадения не допускаются) Нет Внешний ключ Да (совпадения не допускаются) Нет Первичный ключ Альтернативны й ключ Да (совпадения не допускаются) Нет Первичный ключ Да (совпадения не допускаются) 101 Наим_вал 1 Справочник материалов Наименование валюты 3 Код материала Текстовый, 15 Наименование 4 Текстовый, 4 Код Наименование материала Код единицы измерения Цена за единицу измерения Текстовый, 30 Наименование Текстовый, 2 Код Цена Сорт материала Код изделия Денежный, 2 десятичных знака Числовой Текстовый, 3 Код_вал Код валюты Текстовый, 2 Код Цен_план Себестоимость изделия Себестоимость Цен_опт Цена оптовая Код_обор Код оборудования Инвентарный номер Наименование оборудование Модель Заводизготовитель Денежный, 2 десятичных знака Денежный, 2 десятичных знака Текстовый, 7 Текстовый, 4 Номер Текстовый, 25 Наименование Да (совпадение не допускается) Нет Текстовый, 15 Текстовый, 10 Модель Название Нет Нет 2 Код_мат Наим_мат Код_ед_изм Цена Сорт_разм Справочник цен Код_изд Справочник оборудования Инвен_ном Наим_обор Модель Зав_изгот 5 Альтернативны й ключ 6 Первичный ключ Альтернативны й ключ Нет 7 Да (совпадения не допускаются) Нет Нет Значение по умолчанию 0 Нет Первичный ключ Первичный ключ Значение по умолчанию 0 Да (совпадение допускается) Да (совпадение допускается) Нет Цена Значение по умолчанию 0 Нет Код Первичный ключ Первичный ключ Нет Сорт Код 102 Код_подр 1 Справочник мощностей 2 Код_обор Код_дет Произ_мощ Спецификация деталей в изделии Курс валюты Справочник расхода материала на деталь Код подразделения 3 Код оборудования Код детали Текстовый, 2 Код 4 Текстовый, 7 Код Текстовый, 3 Код Нет 5 Мощность Код_изд Производственна Числовой, целое я мощность Код изделия Текстовый, 3 Код_дет Код детали Текстовый, 3 Код Кол_во Числовой, целое Количество Код_вал Количество деталей в изделии Код валюты Текстовый, 2 Код Дата Дата Дата Дата Курс Денежный Курс рубля Код_дет Курс рубля в валюте Код детали Текстовый, 3 Код Код_мат Код материала Текстовый, 4 Код Норма Норма расхода материала на деталь С плавающей точ-кой, 3 десятичных знака Норма Код 6 Первичный ключ Первичный ключ 7 Да (совпадение допускается Да (совпадение допускается) Нет Первичный ключ Первичный ключ Да (совпадение допускается) Да (совпадение допускается) Нет Первичный ключ Первичный ключ Да (совпадение допускается) Да (совпадение допускается) Нет Первичный ключ Первичный ключ Да (совпадения допускается) Да (совпадения допускаются) Нет 103 Приход Номер_накл Номер приходной накладной Дата поступления Числовой Номер Дата Дата Код_мат Код материала Текстовый, 4 Код Код_пост Кол_прих Код поставщика Количество поступившего материала Дата Расход Номер_накл Дата Код_мат Код_подр Кол_расх Первичный ключ Нет Нет Первичный ключ Да (совпадения допускаются) Нет Нет Первичный ключ Нет Текстовый, 6 С плавающей точкой, 3 десятичных знака Номер расходной Числовой накладной Дата отгрузки Дата Код материала Текстовый, 4 Код Количество Код подразделения Количество отгруженного материала Текстовый, 6 Код Нет Да (совпадения допускаются) Нет С плавающей точкой, 3 десятичных знака Количество Нет Номер Дата Код Первичный ключ 104 105 106 Библиографические записи 1. Атре Ш. Структурный подход к организации баз данных. Под ред В.И. Будзко. – М.: Финансы и статистика, 1983 2. Агальцов В.П. Базы данных: Учебное пособие. – М.: Мир, 2002 3. Артемов Д., Погульский Г. Microsoft SQL Server 7.0: установка, управление, оптимизация. – М.: “Русская редакция”, 1998. 4. Гектор Гарсиа-Молина, Дж. Уильман, Дж. Уидом Системы баз данных. Полный курс: Перс англ. – М.: Издательский дом «Вильямс» 2004 5. Горев А., Макашарипов С. Microsoft Visual FoxPro 3.0. Новые возможности для программиста. – СПб.: Питер, 1995 6. Гудрич М.Т. Структуры данных и алгоритмы в Java / М.Т. Гудрич, Р. Тамассия: пер. с англ. А.М. Чернухо. – Мн.: Новое знание, 2003 7. Дейт К.Дж. Введение в системы баз данных. – Киев/Москва: Диалектика, 1998 8. Дейт К.Дж. Введение в системы баз данных – 6-е изд.: Пер с англ. – СПб.: Издательский дом «Вильямс», 2000 9. . ДигоС.М. Проектирование и использование баз данных. Учебник – М:, Финансы и статистика, 1995 10.Диго С.М. Базы данных: проектирование и использование: Учебник.М.: Финансы и статистика, 2005 11.Ефимов Е.Н., Патрушина С.М., Панферова Л.Ф. Информационные системы в экономике. – М.: ИКЦ «МарТ», 2004 12. Карабутов Н.Н. Информационные технологии в экономике – изд. «Экономика», 2002 13.Каратыгин С., Тихонов А., Тихонова Л. Visual FoxPro 6.0.- М.: «Издательство БИНОМ»,2000. 14.Когаловский М.Р. Энциклопедия технологий баз данных. –М.: Финансы и статистика, 2002. 15.Крамм Р. Системы управления базами данных dBASE II и dBASE III для персональных компьютеров. – М.: Финансы и статистика, 1988 16.Кренке Д. Теория и практика построения баз данных. – СПб.: Питер, 2003 17. Мамаев Е., Вишневский А. SQL Server 7 профессионалов – СПб.: изд. «Питер», 2000 18.Мишенин А.И. Теория экономических информационных систем. Учебник – 4-е изд.; доп. И перераб. – М.: Финансы и статистика, 2003 19.Мусина Т.В., Пушенко В.А. Visual FoxPro 7.0: Учебный курс – К.: ВЕК+; Спб.: Корона принт; К.: НТИ; М.: Бином-Пресс, 2004 20.Наумов А.И. Системы управления базами данных и знаний – М.: Финансы и статистика, 1991 21.Попов А.А. FoxPro 2.5/2.6. – М.: Калашников и К, 1997. 22.Рейсдорф К., Хендерсон Л. FoxPro 2.6 for DOS. Освой самостоятельно – М.: ЗАО Издательство БИНОМ, 1998 107 23.Сайлер Б., Споттс Д. Использование Microsoft SQL Server 6.5. Специальное издание: Пер. с англ. – СПб.; Издательский дом «Вильямс», 1998 24.Саймон А.Р. Стратегические технологии баз данных: менеджмент на 2000 год: Пер с англ./под ред. И с предисл. М.Р. Когаловского. – М.: Финансы и статистика, 1999 25.Савельев А.Я. Персональный компьютер для всех «Создание и использование баз данных – М.: Высшая школа , 1991 Системы управления базами данных и знаний: Справочное издание/ Под ред. Наумова А.Н. – М.: Финансы и статистика, 1991 26.Ульман Дж. Основы систем баз данных. Под ред. М.Р. Когаловского. – М.: Финансы и статистика, 1983 27.Хансен Г.,Хансен Д., Базы данных: разработка и управление.-М:. ЗАО «Издательство Бином»,2000,- 704с 28.Хомоненко А.Д. и др., Базы данных. Учебник-СПб.: КОРОНА принт,2002.- 672с. 29.Шнайдер Р.Д. Microsoft SQL Server. Проектирование высокопроизводительных баз данных – М.: Лори, 1999 108 Тестовые материалы Базы данных 1. Зачем применяется ''нормализация” отношений: а) позволяет упростить процесс манипулирования данными; б) для обеспечения "целостности" данных; в) для упорядочения атрибутов; г) обеспечения вышеперечисленных положений. 2. Инфологическая модель предметной области определяет: а) взаимосвязь объекта и его свойств; б) способ представления объекта; в) описание свойств объекта; г) набор сущностей. 3. Что подразумевает понятие "транзакция": а) фиксированный набор операций над данными; б) законченную логическую единицу работы над данными; в) операцию обновления данных; г) любое из вышеперечисленных. 4. Журнализация данных применяется для: а) учета пользователей базы данных; б) регистрации обновлений базы данных; в) регистрации отчетов; г) учета невыполненных транзакций. 5. Какая модель представления данных принята в СУБД "МS Ассеss": а) иерархическая; б) объектно-ориентированная; в) реляционная; г) сетевая. 6 Репликация данных используется для: а) изменения структуры БД; б) выполнения операций над записями; в) манипулирования объектами БД; г) создания копии БД на рабочей станции. 7. Что такое SQL-сервер: а) система управления базами данных; б) язык для разработки СУБД; в) язык описания сетевой модели; г) язык манипулирования данными. 109 8. Укажите принцип решения задач, используемый в "базах знаний”: а) перебор семантических связей; б) применение эмпирических правил; в) осуществление логического вывода ; г) статистической обработки данных. 9 Чем определяется логическая организация данных на ЭВМ: а) способом организации данных на внешнем носителе; б) хранением данных в виде именованного файла определенной структуры; в) структурой файла данных; г) представлением данных в оперативной памяти. 10. Что является элементарной единицей логической организации данных: а) содержимое ячейки оперативной памяти; б) кластер; в) запись; г) поле. 11. Для чего предназначены СУБД: а) облегчения работы пользователя с данными на его естественном языке; б) обеспечения упорядоченного хранения данных; в) как заменитель бумажного документооборота на предприятии; г) облегчения анализа и обработки массивов информации. 12. Какие модели представления данных имеют наиболее широкое применение в настоящее время: а) сетевые; б) реляционные; в) на основе инвертированных списков; г) экспертные. 13.Укажите правильную смысловую связь понятий реляционной модели: а) домен - отношение - атрибут; б) поле - запись - отношение; в) атрибут - кортеж - таблица; г) поле - запись - таблица. 14. Какие аспекты представления данных рассматривает реляционная модель: а) структурный; б) целостности данных; в) манипулирования данными; 110 г) 15. 16. все вместе взятые. Определите назначение "потенциальных ключей": а) для идентификации кортежа; б) обеспечения механизма адресации на уровне кортежей; в) обеспечения сортировки атрибутов; г) служит идентификатором отношений. Аппарат индексирования в СУБД предназначен для: а) идентификации записи; б) установления соответствия записи ключу; в) идентификации взаимосвязей между таблицами; г) ускорения поиска записи в таблице. 17. Термин "целостность данных” подразумевает: а) обеспечение защиты от санкционированного доступа к ним; б) допустимые значения атрибутов; в) точность и корректность обрабатываемых данных; г) сохранность их на физическом носителе. 18 Фундаментальной основой реляционных систем является а) запись б) объектный класс в) кортеж г) домен 19 Преимущество инкапсуляции состоит в том, что она позволяет изменять внутреннее представление объектов, а) лишь частично переделывая приложения, в которых используются эти объекты б) переделывая приложения, в которых используются эти объекты в) изменяя метод г) не переделывая приложений, в которых используются эти объекты 20 Основным недостатком использования индексов является а) использование сортировки б) ускорение процесса восстановления данных в) увеличение числа дисковых операций ввода-вывода, необходимых для извлечения требуемой записи г) замедление процесса обновления данных 21. Поле, содержащее любую последовательность обычных символов, которые можно вводить с клавиатуры. а) GENERAL б) CHARACTER в)CURRENEY г) Memo 22. Создать БД PRIM с полями Famil и Sport ( условный номер вида спорта, которому отдает предпочтение персона Famil). Значение поля 111 Sport сделать повторяющимся. В БД RAS дать словесное название вида для каждого номера. Вывести названия видов спорта, указанных в PRIM более 5 раз. а) SELECT Sport FROM Prim Where Sport HAVING Count(*)>5 б) SELECT Sport FROM Prim HAVING Count(*)>5 в) SELECT Sport FROM Prim GROUP BY Sport HAVING Count(*)>5 г) SELECT Sport FROM Prom GROUP BY Famil HAVING Count(*)>5 23. Внешний уровень архитектуры а) представление информации базы данных такими, какие «они есть на самом деле» б) обобщенное представление пользователей в) представление в памяти г) индивидуальное представление пользователя 24 Целостность означает а) использование последовательного просмотра б) защиту базы данных от несанкционированных пользователей в) правила безопасности г) защиту базы данных от санкционированных пользователей 25. В интегрированных базах данные рассматриваются пользователем как а) таблицы б) объекты и отношения между объектами в) набор древовидных структур г) компьютеризированная системы хранения записей 26. Инкапсуляция объекта а) скрытая внутренняя структура и возможность управлять с помощью специально заданных методов б) динамическое приобретение или утрачивание нового типа в) способность к замещению г) применение разных методов с одним и тем же именем для различных классов 27. Фундаментальной основой реляционных систем является а) запись б) объектный класс в) кортеж г) домен 28. Концептуальный уровень архитектуры а) индивидуальное представление пользователя б) представление информации базы данных такими, какие они есть на самом деле в) обобщенное представление пользователей г) представление в памяти 29. Можно отложить до конца транзакции приведение в действие ограничений целостности 112 а) атрибута б) домена в) отношения г) базы данных 30. Распределенная база данных – это а) компьютеризированная система хранения данных б) тип виртуального объекта, части которого физически сохраняются в ряду отдельных реальных баз данных на удаленных узлах в) совместно используемые базы данных 31. В реляционных системах данные рассматриваются пользователем как а) набор древовидных структур б) объекты и отношения между объектами в) компьютеризированная системы хранения записей г) таблицы 32 Одним из преимуществ использования индексов является а) защита базы данных от несанкционированных пользователей б) использование последовательного просмотра в) ускорение прямого доступа на основе заданного значения индексированного поля или комбинации полей г) выделение дополнительного пространства для размещения индексов 33 Домен а) строка таблицы б) общая совокупность значений, из которой берется реальное значение атрибутов в) наименьшая единица данных, не имеющая внутренней структуры г) уникальный идентификатор таблицы, для которого не существует двух строк, содержащих одинаковое значение 34 Фундаментальной основой объктно-ориентированных систем является а) запись б) объектный класс в) кортеж г) домен 35 Безопасность означает а) защиту базы данных от санкционированных пользователей б) защиту базы данных от несанкционированных пользователей в) правила безопасности г) использование последовательного просмотра 113 36 Полиморфизмом называют а) возможность применения разных методов с одним и тем же именем для разных классов б) скрытая внутренняя структура и возможность управлять с помощью специально заданных методов в) динамическое приобретение или утрачивание нового типа г) способность к замещению 37 Создать БД TOVAR по структуре: наименование товара – 15, количество – 5, стоимость – 7(2), код товара – 4. a) CREATE DBF TOVAR ( NAME C(15), KOL N(5), CENA N(7,2), KOD C(4)) b) CREATE TOVAR ( NAME C(15), KOL N(5), CENA N(7,2), KOD C(4)) c) CRАETE DBF TOVAR ( NAME C(15), KOL N(5), CENA N(7,2), KOD C(4)) d) CREATE DBF TOVAR ( NAME C(15), KOL N(5), CENA N(7,2), KOD C(4,2)) 38 Для БД «Успеваемость» построить запрос, выбирающий ФИО студентов, не сдавших «Математику» а) Select ФИО, Наим_дис, Оценка From Сессия, Дисциплина Where Наим_дис = «Математика» and Оценка=2 б) Select ФИО From Сессия, Дисциплина Where Наим_дис = «Математика» and Оценка=2 в) Select ФИО From Сессия, Студент, Дисциплина Where Наим_дис = Математика and Оценка=2 г) Select ФИО, Наим_дис, Оценка From Сессия,Студент,Дисциплина Where Наим_дис = «Математика» and Оценка=2 39 Для БД «Успеваемость» построить запрос, подсчитывающий количество пятерок по дисциплине «БД» а) Select Наим_дис, Count(Оценка) From Сессия, Дисциплина Where Наим_дис = «БД» and Оценка=5 б) Select Наим_дис, AVG(Оценка) From Сессия, Дисциплина Where Наим_дис = «БД» and Оценка=5 в) Select Count(Оценка) From Сессия, Дисциплина Where Оценка=5 г) Select ФИО, Наим_дис, Count(Оценка) From Сессия,Студент,Дисциплина Where Наим_дис = «БД» and Оценка=5 40 Для БД «Успеваемость» построить запрос, который выводит список студентов 321 группы, сдававших экзамены а) Select ФИО From Студент Where Н_груп=321 б) Select ФИО,Н_груп From Студент Where Н_груп=321 в) Select Distinct ФИО,Н_груп, Н_зач From Сессия, Студент Where Н_груп=321 114 г) Select ФИО,Н_груп, Н_зач From Сессия, Студент Where Н_груп=321 115 Таблица с правильными ответами Вопрос 1 2 3 4 5 6 7 8 9 10 11 12 13 Правильный ответ Г Г Б Б В Г А В В В А Б В Вопрос 14 15 16 17 18 19 20 21 22 23 24 25 26 Правильный ответ Г А Г А Г Г Б В Г Г Г А Г Вопрос 27 28 29 30 31 32 33 34 35 36 37 38 39 Правильный ответ Б Г Б Г В Б Б Б А А Г Б В 116 Содержание Введение с. 3 Раздел 1. Общие вопросы организации баз данных 6 1.1 История развития баз данных 6 1.2 Недостатки традиционных файловых систем 7 1.3 Основные понятия и определения 8 1.4 Преимущества баз данных 11 1.5 Основополагающие категории в теории баз данных 13 1.6 Модели систем баз данных 16 1.7 Архитектура системы базы данных 20 1.8 Проектирование баз данных 21 1.9 Нормализация таблиц и ее необходимость 24 1.10 Краткая характеристика моделей БД 29 1.11 Классификация баз данных по технологии обработки 31 1.12 Особенности архитектуры клиент-сервер в распределенных 32 средах 1.13 Введение в реляционные базы данных 34 1.14 Реляционные базы данных 37 1.15 Первичный и внешний ключи отношения 40 1.16 Реляционная система управления базами данных 42 1.17 Обоснование необходимости создания баз данных 60 1.18 Системы безопасности 62 1.19 Виды привилегий 66 Раздел 2. Проектирование базы данных 71 2.1 Этапы проектирования базы данных 71 2.2 Пример описания предметной области 72 117 2.3 Концептуальная модель базы данных 73 2.4 Логическая модель базы данных 77 2.5 Физическая модель базы данных 78 Раздел 3. Задания для лабораторных работ и самостоятельной 80 работы 3.1 Лабораторные работы 80 3.2 Варианты заданий для проектирования баз данных 91 3.3 Варианты заданий для самостоятельной работы по созданию БД 95 Библиографические записи 105 Тестовые материалы 107 Таблица с правильными ответами 114 118 Базы данных Учебное пособие для студентов специальности “Прикладная информатика в экономике”, 3514.00 «Организация и технология защиты информации» 0753.00 ЛИДИЯ ФЕДОРОВНА ПАНФЕРОВА Ответственный за выпуск Директор РИЦ Ж.Ю. Короченцева ________________________________________________________________ Изд. № Подписано к печати Бумага офсетная. Печать офсетная. Формат 60Х84/16. Гарнитура «Таймс». Объём уч.изд.л. Тираж 200 экз. Заказ №___ «С» ________________________________________________________________ 344002, г. Ростов-на-Дону, ул. Б.Садовая, 69, РГЭУ «РИНХ», Издательство Отпечатано в отделе оперативной полиграфии РГЭУ «РИНХ». 119