Структура баз данных База данных представляет собой компьютеризированную интегрированную систему хранения связанных между собой данных. Управление базами данных обеспечивается набором программных средств – СУБД. данные, аппаратное обеспечение, программное обеспечение (СУБД), пользователи. Компоненты баз данных: Интегрированные данные подразумевают возможность представления информации, хранящейся в нескольких отдельных файлах данных. Аппаратное обеспечение: накопители, многопроцессорные (в общем случае) системы, распределенные вычислительные системы. Однопользовательские и многопользовательские СУБД.
Необходимые требования, предъявляемые к СУБД: Обеспечение физической целостности RAID Журналы транзакций Резервное копирование Обеспечение логической целостности Механизм транзакций Система связей между объектами Обеспечение безопасности Система аутентификации Система авторизации Обеспечение высокой производительности Параллелизм (блокировка, взаимоблокировка (deadlock) ) Опциональные требования: Простота сопровождения Реализация на популярных платформах
Модели баз данных: Реляционные базы данных Иерархические базы данных Объектно-ориентированные базы данных Двухуровневая архитектура (клиент-сервер): хранимые процедуры, «толстый клиент» (Локальная и корпоративная сеть). Трехуровневая архитектура (уровень данных – прикладной уровень – уровень пользователя): «тонкий клиент», сервер приложений (Сеть Интернет).
Реляционная алгебра Практическая реализацияСиноним ОтношениеТаблица/Table КортежЗапись/RecordСтрока/Row АтрибутыПоле/FieldСтолбец/Colu mn Первичный ключ Первичный ключ/Primary key Внешний ключВнешний ключ/Foreign key Кластерный индекс Одиночный индекс Основные понятия реляционной модели баз данных.
Первичный ключ является уникальным идентификатором для записи в таблице. Первичный ключ бывает простым и составным. Индексы обеспечивают возможность бинарного поиска. При создании кластерного индекса по соответствующему ключу сортируется сама таблица. При создании одиночного индекса создается новая «таблица», содержащая ключ и указатель на строку в таблице. Внешний ключ обеспечивает ссылочную целостность.
ФамилияИмяВидСтрана СмитДжонпловецСША ИвановИвангимнастРоссия БельмондоФрансуапятиборецФранция СмитДжинNULLВеликобрита ния ФамилияИмяГод рожденияПочтовый индекс СмитДжон ИвановИван ЛеклеркФрансуа Смит Джин Таблица Список участников. Таблица Заявка (Фамилия, Имя) – первичный ключ (Фамилия, Имя) – внешний ключ; связь «один-к-одному»
Фрагмент схемы базы данных Northwind:
Первая нормальная форма (1НФ) ФамилияИмяОтчествоАдрес ИвановИванСергеевичКрасный проспект, 43, кв. 23 ПетровВасилийNULLМочище
Вторая нормальная форма (2НФ) (Фамилия, Имя, Страна) – первичный ключ Неключевое поле «Код страны» однозначно определяется отдельным полем составного ключа.
Приведение к 2НФ: ФамилияИмяВидСтрана СмитДжонпловецСША ИвановИвангимнастРоссия ЛеклеркФрансуапятиборецФранция СмитДжонNULLВеликобритания СтранаКод страны СШАUS РоссияRF ФранцияFR ВеликобританияUK
Третья нормальная форма (3НФ) ФамилияДолжностьЗарплатаУченая степень ИвановВНС30000д.ф.-м.н. ПетровМНС10000магистр СидоровМНС14000к.ф.-м.н. ЛукьяновСНС25000д.ф.-м.н. Поле «Зарплата» однозначно определяется полями «Должность» и «Ученая степень»
ФамилияДолжностьУченая степень ИвановВНСд.ф.-м.н. ПетровМНСд.ф.-м.н. СидоровМНСк.ф.-м.н. ЛукьяновСНСмагистр ДолжностьУченая степеньЗарплата ВНСд.ф.-м.н СНСд.ф.-м.н МНСк.ф.-м.н МНСмагистр10000 Приведение к 3НФ:
select ''Фамилия'', ''Зарплата'' from Collaborators where ''Ученая степень''=''д.ф.-м.н.'' select Фамилия, Код страны from List, Countries where List.''Страна''=Countries.''Страна'' select 'Фамилия, Код страны from List inner join Countries on List.''Страна''=Countries.''Страна'' // Уст. select * from Collaborators where ''Ученая степень''=''д.ф.-м.н.'' select * from Collaborators Операторы SQL (Structured Query Language):
insert into Countries(Страна,Код) values (Казахстан, KZ) insert into Участники(Фамилия, Имя) values (Кузнецофф, Бритни) update Участники set Фамилия=Кузнецова where Имя=Бритни update Участники set Страна=США where Страна=Украина delete Участники where Страна=США and Имя=Иван delete Участники where Страна=США and Имя=Иван delete Участники // truncate table Участники