Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Типы денормализации

1). Нисходящая денормализация – предполагает перенос атрибута из родительской сущности в дочернюю.

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

2). Восходящая денормализация – предполагает сохранение информации из дочерней сущности в родительской в форме итога.

Этот тип используется, если в некоторых критичных функциях системы обработки требуется вычислить общую сумму значений атрибута, поместив сумму как избыточный столбец, мы увеличиваем производительность этих функций, но и … создаем дополнительную нагрузку при выполнении DML-операций для родительской таблицы.

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

4). «Разделяй и властвуй» – разбиение одной нормализованной таблицы на две и более таблиц и создание между ними отношений «один-к-одному». Это может быть вызвано ограничениями Oracle: допускается только один столбец типа Long; если требуется два столбца такого типа, то его выделяют в отдельную таблицу; иногда целесообразно выделить столбец такого типа в отдельную таблицу, даже если он один; это уменьшает время сканирования родительской таблицы. Oracle не позволяет создавать таблицы с количеством столбцов > 254. Если возникает такая необходимость, таблицу разбивают на две и более.

5). Слияние таблиц – примером применения обоснованного слияния может быть наличие повторяющейся группы с фиксированным числом элементов. Такие элементы целесообразно держать одной строкой: можно выполнить анализ столбцов, их группировку и суммирование, и для добавления группы, как одной строки нужен один оператор INSERT, а не количество операторов = числу элементов в группе.

 

 

Несмотря на то, что проектирование БД процесс творческий, определенные узловые моменты должны быть формализованы. Одним из таких требований формализации является процесс нормализации БД. Процесс нормализации был определен Е.Ф.Коддом при определении реляционной модели. Проводить нормализацию рекомендуется на ранней стадии проектирования БД: при разработке структур таблиц. Это может привести к появлению новых таблиц, но в последствии это окупится.

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

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

Теория нормализации основывается на наличии той или иной зависимости между полями таблицы. Нормализация является основой для удаления из сущностей нежелательных функциональных зависимостей. Функциональная зависимость подразумевается, если можно определить значение атрибута через значение другого (других) атрибутов. Атрибут, значение которого поддается определению, называют функционально зависимым от атрибута, который является определяющим. Тогда, по определению, все неключевые атрибуты будут функционально зависимы от первичного ключа в каждом отношении (поскольку первичный ключ однозначно определяет каждую строку). Существует вариант многозначной зависимости – это когда, зная значение одного атрибута, можно определить несколько значений другого атрибута. Например, зная страну, можно определить наименования ее аэропортов. Частичная зависимость существует, когда атрибут в отношении функционально зависим только от одного атрибута составного ключа. Транзитивные зависимости возникают, когда неключевой атрибут функционально зависим от одного или нескольких других неключевых атрибутов в отношении.

Определены два типа зависимостей:

- функциональная зависимость: поле «В» функционально зависит от поля «А» той же таблицы в том и только в том случае, когда в любой заданный момент времени для каждого из различных значений поля «А» обязательно существует только одно из различных значений поля «В». Полная функциональная зависимость – это когда поле «В» функционально зависит от поля «А», не зависит функционально от любого подмножества поля «А»;

- многозначная зависимость: поле «А» многозначно определяет поле «В» в той же таблице, если для каждого поля «А» существует хорошо определенное множество соответствующих значений поля «В». Например:

дисциплина преподавательучебник

Информатика Шипилов П.А. Форсайт, «Паскаль для всех»

Информатика Шипилов П.А. Уэйт, «Язык С»

Информатика Голованевский Форсайт, «Паскаль для всех»

Информатика Голованевский Уэйт, «Язык С»

Многозначная зависимость: «Дисциплина – Преподаватель» (дисциплина читается несколькими преподавателями). «Дисциплина – Учебник» (дисциплина читается по двум учебникам). Преподаватель и Учебники не связаны функционально. На лицо – избыточность информации, ее можно избежать, разделив таблицу на две.

Существует 5 этапов (форм) нормализации, каждый последующий этап включает предыдущий (на практике используются первые 3):

