- •28.09.2011 Лекция 2. Панасенко Сергей Петрович. Develop@ancud.Ru Основы проектирования и использования баз данных (часть 2). Дополнительные возможности оператора select
- •Оператор insert
- •Основные возможности языка определения данных
- •Основные параметры запроса на создание таблицы
- •Пример запроса на создание таблицы
- •Основные параметры запроса на модификацию таблицы
- •Примеры запросов на модификацию таблицы
- •Пример связи между таблицами (Пример 1)
- •Запрос на создание таблицы Course:
- •Запрос на создание таблицы Lectures:
- •Примеры других запросов языка определения данных:
- •Цели проектирования реляционных бд
- •Пример неудачно спроектированной бд с избыточностью:
- •Основные понятия нормализации:
- •Вторая нормальная форма
- •Пример таблицы, не соответствующей второй нормальной форме:
- •Пример бд, таблицы которой соответствуют второй нормальной форме:
- •Достоинства второй нормальной формы
- •Третья нормальная форма
- •Пример таблицы, не соответствующей третьей нормальной форме
- •Пример таблицы, соответствующей третьей нормальной форме
- •Достоинства третьей нормальной формы
- •Раздел 2.1. «Основы проектирования и использования баз данных».
- •Раздел 2.2. «Безопасность баз данных».
- •Внутренними источниками угроз безопасности субд являются
- •Безопасность взаимодействия с внешними компонентами
- •Составные части обеспечения безопасности бд
- •Логические подсистемы обеспечения безопасности
- •Основные средства обеспечения конфиденциальности субд
- •Представление
- •Пример таблицы, для которой необходимо представление
Основные возможности языка определения данных
-
Создание различных сущностей БД.
-
Модификация сущностей.
-
Их удаление.
Основные параметры запроса на создание таблицы
-
Имя создаваемой таблицы.
-
Характеристики каждого создаваемого столбца таблицы: имя, тип, размер, обязательность заполнения, значения по умолчанию и др.
-
Имя и свойства индексов, ключей и пр.
-
Дополнительная информация о таблице.
Пример интерфейса создания и редактирования таблиц
Пример запроса на создание таблицы
CREATE TABLE ‘Prep’ ( ‘NP’ INTEGER UNSIGNED NOT NULL избыточно AUTO_INCREMENT, ‘Name’ VARCHAR(255) NOT NULL, ‘Position’ VARCHAR (45) NOT NULL, ‘Seniority’ INTEGER UNSIGNED ZEROFILL, PRIMARY KEY(‘NP’) ) ENGINE=InnoDB
Яркий пример несовпадения с MySQL – там нет даже оператора CREATE
Таблицы могут быть оптимизированы по скорости добавления/извлечения. Этот вариант таблицы оптимизирован под использование транзакций – безопасной обработки данных путём их изменения в таблице
Основные параметры запроса на модификацию таблицы
-
Имя модифицируемой таблицы.
-
Характеристики каждого модифицируемого элемента таблицы.
-
Позиционирование каждого модифицируемого элемента таблицы, если оно требуется.
Примеры запросов на модификацию таблицы
-
Добавление столбца: ALTER TABLE ‘Prep’ ADD COLUMN ‘Age’ INTEGER UNSIGNED AFTER ‘Seniority’
-
Удаление столбца: ALTER TABLE ‘Prep’ DROP COLUMN ‘Age’
Вопросы: регистр, точка с запятой
-
Добавление индекса: ALTER TABLE ‘Prep’ ADD INDEX ‘Position_Index’(‘Position’)
-
Переименование индекса: ALTER TABLE ‘Prep’ DROP INDEX ‘Position_Index’, ADD INDEX ‘Position_Idx’ USING BTREE(‘Position’)
Пример связи между таблицами (Пример 1)
Prep
NP |
Name |
Position |
Seniority |
1 |
Иванов |
Доцент |
10 |
2 |
Петров |
Ст. преп. |
5 |
3 |
Сидоров |
Профессор |
20 |
Course
NC |
Title |
Hours |
Exam |
1 |
Защита информационных процессов |
64 |
+ |
2 |
Основы БД |
48 |
+ |
3 |
Параллельное и многопоточное программирование |
80 |
+ |
Lectures (связывает таблицы Prep и Course)
NP |
NC |
1 |
1 |
3 |
2 |
3 |
3 |
Фото: Создание таблицы Course …
Запрос на создание таблицы Course:
CREATE TABLE ‘Course’ ( ‘NC’ INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, ‘Title’ VARCHAR(255) NOT NULL, ‘Hours’ INTEGER UNSIGNED NOT NULL, ‘Exam’ CHAR ASCII NOT NULL, PRIMARY KEY(‘NC’) ) ENGINE=InnoDB
Фото: Создание таблицы Lectures с помощью MySQL Table Editor
Запрос на создание таблицы Lectures:
CREATE TABLE ‘Lectures’ ( ‘NP’ INTEGER UNSIGNED NOT NULL, ‘NC’ INTEGER UNSIGNED NOT NULL, CONSTRAINT ‘FK_Lectures_Prep’ FOREIGN KEY ‘FK_Lectures_Prep’ (‘NP’) REFERENCES ‘Prep’ (‘NP’) ON DELETE CASCADE ON UPDATE RESTRICT, CONSTRAINT ‘FK_Lectures_Course’ FOREIGN KEY ‘FK_Lectures_Course’ (‘NC’) REFERENCES ‘Course’ (‘NC’) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE=InnoDB
Пример 1: в таблицу Lectures не можем добавить несуществующие поля таблиц, с которыми связана эта таблица. Контроль логической целостности
Примеры других запросов языка определения данных:
-
Переименование таблицы: ALTER TABLE ‘Lectures’ RENAME TO ‘Lecturer’
-
Удаление таблицы: DROP TABLE ‘Lecturer’
Пример 1: не можем удалить таблицу Prep, потому что есть другая таблица, которая на неё ссылается (Lectures). Более того, мы не можем переименовать эту таблицу (как и таблицу Course)