
- •1) Сетевые, корпоративные, распределенные, клиент-серверные, полнофункциональные, масштабируемые, “большие” субд.
- •2) Локальные, персональные, настольные, файл-серверные, “малые” субд.
- •Сетевая модель
- •Объектно‑ориентированная модель.
- •Основные термины, понятия и определения
- •1.4. Определение доменов атрибутов.
- •1.5. Определение первичных и вторичных ключей.
- •1.6. Определение суперклассов и подклассов для типов сущностей.
- •1.7. Создание er‑диаграмм для отдельных пользователей.
- •2.6. Создание er‑диаграмм для отдельных пользователей.
- •3.4. Создание er‑диаграммы глобальной логической модели.
- •4. Создание глобальной логической модели в среде целевой субд.
- •6. Разработка механизма защиты.
- •Клиент-Интернет
- •Основные ограничения
- •Компоненты Visual FoxPro
Основные термины, понятия и определения
База данных (БД) ‑ совокупность взаимосвязанных данных.
Система управления базой данных (СУБД) ‑ комплекс программных средств, предназначенный для создания, ведения и использования БД.
По возможностям выделяют две группы СУБД:
1. Полнофункциональные СУБД ‑ наиболее мощные, многопользовательские, с системами защиты, копирования и восстановления данных (Oracle, Microsoft SQL Server, Informix, DB/2), но более сложные СУБД.
2. Персональные СУБД ‑ с ограниченными возможностями, но более простые в использовании (Access, Visual FoxPro, Paradox, Clipper, dBase, Clarion, DataEase, DataFlex, R: BASE).
Это деление довольно условно, так как персональные СУБД постоянно совершенствуются, догоняя полнофункциональные СУБД.
Банк данных (БнД) ‑ совокупность БД, СУБД и комплекса технических средств (компьютеры, внешние устройства, устройства связи и др.).
Хранилище (склад) данных (ХД) ‑ извлеченные данные из оперативных и архивных БД, преобразованные в формат, приемлемый для сложных нерегламентированных запросов и многомерного анализа.
Предметная область базы данных (ПО) ‑ организация, подразделение, для которого создается БД.
Приложение ‑ комплекс программ, автоматизирующий обработку данных для прикладной задачи.
Объект (сущность ) - предмет, человек или событие, о котором собирается и хранится информация.
Экземпляр объекта (кортеж, запись) - единичное значение объекта.
Пример. Объект “СОТРУДНИК”, экземпляр ‑ данные об Иванове И.
Атрибут ‑ отдельная характеристика (свойство) объекта.
Домен ‑ область значений одного или нескольких атрибутов.
Порядок (степень)/Мощность отношения (кардинальное число) отношения ‑ число атрибутов/кортежей в отношении.
Таблица - совокупность записей с фиксированным числом полей. Таблица (отношение) содержит все экземпляры объекта. Объект, экземпляр объекта и атрибут соответствуют понятиям: таблица, строка (кортеж отношения) и колонка таблицы соответственно.
Рекомендуется называть атрибут и сущность существительными в единственном числе, а таблицу ‑ именем объекта во множественном числе (например, объекту “СОТРУДНИК” соответствует таблица “СОТРУДНИКИ”).
Ключ - атрибут или группа атрибутов (называемых ключевыми), однозначно определяющая экземпляр объекта (запись или строку таблицы).
Пример. Атрибуты “Код завода”, “Код изделия”, “Дата выпуска изделия” образуют составной ключ объекта “ВЫПУСК ИЗДЕЛИЯ”.
Словарь - централизованное хранилище сведений об объектах, данных, взаимосвязях, источниках, значениях, форматах представлениях. Словари бывают встроенные (интегрированные) или внешние (автономные).
Встроенный словарь является частью самой СУБД. Достоинства: высокая степень защиты и контроля данных. Недостаток: ориентация на конкретную СУБД.
Автономный словарь создается отдельно от СУБД специальными пакетами. Достоинства: переносимость в другие СУБД. Недостаток: слабый контроль.
Администрация базы данных (АБД) ‑ лицо или группа лиц, ответственная за проектирование и эффективное использование БД.
Основные функции АБД:
1. Участие в разработке проекта по созданию БД.
2. Обеспечение целостности БД (копирование, восстановление).
3. Обучение пользователей работе с БД (вход в БД, ввод паролей, работа в нормальной и экстремальной ситуациях и др.).
4. Отслеживание трафика загрузки БД, сбоев, характеристик (время доступа, общее время обработки запросов и т.д.).
5. Реорганизация БД с целью улучшения характеристик базы.
6. Реализация многопользовательского режима работы с БД (парольная защита от несанкционированного доступа, шифрование данных, разделение доступа и др.).
Основные команды языка запросов SQL. Типы запросов (команды Select) с примерами.
Запрос представляет собой требование, определяющее выборку нужных данных из одной или нескольких таблиц базы, удаление или изменение данных, создание новых таблиц. Существуют два типа языков описания запросов: язык запросов по образцу QBE (Query By Example) и структурированный язык запросов SQL (Structured Query Language).
Язык QBE предполагает использование визуальных средств построения результирующей таблицы из первоначально пустой таблицы путем выборки и связывания нужных исходных таблиц и запросов, перетаскивания мышкой нужных колонок, формирования мастерами расчетных колонок и условий отбора записей, сортировки, группировки и агрегирования данных. Примером использования QBE является запросная форма СУБД Access.
Язык SQL (стандарт SQL‑92) предполагает использование командных средств. Хотя синтаксис команд языка SQL и достаточно унифицирован для различных СУБД, но есть некоторые отличия в деталях. Существуют статический SQL (команды SQL включаются в выполняемый модуль после компиляции) и динамический SQL (команды SQL формируются в процессе выполнения программы и выполняются в интерпретирующем режиме). В результате выполнения запроса на выборку формируется новая таблица, называемая представлением (View), к которой устанавливается соответствующий указатель, называемый курсором (Cursor). Курсор служит для ссылки на нужное представление в командах открытия, перемещения по записями и закрытия нужного представления (п. 4.3.6).
Основные команды SQL
Select является мощным средством создания запросов на выборку информации. Приведем ее предварительный синтаксис:
Select <поля, выражения или *> From <исходные таблицы>
Where <условие отбора записей> Group By <поля для группировки>
Having <условие отбора группы> Order By <поля для сортировки>
Рассмотрим фразы команды (не все фразы обязательны).
Select [Distinct] <выражение> [[As] <псевдоним>] [, ...]
From <таблица> [<тип связи> Join <таблица> On <условие связи>]...
Distinct ‑ дублирующие записи запроса не выводятся. Имя поля может быть составным, с включением имени таблицы, точки и самого имени таблицы. Если имя таблицы содержит пробелы, то оно заключается в апострофы. Вместо имени поля можно указать звездочку, если необходимо построить выборку из всех полей таблицы.
Псевдонимзадает наименование колонки (пробелы запрещены).
Для связывания таблиц используется фраза Join. Тип связи задается словами:Left/Right (в запрос входят все записи из таблицы, стоящей в запросе слева/справа),Inner(входят только записи с совпадающими ключами связи).
Пример задания базового запроса по базе строек.
Select Stroiki.Ns, Stroiki.Ds, Stroiki.Ss, Stroiki.Fs, Stroiki.M, Stroiki.Em, Podrjdhiki.Np, Zakazhiki.Nz FROM “stroiki.DB“ Stroiki
Inner Join “zakazhiki.db“ Zakazhiki ON (Stroiki.Kz = Zakazhiki.Kz)
Inner Join “podrjdhiki.DB“ Podrjdhiki ON (Stroiki.Kp = Podrjdhiki.Kp)
В результате выполнения запроса получается совокупность колонок, в заголовках которых могут находиться имена полей. Если нас не устраивают имена, формируемые по умолчанию, то можно назначить свои (псевдонимы), указав их после слова As. В выражении могут использоваться собственные специальные арифметические функции, действующие “по вертикали”: среднее значение в группе (Avg), минимальное (Min), максимальное (Max), сумма (Sum), число записей в группе (Count). Функция может иметь в качестве аргумента звездочку (Count (*)), что означает подсчет всех записей, попавших в выборку.
Where <условие отбора>- условие отбора записей в запрос. В условиях допускается использование логических операторов And, Or, Not и круглых скобок. В условиях, кроме любых функций Pascal, могут содержаться следующие операторы SQL:
<выражение> Like<шаблон> позволяет построить условие сравнения по шаблону, набор символов: “_” (неопределенный символ), “%” (любые символы, например: Where Ns Like ‘Школа%’), [n‑k]% (любые символы из интервала от n до k, например: Like ‘[A‑D]%’);
<выражение> Between<нижнее значение> And <верхнее значение> проверяет, находится ли выражение в указанном диапазоне (Where [Ss] Between 0 And 1000000);
<выражение> In(<выражение>,<выражение>,...) проверяет, находится ли выражение, стоящее слева от слова IN, среди перечисленных справа от него (Where Kz In (1,2,6)).
Group By <колонка>[,<колонка>...]‑ задаются колонки, по которым производится группирование выходных данных. Все записи таблицы, для которых значения колонок совпадают, отображаются в выборке единственной строкой. Группирование удобно для получения некоторых сводных характеристик (суммы, число записей, среднее) группы.
Пример. Вывести число сотрудников, максимальную, среднюю, минимальную и итоговую зарплату по подразделениям (поле Podr) по таблице SOTRUDNIKI.
Select podr, Count(*),Min (zarpl), Avg (zarpl), Max(zarpl), Sum (zarpl)
From Sotrudniki Group By podr Order By podr
Having <условие отбора группы>задает критерий отбора сформированных в процессе выборки групп.
Order By <колонка> [Asc/Desc] [,<колонка> [Asc/Desc]...]– опция, которая задает упорядочение по колонкам по возрастанию (Asc) или убыванию (Desc). Колонка задается номером или именем поля (Order By Kp, Kz).
Рассмотрим другие команды SQL.
Create Table <имя таблицы> (<поле> <тип поля> [Not Null], ...) ‑ создание таблицы (Create Table Kadr (Tab Integer, Fam Char (30) Not Null Primary Key (Tab))). Обязательное присутствие значения в поле задается параметром Not Null. Основные типы полей в SQL в Delphi: SmallInt (Short), Integer (Long Integer), Numeric(x,y), Float (x,y), Char (n), Data, Boolean, Time, Money, Autoinc. Для других СУБД типы полей могут быть другими.
Create View <имя представления> [(<имя столбца>,...)] As <оператор Select> ‑ создание представления с новыми именами столбцов (Create View NameStroek As Select Stroiki.Ns FROM Stroiki).
Alter Table <имя таблицы> {Add | Modify | Drop} <поле> [<тип поля>] [Not Null, ... ‑ изменение структуры таблицы: включение (Add), изменение (Modify) и удаление (Drop, тип поля не указывается) полей таблицы (Alter Table Stroiki Add Gorod Integer Drop Kp).
Update <таблица> Set <имя поля>={<новое значение>|Null}, ...
[Where <условие>] ‑ изменение значений полей (Update Kadr Set Oklad=1.5*Oklad Where Cex=”Цех N2”).
Insert Into<имя таблицы>(<список полей>) {Values (<список значений>)| Select...} ‑ включение новой записи или группы записей из другой таблицы.
Примеры
Insert Into Zakazhiki (Kz,Nz) Values (3,’ЗИЛ’); // включение одной записи
Insert Into Podrjdhiki (Kp,Np) Select KPodr, NPodr From SpravPodr
Where DSozd >01.01.80; //включение группы записей из таблицы SpravPodr
Create [Unique] Index <имя индекса> On <таблица> (<поле> [{Asc|esc}],...) ‑ создание индекса (Create index indproba on stroiki (kz, kp)).
Drop Table/View <имя> ‑ удаление таблицы/представления (Drop Table Stroiki).
Drop Index [“<имя таблицы>”.]<имя индекса> ‑ удаление индекса.
Drop Index [“<имя таблицы>”.]Primary ‑ удаление главного индекса.
Delete From <имя таблицы> [Where<условие>] ‑ удаление записей.
В запросе любого типа может быть вложенный запрос, который называется подзапросом. Подзапрос ‑ это запрос, результат которого используется в условии отбора в выражении Where другого внешнего запроса. Подзапрос заключается в круглые скобки.
Пример. Вывести крупные стройки со сметой выше средней по стройкам: Select * From Stroiki Where Ss > (Select Avg(Ss) From Stroiki).
Принципы и этапы проектирования БД.
Основные принципы проектирования баз данных.
1. Удовлетворение информационных потребностей различных пользователей за приемлемое время и в удобной форме.
2. Гибкая и нетрудоемкая модификация при изменении предметной области, программ и технических средств.
3. Достоверность данных, исключение дублирования.
4. Защита от несанкционированного доступа.
5. Восстановление данных и надежность функционирования.
Этапы и шаги проектирования и создания баз данных
1. Создание локальной концептуальной модели данных. Построение локальной концептуальной модели данных для каждого типа пользователя предметной области.
1.1. Определение типов сущностей. Выявление основных типов сущностей в представлениях пользователя и их документирование.
1.2. Определение типов связей. Определение типов связей между сущностями; документирование и составление ER‑диаграмм.
1.3. Определение атрибутов и их связей. Связывание атрибутов с сущностями; выявление простых, составных, множественных, производных атрибутов и их документирование.