- 1 форма – каждое поле таблицы должно содержать неразделенную информацию и не должно содержать повторяющиеся группы; поле считается неделимым, если оно содержит только один элемент данных; повторяющаяся группа – это поля, которые совпадают по всем параметрам (кроме имени) и предназначены для хранения значений одного атрибута экземпляра объекта (например, один и тот же товар имеет разную отпускную цену и для этого созданы поля для хранения нескольких вариантов цен); повторяющиеся группы требуют дополнительного анализа данных внутри группы и нарушают принцип объектного подхода при формировании структуры данных;

Сущность находится в 1НФ, если значения всех ее атрибутов атомарные. Все повторяющиеся группы должны быть помещены в новую связанную сущность.

- 2 форма – 1-ая + все поля записи, не входящие в первичный ключ, должны быть связаны полной функциональной зависимостью с первичным ключом (должны зависеть от первичных ключей, т.е. между значениями поля первичного ключа и каждым полем должно существовать однозначное соответствие);

Сущность находится во 2НФ, если она находится в 1НФ и каждый ее неключевой реквизит функционально полно зависит от ключа (если ключ составной, то от каждого компонента составного ключа, другими словами, не должно быть частичной зависимости).

- 3 форма – 2-я + не одно из неключевых полей записи не должно функционально зависеть от любого другого неключевого поля (поле требует полной зависимости от первичных ключей и полной независимости неключевых полей друг от друга, т.е. не должно быть транзитивной зависимости).

Сущность находится в 3НФ, если она находится во 2НФ и не ключевые реквизиты зависят только от первичного ключа, т.е. они не должны зависеть от других не ключевых реквизитов.

К моменту этапа проектирования модель должна иметь третью нормальную форму (3НФ).

Нормализация имеет и недостатки:

1). При большом количестве таблиц и связей между ними затрудняется целостное восприятие БД;

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

Денормализация – это процесс достижения компромиссов в нормал-ых таблицах посредством намеренного введения избыт-ти в целях увеличения производительности. Необх-сть денормализации становится очевидной лишь на этапе проек-ия модуля. Рекомендуется принимать решение о денормализации в пользу критических процессов.

Нисходящая денормализация – предполагает перенос атрибута из родительской сущности в дочернюю; позволяет избежать соединения таблиц, но появляется проблема каскадного удаления; Восходящая денормализация – предполагает сохранение информации из дочерней сущности в родительской в форме итога; используется, если в некоторых критичных функциях системы обработки Внутритабличная денормализация – выполняется внутри одной таблицы, т.е. хранение значения, полученного из других данных этой же строки; веской причиной для ее использования - необходимость запроса по производному значению; «Разделяй и властвуй» – разбиение одной нормализованной таблицы на две и более таблиц и создание между ними отношений «один-к-одному»; Слияние таблиц – примером применения обоснованного слияния может быть наличие повторяющейся группы с фиксированным числом элементов; такие элементы целесообразно держать одной строкой.


Языки баз данных. Запрос по образцу QBE. Язык структурированных запросов SQL, общие характеристики. Основные версии и реализации языка SQL. Основы синтаксиса SQL; выражения и основные типы данных языка SQL.

Языки БД.

 

Языковые средства СУБД включают:

- язык описания данных (для описания логической структуры данных);

- язык манипулирования данными – обеспечивает основные операции над данными;

- структурированный язык запросов (SQL) – обеспечивает управление структурой БД, манипулирование данными и доступ к удаленным БД;

- язык запросов по образцу (QBE) – обеспечивает визуальное конструирование запросов к БД.

QBE - запрос по образцу – средство для отыскания необходимой информации в базе данных. Он формируется не на специальном языке, а путем заполнения бланка запроса в окне Конструктора запросов.

Конструктор запросов позволяет создавать новые и изменять существующие запросы, поэтому он является основным способом при создании запросов QBE.

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

Назначение строк в бланке Конструктора запросов:

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

SQL – язык, ориентированный специально на РБД (реляционная БД); язык структур-ных запросов. Команды SQL м/т выполняться над целой группой таблиц, как над единым объектом, а также могут оперировать любым количеством информации, которая извлекается из них как из единого целого (в отличие от традиционных языков).

SQL различают интерактивный и встроенный. Интерактивный: команда à результат. Команды встроенной версии включаются в программы, написанные на других языках. Выходные данные, полученные командами SQL «заносятся» в переменные или параметры, используемые программой. Программа SQL – это группа команд, объединенных функциональным назначением.

