Меню
Главная
Авторизация/Регистрация
 
Главная arrow Информатика arrow Информационные технологии в экономике и управлении
Посмотреть оригинал

ПРОЕКТИРОВАНИЕ РЕЛЯЦИОННЫХ БАЗ ДАННЫХ ДЛЯ КОНКРЕТНОЙ СУБД

Проектирование реляционной схемы из ER-модели происходит следующим образом:

  • 1) каждая сущность становится таблицей реляционной базы данных;
  • 2) каждый атрибут сущности становится столбцом таблицы. Столбцы, соответствующие необязательным атрибутам, могут содержать неопределенные значения; столбцы, соответствующие обязательным атрибутам,— не могут;
  • 3) связи «многие к одному» (и «один к одному») становятся внешними ключами. В случае связи «многие к одному» в таблицу сущности на стороне «многие» добавляется столбец, который может принимать значения, соответствующие первичному ключу сущности на стороне «один». В случае связи «один к одному» внешний ключ может быть включен в любую сущность;
  • 4) для каждой связи «многие ко многим» создается своя таблица. Столбцами этой таблицы станут все атрибуты, входящие в первичные ключи первой и второй сущности. Совокупность внешних ключей и будет первичным ключом для этой таблицы.

Индекс — специальная служебная таблица. Она содержит значения атрибута, для которого создается индекс, и хранит ссылки на строки, в которых указано данное значение. Создание индекса позволяет ускорить процесс поиска по данному атрибуту при выполнении запросов.

При создании базы данных требуется создать индексы для первичного ключа, внешних ключей и тех атрибутов, на которых предполагается в основном базировать запросы и выполнять соединения.

Практическая работа с таблицами базы данных базируется на внесении данных в таблицы, удалении данных из таблиц и выполнении запросов к базе данных. Запрос в самом простом случае можно рассматривать как просмотр содержимого какой-либо таблицы. Более сложные запросы позволяют получать данные одновременно из нескольких таблиц, формируя таким образом новые таблицы, выбирать данные, только отвечающие ряду условий.

В настоящее время широкое распространение получил язык манипулирования данными SQL (Structured Query Language — структу- ризованный язык запросов). Особенность предложений этого языка состоит в том, что они ориентированы в большей степени на конечный результат обработки данных, чем на процедуру этой обработки. SQL сам определяет, где находятся данные, какие индексы и даже наиболее эффективные последовательности операций следует использовать для их получения: не надо указывать эти детали в запросе к базе данных.

Все запросы на получение практически любого количества данных из одной или нескольких таблиц выполняются с помощью единственного предложения SELECT:

  • ? SELECT (выбрать) данные из указанных столбцов и (если необходимо) выполнить перед выводом их преобразование в соответствии с указанными выражениями и (или) функциями;
  • ? FROM (из) перечисленных таблиц, в которых расположены эти столбцы;
  • ? WHERE (где) строки из указанных таблиц должны удовлетворять указанному перечню условий отбора строк;
  • ? GROUP BY (группируя по) указанному перечню столбцов, с тем чтобы получить для каждой группы единственное агрегированное значение, используя во фразе SELECT SQL-функции SUM (сумма), COUNT (количество), MIN (минимальное значение), МАХ (максимальное значение) или AVG (среднее значение);
  • ? HAVING (имея) в результате лишь те группы, которые удовлетворяют указанному перечню условий отбора групп.

Простые запросы применяются в случае, когда необходимо получить значения во всей таблице или в некотором подмножестве ее столбцов. Пример — запрос выдать название, статус и адрес поставщиков:

SELECT Название, Статус, Адрес FROM Поставщики;

SELECT ПС, Название, Статус, Город, Адрес, Телефон FROM Поставщики;

Запрос с вычисляемым значением применяется в случае, когда в вывод результатов запроса требуется включить значение, которое непосредственно вычисляется из значении, хранимых в столбцах таблицы. Пример — выдать продукт, цену поставки, количество и сумму поставки:

SELECT ПР, Цена, К_во, (Цена * К_во) FROM Поставки;

