Введение в базы данных.ppt
- Количество слайдов: 29
Введение в базы данных
Зачем нужны базы данных ? - Есть «идеальное» средство работы с электронными таблицами Microsoft Excel, позволяющее делать с содержимым таблиц практически все, что угодно - Ни чуть не хуже обычные текстовые файлы, хранящие необходимые данные в некотором формате и не нужно быть великим программистом, чтобы написать программу, работающую с этими данными на любом языке программирования Зачем же нужны всякие там СУБД, стоящие десятки тысяч долларов, когда уже и так все есть ? ? ?
Присматриваясь внимательно… Файл имеет определенную структуру, нарушение которой потребует внесение изменений в текст программ, работающих с данным файлом Для того, чтобы другой программист смог воспользоваться данными из этого файла, он должен обязательно знать его структуру, которая обязательно должна оставаться неизменной Что проще – изменить 5 – 10 прикладных программ, выбирающих из данного файла строки определенной длины для увеличения размера выбираемых данных или создать еще один файл, с которым будет работать 11 -ая программа ?
Что получается ? n Полное отсутствие гибкости (изменение структуры – изменение программного текста) n Невозможность нормальной многопользовательской работы с данными и как следствие – усложнение написания прикладных программ (каждый разработчик, должен «идти на компромисс» с другими разработчиками при работе с файлами) n Вынужденная избыточность (проще создать еще одну копию данных, чем вносить изменения в десятки программ)
Поиски решения проблемы n Активная деятельность по отысканию приемлемых способов обобществления непрерывно растущего объема информации привела к созданию в начале 60 х годов специальных программных комплексов, называемых "Системы управления базами данных" (СУБД). n Основная особенность СУБД – это наличие процедур для ввода и хранения не только самих данных, но и описаний их структуры. Файлы, снабженные описанием хранимых в них данных и находящиеся под управлением СУБД, стали называть банки данных, а затем "Базы данных" (БД).
Оказывается, «базы данных» просто необходимая вещь… Введем формальное определение базы данных : База данных — это файлы, снабженные описанием хранимых в них данных и находящиеся под управлением специальных программных комплексов, называемых "Системы управления базами данных" (СУБД). СУБД является программным комплексом, обеспечивающим функционирование базы данных и отвечающим за сохранность, безопасность, целостность, взаимное соответствие данных и обеспечивает доступ пользователей к этим данным.
О моделях данных Не является тайной, то что планируемые к внесению в базу данных данные в подавляющем большинстве случаев связаны между собой. (Например, с отделом связано множество сотрудников, с которыми в свою очередь связаны должности, которые они занимают …). Наличие множества связей требует создания определенной структуры описания данных, которые называются моделями данных. Исторически первой появилась иерархическая модель, например == Отдел ==> сотрудники ==> должности == Однако оказалось, что поиск данных от листьев к корню выполняется значительно медленнее, чем от корня к листьям (быстрый запрос — должности занимаемые сотрудником, медленный запрос — количество программистов в каждом отделе работающих на 0. 5 ставки). Созданная сетевая модель (связанные кольца двухуровневых деревьев), оказалась настолько сложной, что проектированием данных могли заниматься только высококвалифицированные специалисты.
Реляционная модель В 70 гг. была предложена реляционная (relation — отношение, связь) или иначе табличная модель данных, обладающая следующими основными свойствами: 1. Данные воспринимаются пользователями как таблицы (и никак иначе). 2. Каждая таблица состоит из однотипных строк и имеет уникальное имя. 3. Строки имеют фиксированное число полей (столбцов) и значений (множественные поля и повторяющиеся группы недопустимы). Иначе говоря, в каждой позиции таблицы на пересечении строки и столбца всегда имеется в точности одно значение или ничего.
Реляционная модель (продолжение) 4. Строки таблицы обязательно отличаются друг от друга хотя бы единственным значением, что позволяет однозначно идентифицировать любую строку такой таблицы. 5. Столбцам таблицы однозначно присваиваются имена, и в каждом из них размещаются однородные значения данных (даты, фамилии, целые числа или денежные суммы). 6. При выполнении операций с таблицей ее строки и столбцы можно обрабатывать в любом порядке безотносительно к их информационному содержанию. Этому способствует наличие имен таблиц и их столбцов, а также возможность выделения любой их строки или любого набора строк с указанными признаками.
Попытаемся разобраться на примере… Какая таблица является таблицей реляционной базы данных ? Для этого рассмотрим в качестве примера предметную область «Кадры сотрудников организации» … Мы будем работать со сведениями о сотрудниках, включающих информацию : n ФИО, пол, дата рождения n Должность и отдел, где сотрудник работает n Даты оформления и увольнения сотрудника на работу, или срок работы (если сотрудник принимался на период времени) n Условия приема сотрудника на некоторую должность в некоторый отдел (основное, совместительство) n Сведения о заработной плате
Попытаемся разобраться на примере… Какая таблица является таблицей реляционной базы данных ? Таблица_сотрудников ид фамилия имя отчество дата_рождения пол отдел должность условия_приема зарплата Всю информацию касающуюся нашей предметной области представим в виде некоторой таблицы и попытаемся разобраться, сможет ли эта таблица стать таблицей реляционной базы данных…
Таблица_сотрудников ид фамилия имя отчество дата_рождения пол отдел должность условия_приема зарплата Наша таблица удовлетворяет всем требованиям реляционной модели ! Таблица состоит из однотипных строк и имеет уникальное имя Строки имеют фиксированное число полей (столбцов) и значений (множественные поля и повторяющиеся группы недопустимы). Иначе говоря, в каждой позиции таблицы на пересечении строки и столбца всегда имеется в точности одно значение или ничего. Строки таблицы обязательно отличаются друг от друга хотя бы единственным значением, что позволяет однозначно идентифицировать любую строку такой таблицы. Столбцам таблицы однозначно присваиваются имена, и в каждом из них размещаются однородные значения данных (даты, фамилии, целые числа или денежные суммы).
Таблица_сотрудников ид фамилия имя отчество дата_рождения пол отдел должность условия_приема зарплата Однако, возникают некоторые проблемы, которые не решены при организации данной таблицы Данные большинства столбцов в нашей таблице многократно повторяются т. е. возникает избыточность. Так, для каждого сотрудника одного и того же отдела будут повторяться названия должности, и соответственно если сотрудник работает в разных отделах с разными условиями приема ( «основное» , «совместительство» ), для него будут повторяться фамилия, имя, отчество
Таблица_сотрудников ид фамилия имя отчество дата_рождения пол отдел должность условия_приема зарплата Вследствие избыточности могут возникать проблемы при изменении данных Аномалии обновления. Если, например, сотрудница поменяла фамилию, то при изменении в таблице множества экземпляров ее фамилии можно «забыть» обновить некоторые строки со старой фамилией и тем самым «потерять» какие-либо данные об этой сотруднице. Аномалии включения. В таблицу нельзя внести данные о том, какие должности будут введены в организации в будущем месяце, до тех пор, пока на эти должности не будут приняты или переведены какие-либо сотрудники. Аномалии удаления. Обратные проблемы возникают при необходимости удаления из таблиц сведений о каком-либо сотруднике или должности.
Многие проблемы исчезнут, если из нашей таблицы сотрудников выделить в отдельные таблицы сведения об отделах, должностях, людях… Такое разбиение таблицы на несколько таблиц, обладающих лучшими свойствами при включении, изменении и удалении данных, называется нормализацией. Окончательная цель нормализации сводится к получению такого проекта базы данных, в котором каждый факт появляется лишь в одном месте, т. е. исключена избыточность информации. Это делается не столько с целью экономии памяти, сколько для исключения возможной противоречивости хранимых данных (например, если в таблице одновременно существует и старая, и новая фамилия сотрудницы).
Таблица_сотрудников ид фамилия имя отчество дата_рождения пол отдел должность условия_приема зарплата Выделим из нашей таблицы сотрудников «независимые» (стержневые) таблицы и «зависимые» таблицы В независимые стержневые таблицы можно выделить следующую информацию • Информацию о людях, имеющих отношение к организации (назовем эту таблицу ЛЮДИ) • Информацию об отделах, существующих в организации (назовем эту таблицу ОТДЕЛЫ) • Информацию о должностях, существующих в организации (назовем эту таблицу ДОЛЖНОСТИ) В зависимые таблицы можно выделить следующую информацию • Информацию о сотрудниках, работающих в организации (назовем эту таблицу СОТРУДНИКИ)
В процессе определения столбцов таблицы необходимо обязательно определить их первичные ключи Ключ — минимальный набор столбцов, по значениям которых можно однозначно найти требуемую строку таблицы. Минимальность означает, что исключение из набора любого из столбцов не позволяет идентифицировать строку по оставшимся значениям. Первичный ключ — любой из возможных ключей (лучше несоставной и целочисленный). В большинстве случаев имеет смысл ввести дополнительный столбец, значения которого были бы уникальными и он как раз и был бы первичным ключом для некоторой таблицы. Так например, для таблицы ЛЮДИ логично ввести дополнительный столбец – «табельный номер» , который и будет однозначно идентифицировать строку таблицы.
Внешние ключи Для зависимых таблиц необходимо рассмотреть еще одно понятие — внешний ключ. Это столбец или набор столбцов зависимой (дочерней) таблицы, с помощью которого (которых) производится ссылка на первичный ключ другой (родительской) таблицы, т. е. как бы производится связывание таблиц. При этом родительской может быть как независимая, так и зависимая таблица — цепочка связей между таблицами ничем не ограничивается и может иметь чрезвычайно сложную структуру.
Ввод в СУБД правильного описания первичных и внешних ключей включает механизмы ограничений базы данных, не позволяющие удалить строку с тем значением первичного ключа, на который ссылается какой-либо внешний ключ, или ввести строку с таким значением внешнего ключа, которое отсутствует среди значений первичного ключа.
Кроме описания столбцов каждой таблицы (включая ключи) необходимо указать также те ограничения на значения и форматы данных в отдельных столбцах или их сочетаниях, которые позволят задействовать в СУБД дополнительные процедуры обеспечения целостности (правильности и непротиворечивости) хранимых данных.
Получим наконец-то нашу «правильную» базу данных ! Таблица «ЛЮДИ» ЛЮДИ Ид Фамилия Имя Отчество Дата_рождения Пол Ид – уникальный идентификатор человека, столбец – первичный ключ. Каждый новый номер целесообразно получать с помощью процедуры, наращивающей последний существующий номер на единицу. Пол – пол человека, может быть только «м» или «ж» В случае острой необходимости возможно ввести и другие ограничения, например на регистр в ФИО и интервал дат в дате рождения
Таблица «ОТДЕЛЫ» ОТДЕЛЫ Ид Наименование Отд_ид Ид – уникальный идентификатор отдела, столбец – первичный ключ. Наименование – полное наименование отдела Отд_ид – идентификатор отдела, подразделением которого является данный отдел. Например, Для головного отдела организации, в отд_ид заносится NULL. Например, кафедра ВТ, принадлежит факультету КТи. У, который в свою очередь является подразделением университета. Поле Отд_ид является внешним ключом к полю Ид
Таблица «ДОЛЖНОСТИ» (Совсем все просто) ДОЛЖНОСТИ Ид Наименование Ид – уникальный идентификатор должности, столбец – первичный ключ. Наименование – полное наименование должности
Таблица «СОТРУДНИКИ» СОТРУДНИКИ Ид Члвк_ид Долж_ид Отд_ид Зарплата Ставка Условия_приема Начало Конец Ид – уникальный идентификатор должности, столбец – первичный ключ. Члвк_ид – идентификатор человека, внешний ключ к таблице ЛЮДИ, не может быть NULL Долж_ид – идентификатор должности, внешний ключ к таблице ДОЛЖНОСТИ, не может быть NULL Отд_ид – идентификатор отдела, внешний ключ к таблице ОТДЕЛЫ, не может быть NULL Зарплата, ставка – числовые поля (с точностью до сотых) Условия приема – каким образом оформлен сотрудник на некоторую должность в некотором отделе, в поле могут заноситься только значения «основное» , «совместительство» Начало, конец – даты начала и окончания срока работы сотрудника по некоторой должности в некотором отделе. Конец по умолчанию устанавливается « 09. 9999» , т. е. срок окончания работы не ограничивается.
Что получилось… Модель базы данных «КАДРЫ»
И что теперь с этим делать ? Теперь у нас есть модель которую можно описать на языке SQL и создать в системе уже реальные таблицы. Язык SQL (Structured Query Language, структуризованный язык запросов) – это набор команд, необходимых всем программам и пользователям для работы с базой данных. Язык разработан в 1974 году фирмой IBM для экспериментальной реляционной СУБД System R. После появления на рынке двух пионерских СУБД этой фирмы - SQL/DS (1981 год) и DB 2 (1983 год) - он приобрел статус стандарта де-факто для профессиональных реляционных СУБД. В 1987 году SQL стал международным стандартом языка баз данных, а в 1992 году вышла вторая версия этого стандарта.
В SQL предусмотрено множество команд, предназначенных для выполнения практически любой задачи n n n Запросы к данным Вставка, обновление, усечение и удаление строк в таблице Создание, изменение и удаление объектов базы данных Управление доступом к базе данных и ее объектам Другие (зависит от используемой СУБД)
В основе синтаксиса SQL лежат следующие основные команды n SELECT - используется для извлечения данных из таблиц n UPDATE – для внесения изменений в существующие данные в n INSERT – предназначена для добавления данных в таблицы n DELETE – для удаления данных из таблиц n CREATE – используется для создания объектов базы данных n ALTER – для внесения изменений в определения объектов и n DROP – используется для удаления объектов из базы данных таблицах параметры базы данных
Существующие на сегодняшний день СУБД можно разделить на несколько групп: Промышленные - Интенсивно развивающиеся Oracle, DB 2, Microsoft SQL Server - Существующие Ingress, Informix и т. д. Малые Postgre. SQL, My. SQL, Access и т. д.
Введение в базы данных.ppt