Таблицы: Создание таблиц CREATE TABLE – это команда создает пустую таблицу; определяет имя таблицы и множество поименованных столбцов в указанном порядке. Для каждого столбца устанавливается тип и размер.

CREATE TABLE <имя таблицы> (<имя столбца> <тип данных> [(<размер>)],…….<имя столбца> <тип данных> [(<размер>)]);

CREATE TABLE Salespeople (Snum INTEGER, Sname CHAR(10), City CHAR(10), Comm DECMAL);

Обновление структуры таблицы Иногда после создания таблицы необходимо добавить или удалить столбец, или изменить его размер: ALTER TABLE <имя таблицы> ADD <имя столбца> <тип данных> <размер>; - добавить столбец в таблицу.

Удаление таблицы. Команда DROP TABLE <имя таблицы>;

Индексы – это упорядоченный список содержимого столбца или группы столбцов таблицы.

CREATE INDEX <имя индекса> ON <имя таблицы> (<имя поля>); - создание индекса

Балансировку индексов выполняют послед-но выполненные операторы деактивации и активации индексов: ALTER INDEX <имя индекса> DEACTIVATE; ALTER INDEX <имя индекса> ACTIVATE;

Индекс удаляется по своему имени командой: DROP INDEX <имя индекса>;или DELETE INDEX <имя таблицы>.<имя индекса>;

Данные заносятся в поля и исключаются из них с помощью трех команд языка манипуляции данными (DML): INSERT, UPDATE, DELETE. Таблица должна быть описана до применения этих команд.

Добавление записей. INSERT INTO <имя таблицы> VALUES (<значю1>,<знач.2>,…,<знач.N>);

INSERT INTO Salespeople (1001,’pell’,’London’,.12);

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

Удаление строк таблицы. DELETE FROM <имя таблицы>; - удаляются все строки таблицы.

Если нужно удалить отдельные строки, то указывается условие: DELETE FROM <имя таблицы> WHERE <условие>;

Изменение значения поля.

UPDATE <имя таблицы> SET <имя столбца>=<новое значение столбца>;

UPDATE Customs SET rating=200;

PL/SQL (процедурный язык SQL) - это мощный язык программирования, используемый для обращения к базам данных. Язык SQL – язык 4-го поколения. Он достаточно прост, содержит небольшое число команд и изолирует пользователя от базовых структур и алгоритмов. PL/SQL объединяет мощь и гибкость SQL и процедурные конструкции.

К возможностям языка SQL добавляются конструкции процедурных языков, такие как:

- переменные и типы;

- управляющие структуры (IF-THEN-ELSE, циклы);

- процедуры и функции;

- объектные типы и методы.

В PL/SQL можно использовать только операторы раздела DML (SELECT, INSERT, UPDATE, DELETE, SET TRANSACTION, EXPLAIN PLAN) и операторы управления транзакциями (COMMIT, ROLLBACK, SAVEPOINT). SQL*Plus – это интерактивная, нерегламентированная среда для использования операторов SQL и блоков PL/SQL. SQL*Plus дает возможность пользователю вводить SQL-операторы и блоки PL/SQL в интерактивном (диалоговом) режиме после подсказки: SQL>. Эти операторы направляются непосредственно к БД, а результат выводится на экран. Для операторов INSERT, UPDATE, DELETE – возвращается число обработанных строк, а для оператора SELECT- строки, указанные в запросе.

 

 

Для работы с базами данных используются специальные языки, в целом называемые языками баз данных. В ранних СУБД поддерживалось несколько специализированных по своим функциям языков. Чаще всего выделялись два языка - язык определения схемы БД (SDL - Schema Definition Language) и язык манипулирования данными (DML - Data Manipulation Language). SDL служил главным образом для определения логической структуры БД, т.е. той структуры БД, какой она представляется пользователям. DML содержал набор операторов манипулирования данными, т.е. операторов, позволяющих заносить данные в БД, удалять, модифицировать или выбирать существующие данные.


Дата добавления: 2015-11-14; просмотров: 72 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Исследование предметной области| Типы данных SQL.

mybiblioteka.su - 2015-2024 год. (0.013 сек.)