Запросы с условиями применяются, когда требуется выдать не все строки таблицы, а лишь некоторое их подмножество. Подмножество строк таблицы можно выбрать, указав ограничения на значения отдельных столбцов. Ограничения можно задавать с помощью операций = (равно), о (не равно), (больше), >= (больше или равно), например: SELECT ПС, Название, Статус, Город, Адрес, Телефон FROM Поставщики WHERE Город = «Новосибирск».

В запросах допустимы логические операторы AND и OR. Например, если требуется выбрать поставщиков, которые размещаются либо в Новосибирске, либо в Омске, то запрос примет вид: SELECT ПС, Название, Статус, Город, Адрес, Телефон FROM Поставщики WHERE Город = «Новосибирск» OR Город = «Омск».

Если требуется выбрать строки, имеющие неопределенное (определенное) значение атрибута, то используется условие вида: Атрибут IS NULL или Атрибут IS NOT NULL.

Запросы с упорядочиванием примешотся для сортировки результатов запроса по одному из вошедших в запрос полей. Предположим, нужно выдать список новосибирских поставщиков в алфавитном порядке названий, это будет выглядеть так: SELECT ПС, Название, Статус, Город, Адрес, Телефон FROM Поставщики WHERE Город = «Новосибирск» ORDER BY Название.

Агрегирование данных в запросе применяется в случае, когда требуется получение обобщенных показателей по группам. Допустимы следующие операции надданными в группе: COUNT—число значений в столбце; SUM — сумма значений в столбце; AVG — среднее значение в столбце; МАХ — самое большое значение в столбце; MIN — самое малое значение в столбце. Например, в конце месяца требуется узнать общее количество проданного товара, количество сделок по данному товару и общую сумму реализации по данному товару. Это будет сделано следующим образом: SELECT ПР, SUM(K bo), COUNT(K_bo) SUM(K_bo * Цена) FROM Поставки GROUPBY ПР.

Запросы с использованием нескольких таблиц представляют собой наиболее мощное средство управления данными. Они позволяют формировать результаты на основе информации о связи данных различных сущностей. Он получается следующим образом: СУБД последовательно формирует строки декартова произведения таблиц, перечисленных во фразе FROM, проверяет, удовлетворяют ли данные сформированной строки условиям фразы WHERE, и если удовлетворяют, то включает в ответ на запрос те ее поля, которые перечислены во фразе SELECT. Условие WHERE должно обязательно содержать условия связи данных в виде: Сущность1.ВнешнийКлюч=Сущность2. ПервичныйКлюч (или Сущность1.Атрибут1=Сущность2.Атрибут2.). Например, требуется сформировать лист поставок, который содержит следующие поля: Продукт, количество, Название фирмы-поставщика, Адрес фирмы-поставщика. Это будет сделано так: SELECT ПР, К_во, Название, Адрес FROM Поставки, Поставщики WHERE Поставки. Поставщик=Поставщики.ПС.

В запросе, включающем несколько таблиц, имена всех атрибутов, входящих более чем в одну таблицу, должны указываться через точку после названия таблицы.

Остальные возможности языка SQL — для самостоятельного ознакомления.

КОНТРОЛЬНЫЕ ВОПРОСЫ

  • 1. Назовите этапы проектирования базы данных.
  • 2. Кратко охарактеризуйте основные понятия ER-модели.
  • 3. Что такое идентификатор (ключ)?
  • 4. Перечислите типы атрибутов.
  • 5. Опишите правила атрибутов.
  • 6. Что такое связь?
  • 7. Каким требованиям должна удовлетворять группировка атрибутов?
  • 8. Как действует аппарат нормализации отношений, предложенный Э. Коддом?
  • 9. Что такое неключевой атрибут, взаимонезависимые атрибуты?
  • 10. Дайте определение термина «внешний ключ».
  • 11. Каков порядок проектирования реляционных баз данных для конкретной СУБД?
  • 12. Что такое индекс?
  • 13. В каких случаях применяются простые запросы?
  • 14. Как происходит агрегирование данных в запросе?
 
Посмотреть оригинал
< Предыдущая   СОДЕРЖАНИЕ   Следующая >
 

Популярные страницы