- •"Мати - российский государственный технологический университет имени к.Э. Циолковского"
- •Курс лекций по дисциплине «базы данных»
- •Москва 2013
- •Введение
- •Для чего нужны базы данных
- •Основные определения
- •Классификация бд
- •Реляционные бд
- •Структура таблиц и типы данных
- •Целостность данных
- •Поддержание ссылочной целостности
- •Правила Кодда
- •Реляционная алгебра
- •Теоретико-множественные операторы Объединение
- •Проекция
- •Соединение
- •Общая операция соединения
- •Тэта-соединение
- •Экви-соединение
- •Естественное соединение
- •Деление
- •Создание таблиц
- •Выборка данных
- •Объединение таблиц
- •Добавление данных
- •Insert into имя_таблицы
- •Values (значение 1, значение 2, …)
- •Values ('Комиксы', 'Не знаю, какая у них история');
- •Values ('Комиксы', 'Не знаю, какая у них история');
- •Values ('Комиксы');
- •Удаление данных
- •Изменение данных
- •Проектирование баз данных
- •Концептуальное проектирование и построение er-модели
- •Логическое проектирование
- •Физическое проектирование
- •Нормализация базы данных
- •Первая нормальная форма.
- •Индексы
- •Общие сведения
- •Кластерные индексы
- •Некластерные индексы
- •Создание индекса
- •Многопользовательский доступ к данным
- •Технология «клиент-сервер»
- •Транзакции
- •Проблемы параллельного доступа.
- •Блокировки и уровни изоляции
- •Грануляция блокировок (уровни блокирования)
- •Хранимые процедуры
- •Понятие хранимой процедуры
- •Типы хранимых процедур
- •Создание, изменение и удаление хранимых процедур
- •Приложения
Изменение данных
Происходит с помощью инструкции UPDATE. Поля, значения которых нужно изменить, указываются в разделе SET. Например, изменить название г. Ступино на Новое Ступино, а его индекс на 142900
UPDATE Cities
SET CityName = 'Новое Ступино', PostCode = '142900'
WHERE CityName = 'Ступино';
Если необходимо изменить несколько полей, в разделе SET их указывают через запятую. В раздел WHERE можно вставлять подзапросы, так же, как в инструкции DELETE. Например, отметить, что читатель Романов сдал все книги.
UPDATE BookLending
SET ReturnFlag = 1
WHERE ReaderID =
(SELECT ReaderID
FROM Readers
WHERE ReaderSurname = 'Романов')
Подзапрос также может находиться в разделе SET.
Изменить жанр книги «Мертвые души» на «Роман». Для этого необходимо изменить поле GenreID в таблице Books, при этом само название жанра менять ни к чему.
UPDATE Books
SET GenreID = (SELECT GenreID FROM Genres WHERE GenreName = 'Роман')
WHERE BookName = 'Мертвые души';
Проектирование баз данных
Нельзя просто так взять и построить базу данных. (с)
Казалось бы, куда проще. Взял и написал БД по образу и подобию уже существующих. Однако потом выясняется, что хорошей схемы базы нет, БД имеет слишком большой объем или чересчур медленно работает, какие-то возможности потерялись; людям, которые будут базу поддерживать, разобраться в ней очень непросто, да и сам разработчик в какой-то момент забывает, для чего нужно то или иное поле.
Чтобы избежать подобных проблем, весь проект условно разделяют на три основных этапа – концептуальное (инфологическое) проектирование, создание логической и физической моделей БД.
Концептуальное проектирование и построение er-модели
Концептуальное проектирование – это построение информационной модели наиболее высокого уровня абстракции, без ориентации на какую-либо конкретную СУБД и модель данных.
На этом этапе проектирования используют так называемые ER-модели (Entity Relationship Model – модель «сущность-связь»). Модель была предложена американским ученым Питером Ченом в 1976 г. Основные элементы модели – сущность, отношение, атрибут.
Сущность – реальный или представляемый объект, информацию о котором необходимо хранить в базе данных (человек, книга, часть света, профессия и т.д.) Сущности состоят из экземпляров данных, т.е. если «профессия» – это сущность, то повар – экземпляр данной сущности.
Сущности могут быть связаны друг с другом. Например, человек имеет одну или несколько профессий.
Различают связи (отношения) трёх типов: один-к-одному, один-ко-многим, многие-ко-многим. Отношение может объединять две и более сущностей или связывать сущность саму с собой.
Атрибут – значимое свойство сущности или отношения (название профессии, имя и возраст человека, автор книги). Разным сущностям и отношениям могут принадлежать одноименные атрибуты (название для книги и для профессии).
Существуют различные нотации (способы графического отображения) концептуальных моделей – ER-диаграммы. Одна из самых известных – нотация Питера Чена. В ней каждая сущность изображается в виде прямоугольника, атрибут – овала, отношение – ромба. Например, попробуем построить возможный вариант фрагмента схемы БД многопользовательской игры Counter Strike.
Здесь каждый игрок обладает атрибутами «Имя» и «Внешний вид», у команды есть название и концепция игры, игрок принадлежит к конкретной команде (связь «1 команда – много игроков»), также он может покупать оружие (связь «много оружия – много игроков»), для которого заданы название и стоимость.
