Базы данных
Преобразование ER-модели в реляционную модель. Создание бинарных связей в программе ERModeler. Использование системы управления базами данных SQL Server версии 2005 в качестве среды программирования. Использование условий отбора и агрегирующих функций.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | учебное пособие |
Язык | русский |
Дата добавления | 20.08.2014 |
Размер файла | 551,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Команда:
INSERT INTO k_dept (dept_short_name, dept_full_name)
VALUES('Служба безопасности', 'Отдел №1');
Ошибка:
Msg 8152, Level 16, State 14, Line 1
Символьные или двоичные данные могут быть усечены.
Выполнение данной инструкции было прервано.
Объяснение:
Длина значения в строковом поле не должна превышать длину поля, заданную при создании таблицы.
Приложение 3. Реляционная алгебра и SQL
Рассмотрим, как связаны операции реляционной алгебры и язык SQL, т.е. приведем примеры запросов SQL, аналогичных операциям реляционной алгебры. В качестве примера базы данных будем использовать «Музыкантов».
Операция проекции proj выражается через SELECT с ключевым словом DISTINCT.
Получить все названия ансамблей:
proj НазАнс (Ансамбли)
SELECT DISTINCT НазАнс FROM Ансамбли
Операция выбора sel выражается через SELECT с ключевым словом WHERE.
Получить данные об ансамблях из России:
sel СтрАнс='Россия' (Ансамбли)
SELECT * FROM Ансамбли WHERE СтрАнс='Россия'
Условия также могут быть и сложными.
Получить имена музыкантов, родившихся в 20-м веке
SELECT ИмяМуз FROM Музыканты WHERE ДатаРожд>'31.12.1900' AND ДатаРожд<'01.01.2001'
Операция соединения таблиц join может быть выражена несколькими способами.
Получить имена композиторов:
proj ИмяМуз (Музыканты join Сочинения)
Можно использовать связь таблиц через условие WHERE:
SELECT DISTINCT ИмяМуз FROM Музыканты М, Сочинения С WHERE С.НомМуз=М.НомМуз
Можно использовать более современный синтаксис JOIN... ON
SELECT DISTINCT ИмяМуз FROM Музыканты М JOIN Сочинения С ON С.НомМуз=М.НомМуз
Если требуется вывести данные из одной таблицы, а условие накладывать на другую таблицу, то удобно использовать подзапросы, связанные и несвязанные.
SELECT DISTINCT ИмяМуз FROM Музыканты WHERE НомМуз IN
(SELECT НомМуз FROM Сочинения)
или
SELECT DISTINCT ИмяМуз FROM Музыканты WHERE НомМуз = Any
(SELECT НомМуз FROM Сочинения)
или
SELECT DISTINCT ИмяМуз FROM Музыканты М WHERE EXISTS
(SELECT * FROM Сочинения С WHERE
С.НомМуз=М.НомМуз)
Приведем пример сложного запроса, использующего данные из всех 6 таблиц базы данных.
Получить названия ансамблей, которые играли Моцарта на саксофоне:
proj НазАнс
(proj НомСоч (sel ИмяМуз='Моцарт' (Музыканты) join
Сочинения)
join
proj НомСоч, НомАнс
(proj НомИсп
(sel Инструмент ='Саксофон' (Исполнители))
join УчАнс join Исполнения)
join Ансамбли )
SELECT НазАнс FROM Ансамбли WHERE НомАнс IN
(
SELECT И1.НомАнс
FROM Исполнения И1, Исполнители И2, Музыканты М,
Сочинения С, УчАнс У
WHERE И1.НомСоч=С.НомСоч AND С.НомМуз=М.НомМуз AND
И1.НомАнс=У.НомАнс AND И2.НомИсп=У.НомИсп AND
М.ИмяМуз='Моцарт' AND
И2.Инструмент='Саксофон'
)
Операция объединения union соответствует нескольким командам SELECT, связанным ключевым словом UNION.
Получить общий список фамилий композиторов и дирижеров:
proj ИмяМуз (Музыканты join Сочинения)
union
proj ИмяМуз (Музыканты join Исполнения)
SELECT DISTINCT ИмяМуз FROM Музыканты М, Сочинения С WHERE С.НомМуз=М.НомМуз
UNION
SELECT DISTINCT ИмяМуз FROM Музыканты М, Исполнения И WHERE И.НомМуз=М.НомМуз
Операция пересечения intersection может быть выражена несколькими способами.
Получить имена музыкантов, которые играют и на саксофоне, и на кларнете:
proj ИмяМуз (Музыканты join sel
Инструмент='Саксофон'(Исполнители))
intersection
proj ИмяМуз (Музыканты join sel
Инструмент='Кларнет'(Исполнители))
SELECT DISTINCT ИмяМуз FROM Музыканты М1,
Исполнители И1, Исполнители И2
WHERE М1.НомМуз=И1.НомМуз AND
И1.Инструмент='Саксофон' AND
И2.Инструмент='Кларнет' AND
И2.НомМуз=И1.НомМуз
или
SELECT DISTINCT ИмяМуз
FROM Музыканты М1, Исполнители И1
WHERE М1.НомМуз=И1.НомМуз AND
И1.Инструмент='Саксофон' AND
М1.НомМуз IN
(SELECT НомМуз FROM Исполнители И2
WHERE И2.Инструмент='Кларнет')
или
SELECT DISTINCT ИмяМуз
FROM Музыканты М1, Исполнители И1
WHERE М1.НомМуз=И1.НомМуз AND
И1.Инструмент='Саксофон' AND
М1.НомМуз =ANY
(SELECT НомМуз FROM Исполнители И2
WHERE И2.Инструмент='Кларнет')
или
SELECT DISTINCT ИмяМуз
FROM Музыканты М1, Исполнители И1
WHERE М1.НомМуз=И1.НомМуз AND
И1.Инструмент='Саксофон' AND
EXISTS
(SELECT * FROM Исполнители И2
WHERE И2.Инструмент='Кларнет'
AND И2.НомМуз=И1.НомМуз)
Операция вычитания difference также может быть выражена несколькими способами.
Получить имена музыкантов, котоые играют на саксофоне, но не играют на кларнете:
proj ИмяМуз (Музыканты join sel
Инструмент='Саксофон'(Исполнители))
diffrence
proj ИмяМуз (Музыканты join sel
Инструмент='Кларнет'(Исполнители))
SELECT DISTINCT ИмяМуз
FROM Музыканты М1, Исполнители И1
WHERE М1.НомМуз=И1.НомМуз AND
И1.Инструмент='Саксофон' AND
М1.НомМуз NOT IN
(SELECT НомМуз FROM Исполнители И2
WHERE И2.Инструмент='Кларнет')
или
SELECT DISTINCT ИмяМуз
FROM Музыканты М1, Исполнители И1
WHERE М1.НомМуз=И1.НомМуз AND
И1.Инструмент='Саксофон' AND
М1.НомМуз !=ALL
(SELECT НомМуз FROM Исполнители И2
WHERE И2.Инструмент='Кларнет')
или
SELECT DISTINCT ИмяМуз
FROM Музыканты М1, Исполнители И1
WHERE М1.НомМуз=И1.НомМуз AND
И1.Инструмент='Саксофон' AND
NOT EXISTS
(SELECT * FROM Исполнители И2
WHERE И2.Инструмент='Кларнет'
AND И2.НомМуз=И1.НомМуз)
Операция умножения product получается, если мы выполняем выборку из 2 таблиц, но не указываем условия связи.
Получить всевозможные пары имен музыкантов:
Музыканты2 aliases Музыканты
proj Музыканты.ИмяМуз, Музыканты2.ИмяМуз
(Музыканты product Музыканты2)
SELECT М1.ИмяМуз, М2.ИмяМуз
FROM Музыканты М1, Музыканты М2
Очень интересно выглядит операция деления division. Она представляет собой двойное отрицание существования.
Получить названия ансамблей, которые играли все произведения Моцарта (т.е., нет ни одного произведения Моцарта, которого они бы не играли):
proj НазАнс
(proj НомАнс, НомСоч (Исполнения)
division
proj НомСоч (sel ИмяМуз='Моцарт' (Музыканты)
join Сочинения)
join Ансамбли)
SELECT НазАнс FROM Ансамбли А WHERE NOT EXISTS
(
SELECT * FROM Сочинения С, Музыканты М
WHERE С.НомМуз=М.НомМуз AND ИмяМуз='Моцарт'
AND NOT EXISTS
(
SELECT * FROM Исполнения И
WHERE И.НомСоч=С.НомСоч AND
И.НомАнс=А.НомАнс
)
)
Литература
Грабер М. SQL. М.: Лори. 2007. 672 с.
Виейра Р. Программирование баз данных Microsoft SQL Server 2005 для профессионалов. М.: Вильямс, Диалектика. 2008. 832 c.
Ульман Дж. Базы данных на Паскале. М.: Машиностроение. 1990. 386 с.
Крёнке Д. Теория и практика построения баз данных, 9-е издание. СПб.: Питер. 2005. 900 с.
Учебники по SQL Server на сайте Microsoft: http://msdn.microsoft.com/ru-ru/library/ms167593.aspx.
Размещено на Allbest.ru
...Подобные документы
Устройства внешней памяти. Система управления базами данных. Создание, ведение и совместное использование баз данных многими пользователями. Понятие системы программирования. Страницы доступа к данным. Макросы и модули. Монопольный режим работы.
реферат [27,5 K], добавлен 10.01.2011Освоение сервисной системы управления базами данных Microsoft SQL. Разработка базы данных "Служба АТС" в среде Microsoft SQL Server Management Studio и создание запросов на языке SQL. Апробация инфологической модели "сущность - связь" базы данных.
курсовая работа [2,9 M], добавлен 29.06.2015Классификация моделей построения баз данных. Работа с реляционными базами данных: нормализация таблиц, преобразование отношений полей, преобразование функциональной модели в реляционную. Понятие языка определения данных и языка манипуляции данными.
реферат [123,0 K], добавлен 22.06.2011Язык манипуляции данными. Процесс отбора данных. Использование агрегатных функций и специальных операторов в условиях отбора. Создание и использование представлений и хранимых процедур. Использование триггеров, разработка интерфейса пользователя.
лабораторная работа [70,6 K], добавлен 13.02.2013Базы данных и их использование в вычислительной технике. Особенности и основная конструктивная единица сетевой модели данных. Иерархическая модель, объекты предметной области. Реляционная модель, ее наглядность, представление данных в табличной форме.
реферат [115,8 K], добавлен 19.12.2011Проектирование базы данных для автоматизированной системы "Склад". Разработка концептуальной модели (ER-диаграмма). Преобразование в реляционную модель и ее нормализация. Разработка запросов к базе данных на языке SQL. Скрипт для создания базы данных.
курсовая работа [161,8 K], добавлен 07.10.2013Основные типичные системы управления базами данных. Способы описания взаимодействий между объектами и атрибутами. Структурная и управляющая части иерархической модели базы данных. Представление связей, операции над данными в иерархической модели.
реферат [30,5 K], добавлен 22.02.2011Базы данных с двумерными файлами и реляционные системы управления базами данных (СУБД). Создание базы данных и обработка запросов к ним с помощью СУБД. Основные типы баз данных. Базовые понятия реляционных баз данных. Фундаментальные свойства отношений.
реферат [57,1 K], добавлен 20.12.2010Понятия основных компонентов базы данных Access. Таблицы, отчеты, макросы и модули, форма, запросы к базе и их виды. Типы данных. Создание базы данных "Кадры". Создание таблицы в режиме конструктора. Использование мастера подстановок для создания связей.
курсовая работа [818,0 K], добавлен 10.03.2016Основные конструкции структурированного языка запросов SQL. Изучение среды MS SQL Server Management Studio, проверка подлинности. Создание таблиц базы данных. Таблица specialit, сourse, group, discipline, account. Проектирование структур данных.
лабораторная работа [963,2 K], добавлен 14.01.2016Типы окружений для использования системы управления базами данных SQL Server. Клиент-серверная система. Использование SQL Server в качестве настольной системы. Требования к квалификации администраторов. Введение в структурированный язык запросов SQL.
презентация [368,4 K], добавлен 14.10.2013Обзор существующих систем управления базами данных. Концептуальное, логическое и физическое проектирование и создание базы данных. Обзор языков программирования. Создание и реализация клиентского приложения с помощью выбранного языка программирования.
дипломная работа [2,4 M], добавлен 02.06.2013Программные продукты, используемые при проектировании базы данных. Разработка базы данных "Библиотека" с использование программного проекта Microsoft SQL Server. Создание таблиц, триггеров, пользователей, репликации, запросов, функций, процедур.
курсовая работа [897,6 K], добавлен 21.11.2011Выбор методологии проектирования и системы управления базами данных. Описание предметной области и проектирование физической структуры базы данных. Реализация проекта в MS SQL Server 2008. Построение инфологической модели. Ограничения целостности связи.
курсовая работа [679,2 K], добавлен 22.01.2013Иерархические, сетевые и реляционные модели данных. Различия между OLTP и OLAP системами. Обзор существующих систем управления базами данных. Основные приемы работы с MS Access. Система защиты базы данных, иерархия объектов. Язык программирования SQL.
курс лекций [1,3 M], добавлен 16.12.2010Анализ возможностей системы управления базами данных "Microsoft Access 2003". Создание базы данных, предназначенной для отражения деятельности аэропорта. Концептуальная и физическая модель базы данных. Создание таблиц, запросов, отчетов и главной формы.
курсовая работа [1,8 M], добавлен 26.06.2013Виды языков программирования, их функциональные особенности и отличительные признаки, сферы практического применения. Язык для работы с базами данных SQL. Синтез компьютерной модели спроектированной базы данных, оценка ее эффективности и значение.
контрольная работа [365,4 K], добавлен 24.02.2015Исследование характеристик и функциональных возможностей системы управления базами данных Microsoft Office Access. Определение основных классов объектов. Разработка базы данных "Делопроизводство". Создание таблиц, форм, запросов, отчетов и схем данных.
реферат [1,3 M], добавлен 05.12.2014Создание базы данных для информационной системы "Грузоперевозки". Анализ предметной области, разработка концептуальной и логической модели базы данных, с использованием средства MS Micrоsоft SQL Server 2005, реализация физического проектирования базы.
курсовая работа [1,3 M], добавлен 01.07.2011Особенности разработки инфологической модели и создание структуры реляционной базы данных. Основы проектирования базы данных. Разработка таблиц, форм, запросов для вывода информации о соответствующей модели. Работа с базами данных и их объектами.
курсовая работа [981,4 K], добавлен 05.11.2011